autokap 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/cursors/macos.svg +4 -0
- package/assets/cursors/windows.svg +15 -0
- package/assets/skill/OPCODE-REFERENCE.md +607 -0
- package/assets/skill/README.md +39 -0
- package/assets/skill/SKILL.md +453 -468
- package/assets/skill/STUDIO-SKILL.md +476 -0
- package/assets/skill/references/examples.md +104 -0
- package/assets/skill/references/interactive-demo.md +225 -0
- package/assets/skill/references/mock-data.md +178 -0
- package/dist/action-verifier.d.ts +29 -0
- package/dist/action-verifier.js +133 -0
- package/dist/agent-action-recovery.d.ts +45 -0
- package/dist/agent-action-recovery.js +370 -0
- package/dist/agent-message-utils.d.ts +21 -0
- package/dist/agent-message-utils.js +77 -0
- package/dist/agent-url-utils.d.ts +30 -0
- package/dist/agent-url-utils.js +138 -0
- package/dist/agent.d.ts +92 -8
- package/dist/agent.js +2936 -781
- package/dist/ak-tree.d.ts +39 -0
- package/dist/ak-tree.js +368 -0
- package/dist/alt-text.d.ts +26 -0
- package/dist/alt-text.js +55 -0
- package/dist/auth-capture.d.ts +17 -0
- package/dist/auth-capture.js +164 -0
- package/dist/benchmark.d.ts +59 -0
- package/dist/benchmark.js +135 -0
- package/dist/browser-bar.d.ts +14 -6
- package/dist/browser-bar.js +145 -8
- package/dist/browser-pool.d.ts +7 -0
- package/dist/browser-pool.js +15 -5
- package/dist/browser-utils.d.ts +31 -0
- package/dist/browser-utils.js +97 -0
- package/dist/browser.d.ts +51 -1
- package/dist/browser.js +1481 -31
- package/dist/capture-alt-text.js +2 -1
- package/dist/capture-language-preflight.js +14 -0
- package/dist/capture-llm-page-identity.js +22 -10
- package/dist/capture-page-identity.d.ts +5 -7
- package/dist/capture-page-identity.js +211 -78
- package/dist/capture-preset-credentials.d.ts +50 -0
- package/dist/capture-preset-credentials.js +127 -0
- package/dist/capture-request-plan.d.ts +2 -2
- package/dist/capture-request-plan.js +64 -16
- package/dist/capture-run-optimizer.js +48 -33
- package/dist/capture-selector-memory.d.ts +5 -0
- package/dist/capture-selector-memory.js +18 -0
- package/dist/capture-strategy.d.ts +36 -0
- package/dist/capture-strategy.js +95 -0
- package/dist/capture-studio-sync.d.ts +1 -0
- package/dist/capture-studio-sync.js +9 -3
- package/dist/capture-surface-contract.d.ts +36 -0
- package/dist/capture-surface-contract.js +299 -0
- package/dist/capture-transition-engine.d.ts +28 -0
- package/dist/capture-transition-engine.js +292 -0
- package/dist/capture-variant-state.d.ts +2 -0
- package/dist/capture-variant-state.js +26 -0
- package/dist/capture-verification.d.ts +35 -0
- package/dist/capture-verification.js +95 -0
- package/dist/capture-viewport-lock.d.ts +48 -0
- package/dist/capture-viewport-lock.js +74 -0
- package/dist/circuit-breaker.d.ts +42 -0
- package/dist/circuit-breaker.js +119 -0
- package/dist/cli-config.d.ts +8 -1
- package/dist/cli-config.js +62 -6
- package/dist/cli-contract.d.ts +15 -0
- package/dist/cli-contract.js +167 -0
- package/dist/cli-runner-local.d.ts +12 -0
- package/dist/cli-runner-local.js +102 -0
- package/dist/cli-runner.d.ts +34 -0
- package/dist/cli-runner.js +433 -0
- package/dist/cli-utils.d.ts +0 -1
- package/dist/cli-utils.js +2 -5
- package/dist/cli.js +1005 -267
- package/dist/clip-orchestrator.js +9 -2
- package/dist/clip-postprocess.js +25 -16
- package/dist/cookie-dismiss.d.ts +2 -0
- package/dist/cookie-dismiss.js +48 -13
- package/dist/cost-logging.d.ts +8 -0
- package/dist/cost-logging.js +160 -46
- package/dist/cost-resolution-monitor.d.ts +16 -0
- package/dist/cost-resolution-monitor.js +34 -0
- package/dist/credential-templates.js +2 -2
- package/dist/cursor-overlay-script.d.ts +6 -0
- package/dist/cursor-overlay-script.js +169 -0
- package/dist/dom-css-purger.d.ts +65 -0
- package/dist/dom-css-purger.js +333 -0
- package/dist/dom-font-inliner.d.ts +45 -0
- package/dist/dom-font-inliner.js +148 -0
- package/dist/dom-patch-resolver.d.ts +52 -0
- package/dist/dom-patch-resolver.js +242 -0
- package/dist/dom-serializer.d.ts +82 -0
- package/dist/dom-serializer.js +378 -0
- package/dist/element-capture.d.ts +1 -41
- package/dist/element-capture.js +202 -446
- package/dist/env-validation.d.ts +5 -0
- package/dist/env-validation.js +29 -0
- package/dist/execution-schema.d.ts +4423 -0
- package/dist/execution-schema.js +507 -0
- package/dist/execution-types.d.ts +886 -0
- package/dist/execution-types.js +65 -0
- package/dist/fonts-loader.d.ts +14 -0
- package/dist/fonts-loader.js +55 -0
- package/dist/hybrid-navigator.js +12 -12
- package/dist/index.d.ts +9 -6
- package/dist/index.js +10 -4
- package/dist/legacy/agent-action-recovery.d.ts +45 -0
- package/dist/legacy/agent-action-recovery.js +370 -0
- package/dist/legacy/agent-message-utils.d.ts +21 -0
- package/dist/legacy/agent-message-utils.js +77 -0
- package/dist/legacy/agent-url-utils.d.ts +30 -0
- package/dist/legacy/agent-url-utils.js +138 -0
- package/dist/legacy/agent.d.ts +226 -0
- package/dist/legacy/agent.js +6666 -0
- package/dist/legacy/clip-orchestrator.d.ts +148 -0
- package/dist/legacy/clip-orchestrator.js +957 -0
- package/dist/legacy/credential-templates.d.ts +5 -0
- package/dist/legacy/credential-templates.js +60 -0
- package/dist/legacy/hybrid-navigator.d.ts +138 -0
- package/dist/legacy/hybrid-navigator.js +468 -0
- package/dist/legacy/llm-usage.d.ts +17 -0
- package/dist/legacy/llm-usage.js +45 -0
- package/dist/legacy/prompt-cache.d.ts +10 -0
- package/dist/legacy/prompt-cache.js +24 -0
- package/dist/legacy/prompts.d.ts +175 -0
- package/dist/legacy/prompts.js +1038 -0
- package/dist/legacy/tools.d.ts +4 -0
- package/dist/legacy/tools.js +216 -0
- package/dist/legacy/video-agent.d.ts +143 -0
- package/dist/legacy/video-agent.js +4788 -0
- package/dist/legacy/video-observation.d.ts +36 -0
- package/dist/legacy/video-observation.js +192 -0
- package/dist/legacy/video-planner.d.ts +12 -0
- package/dist/legacy/video-planner.js +501 -0
- package/dist/legacy/video-prompts.d.ts +37 -0
- package/dist/legacy/video-prompts.js +569 -0
- package/dist/legacy/video-tools.d.ts +3 -0
- package/dist/legacy/video-tools.js +59 -0
- package/dist/legacy/video-variant-state.d.ts +29 -0
- package/dist/legacy/video-variant-state.js +80 -0
- package/dist/legacy/vision-model.d.ts +17 -0
- package/dist/legacy/vision-model.js +74 -0
- package/dist/llm-healer.d.ts +63 -0
- package/dist/llm-healer.js +166 -0
- package/dist/llm-provider.d.ts +29 -0
- package/dist/llm-provider.js +80 -0
- package/dist/logger.d.ts +6 -2
- package/dist/logger.js +15 -1
- package/dist/mockup-html.js +35 -25
- package/dist/mockup.d.ts +95 -2
- package/dist/mockup.js +427 -166
- package/dist/mouse-animation.d.ts +2 -2
- package/dist/mouse-animation.js +34 -20
- package/dist/opcode-actions.d.ts +42 -0
- package/dist/opcode-actions.js +511 -0
- package/dist/opcode-runner.d.ts +51 -0
- package/dist/opcode-runner.js +770 -0
- package/dist/openrouter-client.d.ts +40 -0
- package/dist/openrouter-client.js +16 -0
- package/dist/overlay-engine.d.ts +24 -0
- package/dist/overlay-engine.js +176 -0
- package/dist/postcondition.d.ts +16 -0
- package/dist/postcondition.js +269 -0
- package/dist/program-patcher.d.ts +25 -0
- package/dist/program-patcher.js +44 -0
- package/dist/prompts.d.ts +13 -5
- package/dist/prompts.js +224 -351
- package/dist/provider-config.d.ts +12 -0
- package/dist/provider-config.js +15 -0
- package/dist/recovery-chain.d.ts +37 -0
- package/dist/recovery-chain.js +350 -0
- package/dist/remote-browser.d.ts +28 -4
- package/dist/remote-browser.js +60 -5
- package/dist/safari-browser-bar.d.ts +15 -0
- package/dist/safari-browser-bar.js +95 -0
- package/dist/safari-toolbar-asset.d.ts +15 -0
- package/dist/safari-toolbar-asset.js +12 -0
- package/dist/security.d.ts +2 -1
- package/dist/security.js +49 -10
- package/dist/selector-resolver.d.ts +34 -0
- package/dist/selector-resolver.js +181 -0
- package/dist/semantic-resolver.d.ts +35 -0
- package/dist/semantic-resolver.js +161 -0
- package/dist/server-capture-runtime.d.ts +5 -3
- package/dist/server-capture-runtime.js +42 -95
- package/dist/server-credit-usage.d.ts +2 -2
- package/dist/server-project-webhooks.d.ts +15 -1
- package/dist/server-project-webhooks.js +34 -8
- package/dist/server-screenshot-watermark.js +27 -5
- package/dist/session-profile.js +164 -1
- package/dist/sf-pro-symbols.d.ts +1 -0
- package/dist/sf-pro-symbols.js +55 -0
- package/dist/skill-packaging.d.ts +28 -0
- package/dist/skill-packaging.js +169 -0
- package/dist/smart-wait.d.ts +27 -0
- package/dist/smart-wait.js +81 -0
- package/dist/status-bar-render.d.ts +20 -0
- package/dist/status-bar-render.js +410 -0
- package/dist/status-bar.d.ts +9 -0
- package/dist/status-bar.js +298 -14
- package/dist/svg-browser-bar.d.ts +33 -0
- package/dist/svg-browser-bar.js +206 -0
- package/dist/svg-status-bar.d.ts +36 -0
- package/dist/svg-status-bar.js +597 -0
- package/dist/svg-text.d.ts +61 -0
- package/dist/svg-text.js +118 -0
- package/dist/tools.js +89 -451
- package/dist/types.d.ts +240 -5
- package/dist/types.js +23 -1
- package/dist/v2/action-verifier.d.ts +29 -0
- package/dist/v2/action-verifier.js +133 -0
- package/dist/v2/alt-text.d.ts +26 -0
- package/dist/v2/alt-text.js +55 -0
- package/dist/v2/benchmark.d.ts +59 -0
- package/dist/v2/benchmark.js +135 -0
- package/dist/v2/capture-strategy.d.ts +30 -0
- package/dist/v2/capture-strategy.js +67 -0
- package/dist/v2/capture-verification.d.ts +35 -0
- package/dist/v2/capture-verification.js +95 -0
- package/dist/v2/circuit-breaker.d.ts +42 -0
- package/dist/v2/circuit-breaker.js +119 -0
- package/dist/v2/cli-runner-local.d.ts +11 -0
- package/dist/v2/cli-runner-local.js +91 -0
- package/dist/v2/cli-runner.d.ts +34 -0
- package/dist/v2/cli-runner.js +300 -0
- package/dist/v2/compiler-prompts.d.ts +27 -0
- package/dist/v2/compiler-prompts.js +123 -0
- package/dist/v2/compiler.d.ts +37 -0
- package/dist/v2/compiler.js +147 -0
- package/dist/v2/explorer.d.ts +41 -0
- package/dist/v2/explorer.js +56 -0
- package/dist/v2/index.d.ts +37 -0
- package/dist/v2/index.js +31 -0
- package/dist/v2/llm-healer.d.ts +62 -0
- package/dist/v2/llm-healer.js +166 -0
- package/dist/v2/llm-provider.d.ts +29 -0
- package/dist/v2/llm-provider.js +80 -0
- package/dist/v2/opcode-runner.d.ts +47 -0
- package/dist/v2/opcode-runner.js +634 -0
- package/dist/v2/overlay-engine.d.ts +24 -0
- package/dist/v2/overlay-engine.js +150 -0
- package/dist/v2/postcondition.d.ts +16 -0
- package/dist/v2/postcondition.js +249 -0
- package/dist/v2/program-patcher.d.ts +25 -0
- package/dist/v2/program-patcher.js +44 -0
- package/dist/v2/recovery-chain.d.ts +30 -0
- package/dist/v2/recovery-chain.js +368 -0
- package/dist/v2/schema.d.ts +2580 -0
- package/dist/v2/schema.js +295 -0
- package/dist/v2/selector-resolver.d.ts +34 -0
- package/dist/v2/selector-resolver.js +181 -0
- package/dist/v2/semantic-resolver.d.ts +35 -0
- package/dist/v2/semantic-resolver.js +161 -0
- package/dist/v2/smart-wait.d.ts +27 -0
- package/dist/v2/smart-wait.js +81 -0
- package/dist/v2/types.d.ts +444 -0
- package/dist/v2/types.js +19 -0
- package/dist/v2/web-playwright-local.d.ts +69 -0
- package/dist/v2/web-playwright-local.js +392 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +5 -0
- package/dist/video-agent.js +18 -13
- package/dist/video-planner.js +2 -1
- package/dist/video-prompts.js +3 -3
- package/dist/web-playwright-local.d.ts +126 -0
- package/dist/web-playwright-local.js +819 -0
- package/dist/ws-auth.js +4 -1
- package/dist/ws-broadcast.d.ts +34 -0
- package/dist/ws-broadcast.js +85 -0
- package/dist/ws-connection-limits.d.ts +12 -0
- package/dist/ws-connection-limits.js +44 -0
- package/dist/ws-handler-utils.d.ts +32 -0
- package/dist/ws-handler-utils.js +139 -0
- package/dist/ws-handler.js +294 -164
- package/dist/ws-metrics-server.d.ts +9 -0
- package/dist/ws-metrics-server.js +31 -0
- package/dist/ws-server.js +41 -1
- package/package.json +51 -34
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SVG text rendering via fontkit.
|
|
3
|
+
*
|
|
4
|
+
* Converts text strings to native SVG `<path>` elements by laying out glyphs
|
|
5
|
+
* with fontkit and serializing each glyph's vector path. This avoids depending
|
|
6
|
+
* on a system font installation or any HTML rendering layer (no Playwright).
|
|
7
|
+
*
|
|
8
|
+
* Coordinate system:
|
|
9
|
+
* - SVG uses Y-down. Font glyphs use Y-up with the baseline at y=0.
|
|
10
|
+
* - We flip Y while serializing each glyph's path commands.
|
|
11
|
+
* - The caller passes a baseline Y position; glyphs are placed relative to it.
|
|
12
|
+
*
|
|
13
|
+
* Vertical alignment helper:
|
|
14
|
+
* - Use `baselineForCenteredText` to compute the baseline Y so the cap-height
|
|
15
|
+
* visual centroid lines up with the parent box's vertical centre. This
|
|
16
|
+
* matches what `display:flex; align-items:center; line-height:1` produces
|
|
17
|
+
* in CSS for the SF Pro status bar layouts.
|
|
18
|
+
*/
|
|
19
|
+
import { type SfFontId } from './fonts-loader.js';
|
|
20
|
+
export interface MeasuredText {
|
|
21
|
+
/** SVG path data string for the entire run, ready for `<path d="...">`. */
|
|
22
|
+
pathData: string;
|
|
23
|
+
/** Visual width in CSS pixels (includes glyph advances + kerning). */
|
|
24
|
+
width: number;
|
|
25
|
+
/** Cap height in CSS pixels at this font size. */
|
|
26
|
+
capHeight: number;
|
|
27
|
+
/** Ascent in CSS pixels at this font size. */
|
|
28
|
+
ascent: number;
|
|
29
|
+
/** Descent in CSS pixels at this font size (positive). */
|
|
30
|
+
descent: number;
|
|
31
|
+
}
|
|
32
|
+
export interface TextRunOptions {
|
|
33
|
+
text: string;
|
|
34
|
+
fontId: SfFontId;
|
|
35
|
+
fontSize: number;
|
|
36
|
+
/** Optional letter-spacing in CSS pixels (positive widens, negative tightens). */
|
|
37
|
+
letterSpacing?: number;
|
|
38
|
+
/** Origin X (left of the first glyph's pen position). Defaults to 0. */
|
|
39
|
+
x?: number;
|
|
40
|
+
/** Baseline Y for the run. Defaults to `fontSize` (top-aligned). */
|
|
41
|
+
baselineY?: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Lay out a text run and serialize each glyph's vector path into a single
|
|
45
|
+
* SVG path data string. Y is flipped on the fly so the result is ready to
|
|
46
|
+
* embed in an SVG document with the standard top-left origin.
|
|
47
|
+
*/
|
|
48
|
+
export declare function layoutText(opts: TextRunOptions): MeasuredText;
|
|
49
|
+
/** Measure a text run without producing path data. */
|
|
50
|
+
export declare function measureText(opts: TextRunOptions): {
|
|
51
|
+
width: number;
|
|
52
|
+
capHeight: number;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Compute the baseline Y so the cap-height visual centroid sits at parentY +
|
|
56
|
+
* parentH/2. This is what `align-items:center; line-height:1` does for short
|
|
57
|
+
* runs of digits / latin in SF Pro at status-bar sizes.
|
|
58
|
+
*/
|
|
59
|
+
export declare function baselineForCenteredText(parentY: number, parentH: number, fontId: SfFontId, fontSize: number): number;
|
|
60
|
+
/** Default font id for SF Pro at status-bar sizes. */
|
|
61
|
+
export declare function pickStatusBarFontId(weight?: 'regular' | 'semibold'): SfFontId;
|
package/dist/svg-text.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SVG text rendering via fontkit.
|
|
3
|
+
*
|
|
4
|
+
* Converts text strings to native SVG `<path>` elements by laying out glyphs
|
|
5
|
+
* with fontkit and serializing each glyph's vector path. This avoids depending
|
|
6
|
+
* on a system font installation or any HTML rendering layer (no Playwright).
|
|
7
|
+
*
|
|
8
|
+
* Coordinate system:
|
|
9
|
+
* - SVG uses Y-down. Font glyphs use Y-up with the baseline at y=0.
|
|
10
|
+
* - We flip Y while serializing each glyph's path commands.
|
|
11
|
+
* - The caller passes a baseline Y position; glyphs are placed relative to it.
|
|
12
|
+
*
|
|
13
|
+
* Vertical alignment helper:
|
|
14
|
+
* - Use `baselineForCenteredText` to compute the baseline Y so the cap-height
|
|
15
|
+
* visual centroid lines up with the parent box's vertical centre. This
|
|
16
|
+
* matches what `display:flex; align-items:center; line-height:1` produces
|
|
17
|
+
* in CSS for the SF Pro status bar layouts.
|
|
18
|
+
*/
|
|
19
|
+
import { getFont } from './fonts-loader.js';
|
|
20
|
+
/**
|
|
21
|
+
* Lay out a text run and serialize each glyph's vector path into a single
|
|
22
|
+
* SVG path data string. Y is flipped on the fly so the result is ready to
|
|
23
|
+
* embed in an SVG document with the standard top-left origin.
|
|
24
|
+
*/
|
|
25
|
+
export function layoutText(opts) {
|
|
26
|
+
const font = getFont(opts.fontId);
|
|
27
|
+
const fontSize = opts.fontSize;
|
|
28
|
+
const scale = fontSize / font.unitsPerEm;
|
|
29
|
+
const x0 = opts.x ?? 0;
|
|
30
|
+
const baselineY = opts.baselineY ?? fontSize;
|
|
31
|
+
const letterSpacing = opts.letterSpacing ?? 0;
|
|
32
|
+
const run = font.layout(opts.text);
|
|
33
|
+
let cursorX = x0;
|
|
34
|
+
let pathData = '';
|
|
35
|
+
for (let i = 0; i < run.glyphs.length; i++) {
|
|
36
|
+
const glyph = run.glyphs[i];
|
|
37
|
+
const pos = run.positions[i];
|
|
38
|
+
const glyphX = cursorX + pos.xOffset * scale;
|
|
39
|
+
const glyphY = baselineY - pos.yOffset * scale; // flipped
|
|
40
|
+
pathData += pathToSvgData(glyph.path, scale, glyphX, glyphY);
|
|
41
|
+
cursorX += pos.xAdvance * scale + letterSpacing;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
pathData,
|
|
45
|
+
width: cursorX - x0,
|
|
46
|
+
capHeight: font.capHeight * scale,
|
|
47
|
+
ascent: font.ascent * scale,
|
|
48
|
+
descent: -font.descent * scale,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** Measure a text run without producing path data. */
|
|
52
|
+
export function measureText(opts) {
|
|
53
|
+
const font = getFont(opts.fontId);
|
|
54
|
+
const fontSize = opts.fontSize;
|
|
55
|
+
const scale = fontSize / font.unitsPerEm;
|
|
56
|
+
const letterSpacing = opts.letterSpacing ?? 0;
|
|
57
|
+
const run = font.layout(opts.text);
|
|
58
|
+
let width = 0;
|
|
59
|
+
for (let i = 0; i < run.positions.length; i++) {
|
|
60
|
+
width += run.positions[i].xAdvance * scale + letterSpacing;
|
|
61
|
+
}
|
|
62
|
+
return { width, capHeight: font.capHeight * scale };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Compute the baseline Y so the cap-height visual centroid sits at parentY +
|
|
66
|
+
* parentH/2. This is what `align-items:center; line-height:1` does for short
|
|
67
|
+
* runs of digits / latin in SF Pro at status-bar sizes.
|
|
68
|
+
*/
|
|
69
|
+
export function baselineForCenteredText(parentY, parentH, fontId, fontSize) {
|
|
70
|
+
const font = getFont(fontId);
|
|
71
|
+
const cap = font.capHeight * (fontSize / font.unitsPerEm);
|
|
72
|
+
return parentY + (parentH + cap) / 2;
|
|
73
|
+
}
|
|
74
|
+
/** Default font id for SF Pro at status-bar sizes. */
|
|
75
|
+
export function pickStatusBarFontId(weight = 'regular') {
|
|
76
|
+
return weight === 'semibold' ? 'text-semibold' : 'text-regular';
|
|
77
|
+
}
|
|
78
|
+
// ── Internal: glyph path → SVG path data ──────────────────────────────
|
|
79
|
+
/**
|
|
80
|
+
* Convert a fontkit Path to SVG path data, scaled by `scale` and translated
|
|
81
|
+
* to (dx, dy). Y is flipped on every coordinate (font Y-up → SVG Y-down).
|
|
82
|
+
*
|
|
83
|
+
* fontkit's Path.toSVG() returns the data in font units with Y-up; we'd then
|
|
84
|
+
* need a wrapping `<g transform="...">` to place each glyph. Doing the math
|
|
85
|
+
* inline produces a single flat path string with no nested groups, which Sharp
|
|
86
|
+
* (librsvg) handles slightly faster and which is easier to debug.
|
|
87
|
+
*/
|
|
88
|
+
function pathToSvgData(path, scale, dx, dy) {
|
|
89
|
+
let s = '';
|
|
90
|
+
for (const cmd of path.commands) {
|
|
91
|
+
const a = cmd.args;
|
|
92
|
+
switch (cmd.command) {
|
|
93
|
+
case 'moveTo':
|
|
94
|
+
s += `M${fmt(dx + a[0] * scale)},${fmt(dy - a[1] * scale)}`;
|
|
95
|
+
break;
|
|
96
|
+
case 'lineTo':
|
|
97
|
+
s += `L${fmt(dx + a[0] * scale)},${fmt(dy - a[1] * scale)}`;
|
|
98
|
+
break;
|
|
99
|
+
case 'quadraticCurveTo':
|
|
100
|
+
s += `Q${fmt(dx + a[0] * scale)},${fmt(dy - a[1] * scale)} ${fmt(dx + a[2] * scale)},${fmt(dy - a[3] * scale)}`;
|
|
101
|
+
break;
|
|
102
|
+
case 'bezierCurveTo':
|
|
103
|
+
s += `C${fmt(dx + a[0] * scale)},${fmt(dy - a[1] * scale)} ${fmt(dx + a[2] * scale)},${fmt(dy - a[3] * scale)} ${fmt(dx + a[4] * scale)},${fmt(dy - a[5] * scale)}`;
|
|
104
|
+
break;
|
|
105
|
+
case 'closePath':
|
|
106
|
+
s += 'Z';
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return s;
|
|
111
|
+
}
|
|
112
|
+
/** Round to 3 decimals to keep generated SVGs compact. */
|
|
113
|
+
function fmt(n) {
|
|
114
|
+
return Number.isInteger(n) ? String(n) : (Math.round(n * 1000) / 1000).toString();
|
|
115
|
+
}
|
|
116
|
+
// Keep Font import side-effect free.
|
|
117
|
+
void null;
|
|
118
|
+
//# sourceMappingURL=svg-text.js.map
|