@templatical/editor 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/AiChatSidebar-XBj5Rw2l.js +214 -0
  2. package/dist/AiFeatureMenu-my1mZ9DL.js +63 -0
  3. package/dist/CloudEditor-BVjgKwq3.js +940 -0
  4. package/dist/CollaboratorBar-BZq_Gv38.js +91 -0
  5. package/dist/CommentsSidebar-D9oxqO6l.js +439 -0
  6. package/dist/DesignReferenceSidebar-CyHq4SWt.js +272 -0
  7. package/dist/LoadingTrack-vK8W2PJf.js +10 -0
  8. package/dist/ModuleBrowserModal-Cus2Hdwl.js +205 -0
  9. package/dist/ModulePreviewCanvas-DaByXKY_.js +106 -0
  10. package/dist/ParagraphEditor-BSyk5B6S.js +670 -0
  11. package/dist/RichTextEditorContent-BRpjJ6SV.js +133 -0
  12. package/dist/SaveModuleDialog-BIZBQrd8.js +122 -0
  13. package/dist/SnapshotHistory-Ds1-QNbx.js +126 -0
  14. package/dist/TemplateScoringPanel-C8XSk_Ys.js +249 -0
  15. package/dist/TestEmailModal-CCVfaFgV.js +94 -0
  16. package/dist/TitleEditor-V4qaEULF.js +167 -0
  17. package/dist/TplModal-LT3FXlgs.js +44 -0
  18. package/dist/_plugin-vue_export-helper-B1-bu7yR.js +47 -0
  19. package/dist/blockTypeIcons-BujoY5Dl.js +126 -0
  20. package/dist/cdn/chunks/ParagraphEditor-BkJQO-ZW.js +3 -0
  21. package/dist/cdn/chunks/ParagraphEditor-BkJQO-ZW.js.map +1 -0
  22. package/dist/cdn/chunks/RichTextEditorContent-UGQorJm_.js +2 -0
  23. package/dist/cdn/chunks/RichTextEditorContent-UGQorJm_.js.map +1 -0
  24. package/dist/cdn/chunks/TitleEditor-CC3Adjai.js +3 -0
  25. package/dist/cdn/chunks/TitleEditor-CC3Adjai.js.map +1 -0
  26. package/dist/cdn/chunks/dist-0UheN8rK.js +1 -0
  27. package/dist/cdn/chunks/dist-55mmbGQ9.js +1 -0
  28. package/dist/cdn/chunks/dist-B31mxKyP.js +1 -0
  29. package/dist/cdn/chunks/dist-B5JI9nIg.js +1 -0
  30. package/dist/cdn/chunks/dist-B93vLKhU.js +1 -0
  31. package/dist/cdn/chunks/dist-BDt3FJvj.js +1 -0
  32. package/dist/cdn/chunks/dist-BJRuFHmi.js +1 -0
  33. package/dist/cdn/chunks/dist-BKSzrf0L.js +1 -0
  34. package/dist/cdn/chunks/dist-BL8c5gYQ.js +1 -0
  35. package/dist/cdn/chunks/dist-CYThWMP5.js +1 -0
  36. package/dist/cdn/chunks/dist-DxZbPJYt.js +1 -0
  37. package/dist/cdn/chunks/draggable-ClUwYCFL.js +17 -0
  38. package/dist/cdn/chunks/draggable-ClUwYCFL.js.map +1 -0
  39. package/dist/cdn/chunks/emojiData-6fVLNqeH.js +2 -0
  40. package/dist/cdn/chunks/emojiData-6fVLNqeH.js.map +1 -0
  41. package/dist/cdn/chunks/extensions-BfjbWqOx.js +2 -0
  42. package/dist/cdn/chunks/extensions-BfjbWqOx.js.map +1 -0
  43. package/dist/cdn/chunks/icons-vmLJTaJk.js +2 -0
  44. package/dist/cdn/chunks/icons-vmLJTaJk.js.map +1 -0
  45. package/dist/cdn/chunks/rolldown-runtime-BakkzWXw.js +1 -0
  46. package/dist/cdn/chunks/styleConstants-UTJ94gco.js +2 -0
  47. package/dist/cdn/chunks/styleConstants-UTJ94gco.js.map +1 -0
  48. package/dist/cdn/chunks/tiptap-Cya4P9CN.js +145 -0
  49. package/dist/cdn/chunks/tiptap-Cya4P9CN.js.map +1 -0
  50. package/dist/cdn/chunks/useEditorCore-DRhPKq_z.js +2 -0
  51. package/dist/cdn/chunks/useEditorCore-DRhPKq_z.js.map +1 -0
  52. package/dist/cdn/chunks/useMergeTag-CBSlcqnk.js +2 -0
  53. package/dist/cdn/chunks/useMergeTag-CBSlcqnk.js.map +1 -0
  54. package/dist/cdn/editor.css +1 -0
  55. package/dist/cdn/editor.js +2 -0
  56. package/dist/cdn/editor.js.map +1 -0
  57. package/dist/check-B7kDuZmP.js +7 -0
  58. package/dist/chevron-down-DJLW2Q9Z.js +7 -0
  59. package/dist/circle-alert-E2vYPs5r.js +25 -0
  60. package/dist/clock-lWIIQA3C.js +12 -0
  61. package/dist/de-B4Ob4vCo.js +682 -0
  62. package/dist/dist-4LiM9FDd.js +35 -0
  63. package/dist/dist-Bu7veieH.js +776 -0
  64. package/dist/dist-C1BIRHCQ.js +61 -0
  65. package/dist/dist-CG-vEqSU.js +314 -0
  66. package/dist/dist-C_ymrGFi.js +10625 -0
  67. package/dist/dist-ChAGLpWo.js +35 -0
  68. package/dist/dist-DNjZKe2Z.js +513 -0
  69. package/dist/dist-D_HQYSY-.js +189 -0
  70. package/dist/dist-DkypH7qG.js +5 -0
  71. package/dist/dist-DmOE-Ubp.js +74 -0
  72. package/dist/dist-DrvKRSU6.js +47 -0
  73. package/dist/dist-Dxnd0GRf.js +5 -0
  74. package/dist/dist-DysAFIPy.js +2054 -0
  75. package/dist/emojiData-BfWQS72m.js +17 -0
  76. package/dist/en-YXsspZJG.js +682 -0
  77. package/dist/extensions-BA4NshZQ.js +420 -0
  78. package/dist/formatRelativeTime-DX3FgqN9.js +8 -0
  79. package/dist/i18n-ikyi28RU.js +23 -0
  80. package/dist/image-up-X4xIq4ea.js +23 -0
  81. package/dist/keys-8B5MFafK.js +4 -0
  82. package/dist/liquid.browser-BemTg3sZ.js +3272 -0
  83. package/dist/loader-circle-BTQQxC3l.js +7 -0
  84. package/dist/message-circle-Blgm6V_h.js +7 -0
  85. package/dist/refresh-cw-Bb4PEeW1.js +44 -0
  86. package/dist/scan-line-7lZPfOdm.js +25 -0
  87. package/dist/send-C0ltAQrv.js +10 -0
  88. package/dist/shield-check-f-qv4RKs.js +10 -0
  89. package/dist/sparkles-KhBCGlqB.js +23 -0
  90. package/dist/styleConstants-CgtFM9hQ.js +43 -0
  91. package/dist/styles-hQgJKM4i.js +3406 -0
  92. package/dist/templatical-editor.css +2 -1
  93. package/dist/templatical-editor.js +242 -9
  94. package/dist/templatical-editor.umd.cjs +112 -524
  95. package/dist/timeouts-CmBrLeZA.js +4 -0
  96. package/dist/trash-2-OwjZ-guZ.js +25 -0
  97. package/dist/triangle-alert-DOSRIUYZ.js +17 -0
  98. package/dist/useEditorCore-DVp5qmtC.js +5552 -0
  99. package/dist/useI18n-DzH4KXDk.js +17 -0
  100. package/dist/useMergeTag-D9zQVE-e.js +33 -0
  101. package/dist/x-CGlq2XQe.js +10 -0
  102. package/package.json +30 -20
  103. package/dist/AiChatSidebar-0vx9TP5B.js +0 -305
  104. package/dist/AiFeatureMenu-CI-v74ND.js +0 -69
  105. package/dist/CloudEditor-Wdfv_9xn.js +0 -1132
  106. package/dist/CollaboratorBar-B3uV4Wtw.js +0 -89
  107. package/dist/CommentsSidebar-PVUlloyB.js +0 -655
  108. package/dist/DesignReferenceSidebar-DAlAWrxU.js +0 -351
  109. package/dist/ModuleBrowserModal-1JEcChd8.js +0 -323
  110. package/dist/ModulePreviewCanvas-Cdp484Ae.js +0 -169
  111. package/dist/SaveModuleDialog-eNyr3XKn.js +0 -168
  112. package/dist/SnapshotHistory-D-ZiIj1v.js +0 -169
  113. package/dist/TemplateScoringPanel-DSZPo15C.js +0 -385
  114. package/dist/TestEmailModal-Cwre5elw.js +0 -128
  115. package/dist/TextEditor-BuUOIByX.js +0 -780
  116. package/dist/de-BWIAblxs.js +0 -685
  117. package/dist/en-cYyUzNV1.js +0 -685
  118. package/dist/index-0tWUczNu.js +0 -47
  119. package/dist/index-4okvXjqk.js +0 -41
  120. package/dist/index-BSc6h5zo.js +0 -967
  121. package/dist/index-CrvwWlhN.js +0 -41
  122. package/dist/index-D-iD-7lO.js +0 -10961
  123. package/dist/index-D-ygXbc8.js +0 -2452
  124. package/dist/index-DbrWKz-e.js +0 -1415
  125. package/dist/index-DeUeHy6g.js +0 -422
  126. package/dist/index-Ude6e9RU.js +0 -41
  127. package/dist/index-ZQzHBwkr.js +0 -12767
  128. package/dist/liquid.browser-CeNxS2GL.js +0 -3493
  129. package/dist/loader-circle-tM9j2mRh.js +0 -13
  130. package/dist/shield-check-Ngi9jAQc.js +0 -20
@@ -0,0 +1,2 @@
1
+ var e=[{key:`smileys`,emojis:`😀.😃.😄.😁.😅.😂.🤣.😊.😇.🙂.😉.😍.🥰.😘.😋.😎.🤩.🥳.😏.😢.😭.😤.😡.🤯.😱.🤔.🤫.🤗.🫡.👋`.split(`.`)},{key:`gestures`,emojis:`👍.👎.👏.🙌.🤝.✌️.🤞.🫶.❤️.🧡.💛.💚.💙.💜.🖤.💯.✨.⭐.🌟.💫.🔥.💥.💪.👀.👁️.🎉.🎊.🎁.🏆.🥇`.split(`.`)},{key:`objects`,emojis:`📧.✉️.📨.📩.📬.📱.💻.🖥️.📊.📈.📉.📅.🗓️.⏰.⏳.💡.🔔.📢.🎯.✅.❌.⚠️.💲.💵.💰.🛒.🛍️.📦.🚀.✈️`.split(`.`)}];export{e as emojiCategories};
2
+ //# sourceMappingURL=emojiData-6fVLNqeH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emojiData-6fVLNqeH.js","names":[],"sources":["../../../src/composables/emojiData.ts"],"sourcesContent":["export type EmojiCategoryKey = \"smileys\" | \"gestures\" | \"objects\";\n\nexport interface EmojiCategory {\n key: EmojiCategoryKey;\n emojis: string[];\n}\n\nexport const emojiCategories: EmojiCategory[] = [\n {\n key: \"smileys\",\n emojis: [\n \"\\u{1F600}\",\n \"\\u{1F603}\",\n \"\\u{1F604}\",\n \"\\u{1F601}\",\n \"\\u{1F605}\",\n \"\\u{1F602}\",\n \"\\u{1F923}\",\n \"\\u{1F60A}\",\n \"\\u{1F607}\",\n \"\\u{1F642}\",\n \"\\u{1F609}\",\n \"\\u{1F60D}\",\n \"\\u{1F970}\",\n \"\\u{1F618}\",\n \"\\u{1F60B}\",\n \"\\u{1F60E}\",\n \"\\u{1F929}\",\n \"\\u{1F973}\",\n \"\\u{1F60F}\",\n \"\\u{1F622}\",\n \"\\u{1F62D}\",\n \"\\u{1F624}\",\n \"\\u{1F621}\",\n \"\\u{1F92F}\",\n \"\\u{1F631}\",\n \"\\u{1F914}\",\n \"\\u{1F92B}\",\n \"\\u{1F917}\",\n \"\\u{1FAE1}\",\n \"\\u{1F44B}\",\n ],\n },\n {\n key: \"gestures\",\n emojis: [\n \"\\u{1F44D}\",\n \"\\u{1F44E}\",\n \"\\u{1F44F}\",\n \"\\u{1F64C}\",\n \"\\u{1F91D}\",\n \"\\u270C\\uFE0F\",\n \"\\u{1F91E}\",\n \"\\u{1FAF6}\",\n \"\\u2764\\uFE0F\",\n \"\\u{1F9E1}\",\n \"\\u{1F49B}\",\n \"\\u{1F49A}\",\n \"\\u{1F499}\",\n \"\\u{1F49C}\",\n \"\\u{1F5A4}\",\n \"\\u{1F4AF}\",\n \"\\u2728\",\n \"\\u2B50\",\n \"\\u{1F31F}\",\n \"\\u{1F4AB}\",\n \"\\u{1F525}\",\n \"\\u{1F4A5}\",\n \"\\u{1F4AA}\",\n \"\\u{1F440}\",\n \"\\u{1F441}\\uFE0F\",\n \"\\u{1F389}\",\n \"\\u{1F38A}\",\n \"\\u{1F381}\",\n \"\\u{1F3C6}\",\n \"\\u{1F947}\",\n ],\n },\n {\n key: \"objects\",\n emojis: [\n \"\\u{1F4E7}\",\n \"\\u2709\\uFE0F\",\n \"\\u{1F4E8}\",\n \"\\u{1F4E9}\",\n \"\\u{1F4EC}\",\n \"\\u{1F4F1}\",\n \"\\u{1F4BB}\",\n \"\\u{1F5A5}\\uFE0F\",\n \"\\u{1F4CA}\",\n \"\\u{1F4C8}\",\n \"\\u{1F4C9}\",\n \"\\u{1F4C5}\",\n \"\\u{1F5D3}\\uFE0F\",\n \"\\u23F0\",\n \"\\u23F3\",\n \"\\u{1F4A1}\",\n \"\\u{1F514}\",\n \"\\u{1F4E2}\",\n \"\\u{1F3AF}\",\n \"\\u2705\",\n \"\\u274C\",\n \"\\u26A0\\uFE0F\",\n \"\\u{1F4B2}\",\n \"\\u{1F4B5}\",\n \"\\u{1F4B0}\",\n \"\\u{1F6D2}\",\n \"\\u{1F6CD}\\uFE0F\",\n \"\\u{1F4E6}\",\n \"\\u{1F680}\",\n \"\\u2708\\uFE0F\",\n ],\n },\n];\n"],"mappings":"AAOA,IAAa,EAAmC,CAC9C,CACE,IAAK,UACL,OAAQ,sGA+BP,CACF,CACD,CACE,IAAK,WACL,OAAQ,qGA+BP,CACF,CACD,CACE,IAAK,UACL,OAAQ,qGA+BP,CACF,CACF"}
@@ -0,0 +1,2 @@
1
+ import{G as e,K as t,M as n,W as r,a as i,d as a,f as o,g as s,i as c,j as l,l as u,o as d,p as f,q as p,u as m,w as h,x as g,z as _}from"./draggable-ClUwYCFL.js";import"./icons-vmLJTaJk.js";import{d as v,f as y,m as b,n as x,p as S,t as C}from"./useMergeTag-CBSlcqnk.js";import{H as w,J as T,On as E,W as D,Z as O,a as k,c as A}from"./tiptap-Cya4P9CN.js";var j=w.create({name:`fontSize`,addOptions(){return{types:[`textStyle`]}},addGlobalAttributes(){return[{types:this.options.types,attributes:{fontSize:{default:null,parseHTML:e=>e.style.fontSize?.replace(/['"]+/g,``)||null,renderHTML:e=>e.fontSize?{style:`font-size: ${e.fontSize}`}:{}}}}]},addCommands(){return{setFontSize:e=>({chain:t})=>t().setMark(`textStyle`,{fontSize:e}).run(),unsetFontSize:()=>({chain:e})=>e().setMark(`textStyle`,{fontSize:null}).removeEmptyTextStyle().run()}}}),M=w.create({name:`letterSpacing`,addOptions(){return{types:[`textStyle`]}},addGlobalAttributes(){return[{types:this.options.types,attributes:{letterSpacing:{default:null,parseHTML:e=>e.style.letterSpacing?.replace(/['"]+/g,``)||null,renderHTML:e=>e.letterSpacing?{style:`letter-spacing: ${e.letterSpacing}`}:{}}}}]},addCommands(){return{setLetterSpacing:e=>({chain:t})=>t().setMark(`textStyle`,{letterSpacing:e}).run(),unsetLetterSpacing:()=>({chain:e})=>e().setMark(`textStyle`,{letterSpacing:null}).removeEmptyTextStyle().run()}}}),N=w.create({name:`lineHeight`,addOptions(){return{types:[`paragraph`],defaultLineHeight:`1.5`}},addGlobalAttributes(){return[{types:this.options.types,attributes:{lineHeight:{default:null,parseHTML:e=>e.style.lineHeight||null,renderHTML:e=>e.lineHeight?{style:`line-height: ${e.lineHeight}`}:{}}}}]},addCommands(){return{setLineHeight:e=>({commands:t})=>this.options.types.every(n=>t.updateAttributes(n,{lineHeight:e})),unsetLineHeight:()=>({commands:e})=>this.options.types.every(t=>e.resetAttributes(t,`lineHeight`))}}}),P=[`aria-label`,`data-tooltip`,`onKeydown`],F=[`aria-label`,`onKeydown`],I=[`aria-label`],L=s({__name:`LogicMergeTagNodeView`,props:{node:{},editor:{},getPos:{type:Function},deleteNode:{type:Function},updateAttributes:{type:Function}},setup(s){let v=s,{syntax:S}=C(),{t:w}=x(),T=u(()=>b(v.node.attrs.value,S)),E=u(()=>y(v.node.attrs.value,S)),D=_(!1),O=_(``),A=_(null),j=!1;function M(){O.value=v.node.attrs.value,j=!1,D.value=!0,g(()=>{A.value?.focus(),A.value?.select()})}function N(){if(j)return;j=!0;let e=O.value.trim();if(!e){D.value=!1;return}e!==v.node.attrs.value&&v.updateAttributes({value:e,keyword:b(e,S)?y(e,S):``}),D.value=!1}function L(e){e.key===`Enter`?(e.preventDefault(),N()):e.key===`Escape`&&(D.value=!1)}return(u,g)=>(h(),a(r(k),{as:`span`,class:e(T.value?`tpl-logic-merge-tag-node tpl:group tpl:mx-0.5 tpl:inline-flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-1.5 tpl:py-0.5 tpl:text-[0.8em] tpl:font-bold tpl:tracking-wide tpl:uppercase tpl:select-none`:``),style:t(T.value?`background-color: transparent; border: 1.5px solid color-mix(in srgb, var(--tpl-primary) 50%, transparent); color: var(--tpl-primary);`:``),contenteditable:`false`},{default:l(()=>[D.value?n((h(),f(`input`,{key:0,ref_key:`inputRef`,ref:A,"onUpdate:modelValue":g[0]||=e=>O.value=e,type:`text`,class:`tpl:w-40 tpl:rounded tpl:border-none tpl:bg-transparent tpl:px-0.5 tpl:py-0 tpl:text-[1em] tpl:font-medium tpl:normal-case tpl:outline-none tpl:text-[var(--tpl-primary)]`,onBlur:N,onKeydown:L},null,544)),[[c,O.value]]):T.value?(h(),f(`span`,{key:1,role:`button`,tabindex:`0`,"aria-label":r(w).mergeTag.editValue,class:`tpl-tooltip tpl:cursor-pointer`,"data-tooltip":s.node.attrs.value,onClick:d(M,[`stop`]),onKeydown:[i(d(M,[`stop`]),[`enter`]),i(d(M,[`prevent`,`stop`]),[`space`])]},p(E.value),41,P)):(h(),f(`span`,{key:2,role:`button`,tabindex:`0`,"aria-label":r(w).mergeTag.editValue,onClick:d(M,[`stop`]),onKeydown:[i(d(M,[`stop`]),[`enter`]),i(d(M,[`prevent`,`stop`]),[`space`])]},p(s.node.attrs.value),41,F)),T.value?(h(),f(`button`,{key:3,type:`button`,"aria-label":r(w).mergeTag.deleteMergeTag,class:`tpl-merge-tag-delete tpl:flex tpl:size-5 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-full tpl:border-none tpl:bg-transparent tpl:p-0 tpl:opacity-60 tpl:transition-all hover:tpl:opacity-100 tpl:text-[var(--tpl-primary)]`,contenteditable:`false`,onClick:g[1]||=d((...e)=>s.deleteNode&&s.deleteNode(...e),[`stop`,`prevent`])},[...g[2]||=[m(`svg`,{width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`3`,"aria-hidden":`true`},[m(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),m(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,I)):o(``,!0)]),_:1},8,[`class`,`style`]))}});function R(e,t){let{selection:n}=e.state,{$from:r,$to:i}=n,a=!1;return e.state.doc.nodesBetween(r.pos,i.pos,e=>{if(e.type.name===t)return a=!0,!1}),!!(a||r.pos>0&&r.nodeBefore?.type.name===t||r.nodeAfter?.type.name===t)}function z(e){return A(e)}var B=T.create({name:`logicMergeTagNode`,group:`inline`,inline:!0,atom:!0,addOptions(){return{syntax:v.liquid}},addAttributes(){return{value:{default:``,parseHTML:e=>e.getAttribute(`data-logic-merge-tag`)||``},keyword:{default:``,parseHTML:e=>e.getAttribute(`data-keyword`)||e.textContent||``}}},parseHTML(){return[{tag:`span[data-logic-merge-tag]`}]},renderHTML({node:e,HTMLAttributes:t}){if(!b(e.attrs.value,this.options.syntax))return[`span`,{},e.attrs.value];let n=y(e.attrs.value,this.options.syntax);return[`span`,E(t,{"data-logic-merge-tag":e.attrs.value,"data-keyword":n}),n]},addNodeView(){return z(L)},addKeyboardShortcuts(){return{Backspace:()=>R(this.editor,this.name),Delete:()=>R(this.editor,this.name)}},addInputRules(){return[new D({find:RegExp(this.options.syntax.logic.source+`$`,``),handler:({state:e,range:t,match:n})=>{let r=n[0];if(!b(r,this.options.syntax))return;let i=y(r,this.options.syntax),a=this.type.create({value:r,keyword:i});e.tr.replaceWith(t.from,t.to,a)}})]},addPasteRules(){return[new O({find:new RegExp(this.options.syntax.logic.source,`g`),handler:({state:e,range:t,match:n})=>{let r=n[0];if(!b(r,this.options.syntax))return;let i=y(r,this.options.syntax),a=this.type.create({value:r,keyword:i});e.tr.replaceWith(t.from,t.to,a)}})]}}),V=[`aria-label`,`data-tooltip`,`onKeydown`],H=[`aria-label`],U=s({__name:`MergeTagNodeView`,props:{node:{},deleteNode:{type:Function},updateAttributes:{type:Function}},setup(e){let t=e,{getMergeTagLabel:o}=C(),{t:s}=x(),v=u(()=>o(t.node.attrs.value)),y=_(!1),b=_(``),S=_(null);function w(){b.value=t.node.attrs.value,y.value=!0,g(()=>{S.value?.focus(),S.value?.select()})}function T(){let e=b.value.trim();e&&e!==t.node.attrs.value&&t.updateAttributes({value:e,label:o(e)}),y.value=!1}function E(e){e.key===`Enter`?(e.preventDefault(),T()):e.key===`Escape`&&(y.value=!1)}return(t,o)=>(h(),a(r(k),{as:`span`,class:`tpl-merge-tag-node tpl:group tpl:mx-0.5 tpl:inline-flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-1.5 tpl:py-0.5 tpl:text-[0.9em] tpl:font-medium tpl:select-none tpl:text-[var(--tpl-primary)]`,style:{"background-color":`color-mix(in srgb, var(--tpl-primary) 20%, transparent)`},contenteditable:`false`},{default:l(()=>[y.value?n((h(),f(`input`,{key:0,ref_key:`inputRef`,ref:S,"onUpdate:modelValue":o[0]||=e=>b.value=e,type:`text`,class:`tpl:w-32 tpl:rounded tpl:border-none tpl:bg-transparent tpl:px-0.5 tpl:py-0 tpl:text-[1em] tpl:font-medium tpl:outline-none tpl:text-[var(--tpl-primary)]`,onBlur:T,onKeydown:E},null,544)),[[c,b.value]]):(h(),f(`span`,{key:1,role:`button`,tabindex:`0`,"aria-label":r(s).mergeTag.editValue,class:`tpl-tooltip tpl:cursor-pointer`,"data-tooltip":e.node.attrs.value,onClick:d(w,[`stop`]),onKeydown:[i(d(w,[`stop`]),[`enter`]),i(d(w,[`prevent`,`stop`]),[`space`])]},p(v.value),41,V)),m(`button`,{type:`button`,"aria-label":r(s).mergeTag.deleteMergeTag,class:`tpl-merge-tag-delete tpl:flex tpl:size-5 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-full tpl:border-none tpl:bg-transparent tpl:p-0 tpl:opacity-60 tpl:transition-all hover:tpl:opacity-100 tpl:text-[var(--tpl-primary)]`,contenteditable:`false`,onClick:o[1]||=d((...t)=>e.deleteNode&&e.deleteNode(...t),[`stop`,`prevent`])},[...o[2]||=[m(`svg`,{width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`3`,"aria-hidden":`true`},[m(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),m(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,H)]),_:1}))}}),W=T.create({name:`mergeTagNode`,group:`inline`,inline:!0,atom:!0,addOptions(){return{mergeTags:[],syntax:v.liquid}},addAttributes(){return{label:{default:``,parseHTML:e=>e.getAttribute(`data-label`)||e.textContent||``},value:{default:``,parseHTML:e=>e.getAttribute(`data-merge-tag`)||``}}},parseHTML(){return[{tag:`span[data-merge-tag]`}]},renderHTML({node:e,HTMLAttributes:t}){let n=S(e.attrs.value,this.options.mergeTags);return[`span`,E(t,{"data-merge-tag":e.attrs.value,"data-label":n}),n]},addNodeView(){return z(U)},addCommands(){return{insertMergeTag:e=>({commands:t})=>t.insertContent({type:this.name,attrs:e})}},addKeyboardShortcuts(){return{Backspace:()=>R(this.editor,this.name),Delete:()=>R(this.editor,this.name)}},addInputRules(){return[new D({find:RegExp(this.options.syntax.value.source+`$`,``),handler:({state:e,range:t,match:n})=>{let r=n[0],i=S(r,this.options.mergeTags),a=this.type.create({label:i,value:r});e.tr.replaceWith(t.from,t.to,a)}})]},addPasteRules(){return[new O({find:new RegExp(this.options.syntax.value.source,`g`),handler:({state:e,range:t,match:n})=>{let r=n[0],i=S(r,this.options.mergeTags),a=this.type.create({label:i,value:r});e.tr.replaceWith(t.from,t.to,a)}})]}});export{j as FontSize,M as LetterSpacing,N as LineHeight,B as LogicMergeTagNode,W as MergeTagNode};
2
+ //# sourceMappingURL=extensions-BfjbWqOx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions-BfjbWqOx.js","names":[],"sources":["../../../src/extensions/FontSize.ts","../../../src/extensions/LetterSpacing.ts","../../../src/extensions/LineHeight.ts","../../../src/extensions/LogicMergeTagNodeView.vue","../../../src/extensions/LogicMergeTagNodeView.vue","../../../src/extensions/isNodeSelected.ts","../../../src/extensions/renderVueNodeView.ts","../../../src/extensions/LogicMergeTagNode.ts","../../../src/extensions/MergeTagNodeView.vue","../../../src/extensions/MergeTagNodeView.vue","../../../src/extensions/MergeTagNode.ts"],"sourcesContent":["import { Extension } from \"@tiptap/core\";\n\nexport interface FontSizeOptions {\n types: string[];\n}\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n fontSize: {\n setFontSize: (size: string) => ReturnType;\n unsetFontSize: () => ReturnType;\n };\n }\n}\n\nexport const FontSize = Extension.create<FontSizeOptions>({\n name: \"fontSize\",\n\n addOptions() {\n return {\n types: [\"textStyle\"],\n };\n },\n\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n fontSize: {\n default: null,\n parseHTML: (element) =>\n element.style.fontSize?.replace(/['\"]+/g, \"\") || null,\n renderHTML: (attributes) => {\n if (!attributes.fontSize) {\n return {};\n }\n return {\n style: `font-size: ${attributes.fontSize}`,\n };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setFontSize:\n (size: string) =>\n ({ chain }) => {\n return chain().setMark(\"textStyle\", { fontSize: size }).run();\n },\n unsetFontSize:\n () =>\n ({ chain }) => {\n return chain()\n .setMark(\"textStyle\", { fontSize: null })\n .removeEmptyTextStyle()\n .run();\n },\n };\n },\n});\n","import { Extension } from \"@tiptap/core\";\n\nexport interface LetterSpacingOptions {\n types: string[];\n}\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n letterSpacing: {\n setLetterSpacing: (spacing: string) => ReturnType;\n unsetLetterSpacing: () => ReturnType;\n };\n }\n}\n\nexport const LetterSpacing = Extension.create<LetterSpacingOptions>({\n name: \"letterSpacing\",\n\n addOptions() {\n return {\n types: [\"textStyle\"],\n };\n },\n\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n letterSpacing: {\n default: null,\n parseHTML: (element) =>\n element.style.letterSpacing?.replace(/['\"]+/g, \"\") || null,\n renderHTML: (attributes) => {\n if (!attributes.letterSpacing) {\n return {};\n }\n return {\n style: `letter-spacing: ${attributes.letterSpacing}`,\n };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setLetterSpacing:\n (spacing: string) =>\n ({ chain }) => {\n return chain().setMark(\"textStyle\", { letterSpacing: spacing }).run();\n },\n unsetLetterSpacing:\n () =>\n ({ chain }) => {\n return chain()\n .setMark(\"textStyle\", { letterSpacing: null })\n .removeEmptyTextStyle()\n .run();\n },\n };\n },\n});\n","import { Extension } from \"@tiptap/core\";\n\nexport interface LineHeightOptions {\n types: string[];\n defaultLineHeight: string;\n}\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n lineHeight: {\n setLineHeight: (lineHeight: string) => ReturnType;\n unsetLineHeight: () => ReturnType;\n };\n }\n}\n\nexport const LineHeight = Extension.create<LineHeightOptions>({\n name: \"lineHeight\",\n\n addOptions() {\n return {\n types: [\"paragraph\"],\n defaultLineHeight: \"1.5\",\n };\n },\n\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n lineHeight: {\n default: null,\n parseHTML: (element) => element.style.lineHeight || null,\n renderHTML: (attributes) => {\n if (!attributes.lineHeight) {\n return {};\n }\n return {\n style: `line-height: ${attributes.lineHeight}`,\n };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setLineHeight:\n (lineHeight: string) =>\n ({ commands }) => {\n return this.options.types.every((type) =>\n commands.updateAttributes(type, { lineHeight }),\n );\n },\n unsetLineHeight:\n () =>\n ({ commands }) => {\n return this.options.types.every((type) =>\n commands.resetAttributes(type, \"lineHeight\"),\n );\n },\n };\n },\n});\n","<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport { useMergeTag } from \"../composables/useMergeTag\";\nimport {\n getLogicMergeTagKeyword,\n isLogicMergeTagValue,\n} from \"@templatical/types\";\nimport type { Editor } from \"@tiptap/core\";\nimport { NodeViewWrapper } from \"@tiptap/vue-3\";\nimport { computed, nextTick, ref } from \"vue\";\n\nconst props = defineProps<{\n node: {\n attrs: {\n value: string;\n keyword: string;\n };\n };\n editor: Editor;\n getPos: () => number;\n deleteNode: () => void;\n updateAttributes: (attrs: Record<string, unknown>) => void;\n}>();\n\nconst { syntax } = useMergeTag();\nconst { t } = useI18n();\n\nconst isValid = computed(() =>\n isLogicMergeTagValue(props.node.attrs.value, syntax),\n);\nconst displayKeyword = computed(() =>\n getLogicMergeTagKeyword(props.node.attrs.value, syntax),\n);\n\nconst isEditing = ref(false);\nconst editValue = ref(\"\");\nconst inputRef = ref<HTMLInputElement | null>(null);\nlet handled = false;\n\nfunction startEditing(): void {\n editValue.value = props.node.attrs.value;\n handled = false;\n isEditing.value = true;\n nextTick(() => {\n inputRef.value?.focus();\n inputRef.value?.select();\n });\n}\n\nfunction finishEditing(): void {\n if (handled) {\n return;\n }\n handled = true;\n\n const newValue = editValue.value.trim();\n if (!newValue) {\n isEditing.value = false;\n return;\n }\n\n if (newValue !== props.node.attrs.value) {\n props.updateAttributes({\n value: newValue,\n keyword: isLogicMergeTagValue(newValue, syntax)\n ? getLogicMergeTagKeyword(newValue, syntax)\n : \"\",\n });\n }\n isEditing.value = false;\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (event.key === \"Enter\") {\n event.preventDefault();\n finishEditing();\n } else if (event.key === \"Escape\") {\n isEditing.value = false;\n }\n}\n</script>\n\n<template>\n <NodeViewWrapper\n as=\"span\"\n :class=\"\n isValid\n ? 'tpl-logic-merge-tag-node tpl:group tpl:mx-0.5 tpl:inline-flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-1.5 tpl:py-0.5 tpl:text-[0.8em] tpl:font-bold tpl:tracking-wide tpl:uppercase tpl:select-none'\n : ''\n \"\n :style=\"\n isValid\n ? 'background-color: transparent; border: 1.5px solid color-mix(in srgb, var(--tpl-primary) 50%, transparent); color: var(--tpl-primary);'\n : ''\n \"\n contenteditable=\"false\"\n >\n <!-- Edit mode -->\n <input\n v-if=\"isEditing\"\n ref=\"inputRef\"\n v-model=\"editValue\"\n type=\"text\"\n class=\"tpl:w-40 tpl:rounded tpl:border-none tpl:bg-transparent tpl:px-0.5 tpl:py-0 tpl:text-[1em] tpl:font-medium tpl:normal-case tpl:outline-none tpl:text-[var(--tpl-primary)]\"\n @blur=\"finishEditing\"\n @keydown=\"handleKeydown\"\n />\n <!-- Display mode: valid merge tag -->\n <span\n v-else-if=\"isValid\"\n role=\"button\"\n tabindex=\"0\"\n :aria-label=\"t.mergeTag.editValue\"\n class=\"tpl-tooltip tpl:cursor-pointer\"\n :data-tooltip=\"node.attrs.value\"\n @click.stop=\"startEditing\"\n @keydown.enter.stop=\"startEditing\"\n @keydown.space.prevent.stop=\"startEditing\"\n >\n {{ displayKeyword }}\n </span>\n <!-- Display mode: invalid (plain text) -->\n <span\n v-else\n role=\"button\"\n tabindex=\"0\"\n :aria-label=\"t.mergeTag.editValue\"\n @click.stop=\"startEditing\"\n @keydown.enter.stop=\"startEditing\"\n @keydown.space.prevent.stop=\"startEditing\"\n >\n {{ node.attrs.value }}\n </span>\n <button\n v-if=\"isValid\"\n type=\"button\"\n :aria-label=\"t.mergeTag.deleteMergeTag\"\n class=\"tpl-merge-tag-delete tpl:flex tpl:size-5 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-full tpl:border-none tpl:bg-transparent tpl:p-0 tpl:opacity-60 tpl:transition-all hover:tpl:opacity-100 tpl:text-[var(--tpl-primary)]\"\n contenteditable=\"false\"\n @click.stop.prevent=\"deleteNode\"\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </NodeViewWrapper>\n</template>\n","<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport { useMergeTag } from \"../composables/useMergeTag\";\nimport {\n getLogicMergeTagKeyword,\n isLogicMergeTagValue,\n} from \"@templatical/types\";\nimport type { Editor } from \"@tiptap/core\";\nimport { NodeViewWrapper } from \"@tiptap/vue-3\";\nimport { computed, nextTick, ref } from \"vue\";\n\nconst props = defineProps<{\n node: {\n attrs: {\n value: string;\n keyword: string;\n };\n };\n editor: Editor;\n getPos: () => number;\n deleteNode: () => void;\n updateAttributes: (attrs: Record<string, unknown>) => void;\n}>();\n\nconst { syntax } = useMergeTag();\nconst { t } = useI18n();\n\nconst isValid = computed(() =>\n isLogicMergeTagValue(props.node.attrs.value, syntax),\n);\nconst displayKeyword = computed(() =>\n getLogicMergeTagKeyword(props.node.attrs.value, syntax),\n);\n\nconst isEditing = ref(false);\nconst editValue = ref(\"\");\nconst inputRef = ref<HTMLInputElement | null>(null);\nlet handled = false;\n\nfunction startEditing(): void {\n editValue.value = props.node.attrs.value;\n handled = false;\n isEditing.value = true;\n nextTick(() => {\n inputRef.value?.focus();\n inputRef.value?.select();\n });\n}\n\nfunction finishEditing(): void {\n if (handled) {\n return;\n }\n handled = true;\n\n const newValue = editValue.value.trim();\n if (!newValue) {\n isEditing.value = false;\n return;\n }\n\n if (newValue !== props.node.attrs.value) {\n props.updateAttributes({\n value: newValue,\n keyword: isLogicMergeTagValue(newValue, syntax)\n ? getLogicMergeTagKeyword(newValue, syntax)\n : \"\",\n });\n }\n isEditing.value = false;\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (event.key === \"Enter\") {\n event.preventDefault();\n finishEditing();\n } else if (event.key === \"Escape\") {\n isEditing.value = false;\n }\n}\n</script>\n\n<template>\n <NodeViewWrapper\n as=\"span\"\n :class=\"\n isValid\n ? 'tpl-logic-merge-tag-node tpl:group tpl:mx-0.5 tpl:inline-flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-1.5 tpl:py-0.5 tpl:text-[0.8em] tpl:font-bold tpl:tracking-wide tpl:uppercase tpl:select-none'\n : ''\n \"\n :style=\"\n isValid\n ? 'background-color: transparent; border: 1.5px solid color-mix(in srgb, var(--tpl-primary) 50%, transparent); color: var(--tpl-primary);'\n : ''\n \"\n contenteditable=\"false\"\n >\n <!-- Edit mode -->\n <input\n v-if=\"isEditing\"\n ref=\"inputRef\"\n v-model=\"editValue\"\n type=\"text\"\n class=\"tpl:w-40 tpl:rounded tpl:border-none tpl:bg-transparent tpl:px-0.5 tpl:py-0 tpl:text-[1em] tpl:font-medium tpl:normal-case tpl:outline-none tpl:text-[var(--tpl-primary)]\"\n @blur=\"finishEditing\"\n @keydown=\"handleKeydown\"\n />\n <!-- Display mode: valid merge tag -->\n <span\n v-else-if=\"isValid\"\n role=\"button\"\n tabindex=\"0\"\n :aria-label=\"t.mergeTag.editValue\"\n class=\"tpl-tooltip tpl:cursor-pointer\"\n :data-tooltip=\"node.attrs.value\"\n @click.stop=\"startEditing\"\n @keydown.enter.stop=\"startEditing\"\n @keydown.space.prevent.stop=\"startEditing\"\n >\n {{ displayKeyword }}\n </span>\n <!-- Display mode: invalid (plain text) -->\n <span\n v-else\n role=\"button\"\n tabindex=\"0\"\n :aria-label=\"t.mergeTag.editValue\"\n @click.stop=\"startEditing\"\n @keydown.enter.stop=\"startEditing\"\n @keydown.space.prevent.stop=\"startEditing\"\n >\n {{ node.attrs.value }}\n </span>\n <button\n v-if=\"isValid\"\n type=\"button\"\n :aria-label=\"t.mergeTag.deleteMergeTag\"\n class=\"tpl-merge-tag-delete tpl:flex tpl:size-5 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-full tpl:border-none tpl:bg-transparent tpl:p-0 tpl:opacity-60 tpl:transition-all hover:tpl:opacity-100 tpl:text-[var(--tpl-primary)]\"\n contenteditable=\"false\"\n @click.stop.prevent=\"deleteNode\"\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </NodeViewWrapper>\n</template>\n","import type { Editor } from \"@tiptap/core\";\n\n/**\n * Checks whether a TipTap node of the given type is selected, or if the cursor\n * is immediately adjacent to one (for Backspace/Delete handling).\n *\n * Shared by MergeTagNode and LogicMergeTagNode keyboard shortcuts.\n */\nexport function isNodeSelected(editor: Editor, nodeTypeName: string): boolean {\n const { selection } = editor.state;\n const { $from, $to } = selection;\n\n // Check if selection contains a node of this type\n let found = false;\n editor.state.doc.nodesBetween($from.pos, $to.pos, (node) => {\n if (node.type.name === nodeTypeName) {\n found = true;\n return false;\n }\n });\n\n if (found) {\n return true;\n }\n\n // Check if cursor is right after the node (for Backspace)\n if ($from.pos > 0 && $from.nodeBefore?.type.name === nodeTypeName) {\n return true;\n }\n\n // Check if cursor is right before the node (for Delete)\n if ($from.nodeAfter?.type.name === nodeTypeName) {\n return true;\n }\n\n return false;\n}\n","import type { Component } from \"vue\";\nimport { VueNodeViewRenderer } from \"@tiptap/vue-3\";\n\n/**\n * Typed wrapper for VueNodeViewRenderer that handles the known type mismatch\n * between Vue SFC default exports and TipTap's expected component type.\n */\nexport function renderVueNodeView(component: Component) {\n return VueNodeViewRenderer(\n component as Parameters<typeof VueNodeViewRenderer>[0],\n );\n}\n","import LogicMergeTagNodeView from \"./LogicMergeTagNodeView.vue\";\nimport type { SyntaxPreset } from \"@templatical/types\";\nimport {\n getLogicMergeTagKeyword,\n isLogicMergeTagValue,\n SYNTAX_PRESETS,\n} from \"@templatical/types\";\nimport { InputRule, mergeAttributes, Node, PasteRule } from \"@tiptap/core\";\nimport { isNodeSelected } from \"./isNodeSelected\";\nimport { renderVueNodeView } from \"./renderVueNodeView\";\n\nexport interface LogicMergeTagNodeOptions {\n syntax: SyntaxPreset;\n}\n\nexport const LogicMergeTagNode = Node.create<LogicMergeTagNodeOptions>({\n name: \"logicMergeTagNode\",\n\n group: \"inline\",\n\n inline: true,\n\n atom: true,\n\n addOptions() {\n return {\n syntax: SYNTAX_PRESETS.liquid,\n };\n },\n\n addAttributes() {\n return {\n value: {\n default: \"\",\n parseHTML: (element) =>\n element.getAttribute(\"data-logic-merge-tag\") || \"\",\n },\n keyword: {\n default: \"\",\n parseHTML: (element) =>\n element.getAttribute(\"data-keyword\") || element.textContent || \"\",\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: \"span[data-logic-merge-tag]\",\n },\n ];\n },\n\n renderHTML({ node, HTMLAttributes }) {\n if (!isLogicMergeTagValue(node.attrs.value, this.options.syntax)) {\n return [\"span\", {}, node.attrs.value];\n }\n\n const keyword = getLogicMergeTagKeyword(\n node.attrs.value,\n this.options.syntax,\n );\n\n return [\n \"span\",\n mergeAttributes(HTMLAttributes, {\n \"data-logic-merge-tag\": node.attrs.value,\n \"data-keyword\": keyword,\n }),\n keyword,\n ];\n },\n\n addNodeView() {\n return renderVueNodeView(LogicMergeTagNodeView);\n },\n\n addKeyboardShortcuts() {\n return {\n Backspace: () => isNodeSelected(this.editor, this.name),\n Delete: () => isNodeSelected(this.editor, this.name),\n };\n },\n\n addInputRules() {\n const inputRegex = new RegExp(this.options.syntax.logic.source + \"$\", \"\");\n\n return [\n new InputRule({\n find: inputRegex,\n handler: ({ state, range, match }) => {\n const fullValue = match[0];\n if (!isLogicMergeTagValue(fullValue, this.options.syntax)) {\n return;\n }\n\n const keyword = getLogicMergeTagKeyword(\n fullValue,\n this.options.syntax,\n );\n\n const node = this.type.create({\n value: fullValue,\n keyword,\n });\n\n state.tr.replaceWith(range.from, range.to, node);\n },\n }),\n ];\n },\n\n addPasteRules() {\n const pasteRegex = new RegExp(this.options.syntax.logic.source, \"g\");\n\n return [\n new PasteRule({\n find: pasteRegex,\n handler: ({ state, range, match }) => {\n const fullValue = match[0];\n if (!isLogicMergeTagValue(fullValue, this.options.syntax)) {\n return;\n }\n\n const keyword = getLogicMergeTagKeyword(\n fullValue,\n this.options.syntax,\n );\n\n const node = this.type.create({\n value: fullValue,\n keyword,\n });\n\n state.tr.replaceWith(range.from, range.to, node);\n },\n }),\n ];\n },\n});\n","<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport { useMergeTag } from \"../composables/useMergeTag\";\nimport { NodeViewWrapper } from \"@tiptap/vue-3\";\nimport { computed, nextTick, ref } from \"vue\";\n\nconst props = defineProps<{\n node: {\n attrs: {\n label: string;\n value: string;\n };\n };\n deleteNode: () => void;\n updateAttributes: (attrs: Record<string, unknown>) => void;\n}>();\n\nconst { getMergeTagLabel } = useMergeTag();\nconst { t } = useI18n();\n\nconst displayLabel = computed(() => getMergeTagLabel(props.node.attrs.value));\n\nconst isEditing = ref(false);\nconst editValue = ref(\"\");\nconst inputRef = ref<HTMLInputElement | null>(null);\n\nfunction startEditing(): void {\n editValue.value = props.node.attrs.value;\n isEditing.value = true;\n nextTick(() => {\n inputRef.value?.focus();\n inputRef.value?.select();\n });\n}\n\nfunction finishEditing(): void {\n const newValue = editValue.value.trim();\n if (newValue && newValue !== props.node.attrs.value) {\n // Update with new value and derive label from it\n props.updateAttributes({\n value: newValue,\n label: getMergeTagLabel(newValue),\n });\n }\n isEditing.value = false;\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (event.key === \"Enter\") {\n event.preventDefault();\n finishEditing();\n } else if (event.key === \"Escape\") {\n isEditing.value = false;\n }\n}\n</script>\n\n<template>\n <NodeViewWrapper\n as=\"span\"\n class=\"tpl-merge-tag-node tpl:group tpl:mx-0.5 tpl:inline-flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-1.5 tpl:py-0.5 tpl:text-[0.9em] tpl:font-medium tpl:select-none tpl:text-[var(--tpl-primary)]\"\n style=\"\n background-color: color-mix(in srgb, var(--tpl-primary) 20%, transparent);\n \"\n contenteditable=\"false\"\n >\n <!-- Edit mode -->\n <input\n v-if=\"isEditing\"\n ref=\"inputRef\"\n v-model=\"editValue\"\n type=\"text\"\n class=\"tpl:w-32 tpl:rounded tpl:border-none tpl:bg-transparent tpl:px-0.5 tpl:py-0 tpl:text-[1em] tpl:font-medium tpl:outline-none tpl:text-[var(--tpl-primary)]\"\n @blur=\"finishEditing\"\n @keydown=\"handleKeydown\"\n />\n <!-- Display mode -->\n <span\n v-else\n role=\"button\"\n tabindex=\"0\"\n :aria-label=\"t.mergeTag.editValue\"\n class=\"tpl-tooltip tpl:cursor-pointer\"\n :data-tooltip=\"node.attrs.value\"\n @click.stop=\"startEditing\"\n @keydown.enter.stop=\"startEditing\"\n @keydown.space.prevent.stop=\"startEditing\"\n >\n {{ displayLabel }}\n </span>\n <button\n type=\"button\"\n :aria-label=\"t.mergeTag.deleteMergeTag\"\n class=\"tpl-merge-tag-delete tpl:flex tpl:size-5 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-full tpl:border-none tpl:bg-transparent tpl:p-0 tpl:opacity-60 tpl:transition-all hover:tpl:opacity-100 tpl:text-[var(--tpl-primary)]\"\n contenteditable=\"false\"\n @click.stop.prevent=\"deleteNode\"\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </NodeViewWrapper>\n</template>\n","<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport { useMergeTag } from \"../composables/useMergeTag\";\nimport { NodeViewWrapper } from \"@tiptap/vue-3\";\nimport { computed, nextTick, ref } from \"vue\";\n\nconst props = defineProps<{\n node: {\n attrs: {\n label: string;\n value: string;\n };\n };\n deleteNode: () => void;\n updateAttributes: (attrs: Record<string, unknown>) => void;\n}>();\n\nconst { getMergeTagLabel } = useMergeTag();\nconst { t } = useI18n();\n\nconst displayLabel = computed(() => getMergeTagLabel(props.node.attrs.value));\n\nconst isEditing = ref(false);\nconst editValue = ref(\"\");\nconst inputRef = ref<HTMLInputElement | null>(null);\n\nfunction startEditing(): void {\n editValue.value = props.node.attrs.value;\n isEditing.value = true;\n nextTick(() => {\n inputRef.value?.focus();\n inputRef.value?.select();\n });\n}\n\nfunction finishEditing(): void {\n const newValue = editValue.value.trim();\n if (newValue && newValue !== props.node.attrs.value) {\n // Update with new value and derive label from it\n props.updateAttributes({\n value: newValue,\n label: getMergeTagLabel(newValue),\n });\n }\n isEditing.value = false;\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (event.key === \"Enter\") {\n event.preventDefault();\n finishEditing();\n } else if (event.key === \"Escape\") {\n isEditing.value = false;\n }\n}\n</script>\n\n<template>\n <NodeViewWrapper\n as=\"span\"\n class=\"tpl-merge-tag-node tpl:group tpl:mx-0.5 tpl:inline-flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-1.5 tpl:py-0.5 tpl:text-[0.9em] tpl:font-medium tpl:select-none tpl:text-[var(--tpl-primary)]\"\n style=\"\n background-color: color-mix(in srgb, var(--tpl-primary) 20%, transparent);\n \"\n contenteditable=\"false\"\n >\n <!-- Edit mode -->\n <input\n v-if=\"isEditing\"\n ref=\"inputRef\"\n v-model=\"editValue\"\n type=\"text\"\n class=\"tpl:w-32 tpl:rounded tpl:border-none tpl:bg-transparent tpl:px-0.5 tpl:py-0 tpl:text-[1em] tpl:font-medium tpl:outline-none tpl:text-[var(--tpl-primary)]\"\n @blur=\"finishEditing\"\n @keydown=\"handleKeydown\"\n />\n <!-- Display mode -->\n <span\n v-else\n role=\"button\"\n tabindex=\"0\"\n :aria-label=\"t.mergeTag.editValue\"\n class=\"tpl-tooltip tpl:cursor-pointer\"\n :data-tooltip=\"node.attrs.value\"\n @click.stop=\"startEditing\"\n @keydown.enter.stop=\"startEditing\"\n @keydown.space.prevent.stop=\"startEditing\"\n >\n {{ displayLabel }}\n </span>\n <button\n type=\"button\"\n :aria-label=\"t.mergeTag.deleteMergeTag\"\n class=\"tpl-merge-tag-delete tpl:flex tpl:size-5 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-full tpl:border-none tpl:bg-transparent tpl:p-0 tpl:opacity-60 tpl:transition-all hover:tpl:opacity-100 tpl:text-[var(--tpl-primary)]\"\n contenteditable=\"false\"\n @click.stop.prevent=\"deleteNode\"\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </NodeViewWrapper>\n</template>\n","import MergeTagNodeView from \"./MergeTagNodeView.vue\";\nimport type { MergeTag, SyntaxPreset } from \"@templatical/types\";\nimport { getMergeTagLabel, SYNTAX_PRESETS } from \"@templatical/types\";\nimport { InputRule, mergeAttributes, Node, PasteRule } from \"@tiptap/core\";\nimport { isNodeSelected } from \"./isNodeSelected\";\nimport { renderVueNodeView } from \"./renderVueNodeView\";\n\nexport interface MergeTagNodeOptions {\n mergeTags: MergeTag[];\n syntax: SyntaxPreset;\n}\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n mergeTagNode: {\n insertMergeTag: (attrs: MergeTag) => ReturnType;\n };\n }\n}\n\nexport const MergeTagNode = Node.create<MergeTagNodeOptions>({\n name: \"mergeTagNode\",\n\n group: \"inline\",\n\n inline: true,\n\n atom: true,\n\n addOptions() {\n return {\n mergeTags: [],\n syntax: SYNTAX_PRESETS.liquid,\n };\n },\n\n addAttributes() {\n return {\n label: {\n default: \"\",\n parseHTML: (element) =>\n element.getAttribute(\"data-label\") || element.textContent || \"\",\n },\n value: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"data-merge-tag\") || \"\",\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: \"span[data-merge-tag]\",\n },\n ];\n },\n\n renderHTML({ node, HTMLAttributes }) {\n const label = getMergeTagLabel(node.attrs.value, this.options.mergeTags);\n\n return [\n \"span\",\n mergeAttributes(HTMLAttributes, {\n \"data-merge-tag\": node.attrs.value,\n \"data-label\": label,\n }),\n label,\n ];\n },\n\n addNodeView() {\n return renderVueNodeView(MergeTagNodeView);\n },\n\n addCommands() {\n return {\n insertMergeTag:\n (attrs: MergeTag) =>\n ({ commands }) => {\n return commands.insertContent({\n type: this.name,\n attrs,\n });\n },\n };\n },\n\n addKeyboardShortcuts() {\n return {\n Backspace: () => isNodeSelected(this.editor, this.name),\n Delete: () => isNodeSelected(this.editor, this.name),\n };\n },\n\n addInputRules() {\n const inputRegex = new RegExp(this.options.syntax.value.source + \"$\", \"\");\n\n return [\n new InputRule({\n find: inputRegex,\n handler: ({ state, range, match }) => {\n const fullValue = match[0];\n const label = getMergeTagLabel(fullValue, this.options.mergeTags);\n\n const node = this.type.create({\n label,\n value: fullValue,\n });\n\n state.tr.replaceWith(range.from, range.to, node);\n },\n }),\n ];\n },\n\n addPasteRules() {\n const pasteRegex = new RegExp(this.options.syntax.value.source, \"g\");\n\n return [\n new PasteRule({\n find: pasteRegex,\n handler: ({ state, range, match }) => {\n const fullValue = match[0];\n const label = getMergeTagLabel(fullValue, this.options.mergeTags);\n\n const node = this.type.create({\n label,\n value: fullValue,\n });\n\n state.tr.replaceWith(range.from, range.to, node);\n },\n }),\n ];\n },\n});\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{l as e,n as t,v as n,y as r}from"./draggable-ClUwYCFL.js";t();var i=e=>e===``,a=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),o=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),s=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),c=e=>{let t=s(e);return t.charAt(0).toUpperCase()+t.slice(1)},l={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},u=Symbol(`lucide-icons`);function d(){return r(u,{})}var f=({name:t,iconNode:r,absoluteStrokeWidth:s,"absolute-stroke-width":u,strokeWidth:f,"stroke-width":p,size:m,color:h,...g},{slots:_})=>{let{size:v,color:y,strokeWidth:b=2,absoluteStrokeWidth:x=!1,class:S=``}=d(),C=e(()=>{let e=i(s)||i(u)||s===!0||u===!0||x===!0,t=f||p||b||l[`stroke-width`];return e?Number(t)*24/Number(m??v??l.width):t});return n(`svg`,{...l,...g,width:m??v??l.width,height:m??v??l.height,stroke:h??y??l.stroke,"stroke-width":C.value,class:a(`lucide`,S,...t?[`lucide-${o(c(t))}-icon`,`lucide-${o(t)}`]:[`lucide-icon`])},[...r.map(e=>n(...e)),..._.default?[_.default()]:[]])},p=(e,t)=>(r,{slots:i,attrs:a})=>n(f,{...a,...r,iconNode:t,name:e},i),m=p(`bold`,[[`path`,{d:`M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8`,key:`mg9rjx`}]]),h=p(`italic`,[[`line`,{x1:`19`,x2:`10`,y1:`4`,y2:`4`,key:`15jd3p`}],[`line`,{x1:`14`,x2:`5`,y1:`20`,y2:`20`,key:`bu0au3`}],[`line`,{x1:`15`,x2:`9`,y1:`4`,y2:`20`,key:`uljnxc`}]]),g=p(`link`,[[`path`,{d:`M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71`,key:`1cjeqo`}],[`path`,{d:`M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71`,key:`19qd67`}]]),_=p(`list-ordered`,[[`path`,{d:`M11 5h10`,key:`1cz7ny`}],[`path`,{d:`M11 12h10`,key:`1438ji`}],[`path`,{d:`M11 19h10`,key:`11t30w`}],[`path`,{d:`M4 4h1v5`,key:`10yrso`}],[`path`,{d:`M4 9h2`,key:`r1h2o0`}],[`path`,{d:`M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02`,key:`xtkcd5`}]]),v=p(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),y=p(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),b=p(`remove-formatting`,[[`path`,{d:`M4 7V4h16v3`,key:`9msm58`}],[`path`,{d:`M5 20h6`,key:`1h6pxn`}],[`path`,{d:`M13 4 8 20`,key:`kqq6aj`}],[`path`,{d:`m15 15 5 5`,key:`me55sn`}],[`path`,{d:`m20 15-5 5`,key:`11p7ol`}]]),x=p(`scan-line`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}]]),S=p(`smile`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 14s1.5 2 4 2 4-2 4-2`,key:`1y1vjs`}],[`line`,{x1:`9`,x2:`9.01`,y1:`9`,y2:`9`,key:`yxxnd0`}],[`line`,{x1:`15`,x2:`15.01`,y1:`9`,y2:`9`,key:`1p4y9e`}]]),C=p(`strikethrough`,[[`path`,{d:`M16 4H9a3 3 0 0 0-2.83 4`,key:`43sutm`}],[`path`,{d:`M14 12a4 4 0 0 1 0 8H6`,key:`nlfj13`}],[`line`,{x1:`4`,x2:`20`,y1:`12`,y2:`12`,key:`1e0a9i`}]]),w=p(`subscript`,[[`path`,{d:`m4 5 8 8`,key:`1eunvl`}],[`path`,{d:`m12 5-8 8`,key:`1ah0jp`}],[`path`,{d:`M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07`,key:`e8ta8j`}]]),T=p(`superscript`,[[`path`,{d:`m4 19 8-8`,key:`hr47gm`}],[`path`,{d:`m12 19-8-8`,key:`1dhhmo`}],[`path`,{d:`M20 12h-4c0-1.5.442-2 1.5-2.5S20 8.334 20 7.002c0-.472-.17-.93-.484-1.29a2.105 2.105 0 0 0-2.617-.436c-.42.239-.738.614-.899 1.06`,key:`1dfcux`}]]),E=p(`text-align-center`,[[`path`,{d:`M21 5H3`,key:`1fi0y6`}],[`path`,{d:`M17 12H7`,key:`16if0g`}],[`path`,{d:`M19 19H5`,key:`vjpgq2`}]]),D=p(`text-align-end`,[[`path`,{d:`M21 5H3`,key:`1fi0y6`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M21 19H7`,key:`4cu937`}]]),O=p(`text-align-start`,[[`path`,{d:`M21 5H3`,key:`1fi0y6`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M17 19H3`,key:`z6ezky`}]]),k=p(`underline`,[[`path`,{d:`M6 4v6a6 6 0 0 0 12 0V4`,key:`9kb039`}],[`line`,{x1:`4`,x2:`20`,y1:`20`,y2:`20`,key:`nun2al`}]]),A=p(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{m as _,E as a,C as c,b as d,y as f,h as g,g as h,D as i,S as l,_ as m,k as n,T as o,v as p,O as r,w as s,A as t,x as u};
2
+ //# sourceMappingURL=icons-vmLJTaJk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons-vmLJTaJk.js","names":["__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode"],"sources":["../../../../../node_modules/.bun/vue@3.5.32+cc44681ce9393ba4/node_modules/vue/dist/vue.runtime.esm-bundler.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/shared/src/utils/isEmptyString.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/shared/src/utils/mergeClasses.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/shared/src/utils/toKebabCase.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/shared/src/utils/toCamelCase.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/shared/src/utils/toPascalCase.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/defaultAttributes.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/context.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/Icon.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/createLucideIcon.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/bold.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/italic.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/link.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/list-ordered.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/list.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/loader-circle.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/remove-formatting.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/scan-line.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/smile.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/strikethrough.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/subscript.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/superscript.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/text-align-center.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/text-align-end.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/text-align-start.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/underline.js","../../../../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/icons/x.js"],"sourcesContent":["/**\n* vue v3.5.32\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { initCustomFormatter, warn } from '@vue/runtime-dom';\nexport * from '@vue/runtime-dom';\n\nfunction initDev() {\n {\n initCustomFormatter();\n }\n}\n\nif (!!(process.env.NODE_ENV !== \"production\")) {\n initDev();\n}\nconst compile = () => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n );\n }\n};\n\nexport { compile };\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst isEmptyString = (value) => value === \"\";\n\nexport { isEmptyString };\n//# sourceMappingURL=isEmptyString.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses };\n//# sourceMappingURL=mergeClasses.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { toKebabCase };\n//# sourceMappingURL=toKebabCase.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\n\nexport { toCamelCase };\n//# sourceMappingURL=toCamelCase.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toCamelCase } from './toCamelCase.js';\n\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\n\nexport { toPascalCase };\n//# sourceMappingURL=toPascalCase.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": 2,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { provide, inject } from 'vue';\n\nconst LUCIDE_CONTEXT = Symbol(\"lucide-icons\");\nfunction setLucideProps(props) {\n return provide(LUCIDE_CONTEXT, props);\n}\nfunction useLucideProps() {\n return inject(LUCIDE_CONTEXT, {});\n}\n\nexport { LUCIDE_CONTEXT, setLucideProps, useLucideProps };\n//# sourceMappingURL=context.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { computed, h } from 'vue';\nimport { isEmptyString } from './shared/src/utils/isEmptyString.js';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.js';\nimport { toKebabCase } from './shared/src/utils/toKebabCase.js';\nimport { toPascalCase } from './shared/src/utils/toPascalCase.js';\nimport defaultAttributes from './defaultAttributes.js';\nimport { useLucideProps } from './context.js';\n\nconst Icon = ({\n name,\n iconNode,\n absoluteStrokeWidth,\n \"absolute-stroke-width\": absoluteStrokeWidthKebabCase,\n strokeWidth,\n \"stroke-width\": strokeWidthKebabCase,\n size,\n color,\n ...props\n}, { slots }) => {\n const {\n size: contextSize,\n color: contextColor,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n class: contextClass = \"\"\n } = useLucideProps();\n const calculatedStrokeWidth = computed(() => {\n const isAbsoluteStrokeWidth = isEmptyString(absoluteStrokeWidth) || isEmptyString(absoluteStrokeWidthKebabCase) || absoluteStrokeWidth === true || absoluteStrokeWidthKebabCase === true || contextAbsoluteStrokeWidth === true;\n const strokeWidthValue = strokeWidth || strokeWidthKebabCase || contextStrokeWidth || defaultAttributes[\"stroke-width\"];\n if (isAbsoluteStrokeWidth) {\n return Number(strokeWidthValue) * 24 / Number(size ?? contextSize ?? defaultAttributes.width);\n }\n return strokeWidthValue;\n });\n return h(\n \"svg\",\n {\n ...defaultAttributes,\n ...props,\n width: size ?? contextSize ?? defaultAttributes.width,\n height: size ?? contextSize ?? defaultAttributes.height,\n stroke: color ?? contextColor ?? defaultAttributes.stroke,\n \"stroke-width\": calculatedStrokeWidth.value,\n class: mergeClasses(\n \"lucide\",\n contextClass,\n ...name ? [`lucide-${toKebabCase(toPascalCase(name))}-icon`, `lucide-${toKebabCase(name)}`] : [\"lucide-icon\"]\n )\n },\n [...iconNode.map((child) => h(...child)), ...slots.default ? [slots.default()] : []]\n );\n};\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { h } from 'vue';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => (props, { slots, attrs }) => h(\n Icon,\n {\n ...attrs,\n ...props,\n iconNode,\n name: iconName\n },\n slots\n);\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\", key: \"mg9rjx\" }\n ]\n];\nconst Bold = createLucideIcon(\"bold\", __iconNode);\n\nexport { __iconNode, Bold as default };\n//# sourceMappingURL=bold.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"line\", { x1: \"19\", x2: \"10\", y1: \"4\", y2: \"4\", key: \"15jd3p\" }],\n [\"line\", { x1: \"14\", x2: \"5\", y1: \"20\", y2: \"20\", key: \"bu0au3\" }],\n [\"line\", { x1: \"15\", x2: \"9\", y1: \"4\", y2: \"20\", key: \"uljnxc\" }]\n];\nconst Italic = createLucideIcon(\"italic\", __iconNode);\n\nexport { __iconNode, Italic as default };\n//# sourceMappingURL=italic.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\", key: \"1cjeqo\" }],\n [\"path\", { d: \"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\", key: \"19qd67\" }]\n];\nconst Link = createLucideIcon(\"link\", __iconNode);\n\nexport { __iconNode, Link as default };\n//# sourceMappingURL=link.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M11 5h10\", key: \"1cz7ny\" }],\n [\"path\", { d: \"M11 12h10\", key: \"1438ji\" }],\n [\"path\", { d: \"M11 19h10\", key: \"11t30w\" }],\n [\"path\", { d: \"M4 4h1v5\", key: \"10yrso\" }],\n [\"path\", { d: \"M4 9h2\", key: \"r1h2o0\" }],\n [\"path\", { d: \"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02\", key: \"xtkcd5\" }]\n];\nconst ListOrdered = createLucideIcon(\"list-ordered\", __iconNode);\n\nexport { __iconNode, ListOrdered as default };\n//# sourceMappingURL=list-ordered.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 5h.01\", key: \"18ugdj\" }],\n [\"path\", { d: \"M3 12h.01\", key: \"nlz23k\" }],\n [\"path\", { d: \"M3 19h.01\", key: \"noohij\" }],\n [\"path\", { d: \"M8 5h13\", key: \"1pao27\" }],\n [\"path\", { d: \"M8 12h13\", key: \"1za7za\" }],\n [\"path\", { d: \"M8 19h13\", key: \"m83p4d\" }]\n];\nconst List = createLucideIcon(\"list\", __iconNode);\n\nexport { __iconNode, List as default };\n//# sourceMappingURL=list.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M4 7V4h16v3\", key: \"9msm58\" }],\n [\"path\", { d: \"M5 20h6\", key: \"1h6pxn\" }],\n [\"path\", { d: \"M13 4 8 20\", key: \"kqq6aj\" }],\n [\"path\", { d: \"m15 15 5 5\", key: \"me55sn\" }],\n [\"path\", { d: \"m20 15-5 5\", key: \"11p7ol\" }]\n];\nconst RemoveFormatting = createLucideIcon(\"remove-formatting\", __iconNode);\n\nexport { __iconNode, RemoveFormatting as default };\n//# sourceMappingURL=remove-formatting.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 7V5a2 2 0 0 1 2-2h2\", key: \"aa7l1z\" }],\n [\"path\", { d: \"M17 3h2a2 2 0 0 1 2 2v2\", key: \"4qcy5o\" }],\n [\"path\", { d: \"M21 17v2a2 2 0 0 1-2 2h-2\", key: \"6vwrx8\" }],\n [\"path\", { d: \"M7 21H5a2 2 0 0 1-2-2v-2\", key: \"ioqczr\" }],\n [\"path\", { d: \"M7 12h10\", key: \"b7w52i\" }]\n];\nconst ScanLine = createLucideIcon(\"scan-line\", __iconNode);\n\nexport { __iconNode, ScanLine as default };\n//# sourceMappingURL=scan-line.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M8 14s1.5 2 4 2 4-2 4-2\", key: \"1y1vjs\" }],\n [\"line\", { x1: \"9\", x2: \"9.01\", y1: \"9\", y2: \"9\", key: \"yxxnd0\" }],\n [\"line\", { x1: \"15\", x2: \"15.01\", y1: \"9\", y2: \"9\", key: \"1p4y9e\" }]\n];\nconst Smile = createLucideIcon(\"smile\", __iconNode);\n\nexport { __iconNode, Smile as default };\n//# sourceMappingURL=smile.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M16 4H9a3 3 0 0 0-2.83 4\", key: \"43sutm\" }],\n [\"path\", { d: \"M14 12a4 4 0 0 1 0 8H6\", key: \"nlfj13\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"12\", y2: \"12\", key: \"1e0a9i\" }]\n];\nconst Strikethrough = createLucideIcon(\"strikethrough\", __iconNode);\n\nexport { __iconNode, Strikethrough as default };\n//# sourceMappingURL=strikethrough.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m4 5 8 8\", key: \"1eunvl\" }],\n [\"path\", { d: \"m12 5-8 8\", key: \"1ah0jp\" }],\n [\n \"path\",\n {\n d: \"M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07\",\n key: \"e8ta8j\"\n }\n ]\n];\nconst Subscript = createLucideIcon(\"subscript\", __iconNode);\n\nexport { __iconNode, Subscript as default };\n//# sourceMappingURL=subscript.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m4 19 8-8\", key: \"hr47gm\" }],\n [\"path\", { d: \"m12 19-8-8\", key: \"1dhhmo\" }],\n [\n \"path\",\n {\n d: \"M20 12h-4c0-1.5.442-2 1.5-2.5S20 8.334 20 7.002c0-.472-.17-.93-.484-1.29a2.105 2.105 0 0 0-2.617-.436c-.42.239-.738.614-.899 1.06\",\n key: \"1dfcux\"\n }\n ]\n];\nconst Superscript = createLucideIcon(\"superscript\", __iconNode);\n\nexport { __iconNode, Superscript as default };\n//# sourceMappingURL=superscript.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 5H3\", key: \"1fi0y6\" }],\n [\"path\", { d: \"M17 12H7\", key: \"16if0g\" }],\n [\"path\", { d: \"M19 19H5\", key: \"vjpgq2\" }]\n];\nconst TextAlignCenter = createLucideIcon(\"text-align-center\", __iconNode);\n\nexport { __iconNode, TextAlignCenter as default };\n//# sourceMappingURL=text-align-center.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 5H3\", key: \"1fi0y6\" }],\n [\"path\", { d: \"M21 12H9\", key: \"dn1m92\" }],\n [\"path\", { d: \"M21 19H7\", key: \"4cu937\" }]\n];\nconst TextAlignEnd = createLucideIcon(\"text-align-end\", __iconNode);\n\nexport { __iconNode, TextAlignEnd as default };\n//# sourceMappingURL=text-align-end.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 5H3\", key: \"1fi0y6\" }],\n [\"path\", { d: \"M15 12H3\", key: \"6jk70r\" }],\n [\"path\", { d: \"M17 19H3\", key: \"z6ezky\" }]\n];\nconst TextAlignStart = createLucideIcon(\"text-align-start\", __iconNode);\n\nexport { __iconNode, TextAlignStart as default };\n//# sourceMappingURL=text-align-start.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M6 4v6a6 6 0 0 0 12 0V4\", key: \"9kb039\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"20\", y2: \"20\", key: \"nun2al\" }]\n];\nconst Underline = createLucideIcon(\"underline\", __iconNode);\n\nexport { __iconNode, Underline as default };\n//# sourceMappingURL=underline.js.map\n","/**\n * @license @lucide/vue v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"mappings":"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"}
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(e&&(t=e(e=0)),t),s=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),c=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},l=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},u=(n,r,a)=>(a=n==null?{}:e(i(n)),l(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),d=e=>a.call(e,`module.exports`)?e[`module.exports`]:l(t({},`__esModule`,{value:!0}),e);export{u as a,d as i,o as n,c as r,s as t};
@@ -0,0 +1,2 @@
1
+ var e=`#000000`,t=`#ffff00`;export{e as n,t};
2
+ //# sourceMappingURL=styleConstants-UTJ94gco.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleConstants-UTJ94gco.js","names":[],"sources":["../../../src/constants/styleConstants.ts"],"sourcesContent":["export const labelClass =\n \"tpl:block tpl:mb-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text-muted)]\";\n\nexport const inputClass =\n \"tpl:w-full tpl:h-10 tpl:px-3.5 tpl:py-1.5 tpl:text-sm tpl:border tpl:rounded-[var(--tpl-radius-sm)] tpl:shadow-xs tpl:text-[var(--tpl-text)] tpl:bg-[var(--tpl-bg)] tpl:border-[var(--tpl-border)] tpl:transition-all tpl:duration-[120ms] tpl:ease-[cubic-bezier(0.16,1,0.3,1)] tpl:outline-none focus:tpl:border-[var(--tpl-primary)] focus:tpl:shadow-[var(--tpl-ring)] placeholder:tpl:text-[var(--tpl-text-dim)]\";\n\nexport const inputGroupInputClass =\n \"tpl:w-full tpl:h-10 tpl:px-3.5 tpl:py-1.5 tpl:text-sm tpl:border tpl:rounded-l-[var(--tpl-radius-sm)] tpl:rounded-r-none tpl:border-r-0 tpl:shadow-xs tpl:text-[var(--tpl-text)] tpl:bg-[var(--tpl-bg)] tpl:border-[var(--tpl-border)] tpl:transition-all tpl:duration-[120ms] tpl:ease-[cubic-bezier(0.16,1,0.3,1)] tpl:outline-none focus:tpl:border-[var(--tpl-primary)] focus:tpl:shadow-[var(--tpl-ring)] placeholder:tpl:text-[var(--tpl-text-dim)]\";\n\nexport const inputSuffixClass =\n \"tpl:flex tpl:items-center tpl:px-2.5 tpl:text-xs tpl:border tpl:border-l-0 tpl:text-[var(--tpl-text-dim)] tpl:bg-[var(--tpl-bg-hover)] tpl:border-[var(--tpl-border)] tpl:rounded-r-[var(--tpl-radius-sm)]\";\n\nexport const colorInputClass =\n \"tpl:w-10 tpl:shrink-0 tpl:h-10 tpl:p-0.5 tpl:border tpl:rounded-[var(--tpl-radius-sm)] tpl:cursor-pointer tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]\";\n\nexport const colorTextClass =\n \"tpl:flex-1 tpl:h-10 tpl:px-3.5 tpl:py-1.5 tpl:text-xs tpl:font-mono tpl:border tpl:rounded-[var(--tpl-radius-sm)] tpl:shadow-xs tpl:text-[var(--tpl-text)] tpl:bg-[var(--tpl-bg)] tpl:border-[var(--tpl-border)] tpl:transition-all tpl:duration-[120ms] tpl:ease-[cubic-bezier(0.16,1,0.3,1)] tpl:outline-none focus:tpl:border-[var(--tpl-primary)] focus:tpl:shadow-[var(--tpl-ring)]\";\n\nexport const btnClass =\n \"tpl:flex-1 tpl:px-2.5 tpl:py-[7px] tpl:text-sm tpl:font-medium tpl:cursor-pointer tpl:flex tpl:items-center tpl:justify-center tpl:rounded-[var(--tpl-radius-sm)] tpl:text-[var(--tpl-text-muted)] tpl:bg-transparent tpl:transition-all tpl:duration-[120ms] tpl:ease-[cubic-bezier(0.16,1,0.3,1)] hover:tpl:bg-[var(--tpl-bg-hover)] hover:tpl:text-[var(--tpl-text)]\";\n\nexport const btnActiveClass =\n \"tpl:flex-1 tpl:px-2.5 tpl:py-[7px] tpl:text-sm tpl:font-medium tpl:cursor-pointer tpl:flex tpl:items-center tpl:justify-center tpl:rounded-[var(--tpl-radius-sm)] tpl:text-[var(--tpl-primary)] tpl:bg-[var(--tpl-primary-light)]\";\n\nexport const cardClass =\n \"tpl:rounded-[var(--tpl-radius)] tpl:bg-[var(--tpl-bg-elevated)] tpl:p-4 tpl:border tpl:border-[var(--tpl-border)] tpl:transition-colors tpl:duration-[120ms] tpl:ease-[cubic-bezier(0.16,1,0.3,1)] hover:tpl:bg-[var(--tpl-bg-hover)]\";\n\nexport const outlineBtnClass =\n \"tpl:px-3 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:border tpl:cursor-pointer tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:rounded-[var(--tpl-radius-sm)] tpl:text-[var(--tpl-primary)] tpl:bg-transparent tpl:border-[var(--tpl-primary)] tpl:transition-all tpl:duration-[120ms] tpl:ease-[cubic-bezier(0.16,1,0.3,1)] hover:tpl:bg-[var(--tpl-primary)] hover:tpl:text-[var(--tpl-bg)]\";\n\nexport const headerBtnClass =\n \"tpl-btn tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:px-3.5 tpl:py-2 tpl:text-sm tpl:font-medium tpl:whitespace-nowrap tpl:transition-all tpl:duration-[120ms] tpl:ease-[cubic-bezier(0.16,1,0.3,1)] hover:tpl:bg-[var(--tpl-primary)] hover:tpl:text-[var(--tpl-bg)] tpl:disabled:cursor-not-allowed tpl:disabled:opacity-50\";\n\n// Default color constants\nexport const DEFAULT_TEXT_COLOR = \"#000000\";\nexport const DEFAULT_BG_COLOR = \"#ffffff\";\nexport const DEFAULT_HIGHLIGHT_COLOR = \"#ffff00\";\nexport const DEFAULT_TABLE_ROW_BG = \"#f2f2f2\";\n"],"mappings":"AAkCA,IAAa,EAAqB,UAErB,EAA0B"}