@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
@@ -864,7 +864,7 @@ init_scene_graph();
864
864
  var licence = external_exports.enum(["commercial", "any"]).optional().describe("commercial (default): only licences that allow commercial use and edits (CC0, public domain, CC BY, CC BY-SA). any: every Creative Commons licence, including NC and ND.");
865
865
  var brief2 = (p) => ({ id: p.id, title: p.title, creator: p.credit.creator, licence: licenceLabel(p.credit), width: p.width, height: p.height, source: p.credit.sourceUrl });
866
866
  async function placeImportedPicture(ctx, imported, at, what, extra = {}) {
867
- const client = await import("./client-3FYDPRVC.js");
867
+ const client = await import("./client-YOSPARZX.js");
868
868
  if (at.fillLayerId) {
869
869
  const doc2 = ctx.doc();
870
870
  const target = nodeOrThrow(doc2, at.fillLayerId);
@@ -910,7 +910,7 @@ var photoSearch = defineCommand({
910
910
  }
911
911
  },
912
912
  run: async (args) => {
913
- const { searchStockPhotos } = await import("./client-3FYDPRVC.js");
913
+ const { searchStockPhotos } = await import("./client-YOSPARZX.js");
914
914
  const page = await searchStockPhotos(args.query, args.page ?? 1, { licence: args.licence });
915
915
  return {
916
916
  summary: `${page.results.length} photo${page.results.length === 1 ? "" : "s"} for \u201C${page.query}\u201D (page ${page.page} of ${page.pageCount || 1})`,
@@ -944,7 +944,7 @@ var photoInsert = defineCommand({
944
944
  run: async (args, ctx) => {
945
945
  if (!args.id && !args.query) throw new ToolError("Pass an id from search_photos, or a query.");
946
946
  if (args.id && !isPhotoId(args.id)) throw new ToolError(`"${args.id}" is not a photo id from search_photos.`);
947
- const client = await import("./client-3FYDPRVC.js");
947
+ const client = await import("./client-YOSPARZX.js");
948
948
  let photo;
949
949
  if (args.id) photo = await client.stockPhotoInfo(args.id);
950
950
  else {
@@ -982,7 +982,7 @@ var mediaList = defineCommand({
982
982
  }
983
983
  },
984
984
  run: async (args) => {
985
- const { listLibraryMedia } = await import("./client-NBSGVJPN.js");
985
+ const { listLibraryMedia } = await import("./client-ORABD53R.js");
986
986
  const page = await listLibraryMedia(args);
987
987
  return { summary: `${page.items.length} media item${page.items.length === 1 ? "" : "s"}${page.nextCursor ? " (more)" : ""}`, data: { workspaceId: page.workspaceId, items: page.items.map(brief3), nextCursor: page.nextCursor } };
988
988
  }
@@ -1013,7 +1013,7 @@ var mediaInsert = defineCommand({
1013
1013
  run: async (args, ctx) => {
1014
1014
  const contentType = args.contentType ?? "image/*";
1015
1015
  if (!contentType.startsWith("image/")) throw new ToolError("insert_media places pictures; this item is not one.");
1016
- const { importLibraryPicture } = await import("./client-NBSGVJPN.js");
1016
+ const { importLibraryPicture } = await import("./client-ORABD53R.js");
1017
1017
  const item = { hash: args.hash, fileKey: args.fileKey, fileName: args.name ?? "Media", contentType, size: 0, createdAt: "", fileCount: 1, source: null };
1018
1018
  const imported = await importLibraryPicture(item);
1019
1019
  return placeImportedPicture(ctx, imported, args, `\u201C${imported.name}\u201D`, { hash: imported.hash });
@@ -1034,7 +1034,7 @@ var mediaDownload = defineCommand({
1034
1034
  // The Library's right-click menu: saves the item's file to the computer.
1035
1035
  expose: { ui: { label: "Download", palette: false } },
1036
1036
  run: async (args) => {
1037
- const { libraryBlob, libraryFileName } = await import("./client-NBSGVJPN.js");
1037
+ const { libraryBlob, libraryFileName } = await import("./client-ORABD53R.js");
1038
1038
  const { downloadBlob } = await import("./download-CSO5TEOD.js");
1039
1039
  const item = { hash: args.hash, fileKey: args.fileKey, fileName: args.name ?? "media", contentType: args.contentType ?? "", size: 0, createdAt: "", fileCount: 1, source: null };
1040
1040
  const blob = await libraryBlob(item);
@@ -1065,7 +1065,7 @@ var mediaDelete = defineCommand({
1065
1065
  }
1066
1066
  },
1067
1067
  run: async (args) => {
1068
- const { deleteLibraryMedia } = await import("./client-NBSGVJPN.js");
1068
+ const { deleteLibraryMedia } = await import("./client-ORABD53R.js");
1069
1069
  const out = await deleteLibraryMedia(args.workspace, args.hash);
1070
1070
  return { summary: `Deleted it from the library (it was in ${out.files} file${out.files === 1 ? "" : "s"})`, data: out };
1071
1071
  }
@@ -1079,13 +1079,13 @@ async function signedIn() {
1079
1079
  }
1080
1080
  async function publishedFile() {
1081
1081
  await signedIn();
1082
- const { openFileKey } = await import("./publish-site-E4A557HC.js");
1082
+ const { openFileKey } = await import("./publish-site-T2C4IDD2.js");
1083
1083
  const key = openFileKey();
1084
1084
  if (!key) throw new CommandError("This file is not saved to the cloud yet, so it has no site. Publish it first.", "failed");
1085
1085
  return key;
1086
1086
  }
1087
1087
  async function formsWithoutDatabase(key) {
1088
- const [{ useEditorStore }, { usesForms, formsGoNowhere }, { siteBackend }] = await Promise.all([import("./editor-store-NDV4IXDK.js"), import("./backend-CG33YQA2.js"), import("./integrations-2BG5XVX3.js")]);
1088
+ const [{ useEditorStore }, { usesForms, formsGoNowhere }, { siteBackend }] = await Promise.all([import("./editor-store-UAEROYSB.js"), import("./backend-CG33YQA2.js"), import("./integrations-KGJ2HE6V.js")]);
1089
1089
  const doc2 = useEditorStore.getState().document;
1090
1090
  if (!usesForms(doc2)) return false;
1091
1091
  return formsGoNowhere(doc2, await siteBackend(key).catch(() => void 0));
@@ -1121,7 +1121,7 @@ var publishSite = defineCommand({
1121
1121
  const { cleanSlug } = await import("./rules-DLAY3QRP.js");
1122
1122
  const address = p.address === void 0 ? void 0 : cleanSlug(p.address);
1123
1123
  if (address === null) throw new CommandError("That cannot be a site address: use 3 to 40 letters, digits and dashes.", "invalid_params");
1124
- const { publishOpenFile, NoScreens } = await import("./publish-site-E4A557HC.js");
1124
+ const { publishOpenFile, NoScreens } = await import("./publish-site-T2C4IDD2.js");
1125
1125
  try {
1126
1126
  const done = await publishOpenFile(address);
1127
1127
  ctx.notice(`Published version ${done.version}: ${done.url}`);
@@ -1176,7 +1176,7 @@ var publishListSites = defineCommand({
1176
1176
  },
1177
1177
  run: async (p) => {
1178
1178
  await signedIn();
1179
- const [{ workspaceSites }, { activeTeamWorkspaceId, useHyperyTeam }] = await Promise.all([import("./sites-XV7IK35R.js"), import("./team-7APVVP43.js")]);
1179
+ const [{ workspaceSites }, { activeTeamWorkspaceId, useHyperyTeam }] = await Promise.all([import("./sites-XV7IK35R.js"), import("./team-KM3FZ6AU.js")]);
1180
1180
  const workspaceId = p.workspaceId ?? activeTeamWorkspaceId() ?? useHyperyTeam.getState().personalWorkspaceId;
1181
1181
  if (!workspaceId) throw new CommandError("Your workspaces have not loaded yet. Try again in a moment.", "failed");
1182
1182
  const out = await workspaceSites(workspaceId);
@@ -1225,12 +1225,12 @@ var publishStatus = defineCommand({
1225
1225
  },
1226
1226
  run: async () => {
1227
1227
  await signedIn();
1228
- const [{ openFileKey }, { siteStatus }] = await Promise.all([import("./publish-site-E4A557HC.js"), import("./sites-XV7IK35R.js")]);
1228
+ const [{ openFileKey }, { siteStatus }] = await Promise.all([import("./publish-site-T2C4IDD2.js"), import("./sites-XV7IK35R.js")]);
1229
1229
  const key = openFileKey();
1230
1230
  const status = await siteStatus(key);
1231
1231
  const site = status.site;
1232
- const backend = key ? await (await import("./integrations-2BG5XVX3.js")).siteBackend(key).catch(() => null) : null;
1233
- const destinations = key ? await (await import("./integrations-2BG5XVX3.js")).listDestinations(key).catch(() => []) : [];
1232
+ const backend = key ? await (await import("./integrations-KGJ2HE6V.js")).siteBackend(key).catch(() => null) : null;
1233
+ const destinations = key ? await (await import("./integrations-KGJ2HE6V.js")).listDestinations(key).catch(() => []) : [];
1234
1234
  return {
1235
1235
  summary: !status.configured ? "This server does not publish websites" : !site ? "Not published yet" : site.currentVersion === null ? `Offline (${site.versions.length} versions kept) \u2014 ${site.url}` : `Version ${site.currentVersion} is online at ${site.url}`,
1236
1236
  data: { ...statusData(status), database: backend?.database ? { provider: backend.database.connection.provider, account: backend.database.connection.account, target: backend.database.target.map((t) => t.name), visitorsCanSignIn: backend.database.signIn } : null, destinations: destinations.map((d) => ({ destinationId: d.id, provider: d.connection.provider, account: d.connection.account, kind: d.capability, target: d.target.map((t) => t.name), lastSent: d.lastDeploy })) }
@@ -1261,7 +1261,7 @@ var publishStore = defineCommand({
1261
1261
  },
1262
1262
  run: async (p, ctx) => {
1263
1263
  await signedIn();
1264
- const { deployOpenStore } = await import("./publish-store-U5SDQCU4.js");
1264
+ const { deployOpenStore } = await import("./publish-store-I2FOGDDF.js");
1265
1265
  const done = await deployOpenStore(ctx.doc(), ctx.pageId(), { destinationId: p.destinationId }).catch((e) => {
1266
1266
  throw new CommandError(e instanceof Error ? e.message : String(e), "failed");
1267
1267
  });
@@ -1290,7 +1290,7 @@ var integrationList = defineCommand({
1290
1290
  }
1291
1291
  },
1292
1292
  run: async ({ capability }) => {
1293
- const [{ cloudUser }, { integrationsWorkspaceId, listWorkspaceIntegrations }] = await Promise.all([import("./session-HPSDXOSY.js"), import("./integrations-2BG5XVX3.js")]);
1293
+ const [{ cloudUser }, { integrationsWorkspaceId, listWorkspaceIntegrations }] = await Promise.all([import("./session-HPSDXOSY.js"), import("./integrations-KGJ2HE6V.js")]);
1294
1294
  if (!cloudUser()) throw new CommandError("You are not signed in: integrations belong to your account's workspace.", "denied");
1295
1295
  const workspaceId = integrationsWorkspaceId();
1296
1296
  if (!workspaceId) throw new CommandError("Your workspaces have not loaded yet. Try again in a moment.", "failed");
@@ -1331,7 +1331,7 @@ var integrationOpen = defineCommand({
1331
1331
  }
1332
1332
  });
1333
1333
  async function openFile() {
1334
- const [{ cloudUser }, { openFileKey }] = await Promise.all([import("./session-HPSDXOSY.js"), import("./publish-site-E4A557HC.js")]);
1334
+ const [{ cloudUser }, { openFileKey }] = await Promise.all([import("./session-HPSDXOSY.js"), import("./publish-site-T2C4IDD2.js")]);
1335
1335
  if (!cloudUser()) throw new CommandError("You are not signed in.", "denied");
1336
1336
  const key = openFileKey();
1337
1337
  if (!key) throw new CommandError("This file is not saved to the cloud yet. Publish it first (publish_site).", "failed");
@@ -1357,7 +1357,7 @@ var integrationListResources = defineCommand({
1357
1357
  }
1358
1358
  },
1359
1359
  run: async ({ connectionId, capability, path }) => {
1360
- const { listResources } = await import("./integrations-2BG5XVX3.js");
1360
+ const { listResources } = await import("./integrations-KGJ2HE6V.js");
1361
1361
  const list = await listResources(connectionId, capability, asPath2(path));
1362
1362
  return {
1363
1363
  summary: list.level ? `${list.resources.length} at the ${list.level.label.toLowerCase()} level${list.canCreate ? " (a new one can be made)" : ""}` : "Nothing further to pick: the path is complete",
@@ -1392,7 +1392,7 @@ var integrationAddDestination = defineCommand({
1392
1392
  },
1393
1393
  run: async (p, ctx) => {
1394
1394
  const key = await openFile();
1395
- const { addDestination, createDestination, createResource } = await import("./integrations-2BG5XVX3.js");
1395
+ const { addDestination, createDestination, createResource } = await import("./integrations-KGJ2HE6V.js");
1396
1396
  let made;
1397
1397
  if (p.create) made = await createDestination(key, p.capability, void 0, p.connectionId);
1398
1398
  else {
@@ -1429,7 +1429,7 @@ var integrationDeploy = defineCommand({
1429
1429
  },
1430
1430
  run: async (p, ctx) => {
1431
1431
  const key = await openFile();
1432
- const { deployDestination, listDestinations } = await import("./integrations-2BG5XVX3.js");
1432
+ const { deployDestination, listDestinations } = await import("./integrations-KGJ2HE6V.js");
1433
1433
  const all = await listDestinations(key);
1434
1434
  const dest = p.destinationId ? all.find((d) => d.id === p.destinationId) : all.length === 1 ? all[0] : void 0;
1435
1435
  if (!dest) throw new CommandError(all.length ? `Say which destination: ${all.map((d) => `${d.id} (${d.target.map((t) => t.name).join(" / ")})`).join(", ")}.` : "This file has no destination yet. Add one first (add_site_destination).", "invalid_params");
@@ -1463,7 +1463,7 @@ var integrationAttachDatabase = defineCommand({
1463
1463
  },
1464
1464
  run: async (p, ctx) => {
1465
1465
  const key = await openFile();
1466
- const { attachDatabase, createDatabase, createResource, listResources } = await import("./integrations-2BG5XVX3.js");
1466
+ const { attachDatabase, createDatabase, createResource, listResources } = await import("./integrations-KGJ2HE6V.js");
1467
1467
  if (p.create) return attached(await createDatabase(key, void 0, p.connectionId), ctx);
1468
1468
  if (!p.connectionId || !p.target) throw new CommandError("Say connectionId and target, or create: true.", "invalid_params");
1469
1469
  let target = asPath2(p.target);
@@ -1502,7 +1502,7 @@ var integrationSubmissions = defineCommand({
1502
1502
  },
1503
1503
  run: async ({ form, limit }) => {
1504
1504
  const key = await openFile();
1505
- const { listSubmissions } = await import("./integrations-2BG5XVX3.js");
1505
+ const { listSubmissions } = await import("./integrations-KGJ2HE6V.js");
1506
1506
  const rows = await listSubmissions(key, { form, limit: limit ?? 20 });
1507
1507
  return { summary: rows.length ? `${rows.length} ${rows.length === 1 ? "submission" : "submissions"}, the newest ${new Date(rows[0].createdAt).toISOString()}` : "Nothing has been sent yet", data: { submissions: rows } };
1508
1508
  }
@@ -1527,7 +1527,7 @@ var integrationSetSignIn = defineCommand({
1527
1527
  },
1528
1528
  run: async ({ on }, ctx) => {
1529
1529
  const key = await openFile();
1530
- const { setSignIn } = await import("./integrations-2BG5XVX3.js");
1530
+ const { setSignIn } = await import("./integrations-KGJ2HE6V.js");
1531
1531
  const done = await setSignIn(key, on);
1532
1532
  ctx.notice(on ? "Visitors can sign in." : "Sign-in is off.");
1533
1533
  return { summary: on ? "Visitors can now create accounts and sign in on the published site" : "Sign-in is off for the published site", data: { signIn: !!done.database?.signIn } };
@@ -1742,7 +1742,7 @@ var fontTeamList = defineCommand({
1742
1742
  agent: { name: "list_team_fonts", readOnly: true, description: "The team's fonts: faces uploaded once that every file of the team can use (family, weight, style)." }
1743
1743
  },
1744
1744
  run: async (args) => {
1745
- const { refreshTeamFonts } = await import("./team-client-XTH5DXVW.js");
1745
+ const { refreshTeamFonts } = await import("./team-client-2EXJKRDB.js");
1746
1746
  const fonts = await refreshTeamFonts(args.workspace);
1747
1747
  return { summary: plural(fonts.length, "team font"), data: { fonts: fonts.map((f) => ({ id: f.id, family: f.family, weight: f.weight, style: f.style, face: f.face, fileName: f.fileName })) } };
1748
1748
  }
@@ -1769,7 +1769,7 @@ var fontTeamAdd = defineCommand({
1769
1769
  run: async (args, ctx) => {
1770
1770
  const { bytes, fileName: fileName2 } = await fontBytes(args, ctx);
1771
1771
  const { face, family, weight, style } = await resolveFace(bytes, args);
1772
- const { uploadTeamFont } = await import("./team-client-XTH5DXVW.js");
1772
+ const { uploadTeamFont } = await import("./team-client-2EXJKRDB.js");
1773
1773
  const font = await uploadTeamFont(bytes, { family, weight, style, face: face.index, fileName: fileName2 }, args.workspace);
1774
1774
  return { summary: `Added ${family} ${weight}${style === "italic" ? " italic" : ""} to the team`, data: { font } };
1775
1775
  }
@@ -1791,7 +1791,7 @@ var fontTeamRemove = defineCommand({
1791
1791
  agent: { name: "remove_team_font", description: "Remove a font from the team (list_team_fonts). Files that use it fall back to another font unless they carry it themselves. The user approves every call." }
1792
1792
  },
1793
1793
  run: async (args) => {
1794
- const { removeTeamFont } = await import("./team-client-XTH5DXVW.js");
1794
+ const { removeTeamFont } = await import("./team-client-2EXJKRDB.js");
1795
1795
  const out = await removeTeamFont(args.id, args.workspace);
1796
1796
  return { summary: `Removed the team font${out.freed ? " and freed its storage" : ""}`, data: out };
1797
1797
  }
@@ -1802,7 +1802,7 @@ var fontTeamCommands = [fontTeamList, fontTeamAdd];
1802
1802
  init_define_POPCRAFT_COMPONENT_IDS();
1803
1803
  async function cloudFile() {
1804
1804
  const [{ syncStatus }, { cloudUser }] = await Promise.all([
1805
- import("./sync-U23VGFOY.js"),
1805
+ import("./sync-XT2ZCTVE.js"),
1806
1806
  import("./session-HPSDXOSY.js")
1807
1807
  ]);
1808
1808
  const link2 = syncStatus().link;
@@ -1954,11 +1954,11 @@ var fileDuplicate = defineCommand({
1954
1954
  },
1955
1955
  run: async (_p, ctx) => {
1956
1956
  const [{ syncStatus }, { cloudApi }, { isDesktopTabs }, { createFileInTab }, { openNewCloudFile }, { v4: uuid }] = await Promise.all([
1957
- import("./sync-U23VGFOY.js"),
1957
+ import("./sync-XT2ZCTVE.js"),
1958
1958
  import("./api-SHU5H2PY.js"),
1959
1959
  import("./tab-mode-2RKK6WQJ.js"),
1960
- import("./tabs-K6MESOUX.js"),
1961
- import("./sync-U23VGFOY.js"),
1960
+ import("./tabs-RIIW7KNI.js"),
1961
+ import("./sync-XT2ZCTVE.js"),
1962
1962
  import("./dist-node-NEPTX7PU.js")
1963
1963
  ]);
1964
1964
  const doc2 = ctx.doc();
@@ -4574,7 +4574,7 @@ var viewCopyLink = defineCommand({
4574
4574
  },
4575
4575
  run: async (args, ctx) => {
4576
4576
  const [{ syncStatus }, { fileUrl }, { withDeepLink }] = await Promise.all([
4577
- import("./sync-U23VGFOY.js"),
4577
+ import("./sync-XT2ZCTVE.js"),
4578
4578
  import("./api-SHU5H2PY.js"),
4579
4579
  import("./deep-link-K3CMMIZT.js")
4580
4580
  ]);
@@ -4899,7 +4899,7 @@ var pageGo = defineCommand({
4899
4899
  ] }
4900
4900
  },
4901
4901
  run: async ({ to }) => {
4902
- const { useEditorStore } = await import("./editor-store-NDV4IXDK.js");
4902
+ const { useEditorStore } = await import("./editor-store-UAEROYSB.js");
4903
4903
  useEditorStore.getState().goToPrintPage(to);
4904
4904
  return { summary: typeof to === "number" ? `Page ${to + 1}` : `${to} page` };
4905
4905
  }
@@ -4933,7 +4933,7 @@ var pageSetup = defineCommand({
4933
4933
  }
4934
4934
  },
4935
4935
  run: async (args) => {
4936
- const { useEditorStore } = await import("./editor-store-NDV4IXDK.js");
4936
+ const { useEditorStore } = await import("./editor-store-UAEROYSB.js");
4937
4937
  useEditorStore.getState().applyPageSetup(args);
4938
4938
  return { summary: `Page setup updated${args.kind ? ` (${args.kind.toLowerCase()})` : ""}` };
4939
4939
  }
@@ -5692,7 +5692,7 @@ async function docAtTime(doc2, ids, time2) {
5692
5692
  let frameId;
5693
5693
  if (time2 === void 0) {
5694
5694
  try {
5695
- const { useEditorStore } = await import("./editor-store-NDV4IXDK.js");
5695
+ const { useEditorStore } = await import("./editor-store-UAEROYSB.js");
5696
5696
  const st = useEditorStore.getState();
5697
5697
  const target = st.transport?.target;
5698
5698
  if (st.mode !== "ANIMATE" || target?.kind !== "frame") return doc2;
@@ -6086,7 +6086,7 @@ async function runAnimationExport(format, args, ctx) {
6086
6086
  const filename = exportFileName(args.filename || targetName(doc2, target), format);
6087
6087
  const [{ exportAnimation }, { memoryDestination }] = await Promise.all([import("./video-GRV7TEX4.js"), import("./destination-7SRSVIPA.js")]);
6088
6088
  if (format === "lottie" || format === "dotlottie") return runLottieExport(renderer, doc2, spec, filename, ctx, memoryDestination, args.stateMachine);
6089
- const planWatermark = format !== "png" && await (await import("./export-watermark-SNBNUS3L.js")).exportWatermark();
6089
+ const planWatermark = format !== "png" && await (await import("./export-watermark-2N7ALJXN.js")).exportWatermark();
6090
6090
  if (format !== "png") spec = { ...spec, watermark: planWatermark || args.watermark !== false };
6091
6091
  const dest = ctx.destination ? await ctx.destination(filename, FORMAT_MIME[format]) : memoryDestination(filename, FORMAT_MIME[format]);
6092
6092
  let stats;
@@ -6172,7 +6172,7 @@ var exportLottie = animationCommand((args) => args.container === "lottie" ? "dot
6172
6172
  });
6173
6173
  async function exportSite(doc2, pageId2, packaging, styling = "css", siteUrl) {
6174
6174
  const [{ completeSite, nextFilesOf, shareImageFiles, staticFilesOf, NoSiteRuntime, bytesOf }, { fileBase }, { zipFiles }, { downloadBlob }] = await Promise.all([
6175
- import("./project-UK457FEX.js"),
6175
+ import("./project-HSN7DOPK.js"),
6176
6176
  import("./web-GFLIQLQT.js"),
6177
6177
  import("./zip-export-NMJUBE3M.js"),
6178
6178
  import("./download-CSO5TEOD.js")
@@ -6266,7 +6266,7 @@ var exportStorefront = defineCommand({
6266
6266
  const [{ storefrontInputs }, { STOREFRONT_TARGETS }, { bytesOf }, { fileBase, flatten }, { zipFiles }, { downloadBlob }] = await Promise.all([
6267
6267
  import("./storefront-prepare-WKX3DJCF.js"),
6268
6268
  import("./storefront-MZM2W5DF.js"),
6269
- import("./project-UK457FEX.js"),
6269
+ import("./project-HSN7DOPK.js"),
6270
6270
  import("./web-GFLIQLQT.js"),
6271
6271
  import("./zip-export-NMJUBE3M.js"),
6272
6272
  import("./download-CSO5TEOD.js")
@@ -6661,7 +6661,7 @@ var visionRegenerateImage = defineCommand({
6661
6661
  const id = args.id ?? ctx.selection()[0];
6662
6662
  if (!id) throw new ToolError("Select a generated image to regenerate.");
6663
6663
  nodeOrThrow(ctx.doc(), id);
6664
- const { regenerateImage } = await import("./client-actions-J2SQWW4O.js");
6664
+ const { regenerateImage } = await import("./client-actions-LYJHQ4IE.js");
6665
6665
  regenerateImage(id, args.count);
6666
6666
  return { summary: args.count > 1 ? `Regenerating ${args.count} variants` : "Regenerating the image", data: { id, count: args.count } };
6667
6667
  }
@@ -9627,7 +9627,7 @@ var designWriteScript = defineCommand({
9627
9627
  if (args.frame && !target) throw new ToolError(`"${args.frame}" is not part of a design built from a script. Leave out \`frame\` to make a new one.`);
9628
9628
  const prev = target?.designScript;
9629
9629
  if (target && prev && !args.discardEdits) {
9630
- const { hashRoots } = await import("./build-AUXXY3JX.js");
9630
+ const { hashRoots } = await import("./build-AKMRSWRB.js");
9631
9631
  if (hashRoots(doc2, prev.roots) !== prev.builtHash) {
9632
9632
  throw new ToolError(`"${target.name}" was edited by hand since its script built it, and a rebuild would lose those edits. Either make the change with editing tools, fold the edits into the script, or pass discardEdits: true.`);
9633
9633
  }
@@ -9635,7 +9635,7 @@ var designWriteScript = defineCommand({
9635
9635
  const size2 = args.size ?? prev?.size;
9636
9636
  if (!size2) throw new ToolError('Give the size to build at: a preset id like "ig-story" or "web-desktop", or { width, height }.');
9637
9637
  const name2 = args.name ?? target?.name ?? "Design";
9638
- const { buildDesign, placeDesign, templateOfBuild } = await import("./build-AUXXY3JX.js");
9638
+ const { buildDesign, placeDesign, templateOfBuild } = await import("./build-AKMRSWRB.js");
9639
9639
  const built = await buildDesign(args.script, size2, name2, designRecorder());
9640
9640
  if (built.error) throw new ToolError(scriptError(args.script, built.error));
9641
9641
  if (!built.doc) throw new ToolError("The script built nothing.");
@@ -9707,7 +9707,7 @@ var designGetScript = defineCommand({
9707
9707
  if (!start2) throw new ToolError("Select a design, or name its frame.");
9708
9708
  const target = designFrameOf(doc2, start2);
9709
9709
  if (!target?.designScript) throw new ToolError(`"${doc2.nodes[start2]?.name ?? start2}" was not built from a script.`);
9710
- const { hashRoots } = await import("./build-AUXXY3JX.js");
9710
+ const { hashRoots } = await import("./build-AKMRSWRB.js");
9711
9711
  const s = target.designScript;
9712
9712
  const editedByHand = hashRoots(doc2, s.roots) !== s.builtHash;
9713
9713
  return {
@@ -9820,7 +9820,7 @@ var scriptRun = defineCommand({
9820
9820
  // A script is not the turn the user is watching: confirm-tier tools are refused inside it (dispatch, `nested`).
9821
9821
  actor: { ...ctx.actor, nested: true, label: "Script" },
9822
9822
  // A look_at inside the script sees the document as the script has left it so far, not as it was before.
9823
- use: ((name2) => name2 === "render" && ctx.can("render") ? (async (ids, options) => (await import("./agent-CGSIEC2R.js")).renderDocument(staged, ids, options)) : ctx.use(name2))
9823
+ use: ((name2) => name2 === "render" && ctx.can("render") ? (async (ids, options) => (await import("./agent-LNZDZLDR.js")).renderDocument(staged, ids, options)) : ctx.use(name2))
9824
9824
  };
9825
9825
  let calls = 0;
9826
9826
  const images = [];
@@ -10640,7 +10640,7 @@ var docImportFile = defineCommand({
10640
10640
  const file = new File([body], args.name);
10641
10641
  if (file.size > MAX_BYTES) throw new ToolError(`"${args.name}" is larger than ${MAX_BYTES / 1024 / 1024} MB.`);
10642
10642
  const [{ buildImportedDocument }, { mergeImportedDocument }] = await Promise.all([
10643
- import("./plugin-import-V2ORN2OW.js"),
10643
+ import("./plugin-import-J5ZNYSIY.js"),
10644
10644
  import("./import-merge-UGBF66ST.js")
10645
10645
  ]);
10646
10646
  const built = await buildImportedDocument(file);
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-4MICRJXM.js";
16
16
  import {
17
17
  loadKitModules
18
- } from "./chunk-IUK367P7.js";
18
+ } from "./chunk-5PSOLUKI.js";
19
19
  import {
20
20
  HELPER_NAMES
21
21
  } from "./chunk-OIXOTZRZ.js";
@@ -0,0 +1,54 @@
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
+ comic_hero_issue_default
9
+ } from "./chunk-CVB5F7FJ.js";
10
+ import {
11
+ comic_hero_nested_default
12
+ } from "./chunk-CGNNKKW7.js";
13
+ import {
14
+ comic_hero_overlap_default
15
+ } from "./chunk-APBRV4W6.js";
16
+ import {
17
+ comic_hero_parallel_default
18
+ } from "./chunk-ZYNF7B6N.js";
19
+ import {
20
+ comic_hero_pinup_default
21
+ } from "./chunk-P23KECK3.js";
22
+ import {
23
+ comic_hero_widescreen_default
24
+ } from "./chunk-M2LWLS56.js";
25
+ import {
26
+ comic_hero_cascade_default
27
+ } from "./chunk-X4UI5JKC.js";
28
+ import {
29
+ comic_hero_chase_default
30
+ } from "./chunk-COJM27N2.js";
31
+ import {
32
+ comic_hero_cover_modern_default
33
+ } from "./chunk-ZY3DR3P6.js";
34
+ import {
35
+ comic_hero_grid_break_default
36
+ } from "./chunk-ZBFR7DBR.js";
37
+ import {
38
+ comic_hero_interrogation_default
39
+ } from "./chunk-UJTTWR5P.js";
40
+ import {
41
+ comic_hero_manga_action_default
42
+ } from "./chunk-XQJ2VVC6.js";
43
+ import {
44
+ init_define_POPCRAFT_COMPONENT_IDS
45
+ } from "./chunk-FFS4SO7R.js";
46
+
47
+ // templates/src/themes/comic-hero.ts
48
+ init_define_POPCRAFT_COMPONENT_IDS();
49
+ var pack = [comic_hero_cover_modern_default, comic_hero_chase_default, comic_hero_widescreen_default, comic_hero_grid_break_default, comic_hero_cascade_default, comic_hero_overlap_default, comic_hero_nested_default, comic_hero_parallel_default, comic_hero_manga_action_default, comic_hero_interrogation_default, comic_hero_pinup_default, comic_hero_issue_default];
50
+ var comic_hero_default = pack;
51
+
52
+ export {
53
+ comic_hero_default
54
+ };
@@ -0,0 +1,57 @@
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
+ SIZE,
9
+ bleedFrame,
10
+ caption,
11
+ comicMeta,
12
+ comicSetup,
13
+ foot,
14
+ panel,
15
+ rectFrame,
16
+ say,
17
+ tierBox
18
+ } from "./chunk-UBT4DZYW.js";
19
+ import {
20
+ defineTemplate
21
+ } from "./chunk-HLBQLOTA.js";
22
+ import {
23
+ Kit,
24
+ preset
25
+ } from "./chunk-2P7ISWIA.js";
26
+ import {
27
+ init_define_POPCRAFT_COMPONENT_IDS
28
+ } from "./chunk-FFS4SO7R.js";
29
+
30
+ // templates/src/print/comic-hero-pinup.ts
31
+ init_define_POPCRAFT_COMPONENT_IDS();
32
+ var comic_hero_pinup_default = defineTemplate({
33
+ id: "comic-pinup",
34
+ meta: comicMeta("Pin-up page", 'The pin-up from "Nightstar: Blackout": Nightstar on the edge of a rooftop at sunrise over the city he kept alive, full bleed, with one line for the morning and the series line on a strip at the foot', ["pin-up", "splash", "full bleed", "hero"]),
35
+ stableNumbers: true,
36
+ build() {
37
+ const k = new Kit("Pin-up page", preset("comic-page"));
38
+ comicSetup(k);
39
+ drawPage(k);
40
+ return k.finish();
41
+ }
42
+ });
43
+ function drawPage(k) {
44
+ const { w: W, h: H } = SIZE.page;
45
+ k.flowSheet(k.sheet, 0, 0);
46
+ const t = tierBox(k, k.sheet, W, H, "Pin-up");
47
+ const b = bleedFrame(k, W, H);
48
+ panel(k, t, rectFrame(b.x, b.y, b.width, H - 84 - b.y), "pinup", { ground: "heroG1", name: "Splash art", edge: false });
49
+ caption(k, t, "The night is over. Nightstar stays.", { x: 20, y: 20, width: 190, name: "Cover line" });
50
+ say(k, t, "Morning, city.", { x: 40, y: H * 0.18, width: 96, to: { x: W * 0.5, y: H * 0.13 } });
51
+ foot(k, t, W, 84, "Nightstar. Blackout, part one.", "Pin-up line");
52
+ }
53
+
54
+ export {
55
+ comic_hero_pinup_default,
56
+ drawPage
57
+ };
@@ -4,24 +4,12 @@ import { dirname as __popcraftDirname } from 'node:path';
4
4
  const require = __popcraftRequire(import.meta.url);
5
5
  const __filename = __popcraftPath(import.meta.url);
6
6
  const __dirname = __popcraftDirname(__filename);
7
- import {
8
- style_swiss_default
9
- } from "./chunk-RFA7INNF.js";
10
- import {
11
- style_terminal_default
12
- } from "./chunk-Q3B5SHXG.js";
13
7
  import {
14
8
  video_default
15
9
  } from "./chunk-42LFGCDX.js";
16
10
  import {
17
11
  web_default
18
12
  } from "./chunk-QOR3X7UR.js";
19
- import {
20
- style_gradient_default
21
- } from "./chunk-2ETNHQDU.js";
22
- import {
23
- style_maximal_default
24
- } from "./chunk-PFRPEJQ7.js";
25
13
  import {
26
14
  style_pastel_default
27
15
  } from "./chunk-XID46XN3.js";
@@ -29,11 +17,11 @@ import {
29
17
  style_sketch_default
30
18
  } from "./chunk-WDDXAXMY.js";
31
19
  import {
32
- style_dark_default
33
- } from "./chunk-2EJRSW3B.js";
20
+ style_swiss_default
21
+ } from "./chunk-RFA7INNF.js";
34
22
  import {
35
- style_data_default
36
- } from "./chunk-ANEDZH7A.js";
23
+ style_terminal_default
24
+ } from "./chunk-Q3B5SHXG.js";
37
25
  import {
38
26
  style_editorial_default
39
27
  } from "./chunk-4K7VZEWL.js";
@@ -41,11 +29,11 @@ import {
41
29
  style_glass_default
42
30
  } from "./chunk-WDTDVTAN.js";
43
31
  import {
44
- lottie_default
45
- } from "./chunk-OTTXRPFP.js";
32
+ style_gradient_default
33
+ } from "./chunk-2ETNHQDU.js";
46
34
  import {
47
- stores_default
48
- } from "./chunk-HQAHQJHQ.js";
35
+ style_maximal_default
36
+ } from "./chunk-PFRPEJQ7.js";
49
37
  import {
50
38
  style_bento_default
51
39
  } from "./chunk-EXRI6KN5.js";
@@ -53,14 +41,26 @@ import {
53
41
  style_brutalist_default
54
42
  } from "./chunk-TUTKS5P3.js";
55
43
  import {
56
- email_decks_default
57
- } from "./chunk-GTR25NJ5.js";
44
+ style_dark_default
45
+ } from "./chunk-2EJRSW3B.js";
46
+ import {
47
+ style_data_default
48
+ } from "./chunk-ANEDZH7A.js";
58
49
  import {
59
50
  launch_kit_default
60
- } from "./chunk-AKCMEBIQ.js";
51
+ } from "./chunk-MNN76UQS.js";
61
52
  import {
62
53
  launch_video_default
63
- } from "./chunk-JVKC6UFV.js";
54
+ } from "./chunk-KWXWK2LA.js";
55
+ import {
56
+ lottie_default
57
+ } from "./chunk-OTTXRPFP.js";
58
+ import {
59
+ stores_default
60
+ } from "./chunk-IPRJUV2O.js";
61
+ import {
62
+ email_decks_default
63
+ } from "./chunk-XIIFQUWN.js";
64
64
  import {
65
65
  init_define_POPCRAFT_COMPONENT_IDS
66
66
  } from "./chunk-FFS4SO7R.js";
@@ -6,14 +6,14 @@ const __filename = __popcraftPath(import.meta.url);
6
6
  const __dirname = __popcraftDirname(__filename);
7
7
  import {
8
8
  pluginRun
9
- } from "./chunk-STG7FEIQ.js";
9
+ } from "./chunk-S4Y3VMQH.js";
10
10
  import {
11
11
  fileCommands,
12
12
  fontTeamRemove,
13
13
  integrationConfirmCommands,
14
14
  mediaDelete,
15
15
  publishCommands
16
- } from "./chunk-LE33OZ4V.js";
16
+ } from "./chunk-N2RBQBUE.js";
17
17
  import {
18
18
  external_exports
19
19
  } from "./chunk-BQXNFA5K.js";
@@ -55,7 +55,7 @@ var collabSetSpotlight = defineCommand({
55
55
  }
56
56
  },
57
57
  run: async ({ on }, ctx) => {
58
- const { setSpotlight } = await import("./presence-YNIJGI73.js");
58
+ const { setSpotlight } = await import("./presence-YNSLRFAM.js");
59
59
  setSpotlight(on);
60
60
  ctx.notice(on ? "Spotlight on \u2014 everyone is following this view." : "Spotlight off.");
61
61
  return { summary: on ? "Spotlight on" : "Spotlight off", data: { spotlight: on } };
@@ -82,7 +82,7 @@ var collabRevealPrivate = defineCommand({
82
82
  }
83
83
  },
84
84
  run: async (_p, ctx) => {
85
- const { useEditorStore } = await import("./editor-store-NDV4IXDK.js");
85
+ const { useEditorStore } = await import("./editor-store-UAEROYSB.js");
86
86
  const before = Object.values(useEditorStore.getState().document.nodes).filter((n) => n.privateTo).length;
87
87
  useEditorStore.getState().revealPrivate();
88
88
  ctx.notice(before ? `Revealed ${before} private item${before === 1 ? "" : "s"}.` : "Nothing was private.");
@@ -146,7 +146,7 @@ var documentDelete = defineCommand({
146
146
  }
147
147
  },
148
148
  run: async ({ id }, ctx) => {
149
- const { useEditorStore } = await import("./editor-store-NDV4IXDK.js");
149
+ const { useEditorStore } = await import("./editor-store-UAEROYSB.js");
150
150
  const wasOpen = useEditorStore.getState().document.id === id;
151
151
  await useEditorStore.getState().deleteDocument(id);
152
152
  ctx.notice("Deleted the document.");
@@ -190,7 +190,7 @@ var libraryPublish = defineCommand({
190
190
  }
191
191
  },
192
192
  run: async (p, ctx) => {
193
- const { publishLibrary } = await import("./libraries-QV4QPEYK.js");
193
+ const { publishLibrary } = await import("./libraries-NIRTR2IA.js");
194
194
  const doc = ctx.doc();
195
195
  const pick = {
196
196
  componentIds: p.componentIds ?? Object.keys(doc.components ?? {}),
@@ -222,7 +222,7 @@ var libraryUnpublish = defineCommand({
222
222
  },
223
223
  run: async ({ libraryId }, ctx) => {
224
224
  if (!libraryId.trim()) throw new CommandError("Which library? Pass its `libraryId`.", "invalid_params");
225
- const { unpublishLibrary } = await import("./libraries-QV4QPEYK.js");
225
+ const { unpublishLibrary } = await import("./libraries-NIRTR2IA.js");
226
226
  await unpublishLibrary(libraryId);
227
227
  ctx.notice(`Unpublished library ${libraryId}.`);
228
228
  return { summary: `Unpublished library ${libraryId}`, data: { libraryId, unpublished: true } };
@@ -234,8 +234,8 @@ var libraryCommands = [libraryPublish, libraryUnpublish];
234
234
  init_define_POPCRAFT_COMPONENT_IDS();
235
235
  async function findVersion(id) {
236
236
  const [{ useEditorStore }, { versionLabel }] = await Promise.all([
237
- import("./editor-store-NDV4IXDK.js"),
238
- import("./versions-Y4F3IO37.js")
237
+ import("./editor-store-UAEROYSB.js"),
238
+ import("./versions-JCQTXXUB.js")
239
239
  ]);
240
240
  const meta = useEditorStore.getState().versions.find((v) => v.id === id);
241
241
  if (!meta) {
@@ -268,7 +268,7 @@ var versionRestore = defineCommand({
268
268
  },
269
269
  run: async ({ id }) => {
270
270
  const found = await findVersion(id);
271
- const { restoreVersion } = await import("./versions-Y4F3IO37.js");
271
+ const { restoreVersion } = await import("./versions-JCQTXXUB.js");
272
272
  await restoreVersion(found.meta);
273
273
  return { summary: `Restored \u201C${found.label}\u201D`, data: { id, label: found.label, restored: true } };
274
274
  }
@@ -293,7 +293,7 @@ var versionDelete = defineCommand({
293
293
  },
294
294
  run: async ({ id }, ctx) => {
295
295
  const found = await findVersion(id);
296
- const { deleteVersion } = await import("./versions-Y4F3IO37.js");
296
+ const { deleteVersion } = await import("./versions-JCQTXXUB.js");
297
297
  await deleteVersion(found.meta);
298
298
  ctx.notice(`Deleted the version \u201C${found.label}\u201D.`);
299
299
  return { summary: `Deleted the version \u201C${found.label}\u201D`, data: { id, label: found.label, deleted: true } };