@ai-matrx/print 0.12.21 → 0.12.23
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/CHANGELOG.md +12 -0
- package/dist/flashcards-lazy.cjs +213 -0
- package/dist/flashcards-lazy.cjs.map +1 -0
- package/dist/flashcards-lazy.d.cts +14 -0
- package/dist/flashcards-lazy.d.ts +14 -0
- package/dist/flashcards-lazy.js +180 -0
- package/dist/flashcards-lazy.js.map +1 -0
- package/dist/flashcards-meta.cjs +192 -0
- package/dist/flashcards-meta.cjs.map +1 -0
- package/dist/flashcards-meta.d.cts +12 -0
- package/dist/flashcards-meta.d.ts +12 -0
- package/dist/flashcards-meta.js +171 -0
- package/dist/flashcards-meta.js.map +1 -0
- package/dist/flashcards.cjs +169 -164
- package/dist/flashcards.cjs.map +1 -1
- package/dist/flashcards.js +169 -164
- package/dist/flashcards.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.12.23
|
|
4
|
+
|
|
5
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
6
|
+
`git diff npm/print/v0.12.22..npm/print/v0.12.23 -- apps/shared/print`).
|
|
7
|
+
No source changes intended and no consumer action required.
|
|
8
|
+
|
|
9
|
+
## 0.12.22
|
|
10
|
+
|
|
11
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
12
|
+
`git diff npm/print/v0.12.21..npm/print/v0.12.22 -- apps/shared/print`).
|
|
13
|
+
No source changes intended and no consumer action required.
|
|
14
|
+
|
|
3
15
|
## 0.12.21
|
|
4
16
|
|
|
5
17
|
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/flashcards-lazy.ts
|
|
31
|
+
var flashcards_lazy_exports = {};
|
|
32
|
+
__export(flashcards_lazy_exports, {
|
|
33
|
+
flashcardsPrinterLazy: () => flashcardsPrinterLazy,
|
|
34
|
+
flashcardsPrinterMeta: () => flashcardsPrinterMeta
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(flashcards_lazy_exports);
|
|
37
|
+
|
|
38
|
+
// src/flashcards-meta.ts
|
|
39
|
+
var flashcardsPrinterMeta = {
|
|
40
|
+
label: "Print flashcards",
|
|
41
|
+
variants: [
|
|
42
|
+
{
|
|
43
|
+
id: "portrait-6up-duplex",
|
|
44
|
+
label: "Portrait 6-up \u2014 duplex (recommended)",
|
|
45
|
+
description: "6 cards per page (2 columns \xD7 3 rows), portrait. Split down the middle and into thirds. Fronts and backs on alternating pages \u2014 backs are mirrored so they align perfectly when duplex-printed (flip on long edge) and cut into 6"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: "portrait-6up-stacked",
|
|
49
|
+
label: "Portrait 6-up \u2014 all fronts then all backs",
|
|
50
|
+
description: "6 cards per page (2 columns \xD7 3 rows), portrait. All front pages first, then all back pages \u2014 cut all sheets together for a matching deck"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "landscape-duplex",
|
|
54
|
+
label: "Landscape cut sheet \u2014 duplex (double-sided)",
|
|
55
|
+
description: "4 cards per page, landscape. Fronts and backs on alternating pages \u2014 backs are mirrored so they align perfectly when you flip and cut"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: "landscape-stacked",
|
|
59
|
+
label: "Landscape cut sheet \u2014 all fronts then all backs",
|
|
60
|
+
description: "4 cards per page, landscape. All front pages first, then all back pages \u2014 cut all sheets together for a matching deck"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "avery-5388",
|
|
64
|
+
label: 'Avery 5388 \u2014 3\xD75" index cards (3 per page)',
|
|
65
|
+
description: "Prints to Avery 5388 card stock. 3 cards per page, portrait. Front page then back page per set of 3 \u2014 load the sheet twice to print both sides"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: "cut-cards",
|
|
69
|
+
label: "Cut-out cards (portrait)",
|
|
70
|
+
description: "4 per page with cut lines \u2014 front and back shown together per card"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: "both-sides",
|
|
74
|
+
label: "Both sides per card",
|
|
75
|
+
description: "Front and back shown together \u2014 best for review or sharing"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: "study-sheet",
|
|
79
|
+
label: "Study sheet (table)",
|
|
80
|
+
description: "Compact two-column table \u2014 all cards on one or two pages"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: "front-only",
|
|
84
|
+
label: "Questions only (self-test)",
|
|
85
|
+
description: "Front side with blank space to write answers \u2014 print and quiz yourself"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: "back-only",
|
|
89
|
+
label: "Answers only",
|
|
90
|
+
description: "Definitions / answers without the questions"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
settings: [
|
|
94
|
+
{
|
|
95
|
+
type: "range",
|
|
96
|
+
id: "cardRange",
|
|
97
|
+
label: "Cards to print",
|
|
98
|
+
description: "Leave blank to print the whole deck",
|
|
99
|
+
fromId: "fromCard",
|
|
100
|
+
toId: "toCard",
|
|
101
|
+
defaultFrom: 0,
|
|
102
|
+
defaultTo: 0,
|
|
103
|
+
min: 1,
|
|
104
|
+
fromPlaceholder: "1",
|
|
105
|
+
toPlaceholder: "end"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
type: "boolean",
|
|
109
|
+
id: "showSideLabel",
|
|
110
|
+
label: "Show side label",
|
|
111
|
+
description: 'Prints "Front" or "Back" in the corner of each card',
|
|
112
|
+
defaultValue: false,
|
|
113
|
+
appliesTo: [
|
|
114
|
+
"landscape-duplex",
|
|
115
|
+
"landscape-stacked",
|
|
116
|
+
"portrait-6up-duplex",
|
|
117
|
+
"portrait-6up-stacked",
|
|
118
|
+
"avery-5388"
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: "boolean",
|
|
123
|
+
id: "showCardNumber",
|
|
124
|
+
label: "Show card number",
|
|
125
|
+
description: "Prints #1, #2 \u2026 in the corner of each card",
|
|
126
|
+
defaultValue: false,
|
|
127
|
+
appliesTo: [
|
|
128
|
+
"landscape-duplex",
|
|
129
|
+
"landscape-stacked",
|
|
130
|
+
"portrait-6up-duplex",
|
|
131
|
+
"portrait-6up-stacked",
|
|
132
|
+
"avery-5388"
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: "boolean",
|
|
137
|
+
id: "showTickMarks",
|
|
138
|
+
label: "Show cut tick marks",
|
|
139
|
+
description: "Small marks at each cut intersection \u2014 where to make each cut",
|
|
140
|
+
defaultValue: false,
|
|
141
|
+
appliesTo: [
|
|
142
|
+
"landscape-duplex",
|
|
143
|
+
"landscape-stacked",
|
|
144
|
+
"portrait-6up-duplex",
|
|
145
|
+
"portrait-6up-stacked"
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: "boolean",
|
|
150
|
+
id: "showCutLines",
|
|
151
|
+
label: "Show full cut lines",
|
|
152
|
+
description: "Dashed lines all the way across the page \u2014 helps if you don't have a ruler",
|
|
153
|
+
defaultValue: false,
|
|
154
|
+
appliesTo: [
|
|
155
|
+
"landscape-duplex",
|
|
156
|
+
"landscape-stacked",
|
|
157
|
+
"portrait-6up-duplex",
|
|
158
|
+
"portrait-6up-stacked"
|
|
159
|
+
]
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: "boolean",
|
|
163
|
+
id: "lightBackText",
|
|
164
|
+
label: "Light back text (reduce show-through)",
|
|
165
|
+
description: "Prints the back side in dark gray instead of black \u2014 ink is lighter and less visible through the paper",
|
|
166
|
+
defaultValue: false,
|
|
167
|
+
appliesTo: [
|
|
168
|
+
"landscape-duplex",
|
|
169
|
+
"landscape-stacked",
|
|
170
|
+
"portrait-6up-duplex",
|
|
171
|
+
"portrait-6up-stacked",
|
|
172
|
+
"avery-5388"
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
type: "boolean",
|
|
177
|
+
id: "mirrorBack",
|
|
178
|
+
label: "Mirror back text (best show-through prevention)",
|
|
179
|
+
description: "Flips back text horizontally \u2014 any ink that bleeds through reads backwards and is unrecognizable from the front",
|
|
180
|
+
defaultValue: false,
|
|
181
|
+
appliesTo: [
|
|
182
|
+
"landscape-duplex",
|
|
183
|
+
"landscape-stacked",
|
|
184
|
+
"portrait-6up-duplex",
|
|
185
|
+
"portrait-6up-stacked",
|
|
186
|
+
"avery-5388"
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
type: "boolean",
|
|
191
|
+
id: "showImages",
|
|
192
|
+
label: "Print face images",
|
|
193
|
+
description: "Includes each card's front/back image when it has one. The fixed-geometry formats (landscape, 6-up, Avery) are text-only by design",
|
|
194
|
+
defaultValue: true,
|
|
195
|
+
appliesTo: [
|
|
196
|
+
"cut-cards",
|
|
197
|
+
"both-sides",
|
|
198
|
+
"study-sheet",
|
|
199
|
+
"front-only",
|
|
200
|
+
"back-only"
|
|
201
|
+
]
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
// src/flashcards-lazy.ts
|
|
207
|
+
var renderer = async () => (await import("@ai-matrx/print/flashcards")).flashcardsPrinter;
|
|
208
|
+
var flashcardsPrinterLazy = {
|
|
209
|
+
...flashcardsPrinterMeta,
|
|
210
|
+
print: async (data, variantId, settings) => (await renderer()).print(data, variantId, settings),
|
|
211
|
+
toPrintHtml: async (data, context) => (await renderer()).toPrintHtml(data, context)
|
|
212
|
+
};
|
|
213
|
+
//# sourceMappingURL=flashcards-lazy.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/flashcards-lazy.ts","../src/flashcards-meta.ts"],"sourcesContent":["/**\n * The flashcards printer for a host that registers printers at module load (an app shell's\n * block-printer registry): its label, variants and settings are static, and the renderer —\n * the deck layouts and the KaTeX math they embed (~680 KB) — loads on the first print.\n * `print` and `toPrintHtml` are already allowed to return promises by the BlockPrinter contract.\n * The self-referencing specifier is external in tsup, so the edge survives into dist.\n */\nimport type { BlockPrinter } from \"./core\";\nimport { flashcardsPrinterMeta } from \"./flashcards-meta\";\n\nexport { flashcardsPrinterMeta } from \"./flashcards-meta\";\n\nconst renderer = async (): Promise<BlockPrinter> => (await import(\"@ai-matrx/print/flashcards\")).flashcardsPrinter;\n\nexport const flashcardsPrinterLazy: BlockPrinter = {\n ...flashcardsPrinterMeta,\n print: async (data, variantId, settings) => (await renderer()).print(data, variantId, settings),\n toPrintHtml: async (data, context) => (await renderer()).toPrintHtml!(data, context),\n};\n","/**\n * The flashcards printer's DESCRIPTION: label, variants, settings. Pure data with no imports,\n * so a host registry can offer \"Print flashcards\" without loading the renderer (and the KaTeX\n * inside it). `flashcardsPrinter` (./flashcards) spreads this; `flashcardsPrinterLazy`\n * (./flashcards-lazy) pairs it with a print that loads the renderer on first use.\n */\nimport type { BlockPrinter } from \"./core\";\n\nexport const flashcardsPrinterMeta: Pick<BlockPrinter, \"label\" | \"variants\" | \"settings\"> = {\n label: \"Print flashcards\",\n variants: [\n {\n id: \"portrait-6up-duplex\",\n label: \"Portrait 6-up — duplex (recommended)\",\n description:\n \"6 cards per page (2 columns × 3 rows), portrait. Split down the middle and into thirds. Fronts and backs on alternating pages — backs are mirrored so they align perfectly when duplex-printed (flip on long edge) and cut into 6\",\n },\n {\n id: \"portrait-6up-stacked\",\n label: \"Portrait 6-up — all fronts then all backs\",\n description:\n \"6 cards per page (2 columns × 3 rows), portrait. All front pages first, then all back pages — cut all sheets together for a matching deck\",\n },\n {\n id: \"landscape-duplex\",\n label: \"Landscape cut sheet — duplex (double-sided)\",\n description:\n \"4 cards per page, landscape. Fronts and backs on alternating pages — backs are mirrored so they align perfectly when you flip and cut\",\n },\n {\n id: \"landscape-stacked\",\n label: \"Landscape cut sheet — all fronts then all backs\",\n description:\n \"4 cards per page, landscape. All front pages first, then all back pages — cut all sheets together for a matching deck\",\n },\n {\n id: \"avery-5388\",\n label: 'Avery 5388 — 3×5\" index cards (3 per page)',\n description:\n \"Prints to Avery 5388 card stock. 3 cards per page, portrait. Front page then back page per set of 3 — load the sheet twice to print both sides\",\n },\n {\n id: \"cut-cards\",\n label: \"Cut-out cards (portrait)\",\n description:\n \"4 per page with cut lines — front and back shown together per card\",\n },\n {\n id: \"both-sides\",\n label: \"Both sides per card\",\n description: \"Front and back shown together — best for review or sharing\",\n },\n {\n id: \"study-sheet\",\n label: \"Study sheet (table)\",\n description: \"Compact two-column table — all cards on one or two pages\",\n },\n {\n id: \"front-only\",\n label: \"Questions only (self-test)\",\n description:\n \"Front side with blank space to write answers — print and quiz yourself\",\n },\n {\n id: \"back-only\",\n label: \"Answers only\",\n description: \"Definitions / answers without the questions\",\n },\n ],\n\n settings: [\n {\n type: \"range\" as const,\n id: \"cardRange\",\n label: \"Cards to print\",\n description: \"Leave blank to print the whole deck\",\n fromId: \"fromCard\",\n toId: \"toCard\",\n defaultFrom: 0,\n defaultTo: 0,\n min: 1,\n fromPlaceholder: \"1\",\n toPlaceholder: \"end\",\n },\n {\n type: \"boolean\" as const,\n id: \"showSideLabel\",\n label: \"Show side label\",\n description: 'Prints \"Front\" or \"Back\" in the corner of each card',\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n \"avery-5388\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"showCardNumber\",\n label: \"Show card number\",\n description: \"Prints #1, #2 … in the corner of each card\",\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n \"avery-5388\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"showTickMarks\",\n label: \"Show cut tick marks\",\n description:\n \"Small marks at each cut intersection — where to make each cut\",\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"showCutLines\",\n label: \"Show full cut lines\",\n description:\n \"Dashed lines all the way across the page — helps if you don't have a ruler\",\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"lightBackText\",\n label: \"Light back text (reduce show-through)\",\n description:\n \"Prints the back side in dark gray instead of black — ink is lighter and less visible through the paper\",\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n \"avery-5388\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"mirrorBack\",\n label: \"Mirror back text (best show-through prevention)\",\n description:\n \"Flips back text horizontally — any ink that bleeds through reads backwards and is unrecognizable from the front\",\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n \"avery-5388\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"showImages\",\n label: \"Print face images\",\n description:\n \"Includes each card's front/back image when it has one. The fixed-geometry formats (landscape, 6-up, Avery) are text-only by design\",\n defaultValue: true,\n appliesTo: [\n \"cut-cards\",\n \"both-sides\",\n \"study-sheet\",\n \"front-only\",\n \"back-only\",\n ],\n },\n ],\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BlockPrinter } from './core.cjs';
|
|
2
|
+
export { flashcardsPrinterMeta } from './flashcards-meta.cjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The flashcards printer for a host that registers printers at module load (an app shell's
|
|
6
|
+
* block-printer registry): its label, variants and settings are static, and the renderer —
|
|
7
|
+
* the deck layouts and the KaTeX math they embed (~680 KB) — loads on the first print.
|
|
8
|
+
* `print` and `toPrintHtml` are already allowed to return promises by the BlockPrinter contract.
|
|
9
|
+
* The self-referencing specifier is external in tsup, so the edge survives into dist.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
declare const flashcardsPrinterLazy: BlockPrinter;
|
|
13
|
+
|
|
14
|
+
export { flashcardsPrinterLazy };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BlockPrinter } from './core.js';
|
|
2
|
+
export { flashcardsPrinterMeta } from './flashcards-meta.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The flashcards printer for a host that registers printers at module load (an app shell's
|
|
6
|
+
* block-printer registry): its label, variants and settings are static, and the renderer —
|
|
7
|
+
* the deck layouts and the KaTeX math they embed (~680 KB) — loads on the first print.
|
|
8
|
+
* `print` and `toPrintHtml` are already allowed to return promises by the BlockPrinter contract.
|
|
9
|
+
* The self-referencing specifier is external in tsup, so the edge survives into dist.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
declare const flashcardsPrinterLazy: BlockPrinter;
|
|
13
|
+
|
|
14
|
+
export { flashcardsPrinterLazy };
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
// src/flashcards-meta.ts
|
|
2
|
+
var flashcardsPrinterMeta = {
|
|
3
|
+
label: "Print flashcards",
|
|
4
|
+
variants: [
|
|
5
|
+
{
|
|
6
|
+
id: "portrait-6up-duplex",
|
|
7
|
+
label: "Portrait 6-up \u2014 duplex (recommended)",
|
|
8
|
+
description: "6 cards per page (2 columns \xD7 3 rows), portrait. Split down the middle and into thirds. Fronts and backs on alternating pages \u2014 backs are mirrored so they align perfectly when duplex-printed (flip on long edge) and cut into 6"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
id: "portrait-6up-stacked",
|
|
12
|
+
label: "Portrait 6-up \u2014 all fronts then all backs",
|
|
13
|
+
description: "6 cards per page (2 columns \xD7 3 rows), portrait. All front pages first, then all back pages \u2014 cut all sheets together for a matching deck"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "landscape-duplex",
|
|
17
|
+
label: "Landscape cut sheet \u2014 duplex (double-sided)",
|
|
18
|
+
description: "4 cards per page, landscape. Fronts and backs on alternating pages \u2014 backs are mirrored so they align perfectly when you flip and cut"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: "landscape-stacked",
|
|
22
|
+
label: "Landscape cut sheet \u2014 all fronts then all backs",
|
|
23
|
+
description: "4 cards per page, landscape. All front pages first, then all back pages \u2014 cut all sheets together for a matching deck"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: "avery-5388",
|
|
27
|
+
label: 'Avery 5388 \u2014 3\xD75" index cards (3 per page)',
|
|
28
|
+
description: "Prints to Avery 5388 card stock. 3 cards per page, portrait. Front page then back page per set of 3 \u2014 load the sheet twice to print both sides"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "cut-cards",
|
|
32
|
+
label: "Cut-out cards (portrait)",
|
|
33
|
+
description: "4 per page with cut lines \u2014 front and back shown together per card"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: "both-sides",
|
|
37
|
+
label: "Both sides per card",
|
|
38
|
+
description: "Front and back shown together \u2014 best for review or sharing"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "study-sheet",
|
|
42
|
+
label: "Study sheet (table)",
|
|
43
|
+
description: "Compact two-column table \u2014 all cards on one or two pages"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "front-only",
|
|
47
|
+
label: "Questions only (self-test)",
|
|
48
|
+
description: "Front side with blank space to write answers \u2014 print and quiz yourself"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: "back-only",
|
|
52
|
+
label: "Answers only",
|
|
53
|
+
description: "Definitions / answers without the questions"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
settings: [
|
|
57
|
+
{
|
|
58
|
+
type: "range",
|
|
59
|
+
id: "cardRange",
|
|
60
|
+
label: "Cards to print",
|
|
61
|
+
description: "Leave blank to print the whole deck",
|
|
62
|
+
fromId: "fromCard",
|
|
63
|
+
toId: "toCard",
|
|
64
|
+
defaultFrom: 0,
|
|
65
|
+
defaultTo: 0,
|
|
66
|
+
min: 1,
|
|
67
|
+
fromPlaceholder: "1",
|
|
68
|
+
toPlaceholder: "end"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: "boolean",
|
|
72
|
+
id: "showSideLabel",
|
|
73
|
+
label: "Show side label",
|
|
74
|
+
description: 'Prints "Front" or "Back" in the corner of each card',
|
|
75
|
+
defaultValue: false,
|
|
76
|
+
appliesTo: [
|
|
77
|
+
"landscape-duplex",
|
|
78
|
+
"landscape-stacked",
|
|
79
|
+
"portrait-6up-duplex",
|
|
80
|
+
"portrait-6up-stacked",
|
|
81
|
+
"avery-5388"
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: "boolean",
|
|
86
|
+
id: "showCardNumber",
|
|
87
|
+
label: "Show card number",
|
|
88
|
+
description: "Prints #1, #2 \u2026 in the corner of each card",
|
|
89
|
+
defaultValue: false,
|
|
90
|
+
appliesTo: [
|
|
91
|
+
"landscape-duplex",
|
|
92
|
+
"landscape-stacked",
|
|
93
|
+
"portrait-6up-duplex",
|
|
94
|
+
"portrait-6up-stacked",
|
|
95
|
+
"avery-5388"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
type: "boolean",
|
|
100
|
+
id: "showTickMarks",
|
|
101
|
+
label: "Show cut tick marks",
|
|
102
|
+
description: "Small marks at each cut intersection \u2014 where to make each cut",
|
|
103
|
+
defaultValue: false,
|
|
104
|
+
appliesTo: [
|
|
105
|
+
"landscape-duplex",
|
|
106
|
+
"landscape-stacked",
|
|
107
|
+
"portrait-6up-duplex",
|
|
108
|
+
"portrait-6up-stacked"
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: "boolean",
|
|
113
|
+
id: "showCutLines",
|
|
114
|
+
label: "Show full cut lines",
|
|
115
|
+
description: "Dashed lines all the way across the page \u2014 helps if you don't have a ruler",
|
|
116
|
+
defaultValue: false,
|
|
117
|
+
appliesTo: [
|
|
118
|
+
"landscape-duplex",
|
|
119
|
+
"landscape-stacked",
|
|
120
|
+
"portrait-6up-duplex",
|
|
121
|
+
"portrait-6up-stacked"
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: "boolean",
|
|
126
|
+
id: "lightBackText",
|
|
127
|
+
label: "Light back text (reduce show-through)",
|
|
128
|
+
description: "Prints the back side in dark gray instead of black \u2014 ink is lighter and less visible through the paper",
|
|
129
|
+
defaultValue: false,
|
|
130
|
+
appliesTo: [
|
|
131
|
+
"landscape-duplex",
|
|
132
|
+
"landscape-stacked",
|
|
133
|
+
"portrait-6up-duplex",
|
|
134
|
+
"portrait-6up-stacked",
|
|
135
|
+
"avery-5388"
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: "boolean",
|
|
140
|
+
id: "mirrorBack",
|
|
141
|
+
label: "Mirror back text (best show-through prevention)",
|
|
142
|
+
description: "Flips back text horizontally \u2014 any ink that bleeds through reads backwards and is unrecognizable from the front",
|
|
143
|
+
defaultValue: false,
|
|
144
|
+
appliesTo: [
|
|
145
|
+
"landscape-duplex",
|
|
146
|
+
"landscape-stacked",
|
|
147
|
+
"portrait-6up-duplex",
|
|
148
|
+
"portrait-6up-stacked",
|
|
149
|
+
"avery-5388"
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: "boolean",
|
|
154
|
+
id: "showImages",
|
|
155
|
+
label: "Print face images",
|
|
156
|
+
description: "Includes each card's front/back image when it has one. The fixed-geometry formats (landscape, 6-up, Avery) are text-only by design",
|
|
157
|
+
defaultValue: true,
|
|
158
|
+
appliesTo: [
|
|
159
|
+
"cut-cards",
|
|
160
|
+
"both-sides",
|
|
161
|
+
"study-sheet",
|
|
162
|
+
"front-only",
|
|
163
|
+
"back-only"
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
// src/flashcards-lazy.ts
|
|
170
|
+
var renderer = async () => (await import("@ai-matrx/print/flashcards")).flashcardsPrinter;
|
|
171
|
+
var flashcardsPrinterLazy = {
|
|
172
|
+
...flashcardsPrinterMeta,
|
|
173
|
+
print: async (data, variantId, settings) => (await renderer()).print(data, variantId, settings),
|
|
174
|
+
toPrintHtml: async (data, context) => (await renderer()).toPrintHtml(data, context)
|
|
175
|
+
};
|
|
176
|
+
export {
|
|
177
|
+
flashcardsPrinterLazy,
|
|
178
|
+
flashcardsPrinterMeta
|
|
179
|
+
};
|
|
180
|
+
//# sourceMappingURL=flashcards-lazy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/flashcards-meta.ts","../src/flashcards-lazy.ts"],"sourcesContent":["/**\n * The flashcards printer's DESCRIPTION: label, variants, settings. Pure data with no imports,\n * so a host registry can offer \"Print flashcards\" without loading the renderer (and the KaTeX\n * inside it). `flashcardsPrinter` (./flashcards) spreads this; `flashcardsPrinterLazy`\n * (./flashcards-lazy) pairs it with a print that loads the renderer on first use.\n */\nimport type { BlockPrinter } from \"./core\";\n\nexport const flashcardsPrinterMeta: Pick<BlockPrinter, \"label\" | \"variants\" | \"settings\"> = {\n label: \"Print flashcards\",\n variants: [\n {\n id: \"portrait-6up-duplex\",\n label: \"Portrait 6-up — duplex (recommended)\",\n description:\n \"6 cards per page (2 columns × 3 rows), portrait. Split down the middle and into thirds. Fronts and backs on alternating pages — backs are mirrored so they align perfectly when duplex-printed (flip on long edge) and cut into 6\",\n },\n {\n id: \"portrait-6up-stacked\",\n label: \"Portrait 6-up — all fronts then all backs\",\n description:\n \"6 cards per page (2 columns × 3 rows), portrait. All front pages first, then all back pages — cut all sheets together for a matching deck\",\n },\n {\n id: \"landscape-duplex\",\n label: \"Landscape cut sheet — duplex (double-sided)\",\n description:\n \"4 cards per page, landscape. Fronts and backs on alternating pages — backs are mirrored so they align perfectly when you flip and cut\",\n },\n {\n id: \"landscape-stacked\",\n label: \"Landscape cut sheet — all fronts then all backs\",\n description:\n \"4 cards per page, landscape. All front pages first, then all back pages — cut all sheets together for a matching deck\",\n },\n {\n id: \"avery-5388\",\n label: 'Avery 5388 — 3×5\" index cards (3 per page)',\n description:\n \"Prints to Avery 5388 card stock. 3 cards per page, portrait. Front page then back page per set of 3 — load the sheet twice to print both sides\",\n },\n {\n id: \"cut-cards\",\n label: \"Cut-out cards (portrait)\",\n description:\n \"4 per page with cut lines — front and back shown together per card\",\n },\n {\n id: \"both-sides\",\n label: \"Both sides per card\",\n description: \"Front and back shown together — best for review or sharing\",\n },\n {\n id: \"study-sheet\",\n label: \"Study sheet (table)\",\n description: \"Compact two-column table — all cards on one or two pages\",\n },\n {\n id: \"front-only\",\n label: \"Questions only (self-test)\",\n description:\n \"Front side with blank space to write answers — print and quiz yourself\",\n },\n {\n id: \"back-only\",\n label: \"Answers only\",\n description: \"Definitions / answers without the questions\",\n },\n ],\n\n settings: [\n {\n type: \"range\" as const,\n id: \"cardRange\",\n label: \"Cards to print\",\n description: \"Leave blank to print the whole deck\",\n fromId: \"fromCard\",\n toId: \"toCard\",\n defaultFrom: 0,\n defaultTo: 0,\n min: 1,\n fromPlaceholder: \"1\",\n toPlaceholder: \"end\",\n },\n {\n type: \"boolean\" as const,\n id: \"showSideLabel\",\n label: \"Show side label\",\n description: 'Prints \"Front\" or \"Back\" in the corner of each card',\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n \"avery-5388\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"showCardNumber\",\n label: \"Show card number\",\n description: \"Prints #1, #2 … in the corner of each card\",\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n \"avery-5388\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"showTickMarks\",\n label: \"Show cut tick marks\",\n description:\n \"Small marks at each cut intersection — where to make each cut\",\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"showCutLines\",\n label: \"Show full cut lines\",\n description:\n \"Dashed lines all the way across the page — helps if you don't have a ruler\",\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"lightBackText\",\n label: \"Light back text (reduce show-through)\",\n description:\n \"Prints the back side in dark gray instead of black — ink is lighter and less visible through the paper\",\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n \"avery-5388\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"mirrorBack\",\n label: \"Mirror back text (best show-through prevention)\",\n description:\n \"Flips back text horizontally — any ink that bleeds through reads backwards and is unrecognizable from the front\",\n defaultValue: false,\n appliesTo: [\n \"landscape-duplex\",\n \"landscape-stacked\",\n \"portrait-6up-duplex\",\n \"portrait-6up-stacked\",\n \"avery-5388\",\n ],\n },\n {\n type: \"boolean\" as const,\n id: \"showImages\",\n label: \"Print face images\",\n description:\n \"Includes each card's front/back image when it has one. The fixed-geometry formats (landscape, 6-up, Avery) are text-only by design\",\n defaultValue: true,\n appliesTo: [\n \"cut-cards\",\n \"both-sides\",\n \"study-sheet\",\n \"front-only\",\n \"back-only\",\n ],\n },\n ],\n};\n","/**\n * The flashcards printer for a host that registers printers at module load (an app shell's\n * block-printer registry): its label, variants and settings are static, and the renderer —\n * the deck layouts and the KaTeX math they embed (~680 KB) — loads on the first print.\n * `print` and `toPrintHtml` are already allowed to return promises by the BlockPrinter contract.\n * The self-referencing specifier is external in tsup, so the edge survives into dist.\n */\nimport type { BlockPrinter } from \"./core\";\nimport { flashcardsPrinterMeta } from \"./flashcards-meta\";\n\nexport { flashcardsPrinterMeta } from \"./flashcards-meta\";\n\nconst renderer = async (): Promise<BlockPrinter> => (await import(\"@ai-matrx/print/flashcards\")).flashcardsPrinter;\n\nexport const flashcardsPrinterLazy: BlockPrinter = {\n ...flashcardsPrinterMeta,\n print: async (data, variantId, settings) => (await renderer()).print(data, variantId, settings),\n toPrintHtml: async (data, context) => (await renderer()).toPrintHtml!(data, context),\n};\n"],"mappings":"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","names":[]}
|