{"version":3,"file":"discourse-rad-plugin.js","names":["define","_exports","_pluginApi","_composer","initializeTabs","api","decorateCooked","$elem","find","each","radTabsElement","$","this","tabs","header","dropdowns","addClass","dropdownSettings","attributesList","tab","attributes","data","dropdownsOrder","attributeName","attributeValue","push","splitValues","split","i","length","indexOf","unshift","name","options","getDropdownSettings","dropdownName","dropdown","dropdownOptions","optionValue","optionLabel","replace","option","append","prepend","id","addToolbarPopupMenuOptionsCallback","action","icon","label","default","reopen","actions","insertTabs","get","applySurround","Object","defineProperty","value","initialize","withPluginApi","setup","helper","markdownIt","allowList","registerPlugin","md","ruler","block","bbcode","tag","wrap","token","attrs","before","state","after","key"],"sources":["discourse/plugins/discourse-rad-plugin/discourse/initializers/apply-tabs.js","discourse/plugins/discourse-rad-plugin/lib/discourse-markdown/notifications.js"],"sourcesContent":["define(\"discourse/plugins/discourse-rad-plugin/discourse/initializers/apply-tabs\", [\"exports\", \"discourse/lib/plugin-api\", \"discourse/controllers/composer\"], function (_exports, _pluginApi, _composer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function initializeTabs(api) {\n    api.decorateCooked($elem => {\n      const radTabsElements = $elem.find(`.js-rad-tabs-element`);\n      radTabsElements.each(function () {\n        const radTabsElement = $(this);\n        const tabs = radTabsElement.find(`.js-rad-content-element`);\n        const header = $(`<div class='p-code-snippet__header'></div>`);\n        const dropdowns = $(`<div class='p-code-snippet__dropdowns'></div>`);\n        radTabsElement.addClass('p-code-snippet');\n        const dropdownSettings = getDropdownSettings(tabs);\n        for (let i = 0; i < dropdownSettings.length; i++) {\n          const dropdownName = dropdownSettings[i].name;\n          const dropdown = $(`<select name=\"${dropdownName}\"></select>`);\n          const dropdownOptions = dropdownSettings[i].options;\n          dropdown.addClass(`js-rad-dropdown-element`);\n          dropdown.addClass('p-code-snippet__dropdown');\n          if (dropdownOptions.length === 0) {\n            continue;\n          }\n          for (let i = 0; i < dropdownOptions.length; i++) {\n            const optionValue = dropdownOptions[i];\n            const optionLabel = optionValue.replace('-', ' ');\n            const option = `<option value=\"${optionValue}\">${optionLabel}</option>`;\n            dropdown.append(option);\n          }\n          dropdowns.append(dropdown);\n        }\n        header.append(dropdowns);\n        tabs.each(function () {\n          const option = $(this);\n          option.addClass('p-code-snippet__block');\n        });\n        radTabsElement.prepend(header);\n      });\n    }, {\n      id: 'discourse-rad-plugin-tabs'\n    });\n    api.addToolbarPopupMenuOptionsCallback(() => {\n      return {\n        action: 'insertTabs',\n        icon: 'caret-right',\n        label: 'tabs.title'\n      };\n    });\n    _composer.default.reopen({\n      actions: {\n        insertTabs() {\n          this.get('toolbarEvent').applySurround('[tabs]\\n[tab name=\"value\"]', '[/tab]\\n[/tabs]', 'insert_tabs');\n        }\n      }\n    });\n  }\n  function getDropdownSettings(tabs) {\n    let dropdownSettings = [];\n    let attributesList = [];\n    tabs.each(function () {\n      const tab = $(this);\n      const attributes = tab.data();\n      let dropdownsOrder = [];\n      for (const attributeName in attributes) {\n        let attributeValue = tab.data(attributeName);\n        if (!(attributeName in attributesList)) {\n          dropdownsOrder.push(attributeName);\n          attributesList[attributeName] = [];\n        }\n        const splitValues = attributeValue.split(',');\n        for (let i = 0; i < splitValues.length; i++) {\n          if (attributesList[attributeName].indexOf(splitValues[i]) === -1) {\n            attributesList[attributeName].push(splitValues[i]);\n          }\n        }\n      }\n      for (let i = 0; i < dropdownsOrder.length; i++) {\n        dropdownSettings.unshift({\n          name: dropdownsOrder[i],\n          options: attributesList[dropdownsOrder[i]]\n        });\n      }\n    });\n    return dropdownSettings;\n  }\n  var _default = _exports.default = {\n    name: 'discourse-rad-plugin-apply-tabs',\n    initialize() {\n      (0, _pluginApi.withPluginApi)('0.8.7', initializeTabs);\n    }\n  };\n});","define(\"discourse/plugins/discourse-rad-plugin/lib/discourse-markdown/notifications\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.setup = setup;\n  function setup(helper) {\n    if (!helper.markdownIt) {\n      return;\n    }\n    helper.allowList(['div.discourse-rad-element', 'div.js-rad-content-element', 'div.js-rad-tabs-element']);\n    function setupRad(md) {\n      const ruler = md.block.bbcode.ruler;\n      ruler.push('tabs', {\n        tag: 'tabs',\n        wrap: token => {\n          token.attrs = [['class', 'js-rad-tabs-element']];\n          return true;\n        },\n        before: state => {\n          state.push('div_open', 'div', 1).attrs = [['class', 'discourse-rad-element']];\n          return true;\n        },\n        after: state => {\n          state.push('div_close', 'div', -1);\n          return true;\n        }\n      });\n      ruler.push('tab', {\n        tag: 'tab',\n        wrap: (token, tag) => {\n          token.attrs = [['class', 'js-rad-content-element']];\n          for (let key in tag.attrs) {\n            token.attrs.push([`data-${key}`, tag.attrs[key]]);\n          }\n          return true;\n        }\n      });\n    }\n    helper.registerPlugin(setupRad);\n  }\n});"],"mappings":"AAAAA,OAAA,6JAAAC,EAAAC,EAAAC,GACA;AAMA,SAAAC,EAAAC,GACAA,EAAAC,gBAAAC,IACAA,EAAAC,KAAA,wBACAC,MAAA,WACA,MAAAC,EAAAC,EAAAC,MACAC,EAAAH,EAAAF,KAAA,2BACAM,EAAAH,EAAA,8CACAI,EAAAJ,EAAA;AACAD,EAAAM,SAAA;AACA,MAAAC,EA2CA,SAAAJ,GACA,IAAAI,EAAA,GACAC,EAAA;AAyBA,OAxBAL,EAAAJ,MAAA,WACA,MAAAU,EAAAR,EAAAC,MACAQ,EAAAD,EAAAE;AACA,IAAAC,EAAA;AACA,UAAAC,KAAAH,EAAA,CACA,IAAAI,EAAAL,EAAAE,KAAAE;AACAA,KAAAL,IACAI,EAAAG,KAAAF,GACAL,EAAAK,GAAA;AAEA,MAAAG,EAAAF,EAAAG,MAAA;AACA,QAAAC,EAAA,EAAAA,EAAAF,EAAAG,OAAAD,KACA,IAAAV,EAAAK,GAAAO,QAAAJ,EAAAE,KACAV,EAAAK,GAAAE,KAAAC,EAAAE,GAGA,CACA,QAAAA,EAAA,EAAAA,EAAAN,EAAAO,OAAAD,IACAX,EAAAc,QAAA,CACAC,KAAAV,EAAAM,GACAK,QAAAf,EAAAI,EAAAM,KAGA,IACAX,CACA,CAvEAiB,CAAArB;AACA,QAAAe,EAAA,EAAAA,EAAAX,EAAAY,OAAAD,IAAA,CACA,MAAAO,EAAAlB,EAAAW,GAAAI,KACAI,EAAAzB,EAAA,iBAAAwB,gBACAE,EAAApB,EAAAW,GAAAK;AAGA,GAFAG,EAAApB,SAAA,2BACAoB,EAAApB,SAAA,4BACA,IAAAqB,EAAAR,OAAA,CAGA,QAAAD,EAAA,EAAAA,EAAAS,EAAAR,OAAAD,IAAA,CACA,MAAAU,EAAAD,EAAAT,GACAW,EAAAD,EAAAE,QAAA,SACAC,EAAA,kBAAAH,MAAAC;AACAH,EAAAM,OAAAD,EACA,CACA1B,EAAA2B,OAAAN,EAPA,CAQA,CACAtB,EAAA4B,OAAA3B,GACAF,EAAAJ,MAAA,WACAE,EAAAC,MACAI,SAAA,wBACA,IACAN,EAAAiC,QAAA7B,EACA,MACA,CACA8B,GAAA,8BAEAvC,EAAAwC,oCAAA,KACA,CACAC,OAAA,aACAC,KAAA,cACAC,MAAA,iBAGA7C,EAAA8C,QAAAC,OAAA,CACAC,QAAA,CACA,UAAAC,GACAxC,KAAAyC,IAAA,gBAAAC,cAAA,6DACA,IAGA,CAvDAC,OAAAC,eAAAvD,EAAA,cACAwD,OAAA,IAEAxD,EAAAgD,aAAA;AAkFAhD,EAAAgD,QAAA,CACAjB,KAAA,kCACA,UAAA0B,IACA,EAAAxD,EAAAyD,eAAA,QAAAvD,EACA,E,IC5FAJ,OAAA,oGAAAC,GACA;AAEAsD,OAAAC,eAAAvD,EAAA,cACAwD,OAAA,IAEAxD,EAAA2D,MACA,SAAAC,GACA,IAAAA,EAAAC,WACA;AAEAD,EAAAE,UAAA,sFA6BAF,EAAAG,gBA5BA,SAAAC,GACA,MAAAC,EAAAD,EAAAE,MAAAC,OAAAF;AACAA,EAAAzC,KAAA,QACA4C,IAAA,OACAC,KAAAC,IACAA,EAAAC,MAAA,mCACA,GAEAC,OAAAC,IACAA,EAAAjD,KAAA,oBAAA+C,MAAA,qCACA,GAEAG,MAAAD,IACAA,EAAAjD,KAAA,uBACA,KAGAyC,EAAAzC,KAAA,OACA4C,IAAA,MACAC,KAAA,CAAAC,EAAAF,KACAE,EAAAC,MAAA;AACA,QAAAI,KAAAP,EAAAG,MACAD,EAAAC,MAAA/C,KAAA,SAAAmD,IAAAP,EAAAG,MAAAI;AAEA,WAGA,GAEA,C"}