gutterpress 0.10.7 → 0.10.8

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 (59) hide show
  1. package/README.md +10 -3
  2. package/dist/README-aaqapam1.md +186 -0
  3. package/dist/README-mdq34cmb.md +155 -0
  4. package/dist/api/index.d.ts +6 -2
  5. package/dist/api/index.js +30 -2
  6. package/dist/{audit-19e2431j.js → audit-m3ce9pvq.js} +4 -4
  7. package/dist/base-ypqh9n7f.css +123 -0
  8. package/dist/book-ted3tzrp.css +58 -0
  9. package/dist/{build-gqqew2vr.js → build-qnecb3a1.js} +4 -4
  10. package/dist/callout-hv56m16h.md +7 -0
  11. package/dist/{cli-kzf64c2g.js → cli-1hx14cgk.js} +946 -401
  12. package/dist/{cli-s8q42x3r.js → cli-4vtgt2ng.js} +78 -2
  13. package/dist/{cli-h8ejbtyr.js → cli-vcv5ewqj.js} +1 -1
  14. package/dist/{cli-pvk2s9d7.js → cli-vxf151ea.js} +1 -1
  15. package/dist/cli.js +16 -16
  16. package/dist/components-0mmswvvm.yaml +51 -0
  17. package/dist/components-aam0fe2z.css +94 -0
  18. package/dist/{doctor-3ccz35yz.js → doctor-qvqye1wd.js} +2 -2
  19. package/dist/{engine-pb6h089e.js → engine-daad33qn.js} +1 -1
  20. package/dist/{engine-88mynx9a.js → engine-db8632w6.js} +2 -2
  21. package/dist/expected-ycmacem8.html +9 -0
  22. package/dist/fixture-2qnyqgb5.md +10 -0
  23. package/dist/gutterpress-m98e2w2d.json +8 -0
  24. package/dist/gutterpress-x2ycdsb8.json +17 -0
  25. package/dist/{index-837htyjy.js → index-9pbaznww.js} +78 -2
  26. package/dist/{index-r4ny4fyr.js → index-dfw8hn8q.js} +1147 -523
  27. package/dist/{index-a0xpm188.js → index-rpt4vtby.js} +1 -1
  28. package/dist/index.js +31 -3
  29. package/dist/lib/build-runner.d.ts +52 -0
  30. package/dist/lib/extension-manifest.d.ts +164 -0
  31. package/dist/lib/extension-scaffold.d.ts +65 -0
  32. package/dist/lib/lint-runner.d.ts +12 -0
  33. package/dist/lib/markdown/assemble.d.ts +12 -0
  34. package/dist/lib/markdown/markers.d.ts +20 -0
  35. package/dist/lib/markdown/plugins.d.ts +1 -1
  36. package/dist/lib/markdown/renderer.d.ts +99 -0
  37. package/dist/lib/snippets.d.ts +121 -5
  38. package/dist/lib/theme-import.d.ts +8 -4
  39. package/dist/lib/theme-manager.d.ts +52 -39
  40. package/dist/lib/validation-exec.d.ts +12 -0
  41. package/dist/{lint-mpz7vfc8.js → lint-3p1s8agk.js} +4 -4
  42. package/dist/{manifest.schema-kwnrwv8b.json → manifest.schema-1q35yxs9.json} +2 -2
  43. package/dist/{new-nbrpsw7t.js → new-xffarp40.js} +111 -6
  44. package/dist/package-rm9d2tht.json +29 -0
  45. package/dist/page-rules-nsj3aw42.css +128 -0
  46. package/dist/page-templates-7md4ev7d.css +60 -0
  47. package/dist/{plugin-gg5mk26h.js → plugin-b05ck7zd.js} +4 -4
  48. package/dist/plugin-m2w7g47v.css +114 -0
  49. package/dist/plugin.js-aszz0zgh.tpl +172 -0
  50. package/dist/plugin.test.js-mv0ghv5n.tpl +232 -0
  51. package/dist/{preflight-jnmd4mg2.js → preflight-z6xpty9w.js} +4 -4
  52. package/dist/{preview-hsr9d12d.js → preview-xa1n7why.js} +4 -4
  53. package/dist/{publish-pcrrn6fd.js → publish-zgmr99kd.js} +4 -4
  54. package/dist/render.js +275 -8
  55. package/dist/term-box-4y0w7y32.md +7 -0
  56. package/dist/{theme-6fa0yjzq.js → theme-m9dtxkhj.js} +4 -4
  57. package/dist/tokens-e4xk3x4v.css +86 -0
  58. package/dist/{validate-7n25fx0g.js → validate-43hqgzz5.js} +4 -4
  59. package/package.json +1 -1
@@ -1430,7 +1430,7 @@ import { fileURLToPath } from "node:url";
1430
1430
  var favicon_default = "./favicon-wkbm9cjn.ico";
1431
1431
 
1432
1432
  // src/assets/manifest.schema.json
1433
- var manifest_schema_default = "./manifest.schema-kwnrwv8b.json";
1433
+ var manifest_schema_default = "./manifest.schema-1q35yxs9.json";
1434
1434
 
1435
1435
  // src/assets/preview/scripts/preview-interface.js
1436
1436
  var preview_interface_default = "./preview-interface-9rwz21yw.js";
@@ -1468,6 +1468,63 @@ var manifest_default3 = "./manifest-n1gh3qw5.yaml";
1468
1468
  // src/assets/templates/technical/chapter-01.md
1469
1469
  var chapter_01_default3 = "./chapter-01-6fn9pvd0.md";
1470
1470
 
1471
+ // src/assets/extension-templates/plugin/gutterpress.json
1472
+ var gutterpress_default = "./gutterpress-m98e2w2d.json";
1473
+
1474
+ // src/assets/extension-templates/plugin/package.json
1475
+ var package_default = "./package-rm9d2tht.json";
1476
+
1477
+ // src/assets/extension-templates/plugin/README.md
1478
+ var README_default = "./README-mdq34cmb.md";
1479
+
1480
+ // src/assets/extension-templates/plugin/plugin.js.tpl
1481
+ var plugin_js_default = "./plugin.js-aszz0zgh.tpl";
1482
+
1483
+ // src/assets/extension-templates/plugin/styles/plugin.css
1484
+ var plugin_default = "./plugin-m2w7g47v.css";
1485
+
1486
+ // src/assets/extension-templates/plugin/snippets/term-box.md
1487
+ var term_box_default = "./term-box-4y0w7y32.md";
1488
+
1489
+ // src/assets/extension-templates/plugin/test/fixture.md
1490
+ var fixture_default = "./fixture-2qnyqgb5.md";
1491
+
1492
+ // src/assets/extension-templates/plugin/test/expected.html
1493
+ var expected_default = "./expected-ycmacem8.html";
1494
+
1495
+ // src/assets/extension-templates/plugin/test/plugin.test.js.tpl
1496
+ var plugin_test_js_default = "./plugin.test.js-mv0ghv5n.tpl";
1497
+
1498
+ // src/assets/extension-templates/theme/gutterpress.json
1499
+ var gutterpress_default2 = "./gutterpress-x2ycdsb8.json";
1500
+
1501
+ // src/assets/extension-templates/theme/README.md
1502
+ var README_default2 = "./README-aaqapam1.md";
1503
+
1504
+ // src/assets/extension-templates/theme/components.yaml
1505
+ var components_default = "./components-0mmswvvm.yaml";
1506
+
1507
+ // src/assets/extension-templates/theme/snippets/callout.md
1508
+ var callout_default = "./callout-hv56m16h.md";
1509
+
1510
+ // src/assets/extension-templates/theme/styles/tokens.css
1511
+ var tokens_default = "./tokens-e4xk3x4v.css";
1512
+
1513
+ // src/assets/extension-templates/theme/styles/base.css
1514
+ var base_default = "./base-ypqh9n7f.css";
1515
+
1516
+ // src/assets/extension-templates/theme/styles/components.css
1517
+ var components_default2 = "./components-aam0fe2z.css";
1518
+
1519
+ // src/assets/extension-templates/theme/styles/page-templates.css
1520
+ var page_templates_default = "./page-templates-7md4ev7d.css";
1521
+
1522
+ // src/assets/extension-templates/theme/styles/page-rules.css
1523
+ var page_rules_default = "./page-rules-nsj3aw42.css";
1524
+
1525
+ // src/assets/extension-templates/theme/styles/book.css
1526
+ var book_default = "./book-ted3tzrp.css";
1527
+
1471
1528
  // src/assets/themes/clean-book/theme.css
1472
1529
  var theme_default = "./theme-j2bagrfx.css";
1473
1530
 
@@ -1505,6 +1562,25 @@ var EMBEDDED_ASSETS = {
1505
1562
  "templates/zine/chapter-01.md": abs(filePath(chapter_01_default2)),
1506
1563
  "templates/technical/manifest.yaml": abs(filePath(manifest_default3)),
1507
1564
  "templates/technical/chapter-01.md": abs(filePath(chapter_01_default3)),
1565
+ "extension-templates/plugin/gutterpress.json": abs(filePath(gutterpress_default)),
1566
+ "extension-templates/plugin/package.json": abs(filePath(package_default)),
1567
+ "extension-templates/plugin/README.md": abs(filePath(README_default)),
1568
+ "extension-templates/plugin/plugin.js.tpl": abs(filePath(plugin_js_default)),
1569
+ "extension-templates/plugin/styles/plugin.css": abs(filePath(plugin_default)),
1570
+ "extension-templates/plugin/snippets/term-box.md": abs(filePath(term_box_default)),
1571
+ "extension-templates/plugin/test/fixture.md": abs(filePath(fixture_default)),
1572
+ "extension-templates/plugin/test/expected.html": abs(filePath(expected_default)),
1573
+ "extension-templates/plugin/test/plugin.test.js.tpl": abs(filePath(plugin_test_js_default)),
1574
+ "extension-templates/theme/gutterpress.json": abs(filePath(gutterpress_default2)),
1575
+ "extension-templates/theme/README.md": abs(filePath(README_default2)),
1576
+ "extension-templates/theme/components.yaml": abs(filePath(components_default)),
1577
+ "extension-templates/theme/snippets/callout.md": abs(filePath(callout_default)),
1578
+ "extension-templates/theme/styles/tokens.css": abs(filePath(tokens_default)),
1579
+ "extension-templates/theme/styles/base.css": abs(filePath(base_default)),
1580
+ "extension-templates/theme/styles/components.css": abs(filePath(components_default2)),
1581
+ "extension-templates/theme/styles/page-templates.css": abs(filePath(page_templates_default)),
1582
+ "extension-templates/theme/styles/page-rules.css": abs(filePath(page_rules_default)),
1583
+ "extension-templates/theme/styles/book.css": abs(filePath(book_default)),
1508
1584
  "themes/clean-book/theme.css": abs(filePath(theme_default)),
1509
1585
  "themes/clean-book/theme.json": abs(filePath(theme_default2)),
1510
1586
  "themes/zine/theme.css": abs(filePath(theme_default3)),
@@ -2849,4 +2925,4 @@ ${lines.length ? lines.join(`
2849
2925
  `);
2850
2926
  }
2851
2927
 
2852
- export { RENDER_TIMEOUT_MS, prewarmBrowser, getBrowser, closeBrowser, getAssetPath, MARGIN_BOX_IGNORED_PROPERTIES, REQUIRED_MILESTONE, assertMilestone, connectChromium, build };
2928
+ export { RENDER_TIMEOUT_MS, prewarmBrowser, getBrowser, closeBrowser, getAssetsDir, getAssetPath, MARGIN_BOX_IGNORED_PROPERTIES, REQUIRED_MILESTONE, assertMilestone, connectChromium, build };
@@ -4,7 +4,7 @@ import {
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "gutterpress",
7
- version: "0.10.7",
7
+ version: "0.10.8",
8
8
  description: "Markdown-to-PDF converter for professional print layout using a native Chromium print engine and Ghostscript.",
9
9
  author: "itlackey",
10
10
  license: "MPL-2.0",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  package_default
3
- } from "./cli-h8ejbtyr.js";
3
+ } from "./cli-vcv5ewqj.js";
4
4
  import {
5
5
  execCapture,
6
6
  findTool,
package/dist/cli.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  UsageError,
7
7
  package_default,
8
8
  rejectUnknownFlags
9
- } from "./cli-h8ejbtyr.js";
9
+ } from "./cli-vcv5ewqj.js";
10
10
  import {
11
11
  EXIT_CODES
12
12
  } from "./cli-46ycxe6r.js";
@@ -18,17 +18,17 @@ import {
18
18
  import { defineCommand, parseArgs, runMain } from "citty";
19
19
  import { statSync } from "node:fs";
20
20
  var SUBCOMMANDS = {
21
- new: () => import("./new-nbrpsw7t.js").then((m) => m.default),
22
- preview: () => import("./preview-hsr9d12d.js").then((m) => m.default),
23
- build: () => import("./build-gqqew2vr.js").then((m) => m.default),
24
- publish: () => import("./publish-pcrrn6fd.js").then((m) => m.default),
25
- lint: () => import("./lint-mpz7vfc8.js").then((m) => m.default),
26
- validate: () => import("./validate-7n25fx0g.js").then((m) => m.default),
27
- audit: () => import("./audit-19e2431j.js").then((m) => m.default),
28
- preflight: () => import("./preflight-jnmd4mg2.js").then((m) => m.default),
29
- doctor: () => import("./doctor-3ccz35yz.js").then((m) => m.default),
30
- plugin: () => import("./plugin-gg5mk26h.js").then((m) => m.default),
31
- theme: () => import("./theme-6fa0yjzq.js").then((m) => m.default)
21
+ new: () => import("./new-xffarp40.js").then((m) => m.default),
22
+ preview: () => import("./preview-xa1n7why.js").then((m) => m.default),
23
+ build: () => import("./build-qnecb3a1.js").then((m) => m.default),
24
+ publish: () => import("./publish-zgmr99kd.js").then((m) => m.default),
25
+ lint: () => import("./lint-3p1s8agk.js").then((m) => m.default),
26
+ validate: () => import("./validate-43hqgzz5.js").then((m) => m.default),
27
+ audit: () => import("./audit-m3ce9pvq.js").then((m) => m.default),
28
+ preflight: () => import("./preflight-z6xpty9w.js").then((m) => m.default),
29
+ doctor: () => import("./doctor-qvqye1wd.js").then((m) => m.default),
30
+ plugin: () => import("./plugin-b05ck7zd.js").then((m) => m.default),
31
+ theme: () => import("./theme-m9dtxkhj.js").then((m) => m.default)
32
32
  };
33
33
  var VERSION = package_default.version;
34
34
  var main = defineCommand({
@@ -53,7 +53,7 @@ async function preflightRequiredInvocations(rawArgs) {
53
53
  const [command, ...commandArgs] = rawArgs;
54
54
  try {
55
55
  if (command === "new") {
56
- const { newArgs } = await import("./new-nbrpsw7t.js");
56
+ const { newArgs } = await import("./new-xffarp40.js");
57
57
  rejectUnknownFlags(commandArgs, newArgs, "new");
58
58
  const parsed = parseArgs(commandArgs, {
59
59
  ...newArgs,
@@ -65,7 +65,7 @@ async function preflightRequiredInvocations(rawArgs) {
65
65
  return;
66
66
  }
67
67
  if (command === "preflight") {
68
- const { preflightArgs } = await import("./preflight-jnmd4mg2.js");
68
+ const { preflightArgs } = await import("./preflight-z6xpty9w.js");
69
69
  rejectUnknownFlags(commandArgs, preflightArgs, "preflight");
70
70
  const parsed = parseArgs(commandArgs, {
71
71
  ...preflightArgs,
@@ -88,7 +88,7 @@ async function preflightRequiredInvocations(rawArgs) {
88
88
  if (subcommand !== "add") {
89
89
  throw new UsageError(`gutterpress plugin: unknown command "${subcommand}"`);
90
90
  }
91
- const { pluginAddArgs } = await import("./plugin-gg5mk26h.js");
91
+ const { pluginAddArgs } = await import("./plugin-b05ck7zd.js");
92
92
  rejectUnknownFlags(subcommandArgs, pluginAddArgs, "plugin add");
93
93
  const parsed = parseArgs(subcommandArgs, {
94
94
  ...pluginAddArgs,
@@ -118,7 +118,7 @@ async function preflightRequiredInvocations(rawArgs) {
118
118
  themeApplyArgs,
119
119
  themeImportArgs,
120
120
  themeRemoveArgs
121
- } = await import("./theme-6fa0yjzq.js");
121
+ } = await import("./theme-m9dtxkhj.js");
122
122
  const [positionalKey, positionalLabel, commandArgsDef] = subcommand === "apply" ? ["id", "ID", themeApplyArgs] : subcommand === "import" ? ["source", "SOURCE", themeImportArgs] : ["id", "ID", themeRemoveArgs];
123
123
  rejectUnknownFlags(subcommandArgs, commandArgsDef, `theme ${subcommand}`);
124
124
  const parsed = parseArgs(subcommandArgs, {
@@ -0,0 +1,51 @@
1
+ # {{NAME}} — component catalog
2
+ #
3
+ # The enumerated list of what an author can opt into, and what each thing
4
+ # emits. It exists so "documented" and "works" cannot drift apart: the catalog
5
+ # is the thing a new author browses, and the thing to check a component
6
+ # against when you change it.
7
+ #
8
+ # Gutterpress reads this file's PRESENCE today (gutterpress.json's
9
+ # `components:` field points here, and a missing file fails at apply time
10
+ # rather than silently at render time). Nothing yet reads the entries — the
11
+ # registry that will is not built. So treat the shape below as this theme's
12
+ # own convention, useful to you now, and expect to adjust it when core grows
13
+ # a reader.
14
+ #
15
+ # One entry per component, in the same order as components.css.
16
+
17
+ components:
18
+ - name: callout
19
+ # How an author reaches it from markdown.
20
+ recipe: "@section .{{PREFIX}}callout"
21
+ # What lands in the HTML.
22
+ emits: "div.section.{{PREFIX}}callout"
23
+ # Extra classes that change its look.
24
+ variants:
25
+ - name: warning
26
+ recipe: "@section .{{PREFIX}}callout .{{PREFIX}}callout-warning"
27
+ # The public theming surface. Anything NOT listed here is internal and may
28
+ # change without warning.
29
+ tokens:
30
+ - --{{PREFIX}}callout-accent
31
+ - --{{PREFIX}}callout-bg
32
+ - --{{PREFIX}}callout-pad
33
+ - --{{PREFIX}}callout-rule
34
+ # What it does at a page boundary. Worth recording: it is the property
35
+ # most often discovered by accident, three chapters in.
36
+ breaks: avoid
37
+ status: stable
38
+
39
+ # Page templates are catalogued too — an author picks from these by name.
40
+ page_templates:
41
+ - name: opener
42
+ recipe: "@page .{{PREFIX}}opener"
43
+ emits: "div.page.{{PREFIX}}opener"
44
+ notes: "Centred part/chapter opener. No running head, no folio."
45
+ status: stable
46
+
47
+ - name: reference
48
+ recipe: "@page .{{PREFIX}}reference"
49
+ emits: "div.page.{{PREFIX}}reference"
50
+ notes: "Two columns with a rule. Prefer core's .gp-columns-2 for plain columns."
51
+ status: stable
@@ -0,0 +1,94 @@
1
+ /* ===========================================================================
2
+ * {{NAME}} — 3. COMPONENTS
3
+ *
4
+ * OWNS
5
+ * Named, reusable components an author opts into from markdown, one block
6
+ * per component. A component owns everything about itself: its own public
7
+ * tokens, the rules that consume them, its variants, and its break
8
+ * behaviour. Read one block and you know the whole component; cut one block
9
+ * and you have lifted it into another book.
10
+ *
11
+ * MUST NOT CONTAIN
12
+ * - Bare element selectors. `p { … }` here would restyle the whole book
13
+ * from a file nobody expects to. Scope every rule under a component class
14
+ * (`.{{PREFIX}}callout p` is fine — that is the component's own paragraph).
15
+ * - Chapter or page scoping. `#ch-two .{{PREFIX}}callout { … }` couples the
16
+ * component to one book; it belongs in book.css.
17
+ * - Literal values where a token would do. A component that hard-codes a
18
+ * colour cannot be retuned, which defeats the whole arrangement.
19
+ *
20
+ * THE TOKEN PATTERN, which the callout below demonstrates end to end:
21
+ *
22
+ * 1. The component declares its own public tokens at `:root`, defaulting in
23
+ * terms of the BRAND tokens from tokens.css.
24
+ * 2. The component's rules consume them as BARE `var(--x)` — never
25
+ * `var(--x, fallback)`. The default lives at `:root` exactly once, so
26
+ * there is one place to look and no second copy to drift out of sync.
27
+ * 3. Any ancestor scope can reset a token to get a variant, without this
28
+ * file changing — see book.css for the chapter-scoped override, and the
29
+ * `.{{PREFIX}}callout-warning` variant below for the in-package one.
30
+ *
31
+ * That third step is the reason for the whole pattern: a book gets a new
32
+ * look by resetting a property, not by restating the component's rules at a
33
+ * higher specificity.
34
+ * ======================================================================== */
35
+
36
+ @layer components {
37
+ /* =========================================================================
38
+ * CALLOUT
39
+ *
40
+ * Recipe @section .{{PREFIX}}callout
41
+ * Emits div.section.{{PREFIX}}callout
42
+ * Variants .{{PREFIX}}callout-warning
43
+ * Public tokens --{{PREFIX}}callout-accent
44
+ * --{{PREFIX}}callout-bg
45
+ * --{{PREFIX}}callout-pad
46
+ * --{{PREFIX}}callout-rule
47
+ * Breaks avoids splitting across pages
48
+ *
49
+ * Authored as:
50
+ *
51
+ * @section .{{PREFIX}}callout
52
+ * ### Before you start
53
+ * Everything in here stays together on one page.
54
+ * @end-section
55
+ * ====================================================================== */
56
+
57
+ /* 1 — public tokens, defaulting in terms of the brand */
58
+ :root {
59
+ --{{PREFIX}}callout-accent: var(--{{PREFIX}}accent);
60
+ --{{PREFIX}}callout-bg: color-mix(in srgb, var(--{{PREFIX}}accent) 7%, transparent);
61
+ --{{PREFIX}}callout-pad: var(--{{PREFIX}}space-3);
62
+ --{{PREFIX}}callout-rule: 3px;
63
+ }
64
+
65
+ /* 2 — the component consumes them bare */
66
+ .{{PREFIX}}callout {
67
+ background: var(--{{PREFIX}}callout-bg);
68
+ border-inline-start: var(--{{PREFIX}}callout-rule) solid var(--{{PREFIX}}callout-accent);
69
+ padding: var(--{{PREFIX}}callout-pad);
70
+ margin-block: var(--{{PREFIX}}space-3);
71
+ break-inside: avoid;
72
+ }
73
+
74
+ /* The component's own paragraph: flush, not indented like body prose. */
75
+ .{{PREFIX}}callout p { text-indent: 0; }
76
+ .{{PREFIX}}callout > :first-child { margin-block-start: 0; }
77
+ .{{PREFIX}}callout > :last-child { margin-block-end: 0; }
78
+
79
+ .{{PREFIX}}callout h3 {
80
+ color: var(--{{PREFIX}}callout-accent);
81
+ margin-block-start: 0;
82
+ }
83
+
84
+ /* 3 — a variant is a token reset. Three lines, not thirty. */
85
+ .{{PREFIX}}callout-warning {
86
+ --{{PREFIX}}callout-accent: var(--{{PREFIX}}accent-warm);
87
+ }
88
+
89
+ /* =========================================================================
90
+ * Add your next component here, in the same shape: a comment block naming
91
+ * its recipe, emitted DOM, variants, public tokens and break behaviour;
92
+ * then tokens, rules, variants. Record it in components.yaml too.
93
+ * ====================================================================== */
94
+ }
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  getSystemDiagnostics,
3
3
  log
4
- } from "./cli-pvk2s9d7.js";
4
+ } from "./cli-vxf151ea.js";
5
5
  import {
6
6
  UsageError,
7
7
  rejectExtraPositionals,
8
8
  rejectUnknownFlags
9
- } from "./cli-h8ejbtyr.js";
9
+ } from "./cli-vcv5ewqj.js";
10
10
  import"./cli-c41yr7he.js";
11
11
  import"./cli-46ycxe6r.js";
12
12
  import"./cli-37x76zdn.js";
@@ -4,7 +4,7 @@ import {
4
4
  build,
5
5
  connectChromium,
6
6
  getBrowser
7
- } from "./cli-s8q42x3r.js";
7
+ } from "./cli-4vtgt2ng.js";
8
8
  import"./cli-c41yr7he.js";
9
9
  import {
10
10
  BuildError
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  build
3
- } from "./index-a0xpm188.js";
3
+ } from "./index-rpt4vtby.js";
4
4
  import {
5
5
  BuildError,
6
6
  RENDER_TIMEOUT_MS,
7
7
  assertMilestone,
8
8
  connectChromium,
9
9
  getBrowser
10
- } from "./index-837htyjy.js";
10
+ } from "./index-9pbaznww.js";
11
11
  import"./index-37x76zdn.js";
12
12
 
13
13
  // src/lib/engine.ts
@@ -0,0 +1,9 @@
1
+ <p>A paragraph that defines <span class="{{PREFIX}}term">a key term</span> inline, then keeps going.</p>
2
+ <p>Terms survive <strong>bold</strong>, <em>italic</em> and <code>code</code> in the same sentence: the
3
+ <span class="{{PREFIX}}term">second term</span> here is the one to look for.</p>
4
+ <ul>
5
+ <li>A list item mentioning <span class="{{PREFIX}}term">a listed term</span>.</li>
6
+ <li>An item with no term at all.</li>
7
+ </ul>
8
+ <p>These are NOT terms and must render literally: <code>[[in code]]</code>, a lone
9
+ <a href="https://example.com">bracket link</a>, and an unclosed [[one.</p>
@@ -0,0 +1,10 @@
1
+ A paragraph that defines [[a key term]] inline, then keeps going.
2
+
3
+ Terms survive **bold**, *italic* and `code` in the same sentence: the
4
+ [[second term]] here is the one to look for.
5
+
6
+ - A list item mentioning [[a listed term]].
7
+ - An item with no term at all.
8
+
9
+ These are NOT terms and must render literally: `[[in code]]`, a lone
10
+ [bracket link](https://example.com), and an unclosed [[one.
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "{{NAME}}",
3
+ "author": "{{AUTHOR}}",
4
+ "description": "{{DESCRIPTION}}",
5
+ "markdown": "plugin.js",
6
+ "styles": ["styles/plugin.css"],
7
+ "snippets": "snippets"
8
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "{{NAME}}",
3
+ "author": "{{AUTHOR}}",
4
+ "description": "{{DESCRIPTION}}",
5
+ "preview": null,
6
+ "styles": [
7
+ "styles/tokens.css",
8
+ "styles/base.css",
9
+ "styles/components.css",
10
+ "styles/page-templates.css",
11
+ "styles/page-rules.css",
12
+ "styles/book.css"
13
+ ],
14
+ "tokensFile": "styles/tokens.css",
15
+ "components": "components.yaml",
16
+ "snippets": "snippets"
17
+ }
@@ -593,7 +593,7 @@ import { fileURLToPath } from "node:url";
593
593
  var favicon_default = "./favicon-wkbm9cjn.ico";
594
594
 
595
595
  // src/assets/manifest.schema.json
596
- var manifest_schema_default = "./manifest.schema-kwnrwv8b.json";
596
+ var manifest_schema_default = "./manifest.schema-1q35yxs9.json";
597
597
 
598
598
  // src/assets/preview/scripts/preview-interface.js
599
599
  var preview_interface_default = "./preview-interface-9rwz21yw.js";
@@ -631,6 +631,63 @@ var manifest_default3 = "./manifest-n1gh3qw5.yaml";
631
631
  // src/assets/templates/technical/chapter-01.md
632
632
  var chapter_01_default3 = "./chapter-01-6fn9pvd0.md";
633
633
 
634
+ // src/assets/extension-templates/plugin/gutterpress.json
635
+ var gutterpress_default = "./gutterpress-m98e2w2d.json";
636
+
637
+ // src/assets/extension-templates/plugin/package.json
638
+ var package_default = "./package-rm9d2tht.json";
639
+
640
+ // src/assets/extension-templates/plugin/README.md
641
+ var README_default = "./README-mdq34cmb.md";
642
+
643
+ // src/assets/extension-templates/plugin/plugin.js.tpl
644
+ var plugin_js_default = "./plugin.js-aszz0zgh.tpl";
645
+
646
+ // src/assets/extension-templates/plugin/styles/plugin.css
647
+ var plugin_default = "./plugin-m2w7g47v.css";
648
+
649
+ // src/assets/extension-templates/plugin/snippets/term-box.md
650
+ var term_box_default = "./term-box-4y0w7y32.md";
651
+
652
+ // src/assets/extension-templates/plugin/test/fixture.md
653
+ var fixture_default = "./fixture-2qnyqgb5.md";
654
+
655
+ // src/assets/extension-templates/plugin/test/expected.html
656
+ var expected_default = "./expected-ycmacem8.html";
657
+
658
+ // src/assets/extension-templates/plugin/test/plugin.test.js.tpl
659
+ var plugin_test_js_default = "./plugin.test.js-mv0ghv5n.tpl";
660
+
661
+ // src/assets/extension-templates/theme/gutterpress.json
662
+ var gutterpress_default2 = "./gutterpress-x2ycdsb8.json";
663
+
664
+ // src/assets/extension-templates/theme/README.md
665
+ var README_default2 = "./README-aaqapam1.md";
666
+
667
+ // src/assets/extension-templates/theme/components.yaml
668
+ var components_default = "./components-0mmswvvm.yaml";
669
+
670
+ // src/assets/extension-templates/theme/snippets/callout.md
671
+ var callout_default = "./callout-hv56m16h.md";
672
+
673
+ // src/assets/extension-templates/theme/styles/tokens.css
674
+ var tokens_default = "./tokens-e4xk3x4v.css";
675
+
676
+ // src/assets/extension-templates/theme/styles/base.css
677
+ var base_default = "./base-ypqh9n7f.css";
678
+
679
+ // src/assets/extension-templates/theme/styles/components.css
680
+ var components_default2 = "./components-aam0fe2z.css";
681
+
682
+ // src/assets/extension-templates/theme/styles/page-templates.css
683
+ var page_templates_default = "./page-templates-7md4ev7d.css";
684
+
685
+ // src/assets/extension-templates/theme/styles/page-rules.css
686
+ var page_rules_default = "./page-rules-nsj3aw42.css";
687
+
688
+ // src/assets/extension-templates/theme/styles/book.css
689
+ var book_default = "./book-ted3tzrp.css";
690
+
634
691
  // src/assets/themes/clean-book/theme.css
635
692
  var theme_default = "./theme-j2bagrfx.css";
636
693
 
@@ -668,6 +725,25 @@ var EMBEDDED_ASSETS = {
668
725
  "templates/zine/chapter-01.md": abs(filePath(chapter_01_default2)),
669
726
  "templates/technical/manifest.yaml": abs(filePath(manifest_default3)),
670
727
  "templates/technical/chapter-01.md": abs(filePath(chapter_01_default3)),
728
+ "extension-templates/plugin/gutterpress.json": abs(filePath(gutterpress_default)),
729
+ "extension-templates/plugin/package.json": abs(filePath(package_default)),
730
+ "extension-templates/plugin/README.md": abs(filePath(README_default)),
731
+ "extension-templates/plugin/plugin.js.tpl": abs(filePath(plugin_js_default)),
732
+ "extension-templates/plugin/styles/plugin.css": abs(filePath(plugin_default)),
733
+ "extension-templates/plugin/snippets/term-box.md": abs(filePath(term_box_default)),
734
+ "extension-templates/plugin/test/fixture.md": abs(filePath(fixture_default)),
735
+ "extension-templates/plugin/test/expected.html": abs(filePath(expected_default)),
736
+ "extension-templates/plugin/test/plugin.test.js.tpl": abs(filePath(plugin_test_js_default)),
737
+ "extension-templates/theme/gutterpress.json": abs(filePath(gutterpress_default2)),
738
+ "extension-templates/theme/README.md": abs(filePath(README_default2)),
739
+ "extension-templates/theme/components.yaml": abs(filePath(components_default)),
740
+ "extension-templates/theme/snippets/callout.md": abs(filePath(callout_default)),
741
+ "extension-templates/theme/styles/tokens.css": abs(filePath(tokens_default)),
742
+ "extension-templates/theme/styles/base.css": abs(filePath(base_default)),
743
+ "extension-templates/theme/styles/components.css": abs(filePath(components_default2)),
744
+ "extension-templates/theme/styles/page-templates.css": abs(filePath(page_templates_default)),
745
+ "extension-templates/theme/styles/page-rules.css": abs(filePath(page_rules_default)),
746
+ "extension-templates/theme/styles/book.css": abs(filePath(book_default)),
671
747
  "themes/clean-book/theme.css": abs(filePath(theme_default)),
672
748
  "themes/clean-book/theme.json": abs(filePath(theme_default2)),
673
749
  "themes/zine/theme.css": abs(filePath(theme_default3)),
@@ -759,4 +835,4 @@ function marginBoxAlign(name) {
759
835
  return /right/.test(name) ? "end" : "start";
760
836
  }
761
837
 
762
- export { EXIT_CODES, BuildError, run, spawnCapture, execCapture, isToolAvailable, findTool, INSTALL_HINTS, fullInstallHint, resolveChromiumExecutable, requireChromiumExecutable, RENDER_TIMEOUT_MS, prewarmBrowser, getBrowser, closeBrowser, getAssetPath, MARGIN_BOX_IGNORED_PROPERTIES, isIgnoredMarginBoxProperty, marginBoxRectPt, marginBoxAlign, REQUIRED_MILESTONE, assertMilestone, readyProbeExpr, DEFAULT_PRINT_OPTS, launchChromium, connectChromium };
838
+ export { EXIT_CODES, BuildError, run, spawnCapture, execCapture, isToolAvailable, findTool, INSTALL_HINTS, fullInstallHint, resolveChromiumExecutable, requireChromiumExecutable, RENDER_TIMEOUT_MS, prewarmBrowser, getBrowser, closeBrowser, getAssetsDir, getAssetPath, MARGIN_BOX_IGNORED_PROPERTIES, isIgnoredMarginBoxProperty, marginBoxRectPt, marginBoxAlign, REQUIRED_MILESTONE, assertMilestone, readyProbeExpr, DEFAULT_PRINT_OPTS, launchChromium, connectChromium };