@m0saic/templates 0.2.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/LICENSE +13 -0
- package/README.md +7 -0
- package/dist/freeze.d.ts +406 -0
- package/dist/freeze.js +855 -0
- package/dist/gen-geometry-matrix.d.ts +1 -0
- package/dist/gen-geometry-matrix.js +177 -0
- package/dist/gen-geometry-proof.d.ts +1 -0
- package/dist/gen-geometry-proof.js +259 -0
- package/dist/gen-layout-envelope.d.ts +1 -0
- package/dist/gen-layout-envelope.js +120 -0
- package/dist/gen-precision-sweep.d.ts +1 -0
- package/dist/gen-precision-sweep.js +219 -0
- package/dist/gen-props-shape.d.ts +1 -0
- package/dist/gen-props-shape.js +269 -0
- package/dist/gen-template-audit.d.ts +1 -0
- package/dist/gen-template-audit.js +379 -0
- package/dist/gen-template-manifest.d.ts +1 -0
- package/dist/gen-template-manifest.js +162 -0
- package/dist/gen-web-template-ids.d.ts +1 -0
- package/dist/gen-web-template-ids.js +65 -0
- package/dist/geometry-audit.d.ts +149 -0
- package/dist/geometry-audit.js +368 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +29 -0
- package/dist/m0saic/_shared/onboarding-cover.d.ts +95 -0
- package/dist/m0saic/_shared/onboarding-cover.js +247 -0
- package/dist/m0saic/_shared/raster.d.ts +28 -0
- package/dist/m0saic/_shared/raster.js +146 -0
- package/dist/m0saic/_shared/svgRaster.d.ts +40 -0
- package/dist/m0saic/_shared/svgRaster.js +142 -0
- package/dist/m0saic/agents/commit-feed/index.d.ts +1 -0
- package/dist/m0saic/agents/commit-feed/index.js +17 -0
- package/dist/m0saic/agents/commit-feed/v1/commit-feed.d.ts +68 -0
- package/dist/m0saic/agents/commit-feed/v1/commit-feed.js +293 -0
- package/dist/m0saic/agents/commit-feed/v1/index.d.ts +2 -0
- package/dist/m0saic/agents/commit-feed/v1/index.js +11 -0
- package/dist/m0saic/agents/index.d.ts +7 -0
- package/dist/m0saic/agents/index.js +25 -0
- package/dist/m0saic/agents/trace-timeline/index.d.ts +1 -0
- package/dist/m0saic/agents/trace-timeline/index.js +17 -0
- package/dist/m0saic/agents/trace-timeline/v1/index.d.ts +2 -0
- package/dist/m0saic/agents/trace-timeline/v1/index.js +15 -0
- package/dist/m0saic/agents/trace-timeline/v1/trace-timeline.d.ts +73 -0
- package/dist/m0saic/agents/trace-timeline/v1/trace-timeline.js +356 -0
- package/dist/m0saic/alpine/_shared/alpine-anim.d.ts +65 -0
- package/dist/m0saic/alpine/_shared/alpine-anim.js +142 -0
- package/dist/m0saic/alpine/_shared/alpine-card.d.ts +114 -0
- package/dist/m0saic/alpine/_shared/alpine-card.js +193 -0
- package/dist/m0saic/alpine/_shared/alpine-glyphs.d.ts +23 -0
- package/dist/m0saic/alpine/_shared/alpine-glyphs.js +46 -0
- package/dist/m0saic/alpine/_shared/alpine-theme.d.ts +84 -0
- package/dist/m0saic/alpine/_shared/alpine-theme.js +155 -0
- package/dist/m0saic/alpine/bar-graph/v1/bar-graph.d.ts +85 -0
- package/dist/m0saic/alpine/bar-graph/v1/bar-graph.js +558 -0
- package/dist/m0saic/alpine/bar-graph/v1/index.d.ts +5 -0
- package/dist/m0saic/alpine/bar-graph/v1/index.js +9 -0
- package/dist/m0saic/alpine/commit-feed/v1/commit-feed.d.ts +64 -0
- package/dist/m0saic/alpine/commit-feed/v1/commit-feed.js +261 -0
- package/dist/m0saic/alpine/commit-feed/v1/index.d.ts +1 -0
- package/dist/m0saic/alpine/commit-feed/v1/index.js +5 -0
- package/dist/m0saic/alpine/commit-feed/v2/commit-feed.d.ts +78 -0
- package/dist/m0saic/alpine/commit-feed/v2/commit-feed.js +509 -0
- package/dist/m0saic/alpine/commit-feed/v2/index.d.ts +1 -0
- package/dist/m0saic/alpine/commit-feed/v2/index.js +5 -0
- package/dist/m0saic/alpine/contributor-table/v1/assets/README.md +13 -0
- package/dist/m0saic/alpine/contributor-table/v1/assets/layout-lite.m0 +9 -0
- package/dist/m0saic/alpine/contributor-table/v1/assets/layout-standard.m0 +9 -0
- package/dist/m0saic/alpine/contributor-table/v1/contributor-table.d.ts +76 -0
- package/dist/m0saic/alpine/contributor-table/v1/contributor-table.js +651 -0
- package/dist/m0saic/alpine/contributor-table/v1/index.d.ts +1 -0
- package/dist/m0saic/alpine/contributor-table/v1/index.js +5 -0
- package/dist/m0saic/alpine/donut/v1/donut.d.ts +55 -0
- package/dist/m0saic/alpine/donut/v1/donut.js +322 -0
- package/dist/m0saic/alpine/donut/v1/index.d.ts +5 -0
- package/dist/m0saic/alpine/donut/v1/index.js +9 -0
- package/dist/m0saic/alpine/donut/v2/donut.d.ts +58 -0
- package/dist/m0saic/alpine/donut/v2/donut.js +268 -0
- package/dist/m0saic/alpine/donut/v2/index.d.ts +1 -0
- package/dist/m0saic/alpine/donut/v2/index.js +5 -0
- package/dist/m0saic/alpine/donut/v3/donut.d.ts +65 -0
- package/dist/m0saic/alpine/donut/v3/donut.js +428 -0
- package/dist/m0saic/alpine/donut/v3/index.d.ts +1 -0
- package/dist/m0saic/alpine/donut/v3/index.js +5 -0
- package/dist/m0saic/alpine/heatmap/v1/heatmap.d.ts +68 -0
- package/dist/m0saic/alpine/heatmap/v1/heatmap.js +370 -0
- package/dist/m0saic/alpine/heatmap/v1/index.d.ts +1 -0
- package/dist/m0saic/alpine/heatmap/v1/index.js +5 -0
- package/dist/m0saic/alpine/heatmap/v2/heatmap.d.ts +73 -0
- package/dist/m0saic/alpine/heatmap/v2/heatmap.js +582 -0
- package/dist/m0saic/alpine/heatmap/v2/index.d.ts +1 -0
- package/dist/m0saic/alpine/heatmap/v2/index.js +5 -0
- package/dist/m0saic/alpine/index.d.ts +20 -0
- package/dist/m0saic/alpine/index.js +37 -0
- package/dist/m0saic/alpine/kpi-card/v1/index.d.ts +1 -0
- package/dist/m0saic/alpine/kpi-card/v1/index.js +5 -0
- package/dist/m0saic/alpine/kpi-card/v1/kpi-card.d.ts +54 -0
- package/dist/m0saic/alpine/kpi-card/v1/kpi-card.js +311 -0
- package/dist/m0saic/alpine/kpi-card/v2/index.d.ts +1 -0
- package/dist/m0saic/alpine/kpi-card/v2/index.js +5 -0
- package/dist/m0saic/alpine/kpi-card/v2/kpi-card.d.ts +60 -0
- package/dist/m0saic/alpine/kpi-card/v2/kpi-card.js +362 -0
- package/dist/m0saic/alpine/leaderboard/v1/index.d.ts +1 -0
- package/dist/m0saic/alpine/leaderboard/v1/index.js +5 -0
- package/dist/m0saic/alpine/leaderboard/v1/leaderboard.d.ts +58 -0
- package/dist/m0saic/alpine/leaderboard/v1/leaderboard.js +313 -0
- package/dist/m0saic/alpine/line-chart/v1/index.d.ts +1 -0
- package/dist/m0saic/alpine/line-chart/v1/index.js +5 -0
- package/dist/m0saic/alpine/line-chart/v1/line-chart.d.ts +70 -0
- package/dist/m0saic/alpine/line-chart/v1/line-chart.js +408 -0
- package/dist/m0saic/alpine/line-chart/v2/index.d.ts +1 -0
- package/dist/m0saic/alpine/line-chart/v2/index.js +5 -0
- package/dist/m0saic/alpine/line-chart/v2/line-chart.d.ts +72 -0
- package/dist/m0saic/alpine/line-chart/v2/line-chart.js +434 -0
- package/dist/m0saic/alpine/progress-card/v1/index.d.ts +1 -0
- package/dist/m0saic/alpine/progress-card/v1/index.js +5 -0
- package/dist/m0saic/alpine/progress-card/v1/progress-card.d.ts +53 -0
- package/dist/m0saic/alpine/progress-card/v1/progress-card.js +333 -0
- package/dist/m0saic/alpine/stat-card/v1/index.d.ts +1 -0
- package/dist/m0saic/alpine/stat-card/v1/index.js +5 -0
- package/dist/m0saic/alpine/stat-card/v1/stat-card.d.ts +76 -0
- package/dist/m0saic/alpine/stat-card/v1/stat-card.js +295 -0
- package/dist/m0saic/alpine/timeline/v1/index.d.ts +1 -0
- package/dist/m0saic/alpine/timeline/v1/index.js +5 -0
- package/dist/m0saic/alpine/timeline/v1/timeline.d.ts +55 -0
- package/dist/m0saic/alpine/timeline/v1/timeline.js +266 -0
- package/dist/m0saic/alpine/timeline/v2/index.d.ts +1 -0
- package/dist/m0saic/alpine/timeline/v2/index.js +5 -0
- package/dist/m0saic/alpine/timeline/v2/timeline.d.ts +61 -0
- package/dist/m0saic/alpine/timeline/v2/timeline.js +371 -0
- package/dist/m0saic/alpine/treemap/v1/index.d.ts +1 -0
- package/dist/m0saic/alpine/treemap/v1/index.js +5 -0
- package/dist/m0saic/alpine/treemap/v1/treemap.d.ts +56 -0
- package/dist/m0saic/alpine/treemap/v1/treemap.js +326 -0
- package/dist/m0saic/alpine/treemap/v2/index.d.ts +1 -0
- package/dist/m0saic/alpine/treemap/v2/index.js +5 -0
- package/dist/m0saic/alpine/treemap/v2/treemap.d.ts +59 -0
- package/dist/m0saic/alpine/treemap/v2/treemap.js +323 -0
- package/dist/m0saic/benchmark/battery/assets/media/README.md +16 -0
- package/dist/m0saic/benchmark/battery/assets/media/bbb-av.mp4 +0 -0
- package/dist/m0saic/benchmark/battery/assets/media/bbb-clip-01.mp4 +0 -0
- package/dist/m0saic/benchmark/battery/assets/media/bbb-clip-02.mp4 +0 -0
- package/dist/m0saic/benchmark/battery/assets/media/bbb-clip-03.mp4 +0 -0
- package/dist/m0saic/benchmark/battery/assets/media/bbb-clip-04.mp4 +0 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/duration-long.mosaic +80 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/encoders-base.mosaic +32 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/geometry-grid.mosaic +592 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/lifetime-window-fade.mosaic +28 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/real-bar-graph.mosaic +1980 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/real-donut.mosaic +797 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/real-screencap-grid.mosaic +4591 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/real-stat-card.mosaic +187 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/sources-audio.mosaic +31 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/sources-lavfi.mosaic +32 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/sources-media.mosaic +73 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/sources-nested.mosaic +48 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/sources-ref.mosaic +24 -0
- package/dist/m0saic/benchmark/battery/assets/scenarios/sources-text.mosaic +120 -0
- package/dist/m0saic/benchmark/battery/manifest.d.ts +65 -0
- package/dist/m0saic/benchmark/battery/manifest.js +97 -0
- package/dist/m0saic/benchmark/index.d.ts +2 -0
- package/dist/m0saic/benchmark/index.js +22 -0
- package/dist/m0saic/benchmark/report/v1/assets/m-logo.png +0 -0
- package/dist/m0saic/benchmark/report/v1/assets/sample-session/benchmark.json +41 -0
- package/dist/m0saic/benchmark/report/v1/index.d.ts +1 -0
- package/dist/m0saic/benchmark/report/v1/index.js +17 -0
- package/dist/m0saic/benchmark/report/v1/report.d.ts +23 -0
- package/dist/m0saic/benchmark/report/v1/report.js +242 -0
- package/dist/m0saic/benchmark/run/v1/benchmarkRun.d.ts +57 -0
- package/dist/m0saic/benchmark/run/v1/benchmarkRun.js +151 -0
- package/dist/m0saic/benchmark/run/v1/confirmation.d.ts +11 -0
- package/dist/m0saic/benchmark/run/v1/confirmation.js +48 -0
- package/dist/m0saic/benchmark/run/v1/index.d.ts +1 -0
- package/dist/m0saic/benchmark/run/v1/index.js +17 -0
- package/dist/m0saic/benchmark/run/v1/renderScenario.d.ts +12 -0
- package/dist/m0saic/benchmark/run/v1/renderScenario.js +122 -0
- package/dist/m0saic/benchmark/run/v1/runner.d.ts +10 -0
- package/dist/m0saic/benchmark/run/v1/runner.js +208 -0
- package/dist/m0saic/brand/business-card/v1/back-catalog.d.ts +68 -0
- package/dist/m0saic/brand/business-card/v1/back-catalog.js +121 -0
- package/dist/m0saic/brand/business-card/v1/business-card.d.ts +82 -0
- package/dist/m0saic/brand/business-card/v1/business-card.js +517 -0
- package/dist/m0saic/brand/business-card/v1/index.d.ts +4 -0
- package/dist/m0saic/brand/business-card/v1/index.js +16 -0
- package/dist/m0saic/brand/business-card/v1/layout.d.ts +163 -0
- package/dist/m0saic/brand/business-card/v1/layout.js +369 -0
- package/dist/m0saic/brand/community-m/v1/camera.d.ts +45 -0
- package/dist/m0saic/brand/community-m/v1/camera.js +44 -0
- package/dist/m0saic/brand/community-m/v1/caption.d.ts +5 -0
- package/dist/m0saic/brand/community-m/v1/caption.js +18 -0
- package/dist/m0saic/brand/community-m/v1/community-m.d.ts +25 -0
- package/dist/m0saic/brand/community-m/v1/community-m.js +117 -0
- package/dist/m0saic/brand/community-m/v1/community-m.web.d.ts +3 -0
- package/dist/m0saic/brand/community-m/v1/community-m.web.js +172 -0
- package/dist/m0saic/brand/community-m/v1/gen-seed-piece.d.ts +1 -0
- package/dist/m0saic/brand/community-m/v1/gen-seed-piece.js +59 -0
- package/dist/m0saic/brand/community-m/v1/geometry.d.ts +44 -0
- package/dist/m0saic/brand/community-m/v1/geometry.js +68 -0
- package/dist/m0saic/brand/community-m/v1/imageSize.node.d.ts +3 -0
- package/dist/m0saic/brand/community-m/v1/imageSize.node.js +60 -0
- package/dist/m0saic/brand/community-m/v1/index.d.ts +1 -0
- package/dist/m0saic/brand/community-m/v1/index.js +5 -0
- package/dist/m0saic/brand/community-m/v1/loadPiece.node.d.ts +14 -0
- package/dist/m0saic/brand/community-m/v1/loadPiece.node.js +69 -0
- package/dist/m0saic/brand/community-m/v1/manifest.d.ts +22 -0
- package/dist/m0saic/brand/community-m/v1/manifest.js +81 -0
- package/dist/m0saic/brand/community-m/v1/mark.d.ts +76 -0
- package/dist/m0saic/brand/community-m/v1/mark.js +136 -0
- package/dist/m0saic/brand/community-m/v1/paths.d.ts +14 -0
- package/dist/m0saic/brand/community-m/v1/paths.js +61 -0
- package/dist/m0saic/brand/community-m/v1/piece.d.ts +28 -0
- package/dist/m0saic/brand/community-m/v1/piece.js +35 -0
- package/dist/m0saic/brand/community-m/v1/pipeline.d.ts +122 -0
- package/dist/m0saic/brand/community-m/v1/pipeline.js +461 -0
- package/dist/m0saic/brand/community-m/v1/preview.d.ts +75 -0
- package/dist/m0saic/brand/community-m/v1/preview.js +214 -0
- package/dist/m0saic/brand/community-m/v1/props.d.ts +101 -0
- package/dist/m0saic/brand/community-m/v1/props.js +178 -0
- package/dist/m0saic/brand/community-m/v1/reveal.d.ts +129 -0
- package/dist/m0saic/brand/community-m/v1/reveal.js +155 -0
- package/dist/m0saic/brand/community-m/v1/seedPiece.d.ts +57 -0
- package/dist/m0saic/brand/community-m/v1/seedPiece.js +153 -0
- package/dist/m0saic/brand/community-m/v1/target.d.ts +88 -0
- package/dist/m0saic/brand/community-m/v1/target.js +132 -0
- package/dist/m0saic/brand/community-m/v1/timing.d.ts +32 -0
- package/dist/m0saic/brand/community-m/v1/timing.js +57 -0
- package/dist/m0saic/brand/community-m/v1/webPiece.d.ts +23 -0
- package/dist/m0saic/brand/community-m/v1/webPiece.js +42 -0
- package/dist/m0saic/brand/community-m/v1/wordmark.d.ts +34 -0
- package/dist/m0saic/brand/community-m/v1/wordmark.js +62 -0
- package/dist/m0saic/brand/index.d.ts +7 -0
- package/dist/m0saic/brand/index.js +17 -0
- package/dist/m0saic/brand/logo/v1/index.d.ts +1 -0
- package/dist/m0saic/brand/logo/v1/index.js +5 -0
- package/dist/m0saic/brand/logo/v1/logo.d.ts +30 -0
- package/dist/m0saic/brand/logo/v1/logo.js +471 -0
- package/dist/m0saic/brand/logo/v2/index.d.ts +1 -0
- package/dist/m0saic/brand/logo/v2/index.js +5 -0
- package/dist/m0saic/brand/logo/v2/logo.d.ts +30 -0
- package/dist/m0saic/brand/logo/v2/logo.js +615 -0
- package/dist/m0saic/brand/logo/v3/index.d.ts +1 -0
- package/dist/m0saic/brand/logo/v3/index.js +5 -0
- package/dist/m0saic/brand/logo/v3/logo.d.ts +36 -0
- package/dist/m0saic/brand/logo/v3/logo.js +666 -0
- package/dist/m0saic/brand/logo/v3/logo_runner.d.ts +36 -0
- package/dist/m0saic/brand/logo/v3/logo_runner.js +216 -0
- package/dist/m0saic/brand/qr-stamp/assets/brand-qr-with-logo.svg +8 -0
- package/dist/m0saic/brand/qr-stamp/assets/qr-animate.dark.mp4 +0 -0
- package/dist/m0saic/brand/qr-stamp/assets/qr-animate.dark.static.png +0 -0
- package/dist/m0saic/brand/qr-stamp/assets/qr-animate.light.mp4 +0 -0
- package/dist/m0saic/brand/qr-stamp/assets/qr-animate.light.static.png +0 -0
- package/dist/m0saic/brand/qr-stamp/still/v1/index.d.ts +2 -0
- package/dist/m0saic/brand/qr-stamp/still/v1/index.js +10 -0
- package/dist/m0saic/brand/qr-stamp/still/v1/qr-stamp-still.d.ts +45 -0
- package/dist/m0saic/brand/qr-stamp/still/v1/qr-stamp-still.js +347 -0
- package/dist/m0saic/brand/qr-stamp/video/v2/index.d.ts +2 -0
- package/dist/m0saic/brand/qr-stamp/video/v2/index.js +9 -0
- package/dist/m0saic/brand/qr-stamp/video/v2/qr-stamp.d.ts +43 -0
- package/dist/m0saic/brand/qr-stamp/video/v2/qr-stamp.js +447 -0
- package/dist/m0saic/brand/qr-stamp/video/v2/windows.d.ts +19 -0
- package/dist/m0saic/brand/qr-stamp/video/v2/windows.js +24 -0
- package/dist/m0saic/charts/_shared/index.d.ts +8 -0
- package/dist/m0saic/charts/_shared/index.js +24 -0
- package/dist/m0saic/charts/_shared/line.d.ts +100 -0
- package/dist/m0saic/charts/_shared/line.js +134 -0
- package/dist/m0saic/charts/_shared/scale.d.ts +9 -0
- package/dist/m0saic/charts/_shared/scale.js +17 -0
- package/dist/m0saic/charts/bar-graph/v1/anim.d.ts +83 -0
- package/dist/m0saic/charts/bar-graph/v1/anim.js +104 -0
- package/dist/m0saic/charts/bar-graph/v1/axis.d.ts +51 -0
- package/dist/m0saic/charts/bar-graph/v1/axis.js +73 -0
- package/dist/m0saic/charts/bar-graph/v1/bar-graph.d.ts +44 -0
- package/dist/m0saic/charts/bar-graph/v1/bar-graph.js +316 -0
- package/dist/m0saic/charts/bar-graph/v1/defaults.d.ts +88 -0
- package/dist/m0saic/charts/bar-graph/v1/defaults.js +157 -0
- package/dist/m0saic/charts/bar-graph/v1/format.d.ts +46 -0
- package/dist/m0saic/charts/bar-graph/v1/format.js +95 -0
- package/dist/m0saic/charts/bar-graph/v1/index.d.ts +31 -0
- package/dist/m0saic/charts/bar-graph/v1/index.js +36 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/bar-cell.d.ts +53 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/bar-cell.js +198 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/bar-fill.d.ts +4 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/bar-fill.js +154 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/bars-stack.d.ts +41 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/bars-stack.js +208 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/chart-frame.d.ts +32 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/chart-frame.js +124 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/labels.d.ts +52 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/labels.js +504 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/plot-area.d.ts +24 -0
- package/dist/m0saic/charts/bar-graph/v1/internal/plot-area.js +180 -0
- package/dist/m0saic/charts/bar-graph/v1/types.d.ts +326 -0
- package/dist/m0saic/charts/bar-graph/v1/types.js +36 -0
- package/dist/m0saic/charts/bar-graph/v2/bar-graph.d.ts +131 -0
- package/dist/m0saic/charts/bar-graph/v2/bar-graph.js +768 -0
- package/dist/m0saic/charts/bar-graph/v2/index.d.ts +10 -0
- package/dist/m0saic/charts/bar-graph/v2/index.js +14 -0
- package/dist/m0saic/charts/donut/v1/anim.d.ts +54 -0
- package/dist/m0saic/charts/donut/v1/anim.js +84 -0
- package/dist/m0saic/charts/donut/v1/donut.d.ts +87 -0
- package/dist/m0saic/charts/donut/v1/donut.js +400 -0
- package/dist/m0saic/charts/donut/v1/geometry.d.ts +55 -0
- package/dist/m0saic/charts/donut/v1/geometry.js +115 -0
- package/dist/m0saic/charts/donut/v1/index.d.ts +11 -0
- package/dist/m0saic/charts/donut/v1/index.js +17 -0
- package/dist/m0saic/charts/donut/v2/donut.d.ts +67 -0
- package/dist/m0saic/charts/donut/v2/donut.js +307 -0
- package/dist/m0saic/charts/donut/v2/index.d.ts +10 -0
- package/dist/m0saic/charts/donut/v2/index.js +14 -0
- package/dist/m0saic/charts/donut/v3/anim.d.ts +47 -0
- package/dist/m0saic/charts/donut/v3/anim.js +77 -0
- package/dist/m0saic/charts/donut/v3/donut.d.ts +54 -0
- package/dist/m0saic/charts/donut/v3/donut.js +531 -0
- package/dist/m0saic/charts/donut/v3/geometry.d.ts +74 -0
- package/dist/m0saic/charts/donut/v3/geometry.js +152 -0
- package/dist/m0saic/charts/donut/v3/index.d.ts +10 -0
- package/dist/m0saic/charts/donut/v3/index.js +14 -0
- package/dist/m0saic/charts/donut/v4/donut.d.ts +63 -0
- package/dist/m0saic/charts/donut/v4/donut.js +546 -0
- package/dist/m0saic/charts/donut/v4/index.d.ts +10 -0
- package/dist/m0saic/charts/donut/v4/index.js +14 -0
- package/dist/m0saic/charts/index.d.ts +8 -0
- package/dist/m0saic/charts/index.js +25 -0
- package/dist/m0saic/charts/line-chart/v1/anim.d.ts +78 -0
- package/dist/m0saic/charts/line-chart/v1/anim.js +119 -0
- package/dist/m0saic/charts/line-chart/v1/axis.d.ts +48 -0
- package/dist/m0saic/charts/line-chart/v1/axis.js +55 -0
- package/dist/m0saic/charts/line-chart/v1/card.d.ts +27 -0
- package/dist/m0saic/charts/line-chart/v1/card.js +44 -0
- package/dist/m0saic/charts/line-chart/v1/chrome-spec.d.ts +110 -0
- package/dist/m0saic/charts/line-chart/v1/chrome-spec.js +208 -0
- package/dist/m0saic/charts/line-chart/v1/chrome.d.ts +30 -0
- package/dist/m0saic/charts/line-chart/v1/chrome.js +335 -0
- package/dist/m0saic/charts/line-chart/v1/defaults.d.ts +65 -0
- package/dist/m0saic/charts/line-chart/v1/defaults.js +151 -0
- package/dist/m0saic/charts/line-chart/v1/format.d.ts +26 -0
- package/dist/m0saic/charts/line-chart/v1/format.js +76 -0
- package/dist/m0saic/charts/line-chart/v1/frame.d.ts +50 -0
- package/dist/m0saic/charts/line-chart/v1/frame.js +62 -0
- package/dist/m0saic/charts/line-chart/v1/geometry.d.ts +15 -0
- package/dist/m0saic/charts/line-chart/v1/geometry.js +34 -0
- package/dist/m0saic/charts/line-chart/v1/index.d.ts +16 -0
- package/dist/m0saic/charts/line-chart/v1/index.js +21 -0
- package/dist/m0saic/charts/line-chart/v1/line-chart.d.ts +26 -0
- package/dist/m0saic/charts/line-chart/v1/line-chart.js +634 -0
- package/dist/m0saic/charts/line-chart/v1/line-series.d.ts +69 -0
- package/dist/m0saic/charts/line-chart/v1/line-series.js +259 -0
- package/dist/m0saic/charts/line-chart/v1/types.d.ts +328 -0
- package/dist/m0saic/charts/line-chart/v1/types.js +24 -0
- package/dist/m0saic/charts/stat-card/v1/index.d.ts +10 -0
- package/dist/m0saic/charts/stat-card/v1/index.js +15 -0
- package/dist/m0saic/charts/stat-card/v1/stat-card.d.ts +78 -0
- package/dist/m0saic/charts/stat-card/v1/stat-card.js +475 -0
- package/dist/m0saic/code/_shared/code-diff.d.ts +73 -0
- package/dist/m0saic/code/_shared/code-diff.js +220 -0
- package/dist/m0saic/code/_shared/code-lexer.d.ts +28 -0
- package/dist/m0saic/code/_shared/code-lexer.js +226 -0
- package/dist/m0saic/code/_shared/code-metrics.d.ts +58 -0
- package/dist/m0saic/code/_shared/code-metrics.js +140 -0
- package/dist/m0saic/code/_shared/code-theme.d.ts +30 -0
- package/dist/m0saic/code/_shared/code-theme.js +141 -0
- package/dist/m0saic/code/index.d.ts +1 -0
- package/dist/m0saic/code/index.js +17 -0
- package/dist/m0saic/code/snippet-morph/v1/internal/chrome.d.ts +60 -0
- package/dist/m0saic/code/snippet-morph/v1/internal/chrome.js +252 -0
- package/dist/m0saic/code/snippet-morph/v1/internal/plan.d.ts +90 -0
- package/dist/m0saic/code/snippet-morph/v1/internal/plan.js +226 -0
- package/dist/m0saic/code/snippet-morph/v1/internal/steps.d.ts +103 -0
- package/dist/m0saic/code/snippet-morph/v1/internal/steps.js +313 -0
- package/dist/m0saic/code/snippet-morph/v1/snippet-morph.d.ts +61 -0
- package/dist/m0saic/code/snippet-morph/v1/snippet-morph.js +462 -0
- package/dist/m0saic/collage/image-collage/v1/demo-fixture.d.ts +18 -0
- package/dist/m0saic/collage/image-collage/v1/demo-fixture.js +30 -0
- package/dist/m0saic/collage/image-collage/v1/emit.d.ts +81 -0
- package/dist/m0saic/collage/image-collage/v1/emit.js +163 -0
- package/dist/m0saic/collage/image-collage/v1/image-collage.d.ts +63 -0
- package/dist/m0saic/collage/image-collage/v1/image-collage.js +386 -0
- package/dist/m0saic/collage/image-collage/v1/index.d.ts +2 -0
- package/dist/m0saic/collage/image-collage/v1/index.js +5 -0
- package/dist/m0saic/collage/image-collage/v1/packer/candidates.d.ts +71 -0
- package/dist/m0saic/collage/image-collage/v1/packer/candidates.js +211 -0
- package/dist/m0saic/collage/image-collage/v1/packer/classify.d.ts +26 -0
- package/dist/m0saic/collage/image-collage/v1/packer/classify.js +70 -0
- package/dist/m0saic/collage/image-collage/v1/packer/index.d.ts +7 -0
- package/dist/m0saic/collage/image-collage/v1/packer/index.js +23 -0
- package/dist/m0saic/collage/image-collage/v1/packer/paging.d.ts +39 -0
- package/dist/m0saic/collage/image-collage/v1/packer/paging.js +139 -0
- package/dist/m0saic/collage/image-collage/v1/packer/score.d.ts +25 -0
- package/dist/m0saic/collage/image-collage/v1/packer/score.js +69 -0
- package/dist/m0saic/collage/image-collage/v1/packer/solve.d.ts +27 -0
- package/dist/m0saic/collage/image-collage/v1/packer/solve.js +84 -0
- package/dist/m0saic/collage/image-collage/v1/packer/tiler.d.ts +65 -0
- package/dist/m0saic/collage/image-collage/v1/packer/tiler.js +607 -0
- package/dist/m0saic/collage/image-collage/v1/packer/types.d.ts +99 -0
- package/dist/m0saic/collage/image-collage/v1/packer/types.js +10 -0
- package/dist/m0saic/collage/image-collage/v1/tutorial.d.ts +17 -0
- package/dist/m0saic/collage/image-collage/v1/tutorial.js +269 -0
- package/dist/m0saic/collage/index.d.ts +2 -0
- package/dist/m0saic/collage/index.js +18 -0
- package/dist/m0saic/collage/spread-grid-mock/v1/grid-fixture.d.ts +7 -0
- package/dist/m0saic/collage/spread-grid-mock/v1/grid-fixture.js +11 -0
- package/dist/m0saic/collage/spread-grid-mock/v1/index.d.ts +1 -0
- package/dist/m0saic/collage/spread-grid-mock/v1/index.js +5 -0
- package/dist/m0saic/collage/spread-grid-mock/v1/spread-grid-mock.d.ts +29 -0
- package/dist/m0saic/collage/spread-grid-mock/v1/spread-grid-mock.js +78 -0
- package/dist/m0saic/dsl-tutorial/index.d.ts +1 -0
- package/dist/m0saic/dsl-tutorial/index.js +18 -0
- package/dist/m0saic/dsl-tutorial/v1/_shared/brand-glyphs.d.ts +24 -0
- package/dist/m0saic/dsl-tutorial/v1/_shared/brand-glyphs.js +17 -0
- package/dist/m0saic/dsl-tutorial/v1/_shared/m0saic-logo.d.ts +6 -0
- package/dist/m0saic/dsl-tutorial/v1/_shared/m0saic-logo.js +9 -0
- package/dist/m0saic/dsl-tutorial/v1/_shared/node-kit.d.ts +57 -0
- package/dist/m0saic/dsl-tutorial/v1/_shared/node-kit.js +156 -0
- package/dist/m0saic/dsl-tutorial/v1/_shared/text-fit.d.ts +76 -0
- package/dist/m0saic/dsl-tutorial/v1/_shared/text-fit.js +127 -0
- package/dist/m0saic/dsl-tutorial/v1/dsl-tutorial.d.ts +124 -0
- package/dist/m0saic/dsl-tutorial/v1/dsl-tutorial.js +675 -0
- package/dist/m0saic/dsl-tutorial/v1/index.d.ts +24 -0
- package/dist/m0saic/dsl-tutorial/v1/index.js +35 -0
- package/dist/m0saic/dsl-tutorial/v1/panels/canvas/v1/dsl-canvas.d.ts +113 -0
- package/dist/m0saic/dsl-tutorial/v1/panels/canvas/v1/dsl-canvas.js +573 -0
- package/dist/m0saic/dsl-tutorial/v1/panels/chrome/v1/dsl-chrome.d.ts +83 -0
- package/dist/m0saic/dsl-tutorial/v1/panels/chrome/v1/dsl-chrome.js +373 -0
- package/dist/m0saic/dsl-tutorial/v1/panels/dsl-string/v1/dsl-string.d.ts +48 -0
- package/dist/m0saic/dsl-tutorial/v1/panels/dsl-string/v1/dsl-string.js +366 -0
- package/dist/m0saic/dsl-tutorial/v1/panels/inspector/v1/dsl-inspector.d.ts +54 -0
- package/dist/m0saic/dsl-tutorial/v1/panels/inspector/v1/dsl-inspector.js +304 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/buildSteps.d.ts +110 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/buildSteps.js +443 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/camera.d.ts +64 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/camera.js +177 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/cursor.d.ts +47 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/cursor.js +64 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/dslString.d.ts +61 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/dslString.js +135 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/inspector.d.ts +62 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/inspector.js +197 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/timing.d.ts +117 -0
- package/dist/m0saic/dsl-tutorial/v1/pipeline/timing.js +180 -0
- package/dist/m0saic/dsl-tutorial/v1/theme/tokens.d.ts +87 -0
- package/dist/m0saic/dsl-tutorial/v1/theme/tokens.js +96 -0
- package/dist/m0saic/forensic/index.d.ts +1 -0
- package/dist/m0saic/forensic/index.js +17 -0
- package/dist/m0saic/forensic/watermark/_shared/cellLuminance.d.ts +37 -0
- package/dist/m0saic/forensic/watermark/_shared/cellLuminance.js +62 -0
- package/dist/m0saic/forensic/watermark/index.d.ts +2 -0
- package/dist/m0saic/forensic/watermark/index.js +18 -0
- package/dist/m0saic/forensic/watermark/verify/index.d.ts +1 -0
- package/dist/m0saic/forensic/watermark/verify/index.js +17 -0
- package/dist/m0saic/forensic/watermark/verify/v1/decode.d.ts +83 -0
- package/dist/m0saic/forensic/watermark/verify/v1/decode.js +270 -0
- package/dist/m0saic/forensic/watermark/verify/v1/index.d.ts +2 -0
- package/dist/m0saic/forensic/watermark/verify/v1/index.js +23 -0
- package/dist/m0saic/forensic/watermark/verify/v1/report.d.ts +71 -0
- package/dist/m0saic/forensic/watermark/verify/v1/report.js +428 -0
- package/dist/m0saic/forensic/watermark/verify/v1/verify.d.ts +55 -0
- package/dist/m0saic/forensic/watermark/verify/v1/verify.js +286 -0
- package/dist/m0saic/forensic/watermark/video/index.d.ts +1 -0
- package/dist/m0saic/forensic/watermark/video/index.js +17 -0
- package/dist/m0saic/forensic/watermark/video/v1/forensic-watermark.d.ts +119 -0
- package/dist/m0saic/forensic/watermark/video/v1/forensic-watermark.js +629 -0
- package/dist/m0saic/forensic/watermark/video/v1/index.d.ts +2 -0
- package/dist/m0saic/forensic/watermark/video/v1/index.js +9 -0
- package/dist/m0saic/forensic/watermark/video/v1/maskAsset.d.ts +67 -0
- package/dist/m0saic/forensic/watermark/video/v1/maskAsset.js +125 -0
- package/dist/m0saic/forensic/watermark/video/v1/probeHost.d.ts +69 -0
- package/dist/m0saic/forensic/watermark/video/v1/probeHost.js +83 -0
- package/dist/m0saic/github/client.d.ts +200 -0
- package/dist/m0saic/github/client.js +161 -0
- package/dist/m0saic/github/connection.d.ts +24 -0
- package/dist/m0saic/github/connection.js +91 -0
- package/dist/m0saic/github/index.d.ts +20 -0
- package/dist/m0saic/github/index.js +42 -0
- package/dist/m0saic/github/repo-facts-fetcher/index.d.ts +4 -0
- package/dist/m0saic/github/repo-facts-fetcher/index.js +20 -0
- package/dist/m0saic/github/repo-facts-fetcher/v1/build-facts.d.ts +54 -0
- package/dist/m0saic/github/repo-facts-fetcher/v1/build-facts.js +238 -0
- package/dist/m0saic/github/repo-facts-fetcher/v1/facts.d.ts +112 -0
- package/dist/m0saic/github/repo-facts-fetcher/v1/facts.js +12 -0
- package/dist/m0saic/github/repo-facts-fetcher/v1/repo-facts-fetcher.d.ts +67 -0
- package/dist/m0saic/github/repo-facts-fetcher/v1/repo-facts-fetcher.js +210 -0
- package/dist/m0saic/github/repo-facts-fetcher/v1/sample-facts.d.ts +16 -0
- package/dist/m0saic/github/repo-facts-fetcher/v1/sample-facts.js +175 -0
- package/dist/m0saic/github/week-math.d.ts +50 -0
- package/dist/m0saic/github/week-math.js +96 -0
- package/dist/m0saic/github/weekly-pulse/index.d.ts +1 -0
- package/dist/m0saic/github/weekly-pulse/index.js +17 -0
- package/dist/m0saic/github/weekly-pulse/v1/weekly-pulse.d.ts +51 -0
- package/dist/m0saic/github/weekly-pulse/v1/weekly-pulse.js +153 -0
- package/dist/m0saic/github/weekly-pulse-adapter/index.d.ts +2 -0
- package/dist/m0saic/github/weekly-pulse-adapter/index.js +18 -0
- package/dist/m0saic/github/weekly-pulse-adapter/v1/derive-pulse.d.ts +24 -0
- package/dist/m0saic/github/weekly-pulse-adapter/v1/derive-pulse.js +257 -0
- package/dist/m0saic/github/weekly-pulse-adapter/v1/weekly-pulse-adapter.d.ts +35 -0
- package/dist/m0saic/github/weekly-pulse-adapter/v1/weekly-pulse-adapter.js +131 -0
- package/dist/m0saic/github/year-card/index.d.ts +1 -0
- package/dist/m0saic/github/year-card/index.js +17 -0
- package/dist/m0saic/github/year-card/v1/index.d.ts +2 -0
- package/dist/m0saic/github/year-card/v1/index.js +16 -0
- package/dist/m0saic/github/year-card/v1/year-card.d.ts +90 -0
- package/dist/m0saic/github/year-card/v1/year-card.js +476 -0
- package/dist/m0saic/hello-world/index.d.ts +1 -0
- package/dist/m0saic/hello-world/index.js +18 -0
- package/dist/m0saic/hello-world/v1/hello-world.d.ts +4 -0
- package/dist/m0saic/hello-world/v1/hello-world.js +36 -0
- package/dist/m0saic/hello-world/v1/index.d.ts +5 -0
- package/dist/m0saic/hello-world/v1/index.js +9 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/bake-fin-qr.sh +11 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/ffmpeg-logo.png +0 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/ffmpeg_logo_480x480.svg +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/m-hero.png +0 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/qr-fin.mp4 +0 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/scatter-desktop.mp4 +0 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/scatter-layout.m0p +5146 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/scatter-mobile.mp4 +0 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/scatter-square.mp4 +0 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/assets/title-layout.m0p +130 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-chrome.d.ts +151 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-chrome.js +305 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-data.d.ts +178 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-data.js +238 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-glyphs.d.ts +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-glyphs.js +12 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-theme.d.ts +67 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/pulse-theme.js +59 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/scatter.d.ts +54 -0
- package/dist/m0saic/hero/ffmpeg-pulse/_shared/scatter.js +173 -0
- package/dist/m0saic/hero/ffmpeg-pulse/activity-trend/v1/activity-trend.d.ts +37 -0
- package/dist/m0saic/hero/ffmpeg-pulse/activity-trend/v1/activity-trend.js +178 -0
- package/dist/m0saic/hero/ffmpeg-pulse/activity-trend/v1/index.d.ts +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/activity-trend/v1/index.js +5 -0
- package/dist/m0saic/hero/ffmpeg-pulse/changes-breakdown/v1/changes-breakdown.d.ts +37 -0
- package/dist/m0saic/hero/ffmpeg-pulse/changes-breakdown/v1/changes-breakdown.js +164 -0
- package/dist/m0saic/hero/ffmpeg-pulse/changes-breakdown/v1/index.d.ts +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/changes-breakdown/v1/index.js +5 -0
- package/dist/m0saic/hero/ffmpeg-pulse/contributions/v1/contributions.d.ts +37 -0
- package/dist/m0saic/hero/ffmpeg-pulse/contributions/v1/contributions.js +159 -0
- package/dist/m0saic/hero/ffmpeg-pulse/contributions/v1/index.d.ts +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/contributions/v1/index.js +5 -0
- package/dist/m0saic/hero/ffmpeg-pulse/fin/v1/fin.d.ts +31 -0
- package/dist/m0saic/hero/ffmpeg-pulse/fin/v1/fin.js +154 -0
- package/dist/m0saic/hero/ffmpeg-pulse/fin/v1/index.d.ts +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/fin/v1/index.js +5 -0
- package/dist/m0saic/hero/ffmpeg-pulse/index.d.ts +10 -0
- package/dist/m0saic/hero/ffmpeg-pulse/index.js +24 -0
- package/dist/m0saic/hero/ffmpeg-pulse/kpi-overview/v1/index.d.ts +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/kpi-overview/v1/index.js +5 -0
- package/dist/m0saic/hero/ffmpeg-pulse/kpi-overview/v1/kpi-overview.d.ts +38 -0
- package/dist/m0saic/hero/ffmpeg-pulse/kpi-overview/v1/kpi-overview.js +161 -0
- package/dist/m0saic/hero/ffmpeg-pulse/notable-commits/v1/index.d.ts +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/notable-commits/v1/index.js +5 -0
- package/dist/m0saic/hero/ffmpeg-pulse/notable-commits/v1/notable-commits.d.ts +36 -0
- package/dist/m0saic/hero/ffmpeg-pulse/notable-commits/v1/notable-commits.js +151 -0
- package/dist/m0saic/hero/ffmpeg-pulse/runner/v1/index.d.ts +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/runner/v1/index.js +5 -0
- package/dist/m0saic/hero/ffmpeg-pulse/runner/v1/runner.d.ts +54 -0
- package/dist/m0saic/hero/ffmpeg-pulse/runner/v1/runner.js +128 -0
- package/dist/m0saic/hero/ffmpeg-pulse/scatter-bake/v1/index.d.ts +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/scatter-bake/v1/index.js +5 -0
- package/dist/m0saic/hero/ffmpeg-pulse/scatter-bake/v1/scatter-bake.d.ts +29 -0
- package/dist/m0saic/hero/ffmpeg-pulse/scatter-bake/v1/scatter-bake.js +47 -0
- package/dist/m0saic/hero/ffmpeg-pulse/title/v1/index.d.ts +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/title/v1/index.js +5 -0
- package/dist/m0saic/hero/ffmpeg-pulse/title/v1/title.d.ts +20 -0
- package/dist/m0saic/hero/ffmpeg-pulse/title/v1/title.js +365 -0
- package/dist/m0saic/hero/ffmpeg-pulse/top-contributors/v1/index.d.ts +1 -0
- package/dist/m0saic/hero/ffmpeg-pulse/top-contributors/v1/index.js +5 -0
- package/dist/m0saic/hero/ffmpeg-pulse/top-contributors/v1/top-contributors.d.ts +38 -0
- package/dist/m0saic/hero/ffmpeg-pulse/top-contributors/v1/top-contributors.js +174 -0
- package/dist/m0saic/hero/index.d.ts +1 -0
- package/dist/m0saic/hero/index.js +18 -0
- package/dist/m0saic/index.d.ts +20 -0
- package/dist/m0saic/index.js +56 -0
- package/dist/m0saic/media/barcode/v1/barcode.d.ts +22 -0
- package/dist/m0saic/media/barcode/v1/barcode.js +218 -0
- package/dist/m0saic/media/barcode/v1/index.d.ts +1 -0
- package/dist/m0saic/media/barcode/v1/index.js +9 -0
- package/dist/m0saic/media/blur-regions/index.d.ts +1 -0
- package/dist/m0saic/media/blur-regions/index.js +17 -0
- package/dist/m0saic/media/blur-regions/v1/blur-regions.d.ts +58 -0
- package/dist/m0saic/media/blur-regions/v1/blur-regions.js +303 -0
- package/dist/m0saic/media/blur-regions/v1/index.d.ts +2 -0
- package/dist/m0saic/media/blur-regions/v1/index.js +20 -0
- package/dist/m0saic/media/blur-regions/v1/plan.d.ts +125 -0
- package/dist/m0saic/media/blur-regions/v1/plan.js +204 -0
- package/dist/m0saic/media/blur-regions/v1/tutorial.d.ts +18 -0
- package/dist/m0saic/media/blur-regions/v1/tutorial.js +428 -0
- package/dist/m0saic/media/highlights/index.d.ts +1 -0
- package/dist/m0saic/media/highlights/index.js +17 -0
- package/dist/m0saic/media/highlights/v1/assets/cover-ranges.jpg +0 -0
- package/dist/m0saic/media/highlights/v1/highlights.d.ts +49 -0
- package/dist/m0saic/media/highlights/v1/highlights.js +222 -0
- package/dist/m0saic/media/highlights/v1/index.d.ts +3 -0
- package/dist/m0saic/media/highlights/v1/index.js +19 -0
- package/dist/m0saic/media/highlights/v1/pipeline.d.ts +35 -0
- package/dist/m0saic/media/highlights/v1/pipeline.js +91 -0
- package/dist/m0saic/media/highlights/v1/plan.d.ts +46 -0
- package/dist/m0saic/media/highlights/v1/plan.js +68 -0
- package/dist/m0saic/media/index.d.ts +13 -0
- package/dist/m0saic/media/index.js +31 -0
- package/dist/m0saic/media/logo-animate/index.d.ts +1 -0
- package/dist/m0saic/media/logo-animate/index.js +17 -0
- package/dist/m0saic/media/logo-animate/v1/default-logo.d.ts +12 -0
- package/dist/m0saic/media/logo-animate/v1/default-logo.js +49 -0
- package/dist/m0saic/media/logo-animate/v1/expressions.d.ts +66 -0
- package/dist/m0saic/media/logo-animate/v1/expressions.js +107 -0
- package/dist/m0saic/media/logo-animate/v1/index.d.ts +2 -0
- package/dist/m0saic/media/logo-animate/v1/index.js +5 -0
- package/dist/m0saic/media/logo-animate/v1/layout.d.ts +29 -0
- package/dist/m0saic/media/logo-animate/v1/layout.js +43 -0
- package/dist/m0saic/media/logo-animate/v1/logo-animate.d.ts +106 -0
- package/dist/m0saic/media/logo-animate/v1/logo-animate.js +732 -0
- package/dist/m0saic/media/logo-animate/v1/svg-source.d.ts +63 -0
- package/dist/m0saic/media/logo-animate/v1/svg-source.js +127 -0
- package/dist/m0saic/media/logo-animate/v1/tutorial.d.ts +16 -0
- package/dist/m0saic/media/logo-animate/v1/tutorial.js +378 -0
- package/dist/m0saic/media/metadata-stamp/index.d.ts +1 -0
- package/dist/m0saic/media/metadata-stamp/index.js +17 -0
- package/dist/m0saic/media/metadata-stamp/v1/assets/cover-frame.jpg +0 -0
- package/dist/m0saic/media/metadata-stamp/v1/format-date.d.ts +52 -0
- package/dist/m0saic/media/metadata-stamp/v1/format-date.js +128 -0
- package/dist/m0saic/media/metadata-stamp/v1/index.d.ts +4 -0
- package/dist/m0saic/media/metadata-stamp/v1/index.js +10 -0
- package/dist/m0saic/media/metadata-stamp/v1/metadata-stamp.d.ts +58 -0
- package/dist/m0saic/media/metadata-stamp/v1/metadata-stamp.js +534 -0
- package/dist/m0saic/media/qr/_shared/brandMCenter.d.ts +28 -0
- package/dist/m0saic/media/qr/_shared/brandMCenter.js +52 -0
- package/dist/m0saic/media/qr/animate/v1/expressions.d.ts +164 -0
- package/dist/m0saic/media/qr/animate/v1/expressions.js +251 -0
- package/dist/m0saic/media/qr/animate/v1/index.d.ts +2 -0
- package/dist/m0saic/media/qr/animate/v1/index.js +9 -0
- package/dist/m0saic/media/qr/animate/v1/qr-animate.d.ts +171 -0
- package/dist/m0saic/media/qr/animate/v1/qr-animate.js +775 -0
- package/dist/m0saic/media/qr/animate/v2/index.d.ts +2 -0
- package/dist/m0saic/media/qr/animate/v2/index.js +9 -0
- package/dist/m0saic/media/qr/animate/v2/qr-animate.d.ts +64 -0
- package/dist/m0saic/media/qr/animate/v2/qr-animate.js +341 -0
- package/dist/m0saic/media/qr/basic/v1/index.d.ts +1 -0
- package/dist/m0saic/media/qr/basic/v1/index.js +10 -0
- package/dist/m0saic/media/qr/basic/v1/qr.d.ts +24 -0
- package/dist/m0saic/media/qr/basic/v1/qr.js +132 -0
- package/dist/m0saic/media/qr/code/v1/index.d.ts +2 -0
- package/dist/m0saic/media/qr/code/v1/index.js +9 -0
- package/dist/m0saic/media/qr/code/v1/qr-code.d.ts +135 -0
- package/dist/m0saic/media/qr/code/v1/qr-code.js +611 -0
- package/dist/m0saic/media/qr/index.d.ts +7 -0
- package/dist/m0saic/media/qr/index.js +19 -0
- package/dist/m0saic/media/qr/rounded/v1/index.d.ts +1 -0
- package/dist/m0saic/media/qr/rounded/v1/index.js +9 -0
- package/dist/m0saic/media/qr/rounded/v1/qr-rounded.d.ts +68 -0
- package/dist/m0saic/media/qr/rounded/v1/qr-rounded.js +338 -0
- package/dist/m0saic/media/qr/stamp/v1/assets/cover-frame.jpg +0 -0
- package/dist/m0saic/media/qr/stamp/v1/qr-stamp-custom.d.ts +44 -0
- package/dist/m0saic/media/qr/stamp/v1/qr-stamp-custom.js +389 -0
- package/dist/m0saic/media/qr/stamp-video/v1/expressions.d.ts +10 -0
- package/dist/m0saic/media/qr/stamp-video/v1/expressions.js +18 -0
- package/dist/m0saic/media/qr/stamp-video/v1/gleamBand.d.ts +115 -0
- package/dist/m0saic/media/qr/stamp-video/v1/gleamBand.js +206 -0
- package/dist/m0saic/media/qr/stamp-video/v1/index.d.ts +2 -0
- package/dist/m0saic/media/qr/stamp-video/v1/index.js +9 -0
- package/dist/m0saic/media/qr/stamp-video/v1/qr-stamp.d.ts +82 -0
- package/dist/m0saic/media/qr/stamp-video/v1/qr-stamp.js +424 -0
- package/dist/m0saic/media/screencap_grid/index.d.ts +3 -0
- package/dist/m0saic/media/screencap_grid/index.js +9 -0
- package/dist/m0saic/media/screencap_grid/internal/index.d.ts +1 -0
- package/dist/m0saic/media/screencap_grid/internal/index.js +5 -0
- package/dist/m0saic/media/screencap_grid/internal/info_pane.d.ts +13 -0
- package/dist/m0saic/media/screencap_grid/internal/info_pane.js +130 -0
- package/dist/m0saic/media/screencap_grid/v1/index.d.ts +1 -0
- package/dist/m0saic/media/screencap_grid/v1/index.js +5 -0
- package/dist/m0saic/media/screencap_grid/v1/screencap-grid.d.ts +162 -0
- package/dist/m0saic/media/screencap_grid/v1/screencap-grid.js +690 -0
- package/dist/m0saic/media/screencap_grid/v2/assets/tutorial-sheet.jpg +0 -0
- package/dist/m0saic/media/screencap_grid/v2/index.d.ts +1 -0
- package/dist/m0saic/media/screencap_grid/v2/index.js +5 -0
- package/dist/m0saic/media/screencap_grid/v2/screencap-grid-cover-assets.d.ts +9 -0
- package/dist/m0saic/media/screencap_grid/v2/screencap-grid-cover-assets.js +12 -0
- package/dist/m0saic/media/screencap_grid/v2/screencap-grid-cover.d.ts +97 -0
- package/dist/m0saic/media/screencap_grid/v2/screencap-grid-cover.js +367 -0
- package/dist/m0saic/media/screencap_grid/v2/screencap-grid-tutorial.d.ts +38 -0
- package/dist/m0saic/media/screencap_grid/v2/screencap-grid-tutorial.js +530 -0
- package/dist/m0saic/media/screencap_grid/v2/screencap-grid.d.ts +194 -0
- package/dist/m0saic/media/screencap_grid/v2/screencap-grid.js +615 -0
- package/dist/m0saic/media/screencap_grid_aspect_safe/index.d.ts +1 -0
- package/dist/m0saic/media/screencap_grid_aspect_safe/index.js +5 -0
- package/dist/m0saic/media/screencap_grid_aspect_safe/v1/assets/pair-sheet.jpg +0 -0
- package/dist/m0saic/media/screencap_grid_aspect_safe/v1/index.d.ts +1 -0
- package/dist/m0saic/media/screencap_grid_aspect_safe/v1/index.js +5 -0
- package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe-cover.d.ts +18 -0
- package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe-cover.js +191 -0
- package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe-tutorial.d.ts +13 -0
- package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe-tutorial.js +355 -0
- package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe.d.ts +179 -0
- package/dist/m0saic/media/screencap_grid_aspect_safe/v1/screencap-grid-aspect-safe.js +544 -0
- package/dist/m0saic/media/scroll_wall/index.d.ts +1 -0
- package/dist/m0saic/media/scroll_wall/index.js +5 -0
- package/dist/m0saic/media/scroll_wall/v1/geometry.d.ts +131 -0
- package/dist/m0saic/media/scroll_wall/v1/geometry.js +172 -0
- package/dist/m0saic/media/scroll_wall/v1/index.d.ts +1 -0
- package/dist/m0saic/media/scroll_wall/v1/index.js +5 -0
- package/dist/m0saic/media/scroll_wall/v1/motion.d.ts +114 -0
- package/dist/m0saic/media/scroll_wall/v1/motion.js +141 -0
- package/dist/m0saic/media/scroll_wall/v1/scroll-wall.d.ts +182 -0
- package/dist/m0saic/media/scroll_wall/v1/scroll-wall.js +432 -0
- package/dist/m0saic/media/subtitle-burn/index.d.ts +1 -0
- package/dist/m0saic/media/subtitle-burn/index.js +17 -0
- package/dist/m0saic/media/subtitle-burn/v1/assets/cover-frame.jpg +0 -0
- package/dist/m0saic/media/subtitle-burn/v1/index.d.ts +1 -0
- package/dist/m0saic/media/subtitle-burn/v1/index.js +6 -0
- package/dist/m0saic/media/subtitle-burn/v1/subtitle-burn-cover.d.ts +13 -0
- package/dist/m0saic/media/subtitle-burn/v1/subtitle-burn-cover.js +196 -0
- package/dist/m0saic/media/subtitle-burn/v1/subtitle-burn.d.ts +137 -0
- package/dist/m0saic/media/subtitle-burn/v1/subtitle-burn.js +603 -0
- package/dist/m0saic/media/trickplay/index.d.ts +1 -0
- package/dist/m0saic/media/trickplay/index.js +17 -0
- package/dist/m0saic/media/trickplay/v1/index.d.ts +4 -0
- package/dist/m0saic/media/trickplay/v1/index.js +18 -0
- package/dist/m0saic/media/trickplay/v1/pipeline.d.ts +51 -0
- package/dist/m0saic/media/trickplay/v1/pipeline.js +180 -0
- package/dist/m0saic/media/trickplay/v1/plan.d.ts +65 -0
- package/dist/m0saic/media/trickplay/v1/plan.js +76 -0
- package/dist/m0saic/media/trickplay/v1/sidecars.d.ts +79 -0
- package/dist/m0saic/media/trickplay/v1/sidecars.js +89 -0
- package/dist/m0saic/media/trickplay/v1/trickplay.d.ts +40 -0
- package/dist/m0saic/media/trickplay/v1/trickplay.js +123 -0
- package/dist/m0saic/media/video_to_png_sequence/index.d.ts +1 -0
- package/dist/m0saic/media/video_to_png_sequence/index.js +5 -0
- package/dist/m0saic/media/video_to_png_sequence/v1/index.d.ts +1 -0
- package/dist/m0saic/media/video_to_png_sequence/v1/index.js +5 -0
- package/dist/m0saic/media/video_to_png_sequence/v1/video-to-png-sequence.d.ts +37 -0
- package/dist/m0saic/media/video_to_png_sequence/v1/video-to-png-sequence.js +234 -0
- package/dist/m0saic/media/watermark/index.d.ts +1 -0
- package/dist/m0saic/media/watermark/index.js +17 -0
- package/dist/m0saic/media/watermark/v1/adaptive.d.ts +85 -0
- package/dist/m0saic/media/watermark/v1/adaptive.js +162 -0
- package/dist/m0saic/media/watermark/v1/content.d.ts +56 -0
- package/dist/m0saic/media/watermark/v1/content.js +160 -0
- package/dist/m0saic/media/watermark/v1/geometry.d.ts +138 -0
- package/dist/m0saic/media/watermark/v1/geometry.js +247 -0
- package/dist/m0saic/media/watermark/v1/index.d.ts +3 -0
- package/dist/m0saic/media/watermark/v1/index.js +5 -0
- package/dist/m0saic/media/watermark/v1/pageGrid.d.ts +105 -0
- package/dist/m0saic/media/watermark/v1/pageGrid.js +203 -0
- package/dist/m0saic/media/watermark/v1/pipeline.d.ts +68 -0
- package/dist/m0saic/media/watermark/v1/pipeline.js +324 -0
- package/dist/m0saic/media/watermark/v1/watermark.d.ts +88 -0
- package/dist/m0saic/media/watermark/v1/watermark.js +452 -0
- package/dist/m0saic/meta/camera-debug/index.d.ts +1 -0
- package/dist/m0saic/meta/camera-debug/index.js +17 -0
- package/dist/m0saic/meta/camera-debug/v1/camera-debug.d.ts +98 -0
- package/dist/m0saic/meta/camera-debug/v1/camera-debug.js +490 -0
- package/dist/m0saic/meta/fixture-fetcher/index.d.ts +1 -0
- package/dist/m0saic/meta/fixture-fetcher/index.js +17 -0
- package/dist/m0saic/meta/fixture-fetcher/v1/fixture-fetcher.d.ts +76 -0
- package/dist/m0saic/meta/fixture-fetcher/v1/fixture-fetcher.js +159 -0
- package/dist/m0saic/meta/hot-reload-smoke/index.d.ts +1 -0
- package/dist/m0saic/meta/hot-reload-smoke/index.js +17 -0
- package/dist/m0saic/meta/hot-reload-smoke/v1/hot-reload-smoke.d.ts +50 -0
- package/dist/m0saic/meta/hot-reload-smoke/v1/hot-reload-smoke.js +131 -0
- package/dist/m0saic/meta/index.d.ts +13 -0
- package/dist/m0saic/meta/index.js +29 -0
- package/dist/m0saic/meta/post-mortem/index.d.ts +1 -0
- package/dist/m0saic/meta/post-mortem/index.js +17 -0
- package/dist/m0saic/meta/post-mortem/v1/assets/human.png +0 -0
- package/dist/m0saic/meta/post-mortem/v1/assets/robot.png +0 -0
- package/dist/m0saic/meta/post-mortem/v1/post-mortem.d.ts +47 -0
- package/dist/m0saic/meta/post-mortem/v1/post-mortem.js +634 -0
- package/dist/m0saic/meta/upstream-echo/index.d.ts +1 -0
- package/dist/m0saic/meta/upstream-echo/index.js +17 -0
- package/dist/m0saic/meta/upstream-echo/v1/upstream-echo.d.ts +52 -0
- package/dist/m0saic/meta/upstream-echo/v1/upstream-echo.js +138 -0
- package/dist/m0saic/primitives/grid/index.d.ts +2 -0
- package/dist/m0saic/primitives/grid/index.js +7 -0
- package/dist/m0saic/primitives/grid/v1/grid.d.ts +85 -0
- package/dist/m0saic/primitives/grid/v1/grid.js +217 -0
- package/dist/m0saic/primitives/grid/v2/grid.d.ts +80 -0
- package/dist/m0saic/primitives/grid/v2/grid.js +150 -0
- package/dist/m0saic/primitives/index.d.ts +1 -0
- package/dist/m0saic/primitives/index.js +17 -0
- package/dist/m0saic/social/index.d.ts +1 -0
- package/dist/m0saic/social/index.js +17 -0
- package/dist/m0saic/social/quote-card/index.d.ts +1 -0
- package/dist/m0saic/social/quote-card/index.js +17 -0
- package/dist/m0saic/social/quote-card/v1/index.d.ts +2 -0
- package/dist/m0saic/social/quote-card/v1/index.js +5 -0
- package/dist/m0saic/social/quote-card/v1/layout.d.ts +119 -0
- package/dist/m0saic/social/quote-card/v1/layout.js +323 -0
- package/dist/m0saic/social/quote-card/v1/quote-card.d.ts +51 -0
- package/dist/m0saic/social/quote-card/v1/quote-card.js +310 -0
- package/dist/m0saic/story/index.d.ts +2 -0
- package/dist/m0saic/story/index.js +20 -0
- package/dist/m0saic/story/narrated-chapters/index.d.ts +1 -0
- package/dist/m0saic/story/narrated-chapters/index.js +17 -0
- package/dist/m0saic/story/narrated-chapters/v1/captions.d.ts +42 -0
- package/dist/m0saic/story/narrated-chapters/v1/captions.js +200 -0
- package/dist/m0saic/story/narrated-chapters/v1/demo-fixture.d.ts +13 -0
- package/dist/m0saic/story/narrated-chapters/v1/demo-fixture.js +52 -0
- package/dist/m0saic/story/narrated-chapters/v1/index.d.ts +2 -0
- package/dist/m0saic/story/narrated-chapters/v1/index.js +5 -0
- package/dist/m0saic/story/narrated-chapters/v1/kenburns.d.ts +50 -0
- package/dist/m0saic/story/narrated-chapters/v1/kenburns.js +0 -0
- package/dist/m0saic/story/narrated-chapters/v1/layout.d.ts +103 -0
- package/dist/m0saic/story/narrated-chapters/v1/layout.js +162 -0
- package/dist/m0saic/story/narrated-chapters/v1/narrated-chapters.d.ts +22 -0
- package/dist/m0saic/story/narrated-chapters/v1/narrated-chapters.js +160 -0
- package/dist/m0saic/story/narrated-chapters/v1/pipeline.d.ts +43 -0
- package/dist/m0saic/story/narrated-chapters/v1/pipeline.js +94 -0
- package/dist/m0saic/story/narrated-chapters/v1/plan.d.ts +144 -0
- package/dist/m0saic/story/narrated-chapters/v1/plan.js +372 -0
- package/dist/m0saic/story/narrated-chapters/v1/props.d.ts +147 -0
- package/dist/m0saic/story/narrated-chapters/v1/props.js +205 -0
- package/dist/m0saic/story/narrated-chapters/v1/scenes/body.d.ts +64 -0
- package/dist/m0saic/story/narrated-chapters/v1/scenes/body.js +253 -0
- package/dist/m0saic/story/narrated-chapters/v1/scenes/card.d.ts +40 -0
- package/dist/m0saic/story/narrated-chapters/v1/scenes/card.js +201 -0
- package/dist/m0saic/story/narrated-chapters/v1/theme.d.ts +25 -0
- package/dist/m0saic/story/narrated-chapters/v1/theme.js +38 -0
- package/dist/m0saic/story/scrapbook/v1/document.d.ts +41 -0
- package/dist/m0saic/story/scrapbook/v1/document.js +124 -0
- package/dist/m0saic/story/scrapbook/v1/index.d.ts +1 -0
- package/dist/m0saic/story/scrapbook/v1/index.js +9 -0
- package/dist/m0saic/story/scrapbook/v1/page.d.ts +34 -0
- package/dist/m0saic/story/scrapbook/v1/page.js +121 -0
- package/dist/m0saic/story/scrapbook/v1/pages.d.ts +29 -0
- package/dist/m0saic/story/scrapbook/v1/pages.js +37 -0
- package/dist/m0saic/story/scrapbook/v1/pipeline.d.ts +44 -0
- package/dist/m0saic/story/scrapbook/v1/pipeline.js +130 -0
- package/dist/m0saic/story/scrapbook/v1/placeholder.d.ts +22 -0
- package/dist/m0saic/story/scrapbook/v1/placeholder.js +51 -0
- package/dist/m0saic/story/scrapbook/v1/props.d.ts +66 -0
- package/dist/m0saic/story/scrapbook/v1/props.js +80 -0
- package/dist/m0saic/story/scrapbook/v1/scrapbook.d.ts +23 -0
- package/dist/m0saic/story/scrapbook/v1/scrapbook.js +77 -0
- package/dist/m0saic/theming/index.d.ts +1 -0
- package/dist/m0saic/theming/index.js +17 -0
- package/dist/m0saic/theming/v1/brand-m-glyph.d.ts +14 -0
- package/dist/m0saic/theming/v1/brand-m-glyph.js +12 -0
- package/dist/m0saic/theming/v1/index.d.ts +2 -0
- package/dist/m0saic/theming/v1/index.js +16 -0
- package/dist/m0saic/theming/v1/theme-tokens.d.ts +71 -0
- package/dist/m0saic/theming/v1/theme-tokens.js +111 -0
- package/dist/m0saic/theming/v1/theming.d.ts +18 -0
- package/dist/m0saic/theming/v1/theming.js +94 -0
- package/dist/m0saic/theming/v1/token-sheet.d.ts +23 -0
- package/dist/m0saic/theming/v1/token-sheet.js +191 -0
- package/dist/m0saic/web/index.d.ts +1 -0
- package/dist/m0saic/web/index.js +17 -0
- package/dist/m0saic/web/page-skeleton/v1/capture/capture-snippet-source.d.ts +1 -0
- package/dist/m0saic/web/page-skeleton/v1/capture/capture-snippet-source.js +528 -0
- package/dist/m0saic/web/page-skeleton/v1/index.d.ts +1 -0
- package/dist/m0saic/web/page-skeleton/v1/index.js +5 -0
- package/dist/m0saic/web/page-skeleton/v1/layout.d.ts +107 -0
- package/dist/m0saic/web/page-skeleton/v1/layout.js +246 -0
- package/dist/m0saic/web/page-skeleton/v1/page-skeleton.d.ts +148 -0
- package/dist/m0saic/web/page-skeleton/v1/page-skeleton.js +787 -0
- package/dist/m0saic/web/page-skeleton/v1/sample-capture.d.ts +7 -0
- package/dist/m0saic/web/page-skeleton/v1/sample-capture.js +50 -0
- package/dist/m0saic/web/page-skeleton/v1/schema.d.ts +35 -0
- package/dist/m0saic/web/page-skeleton/v1/schema.js +132 -0
- package/dist/m0saic/wireframe/animated/v1/animated-wireframe.d.ts +93 -0
- package/dist/m0saic/wireframe/animated/v1/animated-wireframe.js +580 -0
- package/dist/m0saic/wireframe/animated/v1/index.d.ts +1 -0
- package/dist/m0saic/wireframe/animated/v1/index.js +5 -0
- package/dist/m0saic/wireframe/base/v1/index.d.ts +1 -0
- package/dist/m0saic/wireframe/base/v1/index.js +5 -0
- package/dist/m0saic/wireframe/base/v1/wireframe.d.ts +68 -0
- package/dist/m0saic/wireframe/base/v1/wireframe.js +372 -0
- package/dist/m0saic/wireframe/base/v2/index.d.ts +2 -0
- package/dist/m0saic/wireframe/base/v2/index.js +9 -0
- package/dist/m0saic/wireframe/base/v2/wireframe.d.ts +166 -0
- package/dist/m0saic/wireframe/base/v2/wireframe.js +1181 -0
- package/dist/m0saic/wireframe/index.d.ts +4 -0
- package/dist/m0saic/wireframe/index.js +16 -0
- package/dist/m0saic/wireframe/utils/paperGrid.d.ts +53 -0
- package/dist/m0saic/wireframe/utils/paperGrid.js +91 -0
- package/dist/m0saic/wireframe/utils/wireframeCell.d.ts +35 -0
- package/dist/m0saic/wireframe/utils/wireframeCell.js +278 -0
- package/dist/registry.d.ts +4 -0
- package/dist/registry.js +7 -0
- package/dist/repo.d.ts +11 -0
- package/dist/repo.js +39 -0
- package/dist/template-registry.d.ts +18 -0
- package/dist/template-registry.js +888 -0
- package/dist/web.d.ts +35 -0
- package/dist/web.js +88 -0
- package/dist/webTemplateIds.d.ts +6 -0
- package/dist/webTemplateIds.js +80 -0
- package/package.json +52 -0
- package/template-manifest.json +1635 -0
- package/web-template-ids.json +84 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlpineStatCard = void 0;
|
|
4
|
+
const types_1 = require("@m0saic/types");
|
|
5
|
+
const template_utils_1 = require("@m0saic/template-utils");
|
|
6
|
+
const alpine_card_1 = require("../../_shared/alpine-card");
|
|
7
|
+
const onboarding_cover_1 = require("../../../_shared/onboarding-cover");
|
|
8
|
+
const alpine_glyphs_1 = require("../../_shared/alpine-glyphs");
|
|
9
|
+
const alpine_theme_1 = require("../../_shared/alpine-theme");
|
|
10
|
+
const alpine_anim_1 = require("../../_shared/alpine-anim");
|
|
11
|
+
// Alpine pack citizen: all colors come from the shared alpine theme (light by
|
|
12
|
+
// default, `preset:"dark"` for the night look). The FFmpeg Weekly Pulse hero
|
|
13
|
+
// keeps its exact dark KPI look by passing `preset:"dark"` + its own `accent`
|
|
14
|
+
// (bright green) + `backgroundColor` (#161b22) as overrides — explicit props win.
|
|
15
|
+
const GLYPH_COLOR = "#0d1117"; // dark glyph cut into the accent chip
|
|
16
|
+
const STAT_CARD_ID = "@m0saic/alpine/stat-card/v1";
|
|
17
|
+
// Band weights (header / value / delta) + inner gaps, as row weights.
|
|
18
|
+
const BANDS = { padY: 9, header: 22, gap1: 4, value: 42, gap2: 4, delta: 18, padYb: 9 };
|
|
19
|
+
// Font sizes as a fraction of card height; capped by fit:"contain".
|
|
20
|
+
const LABEL_FRAC = 0.11, VALUE_FRAC = 0.30, DELTA_FRAC = 0.115, SUB_FRAC = 0.085;
|
|
21
|
+
const PAD_FRAC = 0.085; // card inner padding (fraction of min dimension)
|
|
22
|
+
// Placement laundering: the card's elements ride placeInsetPieces — cells
|
|
23
|
+
// quantize outward to a divisor lattice (precision bounds at ~120, the modern
|
|
24
|
+
// canvas-family gcd) and each source carries a placement.inset that paints it
|
|
25
|
+
// back on the EXACT computed rect. Zero visual drift (the previous
|
|
26
|
+
// placeOptimizedPieces drift budget moved edges ≈1–2px); same escape from the
|
|
27
|
+
// coprime-pixel precision blowup (exact placeRects pins the card to 100%
|
|
28
|
+
// precision / a huge m0 at odd canvases). Hostile prime-dim cells degrade to
|
|
29
|
+
// exact placement on that axis (the same degradation drift had there).
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Leaves
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
function txt(text, fontSize, color, hAlign = "left") {
|
|
34
|
+
// FIXED font (NO fit:"contain" — contain scales text to the cell HEIGHT and then
|
|
35
|
+
// clips the width on a long line, which cut off the "%" / "vs last week"). Callers
|
|
36
|
+
// size each font to fit its cell WIDTH up front (capFont), so a fixed font never clips.
|
|
37
|
+
return { type: "text", visual: { backgroundColor: "black@0" }, layers: [{ content: { kind: "literal", text: text || " " }, style: { fontSize, fontColor: color }, placement: { hAlign, vAlign: "middle" } }] };
|
|
38
|
+
}
|
|
39
|
+
function exprTxt(expr, fontSize, color) {
|
|
40
|
+
return { type: "text", renderMode: { kind: "video" }, visual: { backgroundColor: "black@0" }, layers: [{ content: { kind: "expr", expr, eval: "frame" }, style: { fontSize, fontColor: color }, placement: { hAlign: "left", vAlign: "middle" } }] };
|
|
41
|
+
}
|
|
42
|
+
/** SVG-triangle arrow (color tile masked by an equilateral path; crisp + undistorted). */
|
|
43
|
+
function triangle(dir, color, cellW, cellH) {
|
|
44
|
+
const S = Math.min(cellW, cellH) * 0.72, cx = cellW / 2, cy = cellH / 2, half = S / 2, ht = S * 0.866;
|
|
45
|
+
const top = cy - ht / 2, bot = cy + ht / 2, n = (x) => Math.round(x * 10) / 10;
|
|
46
|
+
const localPath = dir === "up"
|
|
47
|
+
? `M ${n(cx)} ${n(top)} L ${n(cx + half)} ${n(bot)} L ${n(cx - half)} ${n(bot)} Z`
|
|
48
|
+
: `M ${n(cx - half)} ${n(top)} L ${n(cx + half)} ${n(top)} L ${n(cx)} ${n(bot)} Z`;
|
|
49
|
+
return (0, template_utils_1.makeColorTile)(color, { mask: { kind: "inline-mask", localPath, bounds: { x: 0, y: 0, width: cellW, height: cellH } } });
|
|
50
|
+
}
|
|
51
|
+
const propsSchema = (0, template_utils_1.definePropsSchema)({
|
|
52
|
+
// ── Primary props — flat, always visible (declaration order = display order). ──
|
|
53
|
+
label: { type: "string", required: true, description: "Metric label (e.g. \"Commits\").", meta: { ui: { label: "Label", order: 1 } } },
|
|
54
|
+
value: { type: "string", required: true, description: "Headline value, pre-formatted (e.g. \"1,243\", \"96.7%\").", meta: { ui: { label: "Value", order: 2 } } },
|
|
55
|
+
// Text inputs together, then the enum toggles together, then the color pickers
|
|
56
|
+
// together — like controls near like controls.
|
|
57
|
+
delta: { type: "string", required: false, description: "Signed change, pre-formatted (e.g. \"+12.4%\"). Omit for no delta.", meta: { ui: { label: "Delta", order: 3 } } },
|
|
58
|
+
sublabel: { type: "string", required: false, description: "Muted caption next to the delta (e.g. \"vs last week\").", meta: { ui: { label: "Sublabel", order: 4 } } },
|
|
59
|
+
direction: { type: "string", required: false, description: "Delta direction — arrow + color (green up / red down / muted flat).", meta: { constraints: { oneOf: ["up", "down", "flat"] }, ui: { label: "Direction", order: 5 } } },
|
|
60
|
+
icon: { type: "string", required: false, description: "Named glyph for the accent chip (shared alpine catalog). A derived HUMAN view of the raw iconPath agent prop: picking a name WRITES the SVG path into iconPath (the stored, code-friendly value); a bespoke agent-written path shows as no selection.", meta: { constraints: { oneOf: alpine_glyphs_1.ALPINE_GLYPH_NAMES }, ui: { label: "Icon", order: 6, consumer: "human" }, control: { syncsTo: [{ prop: "iconPath", map: { kind: "lookup", table: alpine_glyphs_1.ALPINE_GLYPHS } }] } } },
|
|
61
|
+
renderMode: { type: "string", required: false, description: "Reveal quality/cost. \"premium\" (default): soft alpha crossfade — best look, a per-pixel geq. \"light\": geq-free (header static, delta band slides). The FFmpeg pulse hero opts into light.", meta: { constraints: { oneOf: ["premium", "light"] }, ui: { label: "Render Mode", order: 7 } } },
|
|
62
|
+
preset: { type: "string", required: false, description: "Alpine theme variant.", meta: { constraints: { oneOf: ["light", "dark"] }, ui: { label: "Preset", order: 8 } } },
|
|
63
|
+
accent: { type: "string", required: false, description: "Accent color (icon chip + up-delta). Defaults to the alpine primary.", meta: { constraints: { isColor: true }, control: { placeholder: "theme primary", colorPicker: true, defaultColor: "#2563EB" }, ui: { label: "Accent", order: 9 } } },
|
|
64
|
+
backgroundColor: { type: "string", required: false, description: "Card surface color. \"black@0\" → transparent (composed under a chrome).", meta: { constraints: { isColor: true }, control: { placeholder: "theme card", colorPicker: true, defaultColor: "#FFFFFF" }, ui: { label: "Card color", order: 10 } } },
|
|
65
|
+
// ── Collapsible groups (surfaced — nice human controls, NOT agent props). ──
|
|
66
|
+
anim: { type: "group", required: false, description: "Intro reveal: reduceMotion, intro length, easing, count-up.", meta: { ui: { label: "Animation", order: 11, collapsedByDefault: true } }, fields: { ...alpine_anim_1.ALPINE_ANIM_FIELDS, countUp: (0, alpine_anim_1.fBool)("Count up", "Count the value up on intro.") } },
|
|
67
|
+
theme: { type: "group", required: false, description: "Opt into a theme source. Uses the local palette by default; set a producer slug + namespace to pull shared design tokens. Explicit accent/card color still win.", meta: { ui: { label: "Theme", order: 12, collapsedByDefault: true } }, fields: { slug: (0, alpine_anim_1.fStr)("Producer slug", "Producer template to seed tokens from (e.g. \"@m0saic/theming/v1\").", "preset palette (no producer)"), preset: (0, alpine_anim_1.fStr)("Preset", "Producer preset/variant (light | dark | high-contrast; producer-defined).", "producer default"), namespace: (0, alpine_anim_1.fStr)("Namespace", "Upstream alias to read tokens from. Default \"theme\".", "theme"), forceFetch: (0, alpine_anim_1.fBool)("Force fetch", "Re-seed via the slug even if the namespace is populated.") } },
|
|
68
|
+
// ── Agent prop — the RAW SVG path (code-friendly storage; wins over `icon`). ──
|
|
69
|
+
iconPath: { type: "string", required: false, description: "Glyph SVG path d (24×24 viewBox), drawn as a mask on the accent chip — the raw value behind the friendly `icon` knob, and the override that wins. Omit both for the bare colored square.", meta: { control: { placeholder: "from Icon (catalog glyph)" }, ui: { label: "Icon path (SVG d)", order: 13, consumer: "agent" } } },
|
|
70
|
+
// ── Debug — hidden by default; the sandbox / matrix / Make iteration flip it true. ──
|
|
71
|
+
debugGeometry: { type: "boolean", required: false, description: "Dev-only geometry contract view: renders the contract wireframe instead of the card — every element GREEN when its computed rect survived to the pixels at this canvas, realized RED + intended amber ghost when not. Deterministic default false; production never sets it.", meta: { ui: { label: "Debug geometry", order: 14, collapsedByDefault: true } } },
|
|
72
|
+
});
|
|
73
|
+
exports.AlpineStatCard = {
|
|
74
|
+
id: (0, types_1.asTemplateId)(STAT_CARD_ID),
|
|
75
|
+
label: "Alpine Stat Card",
|
|
76
|
+
version: 1,
|
|
77
|
+
description: "Alpine KPI stat card — friendly mobile-marketing card: accent icon + muted label, dominant count-up value, SVG-triangle delta (green up / red down) + sublabel. Light by default; \"dark\" preset for the night look (the FFmpeg Weekly Pulse hero passes preset:\"dark\" + its own accent/card).",
|
|
78
|
+
capabilities: { tier: "core" },
|
|
79
|
+
primitive: true,
|
|
80
|
+
tags: ["data-viz", "alpine", "stat-card", "kpi", "animated", "analysts", "marketers", "metric", "number"],
|
|
81
|
+
outputHints: { format: { kind: "video", container: "mp4" }, width: 1280, height: 800, fps: 30, durationMs: 3000 }, // landscape 16:10 — matches the Alpine pack siblings (donut/timeline/kpi). The vertical band stack fills wide canvases cleanly; nested tile usage (pulse beats) passes its own ctx.target and is unaffected.
|
|
82
|
+
propsSchema,
|
|
83
|
+
defaultProps: {
|
|
84
|
+
anim: { reduceMotion: false, introFrac: 0.7, easing: "easeOut", countUp: true },
|
|
85
|
+
debugGeometry: false,
|
|
86
|
+
theme: { forceFetch: false },
|
|
87
|
+
label: "Commits",
|
|
88
|
+
value: "1,243",
|
|
89
|
+
delta: "+12.4%",
|
|
90
|
+
direction: "up",
|
|
91
|
+
sublabel: "vs last week",
|
|
92
|
+
icon: "commits",
|
|
93
|
+
renderMode: "premium",
|
|
94
|
+
preset: "light",
|
|
95
|
+
},
|
|
96
|
+
async render(props, ctx) {
|
|
97
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
98
|
+
const W = Math.max(1, Math.round(ctx.target.width));
|
|
99
|
+
const H = Math.max(1, Math.round(ctx.target.height));
|
|
100
|
+
// Theming: the shared alpine theme (light default). A producer overrides
|
|
101
|
+
// per-key; explicit accent/backgroundColor win (the hero passes both + dark).
|
|
102
|
+
const theme = await (0, alpine_theme_1.resolveAlpineTheme)((_a = props.preset) !== null && _a !== void 0 ? _a : "light", ctx, props.theme);
|
|
103
|
+
const accent = (_b = props.accent) !== null && _b !== void 0 ? _b : theme.primary;
|
|
104
|
+
const cardBg = (_c = props.backgroundColor) !== null && _c !== void 0 ? _c : theme.card;
|
|
105
|
+
const anim = (_d = props.anim) !== null && _d !== void 0 ? _d : {};
|
|
106
|
+
const reduceMotion = (_e = anim.reduceMotion) !== null && _e !== void 0 ? _e : false;
|
|
107
|
+
const animOn = !reduceMotion;
|
|
108
|
+
const totalSec = ((_f = ctx.target.durationMs) !== null && _f !== void 0 ? _f : 3000) / 1000;
|
|
109
|
+
const introSec = anim.introMs != null ? anim.introMs / 1000 : totalSec * ((_g = anim.introFrac) !== null && _g !== void 0 ? _g : 0.7);
|
|
110
|
+
const doFade = ((_h = anim.fade) !== null && _h !== void 0 ? _h : true) && animOn;
|
|
111
|
+
const animateValue = ((_j = anim.countUp) !== null && _j !== void 0 ? _j : true) && animOn && /\d/.test(props.value);
|
|
112
|
+
const isLight = ((_k = props.renderMode) !== null && _k !== void 0 ? _k : "premium") === "light";
|
|
113
|
+
// Reveal cascade timing. premium fades the header too; light keeps it static.
|
|
114
|
+
const labelFade = [0, introSec * 0.3];
|
|
115
|
+
const deltaFade = [introSec * 0.4, introSec * 0.4];
|
|
116
|
+
const subFade = [introSec * 0.6, introSec * 0.35];
|
|
117
|
+
const pad = Math.round(Math.min(W, H) * PAD_FRAC);
|
|
118
|
+
const innerW = Math.max(1, W - 2 * pad), innerH = Math.max(1, H - 2 * pad);
|
|
119
|
+
const sum = Object.values(BANDS).reduce((a, b) => a + b, 0);
|
|
120
|
+
const px = (w) => Math.round((w / sum) * innerH);
|
|
121
|
+
const headerH = px(BANDS.header), deltaH = px(BANDS.delta);
|
|
122
|
+
// ── Cell widths FIRST, so every font can be capped to fit its own cell ──
|
|
123
|
+
// iconSide caps at 0.18·min-dim: bands are FRACTIONS of height, so at tall
|
|
124
|
+
// portrait cards an uncapped header band minted a ~195px chip towering
|
|
125
|
+
// over its width-capped label (gate-10 sweep catch). Landscape defaults
|
|
126
|
+
// sit under the cap — byte-identical.
|
|
127
|
+
const iconSide = Math.min(headerH, Math.round(Math.min(W, H) * 0.18));
|
|
128
|
+
const gapW = Math.round(iconSide * 0.42);
|
|
129
|
+
const labelCellW = Math.max(1, innerW - iconSide - gapW);
|
|
130
|
+
const dir = (_l = props.direction) !== null && _l !== void 0 ? _l : "flat";
|
|
131
|
+
const hasDelta = !!(props.delta && props.delta.trim() !== "");
|
|
132
|
+
const hasArrow = hasDelta && (dir === "up" || dir === "down");
|
|
133
|
+
// TWO-PASS arrow sizing: the arrow must track the DELTA TEXT, not the band
|
|
134
|
+
// (the band is a height fraction — at portrait it minted a 73px triangle
|
|
135
|
+
// beside 17px text). Pass 1 sizes the font against the band-derived arrow;
|
|
136
|
+
// pass 2 shrinks the arrow to ≤1.25× that font and re-derives the cells
|
|
137
|
+
// (fonts only ever GROW when the arrow shrinks — monotone-safe).
|
|
138
|
+
const arrowSide0 = Math.round(H * DELTA_FRAC * 0.85);
|
|
139
|
+
const cellsFor = (arrow) => {
|
|
140
|
+
const gg = Math.max(2, Math.round(arrow * 0.4));
|
|
141
|
+
const space = hasArrow ? arrow + gg : 0;
|
|
142
|
+
const rest = Math.max(2, innerW - space - gg);
|
|
143
|
+
const dW = Math.max(1, Math.round(rest * 0.5));
|
|
144
|
+
return { g: gg, arrowSpace: space, deltaW: dW, subW: Math.max(1, rest - dW) };
|
|
145
|
+
};
|
|
146
|
+
let { g, arrowSpace, deltaW, subW } = cellsFor(arrowSide0);
|
|
147
|
+
// Fixed font sized to fit the cell WIDTH → never clips, never rescales per frame.
|
|
148
|
+
// `em` is em-per-char: it sets how much SLACK the text leaves in its cell. The
|
|
149
|
+
// delta uses a big em (0.82) so "+12.4%" sits well inside its cell with a wide
|
|
150
|
+
// safety margin — the CLI renderer fit it at a tight margin but the app
|
|
151
|
+
// renderer's font metrics ran a hair wider and clipped the "%". Generous slack
|
|
152
|
+
// is robust across both render paths; the band-height fraction still caps size.
|
|
153
|
+
// Script-aware length (textEmUnits): the CLI face draws Cyrillic ~0.95em /
|
|
154
|
+
// CJK ~0.98em — a flat .length under-measures wide scripts ~1.5× and clips.
|
|
155
|
+
// Floor-bound text ELLIPSIZES (fitEmUnits) — truncated text must FIT.
|
|
156
|
+
const capFont = (frac, text, cellW, minPx, em = 0.7) => Math.max(minPx, Math.min(Math.round(H * frac), Math.floor(cellW / Math.max(1, (0, template_utils_1.textEmUnits)(text || " ") * em))));
|
|
157
|
+
const fitTo = (text, cellW, font, em) => (0, alpine_card_1.fitEmUnits)(text, Math.max(2, cellW / (font * em)));
|
|
158
|
+
const labelText0 = props.label.toUpperCase();
|
|
159
|
+
const labelFont = capFont(LABEL_FRAC, labelText0, labelCellW, 10, 0.7);
|
|
160
|
+
const labelText = fitTo(labelText0, labelCellW, labelFont, 0.7);
|
|
161
|
+
const valueFont = capFont(VALUE_FRAC, props.value, innerW, 16, 0.66);
|
|
162
|
+
const valueText = fitTo(props.value, innerW, valueFont, 0.66);
|
|
163
|
+
const deltaFont0 = capFont(DELTA_FRAC, (_m = props.delta) !== null && _m !== void 0 ? _m : "", deltaW, 10, 0.88);
|
|
164
|
+
const arrowSide = Math.min(arrowSide0, Math.round(deltaFont0 * 1.25));
|
|
165
|
+
({ g, arrowSpace, deltaW, subW } = cellsFor(arrowSide));
|
|
166
|
+
const deltaFont = capFont(DELTA_FRAC, (_o = props.delta) !== null && _o !== void 0 ? _o : "", deltaW, 10, 0.88);
|
|
167
|
+
const deltaText = hasDelta ? fitTo(props.delta, deltaW, deltaFont, 0.88) : " ";
|
|
168
|
+
const subFont = capFont(SUB_FRAC, (_p = props.sublabel) !== null && _p !== void 0 ? _p : "", subW, 9, 0.62);
|
|
169
|
+
const subText = fitTo((_q = props.sublabel) !== null && _q !== void 0 ? _q : " ", subW, subFont, 0.62);
|
|
170
|
+
// ── Build EACH element as its own top-level overlay layer (the title-beat
|
|
171
|
+
// pattern), positioned by pixel rect. A monolithic content split with a MEDIA
|
|
172
|
+
// source in one cell makes the renderer re-lay-out the whole content (clipping
|
|
173
|
+
// the text); independent per-element layers keep the media chip isolated and
|
|
174
|
+
// render correctly. ──
|
|
175
|
+
const before = (w) => pad + Math.round((w / sum) * innerH);
|
|
176
|
+
const headerTop = before(BANDS.padY);
|
|
177
|
+
const valueTop = before(BANDS.padY + BANDS.header + BANDS.gap1);
|
|
178
|
+
const deltaTop = before(BANDS.padY + BANDS.header + BANDS.gap1 + BANDS.value + BANDS.gap2);
|
|
179
|
+
const valueH = px(BANDS.value);
|
|
180
|
+
// Every element is positioned with placeRects (exact-pixel rects + null-tile margins),
|
|
181
|
+
// NOT insetNode. insetNode's real-split margins spread the quantization remainder INTO
|
|
182
|
+
// the placed rect, shrinking/shifting it at sizes that don't divide evenly — that
|
|
183
|
+
// clipped the value (band crushed 59→38px) and shoved the icon glyph off-center on the
|
|
184
|
+
// desktop rail. placeRects packs the rects onto few layers (light m0) with `importance`
|
|
185
|
+
// for z-order; null margins never distort a placed rect.
|
|
186
|
+
// Two-mode reveal. premium = soft alpha crossfade (header + delta band cascade,
|
|
187
|
+
// a per-pixel geq — the default, best look). light = geq-free: header static,
|
|
188
|
+
// only the delta band (below the number) slides up. Value always count-up.
|
|
189
|
+
const slideDist = Math.round(H * 0.06);
|
|
190
|
+
const revealHeader = (n) => (isLight ? n : (0, alpine_anim_1.revealFadeNode)(n, labelFade[0], labelFade[1], doFade));
|
|
191
|
+
const revealDelta = (n, f) => isLight ? (0, alpine_anim_1.revealSlideNode)(n, f[0], f[1], slideDist, doFade) : (0, alpine_anim_1.revealFadeNode)(n, f[0], f[1], doFade);
|
|
192
|
+
const Z = { surface: 0, chip: 1, ink: 2 };
|
|
193
|
+
const pieces = [];
|
|
194
|
+
const addP = (node, x, y, w, h, importance) => {
|
|
195
|
+
const xi = Math.max(0, Math.min(W - 1, Math.round(x))), yi = Math.max(0, Math.min(H - 1, Math.round(y)));
|
|
196
|
+
const wi = Math.max(1, Math.min(Math.round(w), W - xi)), hi = Math.max(1, Math.min(Math.round(h), H - yi));
|
|
197
|
+
pieces.push({ rect: { x: xi, y: yi, w: wi, h: hi, importance }, source: node.sources[0] });
|
|
198
|
+
};
|
|
199
|
+
// chip: the colored accent tile, with an optional GLYPH drawn as an SVG MASK on
|
|
200
|
+
// top (a lavfi tile, NOT a media image — a media source mis-lays-out the card).
|
|
201
|
+
// Both are independent per-element layers, so neither needs an in-cell overlay.
|
|
202
|
+
// The chip's FILL is `accent` → bound to it (Make's color picker); the card
|
|
203
|
+
// surface's fill is `backgroundColor`. Both bind at their theme defaults
|
|
204
|
+
// too — double-click is the handle to SET one.
|
|
205
|
+
const chipTile = (0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, template_utils_1.makeColorTile)(accent, { effects: { rounding: { cornerStyle: "rounded", borderRadius: 0.28 } } }), "accent"));
|
|
206
|
+
const glyphSide = Math.round(iconSide * 0.56);
|
|
207
|
+
const glyphX = pad + Math.round((iconSide - glyphSide) / 2);
|
|
208
|
+
const glyphY = headerTop + Math.round((headerH - glyphSide) / 2);
|
|
209
|
+
// Friendly `icon` name → shared catalog path; raw `iconPath` wins.
|
|
210
|
+
const glyphPath = (0, alpine_glyphs_1.resolveAlpineGlyph)(props.icon, props.iconPath, STAT_CARD_ID);
|
|
211
|
+
const glyphNode = glyphPath
|
|
212
|
+
? (0, alpine_card_1.paint)((0, template_utils_1.makeColorTile)(GLYPH_COLOR, { mask: { kind: "inline-mask", localPath: glyphPath, bounds: { x: 0, y: 0, width: 24, height: 24 } } }))
|
|
213
|
+
: null;
|
|
214
|
+
// Each text rect is bound to the prop it displays (Make's double-click edit);
|
|
215
|
+
// the delta + sublabel rects are ALWAYS allocated, so they stay bound even
|
|
216
|
+
// when empty — a handle to ADD one.
|
|
217
|
+
const valueNode = animateValue
|
|
218
|
+
? (0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, alpine_card_1.tag)(exprTxt((0, template_utils_1.animateNumbersInText)(valueText, { durationSec: introSec, ease: (_r = anim.easing) !== null && _r !== void 0 ? _r : "easeOut" }), valueFont, theme.title), "stat-value"), "value"))
|
|
219
|
+
: (0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, alpine_card_1.tag)(txt(valueText, valueFont, theme.title, "left"), "stat-value"), "value"));
|
|
220
|
+
const dColor = dir === "up" ? theme.positive : dir === "down" ? theme.negative : theme.muted;
|
|
221
|
+
const surface = (0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, template_utils_1.makeColorTile)(cardBg, { effects: { rounding: { cornerStyle: "rounded", borderRadius: 0.08 } } }), "backgroundColor"));
|
|
222
|
+
addP(surface, 0, 0, W, H, Z.surface);
|
|
223
|
+
// Header (chip + label): premium fades, light static. Value always count-up.
|
|
224
|
+
// The chip is a SQUARE (iconSide can now be < headerH), centered in the band.
|
|
225
|
+
const chipY = headerTop + Math.round((headerH - iconSide) / 2);
|
|
226
|
+
addP(revealHeader(chipTile), pad, chipY, iconSide, iconSide, Z.chip);
|
|
227
|
+
if (glyphNode)
|
|
228
|
+
addP(revealHeader(glyphNode), glyphX, glyphY, glyphSide, glyphSide, Z.ink);
|
|
229
|
+
addP(revealHeader((0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, alpine_card_1.tag)(txt(labelText, labelFont, theme.label, "left"), "stat-label"), "label"))), pad + iconSide + gapW, headerTop, labelCellW, headerH, Z.ink);
|
|
230
|
+
// Value fades with the header (premium) so the count-up doesn't sit at full
|
|
231
|
+
// opacity before the labels appear; light keeps it static (count-up only).
|
|
232
|
+
addP(revealHeader(valueNode), pad, valueTop, innerW, valueH, Z.ink);
|
|
233
|
+
// Below the number (delta arrow + delta + sublabel): premium fades, light slides.
|
|
234
|
+
if (hasArrow)
|
|
235
|
+
addP(revealDelta((0, alpine_card_1.paint)(triangle(dir, dColor, arrowSide, deltaH)), deltaFade), pad, deltaTop, arrowSide, deltaH, Z.ink);
|
|
236
|
+
addP(revealDelta((0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, alpine_card_1.tag)(txt(deltaText, deltaFont, dColor, "left"), "stat-delta"), "delta")), deltaFade), pad + arrowSpace, deltaTop, deltaW, deltaH, Z.ink);
|
|
237
|
+
addP(revealDelta((0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, alpine_card_1.tag)(txt(subText, subFont, theme.muted, "left"), "stat-sublabel"), "sublabel")), subFade), pad + arrowSpace + deltaW + g, deltaTop, subW, deltaH, Z.ink);
|
|
238
|
+
// Zero-drift laundered placement: the friendly helper packs the pieces (as
|
|
239
|
+
// placeRects) over lattice-quantized cells and wires a recovery
|
|
240
|
+
// placement.inset onto each source, so every element paints on its EXACT
|
|
241
|
+
// computed rect while the m0's precision stays bounded (~120 basis). The
|
|
242
|
+
// returned `expectations` declare each element's intent for the geometry
|
|
243
|
+
// contract below (nearly free — no extra parse here).
|
|
244
|
+
const { m0: placedM0, sources, expectations } = (0, template_utils_1.placeInsetPieces)({ rootW: W, rootH: H, pieces });
|
|
245
|
+
const doc = {
|
|
246
|
+
kind: "mosaic_document",
|
|
247
|
+
version: 1,
|
|
248
|
+
assets: {},
|
|
249
|
+
m0: String(placedM0),
|
|
250
|
+
sources,
|
|
251
|
+
backgroundColor: "black@0",
|
|
252
|
+
fps: ctx.target.fps,
|
|
253
|
+
durationMs: ctx.target.durationMs,
|
|
254
|
+
// Pin the canvas (the glyph media source otherwise lets the renderer infer
|
|
255
|
+
// size from the image, scaling the whole composition and clipping the text).
|
|
256
|
+
size: { width: W, height: H },
|
|
257
|
+
};
|
|
258
|
+
// Dev tripwire: `debugGeometry` falsy (the default) → returns `doc` untouched
|
|
259
|
+
// at zero cost. True → checks every element's computed rect survived to the
|
|
260
|
+
// pixels at THIS canvas, stamps `editor.geometryContract`, and on a violation
|
|
261
|
+
// returns a GEOMETRY_CONTRACT error mosaic at exactly the canvas that broke.
|
|
262
|
+
return Promise.resolve((0, template_utils_1.withGeometryContract)(doc, ctx, {
|
|
263
|
+
templateId: STAT_CARD_ID,
|
|
264
|
+
expectations,
|
|
265
|
+
debug: props.debugGeometry === true,
|
|
266
|
+
}));
|
|
267
|
+
},
|
|
268
|
+
// Editor-only first-open cover — the mosaic-branding theme; hero = the
|
|
269
|
+
// static default card INLINED flat (gate-15/21 keeper).
|
|
270
|
+
async renderCover(_props, ctx) {
|
|
271
|
+
const heroBox = (0, onboarding_cover_1.brandedCoverHeroBox)(ctx, "band");
|
|
272
|
+
const heroCtx = {
|
|
273
|
+
...ctx,
|
|
274
|
+
target: { ...ctx.target, width: heroBox.width, height: heroBox.height },
|
|
275
|
+
output: { ...ctx.output, width: heroBox.width, height: heroBox.height },
|
|
276
|
+
};
|
|
277
|
+
const card = (await exports.AlpineStatCard.render({
|
|
278
|
+
...exports.AlpineStatCard.defaultProps,
|
|
279
|
+
anim: { reduceMotion: true },
|
|
280
|
+
}, heroCtx));
|
|
281
|
+
return (0, onboarding_cover_1.buildBrandedCover)({
|
|
282
|
+
ctx,
|
|
283
|
+
// Band variant (founder ruling 08-30): basic viz needs no
|
|
284
|
+
// explanation — hero full-bleed + brand band, nothing else.
|
|
285
|
+
variant: "band",
|
|
286
|
+
copy: {
|
|
287
|
+
productName: "Stat Card",
|
|
288
|
+
title: "A KPI tile.",
|
|
289
|
+
},
|
|
290
|
+
hero: (theme) => (0, onboarding_cover_1.onboardingFrame)((0, onboarding_cover_1.inlineHeroDoc)(card), theme.borderStrong),
|
|
291
|
+
heroAssets: card.assets,
|
|
292
|
+
});
|
|
293
|
+
},
|
|
294
|
+
};
|
|
295
|
+
(0, template_utils_1.registerTemplate)(exports.AlpineStatCard);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AlpineTimeline } from "./timeline";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlpineTimeline = void 0;
|
|
4
|
+
var timeline_1 = require("./timeline");
|
|
5
|
+
Object.defineProperty(exports, "AlpineTimeline", { enumerable: true, get: function () { return timeline_1.AlpineTimeline; } });
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ============================================================================
|
|
3
|
+
* @m0saic/alpine/timeline/v1 — Alpine Timeline (friendly mobile-marketing)
|
|
4
|
+
* ============================================================================
|
|
5
|
+
*
|
|
6
|
+
* A vertical milestone timeline inside the Alpine white card: a spine running
|
|
7
|
+
* down a left rail with a dot per event, and each event's date + title (+ an
|
|
8
|
+
* optional description) to the right of its dot. The classic "our journey" /
|
|
9
|
+
* roadmap / changelog surface. STANDALONE Alpine brand flavor.
|
|
10
|
+
*
|
|
11
|
+
* Construction follows the donut / heatmap model — the spine segments, dots and
|
|
12
|
+
* every text line are ABSOLUTELY-PLACED tight rects packed full-canvas via
|
|
13
|
+
* `placeRects` on the SNAP_PX lattice, so the dots align exactly to their text
|
|
14
|
+
* rows and the layout never fights nested-split quantization. Dots are rounded
|
|
15
|
+
* `makeColorTile`s (borderRadius 0.5 = circle), no inline-masks. Animation: the
|
|
16
|
+
* spine "draws down" as each segment + dot cascades in top→bottom with the text
|
|
17
|
+
* fading alongside; `anim.reduceMotion` → the static timeline.
|
|
18
|
+
* ============================================================================
|
|
19
|
+
*/
|
|
20
|
+
import type { MosaicColor, MosaicTemplate } from "@m0saic/types";
|
|
21
|
+
import { type EaseName, type ThemeSourceConfig } from "@m0saic/template-utils";
|
|
22
|
+
import { type AlpinePreset } from "../../_shared/alpine-theme";
|
|
23
|
+
type TimelineEvent = {
|
|
24
|
+
date?: string;
|
|
25
|
+
title: string;
|
|
26
|
+
description?: string;
|
|
27
|
+
color?: MosaicColor;
|
|
28
|
+
};
|
|
29
|
+
/** Reveal cost/quality dial. "premium" (default): dots/spine/text fade in (a geq
|
|
30
|
+
* each). "light": the same cascade via free enable-gate pops — no geq, composable. */
|
|
31
|
+
type RenderMode = "premium" | "light";
|
|
32
|
+
type AnimConfig = {
|
|
33
|
+
renderMode: RenderMode;
|
|
34
|
+
reduceMotion: boolean;
|
|
35
|
+
introFrac: number;
|
|
36
|
+
easing: EaseName;
|
|
37
|
+
};
|
|
38
|
+
/** "auto" → horizontal on a wide (landscape) card, vertical otherwise. */
|
|
39
|
+
type Orientation = "auto" | "vertical" | "horizontal";
|
|
40
|
+
type AlpineTimelineProps = {
|
|
41
|
+
events: TimelineEvent[];
|
|
42
|
+
title?: string;
|
|
43
|
+
subtitle?: string;
|
|
44
|
+
orientation?: Orientation;
|
|
45
|
+
preset?: AlpinePreset;
|
|
46
|
+
showDescription?: boolean;
|
|
47
|
+
/** Spine + dot accent color. Defaults to the theme primary. */
|
|
48
|
+
color?: MosaicColor;
|
|
49
|
+
anim?: AnimConfig;
|
|
50
|
+
/** Opt-in producer theming. The preset is the fallback; a producer's published
|
|
51
|
+
* tokens override it. Explicit color props still win. */
|
|
52
|
+
theme?: ThemeSourceConfig;
|
|
53
|
+
};
|
|
54
|
+
export declare const AlpineTimeline: MosaicTemplate<AlpineTimelineProps>;
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlpineTimeline = void 0;
|
|
4
|
+
const types_1 = require("@m0saic/types");
|
|
5
|
+
const template_utils_1 = require("@m0saic/template-utils");
|
|
6
|
+
const dsl_stdlib_1 = require("@m0saic/dsl-stdlib");
|
|
7
|
+
const alpine_card_1 = require("../../_shared/alpine-card");
|
|
8
|
+
const alpine_theme_1 = require("../../_shared/alpine-theme");
|
|
9
|
+
const alpine_anim_1 = require("../../_shared/alpine-anim");
|
|
10
|
+
const DEFAULT_PRESET = "light";
|
|
11
|
+
const DEFAULT_RENDER_MODE = "premium";
|
|
12
|
+
const DEFAULT_ANIM = { renderMode: DEFAULT_RENDER_MODE, introFrac: 0.7, easing: "easeOut", reduceMotion: false };
|
|
13
|
+
const MAX_EVENTS = 7;
|
|
14
|
+
const SNAP_PX = 4;
|
|
15
|
+
const EDGE_PAD = 1.5;
|
|
16
|
+
const clampInt = (v, lo, hi) => Math.max(lo, Math.min(hi, Math.round(v)));
|
|
17
|
+
const snapGrid = (v) => Math.round(v / SNAP_PX) * SNAP_PX;
|
|
18
|
+
/** Place a pixel rect, snapping its edges to the SNAP_PX lattice (quantization-safe). */
|
|
19
|
+
function rectPiece(W, H, x, y, w, h, source, importance) {
|
|
20
|
+
const x0 = clampInt(snapGrid(x), 0, W - SNAP_PX);
|
|
21
|
+
const y0 = clampInt(snapGrid(y), 0, H - SNAP_PX);
|
|
22
|
+
const x1 = clampInt(snapGrid(x + w), x0 + SNAP_PX, W);
|
|
23
|
+
const y1 = clampInt(snapGrid(y + h), y0 + SNAP_PX, H);
|
|
24
|
+
return { rect: { x: x0, y: y0, w: x1 - x0, h: y1 - y0, claimant: "F", importance }, source };
|
|
25
|
+
}
|
|
26
|
+
/** Place a text bbox snapped to the SNAP grid. */
|
|
27
|
+
function placeText(W, H, bbox, source, importance) {
|
|
28
|
+
const snapDown = (v) => Math.floor((v - EDGE_PAD) / SNAP_PX) * SNAP_PX;
|
|
29
|
+
const snapUp = (v) => Math.ceil((v + EDGE_PAD) / SNAP_PX) * SNAP_PX;
|
|
30
|
+
const x = clampInt(snapDown(bbox.minX), 0, W - 1);
|
|
31
|
+
const y = clampInt(snapDown(bbox.minY), 0, H - 1);
|
|
32
|
+
const x2 = clampInt(snapUp(bbox.maxX), x + SNAP_PX, W);
|
|
33
|
+
const y2 = clampInt(snapUp(bbox.maxY), y + SNAP_PX, H);
|
|
34
|
+
return { rect: { x, y, w: x2 - x, h: y2 - y, claimant: "F", importance }, source };
|
|
35
|
+
}
|
|
36
|
+
function cellText(text, fontSize, color, hAlign = "left") {
|
|
37
|
+
return { type: "text", visual: { backgroundColor: "black@0" }, layers: [{ content: { kind: "literal", text: text || " " }, style: { fontSize, fontColor: color }, placement: { hAlign, vAlign: "middle" } }] };
|
|
38
|
+
}
|
|
39
|
+
function fadeIn(src, startSec, durSec, on) {
|
|
40
|
+
var _a;
|
|
41
|
+
if (!on)
|
|
42
|
+
return src;
|
|
43
|
+
const prev = (_a = src.overlay) !== null && _a !== void 0 ? _a : {};
|
|
44
|
+
return { ...src, overlay: { ...prev, alpha: (0, template_utils_1.fadeInExpr)(startSec, durSec) } };
|
|
45
|
+
}
|
|
46
|
+
/** Left-anchored text bbox (the headline starts AT x, extends right). */
|
|
47
|
+
function leftTextBBox(x, cy, text, font) {
|
|
48
|
+
const w = Math.max(font, text.length * font * 0.6 + font * 0.5);
|
|
49
|
+
const h = font * 1.5;
|
|
50
|
+
return { minX: x, minY: cy - h / 2, maxX: x + w, maxY: cy + h / 2 };
|
|
51
|
+
}
|
|
52
|
+
/** Center-anchored text bbox (the headline is centered on cx). */
|
|
53
|
+
function centerTextBBox(cx, cy, text, font) {
|
|
54
|
+
const w = Math.max(font, text.length * font * 0.6 + font * 0.5);
|
|
55
|
+
const h = font * 1.5;
|
|
56
|
+
return { minX: cx - w / 2, minY: cy - h / 2, maxX: cx + w / 2, maxY: cy + h / 2 };
|
|
57
|
+
}
|
|
58
|
+
/** Clip a line to `maxW` px with a trailing ellipsis — so an absurdly long title
|
|
59
|
+
* can't overflow the card or collide with a neighbor (it truncates instead). */
|
|
60
|
+
function truncateToWidth(text, font, maxW) {
|
|
61
|
+
const charW = font * 0.6;
|
|
62
|
+
const maxChars = Math.max(1, Math.floor(maxW / charW));
|
|
63
|
+
if (text.length <= maxChars)
|
|
64
|
+
return text;
|
|
65
|
+
return `${text.slice(0, Math.max(1, maxChars - 1)).trimEnd()}…`;
|
|
66
|
+
}
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
// Template
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
const propsSchema = (0, template_utils_1.definePropsSchema)({
|
|
71
|
+
events: { type: "array", required: true, description: "Timeline events (top→bottom). Each: an optional date, a title, an optional description + color.", meta: { control: { flavor: "objectRows", columns: [{ label: "Date", key: "date", kind: "text", placeholder: "Jan 2024" }, { label: "Title", key: "title", kind: "text", placeholder: "Milestone" }, { label: "Description", key: "description", kind: "text", placeholder: "What happened" }, { label: "Color", key: "color", kind: "color" }] }, ui: { label: "Events", order: 1 } } },
|
|
72
|
+
// ── Flat props grouped by control type (text → enum → toggle → color). ──
|
|
73
|
+
title: { type: "string", required: false, description: "Card title.", meta: { control: { placeholder: "e.g., MILESTONES" }, ui: { label: "Title", order: 2 } } },
|
|
74
|
+
subtitle: { type: "string", required: false, description: "Card subtitle.", meta: { ui: { label: "Subtitle", order: 3 } } },
|
|
75
|
+
orientation: { type: "string", required: false, description: "Layout direction. auto → horizontal on a wide card, vertical on square/tall.", meta: { constraints: { oneOf: ["auto", "vertical", "horizontal"] }, ui: { label: "Orientation", order: 4 } } },
|
|
76
|
+
preset: { type: "string", required: false, description: "Alpine theme variant.", meta: { constraints: { oneOf: ["light", "dark"] }, ui: { label: "Preset", order: 5 } } },
|
|
77
|
+
showDescription: { type: "boolean", required: false, description: "Show each event's description line.", meta: { ui: { label: "Show description", order: 6 } } },
|
|
78
|
+
color: { type: "string", required: false, description: "Spine + dot accent color. Defaults to the theme primary.", meta: { constraints: { isColor: true }, control: { placeholder: "theme primary", colorPicker: true, defaultColor: "#2563EB" }, ui: { label: "Accent color", order: 7 } } },
|
|
79
|
+
// ── Collapsible groups. ──
|
|
80
|
+
anim: {
|
|
81
|
+
type: "group", required: false, description: "Reveal mode + spine-draw cascade intro.",
|
|
82
|
+
meta: { ui: { label: "Animation", order: 8, collapsedByDefault: true } },
|
|
83
|
+
fields: {
|
|
84
|
+
renderMode: (0, alpine_anim_1.fEnum)("Render mode", ["premium", "light"], "\"premium\" (default): dots/spine/text fade in — a geq each. \"light\": the same cascade via free enable-gate pops — no geq, composable, cheap when nested."),
|
|
85
|
+
reduceMotion: alpine_anim_1.ALPINE_ANIM_FIELDS.reduceMotion,
|
|
86
|
+
introFrac: alpine_anim_1.ALPINE_ANIM_FIELDS.introFrac,
|
|
87
|
+
easing: alpine_anim_1.ALPINE_ANIM_FIELDS.easing,
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
theme: {
|
|
91
|
+
type: "group", required: false, description: "Opt into a theme source. Uses the alpine preset by default; set a producer slug + namespace to pull shared design tokens. Explicit color props still win.",
|
|
92
|
+
meta: { ui: { label: "Theme", order: 9, collapsedByDefault: true } },
|
|
93
|
+
fields: { slug: (0, alpine_anim_1.fStr)("Producer slug", "Producer template to seed tokens from (e.g. \"@m0saic/theming/v1\").", "preset palette (no producer)"), preset: (0, alpine_anim_1.fStr)("Preset", "Producer preset/variant (light | dark | high-contrast; producer-defined).", "producer default"), namespace: (0, alpine_anim_1.fStr)("Namespace", "Upstream alias to read tokens from. Default \"theme\".", "theme"), forceFetch: (0, alpine_anim_1.fBool)("Force fetch", "Re-seed via the slug even if the namespace is populated.") },
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
exports.AlpineTimeline = {
|
|
97
|
+
id: (0, types_1.asTemplateId)("@m0saic/alpine/timeline/v1"),
|
|
98
|
+
label: "Alpine Timeline",
|
|
99
|
+
version: 1,
|
|
100
|
+
description: "Alpine timeline — friendly mobile-marketing card: a vertical milestone timeline with a spine + dots that draw down top→bottom, each event a date + title + description. Standalone Alpine brand flavor.",
|
|
101
|
+
capabilities: { tier: "core" },
|
|
102
|
+
primitive: true,
|
|
103
|
+
deprecated: {
|
|
104
|
+
reason: "Absolute-placement antipattern: the spine segments, dots and every text line are exact-pixel rects packed full-canvas via placeRects on the SNAP lattice, so precision tracks the canvas (audit: ABSOLUTE, slope 1.04) — a nestable primitive that pins its parent near its own render canvas. Kept as the canonical 'absolute list' example. Use v2 — the SAME picture rebuilt as nested row/col splits (dots insetNode-centered to squares on a shared band), so it composes at any canvas.",
|
|
105
|
+
replacement: (0, types_1.asTemplateId)("@m0saic/alpine/timeline/v2"),
|
|
106
|
+
since: "2026-07-09",
|
|
107
|
+
},
|
|
108
|
+
tags: ["alpine", "timeline", "milestones", "data-viz"],
|
|
109
|
+
outputHints: { width: 1280, height: 800, fps: 30, durationMs: 2000 },
|
|
110
|
+
propsSchema,
|
|
111
|
+
defaultProps: {
|
|
112
|
+
theme: { forceFetch: false },
|
|
113
|
+
events: [
|
|
114
|
+
{ date: "Jan 2024", title: "Project kickoff", description: "Team assembled, first commit landed" },
|
|
115
|
+
{ date: "Mar 2024", title: "Beta launch", description: "500 early users onboarded" },
|
|
116
|
+
{ date: "Jun 2024", title: "Series A", description: "$12M raised to scale the team" },
|
|
117
|
+
{ date: "Sep 2024", title: "10k customers", description: "Crossed five figures" },
|
|
118
|
+
{ date: "Dec 2024", title: "Global expansion", description: "Live in 12 countries" },
|
|
119
|
+
],
|
|
120
|
+
title: "MILESTONES",
|
|
121
|
+
subtitle: "Our journey so far",
|
|
122
|
+
preset: DEFAULT_PRESET,
|
|
123
|
+
orientation: "auto",
|
|
124
|
+
showDescription: true,
|
|
125
|
+
anim: DEFAULT_ANIM,
|
|
126
|
+
},
|
|
127
|
+
async render(props, ctx) {
|
|
128
|
+
var _a, _b, _c, _d, _e, _f;
|
|
129
|
+
const W = Math.max(1, Math.round(ctx.target.width));
|
|
130
|
+
const H = Math.max(1, Math.round(ctx.target.height));
|
|
131
|
+
const events = ((_a = props.events) !== null && _a !== void 0 ? _a : [])
|
|
132
|
+
.filter((e) => e && typeof e.title === "string" && e.title.trim())
|
|
133
|
+
.slice(0, MAX_EVENTS);
|
|
134
|
+
if (events.length === 0) {
|
|
135
|
+
return (0, template_utils_1.makeErrorMosaic)("events[] must have at least one event with a title", { title: `${this.id} props`, width: W, height: H });
|
|
136
|
+
}
|
|
137
|
+
const N = events.length;
|
|
138
|
+
// Theming: the shared alpine theme (light default). A producer overrides tokens
|
|
139
|
+
// via props.theme; explicit colors still win. Unthemed → byte-identical.
|
|
140
|
+
const theme = await (0, alpine_theme_1.resolveAlpineTheme)((_b = props.preset) !== null && _b !== void 0 ? _b : DEFAULT_PRESET, ctx, props.theme);
|
|
141
|
+
const anim = { ...DEFAULT_ANIM, ...((_c = props.anim) !== null && _c !== void 0 ? _c : {}) };
|
|
142
|
+
const animate = !anim.reduceMotion;
|
|
143
|
+
const light = ((_d = anim.renderMode) !== null && _d !== void 0 ? _d : DEFAULT_RENDER_MODE) === "light";
|
|
144
|
+
// Mode-aware overlay for the dots/spine (premium fades = geq; light enable-gates = no geq).
|
|
145
|
+
const revealOv = (s, dur) => light ? { startAtSec: s, enable: `gte(t,${s.toFixed(3)})` } : { startAtSec: s, alpha: (0, template_utils_1.fadeInExpr)(s, dur) };
|
|
146
|
+
// Mode-aware text reveal.
|
|
147
|
+
const ffText = (src, s, dur) => !animate ? src : light ? (0, alpine_anim_1.revealGate)(src, s) : fadeIn(src, s, dur, true);
|
|
148
|
+
const showDescription = (_e = props.showDescription) !== null && _e !== void 0 ? _e : true;
|
|
149
|
+
const accent = (0, alpine_card_1.resolveColor)(props.color, theme.primary);
|
|
150
|
+
const dotColor = (i) => (0, alpine_card_1.resolveColor)(events[i].color, accent);
|
|
151
|
+
const card = (0, alpine_card_1.alpineCard)({ theme, W, H, title: props.title, subtitle: props.subtitle });
|
|
152
|
+
const cr = card.contentRect;
|
|
153
|
+
// Fonts.
|
|
154
|
+
const titleFont = Math.max(13, Math.round(H * 0.03));
|
|
155
|
+
const dateFont = Math.max(10, Math.round(H * 0.021));
|
|
156
|
+
const descFont = Math.max(10, Math.round(H * 0.022));
|
|
157
|
+
const dotR = Math.max(SNAP_PX, snapGrid(titleFont * 0.42));
|
|
158
|
+
const spineW = Math.max(SNAP_PX, snapGrid(H * 0.005));
|
|
159
|
+
const clipSec = Math.max(0.1, ((_f = ctx.target.durationMs) !== null && _f !== void 0 ? _f : 2000) / 1000);
|
|
160
|
+
const introT = Math.max(0.1, Math.min(1, anim.introFrac) * clipSec);
|
|
161
|
+
const introDelay = Math.min(0.12, introT * 0.06);
|
|
162
|
+
const CASCADE = 0.6;
|
|
163
|
+
const eventDur = Math.max(0.05, (introT - introDelay) / (1 + CASCADE * Math.max(0, N - 1)));
|
|
164
|
+
const eventStagger = CASCADE * eventDur;
|
|
165
|
+
const startAt = (i) => (animate ? introDelay + i * eventStagger : 0);
|
|
166
|
+
const lineGap = Math.round(titleFont * 0.28);
|
|
167
|
+
const eventLines = (i) => {
|
|
168
|
+
const lines = [];
|
|
169
|
+
if (events[i].date && events[i].date.trim())
|
|
170
|
+
lines.push({ text: events[i].date, font: dateFont, color: theme.muted });
|
|
171
|
+
lines.push({ text: events[i].title, font: titleFont, color: theme.title });
|
|
172
|
+
if (showDescription && events[i].description && events[i].description.trim())
|
|
173
|
+
lines.push({ text: events[i].description, font: descFont, color: theme.subtitle });
|
|
174
|
+
return lines;
|
|
175
|
+
};
|
|
176
|
+
const stackHeight = (lines) => lines.reduce((a, l) => a + l.font * 1.1, 0) + lineGap * (lines.length - 1);
|
|
177
|
+
const pieces = [];
|
|
178
|
+
// dot: a circle (borderRadius 0.5 on a square), accent (or per-event) color.
|
|
179
|
+
const pushDot = (cx, cy, i, s) => pieces.push(rectPiece(W, H, cx - dotR, cy - dotR, dotR * 2, dotR * 2, (0, template_utils_1.makeColorTile)(dotColor(i), { effects: { rounding: { cornerStyle: "rounded", borderRadius: 0.5 } }, ...(animate ? { overlay: revealOv(s, eventDur) } : {}) }), 1));
|
|
180
|
+
// spine segment (between two dots) — draws in with the later event (importance 0, behind dots).
|
|
181
|
+
const pushSeg = (x, y, w, h, s) => pieces.push(rectPiece(W, H, x, y, w, h, (0, template_utils_1.makeColorTile)(theme.grid, { effects: { rounding: { cornerStyle: "rounded", borderRadius: 0.5 } }, ...(animate ? { overlay: revealOv(s, eventDur) } : {}) }), 0));
|
|
182
|
+
const pushStack = (lines, anchorX, blockTop, hAlign, s) => {
|
|
183
|
+
let ly = blockTop;
|
|
184
|
+
for (const ln of lines) {
|
|
185
|
+
const hK = ln.font * 1.1, lcy = ly + hK / 2;
|
|
186
|
+
const bbox = hAlign === "left" ? leftTextBBox(anchorX, lcy, ln.text, ln.font) : centerTextBBox(anchorX, lcy, ln.text, ln.font);
|
|
187
|
+
pieces.push(placeText(W, H, bbox, ffText(cellText(ln.text, ln.font, ln.color, hAlign), s + eventDur * 0.25, eventDur), 1));
|
|
188
|
+
ly += hK + lineGap;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
// Orientation: explicit, else auto — horizontal on a wide (landscape) card so the
|
|
192
|
+
// timeline fills the width instead of hugging the left rail; vertical on square/tall.
|
|
193
|
+
const orientation = props.orientation === "vertical" || props.orientation === "horizontal"
|
|
194
|
+
? props.orientation
|
|
195
|
+
: W / H >= 1.25 ? "horizontal" : "vertical";
|
|
196
|
+
if (orientation === "vertical") {
|
|
197
|
+
// Left rail: spine + dot, then a gap, then the left-aligned text block.
|
|
198
|
+
const rowH = Math.min(Math.round(H * 0.16), Math.floor(cr.h / N));
|
|
199
|
+
const top = snapGrid(cr.y + Math.max(0, (cr.h - rowH * N) / 2));
|
|
200
|
+
const rowCenterY = (i) => top + Math.round(rowH * (i + 0.5));
|
|
201
|
+
const railX = snapGrid(cr.x + dotR + Math.round(cr.w * 0.01));
|
|
202
|
+
const textX = snapGrid(railX + dotR + Math.round(cr.w * 0.03));
|
|
203
|
+
// Truncate to the room between the text rail and the card's right edge.
|
|
204
|
+
const maxW = Math.max(dotR * 4, cr.x + cr.w - textX - Math.round(cr.w * 0.01));
|
|
205
|
+
for (let i = 1; i < N; i++)
|
|
206
|
+
pushSeg(railX - spineW / 2, rowCenterY(i - 1), spineW, rowCenterY(i) - rowCenterY(i - 1), startAt(i));
|
|
207
|
+
for (let i = 0; i < N; i++) {
|
|
208
|
+
const cy = rowCenterY(i), s = startAt(i);
|
|
209
|
+
const lines = eventLines(i).map((l) => ({ ...l, text: truncateToWidth(l.text, l.font, maxW) }));
|
|
210
|
+
pushDot(railX, cy, i, s);
|
|
211
|
+
pushStack(lines, textX, cy - stackHeight(lines) / 2, "left", s);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
// Horizontal: a spine across the content rect, dots evenly spaced, each event's
|
|
216
|
+
// text block ALTERNATING above / below the line so the card fills its width.
|
|
217
|
+
const margin = Math.round(cr.w * 0.06);
|
|
218
|
+
const railL = snapGrid(cr.x + margin), railR = snapGrid(cr.x + cr.w - margin);
|
|
219
|
+
const spineY = snapGrid(cr.y + cr.h / 2);
|
|
220
|
+
const dotX = (i) => (N > 1 ? snapGrid(railL + (railR - railL) * (i / (N - 1))) : snapGrid(cr.x + cr.w / 2));
|
|
221
|
+
const gap = Math.round(dotR + titleFont * 0.7);
|
|
222
|
+
// Truncate each block to ~one column width so adjacent events never collide.
|
|
223
|
+
const columnPitch = N > 1 ? (railR - railL) / (N - 1) : cr.w;
|
|
224
|
+
const maxW = Math.min(columnPitch * 0.92, cr.w * 0.92);
|
|
225
|
+
for (let i = 1; i < N; i++)
|
|
226
|
+
pushSeg(dotX(i - 1), spineY - spineW / 2, dotX(i) - dotX(i - 1), spineW, startAt(i));
|
|
227
|
+
const halfWidth = (lines) => Math.max(...lines.map((l) => l.text.length * l.font * 0.6 + l.font * 0.5)) / 2;
|
|
228
|
+
for (let i = 0; i < N; i++) {
|
|
229
|
+
const cx = dotX(i), s = startAt(i);
|
|
230
|
+
const lines = eventLines(i).map((l) => ({ ...l, text: truncateToWidth(l.text, l.font, maxW) }));
|
|
231
|
+
pushDot(cx, spineY, i, s);
|
|
232
|
+
const above = i % 2 === 0;
|
|
233
|
+
const blockTop = above ? spineY - gap - stackHeight(lines) : spineY + gap;
|
|
234
|
+
// Clamp the text-block center so the edge events (first/last dot near the card
|
|
235
|
+
// border) never spill past the content rect — the dot stays at cx; the text
|
|
236
|
+
// shifts inward just enough to stay in-bounds.
|
|
237
|
+
const hw = halfWidth(lines);
|
|
238
|
+
const ax = Math.max(cr.x + hw, Math.min(cr.x + cr.w - hw, cx));
|
|
239
|
+
pushStack(lines, snapGrid(ax), blockTop, "center", s);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// ── Pack full-canvas → one { m0, sources } ──
|
|
243
|
+
const placed = (0, dsl_stdlib_1.placeRects)({ rootW: W, rootH: H, rects: pieces.map((p) => p.rect) });
|
|
244
|
+
const sources = [];
|
|
245
|
+
for (const layer of placed.layers) {
|
|
246
|
+
const ordered = [...layer.rectIndices].sort((a, b) => pieces[a].rect.y - pieces[b].rect.y || pieces[a].rect.x - pieces[b].rect.x);
|
|
247
|
+
for (const idx of ordered)
|
|
248
|
+
sources.push(pieces[idx].source);
|
|
249
|
+
}
|
|
250
|
+
const body = { m0: String(placed.m0), sources };
|
|
251
|
+
// Full-canvas absolute geometry → pass as an extraLayer (NOT the scaled content),
|
|
252
|
+
// so it renders at exact canvas pixels and is never re-quantized by insetNode.
|
|
253
|
+
const root = card.compose(alpine_card_1.EMPTY, body);
|
|
254
|
+
return Promise.resolve({
|
|
255
|
+
kind: "mosaic_document",
|
|
256
|
+
version: 1,
|
|
257
|
+
assets: {},
|
|
258
|
+
m0: root.m0,
|
|
259
|
+
sources: root.sources,
|
|
260
|
+
backgroundColor: card.backgroundColor,
|
|
261
|
+
fps: ctx.target.fps,
|
|
262
|
+
durationMs: ctx.target.durationMs,
|
|
263
|
+
});
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
(0, template_utils_1.registerTemplate)(exports.AlpineTimeline);
|