@deckflow/deckuse 1.2.1 → 1.3.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/README.es.md +342 -0
- package/README.fr.md +342 -0
- package/README.ja.md +342 -0
- package/README.ko.md +342 -0
- package/README.md +46 -8
- package/README.pt-BR.md +342 -0
- package/README.ru.md +342 -0
- package/README.zh-CN.md +367 -0
- package/assets/default.docx +0 -0
- package/assets/default.pptx +0 -0
- package/dist/bin.js +183 -19
- package/dist/bin.js.map +1 -1
- package/dist/core/adapter.d.ts +24 -0
- package/dist/core/adapter.d.ts.map +1 -0
- package/dist/core/adapter.js +20 -0
- package/dist/core/adapter.js.map +1 -0
- package/dist/core/executor.d.ts +24 -0
- package/dist/core/executor.d.ts.map +1 -0
- package/dist/core/executor.js +65 -0
- package/dist/core/executor.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/length.d.ts +27 -0
- package/dist/core/length.d.ts.map +1 -0
- package/dist/core/length.js +63 -0
- package/dist/core/length.js.map +1 -0
- package/dist/core/measure.d.ts +24 -0
- package/dist/core/measure.d.ts.map +1 -0
- package/dist/core/measure.js +79 -0
- package/dist/core/measure.js.map +1 -0
- package/dist/core/not-implemented.d.ts +3 -0
- package/dist/core/not-implemented.d.ts.map +1 -0
- package/dist/core/not-implemented.js +12 -0
- package/dist/core/not-implemented.js.map +1 -0
- package/dist/core/schema.d.ts +3035 -0
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/core/schema.js +798 -0
- package/dist/core/schema.js.map +1 -0
- package/dist/default-template.d.ts +8 -0
- package/dist/default-template.d.ts.map +1 -0
- package/dist/default-template.js +29 -0
- package/dist/default-template.js.map +1 -0
- package/dist/docx/adapter.d.ts +29 -0
- package/dist/docx/adapter.d.ts.map +1 -0
- package/dist/docx/adapter.js +442 -0
- package/dist/docx/adapter.js.map +1 -0
- package/dist/docx/addressing.d.ts +18 -0
- package/dist/docx/addressing.d.ts.map +1 -0
- package/dist/docx/addressing.js +111 -0
- package/dist/docx/addressing.js.map +1 -0
- package/dist/docx/blank.d.ts +4 -0
- package/dist/docx/blank.d.ts.map +1 -0
- package/dist/docx/blank.js +75 -0
- package/dist/docx/blank.js.map +1 -0
- package/dist/docx/index-sync.d.ts +7 -0
- package/dist/docx/index-sync.d.ts.map +1 -0
- package/dist/docx/index-sync.js +24 -0
- package/dist/docx/index-sync.js.map +1 -0
- package/dist/docx/index.d.ts +5 -0
- package/dist/docx/index.d.ts.map +1 -0
- package/dist/docx/index.js +4 -0
- package/dist/docx/index.js.map +1 -0
- package/dist/docx/indexer.d.ts +41 -0
- package/dist/docx/indexer.d.ts.map +1 -0
- package/dist/docx/indexer.js +353 -0
- package/dist/docx/indexer.js.map +1 -0
- package/dist/docx/mutations.d.ts +5 -0
- package/dist/docx/mutations.d.ts.map +1 -0
- package/dist/docx/mutations.js +311 -0
- package/dist/docx/mutations.js.map +1 -0
- package/dist/docx/paragraphs.d.ts +26 -0
- package/dist/docx/paragraphs.d.ts.map +1 -0
- package/dist/docx/paragraphs.js +314 -0
- package/dist/docx/paragraphs.js.map +1 -0
- package/dist/docx/properties.d.ts +23 -0
- package/dist/docx/properties.d.ts.map +1 -0
- package/dist/docx/properties.js +414 -0
- package/dist/docx/properties.js.map +1 -0
- package/dist/docx/tables.d.ts +4 -0
- package/dist/docx/tables.d.ts.map +1 -0
- package/dist/docx/tables.js +64 -0
- package/dist/docx/tables.js.map +1 -0
- package/dist/docx/text-spans.d.ts +25 -0
- package/dist/docx/text-spans.d.ts.map +1 -0
- package/dist/docx/text-spans.js +142 -0
- package/dist/docx/text-spans.js.map +1 -0
- package/dist/docx/types.d.ts +27 -0
- package/dist/docx/types.d.ts.map +1 -0
- package/dist/docx/types.js +2 -0
- package/dist/docx/types.js.map +1 -0
- package/dist/docx/workspace.d.ts +20 -0
- package/dist/docx/workspace.d.ts.map +1 -0
- package/dist/docx/workspace.js +145 -0
- package/dist/docx/workspace.js.map +1 -0
- package/dist/docx/xml.d.ts +18 -0
- package/dist/docx/xml.d.ts.map +1 -0
- package/dist/docx/xml.js +87 -0
- package/dist/docx/xml.js.map +1 -0
- package/dist/edition-config/index.d.ts +25 -0
- package/dist/edition-config/index.d.ts.map +1 -0
- package/dist/edition-config/index.js +22 -0
- package/dist/edition-config/index.js.map +1 -0
- package/dist/edition.d.ts +2 -2
- package/dist/edition.d.ts.map +1 -1
- package/dist/edition.js +1 -1
- package/dist/edition.js.map +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +124 -32
- package/dist/help.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/key/index.d.ts +2 -0
- package/dist/key/index.d.ts.map +1 -0
- package/dist/key/index.js +3 -0
- package/dist/key/index.js.map +1 -0
- package/dist/monitor-daemon.d.ts +21 -8
- package/dist/monitor-daemon.d.ts.map +1 -1
- package/dist/monitor-daemon.js +189 -51
- package/dist/monitor-daemon.js.map +1 -1
- package/dist/monitor-registry.d.ts +34 -0
- package/dist/monitor-registry.d.ts.map +1 -0
- package/dist/monitor-registry.js +191 -0
- package/dist/monitor-registry.js.map +1 -0
- package/dist/monitor.js +1 -1
- package/dist/monitor.js.map +1 -1
- package/dist/numbers/index.d.ts +2 -0
- package/dist/numbers/index.d.ts.map +1 -0
- package/dist/numbers/index.js +3 -0
- package/dist/numbers/index.js.map +1 -0
- package/dist/opc/index.d.ts +90 -0
- package/dist/opc/index.d.ts.map +1 -0
- package/dist/opc/index.js +569 -0
- package/dist/opc/index.js.map +1 -0
- package/dist/pptx/adapter.d.ts +167 -0
- package/dist/pptx/adapter.d.ts.map +1 -0
- package/dist/pptx/adapter.js +807 -0
- package/dist/pptx/adapter.js.map +1 -0
- package/dist/pptx/addressing.d.ts +45 -0
- package/dist/pptx/addressing.d.ts.map +1 -0
- package/dist/pptx/addressing.js +428 -0
- package/dist/pptx/addressing.js.map +1 -0
- package/dist/pptx/align.d.ts +24 -0
- package/dist/pptx/align.d.ts.map +1 -0
- package/dist/pptx/align.js +112 -0
- package/dist/pptx/align.js.map +1 -0
- package/dist/pptx/chart-classify.d.ts +10 -0
- package/dist/pptx/chart-classify.d.ts.map +1 -0
- package/dist/pptx/chart-classify.js +58 -0
- package/dist/pptx/chart-classify.js.map +1 -0
- package/dist/pptx/chart.d.ts +42 -0
- package/dist/pptx/chart.d.ts.map +1 -0
- package/dist/pptx/chart.js +614 -0
- package/dist/pptx/chart.js.map +1 -0
- package/dist/pptx/edition-extension.d.ts +25 -0
- package/dist/pptx/edition-extension.d.ts.map +1 -0
- package/dist/pptx/edition-extension.js +10 -0
- package/dist/pptx/edition-extension.js.map +1 -0
- package/dist/pptx/edition.d.ts +20 -0
- package/dist/pptx/edition.d.ts.map +1 -0
- package/dist/pptx/edition.js +69 -0
- package/dist/pptx/edition.js.map +1 -0
- package/dist/pptx/elements.d.ts +12 -0
- package/dist/pptx/elements.d.ts.map +1 -0
- package/dist/pptx/elements.js +224 -0
- package/dist/pptx/elements.js.map +1 -0
- package/dist/pptx/hyperlink.d.ts +7 -0
- package/dist/pptx/hyperlink.d.ts.map +1 -0
- package/dist/pptx/hyperlink.js +81 -0
- package/dist/pptx/hyperlink.js.map +1 -0
- package/dist/pptx/index-sync.d.ts +7 -0
- package/dist/pptx/index-sync.d.ts.map +1 -0
- package/dist/pptx/index-sync.js +24 -0
- package/dist/pptx/index-sync.js.map +1 -0
- package/dist/pptx/index.d.ts +10 -0
- package/dist/pptx/index.d.ts.map +1 -0
- package/dist/pptx/index.js +7 -0
- package/dist/pptx/index.js.map +1 -0
- package/dist/pptx/indexer.d.ts +19 -0
- package/dist/pptx/indexer.d.ts.map +1 -0
- package/dist/pptx/indexer.js +319 -0
- package/dist/pptx/indexer.js.map +1 -0
- package/dist/pptx/layout-ref.d.ts +41 -0
- package/dist/pptx/layout-ref.d.ts.map +1 -0
- package/dist/pptx/layout-ref.js +145 -0
- package/dist/pptx/layout-ref.js.map +1 -0
- package/dist/pptx/media.d.ts +15 -0
- package/dist/pptx/media.d.ts.map +1 -0
- package/dist/pptx/media.js +145 -0
- package/dist/pptx/media.js.map +1 -0
- package/dist/pptx/mutations.d.ts +11 -0
- package/dist/pptx/mutations.d.ts.map +1 -0
- package/dist/pptx/mutations.js +1111 -0
- package/dist/pptx/mutations.js.map +1 -0
- package/dist/pptx/picture.d.ts +25 -0
- package/dist/pptx/picture.d.ts.map +1 -0
- package/dist/pptx/picture.js +118 -0
- package/dist/pptx/picture.js.map +1 -0
- package/dist/pptx/placeholder-role.d.ts +19 -0
- package/dist/pptx/placeholder-role.d.ts.map +1 -0
- package/dist/pptx/placeholder-role.js +71 -0
- package/dist/pptx/placeholder-role.js.map +1 -0
- package/dist/pptx/properties.d.ts +13 -0
- package/dist/pptx/properties.d.ts.map +1 -0
- package/dist/pptx/properties.js +587 -0
- package/dist/pptx/properties.js.map +1 -0
- package/dist/pptx/resolve-properties.d.ts +17 -0
- package/dist/pptx/resolve-properties.d.ts.map +1 -0
- package/dist/pptx/resolve-properties.js +571 -0
- package/dist/pptx/resolve-properties.js.map +1 -0
- package/dist/pptx/slide-size.d.ts +9 -0
- package/dist/pptx/slide-size.d.ts.map +1 -0
- package/dist/pptx/slide-size.js +29 -0
- package/dist/pptx/slide-size.js.map +1 -0
- package/dist/pptx/slides.d.ts +15 -0
- package/dist/pptx/slides.d.ts.map +1 -0
- package/dist/pptx/slides.js +236 -0
- package/dist/pptx/slides.js.map +1 -0
- package/dist/pptx/table-measure.d.ts +43 -0
- package/dist/pptx/table-measure.d.ts.map +1 -0
- package/dist/pptx/table-measure.js +70 -0
- package/dist/pptx/table-measure.js.map +1 -0
- package/dist/pptx/table.d.ts +23 -0
- package/dist/pptx/table.d.ts.map +1 -0
- package/dist/pptx/table.js +529 -0
- package/dist/pptx/table.js.map +1 -0
- package/dist/pptx/types.d.ts +27 -0
- package/dist/pptx/types.d.ts.map +1 -0
- package/dist/pptx/types.js +2 -0
- package/dist/pptx/types.js.map +1 -0
- package/dist/pptx/workspace.d.ts +23 -0
- package/dist/pptx/workspace.d.ts.map +1 -0
- package/dist/pptx/workspace.js +148 -0
- package/dist/pptx/workspace.js.map +1 -0
- package/dist/pptx/xml.d.ts +67 -0
- package/dist/pptx/xml.d.ts.map +1 -0
- package/dist/pptx/xml.js +355 -0
- package/dist/pptx/xml.js.map +1 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +14 -2
- package/dist/render.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workspace/git.d.ts +7 -0
- package/dist/workspace/git.d.ts.map +1 -0
- package/dist/workspace/git.js +82 -0
- package/dist/workspace/git.js.map +1 -0
- package/dist/workspace/index.d.ts +7 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +7 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/lock.d.ts +3 -0
- package/dist/workspace/lock.d.ts.map +1 -0
- package/dist/workspace/lock.js +35 -0
- package/dist/workspace/lock.js.map +1 -0
- package/dist/workspace/metadata.d.ts +4 -0
- package/dist/workspace/metadata.d.ts.map +1 -0
- package/dist/workspace/metadata.js +21 -0
- package/dist/workspace/metadata.js.map +1 -0
- package/dist/workspace/operations.d.ts +14 -0
- package/dist/workspace/operations.d.ts.map +1 -0
- package/dist/workspace/operations.js +35 -0
- package/dist/workspace/operations.js.map +1 -0
- package/dist/workspace/paths.d.ts +11 -0
- package/dist/workspace/paths.d.ts.map +1 -0
- package/dist/workspace/paths.js +12 -0
- package/dist/workspace/paths.js.map +1 -0
- package/dist/workspace/revision.d.ts +6 -0
- package/dist/workspace/revision.d.ts.map +1 -0
- package/dist/workspace/revision.js +15 -0
- package/dist/workspace/revision.js.map +1 -0
- package/dist/xlsx/index.d.ts +2 -0
- package/dist/xlsx/index.d.ts.map +1 -0
- package/dist/xlsx/index.js +3 -0
- package/dist/xlsx/index.js.map +1 -0
- package/package.json +48 -27
- package/schema/command.schema.json +2399 -0
- package/dist/.tsbuildinfo +0 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { AdapterRegistry, } from './adapter.js';
|
|
2
|
+
import { commandSchema, err } from './schema.js';
|
|
3
|
+
export class Executor {
|
|
4
|
+
registry;
|
|
5
|
+
options;
|
|
6
|
+
#workspaceAdapters = new Map();
|
|
7
|
+
constructor(registry, options = {}) {
|
|
8
|
+
this.registry = registry;
|
|
9
|
+
this.options = options;
|
|
10
|
+
}
|
|
11
|
+
async execute(input) {
|
|
12
|
+
if (typeof input === 'object' &&
|
|
13
|
+
input !== null &&
|
|
14
|
+
'version' in input &&
|
|
15
|
+
input.version !== undefined &&
|
|
16
|
+
input.version !== '2.0') {
|
|
17
|
+
return err('UNSUPPORTED_VERSION', `Unsupported protocol version: ${String(input.version)}`, [], { hint: 'Use version "2.0". Protocol 1.0 workspaces must be re-initialized.' });
|
|
18
|
+
}
|
|
19
|
+
const parsed = commandSchema.safeParse(input);
|
|
20
|
+
if (!parsed.success) {
|
|
21
|
+
const diagnostics = parsed.error.issues.map((issue) => ({
|
|
22
|
+
severity: 'error',
|
|
23
|
+
code: 'SCHEMA_VALIDATION',
|
|
24
|
+
message: issue.message,
|
|
25
|
+
path: issue.path.map((segment) => typeof segment === 'symbol' ? (segment.description ?? segment.toString()) : segment),
|
|
26
|
+
}));
|
|
27
|
+
const first = diagnostics[0];
|
|
28
|
+
const pathLabel = first?.path && first.path.length > 0 ? `${first.path.map(String).join('.')}: ` : '';
|
|
29
|
+
const detail = first ? `${pathLabel}${first.message}` : 'invalid input';
|
|
30
|
+
const extra = diagnostics.length > 1 ? ` (+${String(diagnostics.length - 1)} more issue(s))` : '';
|
|
31
|
+
return err('INVALID_COMMAND', `Command failed schema validation: ${detail}${extra}`, diagnostics);
|
|
32
|
+
}
|
|
33
|
+
const command = parsed.data;
|
|
34
|
+
if (command.type === 'init') {
|
|
35
|
+
const adapter = this.registry.get(command.format);
|
|
36
|
+
if (!adapter)
|
|
37
|
+
return err('FORMAT_NOT_SUPPORTED', `No adapter registered for format: ${command.format}`);
|
|
38
|
+
const result = await this.#safely(() => adapter.init(command, this.options.context ?? {}));
|
|
39
|
+
if (result.ok)
|
|
40
|
+
this.#workspaceAdapters.set(command.workspaceId, adapter);
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
const adapter = this.#workspaceAdapters.get(command.workspaceId) ??
|
|
44
|
+
(await this.options.resolveAdapter?.(command.workspaceId, this.options.context ?? {}));
|
|
45
|
+
if (adapter)
|
|
46
|
+
this.#workspaceAdapters.set(command.workspaceId, adapter);
|
|
47
|
+
if (!adapter)
|
|
48
|
+
return err('WORKSPACE_NOT_FOUND', `Workspace is not initialized: ${command.workspaceId}`);
|
|
49
|
+
return this.#safely(() => adapter.execute(command, this.options.context ?? {}));
|
|
50
|
+
}
|
|
51
|
+
async #safely(operation) {
|
|
52
|
+
try {
|
|
53
|
+
return await operation();
|
|
54
|
+
}
|
|
55
|
+
catch (cause) {
|
|
56
|
+
const message = cause instanceof Error ? cause.message : 'Unknown adapter error';
|
|
57
|
+
return { ok: false, error: { code: 'INTERNAL_ERROR', message, cause }, diagnostics: [] };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export const execute = (executor, command) => executor.execute(command);
|
|
62
|
+
export const inspect = (executor, workspaceId, options = {}) => executor.execute({ version: '2.0', type: 'inspect', workspaceId, ...options });
|
|
63
|
+
export const getText = (executor, workspaceId, ref) => executor.execute({ version: '2.0', type: 'getText', workspaceId, ref });
|
|
64
|
+
export const setText = (executor, workspaceId, transactionId, ref, text) => executor.execute({ version: '2.0', type: 'setText', workspaceId, transactionId, ref, text });
|
|
65
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** OOXML English Metric Unit constants (documented for agents). */
|
|
2
|
+
export declare const EMU_PER_INCH = 914400;
|
|
3
|
+
export declare const EMU_PER_CM = 360000;
|
|
4
|
+
export declare const EMU_PER_PT = 12700;
|
|
5
|
+
/** CSS px at 96 DPI → EMU (1in = 96px = 914400 EMU). */
|
|
6
|
+
export declare const EMU_PER_PX = 9525;
|
|
7
|
+
/** Default 16:9 slide when presentation.xml has no sldSz. */
|
|
8
|
+
export declare const DEFAULT_SLIDE_WIDTH_EMU = 12192000;
|
|
9
|
+
export declare const DEFAULT_SLIDE_HEIGHT_EMU = 6858000;
|
|
10
|
+
export type LengthAxis = 'x' | 'y' | 'absolute';
|
|
11
|
+
export interface LengthContext {
|
|
12
|
+
readonly slideWidthEmu?: number;
|
|
13
|
+
readonly slideHeightEmu?: number;
|
|
14
|
+
/** Which dimension `%` resolves against. Defaults to absolute (uses width). */
|
|
15
|
+
readonly axis?: LengthAxis;
|
|
16
|
+
}
|
|
17
|
+
export type LengthInput = number | string;
|
|
18
|
+
/**
|
|
19
|
+
* Parse a length into EMU.
|
|
20
|
+
* - bare numbers are treated as EMU (protocol / OOXML convention)
|
|
21
|
+
* - strings may carry units: px, pt, cm, mm, in, emu, %
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseLength(value: LengthInput, context?: LengthContext): number;
|
|
24
|
+
export declare function parseOptionalLength(value: LengthInput | undefined, context?: LengthContext): number | undefined;
|
|
25
|
+
/** Zod-friendly union: EMU number or unit string (e.g. "120px", "5%"). */
|
|
26
|
+
export declare const lengthInputDescription = "EMU number, or string with unit px|pt|cm|mm|in|emu|% (96 DPI for px; % relative to slide)";
|
|
27
|
+
//# sourceMappingURL=length.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"length.d.ts","sourceRoot":"","sources":["../../src/core/length.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,eAAO,MAAM,YAAY,SAAU,CAAC;AACpC,eAAO,MAAM,UAAU,SAAU,CAAC;AAClC,eAAO,MAAM,UAAU,QAAS,CAAC;AACjC,wDAAwD;AACxD,eAAO,MAAM,UAAU,OAAQ,CAAC;AAEhC,6DAA6D;AAC7D,eAAO,MAAM,uBAAuB,WAAa,CAAC;AAClD,eAAO,MAAM,wBAAwB,UAAY,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;CAC5B;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAI1C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAyCnF;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,GAAG,SAAS,EAC9B,OAAO,GAAE,aAAkB,GAC1B,MAAM,GAAG,SAAS,CAGpB;AAED,0EAA0E;AAC1E,eAAO,MAAM,sBAAsB,8FAC0D,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/** OOXML English Metric Unit constants (documented for agents). */
|
|
2
|
+
export const EMU_PER_INCH = 914_400;
|
|
3
|
+
export const EMU_PER_CM = 360_000;
|
|
4
|
+
export const EMU_PER_PT = 12_700;
|
|
5
|
+
/** CSS px at 96 DPI → EMU (1in = 96px = 914400 EMU). */
|
|
6
|
+
export const EMU_PER_PX = 9_525;
|
|
7
|
+
/** Default 16:9 slide when presentation.xml has no sldSz. */
|
|
8
|
+
export const DEFAULT_SLIDE_WIDTH_EMU = 12_192_000;
|
|
9
|
+
export const DEFAULT_SLIDE_HEIGHT_EMU = 6_858_000;
|
|
10
|
+
const LENGTH_RE = /^\s*(-?\d+(?:\.\d+)?)\s*(px|pt|cm|mm|in|emu|%)?\s*$/i;
|
|
11
|
+
/**
|
|
12
|
+
* Parse a length into EMU.
|
|
13
|
+
* - bare numbers are treated as EMU (protocol / OOXML convention)
|
|
14
|
+
* - strings may carry units: px, pt, cm, mm, in, emu, %
|
|
15
|
+
*/
|
|
16
|
+
export function parseLength(value, context = {}) {
|
|
17
|
+
if (typeof value === 'number') {
|
|
18
|
+
if (!Number.isFinite(value))
|
|
19
|
+
throw new Error(`Invalid length number: ${String(value)}`);
|
|
20
|
+
return Math.round(value);
|
|
21
|
+
}
|
|
22
|
+
const trimmed = value.trim();
|
|
23
|
+
if (trimmed.toLowerCase() === 'auto')
|
|
24
|
+
throw new Error('Length "auto" is only valid for table height; use resolveTableHeight');
|
|
25
|
+
const match = LENGTH_RE.exec(trimmed);
|
|
26
|
+
if (!match)
|
|
27
|
+
throw new Error(`Invalid length: ${value}`);
|
|
28
|
+
const amount = Number(match[1]);
|
|
29
|
+
if (!Number.isFinite(amount))
|
|
30
|
+
throw new Error(`Invalid length: ${value}`);
|
|
31
|
+
const unit = (match[2] ?? 'emu').toLowerCase();
|
|
32
|
+
switch (unit) {
|
|
33
|
+
case 'emu':
|
|
34
|
+
return Math.round(amount);
|
|
35
|
+
case 'px':
|
|
36
|
+
return Math.round(amount * EMU_PER_PX);
|
|
37
|
+
case 'pt':
|
|
38
|
+
return Math.round(amount * EMU_PER_PT);
|
|
39
|
+
case 'cm':
|
|
40
|
+
return Math.round(amount * EMU_PER_CM);
|
|
41
|
+
case 'mm':
|
|
42
|
+
return Math.round(amount * (EMU_PER_CM / 10));
|
|
43
|
+
case 'in':
|
|
44
|
+
return Math.round(amount * EMU_PER_INCH);
|
|
45
|
+
case '%': {
|
|
46
|
+
const axis = context.axis ?? 'absolute';
|
|
47
|
+
const basis = axis === 'y'
|
|
48
|
+
? (context.slideHeightEmu ?? DEFAULT_SLIDE_HEIGHT_EMU)
|
|
49
|
+
: (context.slideWidthEmu ?? DEFAULT_SLIDE_WIDTH_EMU);
|
|
50
|
+
return Math.round((amount / 100) * basis);
|
|
51
|
+
}
|
|
52
|
+
default:
|
|
53
|
+
throw new Error(`Unsupported length unit in: ${value}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function parseOptionalLength(value, context = {}) {
|
|
57
|
+
if (value === undefined)
|
|
58
|
+
return undefined;
|
|
59
|
+
return parseLength(value, context);
|
|
60
|
+
}
|
|
61
|
+
/** Zod-friendly union: EMU number or unit string (e.g. "120px", "5%"). */
|
|
62
|
+
export const lengthInputDescription = 'EMU number, or string with unit px|pt|cm|mm|in|emu|% (96 DPI for px; % relative to slide)';
|
|
63
|
+
//# sourceMappingURL=length.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"length.js","sourceRoot":"","sources":["../../src/core/length.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface MeasureTextInput {
|
|
2
|
+
readonly text: string;
|
|
3
|
+
/** Font size in points. */
|
|
4
|
+
readonly fontSize: number;
|
|
5
|
+
readonly bold?: boolean;
|
|
6
|
+
readonly fontFamily?: string;
|
|
7
|
+
/** Optional max width in EMU; when set, text wraps for height estimation. */
|
|
8
|
+
readonly maxWidthEmu?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface MeasureTextResult {
|
|
11
|
+
readonly widthEmu: number;
|
|
12
|
+
readonly heightEmu: number;
|
|
13
|
+
readonly widthPx: number;
|
|
14
|
+
readonly heightPx: number;
|
|
15
|
+
readonly lines: number;
|
|
16
|
+
readonly heuristic: true;
|
|
17
|
+
readonly note: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Heuristic text measure for agent layout (not a real font rasterizer).
|
|
21
|
+
* Suitable for sizing boxes before render QA; expect ~10–20% error vs PowerPoint.
|
|
22
|
+
*/
|
|
23
|
+
export declare function measureText(input: MeasureTextInput): MeasureTextResult;
|
|
24
|
+
//# sourceMappingURL=measure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../../src/core/measure.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAeD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAyDtE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { EMU_PER_PT, EMU_PER_PX } from './length.js';
|
|
2
|
+
const isCjk = (ch) => /[\u3000-\u9fff\uac00-\ud7af\uf900-\ufaff]/.test(ch);
|
|
3
|
+
/** Average glyph width as a fraction of font size (pt → pt). */
|
|
4
|
+
const charWidthPt = (ch, bold) => {
|
|
5
|
+
const factor = bold ? 1.08 : 1;
|
|
6
|
+
if (ch === '\n' || ch === '\r')
|
|
7
|
+
return 0;
|
|
8
|
+
if (ch === ' ')
|
|
9
|
+
return 0.33 * factor;
|
|
10
|
+
if (isCjk(ch))
|
|
11
|
+
return 1.0 * factor;
|
|
12
|
+
if (/[iIlj1|]/.test(ch))
|
|
13
|
+
return 0.28 * factor;
|
|
14
|
+
if (/[mwMW@%]/.test(ch))
|
|
15
|
+
return 0.85 * factor;
|
|
16
|
+
return 0.55 * factor;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Heuristic text measure for agent layout (not a real font rasterizer).
|
|
20
|
+
* Suitable for sizing boxes before render QA; expect ~10–20% error vs PowerPoint.
|
|
21
|
+
*/
|
|
22
|
+
export function measureText(input) {
|
|
23
|
+
const fontSize = input.fontSize;
|
|
24
|
+
if (!(fontSize > 0))
|
|
25
|
+
throw new Error('fontSize must be a positive number (pt)');
|
|
26
|
+
const bold = input.bold === true;
|
|
27
|
+
const lineHeightPt = fontSize * 1.2;
|
|
28
|
+
const maxWidthPt = input.maxWidthEmu !== undefined && input.maxWidthEmu > 0
|
|
29
|
+
? input.maxWidthEmu / EMU_PER_PT
|
|
30
|
+
: undefined;
|
|
31
|
+
const paragraphs = input.text.replace(/\r\n/g, '\n').replace(/\r/g, '\n').split('\n');
|
|
32
|
+
let lines = 0;
|
|
33
|
+
let maxLinePt = 0;
|
|
34
|
+
for (const paragraph of paragraphs) {
|
|
35
|
+
if (paragraph.length === 0) {
|
|
36
|
+
lines += 1;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (maxWidthPt === undefined) {
|
|
40
|
+
let widthPt = 0;
|
|
41
|
+
for (const ch of paragraph)
|
|
42
|
+
widthPt += charWidthPt(ch, bold);
|
|
43
|
+
maxLinePt = Math.max(maxLinePt, widthPt);
|
|
44
|
+
lines += 1;
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
let lineWidth = 0;
|
|
48
|
+
let lineCount = 1;
|
|
49
|
+
for (const ch of paragraph) {
|
|
50
|
+
const w = charWidthPt(ch, bold);
|
|
51
|
+
if (lineWidth > 0 && lineWidth + w > maxWidthPt) {
|
|
52
|
+
maxLinePt = Math.max(maxLinePt, lineWidth);
|
|
53
|
+
lineWidth = w;
|
|
54
|
+
lineCount += 1;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
lineWidth += w;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
maxLinePt = Math.max(maxLinePt, lineWidth);
|
|
61
|
+
lines += lineCount;
|
|
62
|
+
}
|
|
63
|
+
if (lines === 0)
|
|
64
|
+
lines = 1;
|
|
65
|
+
const widthPt = maxWidthPt !== undefined ? Math.min(maxLinePt, maxWidthPt) : maxLinePt;
|
|
66
|
+
const heightPt = lines * lineHeightPt;
|
|
67
|
+
const widthEmu = Math.max(1, Math.round(widthPt * EMU_PER_PT));
|
|
68
|
+
const heightEmu = Math.max(1, Math.round(heightPt * EMU_PER_PT));
|
|
69
|
+
return {
|
|
70
|
+
widthEmu,
|
|
71
|
+
heightEmu,
|
|
72
|
+
widthPx: Math.round(widthEmu / EMU_PER_PX),
|
|
73
|
+
heightPx: Math.round(heightEmu / EMU_PER_PX),
|
|
74
|
+
lines,
|
|
75
|
+
heuristic: true,
|
|
76
|
+
note: 'Heuristic glyph widths (~10–20% vs PowerPoint). Verify with deckuse render.',
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=measure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure.js","sourceRoot":"","sources":["../../src/core/measure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAsBrD,MAAM,KAAK,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,2CAA2C,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAE5F,gEAAgE;AAChE,MAAM,WAAW,GAAG,CAAC,EAAU,EAAE,IAAa,EAAU,EAAE;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IACzC,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO,IAAI,GAAG,MAAM,CAAC;IACrC,IAAI,KAAK,CAAC,EAAE,CAAC;QAAE,OAAO,GAAG,GAAG,MAAM,CAAC;IACnC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,GAAG,MAAM,CAAC;IAC9C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,GAAG,MAAM,CAAC;IAC9C,OAAO,IAAI,GAAG,MAAM,CAAC;AACvB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;IACjC,MAAM,YAAY,GAAG,QAAQ,GAAG,GAAG,CAAC;IACpC,MAAM,UAAU,GACd,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC;QACtD,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU;QAChC,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,MAAM,EAAE,IAAI,SAAS;gBAAE,OAAO,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC7D,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACzC,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAChC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC;gBAChD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC3C,SAAS,GAAG,CAAC,CAAC;gBACd,SAAS,IAAI,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,SAAS,IAAI,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QACD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC3C,KAAK,IAAI,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,KAAK,CAAC;QAAE,KAAK,GAAG,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,MAAM,QAAQ,GAAG,KAAK,GAAG,YAAY,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC;IAEjE,OAAO;QACL,QAAQ;QACR,SAAS;QACT,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC1C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;QAC5C,KAAK;QACL,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,6EAA6E;KACpF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-implemented.d.ts","sourceRoot":"","sources":["../../src/core/not-implemented.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,eAAO,MAAM,2BAA2B,GAAI,QAAQ,MAAM,EAAE,gBAAiB,KAAG,aAa9E,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { err } from './schema.js';
|
|
2
|
+
export const createNotImplementedAdapter = (format, version = '0.0.0') => ({
|
|
3
|
+
format,
|
|
4
|
+
version,
|
|
5
|
+
async init() {
|
|
6
|
+
return Promise.resolve(err('FORMAT_NOT_IMPLEMENTED', `The ${format} adapter is reserved but not implemented`));
|
|
7
|
+
},
|
|
8
|
+
async execute() {
|
|
9
|
+
return Promise.resolve(err('FORMAT_NOT_IMPLEMENTED', `The ${format} adapter is reserved but not implemented`));
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=not-implemented.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-implemented.js","sourceRoot":"","sources":["../../src/core/not-implemented.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAc,EAAE,OAAO,GAAG,OAAO,EAAiB,EAAE,CAAC,CAAC;IAChG,MAAM;IACN,OAAO;IACP,KAAK,CAAC,IAAI;QACR,OAAO,OAAO,CAAC,OAAO,CACpB,GAAG,CAAC,wBAAwB,EAAE,OAAO,MAAM,0CAA0C,CAAC,CACvF,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,OAAO;QACX,OAAO,OAAO,CAAC,OAAO,CACpB,GAAG,CAAC,wBAAwB,EAAE,OAAO,MAAM,0CAA0C,CAAC,CACvF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|