@12ui/design 0.2.56 → 0.2.58
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/SKILL.md +1 -1
- package/dist/artifact-materializer.d.ts.map +1 -1
- package/dist/artifact-materializer.js +4 -1
- package/dist/artifact-materializer.js.map +1 -1
- package/dist/branch-client.d.ts +86 -2
- package/dist/branch-client.d.ts.map +1 -1
- package/dist/branch-client.js +31 -0
- package/dist/branch-client.js.map +1 -1
- package/dist/cli-arguments.d.ts.map +1 -1
- package/dist/cli-arguments.js +3 -1
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli-capabilities.d.ts +1 -1
- package/dist/cli-conversion-derivation.js +2 -2
- package/dist/cli-conversion-derivation.js.map +1 -1
- package/dist/cli-convert-command.d.ts +2 -0
- package/dist/cli-convert-command.d.ts.map +1 -1
- package/dist/cli-convert-command.js +176 -38
- package/dist/cli-convert-command.js.map +1 -1
- package/dist/cli-corpus-command.js +2 -2
- package/dist/cli-corpus-command.js.map +1 -1
- package/dist/cli-corpus-evidence.d.ts.map +1 -1
- package/dist/cli-corpus-evidence.js +2 -1
- package/dist/cli-corpus-evidence.js.map +1 -1
- package/dist/cli-corpus-reference-downloads.d.ts +1 -0
- package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
- package/dist/cli-corpus-reference-downloads.js +13 -3
- package/dist/cli-corpus-reference-downloads.js.map +1 -1
- package/dist/cli-corpus-types.d.ts +2 -0
- package/dist/cli-corpus-types.d.ts.map +1 -1
- package/dist/cli-draft-command.d.ts +9 -0
- package/dist/cli-draft-command.d.ts.map +1 -1
- package/dist/cli-draft-command.js +26 -1
- package/dist/cli-draft-command.js.map +1 -1
- package/dist/cli-help/design.d.ts +7 -4
- package/dist/cli-help/design.d.ts.map +1 -1
- package/dist/cli-help/design.js +23 -6
- package/dist/cli-help/design.js.map +1 -1
- package/dist/cli-help/index.d.ts +9 -6
- package/dist/cli-help/index.d.ts.map +1 -1
- package/dist/cli-help/meta.d.ts +2 -2
- package/dist/cli-help/meta.d.ts.map +1 -1
- package/dist/cli-help/meta.js +4 -1
- package/dist/cli-help/meta.js.map +1 -1
- package/dist/cli-improve-command.d.ts.map +1 -1
- package/dist/cli-improve-command.js +273 -28
- package/dist/cli-improve-command.js.map +1 -1
- package/dist/cli-redesign-command.d.ts.map +1 -1
- package/dist/cli-redesign-command.js +97 -24
- package/dist/cli-redesign-command.js.map +1 -1
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +13 -3
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-spend-command.d.ts +12 -1
- package/dist/cli-spend-command.d.ts.map +1 -1
- package/dist/cli-spend-command.js +94 -2
- package/dist/cli-spend-command.js.map +1 -1
- package/dist/cli-usage.js +5 -5
- package/dist/cli-usage.js.map +1 -1
- package/dist/concept-input.d.ts +6 -56
- package/dist/concept-input.d.ts.map +1 -1
- package/dist/concept-input.js +6 -65
- package/dist/concept-input.js.map +1 -1
- package/dist/conversion-client.d.ts +92 -3
- package/dist/conversion-client.d.ts.map +1 -1
- package/dist/conversion-client.js +317 -23
- package/dist/conversion-client.js.map +1 -1
- package/dist/corpus-client.d.ts +7 -1
- package/dist/corpus-client.d.ts.map +1 -1
- package/dist/corpus-client.js +3 -2
- package/dist/corpus-client.js.map +1 -1
- package/dist/corpus-reference-download-retry.d.ts +68 -0
- package/dist/corpus-reference-download-retry.d.ts.map +1 -0
- package/dist/corpus-reference-download-retry.js +123 -0
- package/dist/corpus-reference-download-retry.js.map +1 -0
- package/dist/corpus-request-error.d.ts +17 -0
- package/dist/corpus-request-error.d.ts.map +1 -0
- package/dist/corpus-request-error.js +21 -0
- package/dist/corpus-request-error.js.map +1 -0
- package/dist/draft-run.d.ts +15 -0
- package/dist/draft-run.d.ts.map +1 -1
- package/dist/draft-run.js +32 -5
- package/dist/draft-run.js.map +1 -1
- package/dist/draft-workspace.d.ts +2 -1
- package/dist/draft-workspace.d.ts.map +1 -1
- package/dist/draft-workspace.js.map +1 -1
- package/dist/hosted-draft-identity.d.ts +9 -0
- package/dist/hosted-draft-identity.d.ts.map +1 -1
- package/dist/hosted-draft-identity.js +2 -0
- package/dist/hosted-draft-identity.js.map +1 -1
- package/dist/improve-added-specs.d.ts +12 -31
- package/dist/improve-added-specs.d.ts.map +1 -1
- package/dist/improve-added-specs.js +64 -152
- package/dist/improve-added-specs.js.map +1 -1
- package/dist/improve-artifact-writer.d.ts +13 -0
- package/dist/improve-artifact-writer.d.ts.map +1 -0
- package/dist/improve-artifact-writer.js +27 -0
- package/dist/improve-artifact-writer.js.map +1 -0
- package/dist/improve-bootstrap-history.d.ts +21 -0
- package/dist/improve-bootstrap-history.d.ts.map +1 -0
- package/dist/improve-bootstrap-history.js +43 -0
- package/dist/improve-bootstrap-history.js.map +1 -0
- package/dist/improve-bootstrap-secret.d.ts +35 -0
- package/dist/improve-bootstrap-secret.d.ts.map +1 -0
- package/dist/improve-bootstrap-secret.js +61 -0
- package/dist/improve-bootstrap-secret.js.map +1 -0
- package/dist/improve-branch-stage.d.ts +10 -0
- package/dist/improve-branch-stage.d.ts.map +1 -0
- package/dist/improve-branch-stage.js +325 -0
- package/dist/improve-branch-stage.js.map +1 -0
- package/dist/improve-capture-redirect.d.ts +65 -0
- package/dist/improve-capture-redirect.d.ts.map +1 -0
- package/dist/improve-capture-redirect.js +85 -0
- package/dist/improve-capture-redirect.js.map +1 -0
- package/dist/improve-capture-words.d.ts +43 -0
- package/dist/improve-capture-words.d.ts.map +1 -0
- package/dist/improve-capture-words.js +25 -0
- package/dist/improve-capture-words.js.map +1 -0
- package/dist/improve-concept.d.ts +6 -7
- package/dist/improve-concept.d.ts.map +1 -1
- package/dist/improve-concept.js +12 -38
- package/dist/improve-concept.js.map +1 -1
- package/dist/improve-conversion-attempts.d.ts +21 -9
- package/dist/improve-conversion-attempts.d.ts.map +1 -1
- package/dist/improve-conversion-attempts.js +6 -1
- package/dist/improve-conversion-attempts.js.map +1 -1
- package/dist/improve-conversion-stage.d.ts +20 -2
- package/dist/improve-conversion-stage.d.ts.map +1 -1
- package/dist/improve-conversion-stage.js +386 -178
- package/dist/improve-conversion-stage.js.map +1 -1
- package/dist/improve-convert-progress.d.ts +44 -0
- package/dist/improve-convert-progress.d.ts.map +1 -0
- package/dist/improve-convert-progress.js +47 -0
- package/dist/improve-convert-progress.js.map +1 -0
- package/dist/improve-convert-resilience.d.ts +96 -58
- package/dist/improve-convert-resilience.d.ts.map +1 -1
- package/dist/improve-convert-resilience.js +128 -72
- package/dist/improve-convert-resilience.js.map +1 -1
- package/dist/improve-core/concept-input.d.ts +80 -0
- package/dist/improve-core/concept-input.d.ts.map +1 -0
- package/dist/improve-core/concept-input.js +92 -0
- package/dist/improve-core/concept-input.js.map +1 -0
- package/dist/improve-core/improve-added-specs.d.ts +62 -0
- package/dist/improve-core/improve-added-specs.d.ts.map +1 -0
- package/dist/improve-core/improve-added-specs.js +160 -0
- package/dist/improve-core/improve-added-specs.js.map +1 -0
- package/dist/improve-core/improve-artifacts.d.ts +18 -0
- package/dist/improve-core/improve-artifacts.d.ts.map +1 -0
- package/dist/improve-core/improve-artifacts.js +4 -0
- package/dist/improve-core/improve-artifacts.js.map +1 -0
- package/dist/improve-core/improve-concept.d.ts +7 -0
- package/dist/improve-core/improve-concept.d.ts.map +1 -0
- package/dist/improve-core/improve-concept.js +185 -0
- package/dist/improve-core/improve-concept.js.map +1 -0
- package/dist/improve-core/improve-discovery.d.ts +84 -0
- package/dist/improve-core/improve-discovery.d.ts.map +1 -0
- package/dist/improve-core/improve-discovery.js +154 -0
- package/dist/improve-core/improve-discovery.js.map +1 -0
- package/dist/improve-core/improve-dom-anchor.d.ts.map +1 -0
- package/dist/{improve-dom-anchor.js → improve-core/improve-dom-anchor.js} +2 -0
- package/dist/improve-core/improve-dom-anchor.js.map +1 -0
- package/dist/improve-core/improve-dom-diff.d.ts +59 -0
- package/dist/improve-core/improve-dom-diff.d.ts.map +1 -0
- package/dist/improve-core/improve-dom-diff.js +151 -0
- package/dist/improve-core/improve-dom-diff.js.map +1 -0
- package/dist/improve-core/improve-dom-extract.d.ts.map +1 -0
- package/dist/{improve-dom-extract.js → improve-core/improve-dom-extract.js} +2 -0
- package/dist/improve-core/improve-dom-extract.js.map +1 -0
- package/dist/improve-core/improve-dom-gate.d.ts +49 -0
- package/dist/improve-core/improve-dom-gate.d.ts.map +1 -0
- package/dist/improve-core/improve-dom-gate.js +99 -0
- package/dist/improve-core/improve-dom-gate.js.map +1 -0
- package/dist/improve-core/improve-dom-neighbour.d.ts.map +1 -0
- package/dist/{improve-dom-neighbour.js → improve-core/improve-dom-neighbour.js} +2 -0
- package/dist/improve-core/improve-dom-neighbour.js.map +1 -0
- package/dist/improve-core/improve-dom-scale.d.ts.map +1 -0
- package/dist/{improve-dom-scale.js → improve-core/improve-dom-scale.js} +2 -0
- package/dist/improve-core/improve-dom-scale.js.map +1 -0
- package/dist/improve-core/improve-icon-svg.d.ts +29 -0
- package/dist/improve-core/improve-icon-svg.d.ts.map +1 -0
- package/dist/improve-core/improve-icon-svg.js +85 -0
- package/dist/improve-core/improve-icon-svg.js.map +1 -0
- package/dist/improve-core/improve-kit-asset-model.d.ts +177 -0
- package/dist/improve-core/improve-kit-asset-model.d.ts.map +1 -0
- package/dist/improve-core/improve-kit-asset-model.js +269 -0
- package/dist/improve-core/improve-kit-asset-model.js.map +1 -0
- package/dist/improve-core/improve-layerdoc-diff.d.ts.map +1 -0
- package/dist/{improve-layerdoc-diff.js → improve-core/improve-layerdoc-diff.js} +2 -0
- package/dist/improve-core/improve-layerdoc-diff.js.map +1 -0
- package/dist/{improve-layerdoc-types.d.ts → improve-core/improve-layerdoc-types.d.ts} +9 -0
- package/dist/improve-core/improve-layerdoc-types.d.ts.map +1 -0
- package/dist/improve-core/improve-layerdoc-types.js +4 -0
- package/dist/improve-core/improve-layerdoc-types.js.map +1 -0
- package/dist/improve-core/improve-page-words.d.ts +180 -0
- package/dist/improve-core/improve-page-words.d.ts.map +1 -0
- package/dist/improve-core/improve-page-words.js +303 -0
- package/dist/improve-core/improve-page-words.js.map +1 -0
- package/dist/{improve-plan-annotated-render.d.ts → improve-core/improve-plan-annotated-render.d.ts} +19 -2
- package/dist/improve-core/improve-plan-annotated-render.d.ts.map +1 -0
- package/dist/{improve-plan-annotated-render.js → improve-core/improve-plan-annotated-render.js} +77 -28
- package/dist/improve-core/improve-plan-annotated-render.js.map +1 -0
- package/dist/improve-core/improve-plan-annotator.d.ts +34 -0
- package/dist/improve-core/improve-plan-annotator.d.ts.map +1 -0
- package/dist/improve-core/improve-plan-annotator.js +52 -0
- package/dist/improve-core/improve-plan-annotator.js.map +1 -0
- package/dist/{improve-plan-render.d.ts → improve-core/improve-plan-render.d.ts} +2 -1
- package/dist/improve-core/improve-plan-render.d.ts.map +1 -0
- package/dist/{improve-plan-render.js → improve-core/improve-plan-render.js} +7 -1
- package/dist/improve-core/improve-plan-render.js.map +1 -0
- package/dist/improve-core/improve-plan-vector-keep.d.ts +29 -0
- package/dist/improve-core/improve-plan-vector-keep.d.ts.map +1 -0
- package/dist/improve-core/improve-plan-vector-keep.js +68 -0
- package/dist/improve-core/improve-plan-vector-keep.js.map +1 -0
- package/dist/{improve-raster-layers-section.d.ts → improve-core/improve-raster-layers-section.d.ts} +9 -1
- package/dist/improve-core/improve-raster-layers-section.d.ts.map +1 -0
- package/dist/{improve-raster-layers-section.js → improve-core/improve-raster-layers-section.js} +5 -2
- package/dist/improve-core/improve-raster-layers-section.js.map +1 -0
- package/dist/improve-core/improve-refusal.d.ts +6 -0
- package/dist/improve-core/improve-refusal.d.ts.map +1 -0
- package/dist/improve-core/improve-refusal.js +27 -0
- package/dist/improve-core/improve-refusal.js.map +1 -0
- package/dist/improve-core/improve-retain.d.ts +121 -0
- package/dist/improve-core/improve-retain.d.ts.map +1 -0
- package/dist/improve-core/improve-retain.js +115 -0
- package/dist/improve-core/improve-retain.js.map +1 -0
- package/dist/improve-core/improve-site-plan.d.ts +75 -0
- package/dist/improve-core/improve-site-plan.d.ts.map +1 -0
- package/dist/improve-core/improve-site-plan.js +135 -0
- package/dist/improve-core/improve-site-plan.js.map +1 -0
- package/dist/improve-core/improve-site-shell.d.ts +56 -0
- package/dist/improve-core/improve-site-shell.d.ts.map +1 -0
- package/dist/improve-core/improve-site-shell.js +152 -0
- package/dist/improve-core/improve-site-shell.js.map +1 -0
- package/dist/improve-core/improve-site-tokens.d.ts +44 -0
- package/dist/improve-core/improve-site-tokens.d.ts.map +1 -0
- package/dist/improve-core/improve-site-tokens.js +87 -0
- package/dist/improve-core/improve-site-tokens.js.map +1 -0
- package/dist/improve-core/improve-source-hints.d.ts +25 -0
- package/dist/improve-core/improve-source-hints.d.ts.map +1 -0
- package/dist/improve-core/improve-source-hints.js +17 -0
- package/dist/improve-core/improve-source-hints.js.map +1 -0
- package/dist/{improve-token-patch.d.ts → improve-core/improve-token-patch.d.ts} +2 -0
- package/dist/improve-core/improve-token-patch.d.ts.map +1 -0
- package/dist/{improve-token-patch.js → improve-core/improve-token-patch.js} +25 -5
- package/dist/improve-core/improve-token-patch.js.map +1 -0
- package/dist/improve-core/index.d.ts +47 -0
- package/dist/improve-core/index.d.ts.map +1 -0
- package/dist/improve-core/index.js +49 -0
- package/dist/improve-core/index.js.map +1 -0
- package/dist/improve-delivery-stages.d.ts +6 -0
- package/dist/improve-delivery-stages.d.ts.map +1 -1
- package/dist/improve-delivery-stages.js +91 -6
- package/dist/improve-delivery-stages.js.map +1 -1
- package/dist/improve-dom-diff.d.ts +8 -24
- package/dist/improve-dom-diff.d.ts.map +1 -1
- package/dist/improve-dom-diff.js +23 -123
- package/dist/improve-dom-diff.js.map +1 -1
- package/dist/improve-dom-gate.d.ts +1 -18
- package/dist/improve-dom-gate.d.ts.map +1 -1
- package/dist/improve-dom-gate.js +1 -46
- package/dist/improve-dom-gate.js.map +1 -1
- package/dist/improve-generation-stages.d.ts +0 -2
- package/dist/improve-generation-stages.d.ts.map +1 -1
- package/dist/improve-generation-stages.js +191 -15
- package/dist/improve-generation-stages.js.map +1 -1
- package/dist/improve-kit-assets.d.ts +8 -116
- package/dist/improve-kit-assets.d.ts.map +1 -1
- package/dist/improve-kit-assets.js +9 -229
- package/dist/improve-kit-assets.js.map +1 -1
- package/dist/improve-kit-ignore.d.ts +32 -0
- package/dist/improve-kit-ignore.d.ts.map +1 -0
- package/dist/improve-kit-ignore.js +111 -0
- package/dist/improve-kit-ignore.js.map +1 -0
- package/dist/improve-kit-readme.d.ts +4 -0
- package/dist/improve-kit-readme.d.ts.map +1 -1
- package/dist/improve-kit-readme.js +155 -24
- package/dist/improve-kit-readme.js.map +1 -1
- package/dist/improve-kit-stall.d.ts +51 -3
- package/dist/improve-kit-stall.d.ts.map +1 -1
- package/dist/improve-kit-stall.js +205 -21
- package/dist/improve-kit-stall.js.map +1 -1
- package/dist/improve-kit-status.d.ts +36 -0
- package/dist/improve-kit-status.d.ts.map +1 -1
- package/dist/improve-kit-status.js +82 -7
- package/dist/improve-kit-status.js.map +1 -1
- package/dist/improve-options.d.ts +14 -0
- package/dist/improve-options.d.ts.map +1 -1
- package/dist/improve-options.js +95 -12
- package/dist/improve-options.js.map +1 -1
- package/dist/improve-passthrough-flags.d.ts +8 -0
- package/dist/improve-passthrough-flags.d.ts.map +1 -0
- package/dist/improve-passthrough-flags.js +11 -0
- package/dist/improve-passthrough-flags.js.map +1 -0
- package/dist/improve-plan-annotator.d.ts +13 -2
- package/dist/improve-plan-annotator.d.ts.map +1 -1
- package/dist/improve-plan-annotator.js +35 -37
- package/dist/improve-plan-annotator.js.map +1 -1
- package/dist/improve-pricing-plan.d.ts +3 -0
- package/dist/improve-pricing-plan.d.ts.map +1 -1
- package/dist/improve-pricing-plan.js +33 -5
- package/dist/improve-pricing-plan.js.map +1 -1
- package/dist/improve-recheck.d.ts +9 -0
- package/dist/improve-recheck.d.ts.map +1 -0
- package/dist/improve-recheck.js +200 -0
- package/dist/improve-recheck.js.map +1 -0
- package/dist/improve-reset.d.ts.map +1 -1
- package/dist/improve-reset.js +11 -0
- package/dist/improve-reset.js.map +1 -1
- package/dist/improve-run-summary.d.ts +6 -0
- package/dist/improve-run-summary.d.ts.map +1 -1
- package/dist/improve-run-summary.js +77 -7
- package/dist/improve-run-summary.js.map +1 -1
- package/dist/improve-site-plan.d.ts +57 -0
- package/dist/improve-site-plan.d.ts.map +1 -0
- package/dist/improve-site-plan.js +79 -0
- package/dist/improve-site-plan.js.map +1 -0
- package/dist/improve-site-shell.d.ts +11 -0
- package/dist/improve-site-shell.d.ts.map +1 -0
- package/dist/improve-site-shell.js +24 -0
- package/dist/improve-site-shell.js.map +1 -0
- package/dist/improve-site-stage.d.ts +10 -0
- package/dist/improve-site-stage.d.ts.map +1 -0
- package/dist/improve-site-stage.js +84 -0
- package/dist/improve-site-stage.js.map +1 -0
- package/dist/improve-site-tokens.d.ts +9 -0
- package/dist/improve-site-tokens.d.ts.map +1 -0
- package/dist/improve-site-tokens.js +17 -0
- package/dist/improve-site-tokens.js.map +1 -0
- package/dist/improve-source-hints.d.ts +3 -12
- package/dist/improve-source-hints.d.ts.map +1 -1
- package/dist/improve-source-hints.js +4 -5
- package/dist/improve-source-hints.js.map +1 -1
- package/dist/improve-spend-ledger.d.ts +69 -0
- package/dist/improve-spend-ledger.d.ts.map +1 -0
- package/dist/improve-spend-ledger.js +118 -0
- package/dist/improve-spend-ledger.js.map +1 -0
- package/dist/improve-stage-runners.d.ts +5 -2
- package/dist/improve-stage-runners.d.ts.map +1 -1
- package/dist/improve-stage-runners.js +5 -2
- package/dist/improve-stage-runners.js.map +1 -1
- package/dist/improve-stage-shared.d.ts +49 -2
- package/dist/improve-stage-shared.d.ts.map +1 -1
- package/dist/improve-stage-shared.js +80 -3
- package/dist/improve-stage-shared.js.map +1 -1
- package/dist/improve-stop-handler.d.ts +15 -0
- package/dist/improve-stop-handler.d.ts.map +1 -1
- package/dist/improve-stop-handler.js +74 -3
- package/dist/improve-stop-handler.js.map +1 -1
- package/dist/improve-terminal-event.d.ts.map +1 -1
- package/dist/improve-terminal-event.js +13 -4
- package/dist/improve-terminal-event.js.map +1 -1
- package/dist/improve-workspace.d.ts +282 -9
- package/dist/improve-workspace.d.ts.map +1 -1
- package/dist/improve-workspace.js +250 -78
- package/dist/improve-workspace.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/legacy-skill-catalog.d.ts.map +1 -1
- package/dist/legacy-skill-catalog.js +202 -0
- package/dist/legacy-skill-catalog.js.map +1 -1
- package/dist/mcp-convert.js +1 -1
- package/dist/mcp-convert.js.map +1 -1
- package/dist/redesign-capture.d.ts +146 -15
- package/dist/redesign-capture.d.ts.map +1 -1
- package/dist/redesign-capture.js +182 -65
- package/dist/redesign-capture.js.map +1 -1
- package/dist/redesign-workspace.d.ts +13 -0
- package/dist/redesign-workspace.d.ts.map +1 -1
- package/dist/redesign-workspace.js +14 -0
- package/dist/redesign-workspace.js.map +1 -1
- package/dist/responsive-alternative-materializer.d.ts +24 -0
- package/dist/responsive-alternative-materializer.d.ts.map +1 -0
- package/dist/responsive-alternative-materializer.js +93 -0
- package/dist/responsive-alternative-materializer.js.map +1 -0
- package/dist/result-integrity.d.ts +38 -0
- package/dist/result-integrity.d.ts.map +1 -0
- package/dist/result-integrity.js +46 -0
- package/dist/result-integrity.js.map +1 -0
- package/dist/review-edit-source.d.ts.map +1 -1
- package/dist/review-edit-source.js +6 -2
- package/dist/review-edit-source.js.map +1 -1
- package/dist/review-edit.js +2 -2
- package/dist/review-edit.js.map +1 -1
- package/dist/review-prototype-gap.js +1 -1
- package/dist/review-prototype-gap.js.map +1 -1
- package/dist/spend-run-filter.d.ts +21 -0
- package/dist/spend-run-filter.d.ts.map +1 -0
- package/dist/spend-run-filter.js +65 -0
- package/dist/spend-run-filter.js.map +1 -0
- package/dist/spend-scoped-report-lines.d.ts +4 -0
- package/dist/spend-scoped-report-lines.d.ts.map +1 -0
- package/dist/spend-scoped-report-lines.js +46 -0
- package/dist/spend-scoped-report-lines.js.map +1 -0
- package/dist/spend-scoped-report.d.ts +28 -0
- package/dist/spend-scoped-report.d.ts.map +1 -0
- package/dist/spend-scoped-report.js +45 -0
- package/dist/spend-scoped-report.js.map +1 -0
- package/open-design.json +2 -2
- package/package.json +5 -5
- package/skills/12ui-design/SKILL.md +14 -4
- package/skills/12ui-design/improve.md +67 -5
- package/skills/12ui-design/inspire.md +1 -1
- package/dist/improve-dom-anchor.d.ts.map +0 -1
- package/dist/improve-dom-anchor.js.map +0 -1
- package/dist/improve-dom-extract.d.ts.map +0 -1
- package/dist/improve-dom-extract.js.map +0 -1
- package/dist/improve-dom-neighbour.d.ts.map +0 -1
- package/dist/improve-dom-neighbour.js.map +0 -1
- package/dist/improve-dom-scale.d.ts.map +0 -1
- package/dist/improve-dom-scale.js.map +0 -1
- package/dist/improve-layerdoc-diff.d.ts.map +0 -1
- package/dist/improve-layerdoc-diff.js.map +0 -1
- package/dist/improve-layerdoc-types.d.ts.map +0 -1
- package/dist/improve-layerdoc-types.js +0 -2
- package/dist/improve-layerdoc-types.js.map +0 -1
- package/dist/improve-plan-annotated-render.d.ts.map +0 -1
- package/dist/improve-plan-annotated-render.js.map +0 -1
- package/dist/improve-plan-render.d.ts.map +0 -1
- package/dist/improve-plan-render.js.map +0 -1
- package/dist/improve-raster-layers-section.d.ts.map +0 -1
- package/dist/improve-raster-layers-section.js.map +0 -1
- package/dist/improve-token-patch.d.ts.map +0 -1
- package/dist/improve-token-patch.js.map +0 -1
- /package/dist/{improve-dom-anchor.d.ts → improve-core/improve-dom-anchor.d.ts} +0 -0
- /package/dist/{improve-dom-extract.d.ts → improve-core/improve-dom-extract.d.ts} +0 -0
- /package/dist/{improve-dom-neighbour.d.ts → improve-core/improve-dom-neighbour.d.ts} +0 -0
- /package/dist/{improve-dom-scale.d.ts → improve-core/improve-dom-scale.d.ts} +0 -0
- /package/dist/{improve-layerdoc-diff.d.ts → improve-core/improve-layerdoc-diff.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"improve-dom-neighbour.d.ts","sourceRoot":"","sources":["../../src/improve-core/improve-dom-neighbour.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAoB9E,eAAO,MAAM,uBAAuB,GAAI,MAAM;IAC5C,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7B,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5B,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,KAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAoFvC,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// GENERATED — do not edit. Copied verbatim from
|
|
2
|
+
// packages/layerdoc/src/improve-core by scripts/sync-improve-core.mjs.
|
|
1
3
|
/**
|
|
2
4
|
* Third pass for content-free leaves. Tiny rail icons lose box overlap as two
|
|
3
5
|
* frames drift; their offset from an already content-matched neighbour stays
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"improve-dom-neighbour.js","sourceRoot":"","sources":["../../src/improve-core/improve-dom-neighbour.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"improve-dom-scale.d.ts","sourceRoot":"","sources":["../../src/improve-core/improve-dom-scale.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAa,MAAM,6BAA6B,CAAC;AAcvE,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,EAAE,QAAQ,MAAM,KAAG,OAMlE,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,OAAO,EACjB,oBAAe,EACf,uBAAkB,KACjB,OAsCF,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,KAAK,QAAQ,GAAG,SAAS,EACzB,QAAQ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KACxC,QAAQ,GAAG,SAKD,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// GENERATED — do not edit. Copied verbatim from
|
|
2
|
+
// packages/layerdoc/src/improve-core by scripts/sync-improve-core.mjs.
|
|
1
3
|
import { canvasOfDoc, isRecord } from './improve-layerdoc-diff.js';
|
|
2
4
|
/**
|
|
3
5
|
* DOM and target canvases are matched in fractional coordinates. Fixed and
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"improve-dom-scale.js","sourceRoot":"","sources":["../../src/improve-core/improve-dom-scale.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,uEAAuE;AAEvE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAGnE;;;;;GAKG;AAEH,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,MAAM,GAAG,CAAC,EAAU,EAAE;IAClD,MAAM,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAE,MAAc,EAAW,EAAE,CAAC,CAC5E,OAAO,KAAK,KAAK,QAAQ;IACvB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAc,EAAE,EAAE,CAAC,CAC/D,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,IAAI,CACpD,CAAC;IACF,CAAC,CAAC,KAAK,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,QAAiB,EACjB,WAAW,GAAG,CAAC,EACf,cAAc,GAAG,CAAC,EACT,EAAE;IACX,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE;QAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/D,CAAC;QACD,MAAM,IAAI,GAAG,KAAkB,CAAC;QAChC,MAAM,MAAM,GAAc,EAAE,GAAG,IAAI,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/F,IAAI,IAAI,CAAC,gBAAgB,IAAI,cAAc;YAAE,MAAM,CAAC,aAAa,GAAG,cAAc,CAAC;QACnF,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,WAAW,CAAU,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACtD,MAAM,CAAC,KAAK,CAAC,GAAG;gBACd,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;gBAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;aAC9B,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,KAAK,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAU,EAAE,CAAC;gBAChE,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ;oBAAE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;oBACpD,GAAG;oBACH,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC3C,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,OAAO,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/G,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAyB,EACzB,MAAyC,EACnB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;CACjC,CAAC,CAAC,CAAC,SAAS,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** The declared colour of an icon layer, or nothing when none is usable. */
|
|
2
|
+
export declare const improveDeclaredIconColor: (value: unknown) => string | undefined;
|
|
3
|
+
export type ImproveIconSvgFile = {
|
|
4
|
+
/** File name inside `plan/assets/`. */
|
|
5
|
+
name: string;
|
|
6
|
+
svg: string;
|
|
7
|
+
/** `img` is safe as an external file; `inline` needs a colour at the call site. */
|
|
8
|
+
usage: 'img' | 'inline';
|
|
9
|
+
};
|
|
10
|
+
export type ImproveIconSvgVariants = {
|
|
11
|
+
files: ImproveIconSvgFile[];
|
|
12
|
+
/** The file the Added spec names as the asset. */
|
|
13
|
+
primary: ImproveIconSvgFile;
|
|
14
|
+
/** The `currentColor` sibling, when one was written. */
|
|
15
|
+
inline?: ImproveIconSvgFile;
|
|
16
|
+
color?: string;
|
|
17
|
+
/** One sentence for the spec and the plan: which file goes where. */
|
|
18
|
+
note: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* The files to write for one icon layer. `stem` is the asset name without its
|
|
22
|
+
* extension, e.g. `added-014-user`.
|
|
23
|
+
*/
|
|
24
|
+
export declare const improveIconSvgVariants: (args: {
|
|
25
|
+
svg: string;
|
|
26
|
+
color: unknown;
|
|
27
|
+
stem: string;
|
|
28
|
+
}) => ImproveIconSvgVariants;
|
|
29
|
+
//# sourceMappingURL=improve-icon-svg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"improve-icon-svg.d.ts","sourceRoot":"","sources":["../../src/improve-core/improve-icon-svg.ts"],"names":[],"mappings":"AAiCA,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,SAKlE,CAAC;AAMF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,mFAAmF;IACnF,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,kDAAkD;IAClD,OAAO,EAAE,kBAAkB,CAAC;IAC5B,wDAAwD;IACxD,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,KAAG,sBAsCH,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// GENERATED — do not edit. Copied verbatim from
|
|
2
|
+
// packages/layerdoc/src/improve-core by scripts/sync-improve-core.mjs.
|
|
3
|
+
/**
|
|
4
|
+
* Icon SVGs a lane can actually ship (F30).
|
|
5
|
+
*
|
|
6
|
+
* The corpus glyph a LayerDoc carries in `iconSvg` paints with
|
|
7
|
+
* `currentColor`, which resolves against the *referencing* document. Written
|
|
8
|
+
* to `plan/assets/` and used the way the kit README tells a lane to use an
|
|
9
|
+
* asset — an external `<img>`, a `background-image`, a `url()` — there is no
|
|
10
|
+
* inherited colour, so every planned accent collapsed to black: two wave-2
|
|
11
|
+
* lanes shipped black icons on a dark rail before catching it at the
|
|
12
|
+
* screenshot step, and both invented CSS masks independently.
|
|
13
|
+
*
|
|
14
|
+
* The colour is not a guess: the icon layer declares it (`color`), so the
|
|
15
|
+
* plan writes that colour into an `<img>`-safe file and keeps the
|
|
16
|
+
* `currentColor` original beside it as `-inline.svg` for the inline and mask
|
|
17
|
+
* uses where inheriting is the point. When the design declares no colour
|
|
18
|
+
* there is nothing to plumb, so only the inline variant is written and the
|
|
19
|
+
* spec says so rather than shipping a file that renders black.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Hex, functional, or a bare CSS ident. The pattern excludes quotes, angle
|
|
23
|
+
* brackets and ampersands, so a value that passes is safe in an attribute.
|
|
24
|
+
*/
|
|
25
|
+
const COLOR_FORM = /^(?:#[0-9a-f]{3,8}|(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([-0-9a-z%.,/ ]*\)|[a-z]{3,20})$/iu;
|
|
26
|
+
/** Names that inherit or paint nothing: they cannot colour a standalone file. */
|
|
27
|
+
const UNUSABLE = new Set([
|
|
28
|
+
'currentcolor', 'inherit', 'initial', 'unset', 'revert', 'revert-layer', 'transparent', 'none',
|
|
29
|
+
]);
|
|
30
|
+
/** The declared colour of an icon layer, or nothing when none is usable. */
|
|
31
|
+
export const improveDeclaredIconColor = (value) => {
|
|
32
|
+
if (typeof value !== 'string')
|
|
33
|
+
return undefined;
|
|
34
|
+
const trimmed = value.trim();
|
|
35
|
+
if (!trimmed || !COLOR_FORM.test(trimmed))
|
|
36
|
+
return undefined;
|
|
37
|
+
return UNUSABLE.has(trimmed.toLowerCase()) ? undefined : trimmed;
|
|
38
|
+
};
|
|
39
|
+
/** Separate literals: a `/g/` regex carries `lastIndex` between `test` calls. */
|
|
40
|
+
const HAS_CURRENT_COLOR = /currentcolor/iu;
|
|
41
|
+
const EVERY_CURRENT_COLOR = /currentcolor/giu;
|
|
42
|
+
/**
|
|
43
|
+
* The files to write for one icon layer. `stem` is the asset name without its
|
|
44
|
+
* extension, e.g. `added-014-user`.
|
|
45
|
+
*/
|
|
46
|
+
export const improveIconSvgVariants = (args) => {
|
|
47
|
+
const svg = args.svg.trim();
|
|
48
|
+
const color = improveDeclaredIconColor(args.color);
|
|
49
|
+
const imgName = `${args.stem}.svg`;
|
|
50
|
+
const inlineName = `${args.stem}-inline.svg`;
|
|
51
|
+
if (!HAS_CURRENT_COLOR.test(svg)) {
|
|
52
|
+
const primary = { name: imgName, svg, usage: 'img' };
|
|
53
|
+
return {
|
|
54
|
+
files: [primary],
|
|
55
|
+
primary,
|
|
56
|
+
...(color ? { color } : {}),
|
|
57
|
+
note: `\`${imgName}\` carries its own colours: it is safe as an \`<img>\`, a`
|
|
58
|
+
+ ' `background-image`, or inlined.',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
if (!color) {
|
|
62
|
+
const primary = { name: inlineName, svg, usage: 'inline' };
|
|
63
|
+
return {
|
|
64
|
+
files: [primary],
|
|
65
|
+
primary,
|
|
66
|
+
inline: primary,
|
|
67
|
+
note: `The design declares no colour for this icon, so only \`${inlineName}\` is written and`
|
|
68
|
+
+ ' it paints with `currentColor`. Inline it, or use it as a `mask-image` with a token'
|
|
69
|
+
+ ' colour — as an external `<img>` it renders black.',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const img = { name: imgName, svg: svg.replace(EVERY_CURRENT_COLOR, color), usage: 'img' };
|
|
73
|
+
const inline = { name: inlineName, svg, usage: 'inline' };
|
|
74
|
+
return {
|
|
75
|
+
files: [img, inline],
|
|
76
|
+
primary: img,
|
|
77
|
+
inline,
|
|
78
|
+
color,
|
|
79
|
+
note: `Use \`${imgName}\` for an external \`<img>\`, \`background-image\`, or \`url()\`:`
|
|
80
|
+
+ ` its fill and stroke are the design's declared \`${color}\`. Use \`${inlineName}\``
|
|
81
|
+
+ ' (`currentColor`) only inlined in the markup or as a `mask-image` where the call site'
|
|
82
|
+
+ ' sets the colour.',
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=improve-icon-svg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"improve-icon-svg.js","sourceRoot":"","sources":["../../src/improve-core/improve-icon-svg.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,uEAAuE;AAEvE;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;GAGG;AACH,MAAM,UAAU,GAAG,qGAAqG,CAAC;AAEzH,iFAAiF;AACjF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM;CAC/F,CAAC,CAAC;AAEH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAc,EAAsB,EAAE;IAC7E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AACnE,CAAC,CAAC;AAEF,iFAAiF;AACjF,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAC3C,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAqB9C;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAItC,EAA0B,EAAE;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC;IACnC,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,IAAI,aAAa,CAAC;IAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,OAAO,GAAuB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACzE,OAAO;YACL,KAAK,EAAE,CAAC,OAAO,CAAC;YAChB,OAAO;YACP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,IAAI,EAAE,KAAK,OAAO,2DAA2D;kBACzE,kCAAkC;SACvC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,OAAO,GAAuB,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC/E,OAAO;YACL,KAAK,EAAE,CAAC,OAAO,CAAC;YAChB,OAAO;YACP,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,0DAA0D,UAAU,mBAAmB;kBACzF,qFAAqF;kBACrF,oDAAoD;SACzD,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAuB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC9G,MAAM,MAAM,GAAuB,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC9E,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,GAAG;QACZ,MAAM;QACN,KAAK;QACL,IAAI,EAAE,SAAS,OAAO,mEAAmE;cACrF,oDAAoD,KAAK,aAAa,UAAU,IAAI;cACpF,uFAAuF;cACvF,mBAAmB;KACxB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import type { LayerBox, LayerLeaf } from './improve-layerdoc-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* What the kit's extracted files ARE, named once.
|
|
4
|
+
*
|
|
5
|
+
* Two overnight lanes threw the design away because nothing in the kit said
|
|
6
|
+
* that `cutout-1-….png` was the hero artwork and `clean-0-….png` was the same
|
|
7
|
+
* backdrop with that artwork removed. One of them hand-drew the ribbon in CSS
|
|
8
|
+
* and crushed the plate under a 64% scrim. The role wording below is the fixed
|
|
9
|
+
* answer, and every renderer — README, plan, stall report — reads it from here
|
|
10
|
+
* so no two surfaces can describe the same file differently.
|
|
11
|
+
*/
|
|
12
|
+
/** A layer covering at least this share of the canvas is the page's imagery, not a detail. */
|
|
13
|
+
export declare const IMPROVE_HERO_COVERAGE = 0.25;
|
|
14
|
+
/** The most a readability scrim may dim a plate before it is destroying the design. */
|
|
15
|
+
export declare const IMPROVE_SCRIM_MAX_OPACITY_PCT = 35;
|
|
16
|
+
export type ImproveAssetRole = 'clean-plate' | 'cutout' | 'upscaled-plate' | 'upscaled-region' | 'source-crop' | 'prepared-source' | 'design' | 'other';
|
|
17
|
+
export type ImproveAssetRoleCopy = {
|
|
18
|
+
label: string;
|
|
19
|
+
instruction: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Whether a reader copies this file into the repository.
|
|
23
|
+
*
|
|
24
|
+
* The kit's first instruction used to be "copy the files the table names",
|
|
25
|
+
* which named `winner.png` and both resolutions of every layer alongside the
|
|
26
|
+
* one file that actually carries a layer's pixels. Each row now says which of
|
|
27
|
+
* the three it is, so the instruction and the guardrails agree.
|
|
28
|
+
*/
|
|
29
|
+
export type ImproveShipDisposition = 'ship' | 'alternate resolution' | typeof IMPROVE_ALTERNATE_BACKDROP | 'reference only';
|
|
30
|
+
/**
|
|
31
|
+
* The disposition of every clean plate that is not the page's backdrop.
|
|
32
|
+
*
|
|
33
|
+
* A conversion can emit several: `clean-0` is the backdrop with the artwork
|
|
34
|
+
* removed, `clean-1` is that same backdrop with a further layer removed too.
|
|
35
|
+
* Both used to read `ship`, with no layer and no placement, and a lane shipped
|
|
36
|
+
* `clean-1` — a page whose backdrop had erased the layer nothing else replaced.
|
|
37
|
+
*/
|
|
38
|
+
export declare const IMPROVE_ALTERNATE_BACKDROP: "alternate backdrop (only if that layer is omitted)";
|
|
39
|
+
export declare const IMPROVE_ASSET_ROLE_COPY: Record<ImproveAssetRole, ImproveAssetRoleCopy>;
|
|
40
|
+
export type ImproveBoundsPct = {
|
|
41
|
+
x: number;
|
|
42
|
+
y: number;
|
|
43
|
+
width: number;
|
|
44
|
+
height: number;
|
|
45
|
+
};
|
|
46
|
+
export type ImproveKitAsset = {
|
|
47
|
+
/** Manifest artifact id, e.g. `cutout-1`. */
|
|
48
|
+
id: string;
|
|
49
|
+
/** Kit-relative path, so the row is copy-pasteable from the kit root. */
|
|
50
|
+
file: string;
|
|
51
|
+
role: ImproveAssetRole;
|
|
52
|
+
roleLabel: string;
|
|
53
|
+
instruction: string;
|
|
54
|
+
/** The LayerDoc layer this file belongs to, when the document declares one. */
|
|
55
|
+
layer?: {
|
|
56
|
+
kind: string;
|
|
57
|
+
name: string;
|
|
58
|
+
index: number;
|
|
59
|
+
};
|
|
60
|
+
bounds?: ImproveBoundsPct;
|
|
61
|
+
/** Share of the canvas the owning layer covers, 0-1. */
|
|
62
|
+
coverage?: number;
|
|
63
|
+
hero: boolean;
|
|
64
|
+
/** The declared file is actually in the kit. */
|
|
65
|
+
present: boolean;
|
|
66
|
+
/** Copy it in, keep it as an alternate, or read it only. */
|
|
67
|
+
ship: ImproveShipDisposition;
|
|
68
|
+
};
|
|
69
|
+
export type ImproveRasterLayer = {
|
|
70
|
+
/** Index into `flattenLayerDoc(document)`, which is the diff's `afterIndex`. */
|
|
71
|
+
index: number;
|
|
72
|
+
kind: string;
|
|
73
|
+
name: string;
|
|
74
|
+
bounds: ImproveBoundsPct;
|
|
75
|
+
coverage: number;
|
|
76
|
+
hero: boolean;
|
|
77
|
+
/** The one file that carries this layer's pixels. */
|
|
78
|
+
asset?: ImproveKitAsset;
|
|
79
|
+
/** Other resolutions or lineages of the same layer; ship one, not all. */
|
|
80
|
+
alternates: ImproveKitAsset[];
|
|
81
|
+
};
|
|
82
|
+
export type ImproveKitAssetIndex = {
|
|
83
|
+
canvas?: {
|
|
84
|
+
width: number;
|
|
85
|
+
height: number;
|
|
86
|
+
};
|
|
87
|
+
assets: ImproveKitAsset[];
|
|
88
|
+
rasterLayers: ImproveRasterLayer[];
|
|
89
|
+
layerDocPresent: boolean;
|
|
90
|
+
manifestPresent: boolean;
|
|
91
|
+
};
|
|
92
|
+
export type ManifestArtifact = {
|
|
93
|
+
id?: unknown;
|
|
94
|
+
role?: unknown;
|
|
95
|
+
localPath?: unknown;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* What a file is for before the LayerDoc's layers are known. A carrier that no
|
|
99
|
+
* layer claims is still a carrier: only the resolution aids and the two
|
|
100
|
+
* whole-design references are never copied in.
|
|
101
|
+
*/
|
|
102
|
+
export declare const dispositionByRole: (role: ImproveAssetRole) => ImproveShipDisposition;
|
|
103
|
+
export declare const assetRole: (id: string, manifestRole: unknown) => ImproveAssetRole;
|
|
104
|
+
export declare const boxOfLeaf: (leaf: LayerLeaf) => LayerBox | undefined;
|
|
105
|
+
export declare const layerName: (leaf: LayerLeaf) => string;
|
|
106
|
+
export declare const artifactIdsOf: (leaf: LayerLeaf) => Array<{
|
|
107
|
+
key: string;
|
|
108
|
+
id: string;
|
|
109
|
+
}>;
|
|
110
|
+
export declare const boundsPct: (box: LayerBox, canvas: {
|
|
111
|
+
width: number;
|
|
112
|
+
height: number;
|
|
113
|
+
}) => ImproveBoundsPct;
|
|
114
|
+
/**
|
|
115
|
+
* Which frame the percentages above belong to.
|
|
116
|
+
*
|
|
117
|
+
* A lane read the plan's bounds as pixels of `winner.png` and placed every
|
|
118
|
+
* layer short: the design is its own size (1536x1024 in that run) while the
|
|
119
|
+
* page being rebuilt is the capture frame (1440x900). A percentage is the same
|
|
120
|
+
* number in both frames, so the fix is one line naming the frame — rendered
|
|
121
|
+
* from here so the README and the plan cannot word it differently.
|
|
122
|
+
*/
|
|
123
|
+
export declare const improveFrameMappingLine: (args: {
|
|
124
|
+
frame?: {
|
|
125
|
+
width: number;
|
|
126
|
+
height: number;
|
|
127
|
+
};
|
|
128
|
+
design?: {
|
|
129
|
+
width: number;
|
|
130
|
+
height: number;
|
|
131
|
+
};
|
|
132
|
+
}) => string;
|
|
133
|
+
export declare const formatImproveBounds: (bounds: ImproveBoundsPct) => string;
|
|
134
|
+
export declare const canvasOf: (document: unknown) => {
|
|
135
|
+
width: number;
|
|
136
|
+
height: number;
|
|
137
|
+
} | undefined;
|
|
138
|
+
/**
|
|
139
|
+
* Exactly one clean plate is the page's backdrop; the rest are alternates.
|
|
140
|
+
*
|
|
141
|
+
* The document settles which: the plate a background layer references, or —
|
|
142
|
+
* when no layer references one at all — the plate whose number pairs with the
|
|
143
|
+
* largest decoration, because that is the layer it erased. Everything else is
|
|
144
|
+
* the same backdrop minus a further layer, so it is only the background if that
|
|
145
|
+
* layer is left out. Marking them all `ship` is what let a lane ship `clean-1`.
|
|
146
|
+
*/
|
|
147
|
+
export declare const classifyCleanPlates: (args: {
|
|
148
|
+
assets: readonly ImproveKitAsset[];
|
|
149
|
+
rasterLayers: readonly ImproveRasterLayer[];
|
|
150
|
+
}) => void;
|
|
151
|
+
/** A plate the README calls an alternate must never be listed as one to carry. */
|
|
152
|
+
export declare const isImproveAlternateBackdrop: (asset?: ImproveKitAsset) => boolean;
|
|
153
|
+
/** The raster layers a plan tells a reader to copy in: alternates are not among them. */
|
|
154
|
+
export declare const improveCarriedRasterLayers: (layers: readonly ImproveRasterLayer[]) => ImproveRasterLayer[];
|
|
155
|
+
/**
|
|
156
|
+
* The raster layers a target LayerDoc DECLARES, before anything is known about
|
|
157
|
+
* files on disk.
|
|
158
|
+
*
|
|
159
|
+
* Which layers a design carries as pixels is a fact of the document, so both
|
|
160
|
+
* hosts can state it: the CLI then attaches the extracted file to each row,
|
|
161
|
+
* and the /improve web kit — which ships the LayerDoc and no extracted assets —
|
|
162
|
+
* renders the same layers and says honestly that their files are not in the
|
|
163
|
+
* kit. Before this, the section existed only where a filesystem did, and the
|
|
164
|
+
* web kit's plan silently omitted the design's own imagery.
|
|
165
|
+
*/
|
|
166
|
+
export declare const improveRasterLayersOfDocument: (document: unknown, assetById?: ReadonlyMap<string, ImproveKitAsset>) => ImproveRasterLayer[];
|
|
167
|
+
/**
|
|
168
|
+
* The rules a reader of ANY improve kit has to follow, named once.
|
|
169
|
+
*
|
|
170
|
+
* Two of these are here because overnight lanes broke them: one shipped the
|
|
171
|
+
* raw candidate PNG instead of the extracted cutout, and one crushed a hero
|
|
172
|
+
* plate under a 64% scrim. The /improve web kit ships the same design to the
|
|
173
|
+
* same kind of reader, so it carries the same rules — they used to live only
|
|
174
|
+
* in the CLI's README, where a web kit's reader never saw them.
|
|
175
|
+
*/
|
|
176
|
+
export declare const IMPROVE_KIT_GUARDRAILS: readonly string[];
|
|
177
|
+
//# sourceMappingURL=improve-kit-asset-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"improve-kit-asset-model.d.ts","sourceRoot":"","sources":["../../src/improve-core/improve-kit-asset-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
// GENERATED — do not edit. Copied verbatim from
|
|
2
|
+
// packages/layerdoc/src/improve-core by scripts/sync-improve-core.mjs.
|
|
3
|
+
import { flattenLayerDoc, isRecord } from './improve-layerdoc-diff.js';
|
|
4
|
+
/**
|
|
5
|
+
* What the kit's extracted files ARE, named once.
|
|
6
|
+
*
|
|
7
|
+
* Two overnight lanes threw the design away because nothing in the kit said
|
|
8
|
+
* that `cutout-1-….png` was the hero artwork and `clean-0-….png` was the same
|
|
9
|
+
* backdrop with that artwork removed. One of them hand-drew the ribbon in CSS
|
|
10
|
+
* and crushed the plate under a 64% scrim. The role wording below is the fixed
|
|
11
|
+
* answer, and every renderer — README, plan, stall report — reads it from here
|
|
12
|
+
* so no two surfaces can describe the same file differently.
|
|
13
|
+
*/
|
|
14
|
+
/** A layer covering at least this share of the canvas is the page's imagery, not a detail. */
|
|
15
|
+
export const IMPROVE_HERO_COVERAGE = 0.25;
|
|
16
|
+
/** The most a readability scrim may dim a plate before it is destroying the design. */
|
|
17
|
+
export const IMPROVE_SCRIM_MAX_OPACITY_PCT = 35;
|
|
18
|
+
/**
|
|
19
|
+
* The disposition of every clean plate that is not the page's backdrop.
|
|
20
|
+
*
|
|
21
|
+
* A conversion can emit several: `clean-0` is the backdrop with the artwork
|
|
22
|
+
* removed, `clean-1` is that same backdrop with a further layer removed too.
|
|
23
|
+
* Both used to read `ship`, with no layer and no placement, and a lane shipped
|
|
24
|
+
* `clean-1` — a page whose backdrop had erased the layer nothing else replaced.
|
|
25
|
+
*/
|
|
26
|
+
export const IMPROVE_ALTERNATE_BACKDROP = 'alternate backdrop (only if that layer is omitted)';
|
|
27
|
+
export const IMPROVE_ASSET_ROLE_COPY = {
|
|
28
|
+
'clean-plate': {
|
|
29
|
+
label: 'clean plate',
|
|
30
|
+
instruction: 'the backdrop with the foreground artwork removed.'
|
|
31
|
+
+ ' Use it as the background layer, at full strength.',
|
|
32
|
+
},
|
|
33
|
+
cutout: {
|
|
34
|
+
label: 'cutout',
|
|
35
|
+
instruction: 'the foreground artwork as an alpha PNG. This is the imagery.'
|
|
36
|
+
+ ' Copy it into the repo and place it at its bounds; never redraw it in CSS.',
|
|
37
|
+
},
|
|
38
|
+
'upscaled-plate': {
|
|
39
|
+
label: 'upscaled plate',
|
|
40
|
+
instruction: 'a higher-resolution copy of a plate for crisp rendering;'
|
|
41
|
+
+ ' pick one resolution, do not ship both.',
|
|
42
|
+
},
|
|
43
|
+
'upscaled-region': {
|
|
44
|
+
label: 'upscaled region',
|
|
45
|
+
instruction: 'a higher-resolution copy of a region for crisp rendering;'
|
|
46
|
+
+ ' pick one resolution, do not ship both.',
|
|
47
|
+
},
|
|
48
|
+
'source-crop': {
|
|
49
|
+
label: 'source crop',
|
|
50
|
+
instruction: 'the layer cropped straight out of the source image.'
|
|
51
|
+
+ ' Prefer that layer\'s cutout when one exists.',
|
|
52
|
+
},
|
|
53
|
+
'prepared-source': {
|
|
54
|
+
label: 'prepared source',
|
|
55
|
+
instruction: 'the normalized image the conversion read; the same picture as `winner.png`.',
|
|
56
|
+
},
|
|
57
|
+
design: {
|
|
58
|
+
label: 'winner.png',
|
|
59
|
+
instruction: 'the whole design; the reference for every visual decision.',
|
|
60
|
+
},
|
|
61
|
+
other: {
|
|
62
|
+
label: 'extracted artifact',
|
|
63
|
+
instruction: 'an extracted artifact the conversion produced for a layer.',
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
/** Artifact keys a LayerDoc leaf may carry, best carrier first. */
|
|
67
|
+
const CARRIER_PREFERENCE = ['cutout', 'plate', 'crop', 'region2x', 'plate2x'];
|
|
68
|
+
const ROLE_BY_MANIFEST = {
|
|
69
|
+
'cleaned-plate': 'clean-plate',
|
|
70
|
+
'layer-cutout': 'cutout',
|
|
71
|
+
'layer-crop': 'source-crop',
|
|
72
|
+
'upscaled-plate': 'upscaled-plate',
|
|
73
|
+
'upscaled-region': 'upscaled-region',
|
|
74
|
+
source: 'prepared-source',
|
|
75
|
+
};
|
|
76
|
+
const ROLE_BY_ID_PREFIX = [
|
|
77
|
+
['upscaled-plate-', 'upscaled-plate'],
|
|
78
|
+
['upscaled-region-', 'upscaled-region'],
|
|
79
|
+
['clean-', 'clean-plate'],
|
|
80
|
+
['cutout-', 'cutout'],
|
|
81
|
+
['crop-', 'source-crop'],
|
|
82
|
+
];
|
|
83
|
+
/**
|
|
84
|
+
* What a file is for before the LayerDoc's layers are known. A carrier that no
|
|
85
|
+
* layer claims is still a carrier: only the resolution aids and the two
|
|
86
|
+
* whole-design references are never copied in.
|
|
87
|
+
*/
|
|
88
|
+
export const dispositionByRole = (role) => {
|
|
89
|
+
if (role === 'design' || role === 'prepared-source')
|
|
90
|
+
return 'reference only';
|
|
91
|
+
if (role === 'upscaled-plate' || role === 'upscaled-region')
|
|
92
|
+
return 'alternate resolution';
|
|
93
|
+
return 'ship';
|
|
94
|
+
};
|
|
95
|
+
export const assetRole = (id, manifestRole) => {
|
|
96
|
+
if (typeof manifestRole === 'string' && ROLE_BY_MANIFEST[manifestRole]) {
|
|
97
|
+
return ROLE_BY_MANIFEST[manifestRole];
|
|
98
|
+
}
|
|
99
|
+
if (id === 'source')
|
|
100
|
+
return 'prepared-source';
|
|
101
|
+
return ROLE_BY_ID_PREFIX.find(([prefix]) => id.startsWith(prefix))?.[1] ?? 'other';
|
|
102
|
+
};
|
|
103
|
+
export const boxOfLeaf = (leaf) => (Array.isArray(leaf.box) && leaf.box.length === 4
|
|
104
|
+
&& leaf.box.every((value) => typeof value === 'number' && Number.isFinite(value))
|
|
105
|
+
? leaf.box
|
|
106
|
+
: undefined);
|
|
107
|
+
export const layerName = (leaf) => {
|
|
108
|
+
const named = leaf.name;
|
|
109
|
+
const content = typeof leaf.content === 'string' && leaf.content.trim() ? leaf.content.trim() : undefined;
|
|
110
|
+
if (content)
|
|
111
|
+
return content;
|
|
112
|
+
if (typeof named === 'string' && named.trim())
|
|
113
|
+
return named.trim();
|
|
114
|
+
return leaf.kind ?? 'layer';
|
|
115
|
+
};
|
|
116
|
+
export const artifactIdsOf = (leaf) => {
|
|
117
|
+
const artifacts = leaf.artifacts;
|
|
118
|
+
if (!isRecord(artifacts))
|
|
119
|
+
return [];
|
|
120
|
+
return Object.entries(artifacts).flatMap(([key, value]) => (isRecord(value) && typeof value.artifactId === 'string'
|
|
121
|
+
? [{ key, id: value.artifactId }]
|
|
122
|
+
: [])).sort((left, right) => {
|
|
123
|
+
const rank = (key) => {
|
|
124
|
+
const index = CARRIER_PREFERENCE.indexOf(key);
|
|
125
|
+
return index < 0 ? CARRIER_PREFERENCE.length : index;
|
|
126
|
+
};
|
|
127
|
+
return rank(left.key) - rank(right.key);
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
export const boundsPct = (box, canvas) => ({
|
|
131
|
+
x: (box[0] / canvas.width) * 100,
|
|
132
|
+
y: (box[1] / canvas.height) * 100,
|
|
133
|
+
width: (box[2] / canvas.width) * 100,
|
|
134
|
+
height: (box[3] / canvas.height) * 100,
|
|
135
|
+
});
|
|
136
|
+
/**
|
|
137
|
+
* Which frame the percentages above belong to.
|
|
138
|
+
*
|
|
139
|
+
* A lane read the plan's bounds as pixels of `winner.png` and placed every
|
|
140
|
+
* layer short: the design is its own size (1536x1024 in that run) while the
|
|
141
|
+
* page being rebuilt is the capture frame (1440x900). A percentage is the same
|
|
142
|
+
* number in both frames, so the fix is one line naming the frame — rendered
|
|
143
|
+
* from here so the README and the plan cannot word it differently.
|
|
144
|
+
*/
|
|
145
|
+
export const improveFrameMappingLine = (args) => {
|
|
146
|
+
const size = (value) => (value ? ` (${value.width}\u00d7${value.height})` : '');
|
|
147
|
+
return `Bounds are % of the capture frame${size(args.frame)};`
|
|
148
|
+
+ ` \`winner.png\` is the design at its own size${size(args.design)};`
|
|
149
|
+
+ ' place by percentage, not by pixel.';
|
|
150
|
+
};
|
|
151
|
+
export const formatImproveBounds = (bounds) => (`x ${bounds.x.toFixed(1)}%, y ${bounds.y.toFixed(1)}%,`
|
|
152
|
+
+ ` ${bounds.width.toFixed(1)}% × ${bounds.height.toFixed(1)}% of the canvas`);
|
|
153
|
+
export const canvasOf = (document) => {
|
|
154
|
+
if (!isRecord(document) || !isRecord(document.canvas))
|
|
155
|
+
return undefined;
|
|
156
|
+
const { width, height } = document.canvas;
|
|
157
|
+
return typeof width === 'number' && typeof height === 'number' && width > 0 && height > 0
|
|
158
|
+
? { width, height }
|
|
159
|
+
: undefined;
|
|
160
|
+
};
|
|
161
|
+
/** The number a `clean-N`, `cutout-N`, or `crop-N` id carries. */
|
|
162
|
+
const artifactNumber = (id) => {
|
|
163
|
+
const match = /-(\d+)$/u.exec(id);
|
|
164
|
+
return match ? Number(match[1]) : undefined;
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* Exactly one clean plate is the page's backdrop; the rest are alternates.
|
|
168
|
+
*
|
|
169
|
+
* The document settles which: the plate a background layer references, or —
|
|
170
|
+
* when no layer references one at all — the plate whose number pairs with the
|
|
171
|
+
* largest decoration, because that is the layer it erased. Everything else is
|
|
172
|
+
* the same backdrop minus a further layer, so it is only the background if that
|
|
173
|
+
* layer is left out. Marking them all `ship` is what let a lane ship `clean-1`.
|
|
174
|
+
*/
|
|
175
|
+
export const classifyCleanPlates = (args) => {
|
|
176
|
+
const plates = args.assets.filter((asset) => asset.role === 'clean-plate');
|
|
177
|
+
if (plates.length < 2)
|
|
178
|
+
return;
|
|
179
|
+
const layerByNumber = new Map();
|
|
180
|
+
for (const layer of args.rasterLayers) {
|
|
181
|
+
for (const asset of [layer.asset, ...layer.alternates]) {
|
|
182
|
+
const number = asset ? artifactNumber(asset.id) : undefined;
|
|
183
|
+
if (number !== undefined && !layerByNumber.has(number))
|
|
184
|
+
layerByNumber.set(number, layer);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const pairedWith = (plate) => {
|
|
188
|
+
const number = artifactNumber(plate.id);
|
|
189
|
+
return number === undefined ? undefined : layerByNumber.get(number);
|
|
190
|
+
};
|
|
191
|
+
const carried = new Set(args.rasterLayers.flatMap((layer) => (layer.asset ? [layer.asset.id] : [])));
|
|
192
|
+
const base = plates.find((plate) => plate.layer?.kind === 'background' && carried.has(plate.id))
|
|
193
|
+
?? [...plates].sort((left, right) => ((pairedWith(right)?.coverage ?? -1) - (pairedWith(left)?.coverage ?? -1)
|
|
194
|
+
|| left.id.localeCompare(right.id)))[0];
|
|
195
|
+
for (const plate of plates) {
|
|
196
|
+
if (plate.id === base?.id) {
|
|
197
|
+
plate.ship = 'ship';
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
const paired = pairedWith(plate);
|
|
201
|
+
plate.ship = IMPROVE_ALTERNATE_BACKDROP;
|
|
202
|
+
plate.instruction = 'the same backdrop with '
|
|
203
|
+
+ (paired ? `the ${paired.kind} \`${paired.name}\`` : 'a further layer')
|
|
204
|
+
+ ' removed as well. It is the background only if you omit that layer;'
|
|
205
|
+
+ ' otherwise ship the base clean plate.';
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
/** A plate the README calls an alternate must never be listed as one to carry. */
|
|
209
|
+
export const isImproveAlternateBackdrop = (asset) => (asset?.ship === IMPROVE_ALTERNATE_BACKDROP);
|
|
210
|
+
/** The raster layers a plan tells a reader to copy in: alternates are not among them. */
|
|
211
|
+
export const improveCarriedRasterLayers = (layers) => layers.filter((layer) => !isImproveAlternateBackdrop(layer.asset));
|
|
212
|
+
/**
|
|
213
|
+
* The raster layers a target LayerDoc DECLARES, before anything is known about
|
|
214
|
+
* files on disk.
|
|
215
|
+
*
|
|
216
|
+
* Which layers a design carries as pixels is a fact of the document, so both
|
|
217
|
+
* hosts can state it: the CLI then attaches the extracted file to each row,
|
|
218
|
+
* and the /improve web kit — which ships the LayerDoc and no extracted assets —
|
|
219
|
+
* renders the same layers and says honestly that their files are not in the
|
|
220
|
+
* kit. Before this, the section existed only where a filesystem did, and the
|
|
221
|
+
* web kit's plan silently omitted the design's own imagery.
|
|
222
|
+
*/
|
|
223
|
+
export const improveRasterLayersOfDocument = (document, assetById) => {
|
|
224
|
+
const canvas = canvasOf(document);
|
|
225
|
+
const layers = [];
|
|
226
|
+
flattenLayerDoc(document).forEach((leaf, index) => {
|
|
227
|
+
const ids = artifactIdsOf(leaf);
|
|
228
|
+
if (ids.length === 0)
|
|
229
|
+
return;
|
|
230
|
+
const box = boxOfLeaf(leaf);
|
|
231
|
+
if (!box || !canvas)
|
|
232
|
+
return;
|
|
233
|
+
const bounds = boundsPct(box, canvas);
|
|
234
|
+
const coverage = (bounds.width / 100) * (bounds.height / 100);
|
|
235
|
+
const carried = ids
|
|
236
|
+
.map(({ id }) => assetById?.get(id))
|
|
237
|
+
.filter((asset) => Boolean(asset));
|
|
238
|
+
layers.push({
|
|
239
|
+
index,
|
|
240
|
+
kind: leaf.kind ?? 'layer',
|
|
241
|
+
name: layerName(leaf),
|
|
242
|
+
bounds,
|
|
243
|
+
coverage,
|
|
244
|
+
hero: coverage >= IMPROVE_HERO_COVERAGE,
|
|
245
|
+
...(carried[0] ? { asset: carried[0] } : {}),
|
|
246
|
+
alternates: carried.slice(1),
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
layers.sort((left, right) => right.coverage - left.coverage || left.index - right.index);
|
|
250
|
+
return layers;
|
|
251
|
+
};
|
|
252
|
+
/**
|
|
253
|
+
* The rules a reader of ANY improve kit has to follow, named once.
|
|
254
|
+
*
|
|
255
|
+
* Two of these are here because overnight lanes broke them: one shipped the
|
|
256
|
+
* raw candidate PNG instead of the extracted cutout, and one crushed a hero
|
|
257
|
+
* plate under a 64% scrim. The /improve web kit ships the same design to the
|
|
258
|
+
* same kind of reader, so it carries the same rules — they used to live only
|
|
259
|
+
* in the CLI's README, where a web kit's reader never saw them.
|
|
260
|
+
*/
|
|
261
|
+
export const IMPROVE_KIT_GUARDRAILS = [
|
|
262
|
+
'Preserve all real content, data, and controls. Do not fabricate product features or copy.',
|
|
263
|
+
'Do not describe emptiness or thin content as a defect: that phrasing can invite fabricated UI.',
|
|
264
|
+
'Verify Tailwind v4 arbitrary custom-property syntax, quote CSS `url(...)` values, and update CSP before introducing data URIs.',
|
|
265
|
+
'Never use the raw candidate PNG as a shipped asset; ship the extracted cutouts and plates.',
|
|
266
|
+
'Never scrim imagery away. A heavy overlay is a fidelity defect, not a readability fix.',
|
|
267
|
+
'Do not add decoration the design does not contain.',
|
|
268
|
+
];
|
|
269
|
+
//# sourceMappingURL=improve-kit-asset-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"improve-kit-asset-model.js","sourceRoot":"","sources":["../../src/improve-core/improve-kit-asset-model.ts"],"names":[],"mappings":"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"}
|