@popcraft/kit 0.23.0 → 0.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/chunks/{agent-BJBUTTSC.js → agent-4LLNDPKT.js} +1 -1
  2. package/dist/chunks/{builtin-CLB5OHKL.js → builtin-MPHCX2R5.js} +3 -3
  3. package/dist/chunks/{check-template-6XTDIBYY.js → check-template-SHZR37PA.js} +2 -2
  4. package/dist/chunks/{chunk-CTNYOI7K.js → chunk-2657F23X.js} +7 -7
  5. package/dist/chunks/{chunk-ELVQX6RI.js → chunk-3NGYOEXU.js} +1 -1
  6. package/dist/chunks/{chunk-RDAMU4OP.js → chunk-3ZAY3GT4.js} +36 -36
  7. package/dist/chunks/{chunk-SGMCUBDF.js → chunk-4QGD7QA4.js} +3 -1
  8. package/dist/chunks/{chunk-TKIMYBHW.js → chunk-6DCAGZ2E.js} +2 -2
  9. package/dist/chunks/{chunk-JWJCNSIJ.js → chunk-AOLURN4M.js} +4 -4
  10. package/dist/chunks/{chunk-DOYHR7LZ.js → chunk-B7WKCDVC.js} +2 -2
  11. package/dist/chunks/{chunk-45GKMBBU.js → chunk-BRFDRFQS.js} +2 -2
  12. package/dist/chunks/{chunk-U6FFZ5W2.js → chunk-CTLYNR44.js} +1 -1
  13. package/dist/chunks/{chunk-V55HSSYV.js → chunk-GCCKB3Z6.js} +14 -14
  14. package/dist/chunks/{chunk-M57KDGIH.js → chunk-GLPSWLOP.js} +1 -1
  15. package/dist/chunks/{chunk-SJHSD7GG.js → chunk-IMRJGGQP.js} +5 -5
  16. package/dist/chunks/{chunk-4JCGRWOD.js → chunk-IUS7V3NP.js} +1 -1
  17. package/dist/chunks/{chunk-VWNEKTT3.js → chunk-MRDE4OOE.js} +11 -11
  18. package/dist/chunks/{chunk-KHK5XLEO.js → chunk-NPRSEJCQ.js} +5 -5
  19. package/dist/chunks/{chunk-I323DRE7.js → chunk-OCOP2CEE.js} +5 -5
  20. package/dist/chunks/{chunk-NCALTIBW.js → chunk-ONACJFBL.js} +1 -1
  21. package/dist/chunks/{chunk-TBGBDPYT.js → chunk-OZV6WRBA.js} +1 -1
  22. package/dist/chunks/{chunk-PXATZ4UZ.js → chunk-QO6RCB54.js} +1 -1
  23. package/dist/chunks/{chunk-7XSGWFUU.js → chunk-R2OWUZAJ.js} +2 -2
  24. package/dist/chunks/{chunk-WI3UXGOB.js → chunk-RW7YO2KM.js} +4 -4
  25. package/dist/chunks/{chunk-LHCHUICU.js → chunk-SGCSBWBQ.js} +2 -2
  26. package/dist/chunks/{chunk-AZU5NJX4.js → chunk-SNAYCSJQ.js} +1 -1
  27. package/dist/chunks/{chunk-2HAVVRLV.js → chunk-SUEY4TWT.js} +1 -1
  28. package/dist/chunks/{chunk-KLFWJGV2.js → chunk-X4AMYXH5.js} +5 -5
  29. package/dist/chunks/{chunk-Y5J5V5U3.js → chunk-X5CV5NH3.js} +3 -3
  30. package/dist/chunks/{chunk-PPBHH7GH.js → chunk-Y2BZGNEC.js} +3 -3
  31. package/dist/chunks/{client-W74T4QJ2.js → client-KWUTPSTP.js} +2 -2
  32. package/dist/chunks/{client-7IOICWAQ.js → client-MBWEDONV.js} +1 -1
  33. package/dist/chunks/{client-6XBHKOQI.js → client-W6EWOEIJ.js} +2 -2
  34. package/dist/chunks/{client-actions-F5KAYWC6.js → client-actions-YXQGAUP6.js} +4 -4
  35. package/dist/chunks/{dangerous-SNCBW4IE.js → dangerous-O276OX7E.js} +3 -3
  36. package/dist/chunks/{editor-seams-GJIWTUEC.js → editor-seams-KWSXIJ6M.js} +9 -9
  37. package/dist/chunks/{editor-store-RJRX5NDT.js → editor-store-FWNCBZKH.js} +1 -1
  38. package/dist/chunks/{export-watermark-BWN23IRO.js → export-watermark-TNGKIW4U.js} +5 -5
  39. package/dist/chunks/{eyedropper-AL5LU2LC.js → eyedropper-WJ6CVJ2X.js} +1 -1
  40. package/dist/chunks/{generate-media-GQ2LGW2K.js → generate-media-3GLD745C.js} +2 -2
  41. package/dist/chunks/{host-QNEIW6XI.js → host-JR2OTWH6.js} +6 -6
  42. package/dist/chunks/{integrations-2MDKW4EY.js → integrations-PCEXPAMC.js} +1 -1
  43. package/dist/chunks/{libraries-HU55RMSB.js → libraries-ED7QA73Y.js} +5 -5
  44. package/dist/chunks/{live-FYSVG45I.js → live-SGMH3365.js} +1 -1
  45. package/dist/chunks/{media-tool-HX2AQWQN.js → media-tool-DL2Q5FVV.js} +1 -1
  46. package/dist/chunks/{new-file-7W7HWEBN.js → new-file-NKCOHO3I.js} +3 -3
  47. package/dist/chunks/{plugin-5XHYBTFQ.js → plugin-LF6PU2TS.js} +2 -2
  48. package/dist/chunks/{plugin-import-XVCJJZWW.js → plugin-import-JLZKU45F.js} +13 -13
  49. package/dist/chunks/{presence-KAKB2N46.js → presence-H2IHOP5C.js} +2 -2
  50. package/dist/chunks/{project-D3I2HSHS.js → project-GV6N7IZG.js} +1 -1
  51. package/dist/chunks/{publish-site-YN2YTC7C.js → publish-site-W4XW2UTB.js} +6 -6
  52. package/dist/chunks/{publish-store-GJYYCXKG.js → publish-store-CT5GERZC.js} +4 -4
  53. package/dist/chunks/{raster-actions-A4DJV5G2.js → raster-actions-UVOUSRCS.js} +1 -1
  54. package/dist/chunks/{runner-B6P6F7Y6.js → runner-YT2NM6N7.js} +16 -16
  55. package/dist/chunks/{store-TGA3GXXW.js → store-QMRWXCRN.js} +5 -5
  56. package/dist/chunks/{sync-BUK3N4AG.js → sync-6MJJNBNR.js} +5 -5
  57. package/dist/chunks/{tabs-K4HQLFPL.js → tabs-KCHJ6S2X.js} +8 -8
  58. package/dist/chunks/{team-U36WZSRZ.js → team-D7TA6MS4.js} +1 -1
  59. package/dist/chunks/{tools-FOMWBG4O.js → tools-ADDMIT53.js} +2 -2
  60. package/dist/chunks/{ui-commands-GEKGZ7LJ.js → ui-commands-GBWFC4GM.js} +11 -11
  61. package/dist/chunks/{versions-YD26QFKO.js → versions-V6QKHBEC.js} +5 -5
  62. package/dist/index.js +1 -1
  63. package/dist/templates/count.js +1 -1
  64. package/dist/templates/index.js +9 -9
  65. package/dist/templates/index.json +1 -1
  66. package/dist/templates/motion/landing-hero/index.js +4 -4
  67. package/dist/templates/motion/launch-trailer/document.js +9 -9
  68. package/dist/templates/motion/launch-trailer/index.js +4 -4
  69. package/dist/templates/motion/launch-trailer/scenes.js +3 -3
  70. package/dist/templates/motion/template-wall.js +2 -2
  71. package/dist/templates/print/studio-portfolio-booklet.js +1 -1
  72. package/dist/templates/themes/index.js +3 -3
  73. package/dist/templates/themes/studio.js +2 -2
  74. package/package.json +1 -1
  75. package/src/templates/print/studio-portfolio-booklet.ts +24 -19
@@ -18,7 +18,7 @@ import {
18
18
  renderDocument,
19
19
  toolView,
20
20
  underReviewKit
21
- } from "./chunk-PPBHH7GH.js";
21
+ } from "./chunk-Y2BZGNEC.js";
22
22
  import "./chunk-4IWFXXW7.js";
23
23
  import "./chunk-AWCX3KY5.js";
24
24
  import "./chunk-S3NCTJSU.js";
@@ -7,8 +7,8 @@ const __dirname = __popcraftDirname(__filename);
7
7
  import {
8
8
  builtinTools,
9
9
  registerBuiltinTools
10
- } from "./chunk-LHCHUICU.js";
11
- import "./chunk-RDAMU4OP.js";
10
+ } from "./chunk-SGCSBWBQ.js";
11
+ import "./chunk-3ZAY3GT4.js";
12
12
  import "./chunk-TQ5TLZRA.js";
13
13
  import "./chunk-2PHWCTSH.js";
14
14
  import "./chunk-OREAM3Y4.js";
@@ -19,7 +19,7 @@ import "./chunk-WE65QLWL.js";
19
19
  import "./chunk-XP3XW3ZI.js";
20
20
  import "./chunk-THYPZDTA.js";
21
21
  import "./chunk-K4L66YMB.js";
22
- import "./chunk-PPBHH7GH.js";
22
+ import "./chunk-Y2BZGNEC.js";
23
23
  import "./chunk-4IWFXXW7.js";
24
24
  import "./chunk-UMXRRE7X.js";
25
25
  import "./chunk-HXUJ4YQP.js";
@@ -6,10 +6,10 @@ const __filename = __popcraftPath(import.meta.url);
6
6
  const __dirname = __popcraftDirname(__filename);
7
7
  import {
8
8
  appCommands
9
- } from "./chunk-CTNYOI7K.js";
9
+ } from "./chunk-2657F23X.js";
10
10
  import {
11
11
  builtinCommands
12
- } from "./chunk-RDAMU4OP.js";
12
+ } from "./chunk-3ZAY3GT4.js";
13
13
  import "./chunk-TQ5TLZRA.js";
14
14
  import "./chunk-2PHWCTSH.js";
15
15
  import "./chunk-OREAM3Y4.js";
@@ -8,7 +8,7 @@ import {
8
8
  needsSelection,
9
9
  pageGo,
10
10
  selectionIsPicture
11
- } from "./chunk-RDAMU4OP.js";
11
+ } from "./chunk-3ZAY3GT4.js";
12
12
  import {
13
13
  external_exports
14
14
  } from "./chunk-K4L66YMB.js";
@@ -31,7 +31,7 @@ var none = external_exports.object({});
31
31
  var emit = (name, detail) => {
32
32
  if (typeof window !== "undefined") window.dispatchEvent(new CustomEvent(name, { detail }));
33
33
  };
34
- var store = () => import("./editor-store-RJRX5NDT.js").then((m) => m.useEditorStore.getState());
34
+ var store = () => import("./editor-store-FWNCBZKH.js").then((m) => m.useEditorStore.getState());
35
35
  var MODE_IDS = MODE_LIST.map((m) => m.id);
36
36
  var MODE_ALIASES = { JAM: "POPCORN" };
37
37
  var modeSet = defineCommand({
@@ -209,7 +209,7 @@ var aiOpen = defineCommand({
209
209
  ] } },
210
210
  run: async ({ dialog, skillId }) => {
211
211
  if (dialog) (await import("./client-store-BNNIWZTR.js")).openAiDialog(dialog);
212
- else (await import("./store-TGA3GXXW.js")).openAgentPanel({ skillId: skillId ?? null });
212
+ else (await import("./store-QMRWXCRN.js")).openAgentPanel({ skillId: skillId ?? null });
213
213
  return { summary: dialog ? `Opened AI ${dialog}` : "Opened the agent" };
214
214
  }
215
215
  });
@@ -288,11 +288,11 @@ var toolPlace = defineCommand({
288
288
  run: async ({ what }) => {
289
289
  if (what === "media") {
290
290
  const s = await store();
291
- const { placeMediaFromPicker } = await import("./media-tool-HX2AQWQN.js");
291
+ const { placeMediaFromPicker } = await import("./media-tool-DL2Q5FVV.js");
292
292
  await placeMediaFromPicker({ kind: "point", x: s.camera.x, y: s.camera.y });
293
293
  return { summary: "Placing media" };
294
294
  }
295
- const { beginEyedrop } = await import("./eyedropper-AL5LU2LC.js");
295
+ const { beginEyedrop } = await import("./eyedropper-WJ6CVJ2X.js");
296
296
  void beginEyedrop();
297
297
  return { summary: "Pick a color" };
298
298
  }
@@ -310,7 +310,7 @@ var nodeRasterize = defineCommand({
310
310
  keywords: ["rasterize", "raster", "flatten", "pixels", "paint layer", "erase", "bitmap"]
311
311
  } },
312
312
  run: async () => {
313
- const { flattenSelectionToPaintLayer } = await import("./raster-actions-A4DJV5G2.js");
313
+ const { flattenSelectionToPaintLayer } = await import("./raster-actions-UVOUSRCS.js");
314
314
  await flattenSelectionToPaintLayer();
315
315
  return { summary: "Rasterized" };
316
316
  }
@@ -421,7 +421,7 @@ function pluginCommand(plugins) {
421
421
  params: external_exports.object({ pluginId: external_exports.string(), commandId: external_exports.string() }),
422
422
  expose: { ui: { label: "Run plugin", keywords: ["plugin", "extension", "run"], variants, palette: variants.length ? void 0 : false } },
423
423
  run: async ({ pluginId, commandId }) => {
424
- await (await import("./host-QNEIW6XI.js")).runPlugin(pluginId, commandId);
424
+ await (await import("./host-JR2OTWH6.js")).runPlugin(pluginId, commandId);
425
425
  return { summary: "Plugin started" };
426
426
  }
427
427
  });
@@ -9423,7 +9423,7 @@ var templates_default = [
9423
9423
  name: "Photography portfolio booklet",
9424
9424
  kind: "PRINT",
9425
9425
  category: "brochure",
9426
- bytes: 87920
9426
+ bytes: 90442
9427
9427
  },
9428
9428
  {
9429
9429
  id: "popcraft.print-tabloid-front",
@@ -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-7IOICWAQ.js");
867
+ const client = await import("./client-MBWEDONV.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-7IOICWAQ.js");
913
+ const { searchStockPhotos } = await import("./client-MBWEDONV.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-7IOICWAQ.js");
947
+ const client = await import("./client-MBWEDONV.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-W74T4QJ2.js");
985
+ const { listLibraryMedia } = await import("./client-KWUTPSTP.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-W74T4QJ2.js");
1016
+ const { importLibraryPicture } = await import("./client-KWUTPSTP.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-W74T4QJ2.js");
1037
+ const { libraryBlob, libraryFileName } = await import("./client-KWUTPSTP.js");
1038
1038
  const { downloadBlob } = await import("./download-QRP4SHQC.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-W74T4QJ2.js");
1068
+ const { deleteLibraryMedia } = await import("./client-KWUTPSTP.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-YN2YTC7C.js");
1082
+ const { openFileKey } = await import("./publish-site-W4XW2UTB.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-RJRX5NDT.js"), import("./backend-AFIBLYCA.js"), import("./integrations-2MDKW4EY.js")]);
1088
+ const [{ useEditorStore }, { usesForms, formsGoNowhere }, { siteBackend }] = await Promise.all([import("./editor-store-FWNCBZKH.js"), import("./backend-AFIBLYCA.js"), import("./integrations-PCEXPAMC.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-2DYIVA25.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-YN2YTC7C.js");
1124
+ const { publishOpenFile, NoScreens } = await import("./publish-site-W4XW2UTB.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-7MEIODBV.js"), import("./team-U36WZSRZ.js")]);
1179
+ const [{ workspaceSites }, { activeTeamWorkspaceId, useHyperyTeam }] = await Promise.all([import("./sites-7MEIODBV.js"), import("./team-D7TA6MS4.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-YN2YTC7C.js"), import("./sites-7MEIODBV.js")]);
1228
+ const [{ openFileKey }, { siteStatus }] = await Promise.all([import("./publish-site-W4XW2UTB.js"), import("./sites-7MEIODBV.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-2MDKW4EY.js")).siteBackend(key).catch(() => null) : null;
1233
- const destinations = key ? await (await import("./integrations-2MDKW4EY.js")).listDestinations(key).catch(() => []) : [];
1232
+ const backend = key ? await (await import("./integrations-PCEXPAMC.js")).siteBackend(key).catch(() => null) : null;
1233
+ const destinations = key ? await (await import("./integrations-PCEXPAMC.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-GJYYCXKG.js");
1264
+ const { deployOpenStore } = await import("./publish-store-CT5GERZC.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-ZCCLFUMV.js"), import("./integrations-2MDKW4EY.js")]);
1293
+ const [{ cloudUser }, { integrationsWorkspaceId, listWorkspaceIntegrations }] = await Promise.all([import("./session-ZCCLFUMV.js"), import("./integrations-PCEXPAMC.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-ZCCLFUMV.js"), import("./publish-site-YN2YTC7C.js")]);
1334
+ const [{ cloudUser }, { openFileKey }] = await Promise.all([import("./session-ZCCLFUMV.js"), import("./publish-site-W4XW2UTB.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-2MDKW4EY.js");
1360
+ const { listResources } = await import("./integrations-PCEXPAMC.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-2MDKW4EY.js");
1395
+ const { addDestination, createDestination, createResource } = await import("./integrations-PCEXPAMC.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-2MDKW4EY.js");
1432
+ const { deployDestination, listDestinations } = await import("./integrations-PCEXPAMC.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-2MDKW4EY.js");
1466
+ const { attachDatabase, createDatabase, createResource, listResources } = await import("./integrations-PCEXPAMC.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-2MDKW4EY.js");
1505
+ const { listSubmissions } = await import("./integrations-PCEXPAMC.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-2MDKW4EY.js");
1530
+ const { setSignIn } = await import("./integrations-PCEXPAMC.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 } };
@@ -1539,7 +1539,7 @@ var integrationConfirmCommands = [integrationAddDestination, integrationDeploy,
1539
1539
  init_define_POPCRAFT_COMPONENT_IDS();
1540
1540
  async function cloudFile() {
1541
1541
  const [{ syncStatus }, { cloudUser }] = await Promise.all([
1542
- import("./sync-BUK3N4AG.js"),
1542
+ import("./sync-6MJJNBNR.js"),
1543
1543
  import("./session-ZCCLFUMV.js")
1544
1544
  ]);
1545
1545
  const link2 = syncStatus().link;
@@ -1691,11 +1691,11 @@ var fileDuplicate = defineCommand({
1691
1691
  },
1692
1692
  run: async (_p, ctx) => {
1693
1693
  const [{ syncStatus }, { cloudApi }, { isDesktopTabs }, { createFileInTab }, { openNewCloudFile }, { v4: uuid }] = await Promise.all([
1694
- import("./sync-BUK3N4AG.js"),
1694
+ import("./sync-6MJJNBNR.js"),
1695
1695
  import("./api-B7VRVE6R.js"),
1696
1696
  import("./tab-mode-RVAS25KO.js"),
1697
- import("./tabs-K4HQLFPL.js"),
1698
- import("./sync-BUK3N4AG.js"),
1697
+ import("./tabs-KCHJ6S2X.js"),
1698
+ import("./sync-6MJJNBNR.js"),
1699
1699
  import("./dist-node-IZDWGJGB.js")
1700
1700
  ]);
1701
1701
  const doc2 = ctx.doc();
@@ -4311,7 +4311,7 @@ var viewCopyLink = defineCommand({
4311
4311
  },
4312
4312
  run: async (args, ctx) => {
4313
4313
  const [{ syncStatus }, { fileUrl }, { withDeepLink }] = await Promise.all([
4314
- import("./sync-BUK3N4AG.js"),
4314
+ import("./sync-6MJJNBNR.js"),
4315
4315
  import("./api-B7VRVE6R.js"),
4316
4316
  import("./deep-link-AM3G76RP.js")
4317
4317
  ]);
@@ -4636,7 +4636,7 @@ var pageGo = defineCommand({
4636
4636
  ] }
4637
4637
  },
4638
4638
  run: async ({ to }) => {
4639
- const { useEditorStore } = await import("./editor-store-RJRX5NDT.js");
4639
+ const { useEditorStore } = await import("./editor-store-FWNCBZKH.js");
4640
4640
  useEditorStore.getState().goToPrintPage(to);
4641
4641
  return { summary: typeof to === "number" ? `Page ${to + 1}` : `${to} page` };
4642
4642
  }
@@ -4670,7 +4670,7 @@ var pageSetup = defineCommand({
4670
4670
  }
4671
4671
  },
4672
4672
  run: async (args) => {
4673
- const { useEditorStore } = await import("./editor-store-RJRX5NDT.js");
4673
+ const { useEditorStore } = await import("./editor-store-FWNCBZKH.js");
4674
4674
  useEditorStore.getState().applyPageSetup(args);
4675
4675
  return { summary: `Page setup updated${args.kind ? ` (${args.kind.toLowerCase()})` : ""}` };
4676
4676
  }
@@ -5778,7 +5778,7 @@ async function runAnimationExport(format, args, ctx) {
5778
5778
  const filename = exportFileName(args.filename || targetName(doc2, target), format);
5779
5779
  const [{ exportAnimation }, { memoryDestination }] = await Promise.all([import("./video-XLT4BAQD.js"), import("./destination-AKNQWMK5.js")]);
5780
5780
  if (format === "lottie" || format === "dotlottie") return runLottieExport(renderer, doc2, spec, filename, ctx, memoryDestination, args.stateMachine);
5781
- const planWatermark = format !== "png" && await (await import("./export-watermark-BWN23IRO.js")).exportWatermark();
5781
+ const planWatermark = format !== "png" && await (await import("./export-watermark-TNGKIW4U.js")).exportWatermark();
5782
5782
  if (format !== "png") spec = { ...spec, watermark: planWatermark || args.watermark !== false };
5783
5783
  const dest = ctx.destination ? await ctx.destination(filename, FORMAT_MIME[format]) : memoryDestination(filename, FORMAT_MIME[format]);
5784
5784
  let stats;
@@ -5864,7 +5864,7 @@ var exportLottie = animationCommand((args) => args.container === "lottie" ? "dot
5864
5864
  });
5865
5865
  async function exportSite(doc2, pageId2, packaging, styling = "css", siteUrl) {
5866
5866
  const [{ completeSite, nextFilesOf, shareImageFiles, staticFilesOf, NoSiteRuntime, bytesOf }, { fileBase }, { zipFiles }, { downloadBlob }] = await Promise.all([
5867
- import("./project-D3I2HSHS.js"),
5867
+ import("./project-GV6N7IZG.js"),
5868
5868
  import("./web-6RRCJYHG.js"),
5869
5869
  import("./zip-export-RRIKWMJ5.js"),
5870
5870
  import("./download-QRP4SHQC.js")
@@ -5953,7 +5953,7 @@ var exportStorefront = defineCommand({
5953
5953
  const [{ storefrontInputs }, { STOREFRONT_TARGETS }, { bytesOf }, { fileBase, flatten }, { zipFiles }, { downloadBlob }] = await Promise.all([
5954
5954
  import("./storefront-prepare-EB7XPL5S.js"),
5955
5955
  import("./storefront-N5GDIZFK.js"),
5956
- import("./project-D3I2HSHS.js"),
5956
+ import("./project-GV6N7IZG.js"),
5957
5957
  import("./web-6RRCJYHG.js"),
5958
5958
  import("./zip-export-RRIKWMJ5.js"),
5959
5959
  import("./download-QRP4SHQC.js")
@@ -6348,7 +6348,7 @@ var visionRegenerateImage = defineCommand({
6348
6348
  const id = args.id ?? ctx.selection()[0];
6349
6349
  if (!id) throw new ToolError("Select a generated image to regenerate.");
6350
6350
  nodeOrThrow(ctx.doc(), id);
6351
- const { regenerateImage } = await import("./client-actions-F5KAYWC6.js");
6351
+ const { regenerateImage } = await import("./client-actions-YXQGAUP6.js");
6352
6352
  regenerateImage(id, args.count);
6353
6353
  return { summary: args.count > 1 ? `Regenerating ${args.count} variants` : "Regenerating the image", data: { id, count: args.count } };
6354
6354
  }
@@ -9507,7 +9507,7 @@ var scriptRun = defineCommand({
9507
9507
  // A script is not the turn the user is watching: confirm-tier tools are refused inside it (dispatch, `nested`).
9508
9508
  actor: { ...ctx.actor, nested: true, label: "Script" },
9509
9509
  // A look_at inside the script sees the document as the script has left it so far, not as it was before.
9510
- use: ((name2) => name2 === "render" && ctx.can("render") ? (async (ids, options) => (await import("./agent-BJBUTTSC.js")).renderDocument(staged, ids, options)) : ctx.use(name2))
9510
+ use: ((name2) => name2 === "render" && ctx.can("render") ? (async (ids, options) => (await import("./agent-4LLNDPKT.js")).renderDocument(staged, ids, options)) : ctx.use(name2))
9511
9511
  };
9512
9512
  let calls = 0;
9513
9513
  const images = [];
@@ -10327,7 +10327,7 @@ var docImportFile = defineCommand({
10327
10327
  const file = new File([body], args.name);
10328
10328
  if (file.size > MAX_BYTES) throw new ToolError(`"${args.name}" is larger than ${MAX_BYTES / 1024 / 1024} MB.`);
10329
10329
  const [{ buildImportedDocument }, { mergeImportedDocument }] = await Promise.all([
10330
- import("./plugin-import-XVCJJZWW.js"),
10330
+ import("./plugin-import-JLZKU45F.js"),
10331
10331
  import("./import-merge-ZZF4IRWT.js")
10332
10332
  ]);
10333
10333
  const built = await buildImportedDocument(file);
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-BER3474S.js";
14
14
  import {
15
15
  activeHyperyTeamId
16
- } from "./chunk-NCALTIBW.js";
16
+ } from "./chunk-ONACJFBL.js";
17
17
  import {
18
18
  accessToken
19
19
  } from "./chunk-6V33QJ7X.js";
@@ -95,6 +95,8 @@ var AiClientError = class extends Error {
95
95
  this.code = code;
96
96
  this.status = status;
97
97
  }
98
+ code;
99
+ status;
98
100
  };
99
101
  var needsReauth = (e) => e instanceof AiClientError && (e.code === "ai_reauth" || e.code === "ai_scope" || e.code === "unauthenticated");
100
102
  function ensureAvailable() {
@@ -28,10 +28,10 @@ import {
28
28
  requestImageAction,
29
29
  sizeForAspect,
30
30
  vectorSupport
31
- } from "./chunk-SGMCUBDF.js";
31
+ } from "./chunk-4QGD7QA4.js";
32
32
  import {
33
33
  useEditorStore
34
- } from "./chunk-SJHSD7GG.js";
34
+ } from "./chunk-IMRJGGQP.js";
35
35
  import {
36
36
  getActiveRenderer
37
37
  } from "./chunk-3MAL75OH.js";
@@ -14,14 +14,14 @@ import {
14
14
  newFileRefusal,
15
15
  reportNewFileBlocked,
16
16
  setCloudLink
17
- } from "./chunk-7XSGWFUU.js";
17
+ } from "./chunk-R2OWUZAJ.js";
18
18
  import {
19
19
  parseDeepLink,
20
20
  withDeepLink
21
21
  } from "./chunk-S7535LBA.js";
22
22
  import {
23
23
  activeTeamWorkspaceId
24
- } from "./chunk-NCALTIBW.js";
24
+ } from "./chunk-ONACJFBL.js";
25
25
  import {
26
26
  ApiError,
27
27
  api,
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-IVBHDW3H.js";
30
30
  import {
31
31
  attachPresence
32
- } from "./chunk-2HAVVRLV.js";
32
+ } from "./chunk-SUEY4TWT.js";
33
33
  import {
34
34
  isPersistableDocument,
35
35
  isUnsavedPlaceholder,
@@ -40,7 +40,7 @@ import {
40
40
  setCollabHistory,
41
41
  storedDocument,
42
42
  useEditorStore
43
- } from "./chunk-SJHSD7GG.js";
43
+ } from "./chunk-IMRJGGQP.js";
44
44
  import {
45
45
  accessToken,
46
46
  cloudUser,
@@ -91,9 +91,9 @@ async function placeStockPhoto(photo, opts = {}) {
91
91
  }
92
92
  async function placePicture(imported, opts = {}) {
93
93
  const [{ useEditorStore }, { photoFrameOf }, { placeImage }] = await Promise.all([
94
- import("./editor-store-RJRX5NDT.js"),
94
+ import("./editor-store-FWNCBZKH.js"),
95
95
  import("../lib/document/photo-frames.js"),
96
- import("./media-tool-HX2AQWQN.js")
96
+ import("./media-tool-DL2Q5FVV.js")
97
97
  ]);
98
98
  const st = useEditorStore.getState();
99
99
  const frame = photoFrameOf(st.document.nodes, opts.targetId !== void 0 ? opts.targetId : st.selection[0] ?? null);
@@ -19,11 +19,11 @@ import {
19
19
  popIn,
20
20
  shadow,
21
21
  travel
22
- } from "./chunk-PXATZ4UZ.js";
22
+ } from "./chunk-QO6RCB54.js";
23
23
  import {
24
24
  DURATION,
25
25
  buildTemplateWall
26
- } from "./chunk-4JCGRWOD.js";
26
+ } from "./chunk-IUS7V3NP.js";
27
27
  import {
28
28
  COLLABORATORS,
29
29
  COLORS,
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-EAUXOBUJ.js";
19
19
  import {
20
20
  studio_portfolio_booklet_default
21
- } from "./chunk-V55HSSYV.js";
21
+ } from "./chunk-GCCKB3Z6.js";
22
22
  import {
23
23
  init_define_POPCRAFT_COMPONENT_IDS
24
24
  } from "./chunk-RQBXIEJX.js";
@@ -80,7 +80,7 @@ var studio_portfolio_booklet_default = defineTemplate({
80
80
  id: "print-studio-portfolio-booklet",
81
81
  meta: {
82
82
  name: "Photography portfolio booklet",
83
- description: "A twelve-page A5 portfolio to leave behind after a meeting: a cover, an about page with clients, four projects as spreads with a full-bleed picture and the story beside it, a contact page and a back cover. Pictures run into the 3 mm bleed, and the page count imposes as a folded and stapled booklet. For photographers, illustrators and designers",
83
+ description: "A twelve-page A5 portfolio to leave behind after a meeting: a cover, four projects as spreads with a full-bleed picture and the story beside it, an about page with clients facing the contact page, and a back cover. Pictures run into the 3 mm bleed, and the page count imposes as a folded and stapled booklet. For photographers, illustrators and designers",
84
84
  category: "brochure",
85
85
  tags: ["portfolio", "booklet", "zine", "photography", "photographer", "leave-behind", "a5", "saddle stitch", "print", "creative", "designer"],
86
86
  platforms: ["print"],
@@ -128,10 +128,10 @@ var studio_portfolio_booklet_default = defineTemplate({
128
128
  return img;
129
129
  };
130
130
  const column = (p, gap, name) => k.stack(p, { gap, name });
131
- k.component("Folio", { width: W - M * 2, direction: "HORIZONTAL", props: { Number: "02" } }, (id) => {
132
- k.propText(id, "Number", { style: "Label 10", color: "onPaper", width: "FILL" });
131
+ k.variantSet("Folio", "Side", ["Left", "Right"], { width: W - M * 2, direction: "HORIZONTAL", props: { Number: "02" } }, (side, id) => {
132
+ k.propText(id, "Number", { style: "Label 10", color: "onPaper", width: "FILL", align: side === "Left" ? "LEFT" : "RIGHT" });
133
133
  });
134
- const folio = (p, n2) => k.instance(p, "Folio", { Number: String(n2).padStart(2, "0") }, { width: "FILL", name: "Folio" });
134
+ const folio = (p, n2) => k.instance(p, n2 % 2 ? "Folio/Right" : "Folio/Left", { Number: String(n2).padStart(2, "0") }, { width: "FILL", name: "Folio" });
135
135
  const spacer = (p) => {
136
136
  const s = k.stack(p, { name: "Space" });
137
137
  k.patch(s, { layoutSizingVertical: "FILL" });
@@ -143,16 +143,7 @@ var studio_portfolio_booklet_default = defineTemplate({
143
143
  k.text(cw, "{{brand.name}}", { style: "Cover 54", color: "text", width: "FILL", name: "Name" });
144
144
  picture(cover, "photo-06", 290, "Cover picture");
145
145
  k.text(cover, "Selected work, 2023 \u2013 2026", { style: "Lead 20", color: "text", width: "FILL", name: "Subtitle" });
146
- const about = page("About", { gap: 16 });
147
- picture(about, "photo-04", 220, "About picture");
148
- k.text(about, "ABOUT", { style: "Label 10", color: "text", width: "FILL", name: "Kicker" });
149
- k.text(about, "I photograph work: the people who do it, the places it happens, and the hours nobody else sees.", { style: "Lead 20", color: "text", width: "FILL", name: "Statement" });
150
- k.text(about, "I am a documentary and editorial photographer based in Lisbon, working on long projects across Europe, Africa and Asia and on commissions for magazines and brands that want pictures with a story under them. I shoot on location, by available light, and I stay long enough to be forgotten.", { style: "Body 12.5", color: "text", width: "FILL", name: "About" });
151
- k.text(about, "SELECTED CLIENTS", { style: "Label 10", color: "onPaper", width: "FILL", name: "Clients title" });
152
- k.text(about, "Monocle \xB7 Kinfolk \xB7 P\xFAblico \xB7 Atlas Review \xB7 The Gentlewoman \xB7 Aesop \xB7 Funda\xE7\xE3o Gulbenkian \xB7 Patagonia", { style: "Body 12.5", color: "text", width: "FILL", name: "Clients" });
153
- spacer(about);
154
- folio(about, 2);
155
- let n = 3;
146
+ let n = 2;
156
147
  for (const p of PROJECTS) {
157
148
  const left = page(`${p.title} \u2014 picture`);
158
149
  bleedPicture(left, p.lead, "Lead picture");
@@ -171,6 +162,15 @@ var studio_portfolio_booklet_default = defineTemplate({
171
162
  folio(right, n + 1);
172
163
  n += 2;
173
164
  }
165
+ const about = page("About", { gap: 16 });
166
+ picture(about, "photo-04", 220, "About picture");
167
+ k.text(about, "ABOUT", { style: "Label 10", color: "text", width: "FILL", name: "Kicker" });
168
+ k.text(about, "I photograph work: the people who do it, the places it happens, and the hours nobody else sees.", { style: "Lead 20", color: "text", width: "FILL", name: "Statement" });
169
+ k.text(about, "I am a documentary and editorial photographer based in Lisbon, working on long projects across Europe, Africa and Asia and on commissions for magazines and brands that want pictures with a story under them. I shoot on location, by available light, and I stay long enough to be forgotten.", { style: "Body 12.5", color: "text", width: "FILL", name: "About" });
170
+ k.text(about, "SELECTED CLIENTS", { style: "Label 10", color: "onPaper", width: "FILL", name: "Clients title" });
171
+ k.text(about, "Monocle \xB7 Kinfolk \xB7 P\xFAblico \xB7 Atlas Review \xB7 The Gentlewoman \xB7 Aesop \xB7 Funda\xE7\xE3o Gulbenkian \xB7 Patagonia", { style: "Body 12.5", color: "text", width: "FILL", name: "Clients" });
172
+ spacer(about);
173
+ folio(about, 10);
174
174
  const contact = page("Contact", { gap: 18 });
175
175
  spacer(contact);
176
176
  k.text(contact, "CONTACT", { style: "Label 10", color: "text", width: "FILL", name: "Kicker" });
@@ -13,7 +13,7 @@ import {
13
13
  agentTool,
14
14
  agentToolList,
15
15
  registerCommands
16
- } from "./chunk-PPBHH7GH.js";
16
+ } from "./chunk-Y2BZGNEC.js";
17
17
  import {
18
18
  dispatch
19
19
  } from "./chunk-AWCX3KY5.js";
@@ -4573,7 +4573,7 @@ function createPopcornSlice(set2, get2) {
4573
4573
  privateMode: false,
4574
4574
  setPrivateMode: (on) => {
4575
4575
  set2({ privateMode: on });
4576
- void import("./presence-KAKB2N46.js").then((m) => m.setPresencePrivate(on)).catch(() => {
4576
+ void import("./presence-H2IHOP5C.js").then((m) => m.setPresencePrivate(on)).catch(() => {
4577
4577
  });
4578
4578
  },
4579
4579
  /** Reveal every private item THIS user created (they sync to collaborators). Others' stay theirs. */
@@ -6626,7 +6626,7 @@ var useEditorStore = create()(
6626
6626
  // A copy is a new file, so it is cloud-backed like any other (see lib/client/cloud/new-file.ts).
6627
6627
  // Returns '' when it was refused (offline, signed out, plan full) or failed; nothing is left behind.
6628
6628
  duplicateDocument: async (id) => {
6629
- const { duplicateDocumentToCloud } = await import("./sync-BUK3N4AG.js");
6629
+ const { duplicateDocumentToCloud } = await import("./sync-6MJJNBNR.js");
6630
6630
  return duplicateDocumentToCloud(id);
6631
6631
  },
6632
6632
  deleteDocument: async (id) => {
@@ -10078,9 +10078,9 @@ if (typeof window !== "undefined") {
10078
10078
  if (typeof window !== "undefined" && navigator.webdriver) {
10079
10079
  window.__vpDesign = async (script, o = {}) => {
10080
10080
  const [{ registerBuiltinTools, runTool }, { editorToolContext }, { createDesignPreview }] = await Promise.all([
10081
- import("./tools-FOMWBG4O.js").then(async (m) => ({ ...m, registerBuiltinTools: (await import("./builtin-CLB5OHKL.js")).registerBuiltinTools })),
10082
- import("./editor-seams-GJIWTUEC.js"),
10083
- import("./live-FYSVG45I.js")
10081
+ import("./tools-ADDMIT53.js").then(async (m) => ({ ...m, registerBuiltinTools: (await import("./builtin-MPHCX2R5.js")).registerBuiltinTools })),
10082
+ import("./editor-seams-KWSXIJ6M.js"),
10083
+ import("./live-SGMH3365.js")
10084
10084
  ]);
10085
10085
  registerBuiltinTools();
10086
10086
  const args = JSON.stringify({ ...o.name ? { name: o.name } : {}, ...o.size ? { size: o.size } : {}, ...o.frame ? { frame: o.frame } : {}, script });
@@ -12,7 +12,7 @@ import {
12
12
  countLabel,
13
13
  loadFixture,
14
14
  officialTemplateCount
15
- } from "./chunk-ELVQX6RI.js";
15
+ } from "./chunk-3NGYOEXU.js";
16
16
  import {
17
17
  defineTemplate
18
18
  } from "./chunk-Z2X2HGTO.js";