@templatical/editor 0.16.1 → 0.16.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 (74) hide show
  1. package/dist/{AiFeatureMenu-Rb8G3EBo.js → AiFeatureMenu-DfTYyExg.js} +1 -1
  2. package/dist/{CloudEditor-D88gLBXp.js → CloudEditor-BQyZ_nFg.js} +5 -5
  3. package/dist/{CollaboratorBar-dxCD8jSi.js → CollaboratorBar-DeP7K-zk.js} +1 -1
  4. package/dist/{ColorPicker-CAgMCX3A.js → ColorPicker-CXAbjTaG.js} +7 -3
  5. package/dist/{CountdownToolbar-8XVTOuGX.js → CountdownToolbar-nY9H0BKd.js} +2 -2
  6. package/dist/{ModuleBrowserModal-l4_RCC8m.js → ModuleBrowserModal-CkeYw1e3.js} +4 -4
  7. package/dist/{ModulePreviewCanvas-BqYAr4fz.js → ModulePreviewCanvas-BIMFyYaa.js} +1 -1
  8. package/dist/{NumberWithSuffix-Di-cDy_m.js → NumberWithSuffix-BoZyUoNz.js} +1 -1
  9. package/dist/{ParagraphEditor-DIQ1jmSP.js → ParagraphEditor-DGsTFMxg.js} +76 -86
  10. package/dist/{RichTextEditorContent-DkTJ6KK8.js → RichTextEditorContent-BB_n8vgB.js} +1 -1
  11. package/dist/{SaveModuleDialog-DPo3Raon.js → SaveModuleDialog-Cypt_qOB.js} +2 -2
  12. package/dist/{SnapshotHistory-m7brKV7C.js → SnapshotHistory-DQTH8TCS.js} +1 -1
  13. package/dist/{TestEmailModal-BE9sFEIl.js → TestEmailModal-DqxrL-U9.js} +2 -2
  14. package/dist/{TitleEditor-BATN-k-Q.js → TitleEditor-DoGgnrcb.js} +2 -2
  15. package/dist/{TplModal-DHBcZ1gq.js → TplModal-Ca-29YDD.js} +1 -1
  16. package/dist/{blockTypeIcons-wRchKKx0.js → blockTypeIcons-DVJXg5si.js} +1 -1
  17. package/dist/bundle-stats.json +6 -6
  18. package/dist/cdn/chunks/{AiFeatureMenu-W7VQFAwq.js → AiFeatureMenu-roPglhox.js} +2 -2
  19. package/dist/cdn/chunks/{AiFeatureMenu-W7VQFAwq.js.map → AiFeatureMenu-roPglhox.js.map} +1 -1
  20. package/dist/cdn/chunks/{BlockIssueBadge-ww2vNIfJ.js → BlockIssueBadge-DW_Tt7Wg.js} +2 -2
  21. package/dist/cdn/chunks/{BlockIssueBadge-ww2vNIfJ.js.map → BlockIssueBadge-DW_Tt7Wg.js.map} +1 -1
  22. package/dist/cdn/chunks/{CloudEditor-BVSJ1kvB.js → CloudEditor-CX6y1k3C.js} +9 -9
  23. package/dist/cdn/chunks/{CloudEditor-BVSJ1kvB.js.map → CloudEditor-CX6y1k3C.js.map} +1 -1
  24. package/dist/cdn/chunks/{CollaboratorBar-BFrAua9a.js → CollaboratorBar-Dyrab63H.js} +3 -3
  25. package/dist/cdn/chunks/{CollaboratorBar-BFrAua9a.js.map → CollaboratorBar-Dyrab63H.js.map} +1 -1
  26. package/dist/cdn/chunks/{ColorPicker-DmxMDn-t.js → ColorPicker-BggAWrc9.js} +9 -5
  27. package/dist/cdn/chunks/{ColorPicker-DmxMDn-t.js.map → ColorPicker-BggAWrc9.js.map} +1 -1
  28. package/dist/cdn/chunks/{CountdownBlock-MC-mhtQD.js → CountdownBlock-Bul4tczj.js} +2 -2
  29. package/dist/cdn/chunks/{CountdownBlock-MC-mhtQD.js.map → CountdownBlock-Bul4tczj.js.map} +1 -1
  30. package/dist/cdn/chunks/{CountdownToolbar-dXyr7tz-.js → CountdownToolbar-DYvATR0J.js} +4 -4
  31. package/dist/cdn/chunks/{CountdownToolbar-dXyr7tz-.js.map → CountdownToolbar-DYvATR0J.js.map} +1 -1
  32. package/dist/cdn/chunks/{IssuesPanel-CTxSgViL.js → IssuesPanel-BhHU-hq3.js} +3 -3
  33. package/dist/cdn/chunks/{IssuesPanel-CTxSgViL.js.map → IssuesPanel-BhHU-hq3.js.map} +1 -1
  34. package/dist/cdn/chunks/{ModuleBrowserModal-B5sCsrud.js → ModuleBrowserModal-BGd5Ryyx.js} +5 -5
  35. package/dist/cdn/chunks/{ModuleBrowserModal-B5sCsrud.js.map → ModuleBrowserModal-BGd5Ryyx.js.map} +1 -1
  36. package/dist/cdn/chunks/{ModulePreviewCanvas-DGTGo8kg.js → ModulePreviewCanvas-Hx6SCCjB.js} +2 -2
  37. package/dist/cdn/chunks/{ModulePreviewCanvas-DGTGo8kg.js.map → ModulePreviewCanvas-Hx6SCCjB.js.map} +1 -1
  38. package/dist/cdn/chunks/{NumberWithSuffix-tAHfui6k.js → NumberWithSuffix-BImuhc9K.js} +2 -2
  39. package/dist/cdn/chunks/{NumberWithSuffix-tAHfui6k.js.map → NumberWithSuffix-BImuhc9K.js.map} +1 -1
  40. package/dist/cdn/chunks/{ParagraphEditor-CB5FGRs3.js → ParagraphEditor-K2vENidm.js} +100 -109
  41. package/dist/cdn/chunks/ParagraphEditor-K2vENidm.js.map +1 -0
  42. package/dist/cdn/chunks/{RichTextEditorContent-CPelbtck.js → RichTextEditorContent-B_w3u5lN.js} +3 -3
  43. package/dist/cdn/chunks/{RichTextEditorContent-CPelbtck.js.map → RichTextEditorContent-B_w3u5lN.js.map} +1 -1
  44. package/dist/cdn/chunks/{SaveModuleDialog-7f9uUUEC.js → SaveModuleDialog-Cw-182CB.js} +2 -2
  45. package/dist/cdn/chunks/{SaveModuleDialog-7f9uUUEC.js.map → SaveModuleDialog-Cw-182CB.js.map} +1 -1
  46. package/dist/cdn/chunks/{TitleEditor-C0mYpgs4.js → TitleEditor-CUKlo_Zj.js} +5 -5
  47. package/dist/cdn/chunks/{TitleEditor-C0mYpgs4.js.map → TitleEditor-CUKlo_Zj.js.map} +1 -1
  48. package/dist/cdn/chunks/{blockTypeIcons-BtxaUtlx.js → blockTypeIcons-Cx1FAqL6.js} +3 -3
  49. package/dist/cdn/chunks/{blockTypeIcons-BtxaUtlx.js.map → blockTypeIcons-Cx1FAqL6.js.map} +1 -1
  50. package/dist/cdn/chunks/{extensions-BJ7vaBol.js → extensions-DSxG2wYf.js} +2 -2
  51. package/dist/cdn/chunks/{extensions-BJ7vaBol.js.map → extensions-DSxG2wYf.js.map} +1 -1
  52. package/dist/cdn/chunks/{features-CgbSSCgv.js → features-C-cjT_8L.js} +6 -6
  53. package/dist/cdn/chunks/{features-CgbSSCgv.js.map → features-C-cjT_8L.js.map} +1 -1
  54. package/dist/cdn/chunks/{icons-Dlx5MT1V.js → icons-ay0_fN-T.js} +2 -2
  55. package/dist/cdn/chunks/{icons-Dlx5MT1V.js.map → icons-ay0_fN-T.js.map} +1 -1
  56. package/dist/cdn/chunks/{media-library-BMlykZGq.js → media-library-CkmqPdO4.js} +3 -3
  57. package/dist/cdn/chunks/{media-library-BMlykZGq.js.map → media-library-CkmqPdO4.js.map} +1 -1
  58. package/dist/cdn/chunks/{quality-DsVgXk_j.js → quality-CDNrMw2A.js} +2 -2
  59. package/dist/cdn/chunks/{quality-DsVgXk_j.js.map → quality-CDNrMw2A.js.map} +1 -1
  60. package/dist/cdn/chunks/{renderer-DPvEtVGO.js → renderer-JQ91A09w.js} +4 -4
  61. package/dist/cdn/chunks/renderer-JQ91A09w.js.map +1 -0
  62. package/dist/cdn/chunks/{src-CAdirukY.js → src-Cehu7Hqx.js} +4 -4
  63. package/dist/cdn/chunks/{src-CAdirukY.js.map → src-Cehu7Hqx.js.map} +1 -1
  64. package/dist/cdn/chunks/{styles-D7u4vCpH.js → styles-DBjy3lz9.js} +9 -9
  65. package/dist/cdn/chunks/{styles-D7u4vCpH.js.map → styles-DBjy3lz9.js.map} +1 -1
  66. package/dist/cdn/editor.css +1 -1
  67. package/dist/cdn/editor.js +6 -6
  68. package/dist/style.css +1 -1
  69. package/dist/{styles-B-yhoJnH.js → styles-mvx3k1hf.js} +6 -6
  70. package/dist/templatical-editor.js +4 -4
  71. package/dist/{useEditorCore-CV1ct_17.js → useEditorCore-DtZkR7Vk.js} +2 -2
  72. package/package.json +8 -8
  73. package/dist/cdn/chunks/ParagraphEditor-CB5FGRs3.js.map +0 -1
  74. package/dist/cdn/chunks/renderer-DPvEtVGO.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  {
2
- "version": "0.16.1",
3
- "initialGzipBytes": 281836,
4
- "initialRawBytes": 1013519,
2
+ "version": "0.16.2",
3
+ "initialGzipBytes": 281884,
4
+ "initialRawBytes": 1013672,
5
5
  "initialFileCount": 42,
6
- "lazyGzipBytes": 181678,
7
- "lazyRawBytes": 597197,
6
+ "lazyGzipBytes": 181483,
7
+ "lazyRawBytes": 596216,
8
8
  "lazyFileCount": 46,
9
- "generatedAt": "2026-07-19T11:26:25.307Z"
9
+ "generatedAt": "2026-07-19T13:54:26.248Z"
10
10
  }
@@ -1,5 +1,5 @@
1
1
  import { L as e, M as t, P as n, ct as r, f as i, g as a, m as o, p as s, st as c, u as l, x as u } from "./draggable-D840DIZB.js";
2
- import { it as d, mt as f, ot as p, pt as m, un as h, wt as g, zt as _ } from "./features-CgbSSCgv.js";
2
+ import { it as d, mt as f, ot as p, pt as m, un as h, wt as g, zt as _ } from "./features-C-cjT_8L.js";
3
3
  //#region src/cloud/components/AiFeatureMenu.vue?vue&type=script&setup=true&lang.ts
4
4
  var v = {
5
5
  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)]",
@@ -56,4 +56,4 @@ var v = {
56
56
  //#endregion
57
57
  export { C as default };
58
58
 
59
- //# sourceMappingURL=AiFeatureMenu-W7VQFAwq.js.map
59
+ //# sourceMappingURL=AiFeatureMenu-roPglhox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AiFeatureMenu-W7VQFAwq.js","names":[],"sources":["../../../src/cloud/components/AiFeatureMenu.vue","../../../src/cloud/components/AiFeatureMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useCloudI18nStrict } from \"../../composables\";\nimport { AI_CONFIG_KEY, requireInject } from \"../../keys\";\nimport type { AiConfig } from \"@templatical/types\";\nimport { ImageUp, ShieldCheck, Sparkles } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nexport type AiFeature = \"ai-chat\" | \"design-reference\" | \"scoring\";\n\ndefineProps<{\n activeFeature: AiFeature | null;\n}>();\n\nconst emit = defineEmits<{\n (e: \"select\", feature: AiFeature): void;\n}>();\n\nconst { t: cloudT } = useCloudI18nStrict();\n\nconst aiConfig = requireInject(AI_CONFIG_KEY, \"AiFeatureMenu\");\n\nconst configKeyMap: Record<AiFeature, keyof AiConfig> = {\n \"ai-chat\": \"chat\",\n \"design-reference\": \"designToTemplate\",\n scoring: \"scoring\",\n};\n\nconst allFeatures: { key: AiFeature; icon: typeof Sparkles }[] = [\n { key: \"ai-chat\", icon: Sparkles },\n { key: \"design-reference\", icon: ImageUp },\n { key: \"scoring\", icon: ShieldCheck },\n];\n\nconst features = computed(() =>\n allFeatures.filter((f) => aiConfig.isFeatureEnabled(configKeyMap[f.key])),\n);\n\nfunction getTitle(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistant;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplate;\n return cloudT.aiMenu.templateScore;\n}\n\nfunction getDescription(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistantDesc;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplateDesc;\n return cloudT.aiMenu.templateScoreDesc;\n}\n</script>\n\n<template>\n <div\n 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)]\"\n style=\"backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px)\"\n >\n <button\n v-for=\"feature in features\"\n :key=\"feature.key\"\n 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\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary-light)'\n : 'transparent',\n }\"\n @click=\"emit('select', feature.key)\"\n >\n <div\n 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)]\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary)'\n : 'var(--tpl-bg-active)',\n color:\n activeFeature === feature.key\n ? 'var(--tpl-bg)'\n : 'var(--tpl-text-muted)',\n }\"\n >\n <component :is=\"feature.icon\" :size=\"15\" :stroke-width=\"2\" />\n </div>\n <div class=\"tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5\">\n <span class=\"tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]\">\n {{ getTitle(feature.key) }}\n </span>\n <span\n class=\"tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]\"\n >\n {{ getDescription(feature.key) }}\n </span>\n </div>\n </button>\n </div>\n</template>\n\n<style scoped>\n.tpl-ai-feature-menu-item:hover {\n background-color: var(--tpl-bg-hover) !important;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useCloudI18nStrict } from \"../../composables\";\nimport { AI_CONFIG_KEY, requireInject } from \"../../keys\";\nimport type { AiConfig } from \"@templatical/types\";\nimport { ImageUp, ShieldCheck, Sparkles } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nexport type AiFeature = \"ai-chat\" | \"design-reference\" | \"scoring\";\n\ndefineProps<{\n activeFeature: AiFeature | null;\n}>();\n\nconst emit = defineEmits<{\n (e: \"select\", feature: AiFeature): void;\n}>();\n\nconst { t: cloudT } = useCloudI18nStrict();\n\nconst aiConfig = requireInject(AI_CONFIG_KEY, \"AiFeatureMenu\");\n\nconst configKeyMap: Record<AiFeature, keyof AiConfig> = {\n \"ai-chat\": \"chat\",\n \"design-reference\": \"designToTemplate\",\n scoring: \"scoring\",\n};\n\nconst allFeatures: { key: AiFeature; icon: typeof Sparkles }[] = [\n { key: \"ai-chat\", icon: Sparkles },\n { key: \"design-reference\", icon: ImageUp },\n { key: \"scoring\", icon: ShieldCheck },\n];\n\nconst features = computed(() =>\n allFeatures.filter((f) => aiConfig.isFeatureEnabled(configKeyMap[f.key])),\n);\n\nfunction getTitle(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistant;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplate;\n return cloudT.aiMenu.templateScore;\n}\n\nfunction getDescription(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistantDesc;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplateDesc;\n return cloudT.aiMenu.templateScoreDesc;\n}\n</script>\n\n<template>\n <div\n 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)]\"\n style=\"backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px)\"\n >\n <button\n v-for=\"feature in features\"\n :key=\"feature.key\"\n 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\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary-light)'\n : 'transparent',\n }\"\n @click=\"emit('select', feature.key)\"\n >\n <div\n 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)]\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary)'\n : 'var(--tpl-bg-active)',\n color:\n activeFeature === feature.key\n ? 'var(--tpl-bg)'\n : 'var(--tpl-text-muted)',\n }\"\n >\n <component :is=\"feature.icon\" :size=\"15\" :stroke-width=\"2\" />\n </div>\n <div class=\"tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5\">\n <span class=\"tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]\">\n {{ getTitle(feature.key) }}\n </span>\n <span\n class=\"tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]\"\n >\n {{ getDescription(feature.key) }}\n </span>\n </div>\n </button>\n </div>\n</template>\n\n<style scoped>\n.tpl-ai-feature-menu-item:hover {\n background-color: var(--tpl-bg-hover) !important;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;EAaA,IAAM,IAAO,GAIP,EAAE,GAAG,MAAW,EAAmB,GAEnC,IAAW,EAAc,GAAe,eAAe,GAEvD,IAAkD;GACtD,WAAW;GACX,oBAAoB;GACpB,SAAS;EACX,GAEM,IAA2D;GAC/D;IAAE,KAAK;IAAW,MAAM;GAAS;GACjC;IAAE,KAAK;IAAoB,MAAM;GAAQ;GACzC;IAAE,KAAK;IAAW,MAAM;GAAY;EACtC,GAEM,IAAW,QACf,EAAY,QAAQ,MAAM,EAAS,iBAAiB,EAAa,EAAE,IAAI,CAAC,CAC1E;EAEA,SAAS,EAAS,GAAwB;GAGxC,OAFI,MAAQ,YAAkB,EAAO,OAAO,cACxC,MAAQ,qBAA2B,EAAO,OAAO,mBAC9C,EAAO,OAAO;EACvB;EAEA,SAAS,EAAe,GAAwB;GAG9C,OAFI,MAAQ,YAAkB,EAAO,OAAO,kBACxC,MAAQ,qBAA2B,EAAO,OAAO,uBAC9C,EAAO,OAAO;EACvB;yBAIE,EA0CM,OA1CN,GA0CM,EAAA,EAAA,EAAA,GAtCJ,EAqCS,GAAA,MAAA,EApCW,EAAA,QAAX,YADT,EAqCS,UAAA;GAnCN,KAAK,EAAQ;GACd,OAAM;GACL,OAAK,EAAA,EAAA,iBAAuC,EAAA,kBAAkB,EAAQ,MAAA,6BAAA,cAAA,CAAA;GAMtE,UAAK,MAAE,EAAI,UAAW,EAAQ,GAAG;MAElC,EAcM,OAAA;GAbJ,OAAM;GACL,OAAK,EAAA;qBAA2C,EAAA,kBAAkB,EAAQ,MAAA,uBAAA;WAA8G,EAAA,kBAAkB,EAAQ,MAAA,kBAAA;;YAWnN,EAA6D,EAA7C,EAAQ,IAAI,GAAA;GAAG,MAAM;GAAK,gBAAc;YAE1D,EASM,OATN,GASM,CARJ,EAEO,QAFP,GAEO,EADF,EAAS,EAAQ,GAAG,CAAA,GAAA,CAAA,GAEzB,EAIO,QAJP,GAIO,EADF,EAAe,EAAQ,GAAG,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"AiFeatureMenu-roPglhox.js","names":[],"sources":["../../../src/cloud/components/AiFeatureMenu.vue","../../../src/cloud/components/AiFeatureMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useCloudI18nStrict } from \"../../composables\";\nimport { AI_CONFIG_KEY, requireInject } from \"../../keys\";\nimport type { AiConfig } from \"@templatical/types\";\nimport { ImageUp, ShieldCheck, Sparkles } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nexport type AiFeature = \"ai-chat\" | \"design-reference\" | \"scoring\";\n\ndefineProps<{\n activeFeature: AiFeature | null;\n}>();\n\nconst emit = defineEmits<{\n (e: \"select\", feature: AiFeature): void;\n}>();\n\nconst { t: cloudT } = useCloudI18nStrict();\n\nconst aiConfig = requireInject(AI_CONFIG_KEY, \"AiFeatureMenu\");\n\nconst configKeyMap: Record<AiFeature, keyof AiConfig> = {\n \"ai-chat\": \"chat\",\n \"design-reference\": \"designToTemplate\",\n scoring: \"scoring\",\n};\n\nconst allFeatures: { key: AiFeature; icon: typeof Sparkles }[] = [\n { key: \"ai-chat\", icon: Sparkles },\n { key: \"design-reference\", icon: ImageUp },\n { key: \"scoring\", icon: ShieldCheck },\n];\n\nconst features = computed(() =>\n allFeatures.filter((f) => aiConfig.isFeatureEnabled(configKeyMap[f.key])),\n);\n\nfunction getTitle(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistant;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplate;\n return cloudT.aiMenu.templateScore;\n}\n\nfunction getDescription(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistantDesc;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplateDesc;\n return cloudT.aiMenu.templateScoreDesc;\n}\n</script>\n\n<template>\n <div\n 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)]\"\n style=\"backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px)\"\n >\n <button\n v-for=\"feature in features\"\n :key=\"feature.key\"\n 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\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary-light)'\n : 'transparent',\n }\"\n @click=\"emit('select', feature.key)\"\n >\n <div\n 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)]\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary)'\n : 'var(--tpl-bg-active)',\n color:\n activeFeature === feature.key\n ? 'var(--tpl-bg)'\n : 'var(--tpl-text-muted)',\n }\"\n >\n <component :is=\"feature.icon\" :size=\"15\" :stroke-width=\"2\" />\n </div>\n <div class=\"tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5\">\n <span class=\"tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]\">\n {{ getTitle(feature.key) }}\n </span>\n <span\n class=\"tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]\"\n >\n {{ getDescription(feature.key) }}\n </span>\n </div>\n </button>\n </div>\n</template>\n\n<style scoped>\n.tpl-ai-feature-menu-item:hover {\n background-color: var(--tpl-bg-hover) !important;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useCloudI18nStrict } from \"../../composables\";\nimport { AI_CONFIG_KEY, requireInject } from \"../../keys\";\nimport type { AiConfig } from \"@templatical/types\";\nimport { ImageUp, ShieldCheck, Sparkles } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nexport type AiFeature = \"ai-chat\" | \"design-reference\" | \"scoring\";\n\ndefineProps<{\n activeFeature: AiFeature | null;\n}>();\n\nconst emit = defineEmits<{\n (e: \"select\", feature: AiFeature): void;\n}>();\n\nconst { t: cloudT } = useCloudI18nStrict();\n\nconst aiConfig = requireInject(AI_CONFIG_KEY, \"AiFeatureMenu\");\n\nconst configKeyMap: Record<AiFeature, keyof AiConfig> = {\n \"ai-chat\": \"chat\",\n \"design-reference\": \"designToTemplate\",\n scoring: \"scoring\",\n};\n\nconst allFeatures: { key: AiFeature; icon: typeof Sparkles }[] = [\n { key: \"ai-chat\", icon: Sparkles },\n { key: \"design-reference\", icon: ImageUp },\n { key: \"scoring\", icon: ShieldCheck },\n];\n\nconst features = computed(() =>\n allFeatures.filter((f) => aiConfig.isFeatureEnabled(configKeyMap[f.key])),\n);\n\nfunction getTitle(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistant;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplate;\n return cloudT.aiMenu.templateScore;\n}\n\nfunction getDescription(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistantDesc;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplateDesc;\n return cloudT.aiMenu.templateScoreDesc;\n}\n</script>\n\n<template>\n <div\n 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)]\"\n style=\"backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px)\"\n >\n <button\n v-for=\"feature in features\"\n :key=\"feature.key\"\n 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\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary-light)'\n : 'transparent',\n }\"\n @click=\"emit('select', feature.key)\"\n >\n <div\n 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)]\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary)'\n : 'var(--tpl-bg-active)',\n color:\n activeFeature === feature.key\n ? 'var(--tpl-bg)'\n : 'var(--tpl-text-muted)',\n }\"\n >\n <component :is=\"feature.icon\" :size=\"15\" :stroke-width=\"2\" />\n </div>\n <div class=\"tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5\">\n <span class=\"tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]\">\n {{ getTitle(feature.key) }}\n </span>\n <span\n class=\"tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]\"\n >\n {{ getDescription(feature.key) }}\n </span>\n </div>\n </button>\n </div>\n</template>\n\n<style scoped>\n.tpl-ai-feature-menu-item:hover {\n background-color: var(--tpl-bg-hover) !important;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;EAaA,IAAM,IAAO,GAIP,EAAE,GAAG,MAAW,EAAmB,GAEnC,IAAW,EAAc,GAAe,eAAe,GAEvD,IAAkD;GACtD,WAAW;GACX,oBAAoB;GACpB,SAAS;EACX,GAEM,IAA2D;GAC/D;IAAE,KAAK;IAAW,MAAM;GAAS;GACjC;IAAE,KAAK;IAAoB,MAAM;GAAQ;GACzC;IAAE,KAAK;IAAW,MAAM;GAAY;EACtC,GAEM,IAAW,QACf,EAAY,QAAQ,MAAM,EAAS,iBAAiB,EAAa,EAAE,IAAI,CAAC,CAC1E;EAEA,SAAS,EAAS,GAAwB;GAGxC,OAFI,MAAQ,YAAkB,EAAO,OAAO,cACxC,MAAQ,qBAA2B,EAAO,OAAO,mBAC9C,EAAO,OAAO;EACvB;EAEA,SAAS,EAAe,GAAwB;GAG9C,OAFI,MAAQ,YAAkB,EAAO,OAAO,kBACxC,MAAQ,qBAA2B,EAAO,OAAO,uBAC9C,EAAO,OAAO;EACvB;yBAIE,EA0CM,OA1CN,GA0CM,EAAA,EAAA,EAAA,GAtCJ,EAqCS,GAAA,MAAA,EApCW,EAAA,QAAX,YADT,EAqCS,UAAA;GAnCN,KAAK,EAAQ;GACd,OAAM;GACL,OAAK,EAAA,EAAA,iBAAuC,EAAA,kBAAkB,EAAQ,MAAA,6BAAA,cAAA,CAAA;GAMtE,UAAK,MAAE,EAAI,UAAW,EAAQ,GAAG;MAElC,EAcM,OAAA;GAbJ,OAAM;GACL,OAAK,EAAA;qBAA2C,EAAA,kBAAkB,EAAQ,MAAA,uBAAA;WAA8G,EAAA,kBAAkB,EAAQ,MAAA,kBAAA;;YAWnN,EAA6D,EAA7C,EAAQ,IAAI,GAAA;GAAG,MAAM;GAAK,gBAAc;YAE1D,EASM,OATN,GASM,CARJ,EAEO,QAFP,GAEO,EADF,EAAS,EAAQ,GAAG,CAAA,GAAA,CAAA,GAEzB,EAIO,QAJP,GAIO,EADF,EAAe,EAAQ,GAAG,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { M as e, T as t, f as n, g as r, h as i, it as a, m as o, ot as s, x as c } from "./draggable-D840DIZB.js";
2
- import { At as l, Rt as u, on as d, ut as f } from "./features-CgbSSCgv.js";
2
+ import { At as l, Rt as u, on as d, ut as f } from "./features-C-cjT_8L.js";
3
3
  //#region src/components/canvas/BlockIssueBadge.vue?vue&type=script&setup=true&lang.ts
4
4
  var p = ["title", "aria-label"], m = /* @__PURE__ */ c({
5
5
  __name: "BlockIssueBadge",
@@ -30,4 +30,4 @@ var p = ["title", "aria-label"], m = /* @__PURE__ */ c({
30
30
  //#endregion
31
31
  export { m as default };
32
32
 
33
- //# sourceMappingURL=BlockIssueBadge-ww2vNIfJ.js.map
33
+ //# sourceMappingURL=BlockIssueBadge-DW_Tt7Wg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockIssueBadge-ww2vNIfJ.js","names":[],"sources":["../../../src/components/canvas/BlockIssueBadge.vue","../../../src/components/canvas/BlockIssueBadge.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\nimport { CircleAlert, TriangleAlert } from \"@lucide/vue\";\nimport { useI18n } from \"../../composables/useI18n\";\nimport { TEMPLATE_LINT_KEY } from \"../../keys\";\n\nconst props = defineProps<{ blockId: string }>();\nconst { t } = useI18n();\nconst lint = inject(TEMPLATE_LINT_KEY, null);\n\nconst blockIssues = computed(() =>\n (lint?.issues.value ?? []).filter((i) => i.blockId === props.blockId),\n);\n\nconst severity = computed<\"error\" | \"warning\" | null>(() => {\n if (blockIssues.value.some((i) => i.severity === \"error\")) return \"error\";\n if (blockIssues.value.some((i) => i.severity === \"warning\")) return \"warning\";\n return null;\n});\n\nconst tooltip = computed(() =>\n severity.value === \"error\" ? t.issues.badgeError : t.issues.badgeWarning,\n);\n</script>\n\n<template>\n <span\n v-if=\"severity\"\n class=\"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)]\"\n :class=\"\n severity === 'error'\n ? 'tpl:text-[var(--tpl-danger)]'\n : 'tpl:text-[var(--tpl-warning)]'\n \"\n :title=\"tooltip\"\n :aria-label=\"tooltip\"\n role=\"img\"\n >\n <CircleAlert\n v-if=\"severity === 'error'\"\n :size=\"14\"\n :stroke-width=\"2.25\"\n fill=\"currentColor\"\n stroke=\"var(--tpl-bg)\"\n />\n <TriangleAlert\n v-else\n :size=\"14\"\n :stroke-width=\"2.25\"\n fill=\"currentColor\"\n stroke=\"var(--tpl-bg)\"\n />\n </span>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\nimport { CircleAlert, TriangleAlert } from \"@lucide/vue\";\nimport { useI18n } from \"../../composables/useI18n\";\nimport { TEMPLATE_LINT_KEY } from \"../../keys\";\n\nconst props = defineProps<{ blockId: string }>();\nconst { t } = useI18n();\nconst lint = inject(TEMPLATE_LINT_KEY, null);\n\nconst blockIssues = computed(() =>\n (lint?.issues.value ?? []).filter((i) => i.blockId === props.blockId),\n);\n\nconst severity = computed<\"error\" | \"warning\" | null>(() => {\n if (blockIssues.value.some((i) => i.severity === \"error\")) return \"error\";\n if (blockIssues.value.some((i) => i.severity === \"warning\")) return \"warning\";\n return null;\n});\n\nconst tooltip = computed(() =>\n severity.value === \"error\" ? t.issues.badgeError : t.issues.badgeWarning,\n);\n</script>\n\n<template>\n <span\n v-if=\"severity\"\n class=\"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)]\"\n :class=\"\n severity === 'error'\n ? 'tpl:text-[var(--tpl-danger)]'\n : 'tpl:text-[var(--tpl-warning)]'\n \"\n :title=\"tooltip\"\n :aria-label=\"tooltip\"\n role=\"img\"\n >\n <CircleAlert\n v-if=\"severity === 'error'\"\n :size=\"14\"\n :stroke-width=\"2.25\"\n fill=\"currentColor\"\n stroke=\"var(--tpl-bg)\"\n />\n <TriangleAlert\n v-else\n :size=\"14\"\n :stroke-width=\"2.25\"\n fill=\"currentColor\"\n stroke=\"var(--tpl-bg)\"\n />\n </span>\n</template>\n"],"mappings":";;;;;;;EAMA,IAAM,IAAQ,GACR,EAAE,SAAM,EAAQ,GAChB,IAAO,EAAO,GAAmB,IAAI,GAErC,IAAc,SACjB,GAAM,OAAO,SAAS,CAAC,EAAA,CAAG,QAAQ,MAAM,EAAE,YAAY,EAAM,OAAO,CACtE,GAEM,IAAW,QACX,EAAY,MAAM,MAAM,MAAM,EAAE,aAAa,OAAO,IAAU,UAC9D,EAAY,MAAM,MAAM,MAAM,EAAE,aAAa,SAAS,IAAU,YAC7D,IACR,GAEK,IAAU,QACd,EAAS,UAAU,UAAU,EAAE,OAAO,aAAa,EAAE,OAAO,YAC9D;mBAKU,EAAA,SAAA,EAAA,GADR,EA0BO,QAAA;;GAxBL,OAAK,EAAA,CAAC,yNACS,EAAA,UAAQ,UAAA,iCAAA,+BAAA,CAAA;GAKtB,OAAO,EAAA;GACP,cAAY,EAAA;GACb,MAAK;MAGG,EAAA,UAAQ,WAAA,EAAA,GADhB,EAME,EAAA,CAAA,GAAA;;GAJC,MAAM;GACN,gBAAc;GACf,MAAK;GACL,QAAO;cAET,EAME,EAAA,CAAA,GAAA;;GAJC,MAAM;GACN,gBAAc;GACf,MAAK;GACL,QAAO"}
1
+ {"version":3,"file":"BlockIssueBadge-DW_Tt7Wg.js","names":[],"sources":["../../../src/components/canvas/BlockIssueBadge.vue","../../../src/components/canvas/BlockIssueBadge.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\nimport { CircleAlert, TriangleAlert } from \"@lucide/vue\";\nimport { useI18n } from \"../../composables/useI18n\";\nimport { TEMPLATE_LINT_KEY } from \"../../keys\";\n\nconst props = defineProps<{ blockId: string }>();\nconst { t } = useI18n();\nconst lint = inject(TEMPLATE_LINT_KEY, null);\n\nconst blockIssues = computed(() =>\n (lint?.issues.value ?? []).filter((i) => i.blockId === props.blockId),\n);\n\nconst severity = computed<\"error\" | \"warning\" | null>(() => {\n if (blockIssues.value.some((i) => i.severity === \"error\")) return \"error\";\n if (blockIssues.value.some((i) => i.severity === \"warning\")) return \"warning\";\n return null;\n});\n\nconst tooltip = computed(() =>\n severity.value === \"error\" ? t.issues.badgeError : t.issues.badgeWarning,\n);\n</script>\n\n<template>\n <span\n v-if=\"severity\"\n class=\"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)]\"\n :class=\"\n severity === 'error'\n ? 'tpl:text-[var(--tpl-danger)]'\n : 'tpl:text-[var(--tpl-warning)]'\n \"\n :title=\"tooltip\"\n :aria-label=\"tooltip\"\n role=\"img\"\n >\n <CircleAlert\n v-if=\"severity === 'error'\"\n :size=\"14\"\n :stroke-width=\"2.25\"\n fill=\"currentColor\"\n stroke=\"var(--tpl-bg)\"\n />\n <TriangleAlert\n v-else\n :size=\"14\"\n :stroke-width=\"2.25\"\n fill=\"currentColor\"\n stroke=\"var(--tpl-bg)\"\n />\n </span>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\nimport { CircleAlert, TriangleAlert } from \"@lucide/vue\";\nimport { useI18n } from \"../../composables/useI18n\";\nimport { TEMPLATE_LINT_KEY } from \"../../keys\";\n\nconst props = defineProps<{ blockId: string }>();\nconst { t } = useI18n();\nconst lint = inject(TEMPLATE_LINT_KEY, null);\n\nconst blockIssues = computed(() =>\n (lint?.issues.value ?? []).filter((i) => i.blockId === props.blockId),\n);\n\nconst severity = computed<\"error\" | \"warning\" | null>(() => {\n if (blockIssues.value.some((i) => i.severity === \"error\")) return \"error\";\n if (blockIssues.value.some((i) => i.severity === \"warning\")) return \"warning\";\n return null;\n});\n\nconst tooltip = computed(() =>\n severity.value === \"error\" ? t.issues.badgeError : t.issues.badgeWarning,\n);\n</script>\n\n<template>\n <span\n v-if=\"severity\"\n class=\"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)]\"\n :class=\"\n severity === 'error'\n ? 'tpl:text-[var(--tpl-danger)]'\n : 'tpl:text-[var(--tpl-warning)]'\n \"\n :title=\"tooltip\"\n :aria-label=\"tooltip\"\n role=\"img\"\n >\n <CircleAlert\n v-if=\"severity === 'error'\"\n :size=\"14\"\n :stroke-width=\"2.25\"\n fill=\"currentColor\"\n stroke=\"var(--tpl-bg)\"\n />\n <TriangleAlert\n v-else\n :size=\"14\"\n :stroke-width=\"2.25\"\n fill=\"currentColor\"\n stroke=\"var(--tpl-bg)\"\n />\n </span>\n</template>\n"],"mappings":";;;;;;;EAMA,IAAM,IAAQ,GACR,EAAE,SAAM,EAAQ,GAChB,IAAO,EAAO,GAAmB,IAAI,GAErC,IAAc,SACjB,GAAM,OAAO,SAAS,CAAC,EAAA,CAAG,QAAQ,MAAM,EAAE,YAAY,EAAM,OAAO,CACtE,GAEM,IAAW,QACX,EAAY,MAAM,MAAM,MAAM,EAAE,aAAa,OAAO,IAAU,UAC9D,EAAY,MAAM,MAAM,MAAM,EAAE,aAAa,SAAS,IAAU,YAC7D,IACR,GAEK,IAAU,QACd,EAAS,UAAU,UAAU,EAAE,OAAO,aAAa,EAAE,OAAO,YAC9D;mBAKU,EAAA,SAAA,EAAA,GADR,EA0BO,QAAA;;GAxBL,OAAK,EAAA,CAAC,yNACS,EAAA,UAAQ,UAAA,iCAAA,+BAAA,CAAA;GAKtB,OAAO,EAAA;GACP,cAAY,EAAA;GACb,MAAK;MAGG,EAAA,UAAQ,WAAA,EAAA,GADhB,EAME,EAAA,CAAA,GAAA;;GAJC,MAAM;GACN,gBAAc;GACf,MAAK;GACL,QAAO;cAET,EAME,EAAA,CAAA,GAAA;;GAJC,MAAM;GACN,gBAAc;GACf,MAAK;GACL,QAAO"}
@@ -1,8 +1,8 @@
1
1
  import { $ as e, A as t, H as n, J as r, M as i, N as a, P as o, V as s, Z as c, _ as l, b as u, ct as d, f, g as p, h as m, it as h, j as g, l as _, m as v, n as y, ot as b, p as x, s as S, st as C, u as w, v as T, x as E, y as D, z as O } from "./draggable-D840DIZB.js";
2
- import { A as ee, At as k, E as A, Gt as j, It as M, Kt as N, Ln as P, Nt as F, Rt as I, S as L, Vt as R, Wt as z, Xn as B, Y as V, _ as te, an as ne, b as H, bn as U, bt as W, c as G, d as K, dn as q, et as re, f as J, g as ie, gt as Y, h as ae, in as oe, it as X, jn as se, kt as Z, l as Q, m as ce, nn as le, ot as ue, p as de, pt as fe, s as pe, u as me, ut as he, v as ge, x as _e, xt as ve, y as ye, zt as be } from "./features-CgbSSCgv.js";
3
- import { S as xe, x as Se } from "./icons-Dlx5MT1V.js";
4
- import { a as Ce, c as we, d as Te, f as Ee, i as De, l as Oe, n as ke, o as Ae, r as je, s as Me, t as Ne, u as Pe } from "./styles-D7u4vCpH.js";
5
- import { d as $ } from "./ColorPicker-DmxMDn-t.js";
2
+ import { A as ee, At as k, E as A, Gt as j, It as M, Kt as N, Ln as P, Nt as F, Rt as I, S as L, Vt as R, Wt as z, Xn as B, Y as V, _ as te, an as ne, b as H, bn as U, bt as W, c as G, d as K, dn as q, et as re, f as J, g as ie, gt as Y, h as ae, in as oe, it as X, jn as se, kt as Z, l as Q, m as ce, nn as le, ot as ue, p as de, pt as fe, s as pe, u as me, ut as he, v as ge, x as _e, xt as ve, y as ye, zt as be } from "./features-C-cjT_8L.js";
3
+ import { S as xe, x as Se } from "./icons-ay0_fN-T.js";
4
+ import { a as Ce, c as we, d as Te, f as Ee, i as De, l as Oe, n as ke, o as Ae, r as je, s as Me, t as Ne, u as Pe } from "./styles-DBjy3lz9.js";
5
+ import { d as $ } from "./ColorPicker-BggAWrc9.js";
6
6
  //#region src/cloud/composables/useSnapshotPreview.ts
7
7
  function Fe(t) {
8
8
  let { authManager: n, editor: i, history: a, conditionPreview: o, autoSave: s, onError: l } = t, u = e(null), d = c(null), p = c(null), m = !1;
@@ -175,7 +175,7 @@ function ze(e) {
175
175
  let t = f(e);
176
176
  if (t) return s?.(t), null;
177
177
  try {
178
- let { MediaApiClient: t } = await import("./src-CAdirukY.js");
178
+ let { MediaApiClient: t } = await import("./src-Cehu7Hqx.js");
179
179
  return l(await new t(a).uploadMedia(e));
180
180
  } catch (e) {
181
181
  return s?.(e), null;
@@ -595,7 +595,7 @@ var We = ["aria-label"], Ge = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
595
595
  },
596
596
  emits: ["save"],
597
597
  setup(e) {
598
- let t = u(() => import("./CollaboratorBar-BFrAua9a.js")), n = u(() => import("./features-CgbSSCgv.js").then((e) => e.r)), r = u(() => import("./AiFeatureMenu-W7VQFAwq.js")), { t: a, format: o } = X();
598
+ let t = u(() => import("./CollaboratorBar-Dyrab63H.js")), n = u(() => import("./features-C-cjT_8L.js").then((e) => e.r)), r = u(() => import("./AiFeatureMenu-roPglhox.js")), { t: a, format: o } = X();
599
599
  return (c, l) => (i(), p("header", et, [
600
600
  x("div", tt, [e.featureFlags.templateLimit.value === null ? m("", !0) : (i(), p("span", nt, d(h(o)(h(a).header.templatesUsed, {
601
601
  used: e.featureFlags.templateCount.value,
@@ -757,9 +757,9 @@ var We = ["aria-label"], Ge = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
757
757
  "module-insert"
758
758
  ],
759
759
  setup(e, { expose: t, emit: n }) {
760
- let r = u(() => import("./features-CgbSSCgv.js").then((e) => e.o)), a = u(() => import("./features-CgbSSCgv.js").then((e) => e.a)), o = u(() => import("./features-CgbSSCgv.js").then((e) => e.i)), s = u(() => import("./features-CgbSSCgv.js").then((e) => e.n)), l = u(() => import("./features-CgbSSCgv.js").then((e) => e.t)), d = u(() => import("./SaveModuleDialog-7f9uUUEC.js")), f = u(() => import("./ModuleBrowserModal-B5sCsrud.js")), g = u(async () => {
760
+ let r = u(() => import("./features-C-cjT_8L.js").then((e) => e.o)), a = u(() => import("./features-C-cjT_8L.js").then((e) => e.a)), o = u(() => import("./features-C-cjT_8L.js").then((e) => e.i)), s = u(() => import("./features-C-cjT_8L.js").then((e) => e.n)), l = u(() => import("./features-C-cjT_8L.js").then((e) => e.t)), d = u(() => import("./SaveModuleDialog-Cw-182CB.js")), f = u(() => import("./ModuleBrowserModal-BGd5Ryyx.js")), g = u(async () => {
761
761
  try {
762
- return (await import("./src-CAdirukY.js")).MediaLibraryModal;
762
+ return (await import("./src-Cehu7Hqx.js")).MediaLibraryModal;
763
763
  } catch {
764
764
  throw Error("[Templatical] Cloud media library requires the optional peer dependency '@templatical/media-library'. Please install it.");
765
765
  }
@@ -1200,4 +1200,4 @@ var We = ["aria-label"], Ge = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1200
1200
  //#endregion
1201
1201
  export { It as default };
1202
1202
 
1203
- //# sourceMappingURL=CloudEditor-BVSJ1kvB.js.map
1203
+ //# sourceMappingURL=CloudEditor-CX6y1k3C.js.map