{"version":3,"file":"itemsWithPreAndPostHtml.obs.js","sources":["../../../Framework/Controls/itemsWithPreAndPostHtml.obs"],"sourcesContent":["<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<script lang=\"ts\">\r\n import { defineComponent, h, PropType, Slots, VNode } from \"vue\";\r\n import { ItemWithPreAndPostHtml } from \"@Obsidian/Types/Controls/itemsWithPreAndPostHtml\"; \r\n\r\n export default defineComponent({\r\n props: {\r\n items: { type: Array as PropType<ItemWithPreAndPostHtml[]>, default: [] }\r\n },\r\n setup: (props, { slots }) => {\r\n let renderCt: HTMLDivElement;\r\n\r\n // Convert a Node's children into VNodes\r\n function childrenToVNodes(node: Node, slots: Slots): Array<ReturnType<typeof domToVNodes>> {\r\n return Array.from(node.childNodes).map(node => domToVNodes(node, slots));\r\n }\r\n\r\n // Convert a Node into VNode\r\n function domToVNodes(domNode: Node, slots: Slots): VNode | string | Array<VNode | string | VNode[]> {\r\n const attributes = {};\r\n let children: ReturnType<typeof childrenToVNodes>;\r\n let text: string;\r\n let el: Element;\r\n let textNode: Text;\r\n\r\n switch (domNode.nodeType) {\r\n case 1:\r\n // Element: convert to VNode\r\n el = domNode as Element;\r\n for (const { name, value } of el.attributes) {\r\n // Use ^ to force them to be used as attributes\r\n attributes[`^${name}`] = value;\r\n }\r\n\r\n children = childrenToVNodes(el, slots);\r\n\r\n return h(el.tagName.toLowerCase(), attributes, children);\r\n case 3:\r\n // Text: convert to string, and/or replace the placeholder text with slot content\r\n textNode = domNode as Text;\r\n text = textNode.data;\r\n\r\n // Find placeholders\r\n if (/%%%:::[a-zA-Z0-9-_]+:::%%%/.test(text)) {\r\n // Split other text out away from placeholders\r\n const parts = text.split(\"%%%\");\r\n\r\n // Find the pieces that are placeholders and convert them to slot content or return other text\r\n return parts.map(txt => {\r\n if (/:::[a-zA-Z0-9-_]+:::/.test(txt)) {\r\n const matches = txt.match(/[a-zA-Z0-9-_]+/);\r\n if (matches && matches.length > 0) {\r\n const [slotName] = matches;\r\n return slots[slotName]?.() ?? slotName;\r\n }\r\n return txt;\r\n }\r\n\r\n return txt;\r\n });\r\n }\r\n\r\n return textNode.data;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n // Render Function\r\n return () => {\r\n const html = props.items.map(({ slotName, preHtml, postHtml }) => {\r\n return `${preHtml}%%%:::${slotName}:::%%%${postHtml}`;\r\n }).join(\"\");\r\n\r\n if (!renderCt) {\r\n renderCt = document.createElement(\"div\");\r\n }\r\n\r\n renderCt.innerHTML = html;\r\n\r\n return childrenToVNodes(renderCt, slots);\r\n };\r\n }\r\n });\r\n</script>\r\n"],"names":["defineComponent","props","items","type","Array","default","setup","_ref","slots","renderCt","childrenToVNodes","node","from","childNodes","map","domToVNodes","domNode","attributes","children","text","el","textNode","nodeType","_iterator","_createForOfIteratorHelper","_step","s","n","done","_step$value","value","name","concat","err","e","f","h","tagName","toLowerCase","data","test","parts","split","txt","matches","match","length","_slots$slotName","_slots$slotName2","_matches","_slicedToArray","slotName","call","html","_ref2","preHtml","postHtml","join","document","createElement","innerHTML"],"mappings":"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"}