@fayz-ai/core 0.21.0 → 0.22.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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/pending-command.d.ts +15 -0
- package/dist/lib/pending-command.d.ts.map +1 -0
- package/dist/printing/escpos.d.ts +8 -0
- package/dist/printing/escpos.d.ts.map +1 -1
- package/dist/printing/index.d.ts +1 -1
- package/dist/printing/index.d.ts.map +1 -1
- package/dist/printing/index.js +49 -3
- package/dist/printing/index.js.map +1 -1
- package/dist/printing/print-job.d.ts +23 -0
- package/dist/printing/print-job.d.ts.map +1 -1
- package/dist/types/plugins.d.ts +11 -0
- package/dist/types/plugins.d.ts.map +1 -1
- package/dist/types/setup-guide.d.ts +23 -0
- package/dist/types/setup-guide.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** An acknowledged SQL rejection is different from losing the response. */
|
|
2
|
+
export declare function isSqlRejection(error: unknown): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* In-memory command attempt for a mounted editor. A retry sends an immutable
|
|
5
|
+
* snapshot with the same key; it cannot turn into a different payment/entry.
|
|
6
|
+
* This is not durable recovery after reload and must never be advertised as it.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createPendingCommand<Input extends {
|
|
9
|
+
idempotencyKey?: string;
|
|
10
|
+
}>(key: () => string, context?: (input: Input) => string): {
|
|
11
|
+
readonly pending: boolean;
|
|
12
|
+
readonly running: boolean;
|
|
13
|
+
run<Result>(input: Input, write: (snapshot: Input) => Promise<Result>): Promise<Result>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=pending-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-command.d.ts","sourceRoot":"","sources":["../../src/lib/pending-command.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGtD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,SAAS;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5E,GAAG,EAAE,MAAM,MAAM,EACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM;;;QAQtB,MAAM,SAAS,KAAK,SAAS,CAAC,QAAQ,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;EAuBhG"}
|
|
@@ -28,6 +28,14 @@ export interface EscPosOptions {
|
|
|
28
28
|
qr?: QrEncoder;
|
|
29
29
|
/** Dots per QR module. 7 is comfortably scannable; 5 halves the payload. */
|
|
30
30
|
qrModuleScale?: number;
|
|
31
|
+
/**
|
|
32
|
+
* This document emends onto one already on the paper, so it must not reset.
|
|
33
|
+
*
|
|
34
|
+
* Set it on every document of a strip except the first. The reset is not
|
|
35
|
+
* merely redundant there — `ESC @` immediately after a partial cut completes
|
|
36
|
+
* that cut, which is exactly what a strip is trying to avoid.
|
|
37
|
+
*/
|
|
38
|
+
continued?: boolean;
|
|
31
39
|
}
|
|
32
40
|
export declare function renderEscPos(job: PrintJob, options?: EscPosOptions): Uint8Array;
|
|
33
41
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escpos.d.ts","sourceRoot":"","sources":["../../src/printing/escpos.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAyD,UAAU,EAAE,QAAQ,EAAa,MAAM,aAAa,CAAA;AAwDzH,8EAA8E;AAC9E,QAAA,MAAM,SAAS;;;;;;;;;CAGL,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"escpos.d.ts","sourceRoot":"","sources":["../../src/printing/escpos.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAyD,UAAU,EAAE,QAAQ,EAAa,MAAM,aAAa,CAAA;AAwDzH,8EAA8E;AAC9E,QAAA,MAAM,SAAS;;;;;;;;;CAGL,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,SAAS,CAAA;AAwK7C;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,EAAE,EAAE,CAAA;AAExD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,SAAS,CAAA;IACd,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,GAAE,aAAkB,GAAG,UAAU,CAkBnF"}
|
package/dist/printing/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export { renderEscPos } from './escpos';
|
|
|
2
2
|
export type { EscPosOptions, Codepage, QrEncoder } from './escpos';
|
|
3
3
|
export { memoryPrinter } from './printer';
|
|
4
4
|
export type { PrinterPort, PrintResult } from './printer';
|
|
5
|
-
export type { PrintJob, PrintLine, PaperWidth, KitchenTicket, CustomerTicket, BillJob, FiscalReceipt, } from './print-job';
|
|
5
|
+
export type { PrintJob, PrintLine, PaperWidth, KitchenTicket, CustomerTicket, TicketPromo, BillJob, FiscalReceipt, } from './print-job';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/printing/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACzD,YAAY,EACV,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/printing/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACzD,YAAY,EACV,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GACpG,MAAM,aAAa,CAAA"}
|
package/dist/printing/index.js
CHANGED
|
@@ -219,8 +219,15 @@ var Ribbon = class {
|
|
|
219
219
|
this.bytes.push(...bytes);
|
|
220
220
|
return this;
|
|
221
221
|
}
|
|
222
|
-
/**
|
|
222
|
+
/**
|
|
223
|
+
* Initialize, then select the code page. ESC @ resets it, so order matters.
|
|
224
|
+
*
|
|
225
|
+
* Skipped entirely for a continued document. `ESC @` arriving just after the
|
|
226
|
+
* previous document's partial cut makes the printer finish that cut, and the
|
|
227
|
+
* ticket meant to stay attached falls on the floor.
|
|
228
|
+
*/
|
|
223
229
|
init() {
|
|
230
|
+
if (this.opts.continued) return this;
|
|
224
231
|
return this.raw(ESC, 64).raw(ESC, 116, CODEPAGES[this.opts.codepage].index);
|
|
225
232
|
}
|
|
226
233
|
align(at) {
|
|
@@ -288,6 +295,10 @@ var Ribbon = class {
|
|
|
288
295
|
* is the only version that is portable across the hardware a restaurant
|
|
289
296
|
* actually buys.
|
|
290
297
|
*/
|
|
298
|
+
/** Há codificador? Um QR prometido e não desenhado é pior que nenhum. */
|
|
299
|
+
canQr() {
|
|
300
|
+
return Boolean(this.opts.qr);
|
|
301
|
+
}
|
|
291
302
|
qr(payload) {
|
|
292
303
|
if (!this.opts.qr) throw new Error("renderEscPos: a QR encoder is required to print this job.");
|
|
293
304
|
const matrix = this.opts.qr(payload);
|
|
@@ -318,9 +329,25 @@ var Ribbon = class {
|
|
|
318
329
|
drawer() {
|
|
319
330
|
return this.raw(ESC, 112, 0, 50, 250);
|
|
320
331
|
}
|
|
321
|
-
/**
|
|
332
|
+
/**
|
|
333
|
+
* Partial cut, with the paper held by a tab.
|
|
334
|
+
*
|
|
335
|
+
* Three details, all of them measured on a Masung POS80 rather than chosen:
|
|
336
|
+
*
|
|
337
|
+
* GS V 1 Plain partial cut. `GS V 66 n` — "feed then partial" — is the
|
|
338
|
+
* tidier-looking command and this printer severs the paper
|
|
339
|
+
* completely when it is followed by more content.
|
|
340
|
+
* bare LFs `ESC d n` before the cut had the same effect. Line feeds do
|
|
341
|
+
* not.
|
|
342
|
+
* three Enough to clear the cutter, which sits a few millimetres above
|
|
343
|
+
* the head; fewer and the cut lands in the last line.
|
|
344
|
+
*
|
|
345
|
+
* A document that emends onto another must also skip `init()` — see
|
|
346
|
+
* `EscPosOptions.continued`. `ESC @` landing right after a partial cut
|
|
347
|
+
* finishes it.
|
|
348
|
+
*/
|
|
322
349
|
cut() {
|
|
323
|
-
return this.
|
|
350
|
+
return this.raw(10, 10, 10).raw(GS, 86, 1);
|
|
324
351
|
}
|
|
325
352
|
done() {
|
|
326
353
|
return Uint8Array.from(this.bytes);
|
|
@@ -355,6 +382,7 @@ function renderEscPos(job, options = {}) {
|
|
|
355
382
|
dots: options.dots ?? width * 12,
|
|
356
383
|
codepage: options.codepage ?? "cp860",
|
|
357
384
|
qrModuleScale: options.qrModuleScale ?? 7,
|
|
385
|
+
continued: options.continued ?? false,
|
|
358
386
|
...options.qr ? { qr: options.qr } : {}
|
|
359
387
|
};
|
|
360
388
|
const r = new Ribbon(resolved).init();
|
|
@@ -390,6 +418,24 @@ function customer(r, job) {
|
|
|
390
418
|
r.feed(1);
|
|
391
419
|
for (const part of wrap(job.footer, r.width)) r.line(part);
|
|
392
420
|
}
|
|
421
|
+
promo(r, job);
|
|
422
|
+
}
|
|
423
|
+
function promo(r, job) {
|
|
424
|
+
const promo2 = job.promo;
|
|
425
|
+
if (!promo2 || !promo2.headline && !promo2.offer && !promo2.site && !promo2.qr) return;
|
|
426
|
+
r.feed(1).rule();
|
|
427
|
+
if (promo2.headline) {
|
|
428
|
+
r.bold(true);
|
|
429
|
+
for (const part of wrap(promo2.headline, r.width)) r.line(part);
|
|
430
|
+
r.bold(false);
|
|
431
|
+
}
|
|
432
|
+
if (promo2.offer) {
|
|
433
|
+
r.feed(1).bold(true).size(2, 2);
|
|
434
|
+
for (const part of wrap(promo2.offer, Math.floor(r.width / 2))) r.line(part);
|
|
435
|
+
r.size(1, 1).bold(false).feed(1);
|
|
436
|
+
}
|
|
437
|
+
if (promo2.site) r.line(promo2.site);
|
|
438
|
+
if (promo2.qr && r.canQr()) r.feed(1).qr(promo2.qr);
|
|
393
439
|
}
|
|
394
440
|
function bill(r, job) {
|
|
395
441
|
r.align("center").bold(true).line(job.brandName).bold(false).line(job.reference).rule().align("left");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/printing/escpos.ts","../../src/printing/printer.ts"],"names":[],"mappings":"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AA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,QAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,G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","file":"index.js","sourcesContent":["// ---------------------------------------------------------------------------\n// ESC/POS — a PrintJob rendered to the bytes a thermal printer understands.\n//\n// Pure: job in, Uint8Array out. No transport, no device handle, no I/O. That is\n// what lets the same renderer serve a network socket, a USB endpoint, an\n// Electron shell and a unit test, and it is why the bytes can be asserted.\n//\n// The Brazilian detail that breaks every naive implementation: accents. A\n// thermal printer boots on CP437, which has no ã, no ç and no õ, so \"Ração\n// Frango\" prints as \"Ra??o Frango\" — or worse, as line-drawing characters. The\n// fix is one command (ESC t) and a translation table, both below. UTF-8 bytes\n// sent raw are always wrong.\n// ---------------------------------------------------------------------------\n\nimport type { BillJob, CustomerTicket, FiscalReceipt, KitchenTicket, PaperWidth, PrintJob, PrintLine } from './print-job'\n\n/**\n * Money on paper, pinned to pt-BR/BRL rather than the app's active locale.\n *\n * A receipt is read by whoever is standing at the counter, not by whoever set\n * the operator's language. An English-locale POS printing `R$ 73.50` to a\n * Brazilian customer is a support call, and on a DANFE NFC-e it is wrong\n * against the XML the note was authorized with.\n */\nconst formatCents = (cents: number) =>\n new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(cents / 100)\n\nconst ESC = 0x1b\nconst GS = 0x1d\n\n/**\n * Code page 860 (Portuguese). Proved on the panel's Masung POS80: of the twelve\n * `ESC t` indices swept, only n=3 rendered `ração ÇÃO açaí` correctly.\n *\n * Not interchangeable with CP850 — `ã` is 0x84 here and 0xC6 there, so the\n * wrong pair prints a different letter rather than failing loudly.\n */\nconst CP860: Record<string, number> = {\n 'Ç': 0x80, 'ü': 0x81, 'é': 0x82, 'â': 0x83, 'ã': 0x84, 'à': 0x85, 'Á': 0x86, 'ç': 0x87,\n 'ê': 0x88, 'Ê': 0x89, 'è': 0x8a, 'Í': 0x8b, 'Ô': 0x8c, 'ì': 0x8d, 'Ã': 0x8e, 'Â': 0x8f,\n 'É': 0x90, 'À': 0x91, 'È': 0x92, 'ô': 0x93, 'õ': 0x94, 'ò': 0x95, 'Ú': 0x96, 'ù': 0x97,\n 'Ì': 0x98, 'Õ': 0x99, 'Ü': 0x9a, '¢': 0x9b, '£': 0x9c, 'Ù': 0x9d, '₧': 0x9e, 'Ó': 0x9f,\n 'á': 0xa0, 'í': 0xa1, 'ó': 0xa2, 'ú': 0xa3, 'ñ': 0xa4, 'Ñ': 0xa5, 'ª': 0xa6, 'º': 0xa7,\n '¿': 0xa8, 'Ò': 0xa9, '¬': 0xaa, '½': 0xab, '¼': 0xac, '¡': 0xad, '«': 0xae, '»': 0xaf,\n 'α': 0xe0, 'ß': 0xe1, 'Γ': 0xe2, 'π': 0xe3, 'Σ': 0xe4, 'σ': 0xe5, 'µ': 0xe6, 'τ': 0xe7,\n 'Φ': 0xe8, 'Θ': 0xe9, 'Ω': 0xea, 'δ': 0xeb, '∞': 0xec, 'φ': 0xed, 'ε': 0xee, '∩': 0xef,\n '≡': 0xf0, '±': 0xf1, '≥': 0xf2, '≤': 0xf3, '⌠': 0xf4, '⌡': 0xf5, '÷': 0xf6, '≈': 0xf7,\n '°': 0xf8, '∙': 0xf9, '·': 0xfa, '√': 0xfb, 'ⁿ': 0xfc, '²': 0xfd, '■': 0xfe, ' ': 0xff,\n}\n\n/** Code page 850 (Multilingual). Kept for printers that answer to `ESC t 2`. */\nconst CP850: Record<string, number> = {\n 'Ç': 0x80, 'ü': 0x81, 'é': 0x82, 'â': 0x83, 'ä': 0x84, 'à': 0x85, 'å': 0x86, 'ç': 0x87,\n 'ê': 0x88, 'ë': 0x89, 'è': 0x8a, 'ï': 0x8b, 'î': 0x8c, 'ì': 0x8d, 'Ä': 0x8e, 'Å': 0x8f,\n 'É': 0x90, 'æ': 0x91, 'Æ': 0x92, 'ô': 0x93, 'ö': 0x94, 'ò': 0x95, 'û': 0x96, 'ù': 0x97,\n 'ÿ': 0x98, 'Ö': 0x99, 'Ü': 0x9a, 'ø': 0x9b, '£': 0x9c, 'Ø': 0x9d, '×': 0x9e, 'ƒ': 0x9f,\n 'á': 0xa0, 'í': 0xa1, 'ó': 0xa2, 'ú': 0xa3, 'ñ': 0xa4, 'Ñ': 0xa5, 'ª': 0xa6, 'º': 0xa7,\n '¿': 0xa8, '®': 0xa9, '¬': 0xaa, '½': 0xab, '¼': 0xac, '¡': 0xad, '«': 0xae, '»': 0xaf,\n 'Á': 0xb5, 'Â': 0xb6, 'À': 0xb7, '©': 0xb8, '¢': 0xbd, '¥': 0xbe, 'ã': 0xc6, 'Ã': 0xc7,\n '¤': 0xcf, 'ð': 0xd0, 'Ð': 0xd1, 'Ê': 0xd2, 'Ë': 0xd3, 'È': 0xd4, 'ı': 0xd5, 'Í': 0xd6,\n 'Î': 0xd7, 'Ï': 0xd8, '¦': 0xdd, 'Ì': 0xde, 'Ó': 0xe0, 'ß': 0xe1, 'Ô': 0xe2, 'Ò': 0xe3,\n 'õ': 0xe4, 'Õ': 0xe5, 'µ': 0xe6, 'þ': 0xe7, 'Þ': 0xe8, 'Ú': 0xe9, 'Û': 0xea, 'Ù': 0xeb,\n 'ý': 0xec, 'Ý': 0xed, '¯': 0xee, '´': 0xef, '': 0xf0, '±': 0xf1, '‗': 0xf2, '¾': 0xf3,\n '¶': 0xf4, '§': 0xf5, '÷': 0xf6, '¸': 0xf7, '°': 0xf8, '¨': 0xf9, '·': 0xfa, '¹': 0xfb,\n '³': 0xfc, '²': 0xfd, '■': 0xfe, ' ': 0xff,\n}\n\n/** Last resort for a character CP850 cannot represent, so a name still reads. */\nconst FOLD: Record<string, string> = { '–': '-', '—': '-', '‘': \"'\", '’': \"'\", '“': '\"', '”': '\"', '…': '...' }\n\n/** `ESC t` index per code page. The pair (index, table) must always match. */\nconst CODEPAGES = {\n cp860: { index: 0x03, table: CP860 },\n cp850: { index: 0x02, table: CP850 },\n} as const\n\nexport type Codepage = keyof typeof CODEPAGES\n\nfunction encode(text: string, table: Record<string, number>): number[] {\n const out: number[] = []\n for (const char of text) {\n const mapped = table[char]\n if (mapped !== undefined) { out.push(mapped); continue }\n const folded = FOLD[char]\n if (folded !== undefined) { for (const c of folded) out.push(c.charCodeAt(0)); continue }\n const code = char.charCodeAt(0)\n // Anything still outside 7-bit ASCII would print as garbage; '?' at least\n // tells the reader a character was lost instead of drawing a box.\n out.push(code >= 0x20 && code <= 0x7e ? code : 0x3f)\n }\n return out\n}\n\ntype Align = 'left' | 'center' | 'right'\n\ninterface Resolved {\n width: PaperWidth\n dots: number\n codepage: Codepage\n qr?: QrEncoder\n qrModuleScale: number\n}\n\n/** A byte buffer with the ESC/POS vocabulary spelled out as methods. */\nclass Ribbon {\n private readonly bytes: number[] = []\n readonly width: PaperWidth\n constructor(private readonly opts: Resolved) { this.width = opts.width }\n\n raw(...bytes: number[]): this { this.bytes.push(...bytes); return this }\n /** Initialize, then select the code page. ESC @ resets it, so order matters. */\n init(): this {\n return this.raw(ESC, 0x40).raw(ESC, 0x74, CODEPAGES[this.opts.codepage].index)\n }\n align(at: Align): this { return this.raw(ESC, 0x61, at === 'center' ? 1 : at === 'right' ? 2 : 0) }\n bold(on: boolean): this { return this.raw(ESC, 0x45, on ? 1 : 0) }\n /** GS ! packs width and height into one byte as two 4-bit multipliers. */\n size(w: 1 | 2 | 3 | 4, h: 1 | 2 | 3 | 4): this { return this.raw(GS, 0x21, ((w - 1) << 4) | (h - 1)) }\n text(value: string): this { this.bytes.push(...encode(value, CODEPAGES[this.opts.codepage].table)); return this }\n line(value = ''): this { return this.text(value).raw(0x0a) }\n feed(lines: number): this { return this.raw(ESC, 0x64, lines) }\n rule(char = '-'): this { return this.line(char.repeat(this.width)) }\n\n /**\n * Name left, value right, on one line. Wraps the name rather than letting a\n * long product push the price off the paper — a receipt whose total is not\n * on it is not a receipt.\n */\n columns(left: string, right: string, indent = 0): this {\n const room = this.width - right.length - indent - 1\n const pad = ' '.repeat(indent)\n if (room <= 0) return this.line(left).line(right.padStart(this.width))\n const [head, ...rest] = wrap(left, room)\n this.line(`${pad}${(head ?? '').padEnd(room)} ${right}`)\n for (const extra of rest) this.line(`${pad}${extra}`)\n return this\n }\n\n /**\n * A 1-bit bitmap as `GS v 0`. Rows are packed MSB-first and every row is\n * `dots / 8` bytes wide, padded — the printer reads a fixed stride and a\n * short row shears the whole image diagonally.\n */\n raster(rows: Uint8Array, heightDots: number): this {\n const perRow = this.opts.dots >> 3\n return this\n .raw(GS, 0x76, 0x30, 0x00, perRow & 0xff, (perRow >> 8) & 0xff,\n heightDots & 0xff, (heightDots >> 8) & 0xff)\n .raw(...rows)\n }\n\n /**\n * QR as a raster bitmap, NOT as `GS ( k`.\n *\n * The panel's Masung answers `GS k` (1D barcode) and `GS v 0` (raster) but\n * ignores every `GS ( k` variant — model 1 and 2, three module sizes, three\n * error levels all printed nothing and reported no error. Cheap ESC/POS\n * clones commonly skip the QR command set, so drawing the modules ourselves\n * is the only version that is portable across the hardware a restaurant\n * actually buys.\n */\n qr(payload: string): this {\n if (!this.opts.qr) throw new Error('renderEscPos: a QR encoder is required to print this job.')\n const matrix = this.opts.qr(payload)\n const modules = matrix.length\n if (!modules) throw new Error('renderEscPos: the QR encoder returned an empty matrix.')\n const scale = this.opts.qrModuleScale\n const quiet = 2\n const side = (modules + quiet * 2) * scale\n const perRow = this.opts.dots >> 3\n // Byte-align the left edge so the image starts on a whole byte; a bit\n // offset would cost a shift of every row for no visible gain.\n const left = Math.max(0, ((this.opts.dots - side) >> 1) & ~7)\n const rows = new Uint8Array(perRow * side)\n for (let y = 0; y < side; y++) {\n const my = Math.floor(y / scale) - quiet\n if (my < 0 || my >= modules) continue\n const row = matrix[my]\n if (!row) continue\n for (let x = 0; x < side; x++) {\n const mx = Math.floor(x / scale) - quiet\n if (mx < 0 || mx >= modules || !row[mx]) continue\n const px = left + x\n if (px >= this.opts.dots) continue\n rows[y * perRow + (px >> 3)]! |= 0x80 >> (px & 7)\n }\n }\n return this.raster(rows, side)\n }\n\n /** Pin 2, 50ms on / 250ms off — the timing every BR drawer ships wired for. */\n drawer(): this { return this.raw(ESC, 0x70, 0x00, 0x32, 0xfa) }\n /** Feed clear of the head before cutting, or the cut lands mid-text. */\n cut(): this { return this.feed(4).raw(GS, 0x56, 0x42, 0x00) }\n\n done(): Uint8Array { return Uint8Array.from(this.bytes) }\n}\n\nfunction wrap(text: string, width: number): string[] {\n const out: string[] = []\n let current = ''\n for (const word of text.split(/\\s+/).filter(Boolean)) {\n if (!current) { current = word }\n else if (current.length + 1 + word.length <= width) { current += ` ${word}` }\n else { out.push(current); current = word }\n while (current.length > width) { out.push(current.slice(0, width)); current = current.slice(width) }\n }\n if (current) out.push(current)\n return out.length ? out : ['']\n}\n\nconst time = (at: Date) =>\n new Intl.DateTimeFormat('pt-BR', { dateStyle: 'short', timeStyle: 'short', timeZone: 'America/Sao_Paulo' }).format(at)\n\n/** 44 digits are unreadable in one run; SEFAZ groups them in fours. */\nconst groupKey = (key: string) => (key.match(/.{1,4}/g) ?? []).join(' ')\n\n/**\n * Encodes a QR payload into a module matrix (`true` = dark).\n *\n * Injected rather than bundled: core carries no QR library, and every surface\n * that prints already has one — the browser can hand over a canvas-derived\n * matrix, a worker can use whatever the app installed.\n */\nexport type QrEncoder = (payload: string) => boolean[][]\n\nexport interface EscPosOptions {\n width?: PaperWidth\n /** Defaults to CP860 — the code page the Brazilian panels answer to. */\n codepage?: Codepage\n /** Printable dots. Defaults to 12 per character column (48 chars = 576). */\n dots?: number\n qr?: QrEncoder\n /** Dots per QR module. 7 is comfortably scannable; 5 halves the payload. */\n qrModuleScale?: number\n}\n\nexport function renderEscPos(job: PrintJob, options: EscPosOptions = {}): Uint8Array {\n const width = options.width ?? 48\n const resolved: Resolved = {\n width,\n dots: options.dots ?? width * 12,\n codepage: options.codepage ?? 'cp860',\n qrModuleScale: options.qrModuleScale ?? 7,\n ...(options.qr ? { qr: options.qr } : {}),\n }\n const r = new Ribbon(resolved).init()\n if (job.kind === 'kitchen_ticket') kitchen(r, job)\n else if (job.kind === 'customer_ticket') customer(r, job)\n else if (job.kind === 'bill') bill(r, job)\n else fiscal(r, job)\n if (job.openDrawer) r.drawer()\n if (job.cut !== false) r.cut()\n return r.done()\n}\n\nfunction kitchen(r: Ribbon, job: KitchenTicket): void {\n r.align('center').size(3, 3).bold(true).line(job.ticket).bold(false).size(1, 1)\n r.line(job.serviceMode.toUpperCase()).line(time(job.placedAt)).rule().align('left')\n for (const line of job.lines) {\n // Quantity at double height: a cook misreading 1 for 7 is a remade plate.\n r.size(1, 2).bold(true).text(`${line.quantity}x `).bold(false)\n for (const [i, part] of wrap(line.name, r.width - 4).entries()) r.line(i === 0 ? part : ` ${part}`)\n r.size(1, 1)\n if (line.note) for (const part of wrap(line.note, r.width - 4)) r.line(` ${part}`)\n }\n if (job.notes) { r.rule().bold(true).line('OBS:').bold(false); for (const p of wrap(job.notes, r.width)) r.line(p) }\n}\n\nfunction customer(r: Ribbon, job: CustomerTicket): void {\n r.align('center').bold(true).line(job.brandName).bold(false).feed(1)\n r.size(4, 4).bold(true).line(job.ticket).bold(false).size(1, 1)\n r.line(job.serviceMode.toUpperCase()).line(job.reference).feed(1)\n r.size(1, 2).line(formatCents(job.totalCents)).size(1, 1)\n if (!job.paid) r.feed(1).bold(true).line('PENDENTE').line('PASSE NO CAIXA').bold(false)\n if (job.footer) { r.feed(1); for (const part of wrap(job.footer, r.width)) r.line(part) }\n}\n\nfunction bill(r: Ribbon, job: BillJob): void {\n r.align('center').bold(true).line(job.brandName).bold(false).line(job.reference).rule().align('left')\n for (const line of job.lines) priced(r, line)\n r.rule()\n r.columns('Subtotal', formatCents(job.subtotalCents))\n if (job.serviceChargeCents) r.columns('Serviço', formatCents(job.serviceChargeCents))\n r.bold(true).size(1, 2).columns('TOTAL', formatCents(job.totalCents)).size(1, 1).bold(false)\n r.align('center').feed(1)\n for (const part of wrap(job.footer ?? 'Este documento não é documento fiscal', r.width)) r.line(part)\n}\n\nfunction priced(r: Ribbon, line: PrintLine): void {\n const total = (line.unitPriceCents ?? 0) * line.quantity\n r.columns(`${line.quantity}x ${line.name}`, formatCents(total))\n if (line.note) for (const part of wrap(line.note, r.width - 4)) r.line(` ${part}`)\n}\n\nfunction fiscal(r: Ribbon, job: FiscalReceipt): void {\n r.align('center').bold(true).line(job.emitter.name).bold(false)\n r.line(`CNPJ: ${job.emitter.cnpj}`)\n for (const part of wrap(job.emitter.address, r.width)) r.line(part)\n r.rule()\n for (const part of wrap('DANFE NFC-e - Documento Auxiliar da Nota Fiscal de Consumidor Eletrônica', r.width)) r.line(part)\n // The banner is a legal requirement of the test environment, and it goes\n // ABOVE the items where nobody can miss it — not in a footer.\n if (job.homologation) {\n r.rule('=').bold(true)\n for (const part of wrap('EMITIDA EM AMBIENTE DE HOMOLOGAÇÃO - SEM VALOR FISCAL', r.width)) r.line(part)\n r.bold(false).rule('=')\n }\n r.align('left').rule()\n r.line('COD DESCRICAO QTD UN VL UN VL TOT')\n r.rule()\n for (const line of job.lines) {\n r.line(`${line.code} ${line.name}`.slice(0, r.width))\n r.columns(` ${line.quantity} ${line.unit} x ${formatCents(line.unitPriceCents ?? 0)}`, formatCents(line.totalCents))\n }\n r.rule()\n r.columns('Qtd. total de itens', String(job.lines.length))\n r.bold(true).size(1, 2).columns('VALOR TOTAL R$', formatCents(job.totalCents)).size(1, 1).bold(false)\n for (const payment of job.payments) r.columns(payment.label, formatCents(payment.amountCents))\n if (job.changeCents) r.columns('Troco', formatCents(job.changeCents))\n r.rule().align('center')\n for (const part of wrap('Consulte pela Chave de Acesso em', r.width)) r.line(part)\n r.line(job.lookupUrl)\n r.feed(1).line(groupKey(job.accessKey)).feed(1)\n r.line(job.consumer?.document ? `CONSUMIDOR: ${job.consumer.document}` : 'CONSUMIDOR NAO IDENTIFICADO')\n if (job.consumer?.name) r.line(job.consumer.name)\n r.rule()\n r.line(`NFC-e n. ${job.number} Serie ${job.series}`)\n r.line(time(job.issuedAt))\n for (const part of wrap(`Protocolo de Autorizacao: ${job.protocol}`, r.width)) r.line(part)\n r.feed(1).qr(job.qrCode)\n}\n","// ---------------------------------------------------------------------------\n// PrinterPort — the seam between \"what to print\" and \"how it reaches paper\".\n//\n// Every adapter behind this is a different answer to the transport question,\n// and the app must not know which one is installed:\n//\n// memoryPrinter records jobs, prints nothing. Tests and the diagnostics\n// panel, where \"what would have printed\" is the answer.\n// ePOS Epson TM over its built-in HTTP service. No install, no\n// daemon, works from the browser build.\n// raw 9100 any network ESC/POS printer, through a local bridge,\n// because a browser cannot open a TCP socket.\n// usb Electron shell (FAY-1483) or WebUSB.\n//\n// The renderer is shared by all of them: only the last hop differs.\n// ---------------------------------------------------------------------------\n\nimport { renderEscPos, type EscPosOptions } from './escpos'\nimport type { PrintJob } from './print-job'\n\nexport interface PrintResult {\n ok: boolean\n /** Written for an operator mid-service, not for a log file. */\n message?: string\n}\n\nexport interface PrinterPort {\n readonly id: string\n print(job: PrintJob): Promise<PrintResult>\n /** Prove the paper path without a sale. This is what support asks for. */\n selfTest?(): Promise<PrintResult>\n}\n\n/**\n * Records instead of printing.\n *\n * Not a placeholder to be deleted: a totem with no printer attached still has\n * to complete a sale, and a diagnostics screen still has to show what the last\n * job looked like. Failing the sale because the paper ran out is worse than\n * printing nothing.\n */\nexport function memoryPrinter(options: EscPosOptions = {}): PrinterPort & { readonly jobs: readonly PrintJob[] } {\n const jobs: PrintJob[] = []\n return {\n id: 'memory',\n get jobs() { return jobs },\n async print(job) {\n jobs.push(job)\n // Rendered even though it is discarded: a job that cannot be rendered\n // must fail here, in development, and not on the night it first prints.\n renderEscPos(job, options)\n return { ok: true }\n },\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/printing/escpos.ts","../../src/printing/printer.ts"],"names":["promo"],"mappings":"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AA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,QAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAClF,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,GAAA;AAAA,EAAM,MAAA,EAAK,G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","file":"index.js","sourcesContent":["// ---------------------------------------------------------------------------\n// ESC/POS — a PrintJob rendered to the bytes a thermal printer understands.\n//\n// Pure: job in, Uint8Array out. No transport, no device handle, no I/O. That is\n// what lets the same renderer serve a network socket, a USB endpoint, an\n// Electron shell and a unit test, and it is why the bytes can be asserted.\n//\n// The Brazilian detail that breaks every naive implementation: accents. A\n// thermal printer boots on CP437, which has no ã, no ç and no õ, so \"Ração\n// Frango\" prints as \"Ra??o Frango\" — or worse, as line-drawing characters. The\n// fix is one command (ESC t) and a translation table, both below. UTF-8 bytes\n// sent raw are always wrong.\n// ---------------------------------------------------------------------------\n\nimport type { BillJob, CustomerTicket, FiscalReceipt, KitchenTicket, PaperWidth, PrintJob, PrintLine } from './print-job'\n\n/**\n * Money on paper, pinned to pt-BR/BRL rather than the app's active locale.\n *\n * A receipt is read by whoever is standing at the counter, not by whoever set\n * the operator's language. An English-locale POS printing `R$ 73.50` to a\n * Brazilian customer is a support call, and on a DANFE NFC-e it is wrong\n * against the XML the note was authorized with.\n */\nconst formatCents = (cents: number) =>\n new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(cents / 100)\n\nconst ESC = 0x1b\nconst GS = 0x1d\n\n/**\n * Code page 860 (Portuguese). Proved on the panel's Masung POS80: of the twelve\n * `ESC t` indices swept, only n=3 rendered `ração ÇÃO açaí` correctly.\n *\n * Not interchangeable with CP850 — `ã` is 0x84 here and 0xC6 there, so the\n * wrong pair prints a different letter rather than failing loudly.\n */\nconst CP860: Record<string, number> = {\n 'Ç': 0x80, 'ü': 0x81, 'é': 0x82, 'â': 0x83, 'ã': 0x84, 'à': 0x85, 'Á': 0x86, 'ç': 0x87,\n 'ê': 0x88, 'Ê': 0x89, 'è': 0x8a, 'Í': 0x8b, 'Ô': 0x8c, 'ì': 0x8d, 'Ã': 0x8e, 'Â': 0x8f,\n 'É': 0x90, 'À': 0x91, 'È': 0x92, 'ô': 0x93, 'õ': 0x94, 'ò': 0x95, 'Ú': 0x96, 'ù': 0x97,\n 'Ì': 0x98, 'Õ': 0x99, 'Ü': 0x9a, '¢': 0x9b, '£': 0x9c, 'Ù': 0x9d, '₧': 0x9e, 'Ó': 0x9f,\n 'á': 0xa0, 'í': 0xa1, 'ó': 0xa2, 'ú': 0xa3, 'ñ': 0xa4, 'Ñ': 0xa5, 'ª': 0xa6, 'º': 0xa7,\n '¿': 0xa8, 'Ò': 0xa9, '¬': 0xaa, '½': 0xab, '¼': 0xac, '¡': 0xad, '«': 0xae, '»': 0xaf,\n 'α': 0xe0, 'ß': 0xe1, 'Γ': 0xe2, 'π': 0xe3, 'Σ': 0xe4, 'σ': 0xe5, 'µ': 0xe6, 'τ': 0xe7,\n 'Φ': 0xe8, 'Θ': 0xe9, 'Ω': 0xea, 'δ': 0xeb, '∞': 0xec, 'φ': 0xed, 'ε': 0xee, '∩': 0xef,\n '≡': 0xf0, '±': 0xf1, '≥': 0xf2, '≤': 0xf3, '⌠': 0xf4, '⌡': 0xf5, '÷': 0xf6, '≈': 0xf7,\n '°': 0xf8, '∙': 0xf9, '·': 0xfa, '√': 0xfb, 'ⁿ': 0xfc, '²': 0xfd, '■': 0xfe, ' ': 0xff,\n}\n\n/** Code page 850 (Multilingual). Kept for printers that answer to `ESC t 2`. */\nconst CP850: Record<string, number> = {\n 'Ç': 0x80, 'ü': 0x81, 'é': 0x82, 'â': 0x83, 'ä': 0x84, 'à': 0x85, 'å': 0x86, 'ç': 0x87,\n 'ê': 0x88, 'ë': 0x89, 'è': 0x8a, 'ï': 0x8b, 'î': 0x8c, 'ì': 0x8d, 'Ä': 0x8e, 'Å': 0x8f,\n 'É': 0x90, 'æ': 0x91, 'Æ': 0x92, 'ô': 0x93, 'ö': 0x94, 'ò': 0x95, 'û': 0x96, 'ù': 0x97,\n 'ÿ': 0x98, 'Ö': 0x99, 'Ü': 0x9a, 'ø': 0x9b, '£': 0x9c, 'Ø': 0x9d, '×': 0x9e, 'ƒ': 0x9f,\n 'á': 0xa0, 'í': 0xa1, 'ó': 0xa2, 'ú': 0xa3, 'ñ': 0xa4, 'Ñ': 0xa5, 'ª': 0xa6, 'º': 0xa7,\n '¿': 0xa8, '®': 0xa9, '¬': 0xaa, '½': 0xab, '¼': 0xac, '¡': 0xad, '«': 0xae, '»': 0xaf,\n 'Á': 0xb5, 'Â': 0xb6, 'À': 0xb7, '©': 0xb8, '¢': 0xbd, '¥': 0xbe, 'ã': 0xc6, 'Ã': 0xc7,\n '¤': 0xcf, 'ð': 0xd0, 'Ð': 0xd1, 'Ê': 0xd2, 'Ë': 0xd3, 'È': 0xd4, 'ı': 0xd5, 'Í': 0xd6,\n 'Î': 0xd7, 'Ï': 0xd8, '¦': 0xdd, 'Ì': 0xde, 'Ó': 0xe0, 'ß': 0xe1, 'Ô': 0xe2, 'Ò': 0xe3,\n 'õ': 0xe4, 'Õ': 0xe5, 'µ': 0xe6, 'þ': 0xe7, 'Þ': 0xe8, 'Ú': 0xe9, 'Û': 0xea, 'Ù': 0xeb,\n 'ý': 0xec, 'Ý': 0xed, '¯': 0xee, '´': 0xef, '': 0xf0, '±': 0xf1, '‗': 0xf2, '¾': 0xf3,\n '¶': 0xf4, '§': 0xf5, '÷': 0xf6, '¸': 0xf7, '°': 0xf8, '¨': 0xf9, '·': 0xfa, '¹': 0xfb,\n '³': 0xfc, '²': 0xfd, '■': 0xfe, ' ': 0xff,\n}\n\n/** Last resort for a character CP850 cannot represent, so a name still reads. */\nconst FOLD: Record<string, string> = { '–': '-', '—': '-', '‘': \"'\", '’': \"'\", '“': '\"', '”': '\"', '…': '...' }\n\n/** `ESC t` index per code page. The pair (index, table) must always match. */\nconst CODEPAGES = {\n cp860: { index: 0x03, table: CP860 },\n cp850: { index: 0x02, table: CP850 },\n} as const\n\nexport type Codepage = keyof typeof CODEPAGES\n\nfunction encode(text: string, table: Record<string, number>): number[] {\n const out: number[] = []\n for (const char of text) {\n const mapped = table[char]\n if (mapped !== undefined) { out.push(mapped); continue }\n const folded = FOLD[char]\n if (folded !== undefined) { for (const c of folded) out.push(c.charCodeAt(0)); continue }\n const code = char.charCodeAt(0)\n // Anything still outside 7-bit ASCII would print as garbage; '?' at least\n // tells the reader a character was lost instead of drawing a box.\n out.push(code >= 0x20 && code <= 0x7e ? code : 0x3f)\n }\n return out\n}\n\ntype Align = 'left' | 'center' | 'right'\n\ninterface Resolved {\n width: PaperWidth\n dots: number\n codepage: Codepage\n qr?: QrEncoder\n qrModuleScale: number\n continued: boolean\n}\n\n/** A byte buffer with the ESC/POS vocabulary spelled out as methods. */\nclass Ribbon {\n private readonly bytes: number[] = []\n readonly width: PaperWidth\n constructor(private readonly opts: Resolved) { this.width = opts.width }\n\n raw(...bytes: number[]): this { this.bytes.push(...bytes); return this }\n /**\n * Initialize, then select the code page. ESC @ resets it, so order matters.\n *\n * Skipped entirely for a continued document. `ESC @` arriving just after the\n * previous document's partial cut makes the printer finish that cut, and the\n * ticket meant to stay attached falls on the floor.\n */\n init(): this {\n if (this.opts.continued) return this\n return this.raw(ESC, 0x40).raw(ESC, 0x74, CODEPAGES[this.opts.codepage].index)\n }\n align(at: Align): this { return this.raw(ESC, 0x61, at === 'center' ? 1 : at === 'right' ? 2 : 0) }\n bold(on: boolean): this { return this.raw(ESC, 0x45, on ? 1 : 0) }\n /** GS ! packs width and height into one byte as two 4-bit multipliers. */\n size(w: 1 | 2 | 3 | 4, h: 1 | 2 | 3 | 4): this { return this.raw(GS, 0x21, ((w - 1) << 4) | (h - 1)) }\n text(value: string): this { this.bytes.push(...encode(value, CODEPAGES[this.opts.codepage].table)); return this }\n line(value = ''): this { return this.text(value).raw(0x0a) }\n feed(lines: number): this { return this.raw(ESC, 0x64, lines) }\n rule(char = '-'): this { return this.line(char.repeat(this.width)) }\n\n /**\n * Name left, value right, on one line. Wraps the name rather than letting a\n * long product push the price off the paper — a receipt whose total is not\n * on it is not a receipt.\n */\n columns(left: string, right: string, indent = 0): this {\n const room = this.width - right.length - indent - 1\n const pad = ' '.repeat(indent)\n if (room <= 0) return this.line(left).line(right.padStart(this.width))\n const [head, ...rest] = wrap(left, room)\n this.line(`${pad}${(head ?? '').padEnd(room)} ${right}`)\n for (const extra of rest) this.line(`${pad}${extra}`)\n return this\n }\n\n /**\n * A 1-bit bitmap as `GS v 0`. Rows are packed MSB-first and every row is\n * `dots / 8` bytes wide, padded — the printer reads a fixed stride and a\n * short row shears the whole image diagonally.\n */\n raster(rows: Uint8Array, heightDots: number): this {\n const perRow = this.opts.dots >> 3\n return this\n .raw(GS, 0x76, 0x30, 0x00, perRow & 0xff, (perRow >> 8) & 0xff,\n heightDots & 0xff, (heightDots >> 8) & 0xff)\n .raw(...rows)\n }\n\n /**\n * QR as a raster bitmap, NOT as `GS ( k`.\n *\n * The panel's Masung answers `GS k` (1D barcode) and `GS v 0` (raster) but\n * ignores every `GS ( k` variant — model 1 and 2, three module sizes, three\n * error levels all printed nothing and reported no error. Cheap ESC/POS\n * clones commonly skip the QR command set, so drawing the modules ourselves\n * is the only version that is portable across the hardware a restaurant\n * actually buys.\n */\n /** Há codificador? Um QR prometido e não desenhado é pior que nenhum. */\n canQr(): boolean { return Boolean(this.opts.qr) }\n\n qr(payload: string): this {\n if (!this.opts.qr) throw new Error('renderEscPos: a QR encoder is required to print this job.')\n const matrix = this.opts.qr(payload)\n const modules = matrix.length\n if (!modules) throw new Error('renderEscPos: the QR encoder returned an empty matrix.')\n const scale = this.opts.qrModuleScale\n const quiet = 2\n const side = (modules + quiet * 2) * scale\n const perRow = this.opts.dots >> 3\n // Byte-align the left edge so the image starts on a whole byte; a bit\n // offset would cost a shift of every row for no visible gain.\n const left = Math.max(0, ((this.opts.dots - side) >> 1) & ~7)\n const rows = new Uint8Array(perRow * side)\n for (let y = 0; y < side; y++) {\n const my = Math.floor(y / scale) - quiet\n if (my < 0 || my >= modules) continue\n const row = matrix[my]\n if (!row) continue\n for (let x = 0; x < side; x++) {\n const mx = Math.floor(x / scale) - quiet\n if (mx < 0 || mx >= modules || !row[mx]) continue\n const px = left + x\n if (px >= this.opts.dots) continue\n rows[y * perRow + (px >> 3)]! |= 0x80 >> (px & 7)\n }\n }\n return this.raster(rows, side)\n }\n\n /** Pin 2, 50ms on / 250ms off — the timing every BR drawer ships wired for. */\n drawer(): this { return this.raw(ESC, 0x70, 0x00, 0x32, 0xfa) }\n /**\n * Partial cut, with the paper held by a tab.\n *\n * Three details, all of them measured on a Masung POS80 rather than chosen:\n *\n * GS V 1 Plain partial cut. `GS V 66 n` — \"feed then partial\" — is the\n * tidier-looking command and this printer severs the paper\n * completely when it is followed by more content.\n * bare LFs `ESC d n` before the cut had the same effect. Line feeds do\n * not.\n * three Enough to clear the cutter, which sits a few millimetres above\n * the head; fewer and the cut lands in the last line.\n *\n * A document that emends onto another must also skip `init()` — see\n * `EscPosOptions.continued`. `ESC @` landing right after a partial cut\n * finishes it.\n */\n cut(): this { return this.raw(0x0a, 0x0a, 0x0a).raw(GS, 0x56, 0x01) }\n\n done(): Uint8Array { return Uint8Array.from(this.bytes) }\n}\n\nfunction wrap(text: string, width: number): string[] {\n const out: string[] = []\n let current = ''\n for (const word of text.split(/\\s+/).filter(Boolean)) {\n if (!current) { current = word }\n else if (current.length + 1 + word.length <= width) { current += ` ${word}` }\n else { out.push(current); current = word }\n while (current.length > width) { out.push(current.slice(0, width)); current = current.slice(width) }\n }\n if (current) out.push(current)\n return out.length ? out : ['']\n}\n\nconst time = (at: Date) =>\n new Intl.DateTimeFormat('pt-BR', { dateStyle: 'short', timeStyle: 'short', timeZone: 'America/Sao_Paulo' }).format(at)\n\n/** 44 digits are unreadable in one run; SEFAZ groups them in fours. */\nconst groupKey = (key: string) => (key.match(/.{1,4}/g) ?? []).join(' ')\n\n/**\n * Encodes a QR payload into a module matrix (`true` = dark).\n *\n * Injected rather than bundled: core carries no QR library, and every surface\n * that prints already has one — the browser can hand over a canvas-derived\n * matrix, a worker can use whatever the app installed.\n */\nexport type QrEncoder = (payload: string) => boolean[][]\n\nexport interface EscPosOptions {\n width?: PaperWidth\n /** Defaults to CP860 — the code page the Brazilian panels answer to. */\n codepage?: Codepage\n /** Printable dots. Defaults to 12 per character column (48 chars = 576). */\n dots?: number\n qr?: QrEncoder\n /** Dots per QR module. 7 is comfortably scannable; 5 halves the payload. */\n qrModuleScale?: number\n /**\n * This document emends onto one already on the paper, so it must not reset.\n *\n * Set it on every document of a strip except the first. The reset is not\n * merely redundant there — `ESC @` immediately after a partial cut completes\n * that cut, which is exactly what a strip is trying to avoid.\n */\n continued?: boolean\n}\n\nexport function renderEscPos(job: PrintJob, options: EscPosOptions = {}): Uint8Array {\n const width = options.width ?? 48\n const resolved: Resolved = {\n width,\n dots: options.dots ?? width * 12,\n codepage: options.codepage ?? 'cp860',\n qrModuleScale: options.qrModuleScale ?? 7,\n continued: options.continued ?? false,\n ...(options.qr ? { qr: options.qr } : {}),\n }\n const r = new Ribbon(resolved).init()\n if (job.kind === 'kitchen_ticket') kitchen(r, job)\n else if (job.kind === 'customer_ticket') customer(r, job)\n else if (job.kind === 'bill') bill(r, job)\n else fiscal(r, job)\n if (job.openDrawer) r.drawer()\n if (job.cut !== false) r.cut()\n return r.done()\n}\n\nfunction kitchen(r: Ribbon, job: KitchenTicket): void {\n r.align('center').size(3, 3).bold(true).line(job.ticket).bold(false).size(1, 1)\n r.line(job.serviceMode.toUpperCase()).line(time(job.placedAt)).rule().align('left')\n for (const line of job.lines) {\n // Quantity at double height: a cook misreading 1 for 7 is a remade plate.\n r.size(1, 2).bold(true).text(`${line.quantity}x `).bold(false)\n for (const [i, part] of wrap(line.name, r.width - 4).entries()) r.line(i === 0 ? part : ` ${part}`)\n r.size(1, 1)\n if (line.note) for (const part of wrap(line.note, r.width - 4)) r.line(` ${part}`)\n }\n if (job.notes) { r.rule().bold(true).line('OBS:').bold(false); for (const p of wrap(job.notes, r.width)) r.line(p) }\n}\n\nfunction customer(r: Ribbon, job: CustomerTicket): void {\n r.align('center').bold(true).line(job.brandName).bold(false).feed(1)\n r.size(4, 4).bold(true).line(job.ticket).bold(false).size(1, 1)\n r.line(job.serviceMode.toUpperCase()).line(job.reference).feed(1)\n r.size(1, 2).line(formatCents(job.totalCents)).size(1, 1)\n if (!job.paid) r.feed(1).bold(true).line('PENDENTE').line('PASSE NO CAIXA').bold(false)\n if (job.footer) { r.feed(1); for (const part of wrap(job.footer, r.width)) r.line(part) }\n promo(r, job)\n}\n\n/**\n * O rodapé que fala do PAINEL, e não do pedido.\n *\n * Só sai quando o documento pede: um restaurante de verdade não anuncia o\n * totem que comprou. Numa feira é o contrário — este papel é a única coisa que\n * a pessoa leva do estande, e ela o lê no caminho para casa.\n *\n * O QR vem POR ÚLTIMO e o endereço logo acima dele: quem tem o celular na mão\n * aponta, e quem não tem digita. Um QR sem o endereço escrito é um convite que\n * só funciona para metade das pessoas.\n */\nfunction promo(r: Ribbon, job: CustomerTicket): void {\n const promo = job.promo\n if (!promo || (!promo.headline && !promo.offer && !promo.site && !promo.qr)) return\n r.feed(1).rule()\n if (promo.headline) { r.bold(true); for (const part of wrap(promo.headline, r.width)) r.line(part); r.bold(false) }\n if (promo.offer) {\n // DOBRADO NAS DUAS DIREÇÕES. Esta linha é a única do papel que precisa ser\n // legível de longe e sem óculos — ela é a oferta, e uma oferta em corpo de\n // rodapé é letra miúda. Em dobro cabe metade dos caracteres por linha, por\n // isso a quebra usa `width / 2`.\n r.feed(1).bold(true).size(2, 2)\n for (const part of wrap(promo.offer, Math.floor(r.width / 2))) r.line(part)\n r.size(1, 1).bold(false).feed(1)\n }\n if (promo.site) r.line(promo.site)\n // Sem codificador não há QR — e um retângulo preto no lugar dele seria pior\n // que nada. O resto do bloco continua valendo: o endereço está escrito acima.\n if (promo.qr && r.canQr()) r.feed(1).qr(promo.qr)\n}\n\nfunction bill(r: Ribbon, job: BillJob): void {\n r.align('center').bold(true).line(job.brandName).bold(false).line(job.reference).rule().align('left')\n for (const line of job.lines) priced(r, line)\n r.rule()\n r.columns('Subtotal', formatCents(job.subtotalCents))\n if (job.serviceChargeCents) r.columns('Serviço', formatCents(job.serviceChargeCents))\n r.bold(true).size(1, 2).columns('TOTAL', formatCents(job.totalCents)).size(1, 1).bold(false)\n r.align('center').feed(1)\n for (const part of wrap(job.footer ?? 'Este documento não é documento fiscal', r.width)) r.line(part)\n}\n\nfunction priced(r: Ribbon, line: PrintLine): void {\n const total = (line.unitPriceCents ?? 0) * line.quantity\n r.columns(`${line.quantity}x ${line.name}`, formatCents(total))\n if (line.note) for (const part of wrap(line.note, r.width - 4)) r.line(` ${part}`)\n}\n\nfunction fiscal(r: Ribbon, job: FiscalReceipt): void {\n r.align('center').bold(true).line(job.emitter.name).bold(false)\n r.line(`CNPJ: ${job.emitter.cnpj}`)\n for (const part of wrap(job.emitter.address, r.width)) r.line(part)\n r.rule()\n for (const part of wrap('DANFE NFC-e - Documento Auxiliar da Nota Fiscal de Consumidor Eletrônica', r.width)) r.line(part)\n // The banner is a legal requirement of the test environment, and it goes\n // ABOVE the items where nobody can miss it — not in a footer.\n if (job.homologation) {\n r.rule('=').bold(true)\n for (const part of wrap('EMITIDA EM AMBIENTE DE HOMOLOGAÇÃO - SEM VALOR FISCAL', r.width)) r.line(part)\n r.bold(false).rule('=')\n }\n r.align('left').rule()\n r.line('COD DESCRICAO QTD UN VL UN VL TOT')\n r.rule()\n for (const line of job.lines) {\n r.line(`${line.code} ${line.name}`.slice(0, r.width))\n r.columns(` ${line.quantity} ${line.unit} x ${formatCents(line.unitPriceCents ?? 0)}`, formatCents(line.totalCents))\n }\n r.rule()\n r.columns('Qtd. total de itens', String(job.lines.length))\n r.bold(true).size(1, 2).columns('VALOR TOTAL R$', formatCents(job.totalCents)).size(1, 1).bold(false)\n for (const payment of job.payments) r.columns(payment.label, formatCents(payment.amountCents))\n if (job.changeCents) r.columns('Troco', formatCents(job.changeCents))\n r.rule().align('center')\n for (const part of wrap('Consulte pela Chave de Acesso em', r.width)) r.line(part)\n r.line(job.lookupUrl)\n r.feed(1).line(groupKey(job.accessKey)).feed(1)\n r.line(job.consumer?.document ? `CONSUMIDOR: ${job.consumer.document}` : 'CONSUMIDOR NAO IDENTIFICADO')\n if (job.consumer?.name) r.line(job.consumer.name)\n r.rule()\n r.line(`NFC-e n. ${job.number} Serie ${job.series}`)\n r.line(time(job.issuedAt))\n for (const part of wrap(`Protocolo de Autorizacao: ${job.protocol}`, r.width)) r.line(part)\n r.feed(1).qr(job.qrCode)\n}\n","// ---------------------------------------------------------------------------\n// PrinterPort — the seam between \"what to print\" and \"how it reaches paper\".\n//\n// Every adapter behind this is a different answer to the transport question,\n// and the app must not know which one is installed:\n//\n// memoryPrinter records jobs, prints nothing. Tests and the diagnostics\n// panel, where \"what would have printed\" is the answer.\n// ePOS Epson TM over its built-in HTTP service. No install, no\n// daemon, works from the browser build.\n// raw 9100 any network ESC/POS printer, through a local bridge,\n// because a browser cannot open a TCP socket.\n// usb Electron shell (FAY-1483) or WebUSB.\n//\n// The renderer is shared by all of them: only the last hop differs.\n// ---------------------------------------------------------------------------\n\nimport { renderEscPos, type EscPosOptions } from './escpos'\nimport type { PrintJob } from './print-job'\n\nexport interface PrintResult {\n ok: boolean\n /** Written for an operator mid-service, not for a log file. */\n message?: string\n}\n\nexport interface PrinterPort {\n readonly id: string\n print(job: PrintJob): Promise<PrintResult>\n /** Prove the paper path without a sale. This is what support asks for. */\n selfTest?(): Promise<PrintResult>\n}\n\n/**\n * Records instead of printing.\n *\n * Not a placeholder to be deleted: a totem with no printer attached still has\n * to complete a sale, and a diagnostics screen still has to show what the last\n * job looked like. Failing the sale because the paper ran out is worse than\n * printing nothing.\n */\nexport function memoryPrinter(options: EscPosOptions = {}): PrinterPort & { readonly jobs: readonly PrintJob[] } {\n const jobs: PrintJob[] = []\n return {\n id: 'memory',\n get jobs() { return jobs },\n async print(job) {\n jobs.push(job)\n // Rendered even though it is discarded: a job that cannot be rendered\n // must fail here, in development, and not on the night it first prints.\n renderEscPos(job, options)\n return { ok: true }\n },\n }\n}\n"]}
|
|
@@ -44,6 +44,29 @@ export interface CustomerTicket extends JobBase {
|
|
|
44
44
|
/** False prints the "pay at the till" warning, which is the whole point. */
|
|
45
45
|
paid: boolean;
|
|
46
46
|
footer?: string;
|
|
47
|
+
/**
|
|
48
|
+
* The strip the customer walks away with, used as a channel.
|
|
49
|
+
*
|
|
50
|
+
* A kiosk ticket is the one piece of paper a restaurant's customer carries
|
|
51
|
+
* out of the room, and at a trade show the person holding it is the one
|
|
52
|
+
* deciding whether to buy the panel. `footer` could not carry this: a QR is
|
|
53
|
+
* not a sentence, and an offer that reads as small print is an offer nobody
|
|
54
|
+
* takes.
|
|
55
|
+
*
|
|
56
|
+
* Every field is optional, and a ticket without `promo` prints exactly as it
|
|
57
|
+
* did before — a real restaurant does not advertise the till it bought.
|
|
58
|
+
*/
|
|
59
|
+
promo?: TicketPromo;
|
|
60
|
+
}
|
|
61
|
+
export interface TicketPromo {
|
|
62
|
+
/** One line, large: who is talking. */
|
|
63
|
+
headline?: string;
|
|
64
|
+
/** The offer itself, in the words the customer will repeat. */
|
|
65
|
+
offer?: string;
|
|
66
|
+
/** Where to type it by hand, for whoever does not scan. */
|
|
67
|
+
site?: string;
|
|
68
|
+
/** What the QR encodes. Needs an encoder in the ESC/POS options. */
|
|
69
|
+
qr?: string;
|
|
47
70
|
}
|
|
48
71
|
/** The bill, or a partial. Priced, totalled, and never a fiscal document. */
|
|
49
72
|
export interface BillJob extends JobBase {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-job.d.ts","sourceRoot":"","sources":["../../src/printing/print-job.ts"],"names":[],"mappings":"AAaA,6EAA6E;AAC7E,MAAM,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,CAAA;AAEhC,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,UAAU,OAAO;IACf,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,OAAO;IAC5C,IAAI,EAAE,gBAAgB,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,IAAI,CAAA;IACd,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,OAAO;IAC7C,IAAI,EAAE,iBAAiB,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,4EAA4E;IAC5E,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"print-job.d.ts","sourceRoot":"","sources":["../../src/printing/print-job.ts"],"names":[],"mappings":"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"}
|
package/dist/types/plugins.d.ts
CHANGED
|
@@ -487,6 +487,17 @@ export interface PluginRegistryDef {
|
|
|
487
487
|
icon?: string;
|
|
488
488
|
description?: string;
|
|
489
489
|
display?: 'table' | 'cards' | 'tree';
|
|
490
|
+
/**
|
|
491
|
+
* What this registry is FOR, written for the agent — shown next to the key in
|
|
492
|
+
* the entity catalogue of `createRecord`/`searchRecords`.
|
|
493
|
+
*
|
|
494
|
+
* Only worth setting where the plural name invites the wrong call: "payment
|
|
495
|
+
* methods" reads as a place to record a supplier you paid, when it is the
|
|
496
|
+
* configuration of how customers pay. `description` is the settings UI's
|
|
497
|
+
* caption and deliberately stays separate — one is read by a person looking
|
|
498
|
+
* at a screen, the other by a model choosing between twenty keys.
|
|
499
|
+
*/
|
|
500
|
+
agentHint?: string;
|
|
490
501
|
seedData?: Record<string, unknown>[];
|
|
491
502
|
mockData?: Record<string, unknown>[];
|
|
492
503
|
readOnly?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/types/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAC3G,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAA;AAChF,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;AAE9E;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAE5F,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,gBAAgB,CAAA;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,2BAA2B,CAAA;IACxC;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;mCAE+B;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,2BAA2B,CAAA;CACzC;AAED,4EAA4E;AAC5E,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACvC,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,2BAA2B,CAAA;CACzC;AAED,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,wEAAwE;IACxE,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAA;IAC3D,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,CAAC,EAAE,2BAA2B,CAAA;IACxC,yFAAyF;IACzF,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;kEAE8D;IAC9D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,gBAAgB,GACxB,0BAA0B,GAC1B,sBAAsB,GACtB,oBAAoB,GACpB,kBAAkB,GAClB,aAAa,GACb,YAAY,GACZ,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEjB,eAAO,MAAM,UAAU;;;;;;;;;;CAUb,CAAA;AAEV,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,2BAA2B,EAAE,CAAA;IAC3C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAA;CAClD;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAA;IAClC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,2BAA2B,KAAK,OAAO,CAAA;CAC9D;AAED,MAAM,WAAW,sBAAsB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvG,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,gBAAgB,CAAA;IACtB,wEAAwE;IACxE,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,2BAA2B,CAAA;IACxC,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAOD,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAA;AAErF;;;;iFAIiF;AACjF,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,CAAA;AAEpF,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClG,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAA;IACV,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,mBAAmB,CAAA;IACzB,iFAAiF;IACjF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACpB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC7B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,UAAU,CAAC,EAAE,2BAA2B,CAAA;IACxC,wEAAwE;IACxE,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAClF;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,sBAAsB,CAAA;CAC/B;AAED;0EAC0E;AAC1E,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAOvC,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,yDAAyD;AACzD;;;;;;;;;;;;;;GAcG;AACH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,WAAW;IAC1B,qFAAqF;IACrF,EAAE,EAAE,MAAM,CAAA;IACV,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAA;IACb,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAA;IACjB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,CAAA;CACnD;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,CAAA;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,sDAAsD;IACtD,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,CAAA;AAE3C,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,uBAAuB,CAAA;IAC/B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IACpD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IACnD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEvB;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,gBAAgB,CAAA;IAChC,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,iFAAiF;IACjF,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,UAAU,CAAC,EAAE,2BAA2B,CAAA;IACxC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,UAAU,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAA;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,QAAQ,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;QACrB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;KACf,CAAA;IACD,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf;wFACoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,qFAAqF;IACrF,MAAM,CAAC,EAAE,qBAAqB,EAAE,CAAA;IAChC,6FAA6F;IAC7F,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC/B,oGAAoG;IACpG,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAA;IACxC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,UAAU,EAAE,qBAAqB,EAAE,CAAA;IACnC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC9B,MAAM,EAAE,qBAAqB,EAAE,CAAA;IAC/B,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAA;IAClC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACvC;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,sBAAsB,EAAE,CAAA;IACzC;;;;OAIG;IACH,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACnC,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACjC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACvC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACnC,uEAAuE;IACvE,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACpC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC;QACpB,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,EAAE,SAAS,CAAA;QACjB,2EAA2E;QAC3E,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAC,CAAA;IACF,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC;;;;OAIG;IACH,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAClC;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,wFAAwF;IACxF,SAAS,CAAC,EAAE,yBAAyB,EAAE,CAAA;IACvC,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;IAC9B,yEAAyE;IACzE,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAChC,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,aAAa,EAAE,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EACA,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,0BAA0B,CAAA;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAA;IAClE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,YAAY,EAAE,iBAAiB,EAAE,CAAA;IACjC,OAAO,EAAE,sBAAsB,EAAE,CAAA;IACjC,kBAAkB,EAAE,iBAAiB,EAAE,CAAA;IACvC,eAAe,EAAE,YAAY,EAAE,CAAA;CAChC;AAED,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACrG,SAAQ,sBAAsB,CAAC,OAAO,CAAC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,sBAAsB,CAAA;CAC/B;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,MAAM,EAAE,sBAAsB,CAAA;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,oBAAoB,CAAA;IAC7B,OAAO,EAAE,sBAAsB,EAAE,CAAA;IACjC,aAAa,EAAE,sBAAsB,EAAE,CAAA;IACvC,MAAM,EAAE,kBAAkB,EAAE,CAAA;IAC5B,UAAU,EAAE,qBAAqB,EAAE,CAAA;IACnC,YAAY,EAAE,iBAAiB,EAAE,CAAA;IACjC,OAAO,EAAE,oBAAoB,EAAE,CAAA;IAC/B,gBAAgB,EAAE,uBAAuB,EAAE,CAAA;IAC3C,cAAc,EAAE,qBAAqB,EAAE,CAAA;IACvC,cAAc,EAAE,qBAAqB,EAAE,CAAA;IACvC;uCACmC;IACnC,MAAM,EAAE,mBAAmB,EAAE,CAAA;IAC7B,YAAY,EAAE,gBAAgB,EAAE,CAAA;IAChC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,MAAM,EAAE,kBAAkB,EAAE,CAAA;IAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAA;IAC5C,wFAAwF;IACxF,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACpD,cAAc,EAAE,kBAAkB,EAAE,CAAA;IACpC,iFAAiF;IACjF,YAAY,EAAE,gBAAgB,EAAE,CAAA;IAChC;iFAC6E;IAC7E,kBAAkB,EAAE,yBAAyB,EAAE,CAAA;IAC/C,gFAAgF;IAChF,WAAW,EAAE,kBAAkB,EAAE,CAAA;CAClC"}
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/types/plugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,15 @@ export interface SetupPrerequisite {
|
|
|
51
51
|
/** Nothing works without it. Default true; `false` reads as "nice to have". */
|
|
52
52
|
required?: boolean;
|
|
53
53
|
}
|
|
54
|
+
/** A field the person fills themselves in practice mode, after the tour. */
|
|
55
|
+
export interface PracticeAction {
|
|
56
|
+
/** `data-tour` anchor of the field this footprint pins to. */
|
|
57
|
+
anchor: string;
|
|
58
|
+
/** What to do here, imperative: 'Selecione o fornecedor'. */
|
|
59
|
+
label: string;
|
|
60
|
+
/** Completing this ends practice and fires the celebration. */
|
|
61
|
+
final?: boolean;
|
|
62
|
+
}
|
|
54
63
|
/** One move of the setup, in the order it is done. */
|
|
55
64
|
export interface SetupAction {
|
|
56
65
|
/** The thing to do, imperative, in the owner's words. */
|
|
@@ -61,6 +70,13 @@ export interface SetupAction {
|
|
|
61
70
|
route?: string;
|
|
62
71
|
/** `data-tour` anchor to spotlight while saying it. */
|
|
63
72
|
anchor?: string;
|
|
73
|
+
/**
|
|
74
|
+
* The person is meant to CLICK the anchored control: the tour shows no
|
|
75
|
+
* "next" and steps aside when the control goes away (they clicked, the
|
|
76
|
+
* screen changed). Only meaningful on a control that disappears when used —
|
|
77
|
+
* on a persistent field it would wait forever.
|
|
78
|
+
*/
|
|
79
|
+
handOver?: boolean;
|
|
64
80
|
/**
|
|
65
81
|
* The assistant can complete this alone — it has a tool for it, or it is a
|
|
66
82
|
* setting it may write. Default false, which means HAND THE CONTROL OVER:
|
|
@@ -95,6 +111,13 @@ export interface SetupGuideDef {
|
|
|
95
111
|
statusNote?: string;
|
|
96
112
|
requires?: SetupPrerequisite[];
|
|
97
113
|
steps?: SetupAction[];
|
|
114
|
+
/**
|
|
115
|
+
* After the tour lands on the create screen, the fields the person fills in
|
|
116
|
+
* THEMSELVES — numbered footprints that tick as they go, the last (`final`)
|
|
117
|
+
* raining confetti. This is the doing half: the tour showed where, practice
|
|
118
|
+
* makes it stick.
|
|
119
|
+
*/
|
|
120
|
+
practice?: PracticeAction[];
|
|
98
121
|
/** What the system imposes, whether anybody likes it or not. */
|
|
99
122
|
rules?: string[];
|
|
100
123
|
/** The mistakes people make here, and how each one looks from the screen. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-guide.d.ts","sourceRoot":"","sources":["../../src/types/setup-guide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAA;IACb,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAA;IACV,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,CAAA;AAEtE,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAA;IACf,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAA;IACb,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC9B,KAAK,CAAC,EAAE,WAAW,EAAE,CAAA;IACrB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,qDAAqD;AACrD,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB"}
|
|
1
|
+
{"version":3,"file":"setup-guide.d.ts","sourceRoot":"","sources":["../../src/types/setup-guide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAA;IACb,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAA;IACd,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAA;IACV,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,CAAA;AAEtE,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAA;IACf,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAA;IACb,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC9B,KAAK,CAAC,EAAE,WAAW,EAAE,CAAA;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAA;IAC3B,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,qDAAqD;AACrD,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB"}
|