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