@popcraft/kit 0.30.0 → 0.32.0

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 (201) hide show
  1. package/dist/chunks/{agent-CGSIEC2R.js → agent-LNZDZLDR.js} +1 -1
  2. package/dist/chunks/{build-AUXXY3JX.js → build-AKMRSWRB.js} +2 -2
  3. package/dist/chunks/{builtin-Q5UN4DWS.js → builtin-KY56DU2Y.js} +3 -3
  4. package/dist/chunks/{check-template-2EKU4JL7.js → check-template-OYCBJNDF.js} +2 -2
  5. package/dist/chunks/{chunk-YT6TGRM4.js → chunk-2PEG56PC.js} +40 -26
  6. package/dist/chunks/{chunk-KOKO3HTP.js → chunk-3NI5OGFT.js} +1 -1
  7. package/dist/chunks/{chunk-TQPKOPCW.js → chunk-3ZO43HDI.js} +2 -2
  8. package/dist/chunks/{chunk-MJ6VIF3D.js → chunk-4X5G4QPZ.js} +1 -1
  9. package/dist/chunks/{chunk-3MAEAHID.js → chunk-6CRT7IDI.js} +2 -2
  10. package/dist/chunks/chunk-6S72I27Z.js +194 -0
  11. package/dist/chunks/chunk-7DKGI65Y.js +305 -0
  12. package/dist/chunks/chunk-APBRV4W6.js +71 -0
  13. package/dist/chunks/{chunk-AN3H4JWT.js → chunk-APVJKUJP.js} +4 -4
  14. package/dist/chunks/chunk-CGNNKKW7.js +70 -0
  15. package/dist/chunks/{chunk-IPEOO7PN.js → chunk-CKBPEGTH.js} +2 -2
  16. package/dist/chunks/chunk-COJM27N2.js +73 -0
  17. package/dist/chunks/chunk-CVB5F7FJ.js +92 -0
  18. package/dist/chunks/{chunk-DVX7UAKA.js → chunk-DQ7AF2R5.js} +1 -1
  19. package/dist/chunks/{chunk-UHQTNURS.js → chunk-DVD56API.js} +5 -5
  20. package/dist/chunks/{chunk-UM6QUOOH.js → chunk-DZIPU2Q4.js} +3 -3
  21. package/dist/chunks/{chunk-7QYQVENQ.js → chunk-FC2FGSU2.js} +5 -5
  22. package/dist/chunks/{chunk-T2GF6JE3.js → chunk-GAZ57RX2.js} +1 -1
  23. package/dist/chunks/{chunk-R3D5OMSG.js → chunk-GF6N47NL.js} +1 -1
  24. package/dist/chunks/{chunk-3DNAX4HN.js → chunk-HBPURYPZ.js} +2 -2
  25. package/dist/chunks/{chunk-7J4MGACN.js → chunk-HN2A65AT.js} +10 -10
  26. package/dist/chunks/{chunk-HST5H23G.js → chunk-JRQ4ZPRK.js} +1 -1
  27. package/dist/chunks/chunk-LP7LPUQJ.js +81 -0
  28. package/dist/chunks/chunk-M2LWLS56.js +65 -0
  29. package/dist/chunks/{chunk-GT5X67P7.js → chunk-MFPMMKHP.js} +7 -7
  30. package/dist/chunks/{chunk-LE33OZ4V.js → chunk-N2RBQBUE.js} +43 -43
  31. package/dist/chunks/{chunk-DUYDXAR5.js → chunk-O3W7HYS7.js} +1 -1
  32. package/dist/chunks/chunk-OXI222BA.js +54 -0
  33. package/dist/chunks/chunk-P23KECK3.js +57 -0
  34. package/dist/chunks/{chunk-LNQN4PGS.js → chunk-P5M5QCAJ.js} +24 -24
  35. package/dist/chunks/{chunk-X3HT5IHG.js → chunk-POZOGQG7.js} +11 -11
  36. package/dist/chunks/{chunk-K7OOOI7B.js → chunk-QGE2XW66.js} +4 -4
  37. package/dist/chunks/{chunk-STG7FEIQ.js → chunk-S4Y3VMQH.js} +3 -3
  38. package/dist/chunks/chunk-UBT4DZYW.js +304 -0
  39. package/dist/chunks/chunk-UJTTWR5P.js +71 -0
  40. package/dist/chunks/{chunk-652VC4P7.js → chunk-UNAAYJKD.js} +39 -39
  41. package/dist/chunks/{chunk-AXKXWL35.js → chunk-WKKHCEXN.js} +5 -5
  42. package/dist/chunks/chunk-X22CGIKE.js +75 -0
  43. package/dist/chunks/chunk-X4UI5JKC.js +74 -0
  44. package/dist/chunks/chunk-XQJ2VVC6.js +69 -0
  45. package/dist/chunks/{chunk-CQ6QGYKJ.js → chunk-YI7HCLNY.js} +1 -1
  46. package/dist/chunks/{chunk-CVWIMZTL.js → chunk-YOYWFBRJ.js} +53 -53
  47. package/dist/chunks/chunk-ZBFR7DBR.js +70 -0
  48. package/dist/chunks/{chunk-KO24NRJ5.js → chunk-ZW7KTUDU.js} +2 -2
  49. package/dist/chunks/chunk-ZY3DR3P6.js +63 -0
  50. package/dist/chunks/chunk-ZYNF7B6N.js +70 -0
  51. package/dist/chunks/{client-NBSGVJPN.js → client-ORABD53R.js} +2 -2
  52. package/dist/chunks/{client-5YPZUV5L.js → client-YF3PYAFZ.js} +2 -2
  53. package/dist/chunks/{client-3FYDPRVC.js → client-YOSPARZX.js} +1 -1
  54. package/dist/chunks/{client-actions-J2SQWW4O.js → client-actions-LYJHQ4IE.js} +4 -4
  55. package/dist/chunks/{dangerous-3EDPWONV.js → dangerous-VCZB63L6.js} +3 -3
  56. package/dist/chunks/{editor-seams-NG3BESM6.js → editor-seams-4PF6BD4R.js} +9 -9
  57. package/dist/chunks/{editor-store-NDV4IXDK.js → editor-store-UAEROYSB.js} +1 -1
  58. package/dist/chunks/{export-watermark-SNBNUS3L.js → export-watermark-2N7ALJXN.js} +5 -5
  59. package/dist/chunks/{eyedropper-L5DVFZV5.js → eyedropper-3P75IZGM.js} +1 -1
  60. package/dist/chunks/{generate-media-ASNNFDML.js → generate-media-DYXU4BZL.js} +2 -2
  61. package/dist/chunks/{host-5DYGKFJ7.js → host-J4QG5WB7.js} +6 -6
  62. package/dist/chunks/{integrations-2BG5XVX3.js → integrations-KGJ2HE6V.js} +1 -1
  63. package/dist/chunks/{kit-modules-NMONCEP4.js → kit-modules-4HQU5EI2.js} +1 -1
  64. package/dist/chunks/{libraries-QV4QPEYK.js → libraries-NIRTR2IA.js} +5 -5
  65. package/dist/chunks/{live-EI26E2RB.js → live-XZKNAJ2I.js} +3 -3
  66. package/dist/chunks/{media-tool-OVVKBD3N.js → media-tool-YFIYMYI5.js} +1 -1
  67. package/dist/chunks/{new-file-DX5L4NF6.js → new-file-RNWHN4S6.js} +3 -3
  68. package/dist/chunks/{plugin-P6FYIVKR.js → plugin-AN5GLVH5.js} +2 -2
  69. package/dist/chunks/{plugin-import-V2ORN2OW.js → plugin-import-J5ZNYSIY.js} +13 -13
  70. package/dist/chunks/{presence-YNIJGI73.js → presence-YNSLRFAM.js} +2 -2
  71. package/dist/chunks/{project-UK457FEX.js → project-HSN7DOPK.js} +1 -1
  72. package/dist/chunks/{publish-site-E4A557HC.js → publish-site-T2C4IDD2.js} +6 -6
  73. package/dist/chunks/{publish-store-U5SDQCU4.js → publish-store-I2FOGDDF.js} +4 -4
  74. package/dist/chunks/{raster-actions-4E7H3G62.js → raster-actions-IVIGDYQU.js} +1 -1
  75. package/dist/chunks/{runner-DHWGPGPD.js → runner-IOXTGHBT.js} +16 -16
  76. package/dist/chunks/{store-CUL3XS5L.js → store-ZVOK3773.js} +5 -5
  77. package/dist/chunks/{sync-U23VGFOY.js → sync-XT2ZCTVE.js} +5 -5
  78. package/dist/chunks/{tabs-K6MESOUX.js → tabs-RIIW7KNI.js} +8 -8
  79. package/dist/chunks/{team-7APVVP43.js → team-KM3FZ6AU.js} +1 -1
  80. package/dist/chunks/{team-client-XTH5DXVW.js → team-client-2EXJKRDB.js} +1 -1
  81. package/dist/chunks/{tools-PE6DEYSG.js → tools-5ISIPPXP.js} +2 -2
  82. package/dist/chunks/{ui-commands-WQJFLB5K.js → ui-commands-GYCIF7UQ.js} +11 -11
  83. package/dist/chunks/{versions-Y4F3IO37.js → versions-JCQTXXUB.js} +5 -5
  84. package/dist/fonts/chars.txt +1 -1
  85. package/dist/index.js +4 -4
  86. package/dist/seed/files.json +1 -1
  87. package/dist/seed/popcraft.comic-nested.json.gz +0 -0
  88. package/dist/seed/popcraft.comic-pinup.json.gz +0 -0
  89. package/dist/templates/count.js +1 -1
  90. package/dist/templates/index.js +226 -210
  91. package/dist/templates/index.json +663 -0
  92. package/dist/templates/motion/landing-hero/index.js +4 -4
  93. package/dist/templates/motion/launch-trailer/document.js +226 -210
  94. package/dist/templates/motion/launch-trailer/index.js +4 -4
  95. package/dist/templates/motion/launch-trailer/scenes.js +3 -3
  96. package/dist/templates/motion/template-wall.js +2 -2
  97. package/dist/templates/print/comic-hero-cascade.js +100 -0
  98. package/dist/templates/print/comic-hero-chase.js +100 -0
  99. package/dist/templates/print/comic-hero-cover-modern.js +100 -0
  100. package/dist/templates/print/comic-hero-grid-break.js +100 -0
  101. package/dist/templates/print/comic-hero-interrogation.js +100 -0
  102. package/dist/templates/print/comic-hero-issue.js +109 -0
  103. package/dist/templates/print/comic-hero-manga-action.js +100 -0
  104. package/dist/templates/print/comic-hero-nested.js +100 -0
  105. package/dist/templates/print/comic-hero-overlap.js +100 -0
  106. package/dist/templates/print/comic-hero-parallel.js +100 -0
  107. package/dist/templates/print/comic-hero-pinup.js +100 -0
  108. package/dist/templates/print/comic-hero-widescreen.js +100 -0
  109. package/dist/templates/print/comic-modern-issue.js +4 -4
  110. package/dist/templates/saas/email-decks.js +2 -2
  111. package/dist/templates/saas/index.js +62 -62
  112. package/dist/templates/saas/launch-kit.js +5 -5
  113. package/dist/templates/saas/launch-video.js +2 -2
  114. package/dist/templates/saas/stores.js +4 -4
  115. package/dist/templates/slideshow/index.js +3 -3
  116. package/dist/templates/themes/bauhaus.js +2 -2
  117. package/dist/templates/themes/black-friday-coupons.js +2 -2
  118. package/dist/templates/themes/blueprint.js +2 -2
  119. package/dist/templates/themes/claymation.js +2 -2
  120. package/dist/templates/themes/comic-book.js +5 -5
  121. package/dist/{chunks/chunk-ATEECJLR.js → templates/themes/comic-hero-art.js} +11 -9
  122. package/dist/templates/themes/comic-hero-page.js +67 -0
  123. package/dist/templates/themes/comic-hero.js +97 -1
  124. package/dist/{chunks/chunk-ODXZPZKI.js → templates/themes/comic-indie-art.js} +7 -9
  125. package/dist/templates/themes/comic-indie-page.js +47 -0
  126. package/dist/templates/themes/comic-indie.js +85 -1
  127. package/dist/templates/themes/cyberpunk.js +2 -2
  128. package/dist/templates/themes/everyday.js +2 -2
  129. package/dist/templates/themes/festival-presale-family-a.js +2 -2
  130. package/dist/templates/themes/festival-presale-family-b.js +2 -2
  131. package/dist/templates/themes/holidays.js +11 -11
  132. package/dist/templates/themes/index.js +127 -111
  133. package/dist/templates/themes/lunar-new-year.js +2 -2
  134. package/dist/templates/themes/manuscript.js +2 -2
  135. package/dist/templates/themes/memories.js +5 -5
  136. package/dist/templates/themes/noir.js +2 -2
  137. package/dist/templates/themes/printshop.js +14 -14
  138. package/dist/templates/themes/psychedelic.js +2 -2
  139. package/dist/templates/themes/space-opera.js +2 -2
  140. package/dist/templates/themes/studio.js +2 -2
  141. package/dist/templates/themes/tour-tickets.js +2 -2
  142. package/package.json +1 -1
  143. package/src/templates/print/comic-hero-cascade.ts +42 -0
  144. package/src/templates/print/comic-hero-chase.ts +42 -0
  145. package/src/templates/print/comic-hero-cover-modern.ts +34 -0
  146. package/src/templates/print/comic-hero-grid-break.ts +39 -0
  147. package/src/templates/print/comic-hero-interrogation.ts +41 -0
  148. package/src/templates/print/comic-hero-issue.ts +44 -0
  149. package/src/templates/print/comic-hero-manga-action.ts +38 -0
  150. package/src/templates/print/comic-hero-nested.ts +39 -0
  151. package/src/templates/print/comic-hero-overlap.ts +40 -0
  152. package/src/templates/print/comic-hero-parallel.ts +40 -0
  153. package/src/templates/print/comic-hero-pinup.ts +29 -0
  154. package/src/templates/print/comic-hero-widescreen.ts +35 -0
  155. package/src/templates/themes/comic-hero-art.ts +66 -0
  156. package/src/templates/themes/comic-hero-page.ts +326 -0
  157. package/src/templates/themes/comic-hero.ts +15 -2
  158. package/src/templates/themes/comic-indie-art.ts +73 -0
  159. package/src/templates/themes/comic-indie-page.ts +182 -0
  160. package/src/templates/themes/comic-indie.ts +280 -2
  161. package/types/templates/src/print/comic-hero-cascade.d.ts +5 -0
  162. package/types/templates/src/print/comic-hero-chase.d.ts +5 -0
  163. package/types/templates/src/print/comic-hero-cover-modern.d.ts +5 -0
  164. package/types/templates/src/print/comic-hero-grid-break.d.ts +5 -0
  165. package/types/templates/src/print/comic-hero-interrogation.d.ts +5 -0
  166. package/types/templates/src/print/comic-hero-issue.d.ts +2 -0
  167. package/types/templates/src/print/comic-hero-manga-action.d.ts +5 -0
  168. package/types/templates/src/print/comic-hero-nested.d.ts +5 -0
  169. package/types/templates/src/print/comic-hero-overlap.d.ts +5 -0
  170. package/types/templates/src/print/comic-hero-parallel.d.ts +5 -0
  171. package/types/templates/src/print/comic-hero-pinup.d.ts +5 -0
  172. package/types/templates/src/print/comic-hero-widescreen.d.ts +5 -0
  173. package/types/templates/src/themes/comic-hero-art.d.ts +318 -0
  174. package/types/templates/src/themes/comic-hero-page.d.ts +177 -0
  175. package/types/templates/src/themes/comic-indie-art.d.ts +371 -0
  176. package/types/templates/src/themes/comic-indie-page.d.ts +125 -0
  177. package/dist/chunks/{chunk-BAZUZXS6.js → chunk-2BVGM5PJ.js} +3 -3
  178. package/dist/chunks/{chunk-WXY6LWRB.js → chunk-2J3PCCBE.js} +3 -3
  179. package/dist/chunks/{chunk-RH6WJNB4.js → chunk-2ZOSBENB.js} +3 -3
  180. package/dist/chunks/{chunk-FLXSWF6O.js → chunk-5GSRWIV2.js} +3 -3
  181. package/dist/chunks/{chunk-2WCMIJSA.js → chunk-5NGWNEKU.js} +3 -3
  182. package/dist/chunks/{chunk-IUK367P7.js → chunk-5PSOLUKI.js} +0 -0
  183. package/dist/chunks/{chunk-RUBJMQMF.js → chunk-7A3MIEOO.js} +3 -3
  184. package/dist/chunks/{chunk-R66IPFG4.js → chunk-7D46BJKY.js} +32 -32
  185. package/dist/chunks/{chunk-6H5ULKBL.js → chunk-7KFQX6N5.js} +3 -3
  186. package/dist/chunks/{chunk-EWGXFNXM.js → chunk-DF5IDTZB.js} +3 -3
  187. package/dist/chunks/{chunk-VT7UU3UP.js → chunk-ESV3AAQ4.js} +3 -3
  188. package/dist/chunks/{chunk-UJORPKRW.js → chunk-GN5W7TJD.js} +3 -3
  189. package/dist/chunks/{chunk-HQAHQJHQ.js → chunk-IPRJUV2O.js} +9 -9
  190. package/dist/chunks/{chunk-JVKC6UFV.js → chunk-KWXWK2LA.js} +3 -3
  191. package/dist/chunks/{chunk-PN6KHUSF.js → chunk-LOQNCZFE.js} +3 -3
  192. package/dist/chunks/{chunk-AKCMEBIQ.js → chunk-MNN76UQS.js} +12 -12
  193. package/dist/chunks/{chunk-ZRK4E77C.js → chunk-OGZJE5X2.js} +3 -3
  194. package/dist/chunks/{chunk-OTJJNSLB.js → chunk-PEDQKANG.js} +3 -3
  195. package/dist/chunks/{chunk-LDIYJJ24.js → chunk-PTRN7H4N.js} +11 -11
  196. package/dist/chunks/{chunk-J3XCBROI.js → chunk-QQMSM7EK.js} +3 -3
  197. package/dist/chunks/{chunk-FRFW37G6.js → chunk-TBIZI5NH.js} +3 -3
  198. package/dist/chunks/{chunk-BSX52WVT.js → chunk-UTFC2DI3.js} +8 -8
  199. package/dist/chunks/{chunk-GTR25NJ5.js → chunk-XIIFQUWN.js} +3 -3
  200. package/dist/chunks/{chunk-PGUAHUFE.js → chunk-XTFV46GB.js} +9 -9
  201. package/dist/chunks/{chunk-4ENF3NH3.js → chunk-ZLVYZPUR.js} +28 -28
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-26U2C2WG.js";
14
14
  import {
15
15
  notice
16
- } from "./chunk-3MAEAHID.js";
16
+ } from "./chunk-6CRT7IDI.js";
17
17
  import {
18
18
  effectiveChatModel,
19
19
  setModelPref,
@@ -21,7 +21,7 @@ import {
21
21
  } from "./chunk-TE56ZVPG.js";
22
22
  import {
23
23
  useEditorStore
24
- } from "./chunk-AXKXWL35.js";
24
+ } from "./chunk-WKKHCEXN.js";
25
25
  import {
26
26
  create
27
27
  } from "./chunk-RSE6FJ2C.js";
@@ -1477,7 +1477,7 @@ async function sendMessage(text) {
1477
1477
  if (!useAgentStore.getState().activeThreadId) newThread();
1478
1478
  const mentions = pruneMentions(body, useAgentStore.getState().draftMentions);
1479
1479
  useAgentStore.setState({ draft: "", draftMentions: [], error: null });
1480
- const { runTurn } = await import("./runner-DHWGPGPD.js");
1480
+ const { runTurn } = await import("./runner-IOXTGHBT.js");
1481
1481
  await runTurn(body, mentions);
1482
1482
  }
1483
1483
  function stop() {
@@ -1580,7 +1580,7 @@ var clearTaskChildren = () => useAgentStore.setState({ taskChildren: {} });
1580
1580
  function subscribeChildTools() {
1581
1581
  let dispose;
1582
1582
  let cancelled = false;
1583
- void import("./runner-DHWGPGPD.js").then(({ onChildTool }) => {
1583
+ void import("./runner-IOXTGHBT.js").then(({ onChildTool }) => {
1584
1584
  const off = onChildTool((report) => {
1585
1585
  if (report?.status !== "running" || report.jobId) return;
1586
1586
  recordChildTool(report.toolCallId ?? "", report.name);
@@ -9,7 +9,7 @@ import {
9
9
  hostEnv,
10
10
  plain,
11
11
  registerBuiltinCommands
12
- } from "./chunk-LE33OZ4V.js";
12
+ } from "./chunk-N2RBQBUE.js";
13
13
  import {
14
14
  storeOpsSeam
15
15
  } from "./chunk-6UOKX2MB.js";
@@ -572,7 +572,7 @@ var commands = [
572
572
  const [{ storefrontInputs }, { STOREFRONT_TARGETS }, { bytesOf }, { zipFiles }, { EXPORT_NODE_CAP }] = await Promise.all([
573
573
  import("./storefront-prepare-WKX3DJCF.js"),
574
574
  import("./storefront-MZM2W5DF.js"),
575
- import("./project-UK457FEX.js"),
575
+ import("./project-HSN7DOPK.js"),
576
576
  import("./zip-export-NMJUBE3M.js"),
577
577
  import("./tree-IPKR3HPF.js")
578
578
  ]);
@@ -769,7 +769,7 @@ var pluginRun = defineCommand({
769
769
  }
770
770
  },
771
771
  run: async (p, ctx) => {
772
- const { runPlugin } = await import("./host-5DYGKFJ7.js");
772
+ const { runPlugin } = await import("./host-J4QG5WB7.js");
773
773
  await runPlugin(p.pluginId, p.commandId);
774
774
  ctx.notice(`Started ${p.pluginId}.`);
775
775
  return {
@@ -0,0 +1,304 @@
1
+ import { createRequire as __popcraftRequire } from 'node:module';
2
+ import { fileURLToPath as __popcraftPath } from 'node:url';
3
+ import { dirname as __popcraftDirname } from 'node:path';
4
+ const require = __popcraftRequire(import.meta.url);
5
+ const __filename = __popcraftPath(import.meta.url);
6
+ const __dirname = __popcraftDirname(__filename);
7
+ import {
8
+ art
9
+ } from "./chunk-X22CGIKE.js";
10
+ import {
11
+ init_define_POPCRAFT_COMPONENT_IDS
12
+ } from "./chunk-FFS4SO7R.js";
13
+
14
+ // templates/src/themes/comic-hero-page.ts
15
+ init_define_POPCRAFT_COMPONENT_IDS();
16
+ var COLORS = {
17
+ paper: "#F1ECE2",
18
+ text: "#0E0D10",
19
+ onPaper: "#3A3640",
20
+ primary: "#C8102E",
21
+ onPrimary: "#FFFFFF",
22
+ accent: "#F5C518",
23
+ onAccent: "#0E0D10",
24
+ card: "#FFFFFF",
25
+ onCard: "#0E0D10"
26
+ };
27
+ var STORY = { title: "Nightstar", series: "Blackout", issue: "No. 1" };
28
+ function comicSetup(k, o = {}) {
29
+ k.quantizeGeometry = true;
30
+ k.brand({ ...COLORS, ...o.paper ? { paper: o.paper } : {} }, { title: STORY.title, series: STORY.series, issue: STORY.issue });
31
+ k.palette({ heroG1: "#1B2238", heroG2: "#2E2A26", heroG3: "#3A1F24", heroInk: "#0E0D10" });
32
+ k.textStyle("Lettering", { size: 12, fontWeight: 800, lineHeight: 14, letterSpacing: 0, textAlign: "CENTER" });
33
+ k.textStyle("Caption", { size: 11, fontWeight: 700, lineHeight: 14, letterSpacing: 0 });
34
+ const line = 2.5;
35
+ for (const [suffix, bw] of BALLOON_WIDTHS) {
36
+ k.component(`Speech balloon${suffix}`, { width: bw, padding: { top: 11, right: 14, bottom: 13, left: 14 }, radius: 22, fill: "card", stroke: { color: "onCard", width: line, align: "INSIDE" }, align: "CENTER", props: { Text: "SAY SOMETHING." } }, (id) => {
37
+ k.propText(id, "Text", { style: "Lettering", color: "onCard", align: "CENTER", width: "FILL" });
38
+ });
39
+ k.component(`Thought balloon${suffix}`, { width: bw, padding: { top: 14, right: 16, bottom: 15, left: 16 }, radius: 26, fill: "card", stroke: { color: "onCard", width: line, align: "INSIDE", dash: [3, 4] }, align: "CENTER", props: { Text: "WONDER ABOUT IT." } }, (id) => {
40
+ k.propText(id, "Text", { style: "Lettering", color: "onCard", align: "CENTER", width: "FILL" });
41
+ });
42
+ }
43
+ }
44
+ var DISPLAY = {
45
+ "SFX": { size: 30, fontWeight: 900, fontStyle: "italic", lineHeight: 30, letterSpacing: -1, textAlign: "CENTER" },
46
+ "SFX big": { size: 64, fontWeight: 900, fontStyle: "italic", lineHeight: 60, letterSpacing: -2.5, textAlign: "CENTER" },
47
+ "Masthead": { size: 70, fontWeight: 900, lineHeight: 64, letterSpacing: -3.5, textAlign: "CENTER" },
48
+ "Title": { size: 30, fontWeight: 900, lineHeight: 30, letterSpacing: -1 },
49
+ "Credit": { size: 10, fontWeight: 700, lineHeight: 12, letterSpacing: 1 }
50
+ };
51
+ var made = /* @__PURE__ */ new WeakMap();
52
+ function display(k, name) {
53
+ const set = made.get(k) ?? /* @__PURE__ */ new Set();
54
+ made.set(k, set);
55
+ if (!set.has(name)) {
56
+ k.textStyle(name, DISPLAY[name]);
57
+ set.add(name);
58
+ }
59
+ return name;
60
+ }
61
+ var BALLOON_WIDTHS = [[" (small)", 96], ["", 128], [" (wide)", 160]];
62
+ var balloonFor = (w) => BALLOON_WIDTHS.find(([, bw]) => w <= bw) ?? BALLOON_WIDTHS[BALLOON_WIDTHS.length - 1];
63
+ var rectFrame = (x, y, width, height) => ({ x, y, width, height, points: [{ x: 0, y: 0 }, { x: width, y: 0 }, { x: width, y: height }, { x: 0, y: height }] });
64
+ function frameOf(corners) {
65
+ const xs = corners.map((p) => p.x), ys = corners.map((p) => p.y);
66
+ const x = Math.min(...xs), y = Math.min(...ys);
67
+ return { x: Math.round(x), y: Math.round(y), width: Math.round(Math.max(...xs) - x), height: Math.round(Math.max(...ys) - y), points: corners.map((p) => ({ x: Math.round(p.x - x), y: Math.round(p.y - y) })) };
68
+ }
69
+ function shares(total, gutter, parts) {
70
+ const sum = parts.reduce((a, b) => a + b, 0), free = total - gutter * (parts.length - 1);
71
+ const out = parts.map((p) => Math.floor(free * p / sum));
72
+ out[out.length - 1] = free - out.slice(0, -1).reduce((a, b) => a + b, 0);
73
+ return out;
74
+ }
75
+ function tier(width, height, parts, gutter = 10, y = 0) {
76
+ let x = 0;
77
+ return shares(width, gutter, parts).map((w) => {
78
+ const f = rectFrame(x, y, w, height);
79
+ x += w + gutter;
80
+ return f;
81
+ });
82
+ }
83
+ function slantTier(width, height, parts, lean = 24, gutter = 10, y = 0) {
84
+ const widths = shares(width, gutter, parts), edges = [0];
85
+ widths.forEach((w, i) => edges.push(edges[i] + w + (i < widths.length - 1 ? gutter : 0)));
86
+ return widths.map((_, i) => {
87
+ const first = i === 0, last = i === widths.length - 1;
88
+ const lTop = first ? 0 : edges[i] + lean, lBot = first ? 0 : edges[i] - lean;
89
+ const rTop = last ? width : edges[i + 1] - gutter + lean, rBot = last ? width : edges[i + 1] - gutter - lean;
90
+ return frameOf([{ x: lTop, y }, { x: rTop, y }, { x: rBot, y: y + height }, { x: lBot, y: y + height }]);
91
+ });
92
+ }
93
+ function tilted(x, y, w, h, dyTop, dyBot) {
94
+ return frameOf([{ x, y: y + Math.max(0, -dyTop) }, { x: x + w, y: y + Math.max(0, dyTop) }, { x: x + w, y: y + h - Math.max(0, -dyBot) }, { x, y: y + h - Math.max(0, dyBot) }]);
95
+ }
96
+ function wedgeRing(cx, cy, rIn, rOut, from, to) {
97
+ const pts = [], steps = 12;
98
+ for (let i = 0; i <= steps; i++) {
99
+ const a = (from + (to - from) * i / steps) * Math.PI / 180;
100
+ pts.push({ x: cx + rOut * Math.cos(a), y: cy + rOut * Math.sin(a) });
101
+ }
102
+ for (let i = steps; i >= 0; i--) {
103
+ const a = (from + (to - from) * i / steps) * Math.PI / 180;
104
+ pts.push({ x: cx + rIn * Math.cos(a), y: cy + rIn * Math.sin(a) });
105
+ }
106
+ return frameOf(pts);
107
+ }
108
+ function disc(cx, cy, r) {
109
+ return frameOf(Array.from({ length: 36 }, (_, i) => ({ x: cx + r * Math.cos(i * Math.PI / 18), y: cy + r * Math.sin(i * Math.PI / 18) })));
110
+ }
111
+ function inflate(points, by) {
112
+ const cx = points.reduce((a, p) => a + p.x, 0) / points.length, cy = points.reduce((a, p) => a + p.y, 0) / points.length;
113
+ return points.map((p) => {
114
+ const dx = p.x - cx, dy = p.y - cy, d = Math.max(1, Math.hypot(dx, dy));
115
+ return { x: p.x + dx / d * by, y: p.y + dy / d * by };
116
+ });
117
+ }
118
+ function pageGrid(k, sheet, margin, gutter) {
119
+ k.flowSheet(sheet, gutter, margin);
120
+ const n = k.node(sheet);
121
+ return { W: n.width - margin * 2, H: n.height - margin * 2 };
122
+ }
123
+ var tierBox = (k, sheet, W, h, name) => k.stack(sheet, { width: W, height: h, name });
124
+ var rows = (H, gutter, parts) => shares(H, gutter, parts);
125
+ function panel(k, tierId, f, pic, o) {
126
+ if (o.keyline) {
127
+ const inTier = f.points.map((p) => ({ x: p.x + f.x, y: p.y + f.y }));
128
+ const grown = inflate(inTier, o.keyline);
129
+ const xs = grown.map((p) => p.x), ys = grown.map((p) => p.y), gx = Math.max(0, Math.min(...xs)), gy = Math.max(0, Math.min(...ys));
130
+ const tierN = k.node(tierId);
131
+ const clamp = grown.map((p) => ({ x: Math.min(tierN.width, Math.max(0, p.x)) - gx, y: Math.min(tierN.height, Math.max(0, p.y)) - gy }));
132
+ const bw = Math.max(...clamp.map((p) => p.x)), bh = Math.max(...clamp.map((p) => p.y));
133
+ k.vector(tierId, bw, bh, [{ closed: true, points: clamp }], "paper", { name: "Keyline", absolute: { x: gx, y: gy } });
134
+ }
135
+ const id = k.group(tierId, { x: f.x, y: f.y, width: f.width, height: f.height }, { name: o.name ?? "Panel", absolute: true });
136
+ k.patch(id, { isMaskGroup: true, isPhotoFrame: true });
137
+ const shape = { closed: true, points: f.points.map((p) => ({ x: p.x, y: p.y })) };
138
+ k.vector(id, f.width, f.height, [shape], "paper", { name: "Panel mask", mask: true });
139
+ k.rect(id, f.width, f.height, o.ground, { name: "Ground" });
140
+ k.image(id, art(pic), f.width, f.height, { name: "Picture" });
141
+ if (o.edge !== false) k.vector(id, f.width, f.height, [shape], [], { name: "Panel edge", stroke: { color: "heroInk", width: 3, join: "MITER" } });
142
+ return id;
143
+ }
144
+ function say(k, tierId, words, o) {
145
+ const [suffix, w] = balloonFor(o.width ?? 128);
146
+ o = { ...o, ...within(k, tierId, o.x, o.y, w, 70) };
147
+ if (o.to) {
148
+ const root = { x: o.x + w * 0.5 + (o.to.x > o.x + w / 2 ? w * 0.12 : -w * 0.12), y: o.y + 16 };
149
+ const lines = Math.ceil(words.length * 6.6 / (w - 28)), foot2 = o.y + 24 + lines * 14;
150
+ const dist = Math.hypot(o.to.x - root.x, o.to.y - root.y) || 1, reach = Math.min(dist, Math.max(foot2 - root.y + 30, 34));
151
+ o = { ...o, to: { x: root.x + (o.to.x - root.x) * reach / dist, y: root.y + (o.to.y - root.y) * reach / dist } };
152
+ if (o.thought && o.to) {
153
+ const paths = [];
154
+ for (let i = 1; i <= 3; i++) {
155
+ const t = 0.45 + i * 0.16, cx = root.x + (o.to.x - root.x) * t, cy = root.y + (o.to.y - root.y) * t, r = 7 - i * 1.6;
156
+ paths.push({ closed: true, points: Array.from({ length: 10 }, (_, j) => ({ x: cx + r * Math.cos(j * Math.PI / 5), y: cy + r * Math.sin(j * Math.PI / 5) })) });
157
+ }
158
+ tailVector(k, tierId, paths, "Thought bubble");
159
+ } else if (o.to) {
160
+ const dx = o.to.x - root.x, dy = o.to.y - root.y, len = Math.hypot(dx, dy) || 1, nx = -dy / len, ny = dx / len, half = 9;
161
+ tailVector(k, tierId, [{ closed: true, points: [{ x: root.x + nx * half, y: root.y + ny * half }, { x: o.to.x, y: o.to.y }, { x: root.x - nx * half, y: root.y - ny * half }] }], "Balloon tail");
162
+ }
163
+ }
164
+ return k.instance(tierId, `${o.thought ? "Thought balloon" : "Speech balloon"}${suffix}`, { Text: words.toUpperCase() }, { absolute: { x: Math.round(o.x), y: Math.round(o.y) }, name: o.name ?? (o.thought ? "Thought" : "Balloon") });
165
+ }
166
+ function within(k, tierId, x, y, w, h) {
167
+ const t = k.node(tierId);
168
+ return { x: Math.max(0, Math.min(x, t.width - w)), y: Math.max(0, Math.min(y, t.height - h)) };
169
+ }
170
+ function tailVector(k, tierId, paths, name) {
171
+ const xs = paths.flatMap((p) => p.points.map((q) => q.x)), ys = paths.flatMap((p) => p.points.map((q) => q.y));
172
+ const x0 = Math.min(...xs), y0 = Math.min(...ys);
173
+ const local = paths.map((p) => ({ ...p, points: p.points.map((q) => ({ x: q.x - x0, y: q.y - y0 })) }));
174
+ k.vector(tierId, Math.max(1, Math.max(...xs) - x0), Math.max(1, Math.max(...ys) - y0), local, "card", { name, stroke: { color: "onCard", width: 2, join: "MITER" }, absolute: { x: x0, y: y0 } });
175
+ }
176
+ function caption(k, tierId, words, o) {
177
+ o = { ...o, ...within(k, tierId, o.x, o.y, o.width ?? 200, 50) };
178
+ const id = k.stack(tierId, { width: o.width ?? 200, padding: { top: 7, right: 10, bottom: 8, left: 10 }, fill: "accent", stroke: { color: "onAccent", width: 2, align: "INSIDE", join: "MITER" }, name: o.name ?? "Caption box", absolute: { x: Math.round(o.x), y: Math.round(o.y) } });
179
+ k.text(id, words.replace(/(\{\{.*?\}\})|([^{]+)/g, (m, tok) => tok ? m : m.toUpperCase()), { style: "Caption", color: "onAccent", width: "FILL", name: "Caption words" });
180
+ return id;
181
+ }
182
+ function sfx(k, tierId, words, o) {
183
+ const fill = o.fill ?? "accent", ink = fill === "accent" ? "onAccent" : "onPrimary";
184
+ const need = words.length * (o.big ? 46 : 25) + 50;
185
+ if (o.w < need) o = { ...o, h: Math.round(o.h * (need / o.w) ** 0.5), w: need };
186
+ o = { ...o, ...within(k, tierId, o.x, o.y, o.w, o.h) };
187
+ const id = k.stack(tierId, { width: o.w, height: o.h, align: "CENTER", justify: "CENTER", name: o.name ?? "Sound effect", absolute: { x: Math.round(o.x), y: Math.round(o.y) } });
188
+ const n = 13, pts = [];
189
+ let s = (o.seed ?? 7) >>> 0;
190
+ const r = () => {
191
+ s = Math.imul(s, 1664525) + 1013904223 >>> 0;
192
+ return s / 2 ** 32;
193
+ };
194
+ for (let i = 0; i < n * 2; i++) {
195
+ const a = i * Math.PI / n - Math.PI / 2, rad = i % 2 ? 0.62 + r() * 0.08 : 0.9 + r() * 0.1;
196
+ pts.push({ x: o.w / 2 + o.w / 2 * rad * Math.cos(a), y: o.h / 2 + o.h / 2 * rad * Math.sin(a) });
197
+ }
198
+ const star = { closed: true, points: pts };
199
+ k.vector(id, o.w, o.h, [star], ink, { name: "Impact star shadow", absolute: { x: 0, y: 0 } });
200
+ k.vector(id, o.w, o.h, [{ closed: true, points: pts.map((p) => ({ x: p.x - 5, y: p.y - 5 })) }], fill, { name: "Impact star", stroke: { color: ink, width: 3, join: "MITER" }, absolute: { x: 0, y: 0 } });
201
+ k.text(id, words.toUpperCase(), { style: display(k, o.big ? "SFX big" : "SFX"), color: ink, align: "CENTER", name: "Sound effect words", autoWidth: true });
202
+ if (o.deg) k.patch(id, { rotation: o.deg });
203
+ return id;
204
+ }
205
+ var FOLIO = 24;
206
+ function folio(k, sheet, words) {
207
+ k.text(sheet, words.toUpperCase(), { style: display(k, "Credit"), color: "text", width: "FILL", name: "Folio" });
208
+ }
209
+ function foot(k, tierId, w, h, words, name) {
210
+ const id = k.stack(tierId, { width: w, height: h, padding: { top: 14, right: 32, bottom: 14, left: 32 }, justify: "CENTER", fill: "text", name: "Foot", absolute: { x: 0, y: k.node(tierId).height - h } });
211
+ k.text(id, words.toUpperCase(), { style: display(k, "Title"), color: "paper", width: "FILL", name });
212
+ return id;
213
+ }
214
+ function comicMeta(name, description, tags) {
215
+ return {
216
+ name,
217
+ description,
218
+ category: "comic",
219
+ tags: ["comic", "print", "nightstar", "action", ...tags],
220
+ platforms: ["print"],
221
+ formats: ["page"],
222
+ useCases: ["comic"],
223
+ created: "2026-09-22",
224
+ updated: "2026-10-11"
225
+ };
226
+ }
227
+ function bleedFrame(k, w, h) {
228
+ const b = k.doc.settings?.bleed;
229
+ const [l, t, r, bo] = [b?.left ?? 0, b?.top ?? 0, b?.right ?? 0, b?.bottom ?? 0];
230
+ return rectFrame(-l, -t, w + l + r, h + t + bo);
231
+ }
232
+ var SIZE = {
233
+ page: { w: Math.round(6.625 * 96), h: Math.round(10.25 * 96) },
234
+ cover: { w: Math.round(6.875 * 96), h: Math.round(10.5 * 96) },
235
+ spread: { w: Math.round(13.25 * 96), h: Math.round(10.25 * 96) }
236
+ };
237
+ function clipFrame(pts, w, h) {
238
+ const edges = [
239
+ [(p) => p.x >= 0, (a, b) => ({ x: 0, y: a.y + (b.y - a.y) * (0 - a.x) / (b.x - a.x) })],
240
+ [(p) => p.x <= w, (a, b) => ({ x: w, y: a.y + (b.y - a.y) * (w - a.x) / (b.x - a.x) })],
241
+ [(p) => p.y >= 0, (a, b) => ({ x: a.x + (b.x - a.x) * (0 - a.y) / (b.y - a.y), y: 0 })],
242
+ [(p) => p.y <= h, (a, b) => ({ x: a.x + (b.x - a.x) * (h - a.y) / (b.y - a.y), y: h })]
243
+ ];
244
+ let out = pts;
245
+ for (const [inside, cross] of edges) {
246
+ const src = out;
247
+ out = [];
248
+ for (let i = 0; i < src.length; i++) {
249
+ const a = src[i], b = src[(i + 1) % src.length];
250
+ if (inside(a)) {
251
+ out.push(a);
252
+ if (!inside(b)) out.push(cross(a, b));
253
+ } else if (inside(b)) out.push(cross(a, b));
254
+ }
255
+ }
256
+ return frameOf(out);
257
+ }
258
+ function radialSlice(cx, cy, rIn, from, to, g, w, h) {
259
+ const R = Math.hypot(w, h) * 2, pts = [];
260
+ const edge = (deg, side, t) => {
261
+ const a = deg * Math.PI / 180, d = { x: Math.cos(a), y: Math.sin(a) }, n = { x: -Math.sin(a), y: Math.cos(a) };
262
+ return { x: cx + n.x * side * (g / 2) + d.x * t, y: cy + n.y * side * (g / 2) + d.y * t };
263
+ };
264
+ const steps = 8;
265
+ for (let i = 0; i <= steps; i++) {
266
+ const a = (from + (to - from) * i / steps) * Math.PI / 180;
267
+ pts.push({ x: cx + rIn * Math.cos(a), y: cy + rIn * Math.sin(a) });
268
+ }
269
+ pts.push(edge(to, -1, R));
270
+ const mid = (from + to) / 2 * Math.PI / 180;
271
+ pts.push({ x: cx + R * 1.5 * Math.cos(mid), y: cy + R * 1.5 * Math.sin(mid) });
272
+ pts.push(edge(from, 1, R));
273
+ return clipFrame(pts, w, h);
274
+ }
275
+
276
+ export {
277
+ STORY,
278
+ comicSetup,
279
+ display,
280
+ rectFrame,
281
+ frameOf,
282
+ shares,
283
+ tier,
284
+ slantTier,
285
+ tilted,
286
+ wedgeRing,
287
+ disc,
288
+ inflate,
289
+ pageGrid,
290
+ tierBox,
291
+ rows,
292
+ panel,
293
+ say,
294
+ caption,
295
+ sfx,
296
+ FOLIO,
297
+ folio,
298
+ foot,
299
+ comicMeta,
300
+ bleedFrame,
301
+ SIZE,
302
+ clipFrame,
303
+ radialSlice
304
+ };
@@ -0,0 +1,71 @@
1
+ import { createRequire as __popcraftRequire } from 'node:module';
2
+ import { fileURLToPath as __popcraftPath } from 'node:url';
3
+ import { dirname as __popcraftDirname } from 'node:path';
4
+ const require = __popcraftRequire(import.meta.url);
5
+ const __filename = __popcraftPath(import.meta.url);
6
+ const __dirname = __popcraftDirname(__filename);
7
+ import {
8
+ FOLIO,
9
+ caption,
10
+ comicMeta,
11
+ comicSetup,
12
+ folio,
13
+ pageGrid,
14
+ panel,
15
+ rows,
16
+ say,
17
+ sfx,
18
+ tier,
19
+ tierBox
20
+ } from "./chunk-UBT4DZYW.js";
21
+ import {
22
+ defineTemplate
23
+ } from "./chunk-HLBQLOTA.js";
24
+ import {
25
+ Kit,
26
+ preset
27
+ } from "./chunk-2P7ISWIA.js";
28
+ import {
29
+ init_define_POPCRAFT_COMPONENT_IDS
30
+ } from "./chunk-FFS4SO7R.js";
31
+
32
+ // templates/src/print/comic-hero-interrogation.ts
33
+ init_define_POPCRAFT_COMPONENT_IDS();
34
+ var comic_hero_interrogation_default = defineTemplate({
35
+ id: "comic-interrogation",
36
+ meta: comicMeta("Interrogation page", 'Page ten of "Nightstar: Blackout": dawn in a warehouse, Voltrix chained to a chair under one bulb, shot and reverse shot as Nightstar asks who sold him the codes, a fist on the table, a grin, and Rosa waiting outside', ["interrogation", "dialogue", "shot reverse shot", "aftermath"]),
37
+ stableNumbers: true,
38
+ build() {
39
+ const k = new Kit("Interrogation page", preset("comic-page"));
40
+ comicSetup(k);
41
+ drawPage(k);
42
+ return k.finish();
43
+ }
44
+ });
45
+ function drawPage(k) {
46
+ const g = 12, { W, H } = pageGrid(k, k.sheet, 36, g);
47
+ const [h1, h2, h3] = rows(H - FOLIO, g, [32, 34, 34]);
48
+ const t1 = tierBox(k, k.sheet, W, h1, "Tier 1");
49
+ panel(k, t1, tier(W, h1, [1], g)[0], "interro-1", { ground: "heroG1", name: "The warehouse" });
50
+ caption(k, t1, "Dawn. Pier 9 warehouse.", { x: 10, y: 10, width: 170 });
51
+ const t2 = tierBox(k, k.sheet, W, h2, "Tier 2");
52
+ const [a, b] = tier(W, h2, [1, 1], g);
53
+ panel(k, t2, a, "interro-2", { ground: "heroG2", name: "Nightstar asks" });
54
+ panel(k, t2, b, "interro-3", { ground: "heroG3", name: "Voltrix smirks" });
55
+ say(k, t2, "Who sold you the substation codes?", { x: 10, y: 10, width: 160, to: { x: a.width * 0.5, y: h2 * 0.35 } });
56
+ say(k, t2, "Ask nicely.", { x: W - 108, y: 10, width: 96, to: { x: b.x + b.width * 0.5, y: h2 * 0.45 } });
57
+ const t3 = tierBox(k, k.sheet, W, h3, "Tier 3");
58
+ const [c, d, e] = tier(W, h3, [1, 1, 2], g);
59
+ panel(k, t3, c, "interro-4", { ground: "heroG1", name: "The table" });
60
+ panel(k, t3, d, "interro-5", { ground: "heroG2", name: "The grin" });
61
+ panel(k, t3, e, "interro-6", { ground: "heroG3", name: "Morning" });
62
+ sfx(k, t3, "Blam!", { x: 4, y: h3 - 96, w: 150, h: 84, deg: -10, seed: 19 });
63
+ say(k, t3, "There\u2019s a lot more where I came from.", { x: d.x - 20, y: 10, width: 128, to: { x: d.x + d.width * 0.5, y: h3 * 0.55 } });
64
+ caption(k, t3, "To be continued.", { x: W - 150, y: h3 - 44, width: 140 });
65
+ folio(k, k.sheet, "Nightstar: Blackout \u2014 page 10");
66
+ }
67
+
68
+ export {
69
+ comic_hero_interrogation_default,
70
+ drawPage
71
+ };
@@ -21,25 +21,25 @@ import {
21
21
  } from "./chunk-AQZZ7NXG.js";
22
22
  import {
23
23
  tour_tickets_default
24
- } from "./chunk-UJORPKRW.js";
24
+ } from "./chunk-GN5W7TJD.js";
25
25
  import {
26
26
  transit_map_default
27
27
  } from "./chunk-UFRPKZMD.js";
28
28
  import {
29
29
  space_opera_default
30
- } from "./chunk-2WCMIJSA.js";
30
+ } from "./chunk-5NGWNEKU.js";
31
31
  import {
32
32
  spring_bloom_default
33
33
  } from "./chunk-NVPOIW4X.js";
34
34
  import {
35
35
  studio_default
36
- } from "./chunk-6H5ULKBL.js";
36
+ } from "./chunk-7KFQX6N5.js";
37
37
  import {
38
38
  summer_heatwave_default
39
39
  } from "./chunk-7IGLOKC3.js";
40
40
  import {
41
41
  psychedelic_default
42
- } from "./chunk-FLXSWF6O.js";
42
+ } from "./chunk-5GSRWIV2.js";
43
43
  import {
44
44
  riso_zine_default
45
45
  } from "./chunk-XY2UVFSV.js";
@@ -51,25 +51,25 @@ import {
51
51
  } from "./chunk-5AJJN4SZ.js";
52
52
  import {
53
53
  manuscript_default
54
- } from "./chunk-RUBJMQMF.js";
54
+ } from "./chunk-7A3MIEOO.js";
55
55
  import {
56
56
  memories_default
57
- } from "./chunk-LDIYJJ24.js";
57
+ } from "./chunk-PTRN7H4N.js";
58
58
  import {
59
59
  new_year_default
60
60
  } from "./chunk-VKC33NBX.js";
61
61
  import {
62
62
  noir_default
63
- } from "./chunk-EWGXFNXM.js";
63
+ } from "./chunk-DF5IDTZB.js";
64
64
  import {
65
65
  printshop_default
66
- } from "./chunk-R66IPFG4.js";
66
+ } from "./chunk-7D46BJKY.js";
67
67
  import {
68
68
  holidays_default
69
- } from "./chunk-4ENF3NH3.js";
69
+ } from "./chunk-ZLVYZPUR.js";
70
70
  import {
71
71
  lunar_new_year_default
72
- } from "./chunk-OTJJNSLB.js";
72
+ } from "./chunk-PEDQKANG.js";
73
73
  import {
74
74
  machined_default
75
75
  } from "./chunk-4S5TWA54.js";
@@ -84,10 +84,10 @@ import {
84
84
  } from "./chunk-PNLEEGKA.js";
85
85
  import {
86
86
  festival_presale_family_a_default
87
- } from "./chunk-VT7UU3UP.js";
87
+ } from "./chunk-ESV3AAQ4.js";
88
88
  import {
89
89
  festival_presale_family_b_default
90
- } from "./chunk-ZRK4E77C.js";
90
+ } from "./chunk-OGZJE5X2.js";
91
91
  import {
92
92
  departure_board_default
93
93
  } from "./chunk-2FGU5OPW.js";
@@ -99,61 +99,61 @@ import {
99
99
  } from "./chunk-RWPOBQP7.js";
100
100
  import {
101
101
  everyday_default
102
- } from "./chunk-RH6WJNB4.js";
103
- import {
104
- comic_book_default
105
- } from "./chunk-7J4MGACN.js";
102
+ } from "./chunk-2ZOSBENB.js";
106
103
  import {
107
104
  comic_hero_default
108
- } from "./chunk-ATEECJLR.js";
105
+ } from "./chunk-OXI222BA.js";
109
106
  import {
110
107
  comic_indie_default
111
- } from "./chunk-ODXZPZKI.js";
108
+ } from "./chunk-7DKGI65Y.js";
112
109
  import {
113
110
  cyberpunk_default
114
- } from "./chunk-PN6KHUSF.js";
115
- import {
116
- black_friday_ticker_default
117
- } from "./chunk-KNXHE7SX.js";
118
- import {
119
- black_friday_default
120
- } from "./chunk-R6FAPIVP.js";
121
- import {
122
- blueprint_default
123
- } from "./chunk-BAZUZXS6.js";
111
+ } from "./chunk-LOQNCZFE.js";
124
112
  import {
125
113
  broadsheet_default
126
114
  } from "./chunk-MXA2ETB3.js";
127
115
  import {
128
116
  claymation_default
129
- } from "./chunk-FRFW37G6.js";
130
- import {
131
- black_friday_coupons_default
132
- } from "./chunk-J3XCBROI.js";
117
+ } from "./chunk-TBIZI5NH.js";
133
118
  import {
134
- black_friday_neon_default
135
- } from "./chunk-RD2D2IIU.js";
119
+ comic_book_default
120
+ } from "./chunk-HN2A65AT.js";
136
121
  import {
137
122
  black_friday_scratch_default
138
123
  } from "./chunk-ULOS6YOR.js";
139
124
  import {
140
- art_deco_default
141
- } from "./chunk-F32ETZYX.js";
125
+ black_friday_ticker_default
126
+ } from "./chunk-KNXHE7SX.js";
142
127
  import {
143
- autumn_harvest_default
144
- } from "./chunk-CHWB4U2K.js";
128
+ black_friday_default
129
+ } from "./chunk-R6FAPIVP.js";
130
+ import {
131
+ blueprint_default
132
+ } from "./chunk-2BVGM5PJ.js";
145
133
  import {
146
134
  back_to_school_default
147
135
  } from "./chunk-AIOGZZNH.js";
148
136
  import {
149
137
  bauhaus_default
150
- } from "./chunk-WXY6LWRB.js";
138
+ } from "./chunk-2J3PCCBE.js";
139
+ import {
140
+ black_friday_coupons_default
141
+ } from "./chunk-QQMSM7EK.js";
142
+ import {
143
+ black_friday_neon_default
144
+ } from "./chunk-RD2D2IIU.js";
151
145
  import {
152
146
  april_fools_default
153
147
  } from "./chunk-LCPMHFRA.js";
154
148
  import {
155
149
  arcade_default
156
150
  } from "./chunk-XE3WNWN6.js";
151
+ import {
152
+ art_deco_default
153
+ } from "./chunk-F32ETZYX.js";
154
+ import {
155
+ autumn_harvest_default
156
+ } from "./chunk-CHWB4U2K.js";
157
157
  import {
158
158
  init_define_POPCRAFT_COMPONENT_IDS
159
159
  } from "./chunk-FFS4SO7R.js";
@@ -4576,7 +4576,7 @@ function createPopcornSlice(set2, get2) {
4576
4576
  privateMode: false,
4577
4577
  setPrivateMode: (on) => {
4578
4578
  set2({ privateMode: on });
4579
- void import("./presence-YNIJGI73.js").then((m) => m.setPresencePrivate(on)).catch(() => {
4579
+ void import("./presence-YNSLRFAM.js").then((m) => m.setPresencePrivate(on)).catch(() => {
4580
4580
  });
4581
4581
  },
4582
4582
  /** Reveal every private item THIS user created (they sync to collaborators). Others' stay theirs. */
@@ -6629,7 +6629,7 @@ var useEditorStore = create()(
6629
6629
  // A copy is a new file, so it is cloud-backed like any other (see lib/client/cloud/new-file.ts).
6630
6630
  // Returns '' when it was refused (offline, signed out, plan full) or failed; nothing is left behind.
6631
6631
  duplicateDocument: async (id) => {
6632
- const { duplicateDocumentToCloud } = await import("./sync-U23VGFOY.js");
6632
+ const { duplicateDocumentToCloud } = await import("./sync-XT2ZCTVE.js");
6633
6633
  return duplicateDocumentToCloud(id);
6634
6634
  },
6635
6635
  deleteDocument: async (id) => {
@@ -10081,9 +10081,9 @@ if (typeof window !== "undefined") {
10081
10081
  if (typeof window !== "undefined" && navigator.webdriver) {
10082
10082
  window.__vpDesign = async (script, o = {}) => {
10083
10083
  const [{ registerBuiltinTools, runTool }, { editorToolContext }, { createDesignPreview }] = await Promise.all([
10084
- import("./tools-PE6DEYSG.js").then(async (m) => ({ ...m, registerBuiltinTools: (await import("./builtin-Q5UN4DWS.js")).registerBuiltinTools })),
10085
- import("./editor-seams-NG3BESM6.js"),
10086
- import("./live-EI26E2RB.js")
10084
+ import("./tools-5ISIPPXP.js").then(async (m) => ({ ...m, registerBuiltinTools: (await import("./builtin-KY56DU2Y.js")).registerBuiltinTools })),
10085
+ import("./editor-seams-4PF6BD4R.js"),
10086
+ import("./live-XZKNAJ2I.js")
10087
10087
  ]);
10088
10088
  registerBuiltinTools();
10089
10089
  const args = JSON.stringify({ ...o.name ? { name: o.name } : {}, ...o.size ? { size: o.size } : {}, ...o.frame ? { frame: o.frame } : {}, script });