Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
HTML
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Release Notes</title>
</head>
<body style="margin:0; padding:0; font-family: Arial, Helvetica, sans-serif; background:#ffffff;">
  <div style="max-width:1200px; margin:0 auto; padding:16px;">
    <div style="border:1px solid #dfe1e6; border-radius:8px; overflow:hidden;">
      <div style="background:#0052CC; color:#fff; padding:14px 16px;">
        <div style="display:flex; align-items:center; gap:12px;">
          <!-- TOTVS logo (anexo do Confluence/TDN):
               - Nome do anexo: "totvs logo.jpg"
               - O JS abaixo tenta carregar primeiro do pageId atual, e cai em fallback se não achar -->
          <img
            id="totvs-logo"
            alt="TOTVS"
            style="display:none; height:28px; width:auto; background:#ffffff; border-radius:6px; padding:4px; border:1px solid rgba(255,255,255,0.35);"
          />
          <div id="page-title" style="font-size:18px; font-weight:700;">Dicionário de Dados</div>
        </div>
      </div>

      <div style="background:#f4f5f7; border-top:1px solid #dfe1e6; padding:12px 16px; display:flex; gap:12px; align-items:center; flex-wrap:wrap;">
        <div style="display:flex; gap:8px; align-items:center;">
          <div style="font-weight:700; color:#172b4d;">Versão:</div>
          <div id="version-display" style="background:#fff; border:1px solid #dfe1e6; border-radius:6px; padding:4px 10px; font-weight:700; color:#172b4d;">-</div>
        </div>

        <div style="display:flex; gap:8px; align-items:center;">
          <div style="font-weight:700; color:#172b4d;">Atualizado:</div>
          <div id="last-update" style="background:#fff; border:1px solid #dfe1e6; border-radius:6px; padding:4px 10px; color:#172b4d;">-</div>
        </div>

        <a id="doc-link" href="#" target="_blank" style="display:none; margin-left:auto; text-decoration:none; background:#ffffff; color:#0052CC; border:1px solid #0052CC; border-radius:6px; padding:6px 10px; font-weight:700;">
          Abrir no Drive
        </a>
      </div>

      <div id="widget-container" style="min-height:520px; background:#ffffff;">
        <div style="padding:18px; color:#6b778c;">Carregando documento...</div>
      </div>
    </div>
  </div>

  <script>
  (function() {
    // Mapeamento de versões para arquivos no Drive (Google Docs ou .txtFonte: GitHub (RAW)
    // PastaRepo: 141aJRhZeYZca4QCBnou6-00WzRLkBYbshttps://github.com/Juansimeoni/ReleaseDatasul
    // DataArquivo esperado: 2025-12-17 11:00:16{versao}.txt (ex: 12.1.2503.15.txt)
    // Total: 79 versões
    const versionToFile = {
    '12.1.2411': { id: '1Lv47Us2UXm2UP0JjtfGFiOcVXW9cwSjS', type: 'txt', bytes: 0 },
    '12.1.2411.1': { id: '12KVuystA1cYiy8KyStDkuRZ6Y_bnd7vp', type: 'txt', bytes: 0 },
    '12.1.2411.2': { id: '131kP3__usmuXsh-IWJX1pf2oQkHIVgd2', type: 'txt', bytes: 0 },
    '12.1.2411.3': { id: '1rEiaQCivt3ypEuSSJjhcJwLWb8hWzTYC', type: 'txt', bytes: 0 },
    '12.1.2411.4': { id: '16LxCYWkutU4Di6sYfjlLIPd7SBbWTJdA', type: 'txt', bytes: 0 },
    '12.1.2411.5': { id: '1ITodeqjUDPH-T6Ve5LbNRoTfPMHa9EU9', type: 'txt', bytes: 0 },
    '12.1.2411.6': { id: '1eoIz5qr6Yk_leeayK8kpAfGsZkZgm1_k', type: 'txt', bytes: 0 },
    '12.1.2411.7': { id: '1NTabmPduDgwOhs2yiXaUKdE5XgDgIDP5', type: 'txt', bytes: 0 },
    '12.1.2411.8': { id: '1BO4TvdfDZIziAHo_RVTRQ_Ylt4ESBp4u', type: 'txt', bytes: 0 },
    '12.1.2411.9': { id: '1LUxDVYRwO7DuFkPOWzBD6YCf58wJDNJl', type: 'txt', bytes: 0 },
    '12.1.2411.10': { id: '1HOmWcuLGW-iDEEeQmdSDCN8eRbYHzbdr', type: 'txt', bytes: 0 },
    '12.1.2411.11': { id: '1po-iUP-p9KNqQAufsuMra5So1vBqjzTo', type: 'txt', bytes: 0 },
    '12.1.2411.12': { id: '10Ef2MFpKsGIfpmhoswv5ys6D2A4bvzUM', type: 'txt', bytes: 0 },
    '12.1.2411.13': { id: '1lQpU7EYwf2kwpv3gZ-yUCnpQcCmXe4kd', type: 'txt', bytes: 0 },
    '12.1.2411.14': { id: '1OskDxjRPa6XFa-Bgue-Xk86kLEy_I0Yl', type: 'txt', bytes: 0 },
    '12.1.2411.15': { id: '1bNHh5VsjJNzaaeHcgpD7xrxn0NsXvP4T', type: 'txt', bytes: 0 },
    '12.1.2411.16': { id: '1jUAT3g_NLQeSMMOPAqyJTZf2sXv8x5ic', type: 'txt', bytes: 0 },
    '12.1.2411.17': { id: '1ogZ3JPrQ_J40345zZTQCL5Uv7TOt741y', type: 'txt', bytes: 0 },
    '12.1.2503': { id: '1AkBtHsIAFcGZ5OyBYNi5KXeAr5ssm_x6', type: 'txt', bytes: 0 },
    '12.1.2503.1': { id: '12Ke9OpqKA4R_UYWNr6XP9k9-ukjYm_KH', type: 'txt', bytes: 0 },
    '12.1.2503.2': { id: '1R8hPo8IEZlPxIqjyVqluyNN1JffkrNXZ', type: 'txt', bytes: 0 },
    '12.1.2503.3': { id: '1TL4ythCv_84avpzIeSHjB3Cgxf7_zcgA', type: 'txt', bytes: 0 },
    '12.1.2503.4': { id: '1NkcD1TAnRYxiKcJIVQ9jZ6Psq9SDmMx8', type: 'txt', bytes: 0 },
    '12.1.2503.5': { id: '1WH6uqDCBJ8zK8_gRf8DpSiFuivfbUED_', type: 'txt', bytes: 0 },
    '12.1.2503.6': { id: '1rksaNy4Kv-tq55VD7VS2ckoKoGZNNaXe', type: 'txt', bytes: 0 },
    '12.1.2503.7': { id: '1pUz-j2eWuQrbhJu62nHSiyIzWC-REX2r', type: 'txt', bytes: 0 },
    '12.1.2503.8': { id: '1yFXKrIkbEfwUwmYVDe07_QlXt9UVG62y', type: 'txt', bytes: 0 },
    '12.1.2503.9': { id: '1mO80nVEasIRDJ2i9mrRyPM8ObylNDw4T', type: 'txt', bytes: 0 },
    '12.1.2503.10': { id: '1VETVn5z5GzD03D1CQpvmmM4Dn0DCH3op', type: 'txt', bytes: 0 },
    '12.1.2503.11': { id: '1yTTeMu43Q3sBaimMM6cQTvNmD6EkG9VE', type: 'txt', bytes: 0 },
    '12.1.2503.12': { id: '10tvn9fo-QqXelPRSrb6inuulUQr7vf9g', type: 'txt', bytes: 0 },
    '12.1.2503.13': { id: '1Pq1LsXO6SbXr16an401_FKp3yKlfhKx_', type: 'txt', bytes: 0 },
    '12.1.2503.14': { id: '1pXbF0em-a6e0GYqOMNcbHPGpOOM09VX0', type: 'txt', bytes: 13680 },
    '12.1.2503.15': { id: '1wNBB4tvAaKOC2JLvkTzbxiIyTOgxpEjm', type: 'txt', bytes: 15312 },
    '12.1.2503.16': { id: '13mOmXGZ9HaZob2Df6t27osRxWfV138_v', type: 'txt', bytes: 0 },
    '12.1.2507': { id: '1WdEk0hszYS2UDuOM9vE1_KngjkH74oxR', type: 'txt', bytes: 0 },
    '12.1.2507.1': { id: '1AyMLAxejP2heuLdXWjHKXeWAkSPkVB0f', type: 'txt', bytes: 0 },
    '12.1.2507.2': { id: '1OA878i2Izd3BiwZ0m1UR_mEXgCoxZOyh', type: 'txt', bytes: 0 },
    '12.1.2507.3': { id: '133AZhy4WixraizeKsqSf6DvJLXyt3h2c', type: 'txt', bytes: 0 },
    '12.1.2507.4': { id: '1n7D6J02XoWPOQzIj9sPXKo9FTdiKgFcL', type: 'txt', bytes: 0 },
    '12.1.2507.5': { id: '1TjukYrLbIi1Uc6adUTLrIvwSP-7LLv7V', type: 'txt', bytes: 0 },
    '12.1.2507.6': { id: '16HpmgtvM0WhxN8sr-PiMwNzzKDLocaz1', type: 'txt', bytes: 0 },
    '12.1.2507.7': { id: '1iHJlFXGQMyS-qq6FMj-Ip4n2xLrMjtZA', type: 'txt', bytes: 0 },
    '12.1.2507.8': { id: '1EzYgb0Cvha1FB5iX5pZ8I5nh4M8gFnxM', type: 'txt', bytes: 0 },
    '12.1.2507.9': { id: '1rr_KlDuyyZpKlrOJeaXN-xy3AKlx-Cbu', type: 'txt', bytes: 0 },
    '12.1.2507.10': { id: '1pptApgNcLAhk5fNIgq8a-onq-vSNWs3n', type: 'txt', bytes: 0 },
    '12.1.2507.11': { id: '1STmDXQJDoOH5xMx3qzOd44c-t_k1y7jR', type: 'txt', bytes: 0 },
    '12.1.2507.12': { id: '1BRHWVWAIlhWbTqyIui7VXcqvvLm7l33D', type: 'txt', bytes: 0 },
    '12.1.2507.13': { id: '19aARCX-cSPA9QIeAxZIW5XxPNXZ3DrMr', type: 'txt', bytes: 0 },
    '12.1.2507.14': { id: '1Kb0f1ijpnPyFLdkHKzHadRvS3FenqIqL', type: 'txt', bytes: 0 },
    '12.1.2511': { id: '14k_1KZwT66qJGnV6mbnEw3bjV-YW7e24', type: 'txt', bytes: 0 },
    '12.1.2511.1': { id: '1OvmZgFOtOoWNVk2zyq1XhFNibCz6pJEc', type: 'txt', bytes: 0 },
    '12.1.2511.2': { id: '1rV53pygU6L6Ms6x3TU6-syUVsoF6bRs7', type: 'txt', bytes: 0 },
    '12.1.2511.3': { id: '1WxDLhvrFSwdV2Fj1IDs_VHB6n7KSog8O', type: 'txt', bytes: 0 },
    '12.1.2511.4': { id: '1lM65BjCZEzqWcTuP2E9aWaKvORK_nxL5', type: 'txt', bytes: 0 },
    '12.1.2511.5': { id: '1SiFQs7kQFV9lgodbrigees8erNiSg54P', type: 'txt', bytes: 0 },
    '12.1.2511.6': { id: '1mhhHU3KgpUKHVZ6JFFY2qdDkKYF1_uQ5', type: 'txt', bytes: 0 },
    '12.1.2511.7': { id: '1yHtTXT2B0ZiTRHnBdbkqQkyEm0epeKhT', type: 'txt', bytes: 0 },
    '12.1.2511.8': { id: '1gx-1Al9ZOW6jUTwxWrp9HciFn5jZi3d8', type: 'txt', bytes: 0 },
    '12.1.2603': { id: '1VavQf3Ydp_ig_LlgUU-qSgKchZNuMB6P', type: 'txt', bytes: 0 },
    '12.2.2411': { id: '1WyGG5rBNM2Uoy_j1W9DyrwFC3Oj63CJx', type: 'txt', bytes: 0 },
    '12.2.2411.16': { id: '121oW6Mq_ivk2lT9wfORwVhpmkTk84lWL', type: 'txt', bytes: 0 },
    '12.2.2411.17': { id: '1TImPbeVuRiv2fbPV9DpdIAIuJIN3jIM6', type: 'txt', bytes: 0 },
    '12.2.2503': { id: '1cIup3Z-F7J4NE9MMoFUj7CLcbpmLOQP6', type: 'txt', bytes: 0 },
    '12.2.2503.11': { id: '1mfmpLR7h0ruGo397tQCtHpYcSCwpqn4N', type: 'txt', bytes: 0 },
    '12.2.2503.12': { id: '1O_-1CnuKhm1XAtnVMmsb9ovSBVGWA-6G', type: 'txt', bytes: 0 },
    '12.2.2503.13': { id: '1bwgAgWYzWRFn2E8L_2Y_xokPepLEIF6_', type: 'txt', bytes: 0 },
    '12.2.2503.15': { id: '1vIy-eE4UtDvI0Vv7BXPZvyucO2su6KkL', type: 'txt', bytes: 0 },
    '12.2.2507': { id: '1OGqnrdwMc0j6zwaRhMPNGG8bkuO-kECb', type: 'txt', bytes: 0 },
    '12.2.2507.4': { id: '1I2PJINB0z4HWlcxDTiq-I9skmO0A9zc8', type: 'txt', bytes: 0 },
    '12.2.2507.5': { id: '19kiRv3tBFyUSHnGwyvjvGMBhC5EzToXx', type: 'txt', bytes: 0 },
    '12.2.2507.6': { id: '1L_Jw3GMjz7F_OaNZr_lzcJHRKGW76gbN', type: 'txt', bytes: 0 },
    '12.2.2507.7': { id: '1ZDyVikOavwwz5rCByx1_s9PyF2czY_BF', type: 'txt', bytes: 0 },
    '12.2.2507.8': { id: '1cLJ_BPltcqHslEP1Lim0iUMUBPBQrYPz', type: 'txt', bytes: 0 },
    '12.2.2507.9': { id: '13Er9lyxm4HmPPCd3JNymTvX_Dl4-mdlj', type: 'txt', bytes: 0 },
    '12.2.2511': { id: '1eGYnJ1I820VGvUwrpuMvWCWqlgiiWvkg', type: 'txt', bytes: 0 },
    '12.2.2511.1': { id: '1jIW7ElN9zpUw4B-9z98O1pkpyKWXS9vW', type: 'txt', bytes: 0 },
    '12.2.2511.2': { id: '1MCI-twulc3CVz8rfeoJNF-gXrx_B_QBy', type: 'txt', bytes: 0 },
    '12.2.2511.3': { id: '1u49828qMI0OtX129cMPD-zysUGof4msV', type: 'txt', bytes: 0 },
};

    function getPageVersion() {
      const versionPattern = /(\d+\.\d+\.\d+(?:\.\d+)?)/;

      const pageTitleElement = document.querySelector('h1#title-text, .page-title, h1, [data-page-title]');
      if (pageTitleElement) {
        const titleText = (pageTitleElement.textContent || '').trim();
        const match = titleText.match(versionPattern);
        if (match) return match[1];
      }

      const metaTitle = document.querySelector('meta[property="og:title"], meta[name="title"]');
      if (metaTitle) {
        const titleText = metaTitle.getAttribute('content') || '';
        const match = titleText.match(versionPattern);
        if (match) return match[1];
      }

const GITHUB_RAW_BASE = 'https://raw.githubusercontent.com/Juansimeoni/ReleaseDatasul/main/';

    function getPageVersion() {
      const titleMatchversionPattern = /(document.title || '').match(versionPattern);
      if (titleMatch) return titleMatch[1]\d+\.\d+\.\d+(?:\.\d+)?)/;

      returnconst null;
pageTitleElement = document.querySelector('h1#title-text,  }

    function getPageId() {
.page-title, h1, [data-page-title]');
      if try(pageTitleElement) {
        const qstitleText = new URLSearchParams(window.location.searchpageTitleElement.textContent || '').trim();
        const fromQuerymatch = qstitleText.getmatch('pageId'versionPattern);
        if (fromQuerymatch) return String(fromQuery)match[1];
      } catch (e) { /* ignore */ }

      //const ConfluencemetaTitle costuma expor isso quando AJS está disponível= document.querySelector('meta[property="og:title"], meta[name="title"]');
      tryif (metaTitle) {
        if (window.AJS && AJS.params && AJS.params.pageId) return String(AJS.params.pageId)const titleText = metaTitle.getAttribute('content') || '';
      } catch (e) { /* ignore */ }

  const match = titleText.match(versionPattern);
        if (match) return nullmatch[1];
      }

    function setTotvsLogo() {
      const logoEltitleMatch = (document.getElementById('totvs-logo')title || '').match(versionPattern);
      if (!logoEltitleMatch) return titleMatch[1];

      const pageId =return null;
    }

    function getPageId(); {
      try {
        const filenameqs = 'totvs logo.jpg';
new URLSearchParams(window.location.search);
        const encodedNamefromQuery = encodeURIComponent(filenameqs.get('pageId');

        constif candidates(fromQuery) = []return String(fromQuery);
      if} catch (pageIde) {
 /* ignore */ }

      // thumbnailsConfluence costuma funcionar melhor no Confluenceexpor isso quando AJS está disponível
      try  candidates.push('/download/thumbnails/' + pageId + '/' + encodedName + '?api=v2');
        candidates.push('/download/attachments/' + pageId + '/' + encodedName);
      }
{
        if (window.AJS && AJS.params && AJS.params.pageId) return String(AJS.params.pageId);
      } catch (e) { /* ignore */ }

      // fallback: página “principal” antiga (se existir o anexo lá também)return null;
    }

    function setTotvsLogo() {
      candidates.push('/download/attachments/649987902/' + encodedName)const logoEl = document.getElementById('totvs-logo');
      if (!logoEl) return;

      letconst idxpageId = 0getPageId();
      functionconst tryNext() {
  filename = 'totvs logo.jpg';
      ifconst (idxencodedName >= candidates.length) returnencodeURIComponent(filename);

        const urlcandidates = candidates[idx++];];
      if (pageId) {
        // thumbnails constcostuma probefuncionar =melhor new Image();no Confluence
        probe.onload = function() {
candidates.push('/download/thumbnails/' + pageId + '/' + encodedName + '?api=v2');
        candidates.push('/download/attachments/' + pageId  logoEl.src = url+ '/' + encodedName);
      }
    logoEl.style.display = 'inline-block';
        };
   // fallback: página “principal” antiga (se existir o anexo lá também)
      probe.onerror = function() {candidates.push('/download/attachments/649987902/' + encodedName);

      let idx =  tryNext()0;
      function tryNext() };{
        probe.src = urlif (idx >= candidates.length) return;
      }

  const url   tryNext()= candidates[idx++];
    }

    //const Tentaprobe resolver= o logo mesmo antes de identificar versão/documento
    setTotvsLogo();

    function renderNotAvailablenew Image();
        probe.onload = function() {
      // esconder link por padrãologoEl.src quando não tem conteúdo útil para abrir
= url;
         if (docLink) docLinklogoEl.style.display = 'noneinline-block';
      container.innerHTML =
   };
        probe.onerror = function() {
          tryNext();
       '<div style="padding:18px; border-left:4px solid #FFAB00; background:#FFFAE6; color:#172b4d;">' +
     };
        probe.src = url;
      '<div style="font-weight:700;">Esse documento ainda não está disponível no momento.</div>' +}

      tryNext();
    }

    // Tenta resolver o  '</div>';
    }

logo mesmo antes de identificar versão/documento
    const version = getPageVersionsetTotvsLogo();

    const container = document.getElementById('widget-container');function renderNotAvailable() {
    const docLink = document.getElementById('doc-link');

    if (!version) {  // Mantém o link (se existir) para permitir abrir manualmente no GitHub
      container.innerHTML =
        '<div style="padding:18px; border-left:4px solid #DE350B#FFAB00; background:#FFEBE6#FFFAE6; color:#172b4d;">' +
          '<div style="font-weight:700; margin-bottom:6px;">Versão>Esse não identificada</div>' +
          '<div>Coloque a versão no título da página, ex: <b>Dicionário de Dados 12.1.2503.14</b></documento ainda não está disponível no momento.</div>' +
        '</div>';
    }

   return;
 function getVersionOverrideFromQuery() {
      }
try {
        const qs = new URLSearchParams(window.location.search);
    document.getElementById    const v = qs.get('version-display').textContent = version;
    document.getElementById('page-title').textContent = 'Dicionário de Dados ' + version;
    document.getElementById('last-update').textContent = new Date().toLocaleString('pt-BR');

    const entry = versionToFile[version];
    if (!entry) {
      renderNotAvailable(); || qs.get('versao');
        if (v && /^\d+\.\d+\.\d+(?:\.\d+)?$/.test(v)) return v;
      } catch (e) { /* ignore */ }
      return null;
    }

    const fileIdversion = entry.idgetPageVersion();
    const fileTypecontainer = entry.typedocument.getElementById('widget-container');
    const fileBytes = (typeof entry.bytes === 'number') ? entry.bytes : null;

    // Se o arquivo existir mas estiver vazio (0 bytes), tratar como "ainda não disponível"
    if (fileType === 'txt' && fileBytes === 0) {
      renderNotAvailable();docLink = document.getElementById('doc-link');

    const versionResolved = getVersionOverrideFromQuery() || version;

    if (!versionResolved) {
      container.innerHTML =
        '<div style="padding:18px; border-left:4px solid #DE350B; background:#FFEBE6; color:#172b4d;">' +
      return;
    }

    // Link SEMPRE para o Drive (como solicitado)
    // (open?id=...) funciona para Google Docs e também para arquivos (.txt/.pdf/etc)'<div style="font-weight:700; margin-bottom:6px;">Versão não identificada</div>' +
          '<div>Coloque a versão no título da página, ex: <b>Dicionário de Dados 12.1.2503.14</b></div>' +
    const  driveOpenUrl = 'https://drive.google.com/open?id=' + fileId</div>';
    docLink.href = driveOpenUrlreturn;
    docLink.style.display = 'inline-block';}

    // Preview: Docs preview para Google Doc; Drive preview para txt
    const previewUrl = (fileType === 'doc')document.getElementById('version-display').textContent = versionResolved;
    document.getElementById('page-title').textContent = 'Dicionário de Dados ' + versionResolved;
    document.getElementById('last-update').textContent = new Date().toLocaleString('pt-BR');

    const rawUrl ? ('https://docs.google.com/document/d/'= GITHUB_RAW_BASE + fileIdversionResolved + '/preview.txt');
    const blobUrl := ('https://drivegithub.google.com/Juansimeoni/fileReleaseDatasul/blob/dmain/' + fileIdversionResolved + '/preview.txt');

    // Link Modopara deo edição: mostrar macro Widget Connector (URL do Drive)GitHub (visual)
    docLink.href = blobUrl;
    const isEditMode = window.location.pathname.includes('/pages/editpage.action');
    if (isEditMode) {docLink.textContent = 'Abrir no GitHub';
    docLink.style.display = 'inline-block';

    container.innerHTML =
      const'<div widgetCode =
    style="padding:18px; color:#6b778c;">Carregando conteúdo do GitHub...</div>';

    '<ac:structured-macro ac:name="widget" ac:schema-version="1">\n' +
        '  <ac:parameter ac:name="url">' + driveOpenUrl + '</ac:parameter>\n' +
        '  <ac:parameter ac:name="width">100%</ac:parameter>\n' +fetch(rawUrl, { cache: 'no-store' })
      .then(function(resp) {
        if (!resp.ok) return '';
        return resp.text();
      })
      .then(function(txt) {
 '  <ac:parameter ac:name="height">800</ac:parameter>\n' +
   txt = (txt ||  '</ac:structured-macro>';

'').trim();
      const escaped =if widgetCode.replace(/</g, '<').replace(/>/g, '>');
(!txt) {
        container.innerHTML =  renderNotAvailable();
        '<div style="padding:16px;">' +  return;
        }

  '<div style="font-weight:700; margin-bottom:8px; color:#172b4d;">Código do Widget Connector</div>' +// Renderiza texto em <pre> preservando formatação
        const pre '<pre style="white-space:pre-wrap; background:#f4f5f7; border:1px solid #dfe1e6; padding:12px; border-radius:6px;">' + escaped + '</pre>' += document.createElement('pre');
        pre.style.whiteSpace = 'pre-wrap';
        pre.style.margin = '<div style="color:#6b778c; margin-top:8px;">Copie o código acima e cole no macro <b>Widget Connector</b>.</div>' +
0';
        pre.style.padding = '16px';
        pre.style.borderTop = '</div>1px solid #dfe1e6';
      return;
  pre.style.fontFamily  }

    const iframe = document.createElement('iframe')= 'Consolas, Menlo, Monaco, \"Courier New\", monospace';
    iframe.src    pre.textContent = previewUrltxt;

    iframe.width = '100%';
    iframecontainer.heightinnerHTML = '800';
    iframe.style.border = '0';
    iframecontainer.setAttribute('allowfullscreen', 'true'appendChild(pre);
    iframe.title = 'Dicionário de Dados ' + version;

  })
      .catch(function() {
      container.innerHTML = ''renderNotAvailable();
    container.appendChild(iframe  });
  })(); 
  </script>
</body>
</html>

...