@aswin.dev/editor 0.7.0 → 0.7.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 (182) hide show
  1. package/LICENSE +56 -0
  2. package/README.md +3 -3
  3. package/dist/{AccessibilityPanel-CvQGLdu6.js → AccessibilityPanel-EmQ19wiS.js} +37 -37
  4. package/dist/{AiChatSidebar-B3SJIKG_.js → AiChatSidebar-DeB0w_32.js} +67 -81
  5. package/dist/{AiFeatureMenu-BLLKoOos.js → AiFeatureMenu-DoLD5Cde.js} +22 -22
  6. package/dist/{BlockA11yBadge-CXDLqkcJ.js → BlockA11yBadge-DkNbDvJA.js} +12 -12
  7. package/dist/CloudEditor-zo9PjjvY.js +1214 -0
  8. package/dist/{CollaboratorBar-DuPYW5iF.js → CollaboratorBar-BsXMY-8e.js} +21 -21
  9. package/dist/CommentsSidebar-DIWIa4rS.js +436 -0
  10. package/dist/CountdownBlock-BCi7-DAM.js +92 -0
  11. package/dist/CountdownToolbar-BuS8p5ju.js +210 -0
  12. package/dist/{DesignReferenceSidebar-B8V_F2yF.js → DesignReferenceSidebar-RDlnhL-6.js} +58 -58
  13. package/dist/{LoadingTrack-B0CWFHXQ.js → LoadingTrack-BJ59h9ok.js} +2 -2
  14. package/dist/ModuleBrowserModal-b7HbpByz.js +206 -0
  15. package/dist/ModulePreviewCanvas-D__YlOLS.js +108 -0
  16. package/dist/{NumberWithSuffix-DkXUez9t.js → NumberWithSuffix-Ca3vNY84.js} +87 -87
  17. package/dist/{ParagraphEditor-D75wl3BX.js → ParagraphEditor-B1aYPO-6.js} +182 -182
  18. package/dist/{RichTextEditorContent-DYkIauIk.js → RichTextEditorContent-BmEVMrkJ.js} +38 -38
  19. package/dist/{SaveModuleDialog-FZ9lxY7_.js → SaveModuleDialog-ClovqI6h.js} +28 -28
  20. package/dist/{SnapshotHistory-BR3eV120.js → SnapshotHistory-DoqtH0cw.js} +45 -50
  21. package/dist/{TemplateScoringPanel-4GTNHej5.js → TemplateScoringPanel-DQv2ZAiL.js} +75 -75
  22. package/dist/{TestEmailModal--ue5w9fT.js → TestEmailModal-iIeYJYsj.js} +28 -28
  23. package/dist/{TitleEditor-fStSADI-.js → TitleEditor-CTDIwRF_.js} +68 -68
  24. package/dist/{TplModal-BwSfxIHf.js → TplModal-CBq1J1pG.js} +14 -14
  25. package/dist/{accessibility-e8JYu_zd.js → accessibility-BU09xZrQ.js} +1 -1
  26. package/dist/{blockTypeIcons-BcTrDjmH.js → blockTypeIcons-QkC6f5UE.js} +19 -5
  27. package/dist/bundle-stats.json +7 -7
  28. package/dist/cdn/chunks/{AccessibilityPanel-B6DOjojm.js → AccessibilityPanel-BeU8nz7A.js} +28 -28
  29. package/dist/cdn/chunks/{AccessibilityPanel-B6DOjojm.js.map → AccessibilityPanel-BeU8nz7A.js.map} +1 -1
  30. package/dist/cdn/chunks/{AiFeatureMenu-qEdB2fZJ.js → AiFeatureMenu-B2mhscyP.js} +21 -21
  31. package/dist/cdn/chunks/AiFeatureMenu-B2mhscyP.js.map +1 -0
  32. package/dist/cdn/chunks/{BlockA11yBadge-DcEZftf6.js → BlockA11yBadge-C4g77gF0.js} +11 -11
  33. package/dist/cdn/chunks/{BlockA11yBadge-DcEZftf6.js.map → BlockA11yBadge-C4g77gF0.js.map} +1 -1
  34. package/dist/{CloudEditor-BCz1ZTYC.js → cdn/chunks/CloudEditor-Btyr0b0_.js} +486 -475
  35. package/dist/cdn/chunks/CloudEditor-Btyr0b0_.js.map +1 -0
  36. package/dist/cdn/chunks/{CollaboratorBar--nO7TX6b.js → CollaboratorBar-YBiIjiRh.js} +15 -15
  37. package/dist/cdn/chunks/CollaboratorBar-YBiIjiRh.js.map +1 -0
  38. package/dist/cdn/chunks/CountdownBlock-B06UZoWe.js +93 -0
  39. package/dist/cdn/chunks/CountdownBlock-B06UZoWe.js.map +1 -0
  40. package/dist/cdn/chunks/CountdownToolbar-C9XZr33O.js +212 -0
  41. package/dist/cdn/chunks/CountdownToolbar-C9XZr33O.js.map +1 -0
  42. package/dist/{ModuleBrowserModal-DrUFMTDx.js → cdn/chunks/ModuleBrowserModal-C2CDWKW6.js} +51 -62
  43. package/dist/cdn/chunks/ModuleBrowserModal-C2CDWKW6.js.map +1 -0
  44. package/dist/cdn/chunks/ModulePreviewCanvas-Drt8Evai.js +109 -0
  45. package/dist/cdn/chunks/ModulePreviewCanvas-Drt8Evai.js.map +1 -0
  46. package/dist/cdn/chunks/{NumberWithSuffix-CE3NrZhH.js → NumberWithSuffix-Ty1bp9vB.js} +64 -64
  47. package/dist/cdn/chunks/{NumberWithSuffix-CE3NrZhH.js.map → NumberWithSuffix-Ty1bp9vB.js.map} +1 -1
  48. package/dist/cdn/chunks/{ParagraphEditor-B6Ygu-Mq.js → ParagraphEditor-BA1WbHI7.js} +188 -188
  49. package/dist/cdn/chunks/{ParagraphEditor-B6Ygu-Mq.js.map → ParagraphEditor-BA1WbHI7.js.map} +1 -1
  50. package/dist/cdn/chunks/{RichTextEditorContent-DL_y2SrR.js → RichTextEditorContent-BtWCA_Oc.js} +30 -30
  51. package/dist/cdn/chunks/{RichTextEditorContent-DL_y2SrR.js.map → RichTextEditorContent-BtWCA_Oc.js.map} +1 -1
  52. package/dist/cdn/chunks/{SaveModuleDialog-B0TnO_o9.js → SaveModuleDialog-AwL0tkCV.js} +21 -21
  53. package/dist/cdn/chunks/SaveModuleDialog-AwL0tkCV.js.map +1 -0
  54. package/dist/cdn/chunks/{TitleEditor-BHpfxvwy.js → TitleEditor-DbSyeixS.js} +65 -65
  55. package/dist/cdn/chunks/TitleEditor-DbSyeixS.js.map +1 -0
  56. package/dist/cdn/chunks/blockTypeIcons-pQIkxJzc.js +23 -0
  57. package/dist/cdn/chunks/blockTypeIcons-pQIkxJzc.js.map +1 -0
  58. package/dist/cdn/chunks/{de-D8CnZxV9.js → de-_tooy3Q8.js} +250 -2
  59. package/dist/cdn/chunks/de-_tooy3Q8.js.map +1 -0
  60. package/dist/cdn/chunks/{draggable-Bcb86AsV.js → draggable-C-1_gch3.js} +2 -2
  61. package/dist/cdn/chunks/{draggable-Bcb86AsV.js.map → draggable-C-1_gch3.js.map} +1 -1
  62. package/dist/cdn/chunks/{en-8FHaQv4V.js → en-CNqLoIm9.js} +250 -2
  63. package/dist/cdn/chunks/en-CNqLoIm9.js.map +1 -0
  64. package/dist/cdn/chunks/{extensions-DIxF31tA.js → extensions-BVKQw_sp.js} +107 -107
  65. package/dist/cdn/chunks/extensions-BVKQw_sp.js.map +1 -0
  66. package/dist/cdn/chunks/{features-DEMb13KS.js → features-DIBEo4xl.js} +3388 -2289
  67. package/dist/cdn/chunks/features-DIBEo4xl.js.map +1 -0
  68. package/dist/cdn/chunks/{icons-CsLTcirh.js → icons-C1Gg-ov-.js} +346 -54
  69. package/dist/cdn/chunks/icons-C1Gg-ov-.js.map +1 -0
  70. package/dist/cdn/chunks/{media-library-CVaNvhpM.js → media-library-BTF_Ko70.js} +985 -985
  71. package/dist/cdn/chunks/media-library-BTF_Ko70.js.map +1 -0
  72. package/dist/cdn/chunks/{quality-BaBfc54_.js → quality-C5AmotmP.js} +312 -312
  73. package/dist/cdn/chunks/quality-C5AmotmP.js.map +1 -0
  74. package/dist/cdn/chunks/{renderer-CUxvx7ro.js → renderer-D0L44Vlp.js} +236 -142
  75. package/dist/cdn/chunks/renderer-D0L44Vlp.js.map +1 -0
  76. package/dist/cdn/chunks/{src-CRaqN-p8.js → src-RKexlYjA.js} +161 -161
  77. package/dist/cdn/chunks/src-RKexlYjA.js.map +1 -0
  78. package/dist/cdn/chunks/styleConstants-PgmvNBzQ.js +57 -0
  79. package/dist/cdn/chunks/styleConstants-PgmvNBzQ.js.map +1 -0
  80. package/dist/cdn/chunks/styles-CQR6ed13.js +4976 -0
  81. package/dist/cdn/chunks/styles-CQR6ed13.js.map +1 -0
  82. package/dist/cdn/chunks/{tiptap-ZhwKyFp7.js → tiptap-CDzAbF2j.js} +43 -43
  83. package/dist/cdn/chunks/{tiptap-ZhwKyFp7.js.map → tiptap-CDzAbF2j.js.map} +1 -1
  84. package/dist/cdn/editor.css +1 -1
  85. package/dist/cdn/editor.js +211 -123
  86. package/dist/cdn/editor.js.map +1 -1
  87. package/dist/{check-Da05j8yl.js → check-DJrpDKO_.js} +1 -1
  88. package/dist/{chevron-down-R2uY34iD.js → chevron-down-C5oBUhT8.js} +1 -1
  89. package/dist/chevron-right-BqCptpdp.js +10 -0
  90. package/dist/{circle-alert-DZuGWPX-.js → circle-alert-ZQQc98HC.js} +1 -1
  91. package/dist/{clock-CRp2sIub.js → clock-ik2pRJKG.js} +1 -1
  92. package/dist/{cloud-DEk_b4CR.js → cloud-DJG4tb4_.js} +485 -427
  93. package/dist/{createLucideIcon-C3pa2siy.js → createLucideIcon-ClREiSx3.js} +6 -6
  94. package/dist/{de-Brqvgr43.js → de-2LEvILeZ.js} +249 -1
  95. package/dist/{dist-Cp0zXPAD.js → dist-BHAeXaUY.js} +1 -1
  96. package/dist/{dist-BaQIYPsn.js → dist-BSJvAvH3.js} +1 -1
  97. package/dist/{dist-wzMIGj-D.js → dist-BeFnymxK.js} +1 -1
  98. package/dist/dist-Bmir0gYb.js +1167 -0
  99. package/dist/{dist-DDJIWTRY.js → dist-BvPgo-UK.js} +1 -1
  100. package/dist/{dist-BFawx6IS.js → dist-CPVBKMmd.js} +51 -51
  101. package/dist/dist-CivF9P8b.js +382 -0
  102. package/dist/{dist-D6uC2xhi.js → dist-Df4ie7vZ.js} +1 -1
  103. package/dist/{dist-us-RpCWN.js → dist-DxOoemkW.js} +1 -1
  104. package/dist/{dist-KoBJjK1G.js → dist-HEQ52gTJ.js} +1 -1
  105. package/dist/{dist-DjviJBCi.js → dist-b-XUqAoF.js} +1 -1
  106. package/dist/{dist-D90y8dvT.js → dist-kZfaVUpW.js} +3 -3
  107. package/dist/{dist-aRzjfSRN.js → dist-wfAedlzi.js} +1 -1
  108. package/dist/{en-WDVp87TE.js → en-D2RU2Poj.js} +249 -1
  109. package/dist/{extensions-CUcl9Ok4.js → extensions-BQ1xXx3d.js} +103 -103
  110. package/dist/{image-up-MBZKKg9p.js → image-up-DT7gcJLN.js} +1 -1
  111. package/dist/index.d.ts +102 -14
  112. package/dist/{info-CJEC7piy.js → info-BSPGcsSM.js} +1 -1
  113. package/dist/keys-CvX8D-8C.js +10 -0
  114. package/dist/{loader-circle-DsY5Yg33.js → loader-circle-Balo8p3d.js} +1 -1
  115. package/dist/{message-circle-yElBbR2C.js → message-circle-B39qAHxs.js} +1 -1
  116. package/dist/pencil-BZJPNYWR.js +10 -0
  117. package/dist/{refresh-cw-CE_AGtn8.js → refresh-cw-DwDqGUM0.js} +1 -1
  118. package/dist/{scan-line-D0vcUekt.js → scan-line-DlghmhNf.js} +1 -1
  119. package/dist/{send-DH4oDQqC.js → send-DDdhIRj8.js} +1 -1
  120. package/dist/{shield-check-CfJgs2Hd.js → shield-check-OSQ-JVTX.js} +1 -1
  121. package/dist/{sparkles-CvRXGqFs.js → sparkles-BN4a-CoF.js} +1 -1
  122. package/dist/style.css +1 -1
  123. package/dist/styleConstants-wWRbcuEK.js +55 -0
  124. package/dist/styles-CavWjvol.js +5487 -0
  125. package/dist/templatical-editor.js +211 -119
  126. package/dist/{text-align-start-BT9VUDxK.js → text-align-start-D1weisjS.js} +1 -1
  127. package/dist/{trash-2-DbP2Y6t2.js → trash-2-CMWvQ5KX.js} +1 -1
  128. package/dist/{triangle-alert-aOXceTSe.js → triangle-alert-DyidRNX_.js} +1 -1
  129. package/dist/undo-2-Cg8I7obC.js +16 -0
  130. package/dist/{useCloudI18n-BuIwR6OE.js → useCloudI18n-BTTNBk5i.js} +2 -2
  131. package/dist/{useEditorCore-C6ost42Q.js → useEditorCore-BGnzcT7p.js} +2424 -2249
  132. package/dist/{useI18n-lb2DHDiu.js → useI18n-C2xQZ6K9.js} +2 -2
  133. package/dist/{useMergeTag-CBwKnnNB.js → useMergeTag-CfuZq2fF.js} +4 -4
  134. package/dist/{vue.runtime.esm-bundler-DpvJL-nX.js → vue.runtime.esm-bundler-CjauPXjj.js} +1 -1
  135. package/dist/{x-u2oVmjN_.js → x-CgIhNcT9.js} +1 -1
  136. package/package.json +15 -15
  137. package/dist/CommentsSidebar-B1pvJdqF.js +0 -441
  138. package/dist/CountdownBlock-BNSj1jvJ.js +0 -92
  139. package/dist/CountdownToolbar-ClJr2GzL.js +0 -210
  140. package/dist/ModulePreviewCanvas-CHdOwV_4.js +0 -106
  141. package/dist/cdn/chunks/AiFeatureMenu-qEdB2fZJ.js.map +0 -1
  142. package/dist/cdn/chunks/CloudEditor-D2GsEC_n.js +0 -1143
  143. package/dist/cdn/chunks/CloudEditor-D2GsEC_n.js.map +0 -1
  144. package/dist/cdn/chunks/CollaboratorBar--nO7TX6b.js.map +0 -1
  145. package/dist/cdn/chunks/CountdownBlock-5YdT1uUu.js +0 -93
  146. package/dist/cdn/chunks/CountdownBlock-5YdT1uUu.js.map +0 -1
  147. package/dist/cdn/chunks/CountdownToolbar-DXPXrbAA.js +0 -212
  148. package/dist/cdn/chunks/CountdownToolbar-DXPXrbAA.js.map +0 -1
  149. package/dist/cdn/chunks/ModuleBrowserModal-DxoPp81s.js +0 -195
  150. package/dist/cdn/chunks/ModuleBrowserModal-DxoPp81s.js.map +0 -1
  151. package/dist/cdn/chunks/ModulePreviewCanvas-CoLdb4ar.js +0 -107
  152. package/dist/cdn/chunks/ModulePreviewCanvas-CoLdb4ar.js.map +0 -1
  153. package/dist/cdn/chunks/SaveModuleDialog-B0TnO_o9.js.map +0 -1
  154. package/dist/cdn/chunks/TitleEditor-BHpfxvwy.js.map +0 -1
  155. package/dist/cdn/chunks/blockTypeIcons-BzzY9_kA.js +0 -22
  156. package/dist/cdn/chunks/blockTypeIcons-BzzY9_kA.js.map +0 -1
  157. package/dist/cdn/chunks/de-D8CnZxV9.js.map +0 -1
  158. package/dist/cdn/chunks/en-8FHaQv4V.js.map +0 -1
  159. package/dist/cdn/chunks/extensions-DIxF31tA.js.map +0 -1
  160. package/dist/cdn/chunks/features-DEMb13KS.js.map +0 -1
  161. package/dist/cdn/chunks/icons-CsLTcirh.js.map +0 -1
  162. package/dist/cdn/chunks/media-library-CVaNvhpM.js.map +0 -1
  163. package/dist/cdn/chunks/quality-BaBfc54_.js.map +0 -1
  164. package/dist/cdn/chunks/renderer-CUxvx7ro.js.map +0 -1
  165. package/dist/cdn/chunks/src-CRaqN-p8.js.map +0 -1
  166. package/dist/cdn/chunks/styleConstants-DP1VOca8.js +0 -57
  167. package/dist/cdn/chunks/styleConstants-DP1VOca8.js.map +0 -1
  168. package/dist/cdn/chunks/styles-BHJULjNR.js +0 -2947
  169. package/dist/cdn/chunks/styles-BHJULjNR.js.map +0 -1
  170. package/dist/dist-B1IR0bpH.js +0 -326
  171. package/dist/dist-DJmnUmW9.js +0 -362
  172. package/dist/keys-ciNfSSGj.js +0 -10
  173. package/dist/styleConstants-fWzlIIwN.js +0 -55
  174. package/dist/styles-DEXEkBvg.js +0 -3176
  175. /package/dist/{_plugin-vue_export-helper-B0hnzhyu.js → _plugin-vue_export-helper-Bwh4ceeO.js} +0 -0
  176. /package/dist/{de-DCaaCE5s.js → de-D2npYjrZ.js} +0 -0
  177. /package/dist/{dist-iLBdeBDR.js → dist-DvHLtWVP.js} +0 -0
  178. /package/dist/{emojiData-PQyVa4bU.js → emojiData-DvQBBzmO.js} +0 -0
  179. /package/dist/{en-DXCyK4-X.js → en-ib-4h3_o.js} +0 -0
  180. /package/dist/{formatRelativeTime-BOEf47hq.js → formatRelativeTime-CFDZnEIs.js} +0 -0
  181. /package/dist/{liquid.browser-CdMv1BTn.js → liquid.browser-7Rv0QDiO.js} +0 -0
  182. /package/dist/{readableTextColor-CY3SiRnt.js → readableTextColor-C_9OpzBw.js} +0 -0
package/LICENSE ADDED
@@ -0,0 +1,56 @@
1
+ Functional Source License, Version 1.1, MIT Future License
2
+
3
+ Copyright (c) 2026-present Templatical
4
+
5
+ ## Terms and Conditions
6
+
7
+ ### Licensor ("We")
8
+
9
+ Templatical
10
+
11
+ ### The Software
12
+
13
+ Templatical Email Editor — the visual drag-and-drop email template editor
14
+ (@aswin.dev/core, @aswin.dev/editor, and @aswin.dev/media-library
15
+ packages).
16
+
17
+ ### Grant of Rights
18
+
19
+ Subject to the terms and conditions of this License, We hereby grant You a
20
+ non-exclusive, worldwide, non-transferable license to use, copy, modify,
21
+ create derivative works, and redistribute the Software, subject to the
22
+ following conditions:
23
+
24
+ ### Permitted Uses
25
+
26
+ You may use the Software for any purpose, including commercial purposes,
27
+ **provided that** you do not offer the Software, or a substantially similar
28
+ product built using the Software, as a hosted or managed service that
29
+ competes with Templatical's commercial offerings.
30
+
31
+ ### Change Date
32
+
33
+ Two (2) years from the date of each release of the Software.
34
+
35
+ ### Change License
36
+
37
+ MIT License
38
+
39
+ On the Change Date, the above copyright notice and this permission notice
40
+ shall be replaced with the MIT License, and the Software will be available
41
+ under the MIT License for all purposes without restriction.
42
+
43
+ ### Notices
44
+
45
+ You must retain this license notice in all copies or substantial portions
46
+ of the Software.
47
+
48
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
49
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
50
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
51
+
52
+ ---
53
+
54
+ Note: The @aswin.dev/types, @aswin.dev/renderer, and
55
+ @aswin.dev/import-beefree packages are licensed separately under the MIT
56
+ License. See LICENSE-MIT for those packages' terms.
package/README.md CHANGED
@@ -20,13 +20,13 @@ The visual editor for [Templatical](https://github.com/templatical/sdk) — an o
20
20
  npm install @aswin.dev/editor
21
21
  ```
22
22
 
23
- `@templatical/renderer` is an optional peer — install it only if you need to convert templates to MJML. The two common cases are:
23
+ `@aswin.dev/renderer` is an optional peer — install it only if you need to convert templates to MJML. The two common cases are:
24
24
 
25
25
  - **In the browser, alongside the editor**, when you call `editor.toMjml()` to export from the user's session.
26
26
  - **In Node.js (or another runtime)**, when you only have stored template JSON and want to convert it to MJML server-side. You don't need the editor for this — install just the renderer.
27
27
 
28
28
  ```bash
29
- npm install @templatical/renderer
29
+ npm install @aswin.dev/renderer
30
30
  ```
31
31
 
32
32
  If you call `editor.toMjml()` without the renderer installed, it throws a clear error naming the missing package.
@@ -44,7 +44,7 @@ const editor = await init({
44
44
  },
45
45
  });
46
46
 
47
- // Render to MJML when sending email — async; requires @templatical/renderer
47
+ // Render to MJML when sending email — async; requires @aswin.dev/renderer
48
48
  const mjml = await editor.toMjml();
49
49
 
50
50
  // Always unmount when removing the editor (cleans up listeners + DOM)
@@ -1,11 +1,11 @@
1
- import { Dt as e, E as t, L as n, M as r, Mt as i, P as a, S as o, _ as s, b as c, d as l, g as u, h as d, it as f, m as p, p as m, y as h } from "./vue.runtime.esm-bundler-DpvJL-nX.js";
2
- import { m as g, t as _ } from "./keys-ciNfSSGj.js";
3
- import { t as v } from "./useI18n-lb2DHDiu.js";
4
- import { t as y } from "./createLucideIcon-C3pa2siy.js";
5
- import { t as b } from "./accessibility-e8JYu_zd.js";
6
- import { t as x } from "./circle-alert-DZuGWPX-.js";
7
- import { t as S } from "./info-CJEC7piy.js";
8
- import { t as C } from "./triangle-alert-aOXceTSe.js";
1
+ import { At as e, C as t, D as n, F as r, Ft as i, N as a, R as o, _ as s, b as c, f as l, g as u, h as d, m as f, st as p, v as m, x as h } from "./vue.runtime.esm-bundler-CjauPXjj.js";
2
+ import { m as g, t as _ } from "./keys-CvX8D-8C.js";
3
+ import { t as v } from "./useI18n-C2xQZ6K9.js";
4
+ import { t as y } from "./createLucideIcon-ClREiSx3.js";
5
+ import { t as b } from "./accessibility-BU09xZrQ.js";
6
+ import { t as x } from "./circle-alert-ZQQc98HC.js";
7
+ import { t as S } from "./info-BSPGcsSM.js";
8
+ import { t as C } from "./triangle-alert-DyidRNX_.js";
9
9
  var w = y("arrow-right", [["path", {
10
10
  d: "M5 12h14",
11
11
  key: "1ays0h"
@@ -24,84 +24,84 @@ var w = y("arrow-right", [["path", {
24
24
  }, M = { class: "tpl:ml-auto tpl:font-normal tpl:opacity-70" }, N = {
25
25
  key: 1,
26
26
  class: "tpl:m-0 tpl:mb-3 tpl:flex tpl:list-none tpl:flex-col tpl:gap-2 tpl:p-0"
27
- }, P = { class: "tpl:m-0 tpl:mb-2 tpl:text-xs tpl:text-[var(--tpl-text)]" }, F = { class: "tpl:m-0 tpl:mb-2 tpl:font-mono tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, I = { class: "tpl:flex tpl:gap-1.5" }, L = ["onClick"], R = ["title", "onClick"], z = /* @__PURE__ */ o({
27
+ }, P = { class: "tpl:m-0 tpl:mb-2 tpl:text-xs tpl:text-[var(--tpl-text)]" }, F = { class: "tpl:m-0 tpl:mb-2 tpl:font-mono tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, I = { class: "tpl:flex tpl:gap-1.5" }, L = ["onClick"], R = ["title", "onClick"], z = /* @__PURE__ */ t({
28
28
  __name: "AccessibilityPanel",
29
- setup(o) {
30
- let { t: y, format: z } = v(), B = t(_, null), V = t(g, null), H = m(() => (B?.issues.value ?? []).filter((e) => e.severity === "error")), U = m(() => (B?.issues.value ?? []).filter((e) => e.severity === "warning")), W = m(() => (B?.issues.value ?? []).filter((e) => e.severity === "info")), G = m(() => H.value.length + U.value.length + W.value.length);
29
+ setup(t) {
30
+ let { t: y, format: z } = v(), B = n(_, null), V = n(g, null), H = f(() => (B?.issues.value ?? []).filter((e) => e.severity === "error")), U = f(() => (B?.issues.value ?? []).filter((e) => e.severity === "warning")), W = f(() => (B?.issues.value ?? []).filter((e) => e.severity === "info")), G = f(() => H.value.length + U.value.length + W.value.length);
31
31
  function K(e) {
32
32
  V && e.blockId && V.selectBlock(e.blockId);
33
33
  }
34
34
  function q(e) {
35
35
  B?.applyFix(e);
36
36
  }
37
- return (t, o) => (r(), s("div", E, [p("header", D, [
38
- c(f(b), {
37
+ return (t, n) => (a(), m("div", E, [d("header", D, [
38
+ h(p(b), {
39
39
  size: 16,
40
40
  "stroke-width": 1.5
41
41
  }),
42
- p("h3", O, i(f(y).accessibility.panelTitle), 1),
43
- G.value > 0 ? (r(), s("span", {
42
+ d("h3", O, i(p(y).accessibility.panelTitle), 1),
43
+ G.value > 0 ? (a(), m("span", {
44
44
  key: 0,
45
45
  class: "tpl:ml-auto tpl:rounded-full tpl:bg-[var(--tpl-bg-hover)] tpl:px-2 tpl:py-0.5 tpl:text-[11px] tpl:text-[var(--tpl-text-muted)]",
46
- title: f(z)(f(y).accessibility.issueCountTooltip, { count: G.value })
47
- }, i(G.value), 9, k)) : u("", !0)
48
- ]), !f(B) || f(B).unavailable.value ? (r(), s("div", A)) : G.value === 0 ? (r(), s("div", j, i(f(y).accessibility.emptyState), 1)) : (r(!0), s(l, { key: 2 }, a([
46
+ title: p(z)(p(y).accessibility.issueCountTooltip, { count: G.value })
47
+ }, i(G.value), 9, k)) : s("", !0)
48
+ ]), !p(B) || p(B).unavailable.value ? (a(), m("div", A)) : G.value === 0 ? (a(), m("div", j, i(p(y).accessibility.emptyState), 1)) : (a(!0), m(l, { key: 2 }, r([
49
49
  {
50
50
  key: "errors",
51
- title: f(y).accessibility.groupErrors,
52
- icon: f(x),
51
+ title: p(y).accessibility.groupErrors,
52
+ icon: p(x),
53
53
  items: H.value,
54
54
  tone: "tpl:text-[var(--tpl-danger)]"
55
55
  },
56
56
  {
57
57
  key: "warnings",
58
- title: f(y).accessibility.groupWarnings,
59
- icon: f(C),
58
+ title: p(y).accessibility.groupWarnings,
59
+ icon: p(C),
60
60
  items: U.value,
61
61
  tone: "tpl:text-[var(--tpl-warning)]"
62
62
  },
63
63
  {
64
64
  key: "info",
65
- title: f(y).accessibility.groupInfo,
66
- icon: f(S),
65
+ title: p(y).accessibility.groupInfo,
66
+ icon: p(S),
67
67
  items: W.value,
68
68
  tone: "tpl:text-[var(--tpl-text-muted)]"
69
69
  }
70
- ], (t) => (r(), s("section", { key: t.key }, [t.items.length > 0 ? (r(), s("header", {
70
+ ], (t) => (a(), m("section", { key: t.key }, [t.items.length > 0 ? (a(), m("header", {
71
71
  key: 0,
72
72
  class: e(["tpl:mb-2 tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-[11px] tpl:font-semibold tpl:uppercase tpl:tracking-wide", t.tone])
73
73
  }, [
74
- (r(), d(n(t.icon), {
74
+ (a(), u(o(t.icon), {
75
75
  size: 12,
76
76
  "stroke-width": 2
77
77
  })),
78
- h(" " + i(t.title) + " ", 1),
79
- p("span", M, i(t.items.length), 1)
80
- ], 2)) : u("", !0), t.items.length > 0 ? (r(), s("ul", N, [(r(!0), s(l, null, a(t.items, (e) => (r(), s("li", {
78
+ c(" " + i(t.title) + " ", 1),
79
+ d("span", M, i(t.items.length), 1)
80
+ ], 2)) : s("", !0), t.items.length > 0 ? (a(), m("ul", N, [(a(!0), m(l, null, r(t.items, (e) => (a(), m("li", {
81
81
  key: `${e.ruleId}-${e.blockId ?? "template"}`,
82
82
  class: "tpl:rounded-md tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:p-3"
83
83
  }, [
84
- p("p", P, i(e.message), 1),
85
- p("p", F, i(e.ruleId), 1),
86
- p("div", I, [e.blockId ? (r(), s("button", {
84
+ d("p", P, i(e.message), 1),
85
+ d("p", F, i(e.ruleId), 1),
86
+ d("div", I, [e.blockId ? (a(), m("button", {
87
87
  key: 0,
88
88
  type: "button",
89
89
  class: "tpl:flex tpl:items-center tpl:gap-1 tpl:rounded-md tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-hover)] tpl:px-2 tpl:py-1 tpl:text-[11px] tpl:font-medium tpl:text-[var(--tpl-text)]",
90
90
  onClick: (t) => K(e)
91
- }, [c(f(w), {
91
+ }, [h(p(w), {
92
92
  size: 10,
93
93
  "stroke-width": 2
94
- }), h(" " + i(f(y).accessibility.jump), 1)], 8, L)) : u("", !0), e.fix ? (r(), s("button", {
94
+ }), c(" " + i(p(y).accessibility.jump), 1)], 8, L)) : s("", !0), e.fix ? (a(), m("button", {
95
95
  key: 1,
96
96
  type: "button",
97
97
  class: "tpl:flex tpl:items-center tpl:gap-1 tpl:rounded-md tpl:bg-[var(--tpl-primary)] tpl:px-2 tpl:py-1 tpl:text-[11px] tpl:font-medium tpl:text-white",
98
98
  title: e.fix.description,
99
99
  onClick: (t) => q(e)
100
- }, [c(f(T), {
100
+ }, [h(p(T), {
101
101
  size: 10,
102
102
  "stroke-width": 2
103
- }), h(" " + i(f(y).accessibility.fix), 1)], 8, R)) : u("", !0)])
104
- ]))), 128))])) : u("", !0)]))), 128))]));
103
+ }), c(" " + i(p(y).accessibility.fix), 1)], 8, R)) : s("", !0)])
104
+ ]))), 128))])) : s("", !0)]))), 128))]));
105
105
  }
106
106
  });
107
107
  //#endregion
@@ -1,52 +1,38 @@
1
- import { Dt as e, E as t, H as n, M as r, Mt as i, O as a, P as o, Q as s, S as c, V as ee, _ as l, b as u, d, g as f, h as p, it as m, k as h, m as g, s as te, t as ne, y as _, z as v } from "./vue.runtime.esm-bundler-DpvJL-nX.js";
2
- import { o as re, s as ie } from "./dist-B1IR0bpH.js";
3
- import { O as y, i as ae, l as oe, m as se, v as ce } from "./keys-ciNfSSGj.js";
4
- import { t as b } from "./createLucideIcon-C3pa2siy.js";
5
- import { t as le } from "./circle-alert-DZuGWPX-.js";
6
- import { t as ue } from "./loader-circle-DsY5Yg33.js";
7
- import { t as de } from "./send-DH4oDQqC.js";
8
- import { t as x } from "./sparkles-CvRXGqFs.js";
9
- import { t as fe } from "./trash-2-DbP2Y6t2.js";
10
- import { t as pe } from "./x-u2oVmjN_.js";
11
- import { t as me } from "./LoadingTrack-B0CWFHXQ.js";
12
- import { t as S } from "./_plugin-vue_export-helper-B0hnzhyu.js";
13
- import { i as C } from "./cloud-DEk_b4CR.js";
14
- var w = b("redo-2", [["path", {
15
- d: "m15 14 5-5-5-5",
16
- key: "12vg1m"
17
- }], ["path", {
18
- d: "M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13",
19
- key: "6uklza"
20
- }]]), T = b("undo-2", [["path", {
21
- d: "M9 14 4 9l5-5",
22
- key: "102s5s"
23
- }], ["path", {
24
- d: "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",
25
- key: "f3b9sd"
26
- }]]);
27
- //#endregion
1
+ import { A as e, At as t, C as n, D as r, F as i, Ft as a, N as o, U as ee, V as s, W as te, _ as c, b as l, c as ne, et as u, f as d, g as f, h as p, k as re, st as m, t as ie, v as h, x as g } from "./vue.runtime.esm-bundler-CjauPXjj.js";
2
+ import { c as ae, l as oe } from "./dist-CivF9P8b.js";
3
+ import { A as _, i as se, l as v, m as ce, y as le } from "./keys-CvX8D-8C.js";
4
+ import { t as y } from "./circle-alert-ZQQc98HC.js";
5
+ import { t as ue } from "./loader-circle-Balo8p3d.js";
6
+ import { n as de, t as fe } from "./undo-2-Cg8I7obC.js";
7
+ import { t as pe } from "./send-DDdhIRj8.js";
8
+ import { t as b } from "./sparkles-BN4a-CoF.js";
9
+ import { t as me } from "./trash-2-CMWvQ5KX.js";
10
+ import { t as x } from "./x-CgIhNcT9.js";
11
+ import { t as S } from "./LoadingTrack-BJ59h9ok.js";
12
+ import { t as C } from "./_plugin-vue_export-helper-Bwh4ceeO.js";
13
+ import { i as w } from "./cloud-DJG4tb4_.js";
28
14
  //#region src/composables/useAliveFlag.ts
29
- function E() {
30
- let e = { alive: !0 };
31
- return h(() => {
32
- e.alive = !1;
33
- }), e;
15
+ function T() {
16
+ let t = { alive: !0 };
17
+ return e(() => {
18
+ t.alive = !1;
19
+ }), t;
34
20
  }
35
21
  //#endregion
36
22
  //#region src/cloud/components/AiChatSidebar.vue?vue&type=script&setup=true&lang.ts
37
- var D = {
23
+ var E = {
38
24
  key: 0,
39
25
  class: "tpl-ai-sidebar tpl:absolute tpl:top-14 tpl:right-0 tpl:bottom-0 tpl:z-panel tpl:flex tpl:w-[360px] tpl:flex-col tpl:border-l tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)]"
40
- }, O = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, k = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, A = { class: "tpl:flex tpl:items-center tpl:gap-1" }, j = ["title"], M = { class: "tpl:relative tpl:flex tpl:min-h-0 tpl:flex-1 tpl:flex-col" }, N = {
26
+ }, D = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, O = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, k = { class: "tpl:flex tpl:items-center tpl:gap-1" }, A = ["title"], j = { class: "tpl:relative tpl:flex tpl:min-h-0 tpl:flex-1 tpl:flex-col" }, M = {
41
27
  key: 0,
42
28
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
43
- }, P = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, F = {
29
+ }, N = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, P = {
44
30
  key: 1,
45
31
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
46
- }, I = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, L = {
32
+ }, F = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, I = {
47
33
  key: 2,
48
34
  class: "tpl:flex tpl:flex-col tpl:gap-4"
49
- }, R = {
35
+ }, L = {
50
36
  key: 0,
51
37
  class: "tpl:self-end tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3.5 tpl:py-2.5 tpl:text-sm",
52
38
  style: {
@@ -55,10 +41,10 @@ var D = {
55
41
  "max-width": "85%",
56
42
  "box-shadow": "var(--tpl-shadow)"
57
43
  }
58
- }, z = {
44
+ }, R = {
59
45
  key: 1,
60
46
  class: "tpl:flex tpl:flex-col tpl:gap-2"
61
- }, B = {
47
+ }, z = {
62
48
  key: 1,
63
49
  class: "tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3.5 tpl:py-2.5 tpl:text-sm tpl:whitespace-pre-wrap",
64
50
  style: {
@@ -81,24 +67,24 @@ var D = {
81
67
  "background-color": "color-mix(\n in srgb,\n var(--tpl-bg) 50%,\n transparent\n )",
82
68
  "backdrop-filter": "blur(2px)"
83
69
  }
84
- }, _e = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, ve = ["onClick"], ye = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, be = { class: "tpl-ai-input-wrapper tpl:flex tpl:items-end tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:border tpl:px-3 tpl:py-2 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, xe = ["placeholder", "disabled"], Se = ["disabled"], Ce = { class: "tpl:m-0 tpl:px-1 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, V = /* @__PURE__ */ S(/* @__PURE__ */ c({
70
+ }, _e = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, ve = ["onClick"], ye = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, be = { class: "tpl-ai-input-wrapper tpl:flex tpl:items-end tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:border tpl:px-3 tpl:py-2 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, xe = ["placeholder", "disabled"], Se = ["disabled"], Ce = { class: "tpl:m-0 tpl:px-1 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, B = /* @__PURE__ */ C(/* @__PURE__ */ n({
85
71
  __name: "AiChatSidebar",
86
72
  props: {
87
73
  visible: { type: Boolean },
88
74
  onApply: { type: Function }
89
75
  },
90
76
  emits: ["close"],
91
- setup(c, { emit: h }) {
92
- let b = c, S = h, V = y(oe, "AiChatSidebar"), H = y(se, "AiChatSidebar"), we = y(ae, "AiChatSidebar"), U = t(ce, []), W = E(), G = C({
77
+ setup(e, { emit: n }) {
78
+ let C = e, B = n, V = _(v, "AiChatSidebar"), H = _(ce, "AiChatSidebar"), we = _(se, "AiChatSidebar"), U = r(le, []), W = T(), G = w({
93
79
  authManager: we,
94
80
  getTemplateId: () => H.state.template?.id ?? null,
95
- onApply: b.onApply,
81
+ onApply: C.onApply,
96
82
  onError: void 0
97
- }), K = s(""), q = s(null), J = s(!1), Y = s(0), { pause: X, resume: Te } = re(() => {
83
+ }), K = u(""), q = u(null), J = u(!1), Y = u(0), { pause: X, resume: Te } = ae(() => {
98
84
  let e = G.suggestions.value?.length ?? 0;
99
85
  Y.value < e ? Y.value++ : X();
100
- }, 150, { immediate: !1 }), { start: Ee } = ie(() => Te(), 100, { immediate: !1 });
101
- v(() => G.suggestions.value?.length ?? 0, (e) => {
86
+ }, 150, { immediate: !1 }), { start: Ee } = oe(() => Te(), 100, { immediate: !1 });
87
+ s(() => G.suggestions.value?.length ?? 0, (e) => {
102
88
  if (X(), e === 0) {
103
89
  Y.value = 0;
104
90
  return;
@@ -106,11 +92,11 @@ var D = {
106
92
  Y.value = 0, Ee();
107
93
  });
108
94
  function Z() {
109
- a(() => {
95
+ re(() => {
110
96
  q.value && (q.value.scrollTop = q.value.scrollHeight);
111
97
  });
112
98
  }
113
- v(() => G.messages.value?.length ?? 0, () => Z()), v(() => b.visible, async (e) => {
99
+ s(() => G.messages.value?.length ?? 0, () => Z()), s(() => C.visible, async (e) => {
114
100
  if (e && !J.value) {
115
101
  if (J.value = !0, await G.loadConversation(), !W.alive) return;
116
102
  (G.messages.value?.length ?? 0) === 0 && H.content.value.blocks.length === 0 && G.loadSuggestions(H.content.value, U);
@@ -129,7 +115,7 @@ var D = {
129
115
  function Oe(e) {
130
116
  e.key === "Enter" && !e.shiftKey && (e.preventDefault(), Q());
131
117
  }
132
- return (t, a) => (r(), p(ne, {
118
+ return (n, r) => (o(), f(ie, {
133
119
  "enter-active-class": "tpl-ai-slide-enter-active",
134
120
  "enter-from-class": "tpl:translate-x-full",
135
121
  "enter-to-class": "tpl:translate-x-0",
@@ -137,42 +123,42 @@ var D = {
137
123
  "leave-from-class": "tpl:translate-x-0",
138
124
  "leave-to-class": "tpl:translate-x-full"
139
125
  }, {
140
- default: ee(() => [c.visible ? (r(), l("div", D, [
141
- g("div", O, [g("div", k, [u(m(x), {
126
+ default: ee(() => [e.visible ? (o(), h("div", E, [
127
+ p("div", D, [p("div", O, [g(m(b), {
142
128
  size: 13,
143
129
  "stroke-width": 2
144
- }), g("span", null, i(m(V).aiChat.title), 1)]), g("div", A, [(m(G).messages.value?.length ?? 0) > 0 ? (r(), l("button", {
130
+ }), p("span", null, a(m(V).aiChat.title), 1)]), p("div", k, [(m(G).messages.value?.length ?? 0) > 0 ? (o(), h("button", {
145
131
  key: 0,
146
132
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
147
133
  title: m(V).aiChat.clear,
148
- onClick: a[0] ||= (e) => m(G).clearChat()
149
- }, [u(m(fe), {
134
+ onClick: r[0] ||= (e) => m(G).clearChat()
135
+ }, [g(m(me), {
150
136
  size: 14,
151
137
  "stroke-width": 2
152
- })], 8, j)) : f("", !0), g("button", {
138
+ })], 8, A)) : c("", !0), p("button", {
153
139
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
154
- onClick: a[1] ||= (e) => S("close")
155
- }, [u(m(pe), {
140
+ onClick: r[1] ||= (e) => B("close")
141
+ }, [g(m(x), {
156
142
  size: 14,
157
143
  "stroke-width": 2
158
144
  })])])]),
159
- g("div", M, [
160
- g("div", {
145
+ p("div", j, [
146
+ p("div", {
161
147
  ref_key: "messagesContainer",
162
148
  ref: q,
163
149
  class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4"
164
- }, [m(G).isLoadingHistory.value ? (r(), l("div", N, [u(m(ue), {
150
+ }, [m(G).isLoadingHistory.value ? (o(), h("div", M, [g(m(ue), {
165
151
  class: "tpl-spinner tpl:text-[var(--tpl-text-muted)]",
166
152
  size: 24,
167
153
  "stroke-width": 2
168
- }), g("p", P, i(m(V).aiChat.loadingHistory), 1)])) : (m(G).messages.value?.length ?? 0) === 0 ? (r(), l("div", F, [u(m(x), {
154
+ }), p("p", N, a(m(V).aiChat.loadingHistory), 1)])) : (m(G).messages.value?.length ?? 0) === 0 ? (o(), h("div", P, [g(m(b), {
169
155
  size: 32,
170
156
  "stroke-width": 1.5,
171
157
  class: "tpl:text-[var(--tpl-text-dim)]"
172
- }), g("p", I, i(m(V).aiChat.placeholder), 1)])) : (r(), l("div", L, [(r(!0), l(d, null, o(m(G).messages.value, (e, t) => (r(), l("div", {
158
+ }), p("p", F, a(m(V).aiChat.placeholder), 1)])) : (o(), h("div", I, [(o(!0), h(d, null, i(m(G).messages.value, (e, t) => (o(), h("div", {
173
159
  key: e.id,
174
160
  class: "tpl:flex tpl:flex-col tpl:gap-2"
175
- }, [e.role === "user" ? (r(), l("div", R, i(e.content), 1)) : (r(), l("div", z, [!$(e.content) && m(G).isGenerating.value && t === (m(G).messages.value?.length ?? 0) - 1 ? (r(), p(me, { key: 0 })) : (r(), l("div", B, i($(e.content) || m(V).aiChat.applied), 1)), e.id === m(G).lastApplyMessageId.value && !m(G).isGenerating.value ? (r(), l("button", {
161
+ }, [e.role === "user" ? (o(), h("div", L, a(e.content), 1)) : (o(), h("div", R, [!$(e.content) && m(G).isGenerating.value && t === (m(G).messages.value?.length ?? 0) - 1 ? (o(), f(S, { key: 0 })) : (o(), h("div", z, a($(e.content) || m(V).aiChat.applied), 1)), e.id === m(G).lastApplyMessageId.value && !m(G).isGenerating.value ? (o(), h("button", {
176
162
  key: 2,
177
163
  class: "tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:self-start tpl:rounded-md tpl:border tpl:px-2.5 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",
178
164
  style: {
@@ -180,50 +166,50 @@ var D = {
180
166
  color: "var(--tpl-text-muted)",
181
167
  "background-color": "transparent"
182
168
  },
183
- onClick: a[2] ||= (e) => m(G).toggleLastRevert()
184
- }, [m(G).isLastChangeReverted.value ? (r(), l(d, { key: 0 }, [u(m(w), {
169
+ onClick: r[2] ||= (e) => m(G).toggleLastRevert()
170
+ }, [m(G).isLastChangeReverted.value ? (o(), h(d, { key: 0 }, [g(m(de), {
185
171
  size: 12,
186
172
  "stroke-width": 2
187
- }), _(" " + i(m(V).aiChat.reapply), 1)], 64)) : (r(), l(d, { key: 1 }, [u(m(T), {
173
+ }), l(" " + a(m(V).aiChat.reapply), 1)], 64)) : (o(), h(d, { key: 1 }, [g(m(fe), {
188
174
  size: 12,
189
175
  "stroke-width": 2
190
- }), _(" " + i(m(V).aiChat.revert), 1)], 64))])) : f("", !0)]))]))), 128))]))], 512),
191
- m(G).error.value ? (r(), l("div", he, [u(m(le), {
176
+ }), l(" " + a(m(V).aiChat.revert), 1)], 64))])) : c("", !0)]))]))), 128))]))], 512),
177
+ m(G).error.value ? (o(), h("div", he, [g(m(y), {
192
178
  size: 14,
193
179
  "stroke-width": 2,
194
180
  class: "tpl:mt-0.5 tpl:shrink-0"
195
- }), g("span", null, i(m(G).error.value === "ai_apply_failed" ? m(V).aiChat.applyFailed : m(V).aiChat.error), 1)])) : f("", !0),
196
- (m(G).suggestions.value?.length ?? 0) > 0 ? (r(), l("div", ge, [g("div", _e, [(r(!0), l(d, null, o(m(G).suggestions.value ?? [], (t, n) => (r(), l("button", {
181
+ }), p("span", null, a(m(G).error.value === "ai_apply_failed" ? m(V).aiChat.applyFailed : m(V).aiChat.error), 1)])) : c("", !0),
182
+ (m(G).suggestions.value?.length ?? 0) > 0 ? (o(), h("div", ge, [p("div", _e, [(o(!0), h(d, null, i(m(G).suggestions.value ?? [], (e, n) => (o(), h("button", {
197
183
  key: n,
198
- class: e(["tpl-suggestion-btn tpl:cursor-pointer tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:px-3 tpl:py-2 tpl:text-left tpl:text-xs tpl:leading-snug tpl:transition-all tpl:duration-300 tpl:ease-out", (m(G).suggestions.value?.length ?? 0) - 1 - n < Y.value ? "tpl:translate-y-0 tpl:opacity-100" : "tpl:pointer-events-none tpl:-translate-y-2 tpl:opacity-0"]),
184
+ class: t(["tpl-suggestion-btn tpl:cursor-pointer tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:px-3 tpl:py-2 tpl:text-left tpl:text-xs tpl:leading-snug tpl:transition-all tpl:duration-300 tpl:ease-out", (m(G).suggestions.value?.length ?? 0) - 1 - n < Y.value ? "tpl:translate-y-0 tpl:opacity-100" : "tpl:pointer-events-none tpl:-translate-y-2 tpl:opacity-0"]),
199
185
  style: {
200
186
  "border-color": "var(--tpl-border)",
201
187
  color: "var(--tpl-primary)",
202
188
  "background-color": "var(--tpl-bg)",
203
189
  "box-shadow": "var(--tpl-shadow)"
204
190
  },
205
- onClick: (e) => De(t)
206
- }, i(t), 11, ve))), 128))])])) : f("", !0)
191
+ onClick: (t) => De(e)
192
+ }, a(e), 11, ve))), 128))])])) : c("", !0)
207
193
  ]),
208
- g("div", ye, [g("div", be, [n(g("textarea", {
209
- "onUpdate:modelValue": a[3] ||= (e) => K.value = e,
194
+ p("div", ye, [p("div", be, [te(p("textarea", {
195
+ "onUpdate:modelValue": r[3] ||= (e) => K.value = e,
210
196
  class: "tpl:max-h-32 tpl:min-h-[64px] tpl:flex-1 tpl:resize-none tpl:border-none tpl:bg-transparent tpl:font-sans tpl:text-sm tpl:outline-none tpl:text-[var(--tpl-text)]",
211
197
  placeholder: m(V).aiChat.inputPlaceholder,
212
198
  disabled: m(G).isGenerating.value,
213
199
  rows: "3",
214
200
  onKeydown: Oe
215
- }, null, 40, xe), [[te, K.value]]), g("button", {
201
+ }, null, 40, xe), [[ne, K.value]]), p("button", {
216
202
  class: "tpl-ai-send-btn tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1.5 tpl:transition-all tpl:duration-150 tpl:disabled:opacity-40 tpl:text-[var(--tpl-primary)]",
217
203
  disabled: !K.value.trim() || m(G).isGenerating.value,
218
204
  onClick: Q
219
- }, [u(m(de), {
205
+ }, [g(m(pe), {
220
206
  size: 16,
221
207
  "stroke-width": 2
222
- })], 8, Se)]), g("p", Ce, i(m(V).aiMenu.disclaimer), 1)])
223
- ])) : f("", !0)]),
208
+ })], 8, Se)]), p("p", Ce, a(m(V).aiMenu.disclaimer), 1)])
209
+ ])) : c("", !0)]),
224
210
  _: 1
225
211
  }));
226
212
  }
227
- }), [["__scopeId", "data-v-a55e4bff"]]);
213
+ }), [["__scopeId", "data-v-384b60d9"]]);
228
214
  //#endregion
229
- export { V as default };
215
+ export { B as default };
@@ -1,11 +1,11 @@
1
- import { L as e, M as t, Mt as n, Ot as r, P as i, S as a, _ as o, d as s, h as c, m as l, p as u } from "./vue.runtime.esm-bundler-DpvJL-nX.js";
2
- import "./useEditorCore-C6ost42Q.js";
3
- import { O as d, n as f } from "./keys-ciNfSSGj.js";
4
- import { t as p } from "./image-up-MBZKKg9p.js";
5
- import { t as m } from "./shield-check-CfJgs2Hd.js";
6
- import { t as h } from "./sparkles-CvRXGqFs.js";
7
- import { t as g } from "./_plugin-vue_export-helper-B0hnzhyu.js";
8
- import { n as _ } from "./useCloudI18n-BuIwR6OE.js";
1
+ import { C as e, F as t, Ft as n, N as r, R as i, f as a, g as o, h as s, jt as c, m as l, v as u } from "./vue.runtime.esm-bundler-CjauPXjj.js";
2
+ import "./useEditorCore-BGnzcT7p.js";
3
+ import { A as d, n as f } from "./keys-CvX8D-8C.js";
4
+ import { t as p } from "./image-up-DT7gcJLN.js";
5
+ import { t as m } from "./shield-check-OSQ-JVTX.js";
6
+ import { t as h } from "./sparkles-BN4a-CoF.js";
7
+ import { t as g } from "./_plugin-vue_export-helper-Bwh4ceeO.js";
8
+ import { n as _ } from "./useCloudI18n-BTTNBk5i.js";
9
9
  //#region src/cloud/components/AiFeatureMenu.vue?vue&type=script&setup=true&lang.ts
10
10
  var v = {
11
11
  class: "tpl-ai-feature-menu tpl:w-[280px] tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:py-1 tpl:bg-[var(--tpl-bg-elevated)] tpl:border tpl:border-[var(--tpl-border)] tpl:shadow-[var(--tpl-shadow-lg)]",
@@ -13,11 +13,11 @@ var v = {
13
13
  "backdrop-filter": "blur(8px)",
14
14
  "-webkit-backdrop-filter": "blur(8px)"
15
15
  }
16
- }, y = ["onClick"], b = { class: "tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5" }, x = { class: "tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]" }, S = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]" }, C = /* @__PURE__ */ g(/* @__PURE__ */ a({
16
+ }, y = ["onClick"], b = { class: "tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5" }, x = { class: "tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]" }, S = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]" }, C = /* @__PURE__ */ g(/* @__PURE__ */ e({
17
17
  __name: "AiFeatureMenu",
18
18
  props: { activeFeature: {} },
19
19
  emits: ["select"],
20
- setup(a, { emit: g }) {
20
+ setup(e, { emit: g }) {
21
21
  let C = g, { t: w } = _(), T = d(f, "AiFeatureMenu"), E = {
22
22
  "ai-chat": "chat",
23
23
  "design-reference": "designToTemplate",
@@ -35,29 +35,29 @@ var v = {
35
35
  key: "scoring",
36
36
  icon: m
37
37
  }
38
- ], O = u(() => D.filter((e) => T.isFeatureEnabled(E[e.key])));
38
+ ], O = l(() => D.filter((e) => T.isFeatureEnabled(E[e.key])));
39
39
  function k(e) {
40
40
  return e === "ai-chat" ? w.aiMenu.aiAssistant : e === "design-reference" ? w.aiMenu.designToTemplate : w.aiMenu.templateScore;
41
41
  }
42
42
  function A(e) {
43
43
  return e === "ai-chat" ? w.aiMenu.aiAssistantDesc : e === "design-reference" ? w.aiMenu.designToTemplateDesc : w.aiMenu.templateScoreDesc;
44
44
  }
45
- return (u, d) => (t(), o("div", v, [(t(!0), o(s, null, i(O.value, (i) => (t(), o("button", {
46
- key: i.key,
45
+ return (l, d) => (r(), u("div", v, [(r(!0), u(a, null, t(O.value, (t) => (r(), u("button", {
46
+ key: t.key,
47
47
  class: "tpl-ai-feature-menu-item tpl:flex tpl:w-full tpl:cursor-pointer tpl:items-start tpl:gap-3 tpl:border-none tpl:px-3 tpl:py-2.5 tpl:text-left tpl:transition-colors tpl:duration-100",
48
- style: r({ backgroundColor: a.activeFeature === i.key ? "var(--tpl-primary-light)" : "transparent" }),
49
- onClick: (e) => C("select", i.key)
50
- }, [l("div", {
48
+ style: c({ backgroundColor: e.activeFeature === t.key ? "var(--tpl-primary-light)" : "transparent" }),
49
+ onClick: (e) => C("select", t.key)
50
+ }, [s("div", {
51
51
  class: "tpl:mt-0.5 tpl:flex tpl:size-7 tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-[var(--tpl-radius-sm)]",
52
- style: r({
53
- backgroundColor: a.activeFeature === i.key ? "var(--tpl-primary)" : "var(--tpl-bg-active)",
54
- color: a.activeFeature === i.key ? "var(--tpl-bg)" : "var(--tpl-text-muted)"
52
+ style: c({
53
+ backgroundColor: e.activeFeature === t.key ? "var(--tpl-primary)" : "var(--tpl-bg-active)",
54
+ color: e.activeFeature === t.key ? "var(--tpl-bg)" : "var(--tpl-text-muted)"
55
55
  })
56
- }, [(t(), c(e(i.icon), {
56
+ }, [(r(), o(i(t.icon), {
57
57
  size: 15,
58
58
  "stroke-width": 2
59
- }))], 4), l("div", b, [l("span", x, n(k(i.key)), 1), l("span", S, n(A(i.key)), 1)])], 12, y))), 128))]));
59
+ }))], 4), s("div", b, [s("span", x, n(k(t.key)), 1), s("span", S, n(A(t.key)), 1)])], 12, y))), 128))]));
60
60
  }
61
- }), [["__scopeId", "data-v-07839fa3"]]);
61
+ }), [["__scopeId", "data-v-98d85462"]]);
62
62
  //#endregion
63
63
  export { C as default };
@@ -1,33 +1,33 @@
1
- import { Dt as e, E as t, M as n, S as r, _ as i, g as a, h as o, it as s, p as c } from "./vue.runtime.esm-bundler-DpvJL-nX.js";
2
- import { t as l } from "./keys-ciNfSSGj.js";
3
- import { t as u } from "./useI18n-lb2DHDiu.js";
4
- import { t as d } from "./circle-alert-DZuGWPX-.js";
5
- import { t as f } from "./triangle-alert-aOXceTSe.js";
1
+ import { At as e, C as t, D as n, N as r, _ as i, g as a, m as o, st as s, v as c } from "./vue.runtime.esm-bundler-CjauPXjj.js";
2
+ import { t as l } from "./keys-CvX8D-8C.js";
3
+ import { t as u } from "./useI18n-C2xQZ6K9.js";
4
+ import { t as d } from "./circle-alert-ZQQc98HC.js";
5
+ import { t as f } from "./triangle-alert-DyidRNX_.js";
6
6
  //#region src/components/canvas/BlockA11yBadge.vue?vue&type=script&setup=true&lang.ts
7
- var p = ["title", "aria-label"], m = /* @__PURE__ */ r({
7
+ var p = ["title", "aria-label"], m = /* @__PURE__ */ t({
8
8
  __name: "BlockA11yBadge",
9
9
  props: { blockId: {} },
10
- setup(r) {
11
- let m = r, { t: h } = u(), g = t(l, null), _ = c(() => (g?.issues.value ?? []).filter((e) => e.blockId === m.blockId)), v = c(() => _.value.some((e) => e.severity === "error") ? "error" : _.value.some((e) => e.severity === "warning") ? "warning" : null), y = c(() => v.value === "error" ? h.accessibility.badgeError : h.accessibility.badgeWarning);
12
- return (t, r) => v.value ? (n(), i("span", {
10
+ setup(t) {
11
+ let m = t, { t: h } = u(), g = n(l, null), _ = o(() => (g?.issues.value ?? []).filter((e) => e.blockId === m.blockId)), v = o(() => _.value.some((e) => e.severity === "error") ? "error" : _.value.some((e) => e.severity === "warning") ? "warning" : null), y = o(() => v.value === "error" ? h.accessibility.badgeError : h.accessibility.badgeWarning);
12
+ return (t, n) => v.value ? (r(), c("span", {
13
13
  key: 0,
14
14
  class: e(["tpl:absolute tpl:top-1 tpl:right-1 tpl:z-10 tpl:flex tpl:size-5 tpl:items-center tpl:justify-center tpl:rounded-full tpl:bg-[var(--tpl-bg)] tpl:shadow-[var(--tpl-shadow-sm)] tpl:ring-1 tpl:ring-[var(--tpl-border)]", v.value === "error" ? "tpl:text-[var(--tpl-danger)]" : "tpl:text-[var(--tpl-warning)]"]),
15
15
  title: y.value,
16
16
  "aria-label": y.value,
17
17
  role: "img"
18
- }, [v.value === "error" ? (n(), o(s(d), {
18
+ }, [v.value === "error" ? (r(), a(s(d), {
19
19
  key: 0,
20
20
  size: 14,
21
21
  "stroke-width": 2.25,
22
22
  fill: "currentColor",
23
23
  stroke: "var(--tpl-bg)"
24
- })) : (n(), o(s(f), {
24
+ })) : (r(), a(s(f), {
25
25
  key: 1,
26
26
  size: 14,
27
27
  "stroke-width": 2.25,
28
28
  fill: "currentColor",
29
29
  stroke: "var(--tpl-bg)"
30
- }))], 10, p)) : a("", !0);
30
+ }))], 10, p)) : i("", !0);
31
31
  }
32
32
  });
33
33
  //#endregion