@templatical/editor 0.0.6 → 0.1.1

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 (159) hide show
  1. package/LICENSE +56 -0
  2. package/README.md +69 -0
  3. package/dist/{AiChatSidebar-CNhSl_ty.js → AiChatSidebar-DgAjDWO1.js} +68 -68
  4. package/dist/{AiFeatureMenu-BFVsjUJY.js → AiFeatureMenu-j6oaiRVi.js} +25 -25
  5. package/dist/{CloudEditor-Bz5Xkxej.js → CloudEditor-yCOkIkZ-.js} +428 -437
  6. package/dist/{CollaboratorBar-D2Gu5Xj2.js → CollaboratorBar-CWVdp2Y6.js} +23 -23
  7. package/dist/CommentsSidebar-CSPHhbQH.js +439 -0
  8. package/dist/CountdownBlock-DK6P_RaQ.js +92 -0
  9. package/dist/CountdownToolbar-Dv-Sz4ui.js +210 -0
  10. package/dist/{DesignReferenceSidebar-u2tKSQK0.js → DesignReferenceSidebar-D7zfvux6.js} +58 -58
  11. package/dist/LoadingTrack-Cdz2SSq9.js +10 -0
  12. package/dist/ModuleBrowserModal-BLYuCZht.js +205 -0
  13. package/dist/ModulePreviewCanvas-CHYqP6K3.js +106 -0
  14. package/dist/NumberWithSuffix-D-5-AZc3.js +424 -0
  15. package/dist/{ParagraphEditor-CYrzYJO5.js → ParagraphEditor-DivLBNWv.js} +237 -236
  16. package/dist/{RichTextEditorContent-BeqlWlWB.js → RichTextEditorContent-G1lXgVJR.js} +42 -42
  17. package/dist/{SaveModuleDialog-Kde6X13X.js → SaveModuleDialog-DGVfiOmE.js} +29 -29
  18. package/dist/{SnapshotHistory-B3EfIcLW.js → SnapshotHistory-DM__MqSu.js} +38 -38
  19. package/dist/{TemplateScoringPanel-D2vCRGgx.js → TemplateScoringPanel-CW13Tlol.js} +80 -80
  20. package/dist/{TestEmailModal-Egk0DFDf.js → TestEmailModal-B8bYqWCY.js} +28 -28
  21. package/dist/TitleEditor-4Jrp3C4m.js +167 -0
  22. package/dist/{TplModal-BCruYWks.js → TplModal-BkoIz0oz.js} +14 -14
  23. package/dist/{_plugin-vue_export-helper-5TQrnOhO.js → _plugin-vue_export-helper-OO6pH1Dh.js} +11 -11
  24. package/dist/{blockTypeIcons-rW4BUUNC.js → blockTypeIcons-4AS3CvXn.js} +2 -2
  25. package/dist/cdn/chunks/{AiFeatureMenu-Dcbshcfu.js → AiFeatureMenu-BcHyzTQy.js} +4 -4
  26. package/dist/cdn/chunks/{AiFeatureMenu-Dcbshcfu.js.map → AiFeatureMenu-BcHyzTQy.js.map} +1 -1
  27. package/dist/cdn/chunks/{CloudEditor-Bca3RyBW.js → CloudEditor-TaEZq-YW.js} +179 -188
  28. package/dist/cdn/chunks/CloudEditor-TaEZq-YW.js.map +1 -0
  29. package/dist/cdn/chunks/{CollaboratorBar-sToKJfHi.js → CollaboratorBar-DbC5-3If.js} +4 -4
  30. package/dist/cdn/chunks/{CollaboratorBar-sToKJfHi.js.map → CollaboratorBar-DbC5-3If.js.map} +1 -1
  31. package/dist/cdn/chunks/CountdownBlock-CfPmCQ7j.js +93 -0
  32. package/dist/cdn/chunks/CountdownBlock-CfPmCQ7j.js.map +1 -0
  33. package/dist/cdn/chunks/CountdownToolbar-CB0EVxwN.js +212 -0
  34. package/dist/cdn/chunks/CountdownToolbar-CB0EVxwN.js.map +1 -0
  35. package/dist/cdn/chunks/{ModuleBrowserModal-BNhwXbWw.js → ModuleBrowserModal-Df2fp9dj.js} +7 -7
  36. package/dist/cdn/chunks/{ModuleBrowserModal-BNhwXbWw.js.map → ModuleBrowserModal-Df2fp9dj.js.map} +1 -1
  37. package/dist/cdn/chunks/{ModulePreviewCanvas-DylUylPU.js → ModulePreviewCanvas-Dw1OCpvV.js} +19 -19
  38. package/dist/cdn/chunks/{ModulePreviewCanvas-DylUylPU.js.map → ModulePreviewCanvas-Dw1OCpvV.js.map} +1 -1
  39. package/dist/cdn/chunks/NumberWithSuffix-BU6ycXyG.js +425 -0
  40. package/dist/cdn/chunks/NumberWithSuffix-BU6ycXyG.js.map +1 -0
  41. package/dist/cdn/chunks/{ParagraphEditor-BBw90y_p.js → ParagraphEditor-BMRNg_BX.js} +37 -37
  42. package/dist/cdn/chunks/{ParagraphEditor-BBw90y_p.js.map → ParagraphEditor-BMRNg_BX.js.map} +1 -1
  43. package/dist/cdn/chunks/{RichTextEditorContent-DvyIO3nR.js → RichTextEditorContent-BKYY1YMZ.js} +5 -5
  44. package/dist/cdn/chunks/{RichTextEditorContent-DvyIO3nR.js.map → RichTextEditorContent-BKYY1YMZ.js.map} +1 -1
  45. package/dist/cdn/chunks/{SaveModuleDialog-DvbSHvhF.js → SaveModuleDialog-D977Tg7t.js} +5 -5
  46. package/dist/cdn/chunks/{SaveModuleDialog-DvbSHvhF.js.map → SaveModuleDialog-D977Tg7t.js.map} +1 -1
  47. package/dist/cdn/chunks/{TitleEditor-tS3mgoVr.js → TitleEditor-q9IzNy38.js} +11 -11
  48. package/dist/cdn/chunks/{TitleEditor-tS3mgoVr.js.map → TitleEditor-q9IzNy38.js.map} +1 -1
  49. package/dist/cdn/chunks/{blockTypeIcons-DbnbyEQE.js → blockTypeIcons-L0fRc3qs.js} +3 -3
  50. package/dist/cdn/chunks/{blockTypeIcons-DbnbyEQE.js.map → blockTypeIcons-L0fRc3qs.js.map} +1 -1
  51. package/dist/cdn/chunks/{de-CgUR_S5I.js → de-3exf7MYE.js} +1 -1
  52. package/dist/cdn/chunks/{de-CgUR_S5I.js.map → de-3exf7MYE.js.map} +1 -1
  53. package/dist/cdn/chunks/{de-D8oDPhBD.js → de-C8LxVUsb.js} +1 -1
  54. package/dist/cdn/chunks/{de-D8oDPhBD.js.map → de-C8LxVUsb.js.map} +1 -1
  55. package/dist/cdn/chunks/{dist-BUmN5e4r.js → dist-D5g00M8N.js} +6 -2
  56. package/dist/cdn/chunks/dist-D5g00M8N.js.map +1 -0
  57. package/dist/cdn/chunks/{draggable-m78lz0gI.js → draggable-Bcb86AsV.js} +5 -5
  58. package/dist/cdn/chunks/draggable-Bcb86AsV.js.map +1 -0
  59. package/dist/cdn/chunks/{emojiData-CNNgvDqx.js → emojiData-DUHzsh4j.js} +1 -1
  60. package/dist/cdn/chunks/{emojiData-CNNgvDqx.js.map → emojiData-DUHzsh4j.js.map} +1 -1
  61. package/dist/cdn/chunks/{en-HseRPPeK.js → en-BoEycuqw.js} +1 -1
  62. package/dist/cdn/chunks/{en-HseRPPeK.js.map → en-BoEycuqw.js.map} +1 -1
  63. package/dist/cdn/chunks/{en-BBmfBDqY.js → en-KNPUKxYp.js} +1 -1
  64. package/dist/cdn/chunks/{en-BBmfBDqY.js.map → en-KNPUKxYp.js.map} +1 -1
  65. package/dist/cdn/chunks/{extensions-ClpY3m0W.js → extensions-BZ1POyiv.js} +11 -11
  66. package/dist/cdn/chunks/{extensions-ClpY3m0W.js.map → extensions-BZ1POyiv.js.map} +1 -1
  67. package/dist/cdn/chunks/{features-B5dGxWLi.js → features-Ccqmm6-M.js} +549 -627
  68. package/dist/cdn/chunks/features-Ccqmm6-M.js.map +1 -0
  69. package/dist/cdn/chunks/{icons-hflTyPmb.js → icons-x53__2GC.js} +8 -8
  70. package/dist/cdn/chunks/icons-x53__2GC.js.map +1 -0
  71. package/dist/cdn/chunks/{liquid.browser-BxyRVCKv.js → liquid.browser-CEMn-ZqL.js} +2 -2
  72. package/dist/cdn/chunks/liquid.browser-CEMn-ZqL.js.map +1 -0
  73. package/dist/cdn/chunks/{media-library-Dgy-V-JA.js → media-library-DUoQk-w7.js} +97 -97
  74. package/dist/cdn/chunks/media-library-DUoQk-w7.js.map +1 -0
  75. package/dist/cdn/chunks/{pusher-D-m2WSdL.js → pusher-DwSQn6BA.js} +2 -2
  76. package/dist/cdn/chunks/pusher-DwSQn6BA.js.map +1 -0
  77. package/dist/cdn/chunks/{src-TDwMmqm0.js → src-DskCIAr8.js} +8 -8
  78. package/dist/cdn/chunks/{src-TDwMmqm0.js.map → src-DskCIAr8.js.map} +1 -1
  79. package/dist/cdn/chunks/{styleConstants-DFe3I4Op.js → styleConstants-DP1VOca8.js} +1 -1
  80. package/dist/cdn/chunks/{styleConstants-DFe3I4Op.js.map → styleConstants-DP1VOca8.js.map} +1 -1
  81. package/dist/cdn/chunks/{styles-hCOCOR6K.js → styles-BIlpNe52.js} +622 -1238
  82. package/dist/cdn/chunks/styles-BIlpNe52.js.map +1 -0
  83. package/dist/cdn/chunks/{tiptap-C28NLMX8.js → tiptap-hPC_BgDO.js} +850 -826
  84. package/dist/cdn/chunks/tiptap-hPC_BgDO.js.map +1 -0
  85. package/dist/cdn/editor.css +1 -1
  86. package/dist/cdn/editor.js +92 -97
  87. package/dist/cdn/editor.js.map +1 -1
  88. package/dist/{check-B5S-C0bz.js → check-Bff5NzCh.js} +1 -1
  89. package/dist/{chevron-down-CjsV1T0W.js → chevron-down-Bbv4SJwx.js} +1 -1
  90. package/dist/{circle-alert-CVTmJHKW.js → circle-alert-Dpr8MgkR.js} +1 -1
  91. package/dist/{clock-CAjdSHBy.js → clock-raVPKfl4.js} +1 -1
  92. package/dist/{dist-DJrDTuRr.js → dist-BHgEdO-M.js} +1001 -983
  93. package/dist/dist-BibwE8Y0.js +5 -0
  94. package/dist/{dist-DPM-DFvh.js → dist-BnlZ_HwX.js} +340 -340
  95. package/dist/{dist-BTtKPcd2.js → dist-C9yhcxsf.js} +2 -2
  96. package/dist/{dist-COguaIvm.js → dist-CGffNO8z.js} +2 -2
  97. package/dist/dist-CfGpCUSx.js +5 -0
  98. package/dist/{dist-COOFiBFV.js → dist-Chd-H2S3.js} +5 -5
  99. package/dist/{dist-DfqLGwSF.js → dist-Cq0OFLMj.js} +2 -2
  100. package/dist/{dist-B4LTlrAn.js → dist-D42og5Sc.js} +191 -185
  101. package/dist/{dist-CBr-qhie.js → dist-Owxo48fF.js} +2 -2
  102. package/dist/{dist-Crqkuf-w.js → dist-UZ8UzVZ-.js} +15 -15
  103. package/dist/dist-n0PkFNGl.js +314 -0
  104. package/dist/{dist-DHYuVJ_7.js → dist-skgH9dyo.js} +2 -2
  105. package/dist/{extensions-C6xp_B7K.js → extensions-DQKaICBH.js} +81 -81
  106. package/dist/{image-up-vZa1Txr-.js → image-up-B1AEiHCh.js} +1 -1
  107. package/dist/index.d.ts +17 -6
  108. package/dist/{keys-C0MQRs8d.js → keys-CIw9mUI2.js} +1 -1
  109. package/dist/{liquid.browser-C02owkex.js → liquid.browser-Bm53dnK1.js} +1 -1
  110. package/dist/{loader-circle-DilFjHSk.js → loader-circle-BYeKJ3to.js} +1 -1
  111. package/dist/{message-circle-Dpcnc2oa.js → message-circle-PhNlI7e7.js} +1 -1
  112. package/dist/{refresh-cw-4r7rkHHX.js → refresh-cw-DhDYRBDd.js} +1 -1
  113. package/dist/{rolldown-runtime-gEudmnaM.js → rolldown-runtime-BZGGJVDF.js} +2 -5
  114. package/dist/{scan-line-684IxPQ0.js → scan-line-Bw8bauvt.js} +1 -1
  115. package/dist/{send-ChDw64yL.js → send-CJPSzbLO.js} +1 -1
  116. package/dist/{shield-check-9dhLdyST.js → shield-check-DdEvVYMH.js} +1 -1
  117. package/dist/{sparkles-Co9fkDcv.js → sparkles-DT_27AYs.js} +1 -1
  118. package/dist/style.css +2 -0
  119. package/dist/{styleConstants-RV3eYwkD.js → styleConstants-Dqz9z3aa.js} +6 -45
  120. package/dist/styles-tcwlvlEB.js +2942 -0
  121. package/dist/templatical-editor.js +114 -119
  122. package/dist/text-align-start-4Hx15GUf.js +43 -0
  123. package/dist/{trash-2-CZkMtjeC.js → trash-2-BY-xp5hg.js} +1 -1
  124. package/dist/{triangle-alert-Dvt51agD.js → triangle-alert-DG72vdb2.js} +1 -1
  125. package/dist/useEditorCore-DMH2QpUL.js +8946 -0
  126. package/dist/{useI18n-D6m7ZUgY.js → useI18n-B8CN2iWs.js} +4 -4
  127. package/dist/{useMergeTag-CSXcnFBc.js → useMergeTag-Dz_Dx2Jz.js} +3 -3
  128. package/dist/vue.runtime.esm-bundler-DryoQb-v.js +5775 -0
  129. package/dist/{x-CU2XZOkQ.js → x-D-7GkO6Z.js} +1 -1
  130. package/package.json +31 -15
  131. package/dist/CommentsSidebar-CTeEAZTj.js +0 -439
  132. package/dist/LoadingTrack--aUassFH.js +0 -10
  133. package/dist/ModuleBrowserModal-DNxODPlX.js +0 -205
  134. package/dist/ModulePreviewCanvas-DnGe1Y-2.js +0 -106
  135. package/dist/TitleEditor-DwUpo4gF.js +0 -167
  136. package/dist/cdn/chunks/CloudEditor-Bca3RyBW.js.map +0 -1
  137. package/dist/cdn/chunks/dist-BUmN5e4r.js.map +0 -1
  138. package/dist/cdn/chunks/draggable-m78lz0gI.js.map +0 -1
  139. package/dist/cdn/chunks/features-B5dGxWLi.js.map +0 -1
  140. package/dist/cdn/chunks/icons-hflTyPmb.js.map +0 -1
  141. package/dist/cdn/chunks/liquid.browser-BxyRVCKv.js.map +0 -1
  142. package/dist/cdn/chunks/media-library-Dgy-V-JA.js.map +0 -1
  143. package/dist/cdn/chunks/pusher-D-m2WSdL.js.map +0 -1
  144. package/dist/cdn/chunks/styles-hCOCOR6K.js.map +0 -1
  145. package/dist/cdn/chunks/tiptap-C28NLMX8.js.map +0 -1
  146. package/dist/dist-Ac4o1O4a.js +0 -314
  147. package/dist/dist-DEJZ9iAU.js +0 -5
  148. package/dist/dist-DmVOCJjI.js +0 -5
  149. package/dist/styles-nvxFh6L6.js +0 -3557
  150. package/dist/templatical-editor.css +0 -2
  151. package/dist/templatical-editor.umd.cjs +0 -178
  152. package/dist/useEditorCore-ColJh1ST.js +0 -5695
  153. /package/dist/cdn/chunks/{_rolldown_dynamic_import_helper-DMEI4TQ3.js → _rolldown_dynamic_import_helper-BRcA6nWq.js} +0 -0
  154. /package/dist/{de-Dh8ON-dm.js → de-CN0xu_Tp.js} +0 -0
  155. /package/dist/{emojiData-Qc8mH_zW.js → emojiData-CwKEDxVf.js} +0 -0
  156. /package/dist/{en-C7IShRSD.js → en-DXvHkaUF.js} +0 -0
  157. /package/dist/{formatRelativeTime-D8f6NR7i.js → formatRelativeTime-BSpx5DHC.js} +0 -0
  158. /package/dist/{readableTextColor-B809bF5J.js → readableTextColor-CYCxm1jQ.js} +0 -0
  159. /package/dist/{timeouts-CmBrLeZA.js → timeouts-BSGxjuUF.js} +0 -0
@@ -1,205 +0,0 @@
1
- import { T as e, b as t, f as n } from "./keys-C0MQRs8d.js";
2
- import { t as r } from "./useI18n-D6m7ZUgY.js";
3
- import "./useEditorCore-ColJh1ST.js";
4
- import { n as i } from "./_plugin-vue_export-helper-5TQrnOhO.js";
5
- import { n as a, t as o } from "./blockTypeIcons-rW4BUUNC.js";
6
- import { t as s } from "./trash-2-CZkMtjeC.js";
7
- import { t as ee } from "./x-CU2XZOkQ.js";
8
- import { t as te } from "./TplModal-BCruYWks.js";
9
- import { Fragment as c, computed as l, createBlock as u, createCommentVNode as ne, createElementBlock as d, createElementVNode as f, createVNode as p, defineAsyncComponent as re, defineComponent as m, normalizeStyle as ie, openBlock as h, ref as g, renderList as _, resolveDynamicComponent as ae, toDisplayString as v, unref as y, vModelSelect as oe, vModelText as se, watch as ce, withCtx as le, withDirectives as b, withModifiers as x } from "vue";
10
- var ue = i("search", [["path", {
11
- d: "m21 21-4.34-4.34",
12
- key: "14j7rj"
13
- }], ["circle", {
14
- cx: "11",
15
- cy: "11",
16
- r: "8",
17
- key: "4ej97u"
18
- }]]), de = {
19
- role: "dialog",
20
- "aria-modal": "true",
21
- "aria-labelledby": "tpl-module-browser-title",
22
- class: "tpl-scale-in tpl:mx-4 tpl:flex tpl:w-full tpl:max-w-[1000px] tpl:flex-col tpl:rounded-[var(--tpl-radius-lg)]",
23
- style: {
24
- "background-color": "var(--tpl-bg-elevated)",
25
- "box-shadow": "var(--tpl-shadow-xl)",
26
- "max-height": "90vh"
27
- }
28
- }, fe = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:px-5 tpl:py-4 tpl:border-[var(--tpl-border)]" }, pe = {
29
- id: "tpl-module-browser-title",
30
- class: "tpl:text-sm tpl:font-semibold tpl:text-[var(--tpl-text)]"
31
- }, me = ["aria-label"], S = { class: "tpl:flex tpl:min-h-0 tpl:flex-1 tpl:overflow-hidden" }, C = { class: "tpl:flex tpl:w-[300px] tpl:shrink-0 tpl:flex-col tpl:overflow-hidden" }, w = { class: "tpl:px-4 tpl:pt-4 tpl:pb-3" }, T = { class: "tpl:relative" }, E = ["placeholder"], D = { class: "tpl:flex-1 tpl:overflow-y-auto tpl:px-4 tpl:pb-4" }, O = {
32
- key: 0,
33
- class: "tpl:flex tpl:flex-col tpl:gap-1"
34
- }, k = ["aria-pressed", "onClick"], A = { class: "tpl:flex tpl:items-center tpl:gap-2" }, j = { class: "tpl:flex-1 tpl:truncate tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)]" }, M = { class: "tpl:shrink-0 tpl:rounded-full tpl:px-1.5 tpl:py-0.5 tpl:text-[10px] tpl:font-medium tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-muted)]" }, N = { class: "tpl:mt-1 tpl:flex tpl:items-center tpl:gap-1" }, P = {
35
- key: 0,
36
- class: "tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]"
37
- }, F = ["aria-label", "onClick"], I = [
38
- "aria-label",
39
- "title",
40
- "onClick"
41
- ], L = {
42
- key: 1,
43
- class: "tpl:flex tpl:flex-col tpl:items-center tpl:justify-center tpl:py-12"
44
- }, R = { class: "tpl:mt-2 tpl:text-xs tpl:text-[var(--tpl-text-dim)]" }, z = { class: "tpl:flex tpl:flex-1 tpl:flex-col tpl:overflow-hidden tpl:border-l tpl:border-[var(--tpl-border)]" }, he = {
45
- key: 0,
46
- class: "tpl:flex tpl:flex-1 tpl:flex-col tpl:overflow-hidden"
47
- }, ge = { class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4" }, _e = {
48
- key: 1,
49
- class: "tpl:flex tpl:flex-1 tpl:flex-col tpl:items-center tpl:justify-center tpl:px-4"
50
- }, ve = { class: "tpl:mt-2 tpl:text-center tpl:text-xs tpl:text-[var(--tpl-text-dim)]" }, ye = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-t tpl:px-5 tpl:py-3 tpl:border-[var(--tpl-border)]" }, be = { class: "tpl:flex tpl:items-center tpl:gap-2" }, xe = { class: "tpl:shrink-0 tpl:text-xs tpl:text-[var(--tpl-text-dim)]" }, Se = ["value"], Ce = { class: "tpl:flex tpl:gap-2" }, we = ["disabled"], B = /* @__PURE__ */ m({
51
- __name: "ModuleBrowserModal",
52
- props: { visible: { type: Boolean } },
53
- emits: ["close", "insert"],
54
- setup(i, { emit: m }) {
55
- let B = i, V = m, Te = re(() => import("./ModulePreviewCanvas-DnGe1Y-2.js")), { t: H } = r(), U = e(t, "ModuleBrowserModal"), W = e(n, "ModuleBrowserModal"), G = g(""), K = g(null), q = g(null), J = g("end"), Y = l(() => {
56
- let e = U.modules.value;
57
- if (!G.value) return e;
58
- let t = G.value.toLowerCase();
59
- return e.filter((e) => e.name.toLowerCase().includes(t));
60
- }), X = l(() => K.value ? U.modules.value.find((e) => e.id === K.value) ?? null : null), Ee = l(() => {
61
- let e = [{
62
- value: "beginning",
63
- label: H.modules.insertAtBeginning
64
- }], t = W.content.value.blocks;
65
- for (let n = 0; n < t.length; n++) {
66
- let r = t[n], i = r.type, a = H.blocks[i] ?? r.type;
67
- e.push({
68
- value: r.id,
69
- label: H.modules.insertAfterBlock.replace("{block}", `${a} ${n + 1}`)
70
- });
71
- }
72
- return e.push({
73
- value: "end",
74
- label: H.modules.insertAtEnd
75
- }), e;
76
- }), De = l(() => {
77
- if (J.value === "end") return;
78
- if (J.value === "beginning") return 0;
79
- let e = W.content.value.blocks.findIndex((e) => e.id === J.value);
80
- if (e !== -1) return e + 1;
81
- });
82
- ce(() => B.visible, (e) => {
83
- if (e) {
84
- G.value = "", K.value = null, q.value = null;
85
- let e = W.state.selectedBlockId;
86
- e ? J.value = W.content.value.blocks.findIndex((t) => t.id === e) === -1 ? "end" : e : J.value = "end";
87
- }
88
- });
89
- function Oe(e) {
90
- let t = [], n = /* @__PURE__ */ new Set();
91
- for (let r of e.content) if (!n.has(r.type) && o[r.type] && (n.add(r.type), t.push({
92
- type: r.type,
93
- icon: o[r.type]
94
- })), t.length >= 5) break;
95
- return t;
96
- }
97
- function Z(e) {
98
- let t = new Set(e.content.map((e) => e.type));
99
- return Math.max(0, t.size - 5);
100
- }
101
- async function ke(e) {
102
- try {
103
- await U.deleteModule(e), K.value === e && (K.value = null);
104
- } finally {
105
- q.value = null;
106
- }
107
- }
108
- function Q() {
109
- X.value && V("insert", X.value, De.value);
110
- }
111
- function $() {
112
- V("close");
113
- }
114
- function Ae(e) {
115
- e.key === "Escape" && $(), e.key === "Enter" && X.value && (e.preventDefault(), Q());
116
- }
117
- return (e, t) => (h(), u(te, {
118
- visible: i.visible,
119
- onClose: $,
120
- onKeydown: Ae
121
- }, {
122
- default: le(() => [f("div", de, [
123
- f("div", fe, [f("h3", pe, v(y(H).modules.browse), 1), f("button", {
124
- "aria-label": y(H).modules.close,
125
- class: "tpl:cursor-pointer tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:p-1 tpl:transition-colors tpl:duration-100 tpl:text-[var(--tpl-text-dim)]",
126
- onClick: $
127
- }, [p(y(ee), {
128
- size: 16,
129
- "stroke-width": 2
130
- })], 8, me)]),
131
- f("div", S, [f("div", C, [f("div", w, [f("div", T, [p(y(ue), {
132
- size: 14,
133
- "stroke-width": 2,
134
- class: "tpl:pointer-events-none tpl:absolute tpl:left-3 tpl:top-1/2 tpl:-translate-y-1/2 tpl:text-[var(--tpl-text-dim)]"
135
- }), b(f("input", {
136
- "onUpdate:modelValue": t[0] ||= (e) => G.value = e,
137
- type: "text",
138
- placeholder: y(H).modules.search,
139
- class: "tpl:h-9 tpl:w-full tpl:rounded-md tpl:border tpl:pl-9 tpl:pr-3 tpl:text-sm tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]"
140
- }, null, 8, E), [[se, G.value]])])]), f("div", D, [Y.value.length > 0 ? (h(), d("div", O, [(h(!0), d(c, null, _(Y.value, (e) => (h(), d("button", {
141
- key: e.id,
142
- type: "button",
143
- "aria-pressed": K.value === e.id,
144
- class: "tpl:group/card tpl:w-full tpl:cursor-pointer tpl:rounded-[var(--tpl-radius-md)] tpl:border tpl:bg-transparent tpl:px-3 tpl:py-2 tpl:text-left tpl:transition-all tpl:duration-[120ms]",
145
- style: ie({
146
- borderColor: K.value === e.id ? "var(--tpl-primary)" : "var(--tpl-border)",
147
- backgroundColor: K.value === e.id ? "var(--tpl-primary-light)" : "transparent"
148
- }),
149
- onClick: (t) => K.value = e.id
150
- }, [f("div", A, [f("span", j, v(e.name), 1), f("span", M, v(y(H).modules.blockCount.replace("{count}", String(e.content.length))), 1)]), f("div", N, [
151
- (h(!0), d(c, null, _(Oe(e), (e) => (h(), u(ae(e.icon), {
152
- key: e.type,
153
- size: 14,
154
- "stroke-width": 1.5,
155
- class: "tpl:text-[var(--tpl-text-dim)]"
156
- }))), 128)),
157
- Z(e) > 0 ? (h(), d("span", P, " +" + v(Z(e)), 1)) : ne("", !0),
158
- q.value === e.id ? (h(), d("button", {
159
- key: 1,
160
- "aria-label": y(H).modules.deleteConfirm,
161
- class: "tpl:ml-auto tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-2 tpl:py-0.5 tpl:text-[10px] tpl:font-medium tpl:transition-colors tpl:duration-100 tpl:border-[var(--tpl-danger)] tpl:text-[var(--tpl-danger)]",
162
- style: { "background-color": "transparent" },
163
- onClick: x((t) => ke(e.id), ["stop"])
164
- }, v(y(H).modules.deleteConfirm), 9, F)) : (h(), d("button", {
165
- key: 2,
166
- class: "tpl-module-delete-btn tpl:ml-auto tpl:cursor-pointer tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:p-0.5 tpl:transition-colors tpl:duration-100 tpl:text-[var(--tpl-text-dim)]",
167
- "aria-label": y(H).modules.delete,
168
- title: y(H).modules.delete,
169
- onClick: x((t) => q.value = e.id, ["stop"])
170
- }, [p(y(s), {
171
- size: 12,
172
- "stroke-width": 1.5
173
- })], 8, I))
174
- ])], 12, k))), 128))])) : (h(), d("div", L, [p(y(a), {
175
- size: 32,
176
- "stroke-width": 1,
177
- class: "tpl:text-[var(--tpl-text-dim)]"
178
- }), f("p", R, v(G.value ? y(H).modules.noModules : y(H).modules.noModulesHint), 1)]))])]), f("div", z, [X.value ? (h(), d("div", he, [f("div", ge, [p(y(Te), { blocks: X.value.content }, null, 8, ["blocks"])])])) : (h(), d("div", _e, [p(y(a), {
179
- size: 32,
180
- "stroke-width": 1,
181
- class: "tpl:text-[var(--tpl-text-dim)]"
182
- }), f("p", ve, v(y(H).modules.selectToPreview), 1)]))])]),
183
- f("div", ye, [f("div", be, [f("label", xe, v(y(H).modules.insertPosition), 1), b(f("select", {
184
- "onUpdate:modelValue": t[1] ||= (e) => J.value = e,
185
- class: "tpl:h-7 tpl:max-w-[220px] tpl:rounded-md tpl:border tpl:px-2 tpl:text-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]"
186
- }, [(h(!0), d(c, null, _(Ee.value, (e) => (h(), d("option", {
187
- key: e.value,
188
- value: e.value
189
- }, v(e.label), 9, Se))), 128))], 512), [[oe, J.value]])]), f("div", Ce, [f("button", {
190
- type: "button",
191
- class: "tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text)] tpl:bg-[var(--tpl-bg)]",
192
- onClick: $
193
- }, v(y(H).modules.close), 1), f("button", {
194
- type: "button",
195
- class: "tpl:cursor-pointer tpl:rounded-md tpl:px-3 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:hover:opacity-90 tpl:disabled:cursor-not-allowed tpl:disabled:opacity-50 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
196
- disabled: !X.value,
197
- onClick: Q
198
- }, v(y(H).modules.insert), 9, we)])])
199
- ])]),
200
- _: 1
201
- }, 8, ["visible"]));
202
- }
203
- });
204
- //#endregion
205
- export { B as default };
@@ -1,106 +0,0 @@
1
- import { o as e } from "./keys-C0MQRs8d.js";
2
- import { P as t, _ as n, a as r, f as i, g as a, h as o, i as s, m as c, n as l, p as u, r as d, u as f, v as p, y as m } from "./useEditorCore-ColJh1ST.js";
3
- import { Fragment as h, computed as g, createBlock as _, createElementBlock as v, createElementVNode as y, defineComponent as b, inject as x, normalizeStyle as S, openBlock as C, renderList as w, resolveComponent as T, resolveDynamicComponent as E, unref as D } from "vue";
4
- //#region src/components/blocks/PreviewSectionBlock.vue?vue&type=script&setup=true&lang.ts
5
- var O = { class: "tpl:w-full" }, k = { class: "tpl:flex tpl:gap-0" }, A = /* @__PURE__ */ b({
6
- name: "PreviewSectionBlock",
7
- __name: "PreviewSectionBlock",
8
- props: {
9
- block: {},
10
- viewport: {}
11
- },
12
- setup(b) {
13
- let A = {
14
- title: f,
15
- paragraph: c,
16
- image: a,
17
- video: l,
18
- button: t,
19
- divider: p,
20
- social: r,
21
- menu: o,
22
- table: d,
23
- spacer: s,
24
- html: n,
25
- custom: m
26
- }, j = b, M = x(e, null), N = g(() => {
27
- switch (j.block.columns) {
28
- case "2": return ["50%", "50%"];
29
- case "3": return [
30
- "33.33%",
31
- "33.33%",
32
- "33.33%"
33
- ];
34
- case "1-2": return ["33.33%", "66.67%"];
35
- case "2-1": return ["66.67%", "33.33%"];
36
- default: return ["100%"];
37
- }
38
- }), P = g(() => {
39
- let e = N.value.length, t = [...j.block.children];
40
- for (; t.length < e;) t.push([]);
41
- return t.slice(0, e);
42
- });
43
- function F(e) {
44
- return P.value[e] || [];
45
- }
46
- function I(e) {
47
- return u(e, M, A);
48
- }
49
- return (e, t) => {
50
- let n = T("PreviewSectionBlock", !0);
51
- return C(), v("div", O, [y("div", k, [(C(!0), v(h, null, w(P.value, (e, t) => (C(), v("div", {
52
- key: t,
53
- style: S({ width: N.value[t] })
54
- }, [(C(!0), v(h, null, w(F(t), (e) => (C(), v("div", {
55
- key: e.id,
56
- style: S(D(i)(e))
57
- }, [e.type === "section" ? (C(), _(n, {
58
- key: 0,
59
- block: e,
60
- viewport: "desktop"
61
- }, null, 8, ["block"])) : (C(), _(E(I(e)), {
62
- key: 1,
63
- block: e,
64
- viewport: "desktop"
65
- }, null, 8, ["block"]))], 4))), 128))], 4))), 128))])]);
66
- };
67
- }
68
- }), j = {
69
- class: "tpl:pointer-events-none tpl:mx-auto tpl:w-[600px] tpl:select-none tpl:rounded-lg",
70
- style: {
71
- "background-color": "var(--tpl-canvas-bg)",
72
- "box-shadow": "var(--tpl-shadow-sm)"
73
- }
74
- }, M = /* @__PURE__ */ b({
75
- __name: "ModulePreviewCanvas",
76
- props: { blocks: {} },
77
- setup(g) {
78
- let y = x(e), b = {
79
- section: A,
80
- title: f,
81
- paragraph: c,
82
- image: a,
83
- video: l,
84
- button: t,
85
- divider: p,
86
- social: r,
87
- menu: o,
88
- table: d,
89
- spacer: s,
90
- html: n,
91
- custom: m
92
- };
93
- function T(e) {
94
- return u(e, y, b);
95
- }
96
- return (e, t) => (C(), v("div", j, [(C(!0), v(h, null, w(g.blocks, (e) => (C(), v("div", {
97
- key: e.id,
98
- style: S(D(i)(e))
99
- }, [(C(), _(E(T(e)), {
100
- block: e,
101
- viewport: "desktop"
102
- }, null, 8, ["block"]))], 4))), 128))]));
103
- }
104
- });
105
- //#endregion
106
- export { M as default };
@@ -1,167 +0,0 @@
1
- import { S as e, w as t } from "./keys-C0MQRs8d.js";
2
- import { t as n } from "./useI18n-D6m7ZUgY.js";
3
- import { b as r } from "./useEditorCore-ColJh1ST.js";
4
- import { a as i, i as a, n as o, r as s, t as c } from "./RichTextEditorContent-BeqlWlWB.js";
5
- import { t as l } from "./loader-circle-DilFjHSk.js";
6
- import { t as u } from "./scan-line-684IxPQ0.js";
7
- import { Fragment as d, Teleport as f, createBlock as p, createCommentVNode as m, createElementBlock as h, createElementVNode as g, createTextVNode as _, createVNode as v, defineComponent as y, inject as b, isRef as x, normalizeClass as S, normalizeStyle as C, openBlock as w, toDisplayString as T, unref as E } from "vue";
8
- //#region src/components/blocks/TitleEditor.vue?vue&type=script&setup=true&lang.ts
9
- var D = { class: "tpl-text-editor-wrapper tpl:relative" }, O = ["data-tpl-theme", "aria-label"], k = ["aria-label", "title"], ee = ["aria-label", "title"], A = ["aria-label", "title"], j = {
10
- key: 0,
11
- class: "tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]"
12
- }, M = ["aria-label", "title"], N = {
13
- key: 1,
14
- class: "tpl:flex tpl:items-center tpl:gap-2 tpl:px-2 tpl:text-xs tpl:text-[var(--tpl-text-dim)]"
15
- }, P = /* @__PURE__ */ y({
16
- __name: "TitleEditor",
17
- props: {
18
- block: {},
19
- toolbarPosition: {}
20
- },
21
- emits: ["done"],
22
- setup(y, { emit: P }) {
23
- let F = y, I = P, L = b(e, null), R = b(t, null), { t: z } = n(), { editor: B, EditorContent: V, isLoading: H, initError: U, retry: W, showLinkDialog: G, linkUrl: K, linkDialogRef: q, mergeTagEnabled: J, openLinkDialog: Y, insertLink: X, removeLink: Z, closeLinkDialog: Q, handleLinkKeydown: te, handleAddMergeTag: $ } = r({
24
- blockId: () => F.block.id,
25
- blockContent: () => F.block.content,
26
- onDone: () => I("done"),
27
- editorName: "TitleEditor",
28
- async loadExtensions({ mergeTags: e, syntax: t }) {
29
- let [{ Editor: n, EditorContent: r }, { default: i }, { default: a }, { MergeTagNode: o, LogicMergeTagNode: s }] = await Promise.all([
30
- import("./dist-B4LTlrAn.js").then((e) => e.r),
31
- import("./dist-DPM-DFvh.js"),
32
- import("./dist-Crqkuf-w.js"),
33
- import("./extensions-C6xp_B7K.js")
34
- ]);
35
- return {
36
- TiptapEditor: n,
37
- EC: r,
38
- extensions: [
39
- i.configure({
40
- heading: !1,
41
- codeBlock: !1,
42
- blockquote: !1,
43
- horizontalRule: !1,
44
- bulletList: !1,
45
- orderedList: !1,
46
- listItem: !1,
47
- strike: !1
48
- }),
49
- a.configure({
50
- openOnClick: !1,
51
- HTMLAttributes: {
52
- target: "_blank",
53
- rel: "noopener noreferrer"
54
- }
55
- }),
56
- o.configure({
57
- mergeTags: e,
58
- syntax: t
59
- }),
60
- s.configure({ syntax: t })
61
- ]
62
- };
63
- }
64
- });
65
- return (e, t) => (w(), h("div", D, [
66
- (w(), p(f, { to: "body" }, [g("div", {
67
- "data-tpl-theme": E(R),
68
- role: "toolbar",
69
- "aria-label": E(z).titleEditor.toolbar,
70
- class: "tpl tpl-text-toolbar tpl:fixed tpl:z-popover tpl:flex tpl:items-center tpl:gap-1 tpl:rounded-lg tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-3 tpl:py-2 tpl:shadow-lg",
71
- style: C({
72
- ...E(L),
73
- top: `${y.toolbarPosition.top}px`,
74
- left: `${y.toolbarPosition.left}px`,
75
- transform: "translateY(-100%)"
76
- })
77
- }, [!E(H) && E(B) ? (w(), h(d, { key: 0 }, [
78
- g("button", {
79
- type: "button",
80
- class: S(["tpl-text-toolbar-btn", { "tpl-text-toolbar-btn--active": E(B)?.isActive("bold") }]),
81
- "aria-label": E(z).titleEditor.bold,
82
- title: E(z).titleEditor.bold,
83
- onClick: t[0] ||= (e) => E(B)?.chain().focus().toggleBold().run()
84
- }, [v(E(i), {
85
- size: 16,
86
- "stroke-width": 2.5
87
- })], 10, k),
88
- g("button", {
89
- type: "button",
90
- class: S(["tpl-text-toolbar-btn", { "tpl-text-toolbar-btn--active": E(B)?.isActive("italic") }]),
91
- "aria-label": E(z).titleEditor.italic,
92
- title: E(z).titleEditor.italic,
93
- onClick: t[1] ||= (e) => E(B)?.chain().focus().toggleItalic().run()
94
- }, [v(E(a), {
95
- size: 16,
96
- "stroke-width": 2
97
- })], 10, ee),
98
- t[6] ||= g("span", {
99
- class: "tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]",
100
- "aria-hidden": "true"
101
- }, null, -1),
102
- g("button", {
103
- type: "button",
104
- class: S(["tpl-text-toolbar-btn", { "tpl-text-toolbar-btn--active": E(B)?.isActive("link") }]),
105
- "aria-label": E(z).titleEditor.addLink,
106
- title: E(z).titleEditor.addLink,
107
- onClick: t[2] ||= (...e) => E(Y) && E(Y)(...e)
108
- }, [v(E(s), {
109
- size: 16,
110
- "stroke-width": 2
111
- })], 10, A),
112
- E(J) ? (w(), h("span", j)) : m("", !0),
113
- E(J) ? (w(), h("button", {
114
- key: 1,
115
- type: "button",
116
- class: "tpl:flex tpl:h-8 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded tpl:border-none tpl:bg-transparent tpl:px-2.5 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)] tpl:transition-all tpl:duration-150 tpl:hover:bg-[var(--tpl-bg-active)]",
117
- "aria-label": E(z).mergeTag.add,
118
- title: E(z).mergeTag.add,
119
- onClick: t[3] ||= (...e) => E($) && E($)(...e)
120
- }, [v(E(u), {
121
- size: 16,
122
- "stroke-width": 2
123
- }), _(" " + T(E(z).mergeTag.add), 1)], 8, M)) : m("", !0)
124
- ], 64)) : (w(), h("div", N, [v(E(l), {
125
- class: "tpl-spinner",
126
- size: 14,
127
- "stroke-width": 2
128
- }), _(" " + T(E(z).errors.editorLoading), 1)]))], 12, O)])),
129
- v(c, {
130
- editor: E(B),
131
- "editor-content": E(V),
132
- "is-loading": E(H),
133
- "init-error": E(U),
134
- onRetry: E(W)
135
- }, null, 8, [
136
- "editor",
137
- "editor-content",
138
- "is-loading",
139
- "init-error",
140
- "onRetry"
141
- ]),
142
- v(o, {
143
- visible: E(G),
144
- "is-editing-link": E(B)?.isActive("link") ?? !1,
145
- "dialog-ref": E(q),
146
- "onUpdate:dialogRef": t[4] ||= (e) => x(q) ? q.value = e : null,
147
- "link-url": E(K),
148
- "onUpdate:linkUrl": t[5] ||= (e) => x(K) ? K.value = e : null,
149
- onClose: E(Q),
150
- onInsert: E(X),
151
- onRemove: E(Z),
152
- onKeydown: E(te)
153
- }, null, 8, [
154
- "visible",
155
- "is-editing-link",
156
- "dialog-ref",
157
- "link-url",
158
- "onClose",
159
- "onInsert",
160
- "onRemove",
161
- "onKeydown"
162
- ])
163
- ]));
164
- }
165
- });
166
- //#endregion
167
- export { P as default };