@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,651 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlpineContributorTable = 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 alpine_glyphs_1 = require("../../_shared/alpine-glyphs");
|
|
8
|
+
const alpine_theme_1 = require("../../_shared/alpine-theme");
|
|
9
|
+
const alpine_anim_1 = require("../../_shared/alpine-anim");
|
|
10
|
+
const onboarding_cover_1 = require("../../../_shared/onboarding-cover");
|
|
11
|
+
// Alpine-pack citizen: card/text colors come from the shared alpine theme (light by
|
|
12
|
+
// default; the FFmpeg hero passes preset:"dark"). Only DATA-SEMANTIC colors are local:
|
|
13
|
+
// ACCENT/NEG (the additions-green / deletions-red columnColors defaults) + GLYPH_COLOR
|
|
14
|
+
// (dark glyph/initial on the colored chips) — their meaning IS the color.
|
|
15
|
+
const ACCENT = "#3fb950";
|
|
16
|
+
const NEG = "#f85149";
|
|
17
|
+
const GLYPH_COLOR = "#0d1117";
|
|
18
|
+
const DEFAULT_PRESET = "light";
|
|
19
|
+
const DEFAULT_RENDER_MODE = "premium";
|
|
20
|
+
const DEFAULT_ANIM = { renderMode: DEFAULT_RENDER_MODE, introFrac: 0.7, countUp: true, easing: "easeOut", reduceMotion: false };
|
|
21
|
+
const MAX_ROWS = 8;
|
|
22
|
+
// Column width weights (basis 100): pad · rank · contributor · N value cols · pad.
|
|
23
|
+
// The contributor column ABSORBS the rounding remainder so the row always sums to
|
|
24
|
+
// exactly 100 (= 2²·5², on the 5-smooth lattice). Rounding the value columns
|
|
25
|
+
// independently summed to 101 — a prime basis that composed with nothing.
|
|
26
|
+
const PAD_W = 3, RANK_W = 5, CONTRIB_W_NOMINAL = 42;
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Helpers
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
function tcell(text, fontSize, color, hAlign) {
|
|
31
|
+
return { type: "text", visual: { backgroundColor: "black@0" }, layers: [{ content: { kind: "literal", text: text || " " }, style: { fontSize, fontColor: color }, placement: { fit: "contain", hAlign, vAlign: "middle" } }] };
|
|
32
|
+
}
|
|
33
|
+
/** Fixed-font cell (NO fit:contain) — sized by the caller to fit its width, so it
|
|
34
|
+
* can't trip the renderer's fit:contain height-scale-then-clip-width behavior. */
|
|
35
|
+
function fcell(text, fontSize, color, hAlign) {
|
|
36
|
+
return { type: "text", visual: { backgroundColor: "black@0" }, layers: [{ content: { kind: "literal", text: text || " " }, style: { fontSize, fontColor: color }, placement: { hAlign, vAlign: "middle" } }] };
|
|
37
|
+
}
|
|
38
|
+
function exprCell(expr, fontSize, color, hAlign) {
|
|
39
|
+
return { type: "text", renderMode: { kind: "video" }, visual: { backgroundColor: "black@0" }, layers: [{ content: { kind: "expr", expr, eval: "frame" }, style: { fontSize, fontColor: color }, placement: { hAlign, vAlign: "middle" } }] };
|
|
40
|
+
}
|
|
41
|
+
function fadeIn(src, startSec, durSec, on) {
|
|
42
|
+
var _a;
|
|
43
|
+
if (!on)
|
|
44
|
+
return src;
|
|
45
|
+
const prev = (_a = src.overlay) !== null && _a !== void 0 ? _a : {};
|
|
46
|
+
return { ...src, overlay: { ...prev, alpha: (0, template_utils_1.fadeInExpr)(startSec, durSec) } };
|
|
47
|
+
}
|
|
48
|
+
function wrapFade(node, startSec, durSec, on) {
|
|
49
|
+
if (!on)
|
|
50
|
+
return node;
|
|
51
|
+
return { m0: node.m0, sources: node.sources.map((s) => { var _a; return (((_a = s.overlay) === null || _a === void 0 ? void 0 : _a.alpha) ? s : fadeIn(s, startSec, durSec, true)); }) };
|
|
52
|
+
}
|
|
53
|
+
/** The geq-free analog of `wrapFade`: gate each source ON at `startSec` via a free
|
|
54
|
+
* `overlay.enable` (no per-pixel alpha fold). `renderMode:"light"` uses this so the
|
|
55
|
+
* row cascade pops instead of fades — composable/cheap when nested. Skips sources
|
|
56
|
+
* that already carry an enable gate. */
|
|
57
|
+
function wrapGate(node, startSec, on) {
|
|
58
|
+
if (!on)
|
|
59
|
+
return node;
|
|
60
|
+
return { m0: node.m0, sources: node.sources.map((s) => { var _a; return (((_a = s.overlay) === null || _a === void 0 ? void 0 : _a.enable) ? s : (0, alpine_anim_1.revealGate)(s, startSec, true)); }) };
|
|
61
|
+
}
|
|
62
|
+
/** Mix two #rrggbb colors at ratio t (0→a, 1→b). Used to BAKE the row wash into a
|
|
63
|
+
* solid tile color so the tile fades in with its row (a static overlay.alpha would
|
|
64
|
+
* make wrapFade skip it → the band shows at t=0). */
|
|
65
|
+
function blend(a, b, t) {
|
|
66
|
+
const pa = parseInt(a.slice(1), 16), pb = parseInt(b.slice(1), 16);
|
|
67
|
+
const mix = (sh) => Math.round(((pa >> sh) & 255) + (((pb >> sh) & 255) - ((pa >> sh) & 255)) * t);
|
|
68
|
+
return ("#" + [mix(16), mix(8), mix(0)].map((x) => x.toString(16).padStart(2, "0")).join(""));
|
|
69
|
+
}
|
|
70
|
+
/** A circular disc (rounded tile, full radius) in an accent-derived hue + the
|
|
71
|
+
* name's initial (fixed font, centered) — the avatar fallback until real
|
|
72
|
+
* avatar_url media (Phase 4). Place it in a SQUARE cell so the disc is round. */
|
|
73
|
+
function avatarDisc(name, fill, font, inset) {
|
|
74
|
+
var _a;
|
|
75
|
+
const initial = ((_a = name.trim()[0]) !== null && _a !== void 0 ? _a : "?").toUpperCase();
|
|
76
|
+
const letter = { type: "text", visual: { backgroundColor: "black@0" }, layers: [{ content: { kind: "literal", text: initial }, style: { fontSize: font, fontColor: "#0d1117" }, placement: { hAlign: "center", vAlign: "middle" } }] };
|
|
77
|
+
const tile = (0, template_utils_1.makeColorTile)(fill, {
|
|
78
|
+
effects: { rounding: { cornerStyle: "rounded", borderRadius: 0.5 } },
|
|
79
|
+
...(inset ? { placement: { inset } } : {}),
|
|
80
|
+
});
|
|
81
|
+
// The disc is the future profile-picture slot (avatar_url, Phase 4) — the
|
|
82
|
+
// layout contract's `avatar` aspect rule keeps it headshot-suitable.
|
|
83
|
+
tile.editor = { label: "avatar" };
|
|
84
|
+
return (0, alpine_card_1.overlay)([
|
|
85
|
+
(0, alpine_card_1.paint)(tile),
|
|
86
|
+
(0, alpine_card_1.paint)(inset ? { ...letter, placement: { inset } } : letter),
|
|
87
|
+
]);
|
|
88
|
+
}
|
|
89
|
+
/** Center a node as a square-ish disc inside its (≈square) cell. */
|
|
90
|
+
function discInCell(disc) {
|
|
91
|
+
return (0, alpine_card_1.rowSplit)([{ weight: 2, node: alpine_card_1.EMPTY }, { weight: 7, node: (0, alpine_card_1.colSplit)([{ weight: 2, node: alpine_card_1.EMPTY }, { weight: 7, node: disc }, { weight: 2, node: alpine_card_1.EMPTY }]) }, { weight: 2, node: alpine_card_1.EMPTY }]);
|
|
92
|
+
}
|
|
93
|
+
// A small avatar-color cycle (hero greens + a few accents), keyed by row index.
|
|
94
|
+
const AVATAR_HUES = ["#3fb950", "#2ea043", "#56d364", "#388bfd", "#a371f7", "#db61a2", "#e3b341", "#f0883e"];
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
// Template
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
const propsSchema = (0, template_utils_1.definePropsSchema)({
|
|
99
|
+
// ── Required data. `rows` is a rich array (rank·name·avatar·values[]) → JSON modal;
|
|
100
|
+
// `columns` is a simple string list → pill editor. ──
|
|
101
|
+
rows: { type: "array", required: true, description: "Table rows. Each: name, optional rank + avatar, and values[] index-aligned to columns.", meta: { control: { flavor: "jsonModal" }, ui: { label: "Rows", order: 1 } } },
|
|
102
|
+
columns: { type: "string[]", required: true, description: "Value-column headers (index-aligned to each row's values).", meta: { control: { placeholder: "Commits" }, ui: { label: "Columns", order: 2 } } },
|
|
103
|
+
// ── Primary props — flat, like controls grouped together (text → toggles → number → colors). ──
|
|
104
|
+
title: { type: "string", required: false, description: "Card title.", meta: { control: { placeholder: "e.g., TOP CONTRIBUTORS" }, ui: { label: "Title", order: 3 } } },
|
|
105
|
+
subtitle: { type: "string", required: false, description: "Card subtitle.", meta: { ui: { label: "Subtitle", order: 4 } } },
|
|
106
|
+
preset: { type: "string", required: false, description: "Alpine theme variant (light default; dark = the FFmpeg hero look).", meta: { constraints: { oneOf: ["light", "dark"] }, ui: { label: "Preset", order: 5 } } },
|
|
107
|
+
showHeader: { type: "boolean", required: false, description: "Show the icon + title + subtitle band (default true). False when a parent chrome supplies the title.", meta: { ui: { label: "Show header", order: 6 } } },
|
|
108
|
+
topTint: { type: "number", required: false, description: "How many top rows get the accent wash (default 3).", meta: { constraints: { min: 0, max: 8 }, ui: { label: "Top tint rows", order: 7 } } },
|
|
109
|
+
accent: { type: "string", required: false, description: "Accent color (icon chip + top-row wash). Defaults to the theme primary.", meta: { constraints: { isColor: true }, control: { placeholder: "theme primary", colorPicker: true, defaultColor: "#2563EB" }, ui: { label: "Accent", order: 8 } } },
|
|
110
|
+
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: 9 } } },
|
|
111
|
+
washColor: { type: "string", required: false, description: "Solid color the row washes blend against (for transparent surfaces composed on a colored backdrop).", meta: { constraints: { isColor: true }, control: { placeholder: "card background", colorPicker: true, defaultColor: "#FFFFFF" }, ui: { label: "Wash base", order: 10 } } },
|
|
112
|
+
// ── Everything else grouped into collapsible sections. ──
|
|
113
|
+
anim: {
|
|
114
|
+
type: "group", required: false, description: "Reveal mode + row-cascade intro.",
|
|
115
|
+
meta: { ui: { label: "Animation", order: 13, collapsedByDefault: true } },
|
|
116
|
+
fields: {
|
|
117
|
+
renderMode: (0, alpine_anim_1.fEnum)("Render mode", ["premium", "light"], "\"premium\" (default): rows cascade in via alpha fade — a geq per faded source. \"light\": the same cascade via free enable-gate pops — no geq, composable, cheap when nested."),
|
|
118
|
+
reduceMotion: alpine_anim_1.ALPINE_ANIM_FIELDS.reduceMotion,
|
|
119
|
+
introFrac: alpine_anim_1.ALPINE_ANIM_FIELDS.introFrac,
|
|
120
|
+
countUp: (0, alpine_anim_1.fBool)("Count up", "Count the value columns up during the intro."),
|
|
121
|
+
easing: alpine_anim_1.ALPINE_ANIM_FIELDS.easing,
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
theme: {
|
|
125
|
+
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.",
|
|
126
|
+
meta: { ui: { label: "Theme", order: 14, collapsedByDefault: true } },
|
|
127
|
+
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.") },
|
|
128
|
+
},
|
|
129
|
+
// ── Agent props — opaque, no nice human control (a raw SVG path / index-aligned
|
|
130
|
+
// per-column arrays you'd hand-type): they live in the agent fold. ──
|
|
131
|
+
icon: { type: "string", required: false, description: "Named header glyph (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: 11, consumer: "human" }, control: { syncsTo: [{ prop: "iconPath", map: { kind: "lookup", table: alpine_glyphs_1.ALPINE_GLYPHS } }] } } },
|
|
132
|
+
iconPath: { type: "string", required: false, description: "Header glyph SVG path d (24×24), drawn as a mask on the icon chip — the raw value behind the friendly `icon` knob.", meta: { ui: { label: "Icon path (SVG d)", order: 15, consumer: "agent" } } },
|
|
133
|
+
columnColors: { type: "array", required: false, description: "Per-column value color (index-aligned to columns). Portrait layout tints secondary metrics (e.g. additions green / deletions red).", meta: { ui: { label: "Column colors", order: 16, consumer: "agent" } } },
|
|
134
|
+
columnSigns: { type: "string[]", required: false, description: "Per-column sign prefix (index-aligned to columns), e.g. + / -. Portrait only.", meta: { ui: { label: "Column signs", order: 17, consumer: "agent" } } },
|
|
135
|
+
// ── Debug — hidden by default; the sandbox / matrix / Make iteration flip it true. ──
|
|
136
|
+
debugLayout: { type: "boolean", required: false, description: "Dev-only layout contract view: renders the contract wireframe instead of the table — rows GREEN with the measured rule when every row/card is the same size, offenders RED when not. Deterministic default false; production never sets it.", meta: { ui: { label: "Debug layout", order: 18, collapsedByDefault: true } } },
|
|
137
|
+
});
|
|
138
|
+
exports.AlpineContributorTable = {
|
|
139
|
+
id: (0, types_1.asTemplateId)("@m0saic/alpine/contributor-table/v1"),
|
|
140
|
+
label: "Alpine Contributor Table",
|
|
141
|
+
version: 1,
|
|
142
|
+
description: "Alpine contributor table — friendly mobile-marketing card: a ranked multi-column table (rank · avatar · name + arbitrary right-aligned value columns), icon + title header, top-N accent wash, count-up values. Alpine-light by default; the FFmpeg Weekly Pulse uses preset:\"dark\".",
|
|
143
|
+
capabilities: { tier: "core" },
|
|
144
|
+
primitive: true,
|
|
145
|
+
tags: ["data-viz", "alpine", "contributor-table", "ranking", "table", "animated", "developers", "analysts", "team", "open-source"],
|
|
146
|
+
outputHints: { format: { kind: "video", container: "mp4" }, width: 1280, height: 720, fps: 30, durationMs: 3000 }, // 720 not 708: a 5-smooth hinted canvas (latticeSmooth)
|
|
147
|
+
propsSchema,
|
|
148
|
+
defaultProps: {
|
|
149
|
+
showHeader: true,
|
|
150
|
+
preset: "light",
|
|
151
|
+
debugLayout: false,
|
|
152
|
+
theme: { forceFetch: false },
|
|
153
|
+
rows: [
|
|
154
|
+
{ rank: 1, name: "Anton Khirnov", values: [23, 4512, 2103] },
|
|
155
|
+
{ rank: 2, name: "Michael Niedermayer", values: [18, 3204, 1034] },
|
|
156
|
+
{ rank: 3, name: "James Almer", values: [14, 2193, 812] },
|
|
157
|
+
{ rank: 4, name: "Marton Balint", values: [11, 1842, 1201] },
|
|
158
|
+
{ rank: 5, name: "Limin Wang", values: [9, 1503, 623] },
|
|
159
|
+
],
|
|
160
|
+
columns: ["Commits", "Additions", "Deletions"],
|
|
161
|
+
title: "TOP CONTRIBUTORS",
|
|
162
|
+
subtitle: "This week",
|
|
163
|
+
topTint: 3,
|
|
164
|
+
columnColors: [undefined, ACCENT, NEG],
|
|
165
|
+
columnSigns: ["", "+", "-"],
|
|
166
|
+
// Default header glyph — stored as the CANONICAL raw (the Icon dropdown
|
|
167
|
+
// shows "contributors" via the lookup sync's inverse map).
|
|
168
|
+
iconPath: alpine_glyphs_1.ALPINE_GLYPHS.contributors,
|
|
169
|
+
anim: DEFAULT_ANIM,
|
|
170
|
+
},
|
|
171
|
+
async render(props, ctx) {
|
|
172
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
173
|
+
const W = Math.max(1, Math.round(ctx.target.width));
|
|
174
|
+
const H = Math.max(1, Math.round(ctx.target.height));
|
|
175
|
+
// Keep each drawn row's ORIGINAL index into props.rows: the leaf bindings
|
|
176
|
+
// (Make's double-click edit of rows[i].name / rank / values[c]) must address
|
|
177
|
+
// the prop value, not the filtered / truncated draw order.
|
|
178
|
+
const rowEntries = ((_a = props.rows) !== null && _a !== void 0 ? _a : [])
|
|
179
|
+
.map((r, srcIndex) => ({ r, srcIndex }))
|
|
180
|
+
.filter(({ r }) => r && typeof r.name === "string")
|
|
181
|
+
.slice(0, MAX_ROWS);
|
|
182
|
+
const rows = rowEntries.map((e) => e.r);
|
|
183
|
+
const columns = (_b = props.columns) !== null && _b !== void 0 ? _b : [];
|
|
184
|
+
if (!rows.length || !columns.length) {
|
|
185
|
+
return (0, template_utils_1.makeErrorMosaic)("contributor-table needs rows[] + columns[]", { title: `${this.id} props`, width: W, height: H });
|
|
186
|
+
}
|
|
187
|
+
// Alpine theming: light by default; the FFmpeg hero passes preset:"dark". A producer
|
|
188
|
+
// can override via props.theme; explicit color props still win. The palette names
|
|
189
|
+
// below shadow the (removed) module constants, so every body reference stays unchanged.
|
|
190
|
+
const theme = await (0, alpine_theme_1.resolveAlpineTheme)((_c = props.preset) !== null && _c !== void 0 ? _c : DEFAULT_PRESET, ctx, props.theme);
|
|
191
|
+
const CARD_BG = theme.card, ROW_BG = theme.grid, TITLE_COLOR = theme.title, LABEL_COLOR = theme.muted, VALUE_COLOR = theme.label;
|
|
192
|
+
const accent = (_d = props.accent) !== null && _d !== void 0 ? _d : theme.primary;
|
|
193
|
+
const cardBg = (_e = props.backgroundColor) !== null && _e !== void 0 ? _e : CARD_BG;
|
|
194
|
+
// Row washes blend against a SOLID base even when the surface is transparent
|
|
195
|
+
// ("black@0", set when composing under a chrome that draws the backdrop) — so the
|
|
196
|
+
// banded rows stay visible without a self-drawn card panel.
|
|
197
|
+
const surfaceSolid = typeof cardBg === "string" && cardBg.startsWith("#");
|
|
198
|
+
const washBase = (_f = props.washColor) !== null && _f !== void 0 ? _f : (surfaceSolid ? cardBg : CARD_BG);
|
|
199
|
+
const anim = { ...DEFAULT_ANIM, ...((_g = props.anim) !== null && _g !== void 0 ? _g : {}) };
|
|
200
|
+
const animate = !anim.reduceMotion;
|
|
201
|
+
const light = ((_h = anim.renderMode) !== null && _h !== void 0 ? _h : DEFAULT_RENDER_MODE) === "light";
|
|
202
|
+
// Mode-aware reveal: premium fades (geq per source), light enable-gates (no geq);
|
|
203
|
+
// reduceMotion → static. Premium is byte-identical to the pre-audit `wrapFade`.
|
|
204
|
+
const wrapReveal = (node, startSec, durSec) => !animate ? node : light ? wrapGate(node, startSec, true) : wrapFade(node, startSec, durSec, true);
|
|
205
|
+
const topTint = (_j = props.topTint) !== null && _j !== void 0 ? _j : 3;
|
|
206
|
+
const showHeader = (_k = props.showHeader) !== null && _k !== void 0 ? _k : true;
|
|
207
|
+
const N = rows.length, C = columns.length;
|
|
208
|
+
// Fonts off canvas height. Title/column-header get the portrait treatment —
|
|
209
|
+
// width-capped to their slots so long strings SHRINK instead of overflowing
|
|
210
|
+
// the canvas / colliding (tcell is plain text, not fit:contain).
|
|
211
|
+
const titleLen = Math.max(1, (0, template_utils_1.textEmUnits)((_l = props.title) !== null && _l !== void 0 ? _l : "TOP CONTRIBUTORS"));
|
|
212
|
+
const titleFont = Math.max(18, Math.min(Math.round(H * 0.05), Math.floor((W * 0.68) / (titleLen * 0.62))));
|
|
213
|
+
// Width-capped like the title (same 0.68 header slot): a 69-char stress
|
|
214
|
+
// subtitle @19px overran the band by ~12px (text-fit tripwire catch).
|
|
215
|
+
const subLen = Math.max(1, (0, template_utils_1.textEmUnits)((_m = props.subtitle) !== null && _m !== void 0 ? _m : "This week"));
|
|
216
|
+
const subFont = Math.max(11, Math.min(Math.round(H * 0.026), Math.floor((W * 0.68) / (subLen * 0.62))));
|
|
217
|
+
const valWPct = Math.max(8, Math.floor((100 - PAD_W * 2 - RANK_W - CONTRIB_W_NOMINAL) / C));
|
|
218
|
+
// Contributor column = whatever the value columns leave of the 100 (42..47 for
|
|
219
|
+
// C ≤ 5; narrower once eight-unit value columns need the room).
|
|
220
|
+
const CONTRIB_W = 100 - PAD_W * 2 - RANK_W - valWPct * C;
|
|
221
|
+
const colLongest = Math.max(1, ...columns.map((c) => String(c).length), "Contributor".length);
|
|
222
|
+
const colFont = Math.max(10, Math.min(Math.round(H * 0.024), Math.floor((W * (valWPct / 100) * 0.92) / (colLongest * 0.62))));
|
|
223
|
+
const nameFont = Math.max(12, Math.round(H * 0.032));
|
|
224
|
+
const valueFont = Math.max(12, Math.round(H * 0.034));
|
|
225
|
+
const rankFont = Math.max(11, Math.round(H * 0.03));
|
|
226
|
+
const avatarFont = Math.max(14, Math.round(H * 0.042));
|
|
227
|
+
const clipSec = Math.max(0.1, ((_o = ctx.target.durationMs) !== null && _o !== void 0 ? _o : 3000) / 1000);
|
|
228
|
+
const introT = Math.max(0.1, Math.min(1, anim.introFrac) * clipSec);
|
|
229
|
+
const introDelay = Math.min(0.15, introT * 0.1);
|
|
230
|
+
const CASCADE = 0.5;
|
|
231
|
+
const rowDur = Math.max(0.05, (introT - introDelay) / (1 + CASCADE * Math.max(0, N - 1)));
|
|
232
|
+
const rowStagger = CASCADE * rowDur;
|
|
233
|
+
const fmt = (raw) => (typeof raw === "number" ? Math.round(raw).toLocaleString("en-US") : String(raw !== null && raw !== void 0 ? raw : ""));
|
|
234
|
+
// Leaf binding into the `rows` prop for the rect that shows a field, at the
|
|
235
|
+
// row's ORIGINAL index. `values[c]` binds as "number" — the type the default
|
|
236
|
+
// data uses (Make seeds from the raw leaf, not the formatted / signed text).
|
|
237
|
+
const bindRow = (src, i, field, kind, ...rest) => (0, template_utils_1.bindPropPath)(src, "rows", [rowEntries[i].srcIndex, field, ...rest], kind);
|
|
238
|
+
// Header glyph chip (font-independent) — shared by both layouts. The chip
|
|
239
|
+
// tile is tagged for the layout contract's aspect rule (must paint square).
|
|
240
|
+
const chipTile = () => {
|
|
241
|
+
const t = (0, template_utils_1.makeColorTile)(accent, { effects: { rounding: { cornerStyle: "rounded", borderRadius: 0.28 } } });
|
|
242
|
+
t.editor = { label: "header-icon" };
|
|
243
|
+
// The chip's fill IS `accent` → Make's color picker (the glyph over it is a fixed ink).
|
|
244
|
+
return (0, template_utils_1.bindProp)(t, "accent");
|
|
245
|
+
};
|
|
246
|
+
// Friendly `icon` name → shared catalog path; raw `iconPath` wins.
|
|
247
|
+
const headerGlyphPath = (0, alpine_glyphs_1.resolveAlpineGlyph)(props.icon, props.iconPath, "@m0saic/alpine/contributor-table/v1");
|
|
248
|
+
const iconChip = headerGlyphPath
|
|
249
|
+
? (0, alpine_card_1.overlay)([
|
|
250
|
+
(0, alpine_card_1.paint)(chipTile()),
|
|
251
|
+
// 22% pad on every side (commit-feed's chip ratio) — the glyph must not touch the chip edge.
|
|
252
|
+
(0, alpine_card_1.paint)((0, template_utils_1.makeColorTile)(GLYPH_COLOR, {
|
|
253
|
+
mask: { kind: "inline-mask", localPath: headerGlyphPath, bounds: { x: 0, y: 0, width: 24, height: 24 } },
|
|
254
|
+
placement: { inset: { x: 0.22, y: 0.22 } },
|
|
255
|
+
})),
|
|
256
|
+
])
|
|
257
|
+
: (0, alpine_card_1.paint)(chipTile());
|
|
258
|
+
let root;
|
|
259
|
+
const portrait = H > W * 1.15;
|
|
260
|
+
if (portrait) {
|
|
261
|
+
// ════ PORTRAIT — hero-metric stacked cards (mobile-leaderboard pattern) ════
|
|
262
|
+
// Each contributor = a card: rank · square avatar · name + the ranked metric
|
|
263
|
+
// (column 0) BIG on the right; secondary columns as a colored diff line below.
|
|
264
|
+
// Fonts sized off WIDTH (the constraining axis) + width-capped (fixed font).
|
|
265
|
+
const padP = Math.round(Math.min(W, H) * 0.045);
|
|
266
|
+
const innerW = Math.max(1, W - 2 * padP);
|
|
267
|
+
const innerH = Math.max(1, H - 2 * padP);
|
|
268
|
+
const headerH = showHeader ? Math.round(innerH * 0.13) : 0;
|
|
269
|
+
const headerGap = showHeader ? Math.round(innerH * 0.025) : 0;
|
|
270
|
+
const rowsH = Math.max(1, innerH - headerH - headerGap);
|
|
271
|
+
const gapP = Math.max(8, Math.round(rowsH * 0.02));
|
|
272
|
+
// Card PITCH (band incl. its half-gaps) from the EQUAL band split below —
|
|
273
|
+
// the card box itself is pitch minus the gap carved inside the band.
|
|
274
|
+
const pitchP = Math.max(1, Math.floor(rowsH / N));
|
|
275
|
+
const cardH = Math.max(1, pitchP - gapP);
|
|
276
|
+
const cardPadX = Math.round(innerW * 0.045);
|
|
277
|
+
const cardPadY = Math.round(cardH * 0.07);
|
|
278
|
+
const contentW = Math.max(1, innerW - 2 * cardPadX);
|
|
279
|
+
const contentH = Math.max(1, cardH - 2 * cardPadY);
|
|
280
|
+
const topLineH = Math.round(contentH * 0.56);
|
|
281
|
+
const botLineH = Math.max(1, contentH - topLineH);
|
|
282
|
+
// Top-line column pixels — they SUM to contentW, so the avatar cell is exactly
|
|
283
|
+
// topLineH wide (and topLineH tall) → a true square → a round disc.
|
|
284
|
+
const rankColPx = Math.round(contentW * 0.09);
|
|
285
|
+
const avatarColPx = topLineH;
|
|
286
|
+
const gap1Px = Math.round(contentW * 0.02);
|
|
287
|
+
const heroColPx = Math.round(contentW * 0.22);
|
|
288
|
+
const nameColPx = Math.max(40, contentW - rankColPx - avatarColPx - gap1Px - heroColPx);
|
|
289
|
+
const indentPx = rankColPx + avatarColPx + gap1Px;
|
|
290
|
+
// Width-cap fonts so the longest string in each zone fits (≈0.62em char width
|
|
291
|
+
// — generous, all-caps glyphs run wide).
|
|
292
|
+
const cap = (px, longest, slotPx, min) => Math.max(min, Math.min(px, Math.floor(slotPx / (Math.max(1, longest) * 0.62))));
|
|
293
|
+
const nameLongest = Math.max(1, ...rows.map((r) => (0, template_utils_1.textEmUnits)(r.name)));
|
|
294
|
+
const heroLongest = Math.max(1, ...rows.map((r) => (0, template_utils_1.textEmUnits)(fmt(r.values[0]))));
|
|
295
|
+
let secLongest = 1;
|
|
296
|
+
for (const r of rows)
|
|
297
|
+
for (let c = 1; c < C; c++)
|
|
298
|
+
secLongest = Math.max(secLongest, (0, template_utils_1.textEmUnits)(((_q = (_p = props.columnSigns) === null || _p === void 0 ? void 0 : _p[c]) !== null && _q !== void 0 ? _q : "") + fmt(r.values[c])));
|
|
299
|
+
const titleText = (_r = props.title) !== null && _r !== void 0 ? _r : "TOP CONTRIBUTORS";
|
|
300
|
+
const secCount = Math.max(1, C - 1);
|
|
301
|
+
const secColPx = Math.floor(Math.max(1, contentW - indentPx) / secCount);
|
|
302
|
+
const rankFontP = Math.max(12, Math.round(W * 0.042));
|
|
303
|
+
// ×0.94: q() weight quantization shaves a few % off the realized name
|
|
304
|
+
// cell — capping to the full modeled slot left 19-char names 3px over
|
|
305
|
+
// at 360×640 (text-fit tripwire catch). Floor-bound long names
|
|
306
|
+
// ellipsize (truncated text must still FIT, never clip).
|
|
307
|
+
const nameFontP = cap(Math.round(W * 0.05), nameLongest, Math.round(nameColPx * 0.94), 12);
|
|
308
|
+
const fitNameP = (s) => (0, alpine_card_1.fitEmUnits)(s, Math.max(2, (nameColPx * 0.94) / (nameFontP * 0.62)));
|
|
309
|
+
// Height-cap too: the font tracks W but the hero row (64% of topLineH)
|
|
310
|
+
// tracks H — wide-short portraits (e.g. 733×977) clipped the digits' tops.
|
|
311
|
+
const heroFontP = Math.max(14, Math.min(cap(Math.round(W * 0.092), heroLongest, heroColPx, 18), Math.round(topLineH * 0.55)));
|
|
312
|
+
const heroLabelFontP = Math.max(9, Math.round(W * 0.026));
|
|
313
|
+
const secFontP = cap(Math.round(W * 0.042), secLongest, secColPx, 11);
|
|
314
|
+
const avatarFontP = Math.max(14, Math.round(W * 0.052));
|
|
315
|
+
const titleFontP = cap(Math.round(W * 0.062), titleText.length, Math.round(innerW * 0.7), 18);
|
|
316
|
+
const subFontP = Math.max(11, Math.round(W * 0.032));
|
|
317
|
+
const hasDiff = !!(props.columnColors || props.columnSigns);
|
|
318
|
+
// Grain-collapse for the card-interior splits (handbook: px-per-weight ≥4).
|
|
319
|
+
// The interior weights below are PIXEL-derived; their sums match the
|
|
320
|
+
// computed cell size, but the REALIZED cell drifts ±1-2px under ancestor
|
|
321
|
+
// quantization — at units ≈ span an edge cell floors to 0 and the whole
|
|
322
|
+
// doc dies with SPLIT_EXCEEDS_AXIS (repro: defaults at 733×977). Dividing
|
|
323
|
+
// every weight by 4 keeps the ratios (±2px) with a 4× feasibility margin.
|
|
324
|
+
const q = (px) => Math.max(1, Math.round(px / 4));
|
|
325
|
+
const cardNode = (i) => {
|
|
326
|
+
var _a, _b, _c, _d, _e, _f;
|
|
327
|
+
const r = rows[i];
|
|
328
|
+
const startAtSec = introDelay + i * rowStagger;
|
|
329
|
+
const rankNode = (0, alpine_card_1.paint)(bindRow((0, alpine_card_1.tag)(fcell(String((_a = r.rank) !== null && _a !== void 0 ? _a : i + 1), rankFontP, LABEL_COLOR, "center"), "rank"), i, "rank", "number"));
|
|
330
|
+
const disc = avatarDisc(r.name, AVATAR_HUES[i % AVATAR_HUES.length], avatarFontP);
|
|
331
|
+
const nameNode = (0, alpine_card_1.paint)(bindRow((0, alpine_card_1.tag)(fcell(fitNameP(r.name), nameFontP, TITLE_COLOR, "left"), "row-name"), i, "name", "string"));
|
|
332
|
+
// The hero metric shows values[0] as-is (formatted) → bound. The secondary
|
|
333
|
+
// lines below merge a sign / column label INTO the value → composites, unbound.
|
|
334
|
+
const heroText = fmt(r.values[0]);
|
|
335
|
+
const heroVal = anim.countUp && animate && /\d/.test(heroText)
|
|
336
|
+
? (0, alpine_card_1.paint)(bindRow((0, alpine_card_1.tag)(exprCell((0, template_utils_1.animateNumbersInText)(heroText, { startSec: startAtSec, durationSec: rowDur, ease: anim.easing }), heroFontP, VALUE_COLOR, "right"), "row-value"), i, "values", "number", 0))
|
|
337
|
+
: (0, alpine_card_1.paint)(bindRow((0, alpine_card_1.tag)(fcell(heroText, heroFontP, VALUE_COLOR, "right"), "row-value"), i, "values", "number", 0));
|
|
338
|
+
const heroBlock = (0, alpine_card_1.rowSplit)([
|
|
339
|
+
{ weight: 64, node: heroVal },
|
|
340
|
+
{ weight: 36, node: (0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, alpine_card_1.tag)(fcell((_b = columns[0]) !== null && _b !== void 0 ? _b : "", heroLabelFontP, LABEL_COLOR, "right"), "col-header"), "columns", 0)) },
|
|
341
|
+
]);
|
|
342
|
+
const topLine = (0, alpine_card_1.colSplit)([
|
|
343
|
+
{ weight: q(rankColPx), node: rankNode },
|
|
344
|
+
{ weight: q(avatarColPx), node: discInCell(disc) },
|
|
345
|
+
{ weight: q(gap1Px), node: alpine_card_1.EMPTY },
|
|
346
|
+
{ weight: q(nameColPx), node: nameNode },
|
|
347
|
+
{ weight: q(heroColPx), node: heroBlock },
|
|
348
|
+
]);
|
|
349
|
+
// bottom line: secondary metrics (columns 1..), indented under the name.
|
|
350
|
+
const botBands = [{ weight: q(indentPx), node: alpine_card_1.EMPTY }];
|
|
351
|
+
for (let c = 1; c < C; c++) {
|
|
352
|
+
const text = fmt(r.values[c]);
|
|
353
|
+
const sign = (_d = (_c = props.columnSigns) === null || _c === void 0 ? void 0 : _c[c]) !== null && _d !== void 0 ? _d : "";
|
|
354
|
+
const color = (_f = (_e = props.columnColors) === null || _e === void 0 ? void 0 : _e[c]) !== null && _f !== void 0 ? _f : LABEL_COLOR;
|
|
355
|
+
const display = hasDiff ? `${sign}${text}` : `${columns[c]} ${text}`;
|
|
356
|
+
const node = anim.countUp && animate && /\d/.test(text)
|
|
357
|
+
? (0, alpine_card_1.paint)((0, alpine_card_1.tag)(exprCell((0, template_utils_1.animateNumbersInText)(display, { startSec: startAtSec, durationSec: rowDur, ease: anim.easing }), secFontP, color, "left"), "row-value"))
|
|
358
|
+
: (0, alpine_card_1.paint)((0, alpine_card_1.tag)(fcell(display, secFontP, color, "left"), "row-value"));
|
|
359
|
+
const w = c === C - 1 ? Math.max(1, contentW - indentPx - secColPx * (secCount - 1)) : secColPx;
|
|
360
|
+
botBands.push({ weight: q(w), node });
|
|
361
|
+
}
|
|
362
|
+
const botLine = (0, alpine_card_1.colSplit)(botBands);
|
|
363
|
+
const cardContent = (0, alpine_card_1.rowSplit)([{ weight: q(topLineH), node: topLine }, { weight: q(botLineH), node: botLine }]);
|
|
364
|
+
const cardInset = (0, alpine_card_1.rowSplit)([
|
|
365
|
+
{ weight: q(cardPadY), node: alpine_card_1.EMPTY },
|
|
366
|
+
{ weight: q(contentH), node: (0, alpine_card_1.colSplit)([{ weight: q(cardPadX), node: alpine_card_1.EMPTY }, { weight: q(contentW), node: cardContent }, { weight: q(cardPadX), node: alpine_card_1.EMPTY }]) },
|
|
367
|
+
{ weight: q(cardPadY), node: alpine_card_1.EMPTY },
|
|
368
|
+
]);
|
|
369
|
+
const isTop = i < topTint;
|
|
370
|
+
const rowColor = isTop ? blend(washBase, accent, 0.1) : blend(washBase, ROW_BG, 0.55);
|
|
371
|
+
const cardTileSrc = (0, template_utils_1.makeColorTile)(rowColor, { effects: { rounding: { cornerStyle: "rounded", borderRadius: 0.12 } } });
|
|
372
|
+
// "row" tag = the layout contract's join key (equal-size relation).
|
|
373
|
+
cardTileSrc.editor = { label: "row" };
|
|
374
|
+
// The wash is `washColor` blended toward the row/accent tint → the one prop that
|
|
375
|
+
// controls it; every card wash binds it (1:N).
|
|
376
|
+
const rowTile = (0, alpine_card_1.paint)((0, template_utils_1.bindProp)(cardTileSrc, "washColor"));
|
|
377
|
+
return wrapReveal((0, alpine_card_1.overlay)([rowTile, cardInset]), startAtSec, rowDur);
|
|
378
|
+
};
|
|
379
|
+
// Cards stack: one EQUAL band per card (quantization-exact — the
|
|
380
|
+
// interleaved [card, gap] weights let the engine's outside-in remainder
|
|
381
|
+
// starve the CENTER card under ancestor drift; measured 195/187/187/187/194
|
|
382
|
+
// at 720×1280 before this). The half-gap is carved INSIDE each band.
|
|
383
|
+
const cardU = Math.max(2, Math.round((2 * cardH) / Math.max(1, gapP)));
|
|
384
|
+
const cardBands = [];
|
|
385
|
+
for (let i = 0; i < N; i++) {
|
|
386
|
+
cardBands.push({
|
|
387
|
+
weight: 1,
|
|
388
|
+
node: (0, alpine_card_1.rowSplit)([
|
|
389
|
+
{ weight: 1, node: alpine_card_1.EMPTY },
|
|
390
|
+
{ weight: cardU, node: cardNode(i) },
|
|
391
|
+
{ weight: 1, node: alpine_card_1.EMPTY },
|
|
392
|
+
]),
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
const cardsStack = (0, alpine_card_1.rowSplit)(cardBands);
|
|
396
|
+
const iconBoxP = (0, alpine_card_1.rowSplit)([{ weight: 1, node: alpine_card_1.EMPTY }, { weight: 5, node: iconChip }, { weight: 2, node: alpine_card_1.EMPTY }]);
|
|
397
|
+
const titleStackP = (0, alpine_card_1.rowSplit)([
|
|
398
|
+
{ weight: 58, node: (0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, alpine_card_1.tag)(fcell(titleText, titleFontP, TITLE_COLOR, "left"), "table-title"), "title")) },
|
|
399
|
+
{ weight: 42, node: (0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, alpine_card_1.tag)(tcell((_s = props.subtitle) !== null && _s !== void 0 ? _s : "This week", subFontP, LABEL_COLOR, "left"), "table-subtitle"), "subtitle")) },
|
|
400
|
+
]);
|
|
401
|
+
// Icon column width == the chip's height (the 5/8 band of the header),
|
|
402
|
+
// so the chip cell is a SQUARE by construction — innerW·0.15 only
|
|
403
|
+
// happened to be near-square at some canvases (108×80 at 733×977).
|
|
404
|
+
const iconW = Math.max(1, Math.round(headerH * (5 / 8)));
|
|
405
|
+
const iconGapW = Math.round(innerW * 0.04);
|
|
406
|
+
const headerP = (0, alpine_card_1.colSplit)([
|
|
407
|
+
{ weight: iconW, node: iconBoxP },
|
|
408
|
+
{ weight: iconGapW, node: alpine_card_1.EMPTY },
|
|
409
|
+
{ weight: Math.max(1, innerW - iconW - iconGapW), node: titleStackP },
|
|
410
|
+
]);
|
|
411
|
+
const headerNodeP = wrapReveal(headerP, introDelay, rowDur);
|
|
412
|
+
const body = showHeader
|
|
413
|
+
? (0, alpine_card_1.rowSplit)([
|
|
414
|
+
{ weight: headerH, node: headerNodeP },
|
|
415
|
+
{ weight: headerGap, node: alpine_card_1.EMPTY },
|
|
416
|
+
{ weight: rowsH, node: cardsStack },
|
|
417
|
+
])
|
|
418
|
+
: cardsStack;
|
|
419
|
+
const contentInsetP = (0, alpine_card_1.rowSplit)([
|
|
420
|
+
{ weight: padP, node: alpine_card_1.EMPTY },
|
|
421
|
+
{ weight: innerH, node: (0, alpine_card_1.colSplit)([{ weight: padP, node: alpine_card_1.EMPTY }, { weight: innerW, node: body }, { weight: padP, node: alpine_card_1.EMPTY }]) },
|
|
422
|
+
{ weight: padP, node: alpine_card_1.EMPTY },
|
|
423
|
+
]);
|
|
424
|
+
// Skip the surface tile entirely when transparent — a "black@0" tile composites
|
|
425
|
+
// opaque-black over a parent backdrop; with no tile, the parent panel shows through.
|
|
426
|
+
const surfaceP = wrapReveal((0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, template_utils_1.makeColorTile)(cardBg, { effects: { rounding: { cornerStyle: "rounded", borderRadius: 0.04 } } }), "backgroundColor")), 0, rowDur);
|
|
427
|
+
root = surfaceSolid ? (0, alpine_card_1.overlay)([surfaceP, contentInsetP]) : contentInsetP;
|
|
428
|
+
}
|
|
429
|
+
else {
|
|
430
|
+
// ════ LANDSCAPE / SQUARE — the approved multi-column table ════
|
|
431
|
+
const pad = Math.round(Math.min(W, H) * 0.04);
|
|
432
|
+
const valW = valWPct; // each value col (computed early for the colFont width-cap)
|
|
433
|
+
// Name: fixed font width-capped to the name slot so long names SHRINK (not clip,
|
|
434
|
+
// the fit:contain failure mode) — binds only when the slot is tight (square).
|
|
435
|
+
// 0.72, not 0.77: the realized name cell is 15/20 of CONTRIB_W (=0.75)
|
|
436
|
+
// MINUS split quantization — the 0.77 model let 19-char default names
|
|
437
|
+
// graze the value column by ~5% (text-fit tripwire catch).
|
|
438
|
+
const nameSlotPx = Math.max(1, Math.round((W - 2 * pad) * (CONTRIB_W / 100) * 0.72));
|
|
439
|
+
const nameLongestT = Math.max(1, ...rows.map((r) => (0, template_utils_1.textEmUnits)(r.name)));
|
|
440
|
+
const tableNameFont = Math.max(11, Math.min(Math.round(H * 0.04), Math.floor(nameSlotPx / (nameLongestT * 0.6))));
|
|
441
|
+
// When the 11px floor binds (absurdly long names), the font can't shrink
|
|
442
|
+
// further — ELLIPSIZE to what fits instead of clipping (founder rule:
|
|
443
|
+
// long text may truncate, but even the truncated string must fit).
|
|
444
|
+
const fitName = (s) => (0, alpine_card_1.fitEmUnits)(s, Math.max(2, nameSlotPx / (tableNameFont * 0.6)));
|
|
445
|
+
// ── A table row's column split (shared by the column-header + data rows) ──
|
|
446
|
+
const rowCols = (rank, contributor, vals) => (0, alpine_card_1.colSplit)([
|
|
447
|
+
{ weight: PAD_W, node: alpine_card_1.EMPTY },
|
|
448
|
+
{ weight: RANK_W, node: rank },
|
|
449
|
+
{ weight: CONTRIB_W, node: contributor },
|
|
450
|
+
...vals.map((v) => ({ weight: valW, node: v })),
|
|
451
|
+
{ weight: PAD_W, node: alpine_card_1.EMPTY },
|
|
452
|
+
]);
|
|
453
|
+
// Column-header row. The value-column headers display `columns[i]` — bound
|
|
454
|
+
// for Make's double-click edit (bindProp); "#" / "Contributor" are static chrome.
|
|
455
|
+
const colHeader = rowCols((0, alpine_card_1.paint)((0, alpine_card_1.tag)(tcell("#", colFont, LABEL_COLOR, "left"), "col-header")), (0, alpine_card_1.paint)((0, alpine_card_1.tag)(tcell("Contributor", colFont, LABEL_COLOR, "left"), "col-header")), columns.map((c, i) => (0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, alpine_card_1.tag)(tcell(c, colFont, LABEL_COLOR, "right"), "col-header"), "columns", i))));
|
|
456
|
+
// ── Data rows ──
|
|
457
|
+
// Avatar disc: a computed SQUARE (side 0.64·min of its cell) via placement
|
|
458
|
+
// insets — the cell's own aspect swings wildly with canvas/N (wide pill at
|
|
459
|
+
// 1920×480, tall pill at N=1 square), and the disc is the future profile-
|
|
460
|
+
// picture slot, so its paint must stay headshot-shaped at ANY canvas. The
|
|
461
|
+
// `avatar` contract constraint below enforces it.
|
|
462
|
+
const rowsHpx = Math.max(1, (H - 2 * pad) * ((showHeader ? 66 : 87) / 100));
|
|
463
|
+
const rowHpx = Math.max(1, (rowsHpx / N) * 0.8);
|
|
464
|
+
// CONTRIB_W/100: rowCols weights sum to exactly 100. 4/20: the contributor colSplit below
|
|
465
|
+
// — coarse on purpose (100-unit [18,5,77] sat at 2.4px/unit in this cell,
|
|
466
|
+
// and the engine's edge-first remainder fattened the disc band 43→56px).
|
|
467
|
+
const discCellWpx = Math.max(1, (W - 2 * pad) * (CONTRIB_W / 100) * (4 / 20));
|
|
468
|
+
const discSide = 0.64 * Math.min(discCellWpx, rowHpx);
|
|
469
|
+
const discInset = {
|
|
470
|
+
x: Math.max(0, (discCellWpx - discSide) / (2 * discCellWpx)),
|
|
471
|
+
y: Math.max(0, (rowHpx - discSide) / (2 * rowHpx)),
|
|
472
|
+
};
|
|
473
|
+
const discFont = Math.min(avatarFont, Math.max(10, Math.round(discSide * 0.6)));
|
|
474
|
+
const dataRow = (i) => {
|
|
475
|
+
var _a;
|
|
476
|
+
const r = rows[i];
|
|
477
|
+
const startAtSec = introDelay + i * rowStagger;
|
|
478
|
+
const rankNode = (0, alpine_card_1.paint)(bindRow((0, alpine_card_1.tag)(tcell(String((_a = r.rank) !== null && _a !== void 0 ? _a : i + 1), rankFont, LABEL_COLOR, "left"), "rank"), i, "rank", "number"));
|
|
479
|
+
// contributor cell = avatar disc (square circle) + name.
|
|
480
|
+
const disc = avatarDisc(r.name, AVATAR_HUES[i % AVATAR_HUES.length], discFont, discInset);
|
|
481
|
+
const contributor = (0, alpine_card_1.colSplit)([
|
|
482
|
+
{ weight: 4, node: disc }, // insets center a true square in the cell
|
|
483
|
+
{ weight: 1, node: alpine_card_1.EMPTY },
|
|
484
|
+
{ weight: 15, node: (0, alpine_card_1.paint)(bindRow((0, alpine_card_1.tag)(fcell(fitName(r.name), tableNameFont, TITLE_COLOR, "left"), "row-name"), i, "name", "string")) },
|
|
485
|
+
]);
|
|
486
|
+
const vals = columns.map((_, c) => {
|
|
487
|
+
var _a, _b, _c, _d;
|
|
488
|
+
const text = fmt(r.values[c]);
|
|
489
|
+
const sign = (_b = (_a = props.columnSigns) === null || _a === void 0 ? void 0 : _a[c]) !== null && _b !== void 0 ? _b : "";
|
|
490
|
+
const color = (_d = (_c = props.columnColors) === null || _c === void 0 ? void 0 : _c[c]) !== null && _d !== void 0 ? _d : VALUE_COLOR; // per-column tint (additions green / deletions red)
|
|
491
|
+
const display = `${sign}${text}`;
|
|
492
|
+
// The cell shows ONE leaf (values[c]) behind a constant per-column sign
|
|
493
|
+
// affix — bound like a prefixed value (Make seeds from the raw number).
|
|
494
|
+
return anim.countUp && animate && /\d/.test(text)
|
|
495
|
+
? (0, alpine_card_1.paint)(bindRow((0, alpine_card_1.tag)(exprCell((0, template_utils_1.animateNumbersInText)(display, { startSec: startAtSec, durationSec: rowDur, ease: anim.easing }), valueFont, color, "right"), "row-value"), i, "values", "number", c))
|
|
496
|
+
: (0, alpine_card_1.paint)(bindRow((0, alpine_card_1.tag)(tcell(display, valueFont, color, "right"), "row-value"), i, "values", "number", c));
|
|
497
|
+
});
|
|
498
|
+
const content = rowCols(rankNode, contributor, vals);
|
|
499
|
+
// Top-N rows get a soft accent wash + a subtle row tile behind; the rest a
|
|
500
|
+
// faint row tile so the table reads as banded.
|
|
501
|
+
const isTop = i < topTint;
|
|
502
|
+
// Bake the wash into a SOLID color so the band fades in WITH its row. A static
|
|
503
|
+
// overlay.alpha would make wrapFade skip the tile → the band shows at t=0.
|
|
504
|
+
const rowColor = isTop ? blend(washBase, accent, 0.1) : blend(washBase, ROW_BG, 0.55);
|
|
505
|
+
const rowTileSrc = (0, template_utils_1.makeColorTile)(rowColor, { effects: { rounding: { cornerStyle: "rounded", borderRadius: 0.16 } } });
|
|
506
|
+
// "row" tag = the layout contract's join key (equal-size relation).
|
|
507
|
+
rowTileSrc.editor = { label: "row" };
|
|
508
|
+
// The wash is `washColor` blended toward the row/accent tint → the one prop that
|
|
509
|
+
// controls it; every row wash binds it (1:N).
|
|
510
|
+
const rowTile = (0, alpine_card_1.paint)((0, template_utils_1.bindProp)(rowTileSrc, "washColor"));
|
|
511
|
+
const rowNode = (0, alpine_card_1.overlay)([rowTile, content]);
|
|
512
|
+
return wrapReveal(rowNode, startAtSec, rowDur);
|
|
513
|
+
};
|
|
514
|
+
// Rows stack: one EQUAL band per row (quantization-exact — the old
|
|
515
|
+
// interleaved [120, 32] weights let the engine's outside-in remainder
|
|
516
|
+
// starve the CENTER row under ancestor drift; measured 75/72/72/72/74 at
|
|
517
|
+
// 1001×733 before this). The half-gap is carved INSIDE each band by a tiny
|
|
518
|
+
// [1, 8, 1] split (row:gap ≈ the old 120:32 banding).
|
|
519
|
+
const rowsBands = [];
|
|
520
|
+
for (let i = 0; i < N; i++) {
|
|
521
|
+
rowsBands.push({
|
|
522
|
+
weight: 1,
|
|
523
|
+
node: (0, alpine_card_1.rowSplit)([
|
|
524
|
+
{ weight: 1, node: alpine_card_1.EMPTY },
|
|
525
|
+
{ weight: 8, node: dataRow(i) },
|
|
526
|
+
{ weight: 1, node: alpine_card_1.EMPTY },
|
|
527
|
+
]),
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
const rowsStack = (0, alpine_card_1.rowSplit)(rowsBands);
|
|
531
|
+
// ── Header (SQUARE icon chip + title + subtitle) — iconChip is shared (built above) ──
|
|
532
|
+
// The icon cell is built in pixels so its width == the header-band height → a square
|
|
533
|
+
// cell, and the 15/70/15 inset (both axes) keeps the chip itself square.
|
|
534
|
+
const hInnerW = Math.max(1, W - 2 * pad);
|
|
535
|
+
const headerHpx = Math.round(Math.max(1, H - 2 * pad) * 0.18); // = the weight-18 header band below
|
|
536
|
+
const iconBox = (0, alpine_card_1.rowSplit)([
|
|
537
|
+
{ weight: 15, node: alpine_card_1.EMPTY },
|
|
538
|
+
{ weight: 70, node: (0, alpine_card_1.colSplit)([{ weight: 15, node: alpine_card_1.EMPTY }, { weight: 70, node: iconChip }, { weight: 15, node: alpine_card_1.EMPTY }]) },
|
|
539
|
+
{ weight: 15, node: alpine_card_1.EMPTY },
|
|
540
|
+
]);
|
|
541
|
+
const titleStack = (0, alpine_card_1.rowSplit)([
|
|
542
|
+
{ weight: 58, node: (0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, alpine_card_1.tag)(tcell((_t = props.title) !== null && _t !== void 0 ? _t : "TOP CONTRIBUTORS", titleFont, TITLE_COLOR, "left"), "table-title"), "title")) },
|
|
543
|
+
{ weight: 42, node: (0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, alpine_card_1.tag)(tcell((_u = props.subtitle) !== null && _u !== void 0 ? _u : "This week", subFont, LABEL_COLOR, "left"), "table-subtitle"), "subtitle")) },
|
|
544
|
+
]);
|
|
545
|
+
const headerGapPx = Math.round(hInnerW * 0.015);
|
|
546
|
+
const header = (0, alpine_card_1.colSplit)([
|
|
547
|
+
{ weight: headerHpx, node: iconBox }, // px weight == header height → square cell
|
|
548
|
+
{ weight: headerGapPx, node: alpine_card_1.EMPTY },
|
|
549
|
+
{ weight: Math.max(1, hInnerW - headerHpx - headerGapPx), node: titleStack },
|
|
550
|
+
]);
|
|
551
|
+
const headerNode = wrapReveal(header, introDelay, rowDur);
|
|
552
|
+
const colHeaderNode = wrapReveal(colHeader, introDelay + rowStagger * 0.5, rowDur);
|
|
553
|
+
// ── Compose: content padded inside the card surface ──
|
|
554
|
+
const content = showHeader
|
|
555
|
+
? (0, alpine_card_1.rowSplit)([
|
|
556
|
+
{ weight: 18, node: headerNode },
|
|
557
|
+
{ weight: 4, node: alpine_card_1.EMPTY },
|
|
558
|
+
{ weight: 8, node: colHeaderNode },
|
|
559
|
+
{ weight: 4, node: alpine_card_1.EMPTY },
|
|
560
|
+
{ weight: 66, node: rowsStack },
|
|
561
|
+
])
|
|
562
|
+
: (0, alpine_card_1.rowSplit)([
|
|
563
|
+
{ weight: 9, node: colHeaderNode },
|
|
564
|
+
{ weight: 4, node: alpine_card_1.EMPTY },
|
|
565
|
+
{ weight: 87, node: rowsStack },
|
|
566
|
+
]);
|
|
567
|
+
const innerW = Math.max(1, W - 2 * pad), innerH = Math.max(1, H - 2 * pad);
|
|
568
|
+
const contentInset = (0, alpine_card_1.rowSplit)([
|
|
569
|
+
{ weight: pad, node: alpine_card_1.EMPTY },
|
|
570
|
+
{ weight: innerH, node: (0, alpine_card_1.colSplit)([{ weight: pad, node: alpine_card_1.EMPTY }, { weight: innerW, node: content }, { weight: pad, node: alpine_card_1.EMPTY }]) },
|
|
571
|
+
{ weight: pad, node: alpine_card_1.EMPTY },
|
|
572
|
+
]);
|
|
573
|
+
// Card surface fades in from t=0 too, so nothing is visible before the cascade.
|
|
574
|
+
// Skip it when transparent (see portrait note) so a parent backdrop shows through.
|
|
575
|
+
const surface = wrapReveal((0, alpine_card_1.paint)((0, template_utils_1.bindProp)((0, template_utils_1.makeColorTile)(cardBg, { effects: { rounding: { cornerStyle: "rounded", borderRadius: 0.04 } } }), "backgroundColor")), 0, rowDur);
|
|
576
|
+
root = surfaceSolid ? (0, alpine_card_1.overlay)([surface, contentInset]) : contentInset;
|
|
577
|
+
}
|
|
578
|
+
const doc = {
|
|
579
|
+
kind: "mosaic_document",
|
|
580
|
+
version: 1,
|
|
581
|
+
assets: {},
|
|
582
|
+
m0: root.m0,
|
|
583
|
+
sources: root.sources,
|
|
584
|
+
// Standalone (solid card) → the alpine canvas shows in the rounded-corner gaps;
|
|
585
|
+
// composed under a chrome (transparent surface) → keep it transparent.
|
|
586
|
+
backgroundColor: surfaceSolid ? theme.canvas : "black@0",
|
|
587
|
+
fps: ctx.target.fps,
|
|
588
|
+
durationMs: ctx.target.durationMs,
|
|
589
|
+
size: { width: W, height: H },
|
|
590
|
+
};
|
|
591
|
+
// Dev tripwire: every row/card must render the SAME size, the header icon
|
|
592
|
+
// chip must paint square, and every avatar disc must stay headshot-shaped
|
|
593
|
+
// (it's the future profile-picture slot — 0.2 tolerates quantization drift
|
|
594
|
+
// but trips on the pill stretches). Falsy debugLayout (default) returns
|
|
595
|
+
// the doc untouched at zero cost.
|
|
596
|
+
return Promise.resolve((0, template_utils_1.withLayoutContract)(doc, ctx, {
|
|
597
|
+
templateId: "@m0saic/alpine/contributor-table/v1",
|
|
598
|
+
// tolerancePx 1 = the equal split's quantization guarantee; 2% catches
|
|
599
|
+
// real starvation where a fraction is meaningful.
|
|
600
|
+
relations: N >= 2 ? [{ label: "row", equal: "size", tolerance: 0.02, tolerancePx: 1 }] : [],
|
|
601
|
+
constraints: [
|
|
602
|
+
...(showHeader ? [{ label: "header-icon", aspect: 1, aspectTolerance: 0.1 }] : []),
|
|
603
|
+
// 0.25, not tighter: at tiny canvases the disc bottoms out ~25px,
|
|
604
|
+
// where the engine's ±2-3px quantization drift alone is ~0.15 of
|
|
605
|
+
// aspect (measured 1.23 at 607×401). The pills this guards against
|
|
606
|
+
// are 3-8×.
|
|
607
|
+
{ label: "avatar", aspect: 1, aspectTolerance: 0.25 },
|
|
608
|
+
// Text-fit tripwires. row-name at 0.6em = the tableNameFont cap's
|
|
609
|
+
// own model; the rest at the pack's 0.62em. The col-header/rank
|
|
610
|
+
// labels exist in BOTH layouts; title/subtitle only with the header.
|
|
611
|
+
...(showHeader ? [
|
|
612
|
+
{ label: "table-title", textFits: { charWidthEm: 0.62 } },
|
|
613
|
+
{ label: "table-subtitle", textFits: { charWidthEm: 0.62 } },
|
|
614
|
+
] : []),
|
|
615
|
+
{ label: "col-header", textFits: { charWidthEm: 0.62 } },
|
|
616
|
+
{ label: "rank", textFits: { charWidthEm: 0.62 } },
|
|
617
|
+
{ label: "row-name", textFits: { charWidthEm: 0.6 } },
|
|
618
|
+
...(columns.length > 0 ? [{ label: "row-value", textFits: { charWidthEm: 0.62 } }] : []),
|
|
619
|
+
],
|
|
620
|
+
debug: props.debugLayout === true,
|
|
621
|
+
}));
|
|
622
|
+
},
|
|
623
|
+
// Editor-only first-open cover — the mosaic-branding theme; hero = the
|
|
624
|
+
// template's own static default render, INLINED flat (gate-15/21 keeper).
|
|
625
|
+
async renderCover(_props, ctx) {
|
|
626
|
+
const heroBox = (0, onboarding_cover_1.brandedCoverHeroBox)(ctx, "band");
|
|
627
|
+
const heroCtx = {
|
|
628
|
+
...ctx,
|
|
629
|
+
target: { ...ctx.target, width: heroBox.width, height: heroBox.height },
|
|
630
|
+
output: { ...ctx.output, width: heroBox.width, height: heroBox.height },
|
|
631
|
+
};
|
|
632
|
+
const hero = (await exports.AlpineContributorTable.render({
|
|
633
|
+
...exports.AlpineContributorTable.defaultProps,
|
|
634
|
+
anim: { ...DEFAULT_ANIM, renderMode: "light", reduceMotion: true },
|
|
635
|
+
}, heroCtx));
|
|
636
|
+
return (0, onboarding_cover_1.buildBrandedCover)({
|
|
637
|
+
ctx,
|
|
638
|
+
// Band variant (founder ruling 08-30): basic viz needs no
|
|
639
|
+
// explanation — hero full-bleed + brand band, nothing else.
|
|
640
|
+
variant: "band",
|
|
641
|
+
copy: {
|
|
642
|
+
productName: "Contributor Table",
|
|
643
|
+
title: "A contributor table.",
|
|
644
|
+
},
|
|
645
|
+
hero: (theme) => (0, onboarding_cover_1.onboardingFrame)((0, onboarding_cover_1.inlineHeroDoc)(hero), theme.borderStrong),
|
|
646
|
+
heroAssets: hero.assets,
|
|
647
|
+
children: hero.children,
|
|
648
|
+
});
|
|
649
|
+
},
|
|
650
|
+
};
|
|
651
|
+
(0, template_utils_1.registerTemplate)(exports.AlpineContributorTable);
|