{"version":3,"names":["window","require","registerSettings","svg_icons","theme_uploads","mermaid_js","theme_uploads_local","define","_exports","_loadScript","_api","_debounce","Object","defineProperty","value","default","settings","getObjectForTheme","async","applyMermaid","element","key","arguments","length","undefined","mermaids","querySelectorAll","mermaid","initialize","startOnLoad","theme","getComputedStyle","document","body","getPropertyValue","trim","forEach","dataset","processed","spinner","createElement","classList","add","codeHeight","style","height","append","index","code","querySelector","mermaidId","render","textContent","then","object","innerHTML","svg","catch","e","innerText","message","getElementById","remove","finally","updateMarkdownHeight","parseInt","getBoundingClientRect","calculatedHeight","composer","getElementsByClassName","split","n","i","match","joined","join","restorePosStart","selectionStart","restorePosEnd","selectionEnd","apiInitializer","api","I18n","translations","locale","js","mermaid_sample","addComposerToolbarPopupMenuOption","icon","label","action","toolbarEvent","applySurround","multiline","decorateChatMessage","id","decorateCookedElement","elem","helper","getModel"],"sourceRoot":"theme-19/","sources":["settings.js","discourse/api-initializers/discourse-mermaid-theme-component.js"],"sourcesContent":["(function() {\n  if ('require' in window) {\n    require(\"discourse/lib/theme-settings-store\").registerSettings(19, {\"svg_icons\":\"project-diagram\",\"theme_uploads\":{\"mermaid_js\":\"/uploads/default/original/1X/c995b782f86a40f0e32201a2d33930f345cd98f5.js\"},\"theme_uploads_local\":{\"mermaid_js\":\"/theme-javascripts/b95981e00d30a9f2eeacbdaf236e4ff57aa0fad0.js?__ws=forums.ijiaoxue.net\"}});\n  }\n})();\n","if ('define' in window) {\ndefine(\"discourse/theme-19/discourse/api-initializers/discourse-mermaid-theme-component\", [\"exports\", \"discourse/lib/load-script\", \"discourse/lib/api\", \"discourse-common/lib/debounce\"], function (_exports, _loadScript, _api, _debounce) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const settings = require(\"discourse/lib/theme-settings-store\").getObjectForTheme(19);\n  const themePrefix = key => `theme_translations.19.${key}`;\n  async function applyMermaid(element) {\n    let key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"composer\";\n    const mermaids = element.querySelectorAll(\"pre[data-code-wrap=mermaid]\");\n    if (!mermaids.length) {\n      return;\n    }\n    await (0, _loadScript.default)(settings.theme_uploads_local.mermaid_js);\n    window.mermaid.initialize({\n      startOnLoad: false,\n      theme: getComputedStyle(document.body).getPropertyValue(\"--scheme-type\").trim() === \"dark\" ? \"dark\" : \"default\"\n    });\n    mermaids.forEach(mermaid => {\n      if (mermaid.dataset.processed) {\n        return;\n      }\n      const spinner = document.createElement(\"div\");\n      spinner.classList.add(\"spinner\");\n      if (mermaid.dataset.codeHeight && key !== \"composer\") {\n        mermaid.style.height = `${mermaid.dataset.codeHeight}px`;\n      }\n      mermaid.append(spinner);\n    });\n    mermaids.forEach((mermaid, index) => {\n      const code = mermaid.querySelector(\"code\");\n      if (!code) {\n        return;\n      }\n      const mermaidId = `mermaid_${index}_${key}`;\n      const promise = window.mermaid.render(mermaidId, code.textContent || \"\");\n      promise.then(object => {\n        mermaid.innerHTML = object.svg;\n      }).catch(e => {\n        mermaid.innerText = e?.message || e;\n        // mermaid injects an error element, we need to remove it\n        document.getElementById(mermaidId)?.remove();\n      }).finally(() => {\n        mermaid.dataset.processed = true;\n        mermaid.querySelector(\".spinner\")?.remove();\n      });\n      if (key === \"composer\") {\n        (0, _debounce.default)(updateMarkdownHeight, mermaid, index, 500);\n      }\n    });\n  }\n  function updateMarkdownHeight(mermaid, index) {\n    let height = parseInt(mermaid.getBoundingClientRect().height);\n    let calculatedHeight = parseInt(mermaid.dataset.calculatedHeight);\n    if (height === 0) {\n      return;\n    }\n    if (height !== calculatedHeight) {\n      mermaid.dataset.calculatedHeight = height;\n      // TODO: an API to grab the composer vs leaning on hunting through HTML\n      // would be better\n      let composer = document.getElementsByClassName(\"d-editor-input\")[0];\n      let split = composer.value.split(\"\\n\");\n      let n = 0;\n      for (let i = 0; i < split.length; i++) {\n        if (split[i].match(/```mermaid((\\s*)|.*auto)$/)) {\n          if (n === index) {\n            split[i] = \"```mermaid height=\" + height + \",auto\";\n          }\n          n += 1;\n        }\n      }\n      let joined = split.join(\"\\n\");\n      if (joined !== composer.value) {\n        let restorePosStart = composer.selectionStart;\n        let restorePosEnd = composer.selectionEnd;\n        composer.value = joined;\n        if (restorePosStart) {\n          composer.selectionStart = restorePosStart;\n          composer.selectionEnd = restorePosEnd;\n        }\n      }\n    }\n  }\n  var _default = _exports.default = (0, _api.apiInitializer)(\"1.13.0\", api => {\n    // this is a hack as applySurround expects a top level\n    // composer key, not possible from a theme\n    window.I18n.translations[window.I18n.locale].js.composer.mermaid_sample = `    flowchart\n         A --> B`;\n    api.addComposerToolbarPopupMenuOption({\n      icon: \"project-diagram\",\n      label: themePrefix(\"insert_mermaid_sample\"),\n      action: toolbarEvent => {\n        toolbarEvent.applySurround(\"\\n```mermaid\\n\", \"\\n```\\n\", \"mermaid_sample\", {\n          multiline: false\n        });\n      }\n    });\n    if (api.decorateChatMessage) {\n      api.decorateChatMessage(element => {\n        applyMermaid(element, `chat_message_${element.id}`);\n      });\n    }\n    api.decorateCookedElement(async (elem, helper) => {\n      const id = helper ? `post_${helper.getModel().id}` : \"composer\";\n      applyMermaid(elem, id);\n    }, {\n      id: \"discourse-mermaid-theme-component\"\n    });\n  });\n});\n}\n"],"mappings":"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"}