{"version":3,"file":"discourse-details.js","names":["define","_exports","_jquery","_pluginApi","_discourseI18n","_richEditorExtension","initializeDetails","api","decorateCooked","$elem","default","id","addComposerToolbarPopupMenuOption","action","toolbarEvent","applySurround","i18n","multiline","icon","label","registerRichEditorExtension","Object","defineProperty","value","name","initialize","withPluginApi","setup","helper","allowList","registerPlugin","md","block","bbcode","ruler","push","rule","tag","before","state","tagInfo","attrs","details","open","content","after","extension","nodeSpec","allowGapCursor","group","draggable","selectable","defining","isolating","parseDOM","toDOM","node","undefined","summary","parse","bbcode_open","token","openNode","schema","nodes","attrGet","bbcode_close","closeNode","serializeNode","renderContent","write","parent","hasSummary","childCount","forEach","child","text","replace","inAutolink","finalState","plugins","props","handleClickOn","view","pos","nodePos","type","doc","nodeAt","dispatch","tr","setNodeMarkup"],"sources":["discourse/plugins/discourse-details/initializers/apply-details.js","discourse/plugins/discourse-details/lib/discourse-markdown/details.js","discourse/plugins/discourse-details/lib/rich-editor-extension.js"],"sourcesContent":["define(\"discourse/plugins/discourse-details/initializers/apply-details\", [\"exports\", \"jquery\", \"discourse/lib/plugin-api\", \"discourse-i18n\", \"discourse/plugins/discourse-details/lib/rich-editor-extension\"], function (_exports, _jquery, _pluginApi, _discourseI18n, _richEditorExtension) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function initializeDetails(api) {\n    api.decorateCooked($elem => (0, _jquery.default)(\"details\", $elem), {\n      id: \"discourse-details\"\n    });\n    api.addComposerToolbarPopupMenuOption({\n      action: function (toolbarEvent) {\n        toolbarEvent.applySurround(\"\\n\" + `[details=\"${(0, _discourseI18n.i18n)(\"composer.details_title\")}\"]` + \"\\n\", \"\\n[/details]\\n\", \"details_text\", {\n          multiline: false\n        });\n      },\n      icon: \"caret-right\",\n      label: \"details.title\"\n    });\n    api.registerRichEditorExtension(_richEditorExtension.default);\n  }\n  var _default = _exports.default = {\n    name: \"apply-details\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(\"1.14.0\", initializeDetails);\n    }\n  };\n});","define(\"discourse/plugins/discourse-details/lib/discourse-markdown/details\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.setup = setup;\n  const rule = {\n    tag: \"details\",\n    before(state, tagInfo) {\n      const attrs = tagInfo.attrs;\n      const details = state.push(\"bbcode_open\", \"details\", 1);\n      state.push(\"bbcode_open\", \"summary\", 1);\n      if (attrs.open === \"\") {\n        details.attrs = [[\"open\", \"\"]];\n      }\n      let token = state.push(\"text\", \"\", 0);\n      token.content = attrs[\"_default\"] || \"\";\n      state.push(\"bbcode_close\", \"summary\", -1);\n    },\n    after(state) {\n      state.push(\"bbcode_close\", \"details\", -1);\n    }\n  };\n  function setup(helper) {\n    helper.allowList([\"summary\", \"summary[title]\", \"details\", \"details[open]\", \"details.elided\"]);\n    helper.registerPlugin(md => {\n      md.block.bbcode.ruler.push(\"details\", rule);\n    });\n  }\n});","define(\"discourse/plugins/discourse-details/lib/rich-editor-extension\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /** @type {RichEditorExtension} */\n  const extension = {\n    nodeSpec: {\n      details: {\n        allowGapCursor: true,\n        attrs: {\n          open: {\n            default: true\n          }\n        },\n        content: \"summary block+\",\n        group: \"block\",\n        draggable: true,\n        selectable: true,\n        defining: true,\n        isolating: true,\n        parseDOM: [{\n          tag: \"details\"\n        }],\n        toDOM: node => [\"details\", {\n          open: node.attrs.open || undefined\n        }, 0]\n      },\n      summary: {\n        content: \"inline*\",\n        parseDOM: [{\n          tag: \"summary\"\n        }],\n        toDOM: () => [\"summary\", 0]\n      }\n    },\n    parse: {\n      bbcode_open(state, token) {\n        if (token.tag === \"details\") {\n          state.openNode(state.schema.nodes.details, {\n            open: token.attrGet(\"open\") !== null\n          });\n          return true;\n        }\n        if (token.tag === \"summary\") {\n          state.openNode(state.schema.nodes.summary);\n          return true;\n        }\n      },\n      bbcode_close(state, token) {\n        if (token.tag === \"details\" || token.tag === \"summary\") {\n          state.closeNode();\n          return true;\n        }\n      }\n    },\n    serializeNode: {\n      details(state, node) {\n        state.renderContent(node);\n        state.write(\"[/details]\\n\\n\");\n      },\n      summary(state, node, parent) {\n        let hasSummary = false;\n        // If the [details] tag has no summary.\n        if (node.content.childCount === 0) {\n          state.write(\"[details\");\n        } else {\n          hasSummary = true;\n          state.write('[details=\"');\n          node.content.forEach(child => child.text && state.text(child.text.replace(/\"/g, \"“\"), state.inAutolink));\n        }\n        let finalState = `${parent.attrs.open ? \" open\" : \"\"}]\\n`;\n        if (hasSummary) {\n          finalState = `\"${finalState}`;\n        }\n        state.write(finalState);\n      }\n    },\n    plugins: {\n      props: {\n        handleClickOn(view, pos, node, nodePos) {\n          if (node.type.name === \"summary\") {\n            const details = view.state.doc.nodeAt(nodePos - 1);\n            view.dispatch(view.state.tr.setNodeMarkup(nodePos - 1, null, {\n              open: !details.attrs.open\n            }));\n            return true;\n          }\n        }\n      }\n    }\n  };\n  var _default = _exports.default = extension;\n});"],"mappings":"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","ignoreList":[]}