m0saic 0.3.0 → 0.3.1

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.
Files changed (344) hide show
  1. package/dist/browseE2e.js +1 -1
  2. package/dist/connectionsFromEnv.js +1 -1
  3. package/dist/e2eTemplateVariants.js +1 -1
  4. package/dist/frontDoor.js +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/inlineDsl.js +1 -1
  7. package/dist/mcp/bridgeClient.js +1 -1
  8. package/dist/mcp/server.js +1 -1
  9. package/dist/mcp/tools.js +1 -1
  10. package/dist/mosaicxRunner.js +1 -1
  11. package/dist/outputPattern.js +1 -1
  12. package/dist/showcaseFeed.js +1 -1
  13. package/dist/templateDoctor.js +1 -1
  14. package/dist/utils/checkFeasibility.js +1 -1
  15. package/dist/utils/collectRenderErrors.js +1 -1
  16. package/dist/utils/enrichImageAlphaFromDoc.js +1 -1
  17. package/dist/utils/ensureFfmpeg.js +1 -1
  18. package/dist/utils/extractLayoutMeta.js +1 -1
  19. package/dist/utils/failureHints.js +1 -1
  20. package/dist/utils/ffmpegProbe.js +1 -1
  21. package/dist/utils/formatM0saicForCli.js +1 -1
  22. package/dist/utils/hashFile.js +1 -1
  23. package/dist/utils/helpGroups.js +1 -1
  24. package/dist/utils/installContext.js +1 -1
  25. package/dist/utils/invocation.js +1 -1
  26. package/dist/utils/licenseActivation.js +1 -1
  27. package/dist/utils/licenseActivationWorker.js +1 -1
  28. package/dist/utils/mosaicSpinner.js +1 -1
  29. package/dist/utils/parseDimensions.js +1 -1
  30. package/dist/utils/pathInfo.js +1 -1
  31. package/dist/utils/readJsonArg.js +1 -1
  32. package/dist/utils/renderOutcome.js +1 -1
  33. package/dist/utils/renderReport.js +1 -1
  34. package/dist/utils/renderSignals.js +1 -1
  35. package/dist/utils/renderWorkspace.js +1 -1
  36. package/dist/utils/reportOutputFormat.js +1 -1
  37. package/dist/utils/setupFfmpeg.js +1 -1
  38. package/dist/utils/telemetry.js +1 -1
  39. package/dist/utils/telemetryFlushWorker.js +1 -1
  40. package/dist/utils/telemetryUpstream.js +1 -1
  41. package/dist/utils/telemetryUsage.js +1 -1
  42. package/dist/utils/toolchainConfig.js +1 -1
  43. package/dist/utils/tutorialDuration.js +1 -1
  44. package/dist/utils/updateCheck.js +1 -1
  45. package/dist/utils/updateCheckWorker.js +1 -1
  46. package/dist/utils/validateSourceCounts.js +1 -1
  47. package/dist/utils/versions.js +1 -1
  48. package/dist/webCustomizeLink.js +1 -1
  49. package/node_modules/@m0saic/community-m/release.json +2 -2
  50. package/node_modules/@m0saic/core/dist/core/buildChildMosaicSource.js +1 -1
  51. package/node_modules/@m0saic/core/dist/core/buildChunkCommands.js +1 -1
  52. package/node_modules/@m0saic/core/dist/core/buildEncodeCommands.js +1 -1
  53. package/node_modules/@m0saic/core/dist/core/buildLavfiSource.js +1 -1
  54. package/node_modules/@m0saic/core/dist/core/buildMediaSource.js +1 -1
  55. package/node_modules/@m0saic/core/dist/core/buildMosaicNode.js +1 -1
  56. package/node_modules/@m0saic/core/dist/core/buildMosaicPlanFromFile.js +1 -1
  57. package/node_modules/@m0saic/core/dist/core/buildSvgTextSource.js +1 -1
  58. package/node_modules/@m0saic/core/dist/core/buildTextRenderCommand.js +1 -1
  59. package/node_modules/@m0saic/core/dist/core/collectRefTargets.js +1 -1
  60. package/node_modules/@m0saic/core/dist/core/index.js +1 -1
  61. package/node_modules/@m0saic/core/dist/core/maskCacheDir.js +1 -1
  62. package/node_modules/@m0saic/core/dist/core/maskWorkerBridge.js +1 -1
  63. package/node_modules/@m0saic/core/dist/core/playbackPlaySpeed.js +1 -1
  64. package/node_modules/@m0saic/core/dist/core/prepareProps.js +1 -1
  65. package/node_modules/@m0saic/core/dist/core/primaryOutput.js +1 -1
  66. package/node_modules/@m0saic/core/dist/core/rasterizeMaskPng.js +1 -1
  67. package/node_modules/@m0saic/core/dist/core/rasterizeSvgMediaPng.js +1 -1
  68. package/node_modules/@m0saic/core/dist/core/refTargetTap.js +1 -1
  69. package/node_modules/@m0saic/core/dist/core/resolveMasks.js +1 -1
  70. package/node_modules/@m0saic/core/dist/core/resolveMasksSync.js +1 -1
  71. package/node_modules/@m0saic/core/dist/core/resolveStrokeRingsSync.js +1 -1
  72. package/node_modules/@m0saic/core/dist/core/roundedRectMask.js +1 -1
  73. package/node_modules/@m0saic/core/dist/core/strokeRing.js +1 -1
  74. package/node_modules/@m0saic/core/dist/core/svgRaster.js +1 -1
  75. package/node_modules/@m0saic/core/dist/defaults.js +1 -1
  76. package/node_modules/@m0saic/core/dist/ffmpeg/backgroundImageInput.js +1 -1
  77. package/node_modules/@m0saic/core/dist/ffmpeg/bufferGuard.js +1 -1
  78. package/node_modules/@m0saic/core/dist/ffmpeg/ffmpegCommands.js +1 -1
  79. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBackdropBlur.js +1 -1
  80. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBlur.js +1 -1
  81. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBorderRadius.js +1 -1
  82. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyCamera.js +1 -1
  83. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyChromaKey.js +1 -1
  84. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyFade.js +1 -1
  85. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyGrade.js +1 -1
  86. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyMask.js +1 -1
  87. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyNoise.js +1 -1
  88. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyPixelize.js +1 -1
  89. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyRotate.js +1 -1
  90. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyStroke.js +1 -1
  91. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyTileEffects.js +1 -1
  92. package/node_modules/@m0saic/core/dist/ffmpeg/filters/coverCrop.js +1 -1
  93. package/node_modules/@m0saic/core/dist/ffmpeg/filters/index.js +1 -1
  94. package/node_modules/@m0saic/core/dist/ffmpeg/filters/sourceRectCrop.js +1 -1
  95. package/node_modules/@m0saic/core/dist/ffmpeg/gridLowering.js +1 -1
  96. package/node_modules/@m0saic/core/dist/ffmpeg/index.js +1 -1
  97. package/node_modules/@m0saic/core/dist/ffmpeg/splitAvMux.js +1 -1
  98. package/node_modules/@m0saic/core/dist/ffmpeg/threadGuard.js +1 -1
  99. package/node_modules/@m0saic/core/dist/flatten/index.js +1 -1
  100. package/node_modules/@m0saic/core/dist/fs/index.js +1 -1
  101. package/node_modules/@m0saic/core/dist/fs/tempWorkspace.js +1 -1
  102. package/node_modules/@m0saic/core/dist/index.js +1 -1
  103. package/node_modules/@m0saic/core/dist/media/buildAssetManifestFromInputs.js +1 -1
  104. package/node_modules/@m0saic/core/dist/media/buildMediaRegistryFromInput.js +1 -1
  105. package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromInvocationProps.js +1 -1
  106. package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromMosaicRenderableFile.js +1 -1
  107. package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromProps.js +1 -1
  108. package/node_modules/@m0saic/core/dist/media/index.js +1 -1
  109. package/node_modules/@m0saic/core/dist/media/internalMintAsset.js +1 -1
  110. package/node_modules/@m0saic/core/dist/media/remoteUrl.js +1 -1
  111. package/node_modules/@m0saic/core/dist/media/stageUnsafeFilenames.js +1 -1
  112. package/node_modules/@m0saic/core/dist/media/types.js +1 -1
  113. package/node_modules/@m0saic/core/dist/output/index.js +1 -1
  114. package/node_modules/@m0saic/core/dist/output/resolveOutputFormat.js +1 -1
  115. package/node_modules/@m0saic/core/dist/output/types.js +1 -1
  116. package/node_modules/@m0saic/core/dist/probe/cellLuminanceProbe.js +1 -1
  117. package/node_modules/@m0saic/core/dist/probe/extractSubtitleCues.js +1 -1
  118. package/node_modules/@m0saic/core/dist/probe/helpers.js +1 -1
  119. package/node_modules/@m0saic/core/dist/probe/index.js +1 -1
  120. package/node_modules/@m0saic/core/dist/probe/luminanceProbe.js +1 -1
  121. package/node_modules/@m0saic/core/dist/probe/probeMedia.js +1 -1
  122. package/node_modules/@m0saic/core/dist/probe/runFFprobe.js +1 -1
  123. package/node_modules/@m0saic/core/dist/probe/types.js +1 -1
  124. package/node_modules/@m0saic/core/dist/runtime/engineRedaction.js +1 -1
  125. package/node_modules/@m0saic/core/dist/runtime/ffmpegFailure.js +1 -1
  126. package/node_modules/@m0saic/core/dist/runtime/filterPreflight.js +1 -1
  127. package/node_modules/@m0saic/core/dist/runtime/hashFile.js +1 -1
  128. package/node_modules/@m0saic/core/dist/runtime/index.js +1 -1
  129. package/node_modules/@m0saic/core/dist/runtime/pathInfo.js +1 -1
  130. package/node_modules/@m0saic/core/dist/runtime/perfHeatmap.js +1 -1
  131. package/node_modules/@m0saic/core/dist/runtime/perfReport.js +1 -1
  132. package/node_modules/@m0saic/core/dist/runtime/pipelineM0p.js +1 -1
  133. package/node_modules/@m0saic/core/dist/runtime/renderCostModel.constants.js +1 -1
  134. package/node_modules/@m0saic/core/dist/runtime/renderCostModel.js +1 -1
  135. package/node_modules/@m0saic/core/dist/runtime/renderReport.js +1 -1
  136. package/node_modules/@m0saic/core/dist/runtime/renderSidecars.js +1 -1
  137. package/node_modules/@m0saic/core/dist/runtime/resolveMosaicx.js +1 -1
  138. package/node_modules/@m0saic/core/dist/runtime/runPlan.js +1 -1
  139. package/node_modules/@m0saic/core/dist/runtime/types.js +1 -1
  140. package/node_modules/@m0saic/core/dist/runtime/upstream.js +1 -1
  141. package/node_modules/@m0saic/core/dist/runtime/writeSidecars.js +1 -1
  142. package/node_modules/@m0saic/core/dist/types/chunk.js +1 -1
  143. package/node_modules/@m0saic/core/dist/types/index.js +1 -1
  144. package/node_modules/@m0saic/core/dist/types/mosaic-plan.js +1 -1
  145. package/node_modules/@m0saic/core/dist/utils/assertTiming.js +1 -1
  146. package/node_modules/@m0saic/core/dist/utils/command.js +1 -1
  147. package/node_modules/@m0saic/core/dist/utils/createEngineContext.js +1 -1
  148. package/node_modules/@m0saic/core/dist/utils/createTemplateRenderCache.js +1 -1
  149. package/node_modules/@m0saic/core/dist/utils/ffmpegColor.js +1 -1
  150. package/node_modules/@m0saic/core/dist/utils/formatDuration.js +1 -1
  151. package/node_modules/@m0saic/core/dist/utils/fsSafeId.js +1 -1
  152. package/node_modules/@m0saic/core/dist/utils/index.js +1 -1
  153. package/node_modules/@m0saic/core/dist/utils/lowerRenderableToMosaicDocument.js +1 -1
  154. package/node_modules/@m0saic/core/dist/utils/movSafeCodec.js +1 -1
  155. package/node_modules/@m0saic/core/dist/utils/resolveBoxFrac.js +1 -1
  156. package/node_modules/@m0saic/core/dist/validate/index.js +1 -1
  157. package/node_modules/@m0saic/core/scripts/mask-rasterize-core.js +1 -1
  158. package/node_modules/@m0saic/core/scripts/mask-rasterize-worker.js +1 -1
  159. package/node_modules/@m0saic/core/scripts/mask-worker-thread.js +1 -1
  160. package/node_modules/@m0saic/dictionary/package.json +1 -1
  161. package/node_modules/@m0saic/knowledge/docs/runtime/README.md +8 -1
  162. package/node_modules/@m0saic/knowledge/docs/runtime/agent-at-the-canvas.md +108 -0
  163. package/node_modules/@m0saic/knowledge/docs/runtime/cli-usage.md +35 -7
  164. package/node_modules/@m0saic/knowledge/docs/templates/output-resolution-tree.md +8 -0
  165. package/node_modules/@m0saic/knowledge/docs/templates/reference/prop-bindings.md +24 -10
  166. package/node_modules/@m0saic/knowledge/docs/templates/reference/template-flags.md +18 -6
  167. package/node_modules/@m0saic/knowledge/docs/templates/standalone-pack-authoring.md +20 -10
  168. package/node_modules/@m0saic/knowledge/package.json +1 -1
  169. package/node_modules/@m0saic/platform/dist/cjs/index.js +1 -1
  170. package/node_modules/@m0saic/platform/dist/cjs/mosaic/propBindings/index.js +1 -1
  171. package/node_modules/@m0saic/platform/dist/cjs/mosaic/propBindings/propBindings.js +1 -1
  172. package/node_modules/@m0saic/platform/dist/cjs/template-repos/index.js +1 -1
  173. package/node_modules/@m0saic/platform/dist/cjs/template-repos/loadTemplateRepoFromPath.js +4 -4
  174. package/node_modules/@m0saic/platform/dist/cjs/template-repos/templateCatalogSidecars.js +2 -0
  175. package/node_modules/@m0saic/platform/dist/cjs/templateCatalog/index.js +1 -0
  176. package/node_modules/@m0saic/platform/dist/cjs/templateCatalog/templateCatalog.js +1 -0
  177. package/node_modules/@m0saic/platform/package.json +1 -1
  178. package/node_modules/@m0saic/product/dist/communityRelease.js +1 -1
  179. package/node_modules/@m0saic/product/dist/freeTierLicense.js +1 -1
  180. package/node_modules/@m0saic/product/dist/index.js +1 -1
  181. package/node_modules/@m0saic/product/dist/licenseActivationNotice.js +1 -1
  182. package/node_modules/@m0saic/product/dist/licenseFile.js +1 -1
  183. package/node_modules/@m0saic/product/dist/licenseToken.js +1 -1
  184. package/node_modules/@m0saic/product/dist/makeScratchPath.js +1 -1
  185. package/node_modules/@m0saic/product/dist/postRenderWrapper.js +1 -1
  186. package/node_modules/@m0saic/product/dist/publicKeys.js +1 -1
  187. package/node_modules/@m0saic/product/dist/revokedKeys.js +1 -1
  188. package/node_modules/@m0saic/product/dist/upstreamDefaults.js +1 -1
  189. package/node_modules/@m0saic/product/dist/workspaceScaffold.js +1 -1
  190. package/node_modules/@m0saic/template-utils/dist/brand/hello-world/helloWorld.js +1 -1
  191. package/node_modules/@m0saic/template-utils/dist/geometry-contract/frameResolution.js +1 -1
  192. package/node_modules/@m0saic/template-utils/dist/geometry-contract/layoutConstraint.js +1 -1
  193. package/node_modules/@m0saic/template-utils/dist/template/auditRenderedTemplate.js +5 -5
  194. package/node_modules/@m0saic/template-utils/dist/template/auditSchemaConventions.js +1 -1
  195. package/node_modules/@m0saic/template-utils/dist/template/defineMosaicTemplate.js +1 -1
  196. package/node_modules/@m0saic/template-utils/dist/template/resolveTemplateOutputHints.js +1 -1
  197. package/node_modules/@m0saic/template-utils/dist/template/templateCatalogStore.js +1 -0
  198. package/node_modules/@m0saic/template-utils/dist/template/templateConventions.js +4 -4
  199. package/node_modules/@m0saic/template-utils/dist/template/templateRegistry.js +3 -3
  200. package/node_modules/@m0saic/template-utils/package.json +1 -1
  201. package/node_modules/@m0saic/templates/dist/catalog.js +1 -0
  202. package/node_modules/@m0saic/templates/dist/freeze.js +8 -8
  203. package/node_modules/@m0saic/templates/dist/index.js +1 -1
  204. package/node_modules/@m0saic/templates/dist/m0saic/_shared/canvas-handles.js +1 -0
  205. package/node_modules/@m0saic/templates/dist/m0saic/_shared/stand-in.js +1 -0
  206. package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/index.js +1 -1
  207. package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/v2/commit-feed.js +1 -0
  208. package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/v2/index.js +1 -0
  209. package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/index.js +1 -1
  210. package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/v2/index.js +1 -0
  211. package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/v2/trace-timeline.js +1 -0
  212. package/node_modules/@m0saic/templates/dist/m0saic/alpine/_shared/alpine-conventions.js +1 -0
  213. package/node_modules/@m0saic/templates/dist/m0saic/alpine/bar-graph/v2/bar-graph.js +1 -0
  214. package/node_modules/@m0saic/templates/dist/m0saic/alpine/bar-graph/v2/index.js +1 -0
  215. package/node_modules/@m0saic/templates/dist/m0saic/alpine/commit-feed/v3/commit-feed.js +1 -0
  216. package/node_modules/@m0saic/templates/dist/m0saic/alpine/commit-feed/v3/index.js +1 -0
  217. package/node_modules/@m0saic/templates/dist/m0saic/alpine/contributor-table/v2/contributor-table.js +1 -0
  218. package/node_modules/@m0saic/templates/dist/m0saic/alpine/contributor-table/v2/index.js +1 -0
  219. package/node_modules/@m0saic/templates/dist/m0saic/alpine/donut/v4/donut.js +1 -0
  220. package/node_modules/@m0saic/templates/dist/m0saic/alpine/donut/v4/index.js +1 -0
  221. package/node_modules/@m0saic/templates/dist/m0saic/alpine/heatmap/v3/heatmap.js +1 -0
  222. package/node_modules/@m0saic/templates/dist/m0saic/alpine/heatmap/v3/index.js +1 -0
  223. package/node_modules/@m0saic/templates/dist/m0saic/alpine/index.js +1 -1
  224. package/node_modules/@m0saic/templates/dist/m0saic/alpine/kpi-card/v3/index.js +1 -0
  225. package/node_modules/@m0saic/templates/dist/m0saic/alpine/kpi-card/v3/kpi-card.js +1 -0
  226. package/node_modules/@m0saic/templates/dist/m0saic/alpine/leaderboard/v2/index.js +1 -0
  227. package/node_modules/@m0saic/templates/dist/m0saic/alpine/leaderboard/v2/leaderboard.js +1 -0
  228. package/node_modules/@m0saic/templates/dist/m0saic/alpine/line-chart/v3/index.js +1 -0
  229. package/node_modules/@m0saic/templates/dist/m0saic/alpine/line-chart/v3/line-chart.js +1 -0
  230. package/node_modules/@m0saic/templates/dist/m0saic/alpine/progress-card/v2/index.js +1 -0
  231. package/node_modules/@m0saic/templates/dist/m0saic/alpine/progress-card/v2/progress-card.js +1 -0
  232. package/node_modules/@m0saic/templates/dist/m0saic/alpine/stat-card/v2/index.js +1 -0
  233. package/node_modules/@m0saic/templates/dist/m0saic/alpine/stat-card/v2/stat-card.js +1 -0
  234. package/node_modules/@m0saic/templates/dist/m0saic/alpine/timeline/v3/index.js +1 -0
  235. package/node_modules/@m0saic/templates/dist/m0saic/alpine/timeline/v3/timeline.js +4 -0
  236. package/node_modules/@m0saic/templates/dist/m0saic/alpine/treemap/v3/index.js +1 -0
  237. package/node_modules/@m0saic/templates/dist/m0saic/alpine/treemap/v3/treemap.js +1 -0
  238. package/node_modules/@m0saic/templates/dist/m0saic/benchmark/index.js +1 -1
  239. package/node_modules/@m0saic/templates/dist/m0saic/benchmark/report/v2/index.js +1 -0
  240. package/node_modules/@m0saic/templates/dist/m0saic/benchmark/report/v2/report.js +1 -0
  241. package/node_modules/@m0saic/templates/dist/m0saic/brand/business-card/v2/business-card.js +1 -0
  242. package/node_modules/@m0saic/templates/dist/m0saic/brand/business-card/v2/index.js +1 -0
  243. package/node_modules/@m0saic/templates/dist/m0saic/brand/index.js +1 -1
  244. package/node_modules/@m0saic/templates/dist/m0saic/brand/logo/v4/index.js +1 -0
  245. package/node_modules/@m0saic/templates/dist/m0saic/brand/logo/v4/logo_runner.js +1 -0
  246. package/node_modules/@m0saic/templates/dist/m0saic/charts/bar-graph/v3/bar-graph.js +1 -0
  247. package/node_modules/@m0saic/templates/dist/m0saic/charts/bar-graph/v3/index.js +1 -0
  248. package/node_modules/@m0saic/templates/dist/m0saic/charts/donut/v5/donut.js +1 -0
  249. package/node_modules/@m0saic/templates/dist/m0saic/charts/donut/v5/index.js +1 -0
  250. package/node_modules/@m0saic/templates/dist/m0saic/charts/index.js +1 -1
  251. package/node_modules/@m0saic/templates/dist/m0saic/charts/line-chart/v2/index.js +1 -0
  252. package/node_modules/@m0saic/templates/dist/m0saic/charts/line-chart/v2/line-chart.js +1 -0
  253. package/node_modules/@m0saic/templates/dist/m0saic/charts/stat-card/v2/index.js +1 -0
  254. package/node_modules/@m0saic/templates/dist/m0saic/charts/stat-card/v2/stat-card.js +1 -0
  255. package/node_modules/@m0saic/templates/dist/m0saic/code/index.js +1 -1
  256. package/node_modules/@m0saic/templates/dist/m0saic/code/snippet-morph/v2/snippet-morph.js +3 -0
  257. package/node_modules/@m0saic/templates/dist/m0saic/collage/image-collage/v2/image-collage.js +1 -0
  258. package/node_modules/@m0saic/templates/dist/m0saic/collage/image-collage/v2/index.js +1 -0
  259. package/node_modules/@m0saic/templates/dist/m0saic/collage/index.js +1 -1
  260. package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/index.js +1 -1
  261. package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/v2/dsl-tutorial.js +1 -0
  262. package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/v2/index.js +1 -0
  263. package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/index.js +1 -1
  264. package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/v2/index.js +1 -0
  265. package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/v2/year-card.js +1 -0
  266. package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/index.js +1 -1
  267. package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/runner/v2/index.js +1 -0
  268. package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/runner/v2/runner.js +1 -0
  269. package/node_modules/@m0saic/templates/dist/m0saic/media/barcode/v2/barcode.js +1 -0
  270. package/node_modules/@m0saic/templates/dist/m0saic/media/barcode/v2/index.js +1 -0
  271. package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/index.js +1 -1
  272. package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v2/blur-regions.js +1 -0
  273. package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v2/index.js +1 -0
  274. package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/index.js +1 -1
  275. package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/v2/highlights.js +1 -0
  276. package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/v2/index.js +1 -0
  277. package/node_modules/@m0saic/templates/dist/m0saic/media/index.js +1 -1
  278. package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/index.js +1 -1
  279. package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/v2/index.js +1 -0
  280. package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/v2/logo-animate.js +1 -0
  281. package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/index.js +1 -1
  282. package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/v2/index.js +1 -0
  283. package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/v2/metadata-stamp.js +1 -0
  284. package/node_modules/@m0saic/templates/dist/m0saic/media/qr/code/v2/index.js +1 -0
  285. package/node_modules/@m0saic/templates/dist/m0saic/media/qr/code/v2/qr-code.js +1 -0
  286. package/node_modules/@m0saic/templates/dist/m0saic/media/qr/index.js +1 -1
  287. package/node_modules/@m0saic/templates/dist/m0saic/media/qr/stamp/v2/qr-stamp-custom.js +1 -0
  288. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/index.js +1 -1
  289. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/v3/index.js +1 -0
  290. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/v3/screencap-grid.js +4 -0
  291. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/index.js +1 -1
  292. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/v2/index.js +1 -0
  293. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/v2/screencap-grid-aspect-safe.js +3 -0
  294. package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/index.js +1 -1
  295. package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/v2/index.js +1 -0
  296. package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/v2/scroll-wall.js +1 -0
  297. package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/index.js +1 -1
  298. package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/v2/index.js +1 -0
  299. package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/v2/subtitle-burn.js +4 -0
  300. package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/index.js +1 -1
  301. package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/v2/index.js +1 -0
  302. package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/v2/trickplay.js +1 -0
  303. package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/index.js +1 -1
  304. package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/v2/index.js +1 -0
  305. package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/v2/video-to-png-sequence.js +1 -0
  306. package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/index.js +1 -1
  307. package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/v2/index.js +1 -0
  308. package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/v2/watermark.js +1 -0
  309. package/node_modules/@m0saic/templates/dist/m0saic/primitives/grid/index.js +1 -1
  310. package/node_modules/@m0saic/templates/dist/m0saic/primitives/grid/v3/grid.js +1 -0
  311. package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/index.js +1 -1
  312. package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/v2/index.js +1 -0
  313. package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/v2/quote-card.js +1 -0
  314. package/node_modules/@m0saic/templates/dist/m0saic/story/index.js +1 -1
  315. package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/index.js +1 -1
  316. package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/v2/index.js +1 -0
  317. package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/v2/narrated-chapters.js +4 -0
  318. package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/index.js +1 -0
  319. package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/props.js +1 -0
  320. package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/scrapbook.js +1 -0
  321. package/node_modules/@m0saic/templates/dist/m0saic/theming/index.js +1 -1
  322. package/node_modules/@m0saic/templates/dist/m0saic/theming/v2/index.js +1 -0
  323. package/node_modules/@m0saic/templates/dist/m0saic/theming/v2/theming.js +1 -0
  324. package/node_modules/@m0saic/templates/dist/m0saic/web/index.js +1 -1
  325. package/node_modules/@m0saic/templates/dist/m0saic/web/page-skeleton/v2/index.js +1 -0
  326. package/node_modules/@m0saic/templates/dist/m0saic/web/page-skeleton/v2/page-skeleton.js +1 -0
  327. package/node_modules/@m0saic/templates/dist/m0saic/wireframe/base/v3/index.js +1 -0
  328. package/node_modules/@m0saic/templates/dist/m0saic/wireframe/base/v3/wireframe.js +1 -0
  329. package/node_modules/@m0saic/templates/dist/m0saic/wireframe/index.js +1 -1
  330. package/node_modules/@m0saic/templates/dist/repo.js +1 -1
  331. package/node_modules/@m0saic/templates/dist/template-catalog.json +5429 -0
  332. package/node_modules/@m0saic/templates/dist/template-registry.js +1 -1
  333. package/node_modules/@m0saic/templates/dist/web.js +1 -1
  334. package/node_modules/@m0saic/templates/package.json +1 -1
  335. package/node_modules/@m0saic/templates/template-catalog.json +5429 -0
  336. package/node_modules/@m0saic/templates/template-manifest.json +1030 -286
  337. package/node_modules/@m0saic/templates/web-template-ids.json +38 -0
  338. package/node_modules/@m0saic/text/package.json +1 -1
  339. package/node_modules/@m0saic/types/dist/template/template.js +1 -1
  340. package/node_modules/@m0saic/types/package.json +1 -1
  341. package/node_modules/@m0saic/types-internal/dist/analytics/featureKeys.js +1 -1
  342. package/package.json +8 -8
  343. package/resources/starter-base/starter-base.json +5 -5
  344. package/resources/starter-base/starter-base.tgz +0 -0
@@ -1 +1 @@
1
- "use strict";var t=Object.defineProperty;var e=(r,l)=>t(r,"name",{value:l,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScrollWallV1=void 0;var v1_1=require("./v1");Object.defineProperty(exports,"ScrollWallV1",{enumerable:!0,get:e(function(){return v1_1.ScrollWallV1},"get")});
1
+ "use strict";var t=Object.defineProperty;var e=(r,l)=>t(r,"name",{value:l,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScrollWallV2=exports.ScrollWallV1=void 0;var v1_1=require("./v1");Object.defineProperty(exports,"ScrollWallV1",{enumerable:!0,get:e(function(){return v1_1.ScrollWallV1},"get")});var v2_1=require("./v2");Object.defineProperty(exports,"ScrollWallV2",{enumerable:!0,get:e(function(){return v2_1.ScrollWallV2},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var t=Object.defineProperty;var e=(l,r)=>t(l,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScrollWallV2=void 0;var scroll_wall_1=require("./scroll-wall");Object.defineProperty(exports,"ScrollWallV2",{enumerable:!0,get:e(function(){return scroll_wall_1.ScrollWallV2},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var N=Object.defineProperty;var y=(e,r)=>N(e,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScrollWallV2=exports.SCROLL_WALL_MAX_TILES=void 0,exports.coprimeStride=coprimeStride,exports.fitVisibleCount=fitVisibleCount,exports.renderScrollWallV2=renderScrollWallV2;const types_1=require("@m0saic/types"),template_utils_1=require("@m0saic/template-utils"),screencap_grid_1=require("../../screencap_grid/v3/screencap-grid"),geometry_1=require("../v1/geometry"),motion_1=require("../v1/motion"),SCROLL_WALL_V2_ID="@m0saic/media/scroll_wall/v2";exports.SCROLL_WALL_MAX_TILES=24;const LOOP_STORE_BUDGET_BYTES=8e8,CLIP_WINDOW_MIN_MS=750,CLIP_WINDOW_MAX_MS=8e3,FALLBACK_FRAME_BYTES=1920*1080*1.5,DEMO_HUES=["#3b82f6","#8b5cf6","#ec4899","#f97316","#10b981","#06b6d4"],propsSchema=(0,template_utils_1.definePropsSchema)({clips:{type:"media[]",required:!1,meta:{control:{multiple:!0,picker:"folder",accept:["video","image"]}}},rows:{type:"number",required:!1,meta:{constraints:{min:1,max:4}}},visibleCount:{type:"number",required:!1,meta:{constraints:{min:1,max:12}}},direction:{type:"string",required:!1,meta:{constraints:{oneOf:["left","right"]}}},motion:{type:"group",required:!1,fields:{alternateRowDirection:(0,screencap_grid_1.bBool)(),rowOffsetFrac:(0,screencap_grid_1.bNum)({flavor:"slider",step:.05},{min:0,max:1}),speedMode:(0,screencap_grid_1.bEnum)(["cycles","pxPerSec"]),cycles:(0,screencap_grid_1.bNum)({flavor:"slider",step:.25},{min:.25,max:8}),pxPerSec:(0,screencap_grid_1.bNum)({flavor:"slider",step:10,unit:"px/s"},{min:10,max:2e3}),snapVelocityToFrameGrid:(0,screencap_grid_1.bBool)()}},tiles:{type:"group",required:!1,fields:{gapPx:(0,screencap_grid_1.bNum)({flavor:"slider",step:1,unit:"px"},{min:1,max:96}),marginPx:(0,screencap_grid_1.bNum)({flavor:"slider",step:1,unit:"px"},{min:0,max:200}),fit:(0,screencap_grid_1.bEnum)(["cover","contain"]),backgroundColor:(0,screencap_grid_1.bColor)(),clipWindowMs:(0,screencap_grid_1.bNum)({flavor:"slider",step:250,unit:"ms"},{min:0,max:8e3})}},variation:{type:"group",required:!1,fields:{shuffle:(0,screencap_grid_1.bBool)(),staggerRepeats:(0,screencap_grid_1.bBool)(),seed:(0,screencap_grid_1.bNum)({flavor:"slider",step:1},{min:0,max:9999})}},debugGeometry:{type:"boolean",required:!1}}),clamp=y((e,r,l)=>Math.min(l,Math.max(r,e)),"clamp");function resolveKnobs(e){var r,l,s,_,w,x,f,p,m,o,v,P,g,d,M,a,C,W,b,A,h,E,S,k,I,R,T,O;return{rows:clamp(Math.round((r=e.rows)!==null&&r!==void 0?r:2),1,4),visibleCount:clamp(Math.round((l=e.visibleCount)!==null&&l!==void 0?l:4),1,12),direction:e.direction==="right"?"right":"left",alternateRowDirection:(_=(s=e.motion)===null||s===void 0?void 0:s.alternateRowDirection)!==null&&_!==void 0?_:!0,rowOffsetFrac:clamp((x=(w=e.motion)===null||w===void 0?void 0:w.rowOffsetFrac)!==null&&x!==void 0?x:.5,0,1),speedMode:((f=e.motion)===null||f===void 0?void 0:f.speedMode)==="pxPerSec"?"pxPerSec":"cycles",cycles:clamp((m=(p=e.motion)===null||p===void 0?void 0:p.cycles)!==null&&m!==void 0?m:1,.25,8),pxPerSec:clamp((v=(o=e.motion)===null||o===void 0?void 0:o.pxPerSec)!==null&&v!==void 0?v:240,10,2e3),snapVelocityToFrameGrid:(g=(P=e.motion)===null||P===void 0?void 0:P.snapVelocityToFrameGrid)!==null&&g!==void 0?g:!1,gapPx:clamp(Math.round((M=(d=e.tiles)===null||d===void 0?void 0:d.gapPx)!==null&&M!==void 0?M:24),1,96),marginPx:clamp(Math.round((C=(a=e.tiles)===null||a===void 0?void 0:a.marginPx)!==null&&C!==void 0?C:0),0,200),fit:((W=e.tiles)===null||W===void 0?void 0:W.fit)==="contain"?"contain":"cover",backgroundColor:(A=(b=e.tiles)===null||b===void 0?void 0:b.backgroundColor)!==null&&A!==void 0?A:"#0b0b0f",clipWindowMs:clamp(Math.round((E=(h=e.tiles)===null||h===void 0?void 0:h.clipWindowMs)!==null&&E!==void 0?E:0),0,CLIP_WINDOW_MAX_MS),shuffle:(k=(S=e.variation)===null||S===void 0?void 0:S.shuffle)!==null&&k!==void 0?k:!1,staggerRepeats:(R=(I=e.variation)===null||I===void 0?void 0:I.staggerRepeats)!==null&&R!==void 0?R:!0,seed:Math.round((O=(T=e.variation)===null||T===void 0?void 0:T.seed)!==null&&O!==void 0?O:1)}}y(resolveKnobs,"resolveKnobs");function gcd(e,r){let l=Math.abs(e),s=Math.abs(r);for(;s;)[l,s]=[s,l%s];return l}y(gcd,"gcd");function coprimeStride(e){if(e<=2)return 1;for(let r=2;r<e;r++)if(gcd(r,e)===1)return r;return 1}y(coprimeStride,"coprimeStride");function fitVisibleCount(e){const{canvasW:r,canvasH:l,rows:s,gapPx:_,marginPx:w,requestedVisibleCount:x,clipCount:f}=e;let p=null;for(let m=x;m>=1;m--){const o=(0,geometry_1.computeScrollWallGeometry)({canvasW:r,canvasH:l,visibleCount:m,rows:s,gapPx:_,marginPx:w});if(!o.ok){p=o.error;continue}const v=Math.max(f,o.geometry.minSlotCount);if(s*v<=exports.SCROLL_WALL_MAX_TILES)return{ok:!0,visibleCount:m,geometry:o.geometry,slotCount:v}}return{ok:!1,error:p??`${f} clip(s) x ${s} row(s) needs more than the ${exports.SCROLL_WALL_MAX_TILES}-tile cap at every tile size.`}}y(fitVisibleCount,"fitVisibleCount");const WALL_HANDLES=[{propKey:"rows"},{propKey:"visibleCount"},{propKey:"tiles.gapPx"},{propKey:"tiles.marginPx"},{propKey:"tiles.clipWindowMs"},{propKey:"motion.cycles"},{propKey:"motion.pxPerSec"},{propKey:"motion.rowOffsetFrac"},{propKey:"variation.seed"}];function renderScrollWallV2(e,r){var l,s,_,w;const x=r.target.width,f=r.target.height,p=(l=r.target.fps)!==null&&l!==void 0?l:30,m=(s=r.target.durationMs)!==null&&s!==void 0?s:4e3,o=resolveKnobs(e),v=y(t=>(0,template_utils_1.makeErrorMosaic)(t,{title:"Scroll Wall",width:x,height:f}),"fail"),P=((_=e.clips)!==null&&_!==void 0?_:[]).filter(t=>typeof t=="string"&&t.length>0),g=P.length===0,d=g?DEMO_HUES.length:P.length;if(o.rows*d>exports.SCROLL_WALL_MAX_TILES){const t=Math.floor(exports.SCROLL_WALL_MAX_TILES/o.rows);return v(`${d} clips x ${o.rows} rows = ${o.rows*d} tiles exceeds the ${exports.SCROLL_WALL_MAX_TILES}-tile cap (each tile is one ffmpeg input; above the cap the engine's chunk split would silently break the scroll). At ${o.rows} row${o.rows===1?"":"s"} the wall takes up to ${t} clips \u2014 pass fewer clips, or use fewer rows.`)}const M=fitVisibleCount({canvasW:x,canvasH:f,rows:o.rows,gapPx:o.gapPx,marginPx:o.marginPx,requestedVisibleCount:o.visibleCount,clipCount:d});if(!M.ok)return v(M.error);const a=M.geometry,C=M.slotCount,W={},b=[];if(!g){const t=[];for(const n of P){const i=r.media[(0,types_1.asAssetId)(n)];if(i?.kind==="audio"){t.push(`"${n}" is audio \u2014 the wall takes video and image clips`);continue}const c=i?.kind==="video",u=(0,template_utils_1.uniqueAssetKey)((0,template_utils_1.slugifyAssetKeyFromPath)(n),W);W[u]={kind:"file",path:n,mediaType:c?"video":"image"},b.push({assetId:u,mediaType:c?"video":"image",isVideo:c,durationMs:c&&i.durationMs!=null&&i.durationMs>0?i.durationMs:null,frameBytes:i&&i.width>0&&i.height>0?i.width*i.height*1.5:FALLBACK_FRAME_BYTES,windowMs:0})}if(t.length>0)return v(t.join("; "))}const A=(0,template_utils_1.mulberry32)(o.seed>>>0),h=Array.from({length:d},(t,n)=>n);if(o.shuffle)for(let t=h.length-1;t>0;t--){const n=Math.floor(A()*(t+1));[h[t],h[n]]=[h[n],h[t]]}const E=coprimeStride(d),S=y((t,n)=>h[(n+t*E)%d],"clipIndexAt");if(!g){let t=0;for(let c=0;c<o.rows;c++)for(let u=0;u<C;u++){const V=b[S(c,u)];V.isVideo&&(t+=V.frameBytes)}const n=t>0?Math.floor(LOOP_STORE_BUDGET_BYTES/t):0,i=Math.round(n/p*1e3);for(const c of b){if(!c.isVideo)continue;const u=Math.max(1,Math.min((w=c.durationMs)!==null&&w!==void 0?w:CLIP_WINDOW_MAX_MS,CLIP_WINDOW_MAX_MS));c.windowMs=o.clipWindowMs>0?clamp(o.clipWindowMs,1,u):clamp(i,Math.min(CLIP_WINDOW_MIN_MS,u),u)}}const k=C*a.pitch,I=(0,motion_1.resolveSpeedPxPerSec)({speedMode:o.speedMode,cycles:o.cycles,pxPerSec:o.pxPerSec,period:k,fps:p,durationMs:m,snapVelocityToFrameGrid:o.snapVelocityToFrameGrid}),R=m/1e3,T=[],O=new Set;for(let t=0;t<o.rows;t++){const n={slots:a.slots,pitch:a.pitch,period:k,phasePx:(0,motion_1.rowPhasePx)(o.rowOffsetFrac,t,a.pitch),sign:(0,motion_1.rowDirectionSign)(o.direction,t,o.alternateRowDirection),pxPerSec:I,durationSec:R};for(let i=0;i<C;i++){const c=A(),u=(0,motion_1.buildScrollXExpr)(n,i),V={owner:"template",label:`clip:r${t}:i${i}`};let q;if(g)q={...(0,template_utils_1.makeColorTile)(DEMO_HUES[S(t,i)],{overlay:{xExpr:u}}),editor:V};else{const L=b[S(t,i)],B=Math.floor(i/d)>0,$=o.staggerRepeats&&B&&L.isVideo&&L.durationMs!=null?Math.floor(c*Math.max(0,L.durationMs-L.windowMs)):null;q={type:"media",mediaType:L.mediaType,assetId:L.assetId,placement:{fit:o.fit},...L.isVideo?{playback:{loopMode:"loop",clipDurationMs:L.windowMs,...$!=null?{clipStartMs:$}:{}},audio:{enabled:!1}}:{},overlay:{xExpr:u},editor:V}}const K=S(t,i),D=!g&&!O.has(K);D&&O.add(K),q=(0,template_utils_1.bindProps)(q,[{propKey:"clips",index:g?0:D?K:d},...WALL_HANDLES]),T.push({rect:{x:i%a.slots*a.pitch,y:a.rowYs[t],w:a.cellW,h:a.rowH,importance:Math.floor(i/a.slots)},source:q,drift:"exact"})}}const F=(0,template_utils_1.placeOptimizedPieces)({rootW:x,rootH:f,pieces:T}),G={kind:"mosaic_document",version:1,m0:F.m0,sources:F.sources,assets:W,backgroundColor:o.backgroundColor,audio:{mode:"off"}};return(0,template_utils_1.withGeometryContract)(G,r,{templateId:SCROLL_WALL_V2_ID,expectations:F.expectations,debug:e.debugGeometry===!0})}y(renderScrollWallV2,"renderScrollWallV2"),exports.ScrollWallV2={id:(0,types_1.asTemplateId)(SCROLL_WALL_V2_ID),version:2,capabilities:{tier:"core"},propsSchema,outputHints:{format:{kind:"video",container:"mp4"},width:1920,height:1080,fps:30,durationMs:4e3,posterTimeMs:0},defaultProps:{debugGeometry:!1,rows:2,visibleCount:4,direction:"left",motion:{alternateRowDirection:!0,rowOffsetFrac:.5,speedMode:"cycles",cycles:1,pxPerSec:240,snapVelocityToFrameGrid:!1},tiles:{gapPx:24,marginPx:0,fit:"cover",backgroundColor:"#0b0b0f",clipWindowMs:0},variation:{shuffle:!1,staggerRepeats:!0,seed:1}},render(e,r){return Promise.resolve(renderScrollWallV2(e,r))}},(0,template_utils_1.registerTemplate)(exports.ScrollWallV2);
@@ -1 +1 @@
1
- "use strict";var c=Object.defineProperty;var o=(r,e)=>c(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports);
1
+ "use strict";var u=Object.defineProperty;var o=(r,e)=>u(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports),__exportStar(require("./v2"),exports);
@@ -0,0 +1 @@
1
+ "use strict";var u=Object.defineProperty;var e=(t,r)=>u(t,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.SUBTITLE_BURN_V2_TEMPLATE_ID=exports.SubtitleBurnV2=void 0;var subtitle_burn_1=require("./subtitle-burn");Object.defineProperty(exports,"SubtitleBurnV2",{enumerable:!0,get:e(function(){return subtitle_burn_1.SubtitleBurnV2},"get")}),Object.defineProperty(exports,"SUBTITLE_BURN_V2_TEMPLATE_ID",{enumerable:!0,get:e(function(){return subtitle_burn_1.SUBTITLE_BURN_V2_TEMPLATE_ID},"get")});
@@ -0,0 +1,4 @@
1
+ "use strict";var le=Object.defineProperty;var d=(e,t)=>le(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.SubtitleBurnV2=exports.SUBTITLE_BURN_V2_TEMPLATE_ID=void 0,exports.selectSubtitleTrack=selectSubtitleTrack,exports.offsetCuesToOutput=offsetCuesToOutput,exports.fitCueText=fitCueText;const types_1=require("@m0saic/types"),platform_1=require("@m0saic/platform"),dsl_stdlib_1=require("@m0saic/dsl-stdlib"),subtitle_burn_cover_1=require("../v1/subtitle-burn-cover"),canvas_handles_1=require("../../../_shared/canvas-handles"),stand_in_1=require("../../../_shared/stand-in"),template_utils_1=require("@m0saic/template-utils"),propsSchema=(0,template_utils_1.definePropsSchema)({sourceId:{type:"media",required:!1},languageCode:{type:"string",required:!1},fallbackToDefault:{type:"boolean",required:!1},trackIndex:{type:"number",required:!1,meta:{constraints:{min:0,max:32}}},emitCues:{type:"boolean",required:!1},clipStartMs:{type:"number",required:!1,meta:{constraints:{min:0},control:{picker:"time-range",videoFromProp:"sourceId",unit:"ms",markersProvider:{kind:"subtitles",videoFromProp:"sourceId",languageFromProp:"languageCode",trackIndexFromProp:"trackIndex"}}}},clipEndMs:{type:"number",required:!1,meta:{constraints:{min:0},control:{picker:"time-range",videoFromProp:"sourceId",unit:"ms",markersProvider:{kind:"subtitles",videoFromProp:"sourceId",languageFromProp:"languageCode",trackIndexFromProp:"trackIndex"}}}},clipLoopMode:{type:"string",required:!1,meta:{constraints:{oneOf:["cut","loop","freeze"]},control:{options:[{value:"cut",label:"Cut (default)"},{value:"loop",label:"Loop"},{value:"freeze",label:"Freeze last frame"}]}}},placement:{type:"string",required:!1,meta:{constraints:{oneOf:["top","bottom"]}}},fontSize:{type:"number",required:!1,meta:{constraints:{min:8,max:200}}},fontColor:{type:"string",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0}}},borderColor:{type:"string",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0}}},borderWidth:{type:"number",required:!1,meta:{constraints:{min:0,max:.05}}}}),DEFAULT_FONT_COLOR="#ffffff",DEFAULT_BORDER_COLOR="#000000",DEFAULT_BORDER_WIDTH=.003,DEFAULT_PLACEMENT="bottom";function defaultFontSize(e){return Math.max(14,Math.min(72,Math.round(e*.045)))}d(defaultFontSize,"defaultFontSize");function resolveSourceId(e,t){if(e.sourceId)return e.sourceId;const a=Object.entries(t.media),n=a.find(([,s])=>{var i,c;return s.kind==="video"&&((c=(i=s.subtitles)===null||i===void 0?void 0:i.length)!==null&&c!==void 0?c:0)>0});if(n)return n[0];const o=a.find(([,s])=>s.kind==="video");return o?.[0]}d(resolveSourceId,"resolveSourceId");function selectSubtitleTrack(e,t){if(!e||e.length===0)return{track:void 0,rule:"no-tracks"};if(typeof t.trackIndex=="number")return{track:e[t.trackIndex],rule:"explicit-index"};if(t.languageCode){const n=e.find(o=>(0,platform_1.matchesLanguageCode)(o.stream.language,t.languageCode));if(n)return{track:n,rule:"language-match"};if(t.fallbackToDefault===!1)return{track:void 0,rule:"language-miss-strict"}}const a=e.find(n=>n.stream.default===!0);return a?{track:a,rule:"default-flagged"}:{track:e[0],rule:"first-track"}}d(selectSubtitleTrack,"selectSubtitleTrack");function filterCuesToWindow(e,t){const a=Math.max(0,t);return e.filter(n=>n.startMs<a&&n.endMs>0).map(n=>({startMs:Math.max(0,n.startMs),endMs:Math.min(a,n.endMs),text:n.text})).filter(n=>n.endMs>n.startMs&&n.text.length>0)}d(filterCuesToWindow,"filterCuesToWindow");function offsetCuesToOutput(e,t,a,n){const o=Math.max(0,t),s=Math.max(o,a),i=Math.max(0,n),c=Math.min(s-o,i),g=[];for(const m of e){if(m.endMs<=o||m.startMs>=s)continue;const _=Math.max(0,m.startMs-o),h=Math.min(c,m.endMs-o);h<=_||m.text.length!==0&&g.push({startMs:_,endMs:h,text:m.text})}return g}d(offsetCuesToOutput,"offsetCuesToOutput");const CUE_EM_RATIO=.62,CUE_PAD_X=.05,CUE_MAX_LINES=3;function cueLineBudget(e,t){return e*(1-2*CUE_PAD_X)/(t*CUE_EM_RATIO)}d(cueLineBudget,"cueLineBudget");function wrapLineToBudget(e,t){if((0,template_utils_1.textEmUnits)(e)<=t+.5)return[e];const a=e.split(/\s+/).filter(Boolean),n=[];let o="";for(const s of a){const i=o?`${o} ${s}`:s;o&&(0,template_utils_1.textEmUnits)(i)>t?(n.push(o),o=s):o=i}return o&&n.push(o),n}d(wrapLineToBudget,"wrapLineToBudget");function fitCueText(e,t,a){const n=d(i=>e.split(`
2
+ `).flatMap(c=>wrapLineToBudget(c,cueLineBudget(t,i))),"wrapAt"),o=n(a);if(o.length<=CUE_MAX_LINES){const i=o.join(`
3
+ `);return{text:i===e?e:i,fontSize:a}}const s=Math.max(14,Math.round(a*.75));return{text:n(s).join(`
4
+ `),fontSize:s}}d(fitCueText,"fitCueText");function fmtSec(e){return(e/1e3).toFixed(3)}d(fmtSec,"fmtSec");function buildCueLayer(e,t,a,n,o,s){return{content:{kind:"literal",text:e.text},style:{fontSize:a,fontColor:n,borderColor:o,borderWidth:s},placement:{hAlign:"center",vAlign:t==="top"?"top":"bottom",padding:{x:.05,y:.05}},overlay:{enable:`between(t,${fmtSec(e.startMs)},${fmtSec(e.endMs)})`}}}d(buildCueLayer,"buildCueLayer"),exports.SUBTITLE_BURN_V2_TEMPLATE_ID=(0,types_1.asTemplateId)("@m0saic/media/subtitle-burn/v2"),exports.SubtitleBurnV2={id:exports.SUBTITLE_BURN_V2_TEMPLATE_ID,version:2,role:"renderable",capabilities:{tier:"core"},propsSchema,outputsSchema:{subtitleCues:{type:"object",required:!1,description:"Selected subtitle track + window-clamped cues. Available to downstream pipeline steps via ctx.upstreamData.subtitleCues when emitCues:true."}},sidecarsSchema:{cues:{type:"object",required:!1,description:"Written as {output-basename}.cues.json next to the rendered video when emitCues:true."}},outputHints:{width:1920,height:1080,fps:30,durationMs:1e4,posterTimeMs:0,format:{kind:"video",container:"mp4"}},defaultProps:{placement:DEFAULT_PLACEMENT,fallbackToDefault:!0,emitCues:!1,clipLoopMode:"cut",fontColor:DEFAULT_FONT_COLOR,borderColor:DEFAULT_BORDER_COLOR,borderWidth:DEFAULT_BORDER_WIDTH},renderCover(e,t){return(0,subtitle_burn_cover_1.renderSubtitleBurnCover)(t)},render(e,t){var a,n,o,s,i,c,g,m,_,h,y,x,S,L,w,P,B,D,A,U,q,F,R,O,N,V;const M=resolveSourceId(e,t),G=(a=e.fontColor)!==null&&a!==void 0?a:DEFAULT_FONT_COLOR,J=(n=e.borderColor)!==null&&n!==void 0?n:DEFAULT_BORDER_COLOR,Q=(o=e.borderWidth)!==null&&o!==void 0?o:DEFAULT_BORDER_WIDTH,Y=[{propKey:"sourceId"},{propKey:"languageCode"},{propKey:"trackIndex"}],j=[{propKey:"fontColor"},{propKey:"fontSize"},{propKey:"borderColor"},{propKey:"borderWidth"}];if(!M){(0,types_1.emitTemplateLog)(t,{templateId:exports.SUBTITLE_BURN_V2_TEMPLATE_ID,level:"warn",message:"Pass-through: no video source in ctx.media",data:{event:"passthrough",reason:"no-video-source"}});const p=(0,stand_in_1.mediaStandInDocument)({width:t.target.width,height:t.target.height,name:"Subtitle Burn",title:"Drop a video with subtitles here",hint:"Its subtitle track burns in, in this style.",handles:Y,fps:t.target.fps,durationMs:t.target.durationMs}),u=p.sources.find(C=>(0,canvas_handles_1.labelOf)(C)==="stand-in-hint");return!((i=(s=u?.layers)===null||s===void 0?void 0:s[0])===null||i===void 0)&&i.style&&(Object.assign(u.layers[0].style,{fontColor:G,borderColor:J,borderWidth:Q}),(0,canvas_handles_1.withAddHandles)(u,j)),Promise.resolve(p)}const l=t.media[(0,types_1.asAssetId)(M)],ne=(c=e.placement)!==null&&c!==void 0?c:DEFAULT_PLACEMENT,oe=(g=e.fontSize)!==null&&g!==void 0?g:defaultFontSize(t.target.height),re=typeof e.clipStartMs=="number",Z=typeof e.clipEndMs=="number",v=re||Z,f=Math.max(0,(m=e.clipStartMs)!==null&&m!==void 0?m:0),b=Z?Math.max(0,e.clipEndMs):(_=l?.durationMs)!==null&&_!==void 0?_:f+t.target.durationMs;if(v&&b<=f)return(0,types_1.emitTemplateLog)(t,{templateId:exports.SUBTITLE_BURN_V2_TEMPLATE_ID,level:"warn",message:"Invalid clip range: clipEndMs must be greater than clipStartMs",data:{event:"passthrough",reason:"invalid-clip-range",clipStartMs:f,clipEndMs:b}}),Promise.resolve((0,template_utils_1.makeErrorMosaic)("clipEndMs must be greater than clipStartMs.",{title:"Subtitle Burn",width:t.target.width,height:t.target.height}));const E=b-f,z=(h=e.clipLoopMode)!==null&&h!==void 0?h:"cut",K=(y=l?.subtitles)!==null&&y!==void 0?y:[];(0,types_1.emitTemplateLog)(t,{templateId:exports.SUBTITLE_BURN_V2_TEMPLATE_ID,message:"Subtitle tracks discovered in source",data:{event:"tracks_discovered",sourceId:M,count:K.length,languages:K.map(p=>{var u;return(u=p.stream.language)!==null&&u!==void 0?u:null})}});const{track:r,rule:I}=selectSubtitleTrack(K,{trackIndex:e.trackIndex,languageCode:e.languageCode,fallbackToDefault:(x=e.fallbackToDefault)!==null&&x!==void 0?x:!0});(0,types_1.emitTemplateLog)(t,{templateId:exports.SUBTITLE_BURN_V2_TEMPLATE_ID,message:`Subtitle track selection: ${I}`,data:{event:"track_selected",rule:I,requestedLanguageCode:(S=e.languageCode)!==null&&S!==void 0?S:null,requestedTrackIndex:(L=e.trackIndex)!==null&&L!==void 0?L:null,trackIndex:(w=r?.stream.streamIndex)!==null&&w!==void 0?w:null,language:(P=r?.stream.language)!==null&&P!==void 0?P:null,codec:(B=r?.stream.codecName)!==null&&B!==void 0?B:null,default:(D=r?.stream.default)!==null&&D!==void 0?D:null,forced:(A=r?.stream.forced)!==null&&A!==void 0?A:null}});const ee=typeof((U=t.userIntent)===null||U===void 0?void 0:U.durationMs)=="number"&&t.userIntent.durationMs>0,W=v?E:typeof l?.durationMs=="number"&&l.durationMs>0?l.durationMs:void 0,k=!ee&&W!=null?W:t.target.durationMs,$=(q=r?.cues)!==null&&q!==void 0?q:[],T=v?offsetCuesToOutput($,f,b,k):filterCuesToWindow($,k);(0,types_1.emitTemplateLog)(t,{templateId:exports.SUBTITLE_BURN_V2_TEMPLATE_ID,message:"Cues filtered to ctx.target window",data:{event:"cues_filtered",rawCount:$.length,windowedCount:T.length,durationMs:k,clipActive:v}}),v&&(0,types_1.emitTemplateLog)(t,{templateId:exports.SUBTITLE_BURN_V2_TEMPLATE_ID,message:"Clip window applied to source",data:{event:"clip_applied",clipStartMs:f,clipEndMs:b,clipDurationMs:E,clipLoopMode:z,sourceDurationMs:(F=l?.durationMs)!==null&&F!==void 0?F:null,targetDurationMs:t.target.durationMs}}),r||(0,types_1.emitTemplateLog)(t,{templateId:exports.SUBTITLE_BURN_V2_TEMPLATE_ID,level:"warn",message:`Pass-through: ${I}`,data:{event:"passthrough",reason:I,sourceId:M}});const te=(0,types_1.asAssetId)((0,template_utils_1.slugifyAssetKeyFromPath)(M)),ae={[te]:{kind:"file",path:M,mediaType:"video"}},H=[(0,template_utils_1.bindProps)({type:"media",mediaType:"video",assetId:te,placement:{fit:"cover"},...v?{playback:{clipStartMs:f,clipDurationMs:E,loopMode:z}}:{},editor:{owner:"template",label:"footage"}},[...Y,...T.length>0?[]:j])];if(T.length>0){const p=T.map(u=>{const C=fitCueText(u.text,t.target.width,oe);return buildCueLayer({...u,text:C.text},ne,C.fontSize,G,J,Q)});H.push((0,template_utils_1.bindProps)({type:"text",renderMode:{kind:"video"},layers:p,visual:{backgroundColor:"none"},editor:{owner:"template",label:"subtitles"}},j))}let X;if(e.emitCues===!0&&r){const p={language:(R=r.stream.language)!==null&&R!==void 0?R:null,codec:(O=r.stream.codecName)!==null&&O!==void 0?O:null,streamIndex:r.stream.streamIndex,default:(N=r.stream.default)!==null&&N!==void 0?N:!1,forced:(V=r.stream.forced)!==null&&V!==void 0?V:!1,selectionRule:I,clip:v?{startMs:f,endMs:b,durationMs:E,loopMode:z}:null,cues:T};H.push({type:"data",alias:(0,types_1.asAliasId)("subtitleCues"),variables:p,editor:{owner:"template"}}),X={cues:p}}const se=T.length>0?(0,template_utils_1.buildOverlayStack)(2):"F",ie={kind:"mosaic_document",version:1,assets:ae,m0:(0,dsl_stdlib_1.toM0String)(se,"SubtitleBurn"),sources:H,format:{kind:"video",container:"mp4"},...W!=null&&!ee?{durationMs:k}:{},...X?{sidecars:X}:{}};return Promise.resolve(ie)}},(0,template_utils_1.registerTemplate)(exports.SubtitleBurnV2);
@@ -1 +1 @@
1
- "use strict";var c=Object.defineProperty;var o=(r,e)=>c(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports);
1
+ "use strict";var u=Object.defineProperty;var o=(r,e)=>u(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports),__exportStar(require("./v2"),exports);
@@ -0,0 +1 @@
1
+ "use strict";var i=Object.defineProperty;var e=(r,t)=>i(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.TrickplayV2=void 0;var trickplay_1=require("./trickplay");Object.defineProperty(exports,"TrickplayV2",{enumerable:!0,get:e(function(){return trickplay_1.TrickplayV2},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var m=Object.defineProperty;var o=(e,t)=>m(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.TrickplayV2=void 0,exports.resolveTrickplayKnobs=resolveTrickplayKnobs;const types_1=require("@m0saic/types"),template_utils_1=require("@m0saic/template-utils"),canvas_handles_1=require("../../../_shared/canvas-handles"),stand_in_1=require("../../../_shared/stand-in"),pipeline_1=require("../v1/pipeline"),propsSchema=(0,template_utils_1.definePropsSchema)({sourceIds:{type:"media[]",required:!0,meta:{control:{multiple:!0,picker:"folder",accept:["video"]}}},intervalSec:{type:"number",required:!1,meta:{constraints:{min:1,max:600}}},tileWidth:{type:"number",required:!1,meta:{constraints:{min:64,max:1024}}},cols:{type:"number",required:!1,meta:{constraints:{min:1,max:20}}},rowsPerSheet:{type:"number",required:!1,meta:{constraints:{min:1,max:20}}},outputFormat:{type:"string",required:!1,meta:{constraints:{oneOf:["png","jpeg","mp4"]}}}}),DEFAULTS={intervalSec:10,tileWidth:320,cols:10,rowsPerSheet:10,outputFormat:"png"},clamp=o((e,t,r)=>Math.min(r,Math.max(t,e)),"clamp");function resolveTrickplayKnobs(e){var t,r,i,s;const n=e.outputFormat==="jpeg"||e.outputFormat==="mp4"?e.outputFormat:"png";return{intervalSec:clamp((t=e.intervalSec)!==null&&t!==void 0?t:DEFAULTS.intervalSec,1,600),tileWidth:clamp((r=e.tileWidth)!==null&&r!==void 0?r:DEFAULTS.tileWidth,64,1024),cols:clamp(Math.round((i=e.cols)!==null&&i!==void 0?i:DEFAULTS.cols),1,20),rowsPerSheet:clamp(Math.round((s=e.rowsPerSheet)!==null&&s!==void 0?s:DEFAULTS.rowsPerSheet),1,20),outputFormat:n}}o(resolveTrickplayKnobs,"resolveTrickplayKnobs"),exports.TrickplayV2={id:(0,types_1.asTemplateId)("@m0saic/media/trickplay/v2"),version:2,capabilities:{tier:"core"},outputHints:{format:{kind:"image",container:"png"},width:1920,height:1080,fps:30,durationMs:5e3},propsSchema,defaultProps:{...DEFAULTS},async render(e,t){const r=e.sourceIds&&e.sourceIds.length>0?e.sourceIds:[],i=[{propKey:"intervalSec"},{propKey:"tileWidth"},{propKey:"cols"},{propKey:"rowsPerSheet"}];if(r.length===0)return(0,stand_in_1.mediaStandInDocument)({width:t.target.width,height:t.target.height,name:"Trickplay",title:"Drop a video here",hint:"Files or a folder \u2014 one set of seek-preview sheets per video.",handles:[{propKey:"sourceIds",index:0},...i],fps:t.target.fps,durationMs:t.target.durationMs});const s=resolveTrickplayKnobs(e),n=(0,template_utils_1.buildStepNames)(r);return{kind:"mosaic_pipeline",version:1,emit:"multi",steps:r.flatMap((p,l)=>{var a;const c=(0,pipeline_1.buildTrickplayStepsForInput)({inputPath:p,stepBaseName:n[l],knobs:s,ctx:t});for(const d of c)for(const u of(a=d.file.sources)!==null&&a!==void 0?a:[])u.type==="media"&&(0,canvas_handles_1.withAddHandles)((0,template_utils_1.tag)(u,"frame"),[{propKey:"sourceIds",index:l},...i]);return c})}}},(0,template_utils_1.registerTemplate)(exports.TrickplayV2);
@@ -1 +1 @@
1
- "use strict";var p=Object.defineProperty;var e=(r,t)=>p(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.FrameStripper=void 0;var v1_1=require("./v1");Object.defineProperty(exports,"FrameStripper",{enumerable:!0,get:e(function(){return v1_1.FrameStripper},"get")});
1
+ "use strict";var p=Object.defineProperty;var e=(r,t)=>p(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.FrameStripperV2=exports.FrameStripper=void 0;var v1_1=require("./v1");Object.defineProperty(exports,"FrameStripper",{enumerable:!0,get:e(function(){return v1_1.FrameStripper},"get")});var v2_1=require("./v2");Object.defineProperty(exports,"FrameStripperV2",{enumerable:!0,get:e(function(){return v2_1.FrameStripperV2},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var p=Object.defineProperty;var e=(r,t)=>p(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.FrameStripperV2=void 0;var video_to_png_sequence_1=require("./video-to-png-sequence");Object.defineProperty(exports,"FrameStripperV2",{enumerable:!0,get:e(function(){return video_to_png_sequence_1.FrameStripperV2},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var x=Object.defineProperty;var n=(e,t)=>x(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.FrameStripperV2=void 0;const types_1=require("@m0saic/types"),dsl_stdlib_1=require("@m0saic/dsl-stdlib"),template_utils_1=require("@m0saic/template-utils"),stand_in_1=require("../../../_shared/stand-in"),propsSchema=(0,template_utils_1.definePropsSchema)({sourceIds:{type:"media[]",required:!0,meta:{control:{multiple:!0,picker:"folder",accept:["video"]}}},clipStartMs:{type:"number",required:!1,meta:{constraints:{min:0},control:{picker:"time-range",videoFromProp:"sourceIds",unit:"ms"}}},clipEndMs:{type:"number",required:!1,meta:{constraints:{min:0},control:{picker:"time-range",videoFromProp:"sourceIds",unit:"ms"}}},maxFrames:{type:"number",required:!1,meta:{constraints:{min:1,max:1e5}}}});function resolveInputs(e){return e.sourceIds&&e.sourceIds.length>0?e.sourceIds:[]}n(resolveInputs,"resolveInputs");function buildInputSlugs(e){const t=new Set,i=[];for(const r of e){const s=(0,template_utils_1.slugifyAssetKeyFromPath)(r);let a=s,o=2;for(;t.has(a);)a=`${s}_${o}`,o++;t.add(a),i.push(a)}return i}n(buildInputSlugs,"buildInputSlugs");function frameStepName(e,t,i){const r=Math.max(4,String(i).length);return`${e}_frame_${String(t+1).padStart(r,"0")}`}n(frameStepName,"frameStepName");function resolveFps(e,t){var i,r;return(r=(i=e?.fps)!==null&&i!==void 0?i:t)!==null&&r!==void 0?r:30}n(resolveFps,"resolveFps");function resolveDurationMs(e,t){var i,r;return(r=(i=e?.durationMs)!==null&&i!==void 0?i:t)!==null&&r!==void 0?r:1e3}n(resolveDurationMs,"resolveDurationMs");function resolveCanvas(e,t,i){const r=e?.width!=null&&e.width>0?e.width:t,s=e?.height!=null&&e.height>0?e.height:i;return{width:r,height:s}}n(resolveCanvas,"resolveCanvas"),exports.FrameStripperV2={id:(0,types_1.asTemplateId)("@m0saic/media/video_to_png_sequence/v2"),version:2,capabilities:{tier:"core"},propsSchema,outputHints:{format:{kind:"image",container:"png"},note:"Outputs N numbered PNGs per input via emit:multi."},defaultProps:{clipStartMs:0},async render(e,t){var i,r;const s=resolveInputs(e);if(s.length===0)return(0,stand_in_1.mediaStandInDocument)({width:t.target.width,height:t.target.height,name:"Frame Stripper",title:"Drop a video here",hint:"Every frame comes back as its own numbered PNG.",handles:[{propKey:"sourceIds",index:0},{propKey:"maxFrames"}],fps:t.target.fps,durationMs:t.target.durationMs});if(e.clipStartMs!=null&&e.clipEndMs!=null&&e.clipEndMs<=e.clipStartMs)return(0,template_utils_1.makeErrorMosaic)(`Clip end (${e.clipEndMs}ms) must be greater than clip start (${e.clipStartMs}ms).`,{title:"Frame Stripper",width:t.target.width,height:t.target.height});const a=buildInputSlugs(s),o=[];for(let d=0;d<s.length;d++){const c=s[d],S=a[d],_=(0,types_1.asAssetId)(c),g=(0,types_1.asAssetId)((0,template_utils_1.slugifyAssetKeyFromPath)(c)),m=t.media[_],f=resolveFps(m,t.target.fps),p=resolveDurationMs(m,t.target.durationMs),{width:y,height:b}=resolveCanvas(m,t.target.width,t.target.height),h=Math.max(0,Math.min((i=e.clipStartMs)!==null&&i!==void 0?i:0,p)),F=Math.max(h,Math.min((r=e.clipEndMs)!==null&&r!==void 0?r:p,p))-h,{count:M,frameDurationMs:l}=(0,template_utils_1.computeFrameCount)({durationMs:F,fps:f,...e.maxFrames!=null?{maxFrames:e.maxFrames}:{}}),w={[g]:{kind:"file",path:c,mediaType:"video"}};for(let u=0;u<M;u++){const I=h+Math.round(u*l),v=frameStepName(S,u,M),k={kind:"mosaic_document",version:1,sources:[(0,template_utils_1.bindProps)({type:"media",mediaType:"video",assetId:g,placement:{fit:"cover"},playback:{clipStartMs:I,clipDurationMs:Math.ceil(l),loopMode:"freeze"},audio:{enabled:!1},editor:{owner:"template",label:"frame"}},[{propKey:"sourceIds",index:d},{propKey:"maxFrames"}])],assets:w,m0:(0,dsl_stdlib_1.toM0String)("F","FrameStripper"),fps:f,durationMs:Math.ceil(l),size:{width:y,height:b},format:{kind:"image",container:"png"}};o.push({name:v,label:v,durationMs:Math.ceil(l),file:k})}}return{kind:"mosaic_pipeline",version:1,emit:"multi",steps:o}}},(0,template_utils_1.registerTemplate)(exports.FrameStripperV2),exports.default=exports.FrameStripperV2;
@@ -1 +1 @@
1
- "use strict";var c=Object.defineProperty;var o=(r,e)=>c(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports);
1
+ "use strict";var u=Object.defineProperty;var o=(r,e)=>u(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports),__exportStar(require("./v2"),exports);
@@ -0,0 +1 @@
1
+ "use strict";var a=Object.defineProperty;var e=(r,t)=>a(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.WatermarkV2=void 0;var watermark_1=require("./watermark");Object.defineProperty(exports,"WatermarkV2",{enumerable:!0,get:e(function(){return watermark_1.WatermarkV2},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var P=Object.defineProperty;var T=(e,t)=>P(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.WatermarkV2=void 0;const types_1=require("@m0saic/types"),template_utils_1=require("@m0saic/template-utils"),canvas_handles_1=require("../../../_shared/canvas-handles"),stand_in_1=require("../../../_shared/stand-in"),geometry_1=require("../v1/geometry"),adaptive_1=require("../v1/adaptive"),pipeline_1=require("../v1/pipeline"),propsSchema=(0,template_utils_1.definePropsSchema)({sourceIds:{type:"media[]",required:!0,meta:{control:{multiple:!0,picker:"folder",accept:["image","video"]}}},mode:{type:"string",required:!1,meta:{constraints:{oneOf:["static","adaptive","page"]}}},content:{type:"string",required:!1,meta:{constraints:{oneOf:["logo","text","lockup"]}}},image:{type:"media",required:!1,meta:{control:{picker:"file",accept:["image"]}}},text:{type:"string",required:!1},textColor:{type:"string",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0}}},imageDark:{type:"media",required:!1,meta:{control:{picker:"file",accept:["image"]},ui:{visibleWhen:{prop:"mode",equals:"adaptive"}}}},textColorOnLight:{type:"string",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0},ui:{visibleWhen:{prop:"mode",equals:"adaptive"}}}},variant:{type:"string",required:!1,meta:{constraints:{oneOf:["single","auto"]},ui:{visibleWhen:{prop:"mode",equals:"adaptive"}}}},windowing:{type:"string",required:!1,meta:{constraints:{oneOf:["always","windows"]},ui:{visibleWhen:{prop:"mode",equals:"adaptive"}}}},coverageOverride:{type:"number",required:!1,meta:{constraints:{min:0,max:1},control:{flavor:"slider",step:.05},ui:{visibleWhen:{prop:"mode",equals:"adaptive"}}}},fadeMs:{type:"number",required:!1,meta:{constraints:{min:0,max:5e3},ui:{visibleWhen:{prop:"mode",equals:"adaptive"}}}},crossfadeMs:{type:"number",required:!1,meta:{constraints:{min:0,max:5e3},ui:{visibleWhen:{prop:"mode",equals:"adaptive"}}}},lumaThreshold:{type:"number",required:!1,meta:{constraints:{min:0,max:255},control:{flavor:"slider",step:1},ui:{visibleWhen:{prop:"mode",equals:"adaptive"}}}},minGapMs:{type:"number",required:!1,meta:{constraints:{min:0,max:6e4},ui:{visibleWhen:{prop:"mode",equals:"adaptive"}}}},lumaByInput:{type:"json",required:!1,meta:{ui:{hidden:!0,consumer:"agent"}}},lockupLayout:{type:"string",required:!1,meta:{constraints:{oneOf:["text-right","text-below"]},ui:{visibleWhen:{prop:"content",equals:"lockup"}}}},angleDeg:{type:"number",required:!1,meta:{constraints:{min:-90,max:90},control:{flavor:"slider",step:5},ui:{visibleWhen:{prop:"mode",equals:"page"}}}},tileGapRatio:{type:"number",required:!1,meta:{constraints:{min:.01,max:.5},control:{flavor:"slider",step:.01},ui:{visibleWhen:{prop:"mode",equals:"page"}}}},stagger:{type:"boolean",required:!1,meta:{ui:{visibleWhen:{prop:"mode",equals:"page"}}}},maxTiles:{type:"number",required:!1,meta:{constraints:{min:1,max:24},control:{flavor:"slider",step:1},ui:{visibleWhen:{prop:"mode",equals:"page"}}}},debugLayout:{type:"boolean",required:!1},opacity:{type:"number",required:!1,meta:{constraints:{min:.05,max:1},control:{flavor:"slider",step:.05}}},position:{type:"string",required:!1,meta:{constraints:{oneOf:["top-left","top-center","top-right","center-left","center","center-right","bottom-left","bottom-center","bottom-right"]}}},sizeRatio:{type:"number",required:!1,meta:{constraints:{min:.02,max:.9},control:{flavor:"slider",step:.01}}},sizeBasis:{type:"string",required:!1,meta:{constraints:{oneOf:["min","width","height"]}}},marginRatio:{type:"number",required:!1,meta:{constraints:{min:0,max:.25},control:{flavor:"slider",step:.002}}},layoutM0:{type:"m0",required:!1},imageOutputFormat:{type:"string",required:!1,meta:{constraints:{oneOf:["match","png","jpeg"]}}}}),DEFAULTS={mode:geometry_1.WATERMARK_DEFAULTS.mode,content:geometry_1.WATERMARK_DEFAULTS.content,text:geometry_1.WATERMARK_DEFAULTS.text,textColor:geometry_1.WATERMARK_DEFAULTS.textColor,textColorOnLight:geometry_1.WATERMARK_DEFAULTS.textColorOnLight,lockupLayout:geometry_1.WATERMARK_DEFAULTS.lockupLayout,position:geometry_1.WATERMARK_DEFAULTS.position,sizeRatio:geometry_1.WATERMARK_DEFAULTS.sizeRatio,sizeBasis:geometry_1.WATERMARK_DEFAULTS.sizeBasis,marginRatio:geometry_1.WATERMARK_DEFAULTS.marginRatio,opacity:geometry_1.WATERMARK_DEFAULTS.opacity,variant:geometry_1.WATERMARK_DEFAULTS.variant,windowing:geometry_1.WATERMARK_DEFAULTS.windowing,fadeMs:geometry_1.WATERMARK_DEFAULTS.fadeMs,crossfadeMs:geometry_1.WATERMARK_DEFAULTS.crossfadeMs,lumaThreshold:geometry_1.WATERMARK_DEFAULTS.lumaThreshold,minGapMs:geometry_1.WATERMARK_DEFAULTS.minGapMs,angleDeg:geometry_1.WATERMARK_DEFAULTS.angleDeg,tileGapRatio:geometry_1.WATERMARK_DEFAULTS.tileGapRatio,stagger:geometry_1.WATERMARK_DEFAULTS.stagger,maxTiles:geometry_1.WATERMARK_DEFAULTS.maxTiles,imageOutputFormat:geometry_1.WATERMARK_DEFAULTS.imageOutputFormat,debugLayout:geometry_1.WATERMARK_DEFAULTS.debugLayout};function addWatermarkHandles(e,t,o){var r;const n=(0,canvas_handles_1.sourcesOfTree)((r=e.sources)!==null&&r!==void 0?r:[],e.children),s=n.some(d=>(0,canvas_handles_1.labelOf)(d)==="wm:text"),l=[{propKey:"opacity"},{propKey:"sizeRatio"},...o.mode==="page"?[{propKey:"angleDeg"},{propKey:"tileGapRatio"},{propKey:"maxTiles"}]:[{propKey:"marginRatio"}],...o.mode==="adaptive"?[{propKey:"fadeMs"},{propKey:"crossfadeMs"},{propKey:"lumaThreshold"},{propKey:"minGapMs"},{propKey:"coverageOverride"}]:[]];(0,canvas_handles_1.addHandlesByLabel)(n,{"wm:base":[{propKey:"sourceIds",index:t}],"wm:text":[{propKey:"text"},...o.mode==="page"?[{propKey:"textColor"}]:[],...l],"wm:logo":[{propKey:"image"},...o.mode==="adaptive"?[{propKey:"imageDark"}]:[],...s?[]:l]})}T(addWatermarkHandles,"addWatermarkHandles");const STAND_IN_KEY="stand-in",LOGO_PLACEHOLDER="stand-in-logo",LOGO_PLACEHOLDER_DIMS={width:300,height:120};function swapLogoPlaceholder(e,t=new Set){var o,r,n;if(!e||typeof e!="object"||t.has(e))return!1;t.add(e);let s=!1;const l=(o=e.assets)!==null&&o!==void 0?o:{},d=Object.keys(l).filter(a=>{var i;return((i=l[a])===null||i===void 0?void 0:i.path)===LOGO_PLACEHOLDER});if(d.length){const a=(r=e.sources)!==null&&r!==void 0?r:[];for(let i=0;i<a.length;i++)d.includes(String(a[i].assetId))&&(a[i]=(0,template_utils_1.tag)((0,template_utils_1.makeColorTile)(stand_in_1.STAND_IN_TILE_ALT,{effects:{rounding:{cornerStyle:"rounded",borderRadius:.18},stroke:{position:"inner",width:.02,color:"#5b6678",alpha:1}}}),"wm:logo"),s=!0);for(const i of d)delete l[i]}for(const a of Object.values((n=e.children)!==null&&n!==void 0?n:{}))swapLogoPlaceholder(a,t)&&(s=!0);return s}T(swapLogoPlaceholder,"swapLogoPlaceholder");function buildStandIn(e,t){var o,r;const n=Math.max(1,Math.round(t.target.width)),s=Math.max(1,Math.round(t.target.height)),l={...t,media:{...t.media,[(0,types_1.asAssetId)(STAND_IN_KEY)]:{kind:"image",width:n,height:s}}},a=(0,pipeline_1.buildWatermarkStep)({inputPath:STAND_IN_KEY,stepName:STAND_IN_KEY,knobs:e,ctx:l}).file,i=((o=a.sources)!==null&&o!==void 0?o:[]).findIndex(_=>(0,canvas_handles_1.labelOf)(_)==="wm:base");if(i<0)return a;const p=(0,stand_in_1.mediaStandInDocument)({width:n,height:s,name:ERROR_TITLE,title:"Drop a video or image here",hint:"Files or a folder \u2014 each one comes back with this watermark.",handles:[{propKey:"sourceIds",index:0}],fps:t.target.fps,durationMs:t.target.durationMs,nested:!0}),g=a.sources[i].assetId,f=[...a.sources];f[i]=(0,stand_in_1.markIncomplete)({type:"mosaic",ref:STAND_IN_KEY,editor:{owner:"template",label:"wm:base"}},`${ERROR_TITLE}: drop a video or image here`);const v={...a.assets};g&&delete v[g];const{format:R,...y}=a,m={...y,sources:f,assets:v,children:{...(r=a.children)!==null&&r!==void 0?r:{},[STAND_IN_KEY]:p},backgroundColor:p.backgroundColor,audio:{mode:"off"}};return swapLogoPlaceholder(m),addWatermarkHandles(m,0,e),m}T(buildStandIn,"buildStandIn");const ERROR_TITLE="Watermark";exports.WatermarkV2=(0,template_utils_1.defineMosaicTemplate)({id:(0,types_1.asTemplateId)("@m0saic/media/watermark/v2"),version:2,capabilities:{tier:"core"},outputHints:{format:{kind:"video",container:"mp4"},width:1920,height:1080,fps:30,durationMs:1e4,posterTimeMs:0},propsSchema,bindings:{unbound:{text:"text content (the wordmark carries it)",textColor:"text content (the wordmark carries it)",textColorOnLight:"adaptive mode",imageDark:"adaptive mode",coverageOverride:"adaptive mode",fadeMs:"adaptive mode",crossfadeMs:"adaptive mode",lumaThreshold:"adaptive mode",minGapMs:"adaptive mode",angleDeg:"page mode",tileGapRatio:"page mode",maxTiles:"page mode"}},defaultProps:DEFAULTS,async render(e,t){var o,r,n,s,l,d,a,i,p,g,f,v,R,y,m,_,M,L,E,x,q,k,W,D;const w=T(u=>(0,template_utils_1.makeErrorMosaic)(u,{title:ERROR_TITLE,width:t.target.width,height:t.target.height}),"fail"),h=(o=e.mode)!==null&&o!==void 0?o:DEFAULTS.mode;if(h!=="static"&&h!=="adaptive"&&h!=="page")return w(`Watermark mode "${h}" is not recognized \u2014 use "static", "adaptive", or "page".`);const c=(r=e.content)!==null&&r!==void 0?r:DEFAULTS.content;if(c!=="logo"&&c!=="text"&&c!=="lockup")return w(`Watermark content "${c}" is not recognized \u2014 use "logo", "text", or "lockup".`);const b=(n=e.sourceIds)!==null&&n!==void 0?n:[],F=(c==="logo"||c==="lockup")&&!(typeof e.image=="string"&&e.image.trim()),K=(0,geometry_1.normalizeLayoutM0)(e.layoutM0);let I;try{K&&(0,geometry_1.validateLayoutM0)(K),I=F?(0,geometry_1.resolveContentInfo)({...e,image:LOGO_PLACEHOLDER},t,LOGO_PLACEHOLDER_DIMS):(0,geometry_1.resolveContentInfo)(e,t)}catch(u){return w(u instanceof Error?u.message:String(u))}const A={mode:h,content:c,...F?{image:LOGO_PLACEHOLDER}:e.image!==void 0?{image:e.image}:{},...e.imageDark!==void 0?{imageDark:e.imageDark}:{},text:((s=e.text)!==null&&s!==void 0?s:DEFAULTS.text).trim(),textColor:(l=e.textColor)!==null&&l!==void 0?l:DEFAULTS.textColor,textColorOnLight:(d=e.textColorOnLight)!==null&&d!==void 0?d:DEFAULTS.textColorOnLight,lockupLayout:(a=e.lockupLayout)!==null&&a!==void 0?a:DEFAULTS.lockupLayout,position:(i=e.position)!==null&&i!==void 0?i:DEFAULTS.position,sizeRatio:(p=e.sizeRatio)!==null&&p!==void 0?p:DEFAULTS.sizeRatio,sizeBasis:(g=e.sizeBasis)!==null&&g!==void 0?g:DEFAULTS.sizeBasis,marginRatio:(f=e.marginRatio)!==null&&f!==void 0?f:DEFAULTS.marginRatio,opacity:(v=e.opacity)!==null&&v!==void 0?v:DEFAULTS.opacity,layoutM0:K,imageOutputFormat:(R=e.imageOutputFormat)!==null&&R!==void 0?R:DEFAULTS.imageOutputFormat,contentInfo:I,variant:(y=e.variant)!==null&&y!==void 0?y:DEFAULTS.variant,windowing:(m=e.windowing)!==null&&m!==void 0?m:DEFAULTS.windowing,fadeMs:(_=e.fadeMs)!==null&&_!==void 0?_:DEFAULTS.fadeMs,crossfadeMs:(M=e.crossfadeMs)!==null&&M!==void 0?M:DEFAULTS.crossfadeMs,lumaThreshold:(L=e.lumaThreshold)!==null&&L!==void 0?L:DEFAULTS.lumaThreshold,minGapMs:(E=e.minGapMs)!==null&&E!==void 0?E:DEFAULTS.minGapMs,...e.coverageOverride!==void 0?{coverageOverride:e.coverageOverride}:{},angleDeg:(x=e.angleDeg)!==null&&x!==void 0?x:DEFAULTS.angleDeg,tileGapRatio:(q=e.tileGapRatio)!==null&&q!==void 0?q:DEFAULTS.tileGapRatio,stagger:(k=e.stagger)!==null&&k!==void 0?k:DEFAULTS.stagger,maxTiles:(W=e.maxTiles)!==null&&W!==void 0?W:DEFAULTS.maxTiles,debugLayout:(D=e.debugLayout)!==null&&D!==void 0?D:DEFAULTS.debugLayout};if(b.length===0)return buildStandIn(A,t);if(h==="adaptive"&&(0,geometry_1.watermarkNeedsLumaProbe)(e))if(e.lumaByInput!==void 0)A.lumaByInput=e.lumaByInput;else{const u=await(0,adaptive_1.probeLumaByInput)(e,b,t);u&&(A.lumaByInput=u)}const z=(0,template_utils_1.buildStepNames)(b);return{kind:"mosaic_pipeline",version:1,emit:"multi",steps:b.map((u,C)=>{var O;const U=(0,pipeline_1.buildWatermarkStep)({inputPath:u,stepName:z[C],knobs:A,ctx:t}),S=U.file;if(swapLogoPlaceholder(S)){const G=((O=S.sources)!==null&&O!==void 0?O:[]).find(B=>(0,canvas_handles_1.labelOf)(B)==="wm:base");G&&(0,stand_in_1.markIncomplete)(G,`${ERROR_TITLE}: pick the logo image \u2014 drop it on the placeholder.`)}return addWatermarkHandles(S,C,A),U})}}}),(0,template_utils_1.registerTemplate)(exports.WatermarkV2),exports.default=exports.WatermarkV2;
@@ -1 +1 @@
1
- "use strict";var t=Object.defineProperty;var e=(r,i)=>t(r,"name",{value:i,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.PrimitiveGridV2=exports.PrimitiveGrid=void 0;var grid_1=require("./v1/grid");Object.defineProperty(exports,"PrimitiveGrid",{enumerable:!0,get:e(function(){return grid_1.PrimitiveGrid},"get")});var grid_2=require("./v2/grid");Object.defineProperty(exports,"PrimitiveGridV2",{enumerable:!0,get:e(function(){return grid_2.PrimitiveGridV2},"get")});
1
+ "use strict";var t=Object.defineProperty;var r=(e,i)=>t(e,"name",{value:i,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.PrimitiveGridV3=exports.PrimitiveGridV2=exports.PrimitiveGrid=void 0;var grid_1=require("./v1/grid");Object.defineProperty(exports,"PrimitiveGrid",{enumerable:!0,get:r(function(){return grid_1.PrimitiveGrid},"get")});var grid_2=require("./v2/grid");Object.defineProperty(exports,"PrimitiveGridV2",{enumerable:!0,get:r(function(){return grid_2.PrimitiveGridV2},"get")});var grid_3=require("./v3/grid");Object.defineProperty(exports,"PrimitiveGridV3",{enumerable:!0,get:r(function(){return grid_3.PrimitiveGridV3},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var E=Object.defineProperty;var _=(e,t)=>E(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.PrimitiveGridV3=exports.PRIMITIVE_GRID_V3_TEMPLATE_ID=void 0;const types_1=require("@m0saic/types"),template_utils_1=require("@m0saic/template-utils"),propsSchema=(0,template_utils_1.definePropsSchema)({show:{type:"boolean",required:!1},count:{type:"number",required:!1},direction:{type:"string",required:!1,meta:{constraints:{oneOf:["horizontal","vertical","both"]}}},origin:{type:"string",required:!1,meta:{constraints:{oneOf:["top","bottom","left","right"]}}},excludeEdges:{type:"boolean",required:!1},color:{type:"string",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0}}},opacity:{type:"number",required:!1},thicknessFrac:{type:"number",required:!1}});exports.PRIMITIVE_GRID_V3_TEMPLATE_ID=(0,types_1.asTemplateId)("@m0saic/primitives/grid/v3");const DEFAULT_COLOR="#ffffff",DEFAULT_OPACITY=.12,DEFAULT_THICKNESS_FRAC=.002,DEFAULT_COUNT=5;function emptyGrid(e){return{kind:"mosaic_document",version:1,assets:{},m0:(0,template_utils_1.buildOverlayStack)(1),sources:[(0,template_utils_1.transparentSlot)()],durationMs:e.target.durationMs}}_(emptyGrid,"emptyGrid"),exports.PrimitiveGridV3={id:exports.PRIMITIVE_GRID_V3_TEMPLATE_ID,version:3,capabilities:{tier:"core"},outputHints:{format:{kind:"image",container:"png",pixelFormat:"rgba"}},propsSchema,defaultProps:{show:!0,count:DEFAULT_COUNT,direction:"horizontal",origin:"bottom",excludeEdges:!0,color:DEFAULT_COLOR,opacity:DEFAULT_OPACITY,thicknessFrac:DEFAULT_THICKNESS_FRAC},async render(e,t){var o,n,s,c,a;const g=e.show!==!1,l=Math.max(0,Math.floor((o=e.count)!==null&&o!==void 0?o:DEFAULT_COUNT));if(!g||l<=1)return emptyGrid(t);const i=(n=e.direction)!==null&&n!==void 0?n:"horizontal",u=(s=e.color)!==null&&s!==void 0?s:DEFAULT_COLOR,d=(c=e.opacity)!==null&&c!==void 0?c:DEFAULT_OPACITY,p=(a=e.thicknessFrac)!==null&&a!==void 0?a:DEFAULT_THICKNESS_FRAC,m=e.excludeEdges!==!1,f=e.origin,y=f==="top"?"top":"bottom",v=f==="right"?"right":"left",r=[];if((i==="horizontal"||i==="both")&&r.push(...(0,template_utils_1.buildGridlineSources)({direction:"horizontal",count:l,excludeEdges:m,origin:y,color:u,opacity:d,thicknessFrac:p})),(i==="vertical"||i==="both")&&r.push(...(0,template_utils_1.buildGridlineSources)({direction:"vertical",count:l,excludeEdges:m,origin:v,color:u,opacity:d,thicknessFrac:p})),r.length===0)return emptyGrid(t);const h=r.map(b=>(0,template_utils_1.bindProps)(b,[{propKey:"color"},{propKey:"opacity"},{propKey:"thicknessFrac"},{propKey:"count"}]));return{kind:"mosaic_document",version:1,sources:h,assets:{},m0:(0,template_utils_1.buildOverlayStack)(h.length),durationMs:t.target.durationMs}}},(0,template_utils_1.registerTemplate)(exports.PrimitiveGridV3);
@@ -1 +1 @@
1
- "use strict";var c=Object.defineProperty;var o=(r,e)=>c(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports);
1
+ "use strict";var u=Object.defineProperty;var o=(r,e)=>u(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports),__exportStar(require("./v2"),exports);
@@ -0,0 +1 @@
1
+ "use strict";var u=Object.defineProperty;var e=(r,t)=>u(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.QuoteCardV2=void 0;var quote_card_1=require("./quote-card");Object.defineProperty(exports,"QuoteCardV2",{enumerable:!0,get:e(function(){return quote_card_1.QuoteCardV2},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var E=Object.defineProperty;var o=(e,r)=>E(e,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.QuoteCardV2=void 0;const types_1=require("@m0saic/types"),dsl_stdlib_1=require("@m0saic/dsl-stdlib"),template_utils_1=require("@m0saic/template-utils"),layout_1=require("../v1/layout"),TEMPLATE_ID="@m0saic/social/quote-card/v2",PRESETS={light:{bg:"#faf9f7",ink:"#17181c",subtle:"#6b6f76"},dark:{bg:"#101014",ink:"#e8e8ee",subtle:"#a3a7b0"}},DEFAULT_ACCENT="#f97316",DEFAULT_MARGIN=.09,DEFAULT_QUOTE="Everything is rectangles on a canvas.",DEFAULT_ATTRIBUTION="The m0saic Thesis";function pickColor(e,r){const a=typeof e=="string"?e.trim():e;return a||r}o(pickColor,"pickColor");const propsSchema=(0,template_utils_1.definePropsSchema)({quote:{type:"string",required:!0},attribution:{type:"string",required:!1},role:{type:"string",required:!1},avatar:{type:"media",required:!1,meta:{control:{picker:"file",accept:["image"]}}},align:{type:"string",required:!1,meta:{constraints:{oneOf:["center","left"]}}},quoteMark:{type:"boolean",required:!1},accent:{type:"string",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0}}},preset:{type:"string",required:!1,meta:{constraints:{oneOf:["light","dark"]}}},background:{type:"string",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0}}},ink:{type:"string",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0}}},margin:{type:"number",required:!1,meta:{constraints:{min:.02,max:.2},control:{flavor:"slider",step:.005}}}});function textCell(e){return{type:"text",rasterizer:"svg",renderMode:{kind:"image"},layers:[{content:{kind:"literal",text:e.text},style:{fontSize:e.fontSize,fontColor:e.color,...e.bold?{fontWeight:"bold"}:{}},placement:{hAlign:e.hAlign,vAlign:"middle"}}],editor:{owner:"template",label:e.label}}}o(textCell,"textCell"),exports.QuoteCardV2={id:(0,types_1.asTemplateId)(TEMPLATE_ID),version:2,capabilities:{tier:"core"},outputHints:{width:1080,height:1080,format:{kind:"image",container:"png"}},propsSchema,defaultProps:{quote:DEFAULT_QUOTE,attribution:DEFAULT_ATTRIBUTION,align:"center",quoteMark:!0,accent:DEFAULT_ACCENT,preset:"light",margin:DEFAULT_MARGIN},async render(e,r){var a,c,d,g,m,f;const s=Math.max(1,Math.round(r.target.width)),l=Math.max(1,Math.round(r.target.height)),p=o(t=>(0,template_utils_1.makeErrorMosaic)(t,{title:"Quote Card",width:s,height:l}),"fail"),v=e.preset==="dark"?"dark":"light",h=PRESETS[v],q=pickColor(e.background,h.bg),A=pickColor(e.ink,h.ink),_=pickColor(e.accent,DEFAULT_ACCENT),x=e.align==="left"?"left":"center",S=e.quoteMark!==!1,P=Math.min(.2,Math.max(.02,(a=e.margin)!==null&&a!==void 0?a:DEFAULT_MARGIN)),C=((c=e.quote)!==null&&c!==void 0?c:"").trim();if(C.length===0)return(0,template_utils_1.makeIncompleteMosaic)("Type the quote \u2014 it wraps and sizes itself to the card.",{title:"Quote Card",width:s,height:l});const b=((d=e.attribution)!==null&&d!==void 0?d:"").trim(),y=((g=e.role)!==null&&g!==void 0?g:"").trim(),n=((m=e.avatar)!==null&&m!==void 0?m:"").trim();let i=null;if(n.length>0){const t=r.media[(0,types_1.asAssetId)(n)];if(!t||!(t.width>0)||!(t.height>0))return p(`no probed dimensions for avatar "${n}"`);if(t.kind!=="image")return p(`avatar "${n}" is ${(f=t.kind)!==null&&f!==void 0?f:"unknown"} \u2014 the avatar must be an image`);i=String((0,template_utils_1.slugifyAssetKeyFromPath)(n))}const u=b.length>0,M=[...u?[]:[{propKey:"attribution"}],...y.length===0?[{propKey:"role"}]:[],...i==null?[{propKey:"avatar"}]:[]],w=o(t=>{switch(t.kind){case"mark":return(0,template_utils_1.bindProp)(textCell({text:t.text,fontSize:t.fontSize,color:_,bold:!0,hAlign:t.hAlign,label:"mark"}),"accent");case"quote":return(0,template_utils_1.bindProps)(textCell({text:t.text,fontSize:t.fontSize,color:A,hAlign:t.hAlign,label:"quote"}),[{propKey:"quote"},{propKey:"ink"},...u?[]:M]);case"accent-bar":return(0,template_utils_1.bindProp)({type:"lavfi",color:_,editor:{owner:"template",label:"accent"}},"accent");case"avatar":return(0,template_utils_1.bindProp)({type:"media",mediaType:"image",assetId:i,placement:{fit:"cover"},effects:{rounding:{cornerStyle:"pill"}},editor:{owner:"template",label:"avatar"}},"avatar");case"name":return(0,template_utils_1.bindProps)(textCell({text:t.text,fontSize:t.fontSize,color:A,bold:!0,hAlign:t.hAlign,label:"name"}),[{propKey:"attribution"},{propKey:"ink"},...M]);case"role":return(0,template_utils_1.bindProp)(textCell({text:t.text,fontSize:t.fontSize,color:h.subtle,hAlign:t.hAlign,label:"role"}),"role")}},"sourceForCell");let k;try{k=(0,layout_1.buildQuoteCardLayout)({W:s,H:l,quote:C,attribution:u?b:null,role:y.length>0?y:null,hasAvatar:i!=null,align:x,quoteMark:S,marginFrac:P},w)}catch(t){if(t instanceof layout_1.QuoteLayoutError)return p(t.message);throw t}const z=(0,template_utils_1.bindProps)({type:"lavfi",color:q,editor:{owner:"template",label:"card"}},[{propKey:"preset"},{propKey:"background"},{propKey:"margin"}]),T={};return i!=null&&(T[i]={kind:"file",path:n,mediaType:"image"}),{kind:"mosaic_document",version:1,assets:T,m0:(0,dsl_stdlib_1.toM0String)(`1{${k.m0}}`,"QuoteCardV2"),sources:[z,...k.sources],fps:r.target.fps,durationMs:r.target.durationMs,size:{width:s,height:l},backgroundColor:q,editor:{label:`Quote Card \xB7 ${u?b:"unattributed"} \xB7 ${v}`}}}},(0,template_utils_1.registerTemplate)(exports.QuoteCardV2),exports.default=exports.QuoteCardV2;
@@ -1 +1 @@
1
- "use strict";var a=Object.defineProperty;var o=(t,e)=>a(t,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,r,i){i===void 0&&(i=r);var n=Object.getOwnPropertyDescriptor(e,r);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[r]},"get")}),Object.defineProperty(t,i,n)}):(function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]})),__exportStar=this&&this.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(e,t,r)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./narrated-chapters"),exports),__exportStar(require("./scrapbook/v1"),exports);
1
+ "use strict";var a=Object.defineProperty;var o=(t,e)=>a(t,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,r,i){i===void 0&&(i=r);var n=Object.getOwnPropertyDescriptor(e,r);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[r]},"get")}),Object.defineProperty(t,i,n)}):(function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]})),__exportStar=this&&this.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(e,t,r)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./narrated-chapters"),exports),__exportStar(require("./scrapbook/v1"),exports),__exportStar(require("./scrapbook/v2"),exports);
@@ -1 +1 @@
1
- "use strict";var c=Object.defineProperty;var o=(r,e)=>c(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports);
1
+ "use strict";var u=Object.defineProperty;var o=(r,e)=>u(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports),__exportStar(require("./v2"),exports);
@@ -0,0 +1 @@
1
+ "use strict";var a=Object.defineProperty;var e=(r,t)=>a(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.NarratedChaptersV2=void 0;var narrated_chapters_1=require("./narrated-chapters");Object.defineProperty(exports,"NarratedChaptersV2",{enumerable:!0,get:e(function(){return narrated_chapters_1.NarratedChaptersV2},"get")});
@@ -0,0 +1,4 @@
1
+ "use strict";var M=Object.defineProperty;var y=(e,a)=>M(e,"name",{value:a,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.NarratedChaptersV2=void 0;const template_utils_1=require("@m0saic/template-utils"),types_1=require("@m0saic/types"),canvas_handles_1=require("../../../_shared/canvas-handles"),captions_1=require("../v1/captions"),demo_fixture_1=require("../v1/demo-fixture"),plan_1=require("../v1/plan"),props_1=require("../v1/props"),pipeline_1=require("../v1/pipeline"),body_1=require("../v1/scenes/body"),theme_1=require("../v1/theme"),TEMPLATE_ID="@m0saic/story/narrated-chapters/v2",TEMPLATE_TITLE="Narrated Chapters",DEMO_DURATION_MS=32500,propsSchema=(0,template_utils_1.definePropsSchema)({story:{type:"json",required:!1},mediaPaths:{type:"media[]",required:!1},projectDir:{type:"string",required:!1}}),DEMO_STORY_JSON=JSON.stringify(demo_fixture_1.DEMO_STORY);function isSeededDemo(e){if(e===demo_fixture_1.DEMO_STORY)return!0;if(typeof e!="object"||e===null)return!1;try{return JSON.stringify(e)===DEMO_STORY_JSON}catch{return!1}}y(isSeededDemo,"isSeededDemo");function bindStoryHandles(e,a,p){var r,l,t,o,m,d,u;const n=y((i,f)=>({propKey:"story",path:i,kind:f}),"leaf"),c=n(["brand","textColor"],"color"),s=n(["brand","accentColor"],"color"),v=Array.isArray(p.sections)?p.sections:[],h=new Map;for(const i of a.scenes){const f=i.sectionIndex;i.kind==="title"||i.kind==="outro"?(h.set(`${i.name}/heading`,[n(["title"],"string"),c]),h.set(`${i.name}/sub`,[n(["subtitle"],"string")])):i.kind==="section-card"&&f!==void 0?(h.set(`${i.name}/heading`,[n(["sections",f,"title"],"string"),c]),h.set(`${i.name}/kicker`,[s])):i.kind==="body"&&f!==void 0&&((r=v[f])===null||r===void 0?void 0:r.cues)===void 0&&h.set(`${i.name}/captions`,[n(["sections",f,"narrationText"],"string"),c])}const g=(l=e.steps)!==null&&l!==void 0?l:[];for(const i of g)for(const f of(o=(t=i.file)===null||t===void 0?void 0:t.steps)!==null&&o!==void 0?o:[])for(const _ of(d=(m=f.file)===null||m===void 0?void 0:m.sources)!==null&&d!==void 0?d:[]){const b=h.get((u=(0,canvas_handles_1.labelOf)(_))!==null&&u!==void 0?u:"");b&&(0,canvas_handles_1.withAddHandles)(_,b)}}y(bindStoryHandles,"bindStoryHandles"),exports.NarratedChaptersV2={id:(0,types_1.asTemplateId)(TEMPLATE_ID),version:2,capabilities:{tier:"core"},outputHints:{format:{kind:"video",container:"mp4"},width:1920,height:1080,fps:30,durationMs:DEMO_DURATION_MS,note:"Duration derives from the story manifest (narration lengths), not from -t/--duration.",posterTimeMs:1750},propsSchema,bindings:{unbound:{mediaPaths:"probe mirror (machine-generated by `story-studio build`)",projectDir:"informational (shortens paths in diagnostics)"}},defaultProps:{story:demo_fixture_1.DEMO_STORY},async render(e,a){var p;const r=Math.max(1,Math.round(a.target.width)),l=Math.max(1,Math.round(a.target.height)),t=y(i=>(0,template_utils_1.makeErrorMosaic)(i,{width:r,height:l,title:TEMPLATE_TITLE}),"fail"),o=(0,props_1.coerceStoryProp)(e?.story);if(o.errors.length>0)return t(o.errors.join(`
2
+ `));const m=e??{},d=e?.story===void 0||isSeededDemo(e.story)?(0,props_1.sniffBareStory)({...m,story:void 0}):null,u=(p=d??o.story)!==null&&p!==void 0?p:demo_fixture_1.DEMO_STORY,n=d===null&&typeof e?.story=="object"&&e.story!==null,c=(0,props_1.validateStoryShape)(u);if(c.length>0)return t(c.join(`
3
+ `));const s=(0,plan_1.resolveTiming)(u,{fps:a.target.fps,target:{width:r,height:l},narrationDurationMs:y(i=>{var f;return(f=a.media[(0,types_1.asAssetId)(i)])===null||f===void 0?void 0:f.durationMs},"narrationDurationMs")});if("error"in s)return t(s.error);const v=resolveSectionMedia(u,a);if(typeof v=="string")return t(v);const h=s.plan.audio.musicPath!==void 0?{path:s.plan.audio.musicPath,assetKey:"music_bed"}:void 0,g=(0,pipeline_1.buildOuterPipeline)(s.plan,{width:r,height:l,fps:a.target.fps},(0,theme_1.themeFromStory)(u),v,h);return attachCaptionsSidecar(g,s.plan),n&&bindStoryHandles(g,s.plan,u),g},sidecarsSchema:{captions:{type:"object",required:!1,description:"Combined SubRip captions on the story timeline, written as {output-basename}.captions.srt next to the deliverable (cues are aspect-invariant, so one file serves every variant)."}}};function attachCaptionsSidecar(e,a){var p,r,l,t,o,m;const d=[];for(const c of a.scenes)for(const s of(p=c.cues)!==null&&p!==void 0?p:[])d.push({startMs:c.startMs+s.startMs,endMs:c.startMs+s.endMs,text:s.text});if(d.length===0)return;const n=(m=(o=(t=(l=(r=e.steps)===null||r===void 0?void 0:r[0])===null||l===void 0?void 0:l.file)===null||t===void 0?void 0:t.steps)===null||o===void 0?void 0:o[0])===null||m===void 0?void 0:m.file;n!==void 0&&(n.sidecars={captions:{kind:"text",ext:"srt",content:(0,captions_1.serializeSrt)(d)}})}y(attachCaptionsSidecar,"attachCaptionsSidecar");function resolveSectionMedia(e,a){const p=Array.isArray(e.sections)?e.sections:[],r=[],l=p.map((t,o)=>{const m=Array.isArray(t.images)?t.images.filter(n=>typeof n=="string"&&n.trim().length>0):[],d=m.map((n,c)=>{var s;const v=a.media[(0,types_1.asAssetId)(n.trim())];return v===void 0?r.push(`sections[${o}].images[${c}] ("${n}") is not in ctx.media \u2014 this engine probes only top-level string/string[] props; run \`story-studio build\` so mediaPaths mirrors it.`):v.kind!=="image"&&r.push(`sections[${o}].images[${c}] ("${n}") probed as ${(s=v.kind)!==null&&s!==void 0?s:"unknown"} \u2014 images must be stills in v1.`),{path:n.trim(),assetKey:`img_${o}_${c}`}}),u=typeof t.narrationAudio=="string"&&t.narrationAudio.trim().length>0?t.narrationAudio.trim():void 0;return{images:d,focus:(0,body_1.focusFromOverrides)(t.overrides,m.length),...u!==void 0?{narration:{path:u,assetKey:`nar_${o}`}}:{}}});return r.length>0?r.join(`
4
+ `):l}y(resolveSectionMedia,"resolveSectionMedia"),(0,template_utils_1.registerTemplate)(exports.NarratedChaptersV2);
@@ -0,0 +1 @@
1
+ "use strict";var o=Object.defineProperty;var r=(e,t)=>o(e,"name",{value:t,configurable:!0});var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ScrapbookV2=void 0;var scrapbook_1=require("./scrapbook");Object.defineProperty(exports,"ScrapbookV2",{enumerable:!0,get:r(function(){return scrapbook_1.ScrapbookV2},"get")}),Object.defineProperty(exports,"default",{enumerable:!0,get:r(function(){return __importDefault(scrapbook_1).default},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var s=Object.defineProperty;var e=(r,t)=>s(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.propsSchema=exports.resolveProps=exports.DEFAULT_PROPS=void 0;const template_utils_1=require("@m0saic/template-utils");var props_1=require("../v1/props");Object.defineProperty(exports,"DEFAULT_PROPS",{enumerable:!0,get:e(function(){return props_1.DEFAULT_PROPS},"get")}),Object.defineProperty(exports,"resolveProps",{enumerable:!0,get:e(function(){return props_1.resolveProps},"get")}),exports.propsSchema=(0,template_utils_1.definePropsSchema)({title:{type:"string",required:!1},subtitle:{type:"string",required:!1},photos:{type:"media[]",required:!1,meta:{control:{accept:["image"],picker:"folder",multiple:!0}}},notes:{type:"string[]",required:!1},closing:{type:"string",required:!1},music:{type:"media",required:!1,meta:{control:{accept:["audio"]}}},perPageMs:{type:"number",required:!1,meta:{constraints:{min:800,max:2e4}}},introMs:{type:"number",required:!1,meta:{constraints:{min:0,max:15e3}}},outroMs:{type:"number",required:!1,meta:{constraints:{min:0,max:15e3}}},xfadeMs:{type:"number",required:!1,meta:{constraints:{min:0,max:3e3}}},drift:{type:"number",required:!1,meta:{constraints:{min:0,max:1}}},tilt:{type:"number",required:!1,meta:{constraints:{min:0,max:8}}},paperColor:{type:"string",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0}}},inkColor:{type:"string",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0}}},accentColor:{type:"string",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0}}}});
@@ -0,0 +1 @@
1
+ "use strict";var k=Object.defineProperty;var _=(l,t)=>k(l,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScrapbookV2=void 0;const types_1=require("@m0saic/types"),template_utils_1=require("@m0saic/template-utils"),canvas_handles_1=require("../../../_shared/canvas-handles"),pages_1=require("../v1/pages"),pipeline_1=require("../v1/pipeline"),props_1=require("./props");exports.ScrapbookV2=(0,template_utils_1.defineMosaicTemplate)({id:(0,types_1.asTemplateId)("@m0saic/story/scrapbook/v2"),version:2,capabilities:{tier:"core"},outputHints:{width:1920,height:1080,fps:30,durationMs:(0,pipeline_1.naturalDurationMs)(props_1.DEFAULT_PROPS,pages_1.STAND_IN_PAGES),posterTimeMs:1800,note:"Length follows the page count: opening + per-page \xD7 pictures + closing.",format:{kind:"video",container:"mp4"}},propsSchema:props_1.propsSchema,bindings:{unbound:{music:"audio",perPageMs:"timing",introMs:"timing",outroMs:"timing",xfadeMs:"timing"}},defaultProps:props_1.DEFAULT_PROPS,render(l,t){var u,g,h,f;const p=t.output.width,a=t.output.height,y=t.target.fps,d=_((e,r)=>Promise.resolve((0,template_utils_1.makeErrorMosaic)(r,{title:`${this.id} ${e}`,width:p,height:a})),"fail"),m=(0,props_1.resolveProps)(l);if(!m.ok)return d("props",m.errors.join(" | "));const s=m.value;if(Math.min(p,a)<320)return d("canvas",`canvas too small: the short side must be at least 320 px (got ${p}\xD7${a})`);const i=(0,pages_1.resolvePages)(s);if(i.length===0)return d("pages","no pages to show");const c=(0,template_utils_1.resolvePinnedDurationMs)(t),v={...s};if(c!==void 0){const e=Math.round(c)-Math.round(s.introMs)-Math.round(s.outroMs),r=Math.floor(e/i.length);if(r<400)return d("duration",`pinned duration ${Math.round(c)} ms leaves under 400 ms a page for ${i.length} pages`);v.perPageMs=r,v.outroMs=Math.round(c)-Math.round(s.introMs)-r*i.length}const M=(0,pipeline_1.buildScrapbookPipeline)({width:p,height:a,fps:y,props:v,pages:i}),S=s.photos.filter(e=>typeof e=="string"&&e.trim()!=="").length;for(const e of M.steps){const b=(u=e.file.sources)!==null&&u!==void 0?u:[],P=/^page-(\d+)$/.exec((g=e.name)!==null&&g!==void 0?g:"");if(P){const n=b.find(o=>o.type==="mosaic"&&o.ref==="band");if(n){const o=S>0?Number(P[1])-1:0;(0,template_utils_1.bindProps)((0,template_utils_1.tag)(n,"print"),[{propKey:"photos",index:o},{propKey:"tilt"},{propKey:"drift"}])}}for(const n of b){const o=(f=(h=n.editor)===null||h===void 0?void 0:h.binding)===null||f===void 0?void 0:f.propKey;o==="subtitle"?(0,canvas_handles_1.withAddHandles)(n,[{propKey:"accentColor"}]):(o==="title"||o==="closing"||o==="notes")&&(0,canvas_handles_1.withAddHandles)(n,[{propKey:"inkColor"}])}}return Promise.resolve(M)}}),(0,template_utils_1.registerTemplate)(exports.ScrapbookV2),exports.default=exports.ScrapbookV2;
@@ -1 +1 @@
1
- "use strict";var c=Object.defineProperty;var o=(r,e)=>c(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports);
1
+ "use strict";var u=Object.defineProperty;var o=(r,e)=>u(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./v1"),exports),__exportStar(require("./v2"),exports);
@@ -0,0 +1 @@
1
+ "use strict";var u=Object.defineProperty;var t=(e,r)=>u(e,"name",{value:r,configurable:!0});var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ThemingV2=void 0;var theming_1=require("./theming");Object.defineProperty(exports,"ThemingV2",{enumerable:!0,get:t(function(){return theming_1.ThemingV2},"get")}),Object.defineProperty(exports,"default",{enumerable:!0,get:t(function(){return __importDefault(theming_1).default},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var p=Object.defineProperty;var c=(e,s)=>p(e,"name",{value:s,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ThemingV2=void 0;const types_1=require("@m0saic/types"),dsl_stdlib_1=require("@m0saic/dsl-stdlib"),template_utils_1=require("@m0saic/template-utils"),theme_tokens_1=require("../v1/theme-tokens"),token_sheet_1=require("../v1/token-sheet"),propsSchema=(0,template_utils_1.definePropsSchema)({preset:{type:"string",required:!1,meta:{constraints:{oneOf:["dark","light","high-contrast"]}}},alias:{type:"string",required:!1,meta:{ui:{consumer:"agent"}}},preview:{type:"boolean",required:!1}});exports.ThemingV2=(0,template_utils_1.defineMosaicTemplate)({id:(0,types_1.asTemplateId)("@m0saic/theming/v2"),version:2,capabilities:{tier:"core"},outputHints:{width:1920,height:1080,note:"A single-frame Theme-Tokens sheet (image); the real payload is the published token block on ctx.upstreamVariables.",format:{kind:"image",frameCount:1}},propsSchema,bindings:{unbound:{alias:"data key"}},defaultProps:{preset:theme_tokens_1.DEFAULT_THEME_MODE,alias:"theme",preview:!0},render:c(async(e,s)=>{var i,r,a;const o=(i=e.preset)!==null&&i!==void 0?i:theme_tokens_1.DEFAULT_THEME_MODE,n=(r=e.alias)!==null&&r!==void 0?r:"theme",u=(a=e.preview)!==null&&a!==void 0?a:!0;if(!(0,types_1.isAliasId)(n))throw new Error(`@m0saic/theming: alias ${JSON.stringify(n)} is not a valid AliasId (letter/_ start, alphanumeric, max 64 chars).`);const t=(0,theme_tokens_1.resolveTheme)(o),m=(0,template_utils_1.publishTheme)(t,{alias:n});if(!u)return{kind:"mosaic_document",version:1,m0:(0,dsl_stdlib_1.toM0String)("1","theme"),assets:{},sources:[m],sidecars:{theme:{...t}}};const h=s.target.width,d=s.target.height,l=(0,token_sheet_1.buildTokenSheet)(t,h,d,o);return{kind:"mosaic_document",version:1,m0:(0,dsl_stdlib_1.toM0String)(l.m0,"themeTokenSheet"),backgroundColor:t.surfaceApp,assets:{},sources:[...l.sources,m],format:{kind:"image",frameCount:1},sidecars:{theme:{...t}}}},"render")}),(0,template_utils_1.registerTemplate)(exports.ThemingV2),exports.default=exports.ThemingV2;
@@ -1 +1 @@
1
- "use strict";var a=Object.defineProperty;var o=(r,e)=>a(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./page-skeleton/v1"),exports);
1
+ "use strict";var a=Object.defineProperty;var o=(r,e)=>a(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./page-skeleton/v1"),exports),__exportStar(require("./page-skeleton/v2"),exports);
@@ -0,0 +1 @@
1
+ "use strict";var o=Object.defineProperty;var e=(t,r)=>o(t,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageSkeletonV2=void 0;var page_skeleton_1=require("./page-skeleton");Object.defineProperty(exports,"PageSkeletonV2",{enumerable:!0,get:e(function(){return page_skeleton_1.PageSkeletonV2},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var y=Object.defineProperty;var d=(t,e)=>y(t,"name",{value:e,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageSkeletonV2=void 0,exports.parseRectOverrides=parseRectOverrides,exports.blendHexColors=blendHexColors,exports.shadedRectangleFill=shadedRectangleFill,exports.resolvePageSkeletonMotion=resolvePageSkeletonMotion,exports.motionRankForRect=motionRankForRect,exports.buildPageSkeletonMotionLavfi=buildPageSkeletonMotionLavfi,exports.baseFillForKind=baseFillForKind,exports.effectiveRadiusPx=effectiveRadiusPx,exports.overriddenRectGeometry=overriddenRectGeometry,exports.overriddenRadiusPx=overriddenRadiusPx,exports.roundingForRect=roundingForRect,exports.fillPropForKind=fillPropForKind,exports.planSkeletonComposition=planSkeletonComposition,exports.placeSkeletonPieces=placeSkeletonPieces;const types_1=require("@m0saic/types"),dsl_stdlib_1=require("@m0saic/dsl-stdlib"),template_utils_1=require("@m0saic/template-utils"),canvas_handles_1=require("../../../_shared/canvas-handles"),capture_snippet_source_1=require("../v1/capture/capture-snippet-source"),layout_1=require("../v1/layout"),sample_capture_1=require("../v1/sample-capture"),schema_1=require("../v1/schema"),PAGE_SKELETON_ID="@m0saic/web/page-skeleton/v2",bBool=d(()=>({type:"boolean",required:!1}),"bBool"),bNum=d((t,e)=>({type:"number",required:!1,...t||e?{meta:{...e?{constraints:e}:{},...t?{control:t}:{}}}:{}}),"bNum"),bEnum=d(t=>({type:"string",required:!1,meta:{constraints:{oneOf:t}}}),"bEnum"),bColor=d(()=>({type:"string",required:!1,meta:{control:{colorPicker:!0},constraints:{isColor:!0}}}),"bColor"),propsSchema=(0,template_utils_1.definePropsSchema)({captureSnippet:{type:"code",required:!1},capture:{type:"json",required:!0,meta:{control:{flavor:"jsonModal"}}},outputFormat:{type:"string",required:!1,meta:{constraints:{oneOf:["png","mp4"]},control:{options:[{value:"png",label:"Still PNG"},{value:"mp4",label:"Animated MP4"}]}}},motion:{type:"group",required:!1,fields:{mode:bEnum(["shimmer","pulse"]),direction:bEnum(["horizontal","diagonal","vertical"]),bandWidth:bNum({flavor:"slider",step:.01},{min:.05,max:1}),minOpacity:bNum({flavor:"slider",step:.01},{min:.1,max:.95})}},appearance:{type:"group",required:!1,fields:{bg:bColor(),fill:bColor(),textFill:bColor(),imageFill:bColor(),radiusMode:bEnum(["none","captured","uniform"]),uniformRadiusPx:bNum({flavor:"slider",step:1,unit:"px"},{min:0,max:256})}},behavior:{type:"group",required:!1,fields:{maxRects:bNum({flavor:"slider",step:1},{min:1,max:600}),showTextLines:bBool(),showImages:bBool(),showControls:bBool(),showDividers:bBool(),scaleMode:bEnum(["fit","fill","stretch"]),containerMode:bEnum(["keep","drop"]),pureRects:bBool()}},overrides:{type:"json",required:!1,meta:{control:{flavor:"jsonModal"}}},debug:{type:"boolean",required:!1},debugIndices:{type:"boolean",required:!1,meta:{ui:{hidden:!0}}}}),DEFAULT_APPEARANCE={bg:"#ffffff",fill:"#d4d4d4",textFill:"#dadada",imageFill:"#c8c8c8",radiusMode:"captured",uniformRadiusPx:8},DEFAULT_BEHAVIOR={maxRects:layout_1.DEFAULT_MAX_RECTS,showTextLines:!0,showImages:!0,showControls:!0,showDividers:!0,scaleMode:"fit",containerMode:"keep",pureRects:!1},DEFAULT_MOTION={mode:"pulse",direction:"diagonal",bandWidth:.3,minOpacity:.68},OVERRIDE_SHAPES=new Set(["rect","rounded","pill","circle"]);function parseRectOverrides(t,e){let r=t;if(typeof t=="string"){if(!t.trim())return new Map;try{r=JSON.parse(t)}catch(n){throw new Error(`overrides is not valid JSON: ${n instanceof Error?n.message:String(n)}`)}}if(r==null)return new Map;if(!Array.isArray(r))throw new Error("overrides must be an array");const o=new Map;return r.forEach((n,s)=>{if(n==null||typeof n!="object"||Array.isArray(n))throw new Error(`overrides[${s}] must be an object`);const i=n;if(!Number.isInteger(i.i)||i.i<0)throw new Error(`overrides[${s}].i must be a non-negative integer`);const l=i.i;if(l>=e)throw new Error(`overrides[${s}].i ${l} is outside capture.rects[] (length ${e})`);if(o.has(l))throw new Error(`overrides[${s}].i ${l} is duplicated`);if(i.hide!==void 0&&typeof i.hide!="boolean")throw new Error(`overrides[${s}].hide must be a boolean`);if(i.fill!==void 0&&(typeof i.fill!="string"||!i.fill.trim()))throw new Error(`overrides[${s}].fill must be a non-empty string`);if(i.shape!==void 0&&(typeof i.shape!="string"||!OVERRIDE_SHAPES.has(i.shape)))throw new Error(`overrides[${s}].shape must be rect, rounded, pill, or circle`);if(i.radiusPx!==void 0&&(typeof i.radiusPx!="number"||!Number.isFinite(i.radiusPx)||i.radiusPx<0))throw new Error(`overrides[${s}].radiusPx must be a finite number \u2265 0`);o.set(l,{i:l,...i.hide!==void 0?{hide:i.hide}:{},...i.fill!==void 0?{fill:i.fill.trim()}:{},...i.shape!==void 0?{shape:i.shape}:{},...i.radiusPx!==void 0?{radiusPx:i.radiusPx}:{}})}),o}d(parseRectOverrides,"parseRectOverrides");function colorOr(t,e){return typeof t=="string"&&t.trim()?t.trim():e}d(colorOr,"colorOr");function parseHexColor(t){const e=t.trim().match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i);if(!e)return null;const r=e[1].length===3?e[1].split("").map(o=>o+o).join(""):e[1];return{r:Number.parseInt(r.slice(0,2),16),g:Number.parseInt(r.slice(2,4),16),b:Number.parseInt(r.slice(4,6),16)}}d(parseHexColor,"parseHexColor");const hexByte=d(t=>Math.max(0,Math.min(255,Math.round(t))).toString(16).padStart(2,"0"),"hexByte");function blendHexColors(t,e,r){const o=parseHexColor(t),n=parseHexColor(e);if(!o||!n)return t;const s=Math.max(0,Math.min(1,r));return`#${hexByte(o.r+(n.r-o.r)*s)}${hexByte(o.g+(n.g-o.g)*s)}${hexByte(o.b+(n.b-o.b)*s)}`}d(blendHexColors,"blendHexColors");function shadedRectangleFill(t,e,r){if(t.isSoftContainer)return blendHexColors(e,r,.82);const o=Math.max(0,Math.min(1,t.zBucket/5)),n=blendHexColors(e,r,.48*(1-o));return blendHexColors(n,"#000000",.08*o)}d(shadedRectangleFill,"shadedRectangleFill");function errorDocument(t,e){const r=Math.max(1,Math.round(e.target.width)),o=Math.max(1,Math.round(e.target.height));return{...(0,template_utils_1.makeErrorMosaic)(t,{width:r,height:o,title:"Page Skeleton",errorCode:"PAGE_SKELETON_CAPTURE"}),fps:e.target.fps,durationMs:e.target.durationMs,size:{width:r,height:o},format:{kind:"image",container:"png"}}}d(errorDocument,"errorDocument");const clampUnit=d(t=>Math.max(0,Math.min(1,t)),"clampUnit"),exprNumber=d(t=>String(Number(t.toFixed(4))),"exprNumber");function resolvePageSkeletonMotion(t){const e={...DEFAULT_MOTION,...t??{}};if(e.mode!=="shimmer"&&e.mode!=="pulse")throw new Error(`motion.mode must be shimmer or pulse (got "${e.mode}")`);if(e.direction!=="horizontal"&&e.direction!=="diagonal"&&e.direction!=="vertical")throw new Error(`motion.direction must be horizontal, diagonal, or vertical (got "${e.direction}")`);if(!Number.isFinite(e.bandWidth)||e.bandWidth<.05||e.bandWidth>1)throw new Error(`motion.bandWidth must be in [0.05, 1] (got ${e.bandWidth})`);if(!Number.isFinite(e.minOpacity)||e.minOpacity<.1||e.minOpacity>.95)throw new Error(`motion.minOpacity must be in [0.1, 0.95] (got ${e.minOpacity})`);return e}d(resolvePageSkeletonMotion,"resolvePageSkeletonMotion");function motionRankForRect(t,e,r){const o=clampUnit((t.x+t.w/2)/Math.max(1,e.w)),n=clampUnit((t.y+t.h/2)/Math.max(1,e.h));return r==="horizontal"?o:r==="vertical"?n:clampUnit((o+n)/2)}d(motionRankForRect,"motionRankForRect");function buildPageSkeletonMotionLavfi(t,e,r,o,n){const s=parseHexColor(String(t)),i=parseHexColor(String(e));if(!s||!i)return null;const l={r:s.r+(i.r-s.r)*(1-o.minOpacity),g:s.g+(i.g-s.g)*(1-o.minOpacity),b:s.b+(i.b-s.b)*(1-o.minOpacity)},c=d(v=>`0x${hexByte(v.r)}${hexByte(v.g)}${hexByte(v.b)}`,"ffmpegColor"),u=c(s),m=c(l),h=Math.max(.1,n)*.9;if(o.mode==="pulse"){const v=exprNumber(h/2);return`color=c=${u},fade=t=in:st=0:d=${v}:color=${m},fade=t=out:st=${v}:d=${v}:color=${m}`}const x=clampUnit(r),a=1+o.bandWidth,p=o.bandWidth/2,f=Math.max(.001,h*p/a),g=h*x/a,w=h*(x+p)/a;return`color=c=${u},fade=t=in:st=${exprNumber(g)}:d=${exprNumber(f)}:color=${m},fade=t=out:st=${exprNumber(w)}:d=${exprNumber(f)}:color=${m}`}d(buildPageSkeletonMotionLavfi,"buildPageSkeletonMotionLavfi");function baseFillForKind(t,e){return t==="text"?colorOr(e.textFill,DEFAULT_APPEARANCE.textFill):t==="image"||t==="control"?colorOr(e.imageFill,DEFAULT_APPEARANCE.imageFill):colorOr(e.fill,DEFAULT_APPEARANCE.fill)}d(baseFillForKind,"baseFillForKind");function effectiveRadiusPx(t,e){const r=Math.floor(Math.min(t.w,t.h)/2);if(e.radiusMode==="none")return 0;const o=e.radiusMode==="uniform"?Math.round(Number.isFinite(e.uniformRadiusPx)?e.uniformRadiusPx:DEFAULT_APPEARANCE.uniformRadiusPx):t.r;return Math.max(0,Math.min(r,o))}d(effectiveRadiusPx,"effectiveRadiusPx");function overriddenRectGeometry(t,e){if(e?.shape!=="circle")return t;const r=Math.min(t.w,t.h);return{...t,x:t.x+Math.floor((t.w-r)/2),y:t.y+Math.floor((t.h-r)/2),w:r,h:r,r:Math.floor(r/2)}}d(overriddenRectGeometry,"overriddenRectGeometry");function overriddenRadiusPx(t,e,r){const o=Math.floor(Math.min(t.w,t.h)/2);return r?.shape==="rect"?0:r?.shape==="pill"||r?.shape==="circle"?o:r?.radiusPx!==void 0?Math.max(0,Math.min(o,Math.round(r.radiusPx))):effectiveRadiusPx(t,e)}d(overriddenRadiusPx,"overriddenRadiusPx");function roundingForRect(t,e){const r=Math.min(t.w,t.h),o=Math.floor(r/2);return e>0&&e>=o-1?{cornerStyle:"pill",rasterizer:"svg"}:{cornerStyle:"rounded",borderRadius:clampUnit(2*e/r),rasterizer:"svg"}}d(roundingForRect,"roundingForRect");function fillPropForKind(t){return t==="text"?"appearance.textFill":t==="image"||t==="control"?"appearance.imageFill":"appearance.fill"}d(fillPropForKind,"fillPropForKind");function rectHandles(t,e){const{override:r}=e,o=[];t.overridePosition!==void 0&&o.push({propKey:"overrides",path:[t.overridePosition,"fill"],kind:"color"},{propKey:"overrides",path:[t.overridePosition,"radiusPx"],kind:"number"}),r?.fill||o.push({propKey:fillPropForKind(t.rect.k)});const n=r?.shape!==void 0||r?.radiusPx!==void 0;return e.radiusMode==="uniform"&&!n&&o.push({propKey:"appearance.uniformRadiusPx"}),e.animated&&(o.push({propKey:"motion.minOpacity"}),e.motionMode==="shimmer"&&o.push({propKey:"motion.bandWidth"})),o.push({propKey:"behavior.maxRects"}),o}d(rectHandles,"rectHandles");function rectangleSource(t,e,r){const o={rounding:roundingForRect(t.rect,t.radiusPx)},n=e?{type:"lavfi",lavfi:e,effects:o}:(0,template_utils_1.makeColorTile)(t.fill,{effects:o});return(0,canvas_handles_1.withAddHandles)({...n,editor:{owner:"user",label:`Capture rect ${t.rect.i} \xB7 ${t.rect.k}`}},r)}d(rectangleSource,"rectangleSource");function claimsFullCanvas(t,e){return t.x===0&&t.y===0&&t.w===e.w&&t.h===e.h}d(claimsFullCanvas,"claimsFullCanvas");function debugLabelColor(t){const e=parseHexColor(String(t));return e?(.2126*e.r+.7152*e.g+.0722*e.b)/255>=.5?"#3f3f46":"#f4f4f5":"#3f3f46"}d(debugLabelColor,"debugLabelColor");function debugIndexPieces(t,e){return t.map(({rect:r})=>{const o=String(r.i).length,n=Math.floor(Math.min(16,r.h*.72,r.w/Math.max(1,o*.62))),s=Math.max(6,n),i=(0,template_utils_1.measureText)(String(r.i),{fontSize:s}),l=Math.max(1,Math.min(r.w,Math.ceil(i.width)+2)),c=Math.max(1,Math.min(r.h,Math.ceil(i.height)+2)),u=r.x+Math.floor((r.w-l)/2),m=r.y+Math.floor((r.h-c)/2);return{rect:{x:u,y:m,w:l,h:c,importance:layout_1.MAX_DEPTH_BUCKETS},source:(0,template_utils_1.maskAtlasSource)([(0,template_utils_1.textToPath)(String(r.i),{fontSize:s,hAlign:"center",vAlign:"middle",rect:{x:0,y:0,width:l,height:c}},{width:l,height:c})],debugLabelColor(e),{width:l,height:c})}})}d(debugIndexPieces,"debugIndexPieces");function planSkeletonComposition(t,e,r,o,n={}){var s,i;const l=[...(i=(s=n.overrides)===null||s===void 0?void 0:s.keys())!==null&&i!==void 0?i:[]],c=t.map(a=>{var p;const f=(p=n.overrides)===null||p===void 0?void 0:p.get(a.i),g=overriddenRectGeometry(a,f),w=baseFillForKind(a.k,e);return{rect:g,fill:f?.fill?colorOr(f.fill,String(w)):shadedRectangleFill(g,w,r),radiusPx:overriddenRadiusPx(g,e,f),...f?{overridePosition:l.indexOf(a.i)}:{}}}),u=c.map(a=>{var p,f;const g=n.motion&&!a.rect.isSoftContainer&&!claimsFullCanvas(a.rect,o)?buildPageSkeletonMotionLavfi(a.fill,r,motionRankForRect(a.rect,o,n.motion.config.direction),n.motion.config,n.motion.durationSec):void 0;return{rect:{x:a.rect.x,y:a.rect.y,w:a.rect.w,h:a.rect.h,importance:claimsFullCanvas(a.rect,o)?-1:a.rect.zBucket},source:rectangleSource(a,g,rectHandles(a,{override:(p=n.overrides)===null||p===void 0?void 0:p.get(a.rect.i),radiusMode:e.radiusMode,animated:!!g,motionMode:(f=n.motion)===null||f===void 0?void 0:f.config.mode}))}}),m=n.debugIndices===!0?debugIndexPieces(c,r):[],b=[...u,...m];if(b.find(a=>claimsFullCanvas(a.rect,o)&&a.rect.importance!==-1))throw new Error("page-skeleton composition produced a non-base piece that claims the full canvas");const x=(0,layout_1.projectOverlayLayerCount)(b.map(a=>{var p;return{x:a.rect.x,y:a.rect.y,w:a.rect.w,h:a.rect.h,zBucket:(p=a.rect.importance)!==null&&p!==void 0?p:0}}));return{pieces:b,stats:{independentRects:c.length,debugLabels:m.length,projectedLayers:x}}}d(planSkeletonComposition,"planSkeletonComposition");function inlineMaskBounds(t){const e=t.mask;return e?.kind==="inline-mask"&&e.bounds?{width:e.bounds.width,height:e.bounds.height}:null}d(inlineMaskBounds,"inlineMaskBounds");function placeSkeletonPieces(t){var e;const{rootW:r,rootH:o,pieces:n,pureRects:s}=t;if(!s){const u=(0,template_utils_1.placeInsetPieces)({rootW:r,rootH:o,pieces:n,basis:120,onHostile:"exact"});return{m0:u.m0,sources:u.sources,expectations:u.expectations}}for(let u=0;u<n.length;u++)if(((e=n[u].source.placement)===null||e===void 0?void 0:e.inset)!=null)throw new Error(`pureRects cannot emit pieces[${u}] because its source already carries placement.inset`);const i=(0,dsl_stdlib_1.placeRects)({rootW:r,rootH:o,rects:n.map(u=>({x:u.rect.x,y:u.rect.y,w:u.rect.w,h:u.rect.h,importance:u.rect.importance,claimant:"F"}))}),l=[],c=[];for(const u of i.layers){const m=[...u.rectIndices].sort((b,h)=>n[b].rect.y-n[h].rect.y||n[b].rect.x-n[h].rect.x);for(const b of m){const h=n[b];l.push(h.source),c.push({rect:{x:h.rect.x,y:h.rect.y,w:h.rect.w,h:h.rect.h},inset:null,maskBounds:inlineMaskBounds(h.source),tolerancePx:0})}}return{m0:i.m0,sources:l,expectations:c}}d(placeSkeletonPieces,"placeSkeletonPieces"),exports.PageSkeletonV2={id:(0,types_1.asTemplateId)(PAGE_SKELETON_ID),version:2,capabilities:{tier:"core"},aspectRatio:{ideal:1440/900,label:"16:10",mode:"none"},outputHints:{format:{kind:"video",container:"mp4"},width:1440,height:900,fps:30,durationMs:2400,posterTimeMs:1080,note:"Animated MP4 by default \u2014 the skeleton breathes (pulse). Choose Output \u2192 Still PNG for the editable still."},propsSchema,bindings:{unbound:{capture:"the pasted page capture (a rect is edited through its overrides row)",overrides:"per-rect rows (a rect carries its own row once it has one)","appearance.uniformRadiusPx":"uniform radius mode","motion.bandWidth":"shimmer mode"}},defaultProps:{captureSnippet:{language:"javascript",code:capture_snippet_source_1.PAGE_SKELETON_CAPTURE_SNIPPET},capture:sample_capture_1.SAMPLE_CAPTURE,outputFormat:"mp4",motion:DEFAULT_MOTION,appearance:DEFAULT_APPEARANCE,behavior:DEFAULT_BEHAVIOR,overrides:[],debug:!1,debugIndices:!1},async render(t,e){var r,o,n;const s=Math.max(1,Math.round(e.target.width)),i=Math.max(1,Math.round(e.target.height));try{const l=(r=t.outputFormat)!==null&&r!==void 0?r:"png";if(l!=="png"&&l!=="mp4")throw new Error(`outputFormat must be png or mp4 (got "${l}")`);const c=l==="mp4"?resolvePageSkeletonMotion(t.motion):void 0,u=(0,schema_1.parseCapture)(t.capture),m=parseRectOverrides(t.overrides,u.rects.length),b=new Set([...m.values()].filter(v=>v.hide===!0).map(v=>v.i)),h={...DEFAULT_APPEARANCE,...(o=t.appearance)!==null&&o!==void 0?o:{}},x={...DEFAULT_BEHAVIOR,...(n=t.behavior)!==null&&n!==void 0?n:{}},a=colorOr(h.bg,DEFAULT_APPEARANCE.bg),p=(0,layout_1.layoutCapture)(u,{canvasW:s,canvasH:i,...x,hiddenIndices:b});if(p.rects.length===0)return errorDocument("capture contains no visible rectangles after filtering and scaling",e);const f=planSkeletonComposition(p.rects,h,a,{w:s,h:i},{overrides:m,debugIndices:t.debugIndices===!0,motion:c?{config:c,durationSec:Math.max(.1,e.target.durationMs/1e3)}:void 0}),g=placeSkeletonPieces({rootW:s,rootH:i,pieces:f.pieces,pureRects:x.pureRects===!0}),w={kind:"mosaic_document",version:1,assets:{},m0:g.m0,sources:g.sources,backgroundColor:a,fps:e.target.fps,durationMs:e.target.durationMs,size:{width:s,height:i},format:l==="mp4"?{kind:"video",container:"mp4"}:{kind:"image",container:"png"},...l==="mp4"?{audio:{mode:"off"}}:{},...t.debug?{editor:{label:`Page Skeleton \xB7 ${p.stats.output} rects \xB7 filtered ${p.stats.filtered} \xB7 capped ${p.stats.capped} \xB7 pruned ${p.stats.pruned} \xB7 degenerate ${p.stats.degenerate} \xB7 ${f.stats.independentRects} independent sources \xB7 ${f.stats.debugLabels} debug labels \xB7 ${f.stats.projectedLayers} projected layers \xB7 ${x.pureRects?"pure DSL rects":"inset recovery"} \xB7 ${c?`${c.mode} ${c.direction} ${e.target.durationMs}ms loop`:"still"}`}}:{}};return(0,template_utils_1.withGeometryContract)(w,e,{templateId:PAGE_SKELETON_ID,expectations:g.expectations,debug:t.debug===!0})}catch(l){const c=l instanceof Error?l.message:String(l);return errorDocument(c,e)}}},(0,template_utils_1.registerTemplate)(exports.PageSkeletonV2),exports.default=exports.PageSkeletonV2;
@@ -0,0 +1 @@
1
+ "use strict";var i=Object.defineProperty;var e=(r,t)=>i(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.WireframeV3=void 0;var wireframe_1=require("./wireframe");Object.defineProperty(exports,"WireframeV3",{enumerable:!0,get:e(function(){return wireframe_1.WireframeV3},"get")});
@@ -0,0 +1 @@
1
+ "use strict";var ye=Object.defineProperty;var x=(e,t)=>ye(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.WireframeV3=exports.WireframeUnlabeledCells=exports.WireframeNullFrames=exports.WireframeBackground=exports.WireframeLabelOverflow=exports.WireframeLabelContent=void 0;const types_1=require("@m0saic/types"),dsl_stdlib_1=require("@m0saic/dsl-stdlib"),template_utils_1=require("@m0saic/template-utils"),canvas_handles_1=require("../../../_shared/canvas-handles"),wireframe_1=require("../v1/wireframe"),dsl_1=require("@m0saic/dsl"),paperGrid_1=require("../../utils/paperGrid");var WireframeLabelContent;(function(e){e.None="none",e.Number="number",e.Dimensions="dimensions",e.AspectRatio="aspect"})(WireframeLabelContent||(exports.WireframeLabelContent=WireframeLabelContent={}));var WireframeLabelOverflow;(function(e){e.Hide="hide",e.Degrade="degrade",e.NumberFloor="number-floor"})(WireframeLabelOverflow||(exports.WireframeLabelOverflow=WireframeLabelOverflow={}));var WireframeBackground;(function(e){e.Transparent="transparent",e.White="white"})(WireframeBackground||(exports.WireframeBackground=WireframeBackground={}));var WireframeNullFrames;(function(e){e.Hide="hide",e.Show="show"})(WireframeNullFrames||(exports.WireframeNullFrames=WireframeNullFrames={}));var WireframeUnlabeledCells;(function(e){e.Marks="marks",e.Empty="empty"})(WireframeUnlabeledCells||(exports.WireframeUnlabeledCells=WireframeUnlabeledCells={}));const DEFAULT_UNLABELED_CELLS="marks";function cellLabelFor(e,t,l){var o;const i=e?.[t-1];return i&&i.trim()?i:((o=e?.length)!==null&&o!==void 0?o:0)>0&&l==="empty"?"":void 0}x(cellLabelFor,"cellLabelFor");const DEFAULT_LABEL_CONTENT="dimensions",DEFAULT_LABEL_OVERFLOW="degrade",DEFAULT_BACKGROUND="white",DEFAULT_NULL_FRAMES="hide",DEFAULT_NULL_LABEL="null",NULL_FRAME_ALPHA=.55,LAYER_STILL_MS=1e3,NULL_DASH_PER_PEN=6,DEFAULT_LAYOUT="2(2[1,1],2[1,1])",MIN_LEGIBLE_PX=9,DEBUG_BORDER_FRAC=.0015,MAX_CANVAS_BORDER_FRAC=.003,SECONDARY_RATIO=.65,TERTIARY_RATIO=.55,STACK_GAP_RATIO=.25,STACK_FILL_FRAC=.6,MAX_NUM_PX=240;function gcd(e,t){for(e=Math.abs(Math.round(e)),t=Math.abs(Math.round(t));t;)[e,t]=[t,e%t];return e||1}x(gcd,"gcd");function simplifyRatio(e,t){const l=gcd(e,t);return[Math.round(e)/l,Math.round(t)/l]}x(simplifyRatio,"simplifyRatio");function fmtDec(e){return parseFloat(e.toFixed(2)).toString()}x(fmtDec,"fmtDec");function contentLevel(e){return e==="aspect"?3:e==="dimensions"?2:e==="number"?1:0}x(contentLevel,"contentLevel");function linesForLevel(e,t,l,o){const i=[];if(e>=1&&i.push({key:"num",text:String(t)}),e>=2&&i.push({key:"dims",text:`${l} \xD7 ${o}`}),e>=3){const[d,f]=simplifyRatio(l,o);i.push({key:"aspect",text:`${d}:${f} \xB7 ${fmtDec(l/o)}`})}return i}x(linesForLevel,"linesForLevel");function candidateLevels(e,t){if(e<=0)return[];if(t==="hide")return[e];if(t==="number-floor")return e>1?[e,1]:[1];const l=[];for(let o=e;o>=1;o--)l.push(o);return l}x(candidateLevels,"candidateLevels");function fitLines(e,t,l,o){const i=e.length;if(i===0)return null;const d=Math.min(t,l),f=Math.max(4,Math.round(d*.04)),m=t-2*f;if(m<=0)return null;const u=x(a=>a==="num"?1:a==="dims"?SECONDARY_RATIO:TERTIARY_RATIO,"relOf"),p=e.reduce((a,c)=>a+u(c.key),0),v=STACK_GAP_RATIO*(i-1);let g=Math.min(MAX_NUM_PX,l*STACK_FILL_FRAC/(p+v)),n=1;for(const a of e){const c=(0,template_utils_1.measureText)(a.text,{fontSize:g*u(a.key)}).width;c>m&&(n=Math.min(n,m/c))}if(g*=n,g<o)return null;const s=e.map(a=>({...a,size:g*u(a.key)}));return s.some(a=>a.size<MIN_LEGIBLE_PX)?null:{lines:s,gap:g*STACK_GAP_RATIO,pad:f}}x(fitLines,"fitLines");function resolveLabel(e,t,l,o,i,d){const f=contentLevel(e);for(const m of candidateLevels(f,t)){const u=fitLines(linesForLevel(m,l,o,i),o,i,d);if(u)return u}return null}x(resolveLabel,"resolveLabel");function labelLineRects(e){const{cellW:t,cellH:l,order:o,label:i,content:d,overflow:f,minTextSize:m}=e,u=Math.min(t,l),p=Math.max(4,Math.round(u*.04));if(i!=null){const a=i.trim();if(!a)return[];const c=Math.max(1,t-2*p);let h=clampSize(m,u*.16,72),k=(0,template_utils_1.measureText)(a,{fontSize:h}).width;return k>c&&(h=Math.max(MIN_LEGIBLE_PX,Math.floor(h*c/k)),k=(0,template_utils_1.measureText)(a,{fontSize:h}).width),[{x:(t-k)/2,y:(l-h)/2,w:k,h}]}const v=resolveLabel(d,f,o,t,l,m);if(!v)return[];let g=0;v.lines.forEach((a,c)=>{g+=a.size,c>0&&(g+=v.gap)});const n=[];let s=(l-g)/2;for(const a of v.lines){const c=(0,template_utils_1.measureText)(a.text,{fontSize:a.size}).width;n.push({x:(t-c)/2,y:s,w:c,h:a.size}),s+=a.size+v.gap}return n}x(labelLineRects,"labelLineRects");function rectsIntersect(e,t,l,o,i,d,f,m){return e<i+f&&i<e+l&&t<d+m&&d<t+o}x(rectsIntersect,"rectsIntersect");function rectRingPath(e,t,l){const o=Math.min(l,e/2,t/2),i=`M0 0 L${e} 0 L${e} ${t} L0 ${t} Z`,d=`M${o} ${o} L${o} ${t-o} L${e-o} ${t-o} L${e-o} ${o} Z`;return`${i} ${d}`}x(rectRingPath,"rectRingPath");function dashedRingPath(e,t,l,o,i){const d=Math.max(1,Math.min(l,e/2,t/2)),f=Math.max(2,o+i),m=[];for(let u=0;u<e;u+=f){const p=Math.min(e,u+o);m.push(`M${u} 0 L${p} 0 L${p} ${d} L${u} ${d} Z`),m.push(`M${u} ${t-d} L${p} ${t-d} L${p} ${t} L${u} ${t} Z`)}for(let u=0;u<t;u+=f){const p=Math.min(t,u+o);m.push(`M0 ${u} L${d} ${u} L${d} ${p} L0 ${p} Z`),m.push(`M${e-d} ${u} L${e} ${u} L${e} ${p} L${e-d} ${p} Z`)}return m.join(" ")}x(dashedRingPath,"dashedRingPath");function buildNullCellMaskPath(e){var t,l;const{cellW:o,cellH:i,borderPx:d,minTextSize:f,ringOnly:m}=e,u=(t=e.label)!==null&&t!==void 0?t:DEFAULT_NULL_LABEL,p=Math.max(6,d*NULL_DASH_PER_PEN),v=[dashedRingPath(o,i,d,p,p)];if(m)return v.join(" ");const g={width:o,height:i},n=[{key:"num",text:u},{key:"dims",text:`${o} \xD7 ${i}`}],s=(l=fitLines(n,o,i,f))!==null&&l!==void 0?l:fitLines(n.slice(0,1),o,i,f);if(s){let a=0;s.lines.forEach((h,k)=>{a+=h.size,k>0&&(a+=s.gap)});let c=(i-a)/2;for(const h of s.lines)v.push((0,template_utils_1.textToPath)(h.text,{fontSize:h.size,hAlign:"center",vAlign:"top",padding:{x:s.pad,y:c}},g)),c+=h.size+s.gap}return v.filter(Boolean).join(" ")}x(buildNullCellMaskPath,"buildNullCellMaskPath");function ghostTile(e){return(0,template_utils_1.makeColorTile)(e,{overlay:{alpha:"0"}})}x(ghostTile,"ghostTile");function nullTile(e){return(0,template_utils_1.makeColorTile)(e.ink,{mask:{kind:"inline-mask",localPath:buildNullCellMaskPath(e),bounds:{x:0,y:0,width:e.cellW,height:e.cellH}},overlay:{alpha:String(NULL_FRAME_ALPHA)}})}x(nullTile,"nullTile");function paintedTile(e){var t,l,o,i,d,f,m;const{cellW:u,cellH:p,order:v,useThumb:g,resolved:n}=e;if(g){let c=(t=n?.tileColor)!==null&&t!==void 0?t:"#141824";!((l=n?.heatmap)===null||l===void 0)&&l.enabled&&n.heatmap.shades.length>0?c=n.heatmap.shades[(v-1)%n.heatmap.shades.length]:n&&v%2===0&&(c=n.tileColorAlt);const h={rounding:(o=n?.rounding)!==null&&o!==void 0?o:{borderRadius:.04,cornerStyle:"rounded"},stroke:{width:(i=n?.borderWidthFrac)!==null&&i!==void 0?i:.0015,color:(d=n?.borderColor)!==null&&d!==void 0?d:"#ffffff",alpha:(f=n?.borderAlpha)!==null&&f!==void 0?f:.1,position:"inner"}};return n?.dropShadow&&(h.dropShadow=n.dropShadow),(0,template_utils_1.makeColorTile)(c,{effects:h})}const s=(m=n?.borderColor)!==null&&m!==void 0?m:"#000000",a=buildDebugCellMaskPath({cellW:u,cellH:p,order:v,label:e.label,content:e.labelContent,overflow:e.labelOverflow,borderPx:e.borderPx,minTextSize:e.minTextSize,suppressLabel:e.suppressLabel});return(0,template_utils_1.makeColorTile)(s,{mask:{kind:"inline-mask",localPath:a,bounds:{x:0,y:0,width:u,height:p},...e.fillAlpha>0?{matte:e.fillAlpha}:{}}})}x(paintedTile,"paintedTile");function buildLayerExplode(e){var t,l,o,i,d,f;const m=String((0,dsl_1.toCanonicalM0String)(e.m0)),u=(0,dsl_1.parseM0StringComplete)(m,e.canvasW,e.canvasH);if(!u.ok)return null;const p=((l=(t=u.ir)===null||t===void 0?void 0:t.editorFrames)!==null&&l!==void 0?l:[]).filter(s=>s.kind==="frame"||s.kind==="null").slice().sort((s,a)=>{var c,h,k,M;return((h=(c=s.meta.span)===null||c===void 0?void 0:c.start)!==null&&h!==void 0?h:0)-((M=(k=a.meta.span)===null||k===void 0?void 0:k.start)!==null&&M!==void 0?M:0)});if(p.length===0||p.some(s=>s.kind==="null"&&(s.meta.span==null||m[s.meta.span.start]!=="-")))return null;const v=p.reduce((s,a)=>Math.max(s,a.overlayDepth),0),g=(i=(o=e.resolved)===null||o===void 0?void 0:o.borderColor)!==null&&i!==void 0?i:"#000000",n=[];for(let s=0;s<=v;s++){const a=m.split(""),c=[];let h=0;for(const y of p)if(y.kind==="frame"){if(h+=1,y.overlayDepth!==s){c.push(ghostTile(g));continue}const S=paintedTile({cellW:y.width,cellH:y.height,order:h,useThumb:e.useThumb,resolved:e.resolved,label:cellLabelFor(e.labels,h,e.unlabeledCells),labelContent:e.labelContent,labelOverflow:e.labelOverflow,borderPx:e.borderPx,minTextSize:e.minTextSize,fillAlpha:e.fillAlpha,suppressLabel:!1});c.push(!e.useThumb&&e.bindCell?e.bindCell(S,h):S)}else y.overlayDepth===s&&y.meta.span&&(a[y.meta.span.start]="1",c.push(nullTile({ink:g,cellW:y.width,cellH:y.height,borderPx:e.borderPx,minTextSize:e.minTextSize,ringOnly:e.useThumb,label:e.nullLabel})));let k=a.join("");s===0&&(!((f=(d=e.resolved)===null||d===void 0?void 0:d.paperGrid)===null||f===void 0)&&f.enabled)&&(c.push((0,paperGrid_1.makePaperGridSource)({width:e.canvasW,height:e.canvasH,ink:g,stepFrac:e.resolved.paperGrid.stepFrac,alpha:e.resolved.paperGrid.alpha})),k=(0,paperGrid_1.appendTopOverlay)(k));const M={kind:"mosaic_document",version:1,assets:e.assets,m0:(0,dsl_stdlib_1.toM0String)(k,`Wireframe layer ${s}`),sources:c,size:{width:e.canvasW,height:e.canvasH},fps:e.fps,durationMs:LAYER_STILL_MS,format:{kind:"image",container:"png",pixelFormat:"rgba"},...e.bg!=null?{backgroundColor:(0,template_utils_1.solidBackground)(e.bg)}:{},...e.backgroundImage?{backgroundImage:e.backgroundImage}:{}};n.push({name:`layer-${s}`,label:`Layer ${s} of ${v+1}`,durationMs:LAYER_STILL_MS,file:M})}return{kind:"mosaic_pipeline",version:1,emit:"multi",steps:n}}x(buildLayerExplode,"buildLayerExplode");function clampSize(e,t,l){return Math.max(e,Math.min(l,Math.round(t)))}x(clampSize,"clampSize");function buildDebugCellMaskPath(e){const{cellW:t,cellH:l,order:o,label:i,content:d,overflow:f,borderPx:m,minTextSize:u,suppressLabel:p}=e,v={width:t,height:l},g=Math.min(t,l),n=Math.max(4,Math.round(g*.04)),s=[];if(s.push(rectRingPath(t,l,m)),p)return s.filter(Boolean).join(" ");if(i!=null){const a=i.trim();if(a){const c=Math.max(1,t-2*n);let h=clampSize(u,g*.16,72);const k=(0,template_utils_1.measureText)(a,{fontSize:h}).width;k>c&&(h=Math.max(MIN_LEGIBLE_PX,Math.floor(h*c/k))),s.push((0,template_utils_1.textToPath)(a,{fontSize:h,hAlign:"center",vAlign:"middle",padding:n},v))}}else{const a=resolveLabel(d,f,o,t,l,u);if(a){let c=0;a.lines.forEach((k,M)=>{c+=k.size,M>0&&(c+=a.gap)});let h=(l-c)/2;for(const k of a.lines)s.push((0,template_utils_1.textToPath)(k.text,{fontSize:k.size,hAlign:"center",vAlign:"top",padding:{x:n,y:h}},v)),h+=k.size+a.gap}}return s.filter(Boolean).join(" ")}x(buildDebugCellMaskPath,"buildDebugCellMaskPath");function stableKeyLabelsToPositional(e,t,l,o){var i,d;const f=(0,dsl_1.parseM0StringComplete)(t,l,o);if(!f.ok)return;const m=((d=(i=f.ir)===null||i===void 0?void 0:i.renderFrames)!==null&&d!==void 0?d:[]).slice().sort((v,g)=>v.logicalIndex-g.logicalIndex),u=new Array(m.length).fill("");let p=!1;for(let v=0;v<m.length;v++){const g=m[v].meta.stableKey,n=e[g];n&&typeof n.text=="string"&&n.text.trim()!==""&&(u[v]=n.text,p=!0)}return p?u:void 0}x(stableKeyLabelsToPositional,"stableKeyLabelsToPositional");const propsSchema=(0,template_utils_1.definePropsSchema)({M0String:{type:"m0",required:!0},labels:{type:"string[]",required:!1},unlabeledCells:{type:"string",required:!1,meta:{constraints:{oneOf:["marks","empty"]},control:{options:[{value:"marks",label:"Keep marks"},{value:"empty",label:"Leave empty"}]}}},labelsByStableKey:{type:"group",required:!1,meta:{ui:{consumer:"agent"}}},cellColors:{type:"string[]",required:!1,meta:{constraints:{isColor:!0},control:{colorPicker:!0},ui:{consumer:"agent"}}},mode:{type:"string",required:!1,meta:{constraints:{oneOf:["debug","thumb"]},control:{options:[{value:"debug",label:"Debug"},{value:"thumb",label:"Thumbnail"}]}}},labelContent:{type:"string",required:!1,meta:{constraints:{oneOf:["none","number","dimensions","aspect"]},control:{options:[{value:"none",label:"None"},{value:"number",label:"Number"},{value:"dimensions",label:"Dimensions"},{value:"aspect",label:"Aspect ratio"}]}}},labelOverflow:{type:"string",required:!1,meta:{constraints:{oneOf:["hide","degrade","number-floor"]},control:{options:[{value:"hide",label:"Hide"},{value:"degrade",label:"Degrade"},{value:"number-floor",label:"Number floor"}]}}},background:{type:"string",required:!1,meta:{constraints:{oneOf:["transparent","white"]},control:{options:[{value:"transparent",label:"Transparent"},{value:"white",label:"White"}]}}},nullFrames:{type:"string",required:!1,meta:{constraints:{oneOf:["hide","show"]},control:{options:[{value:"hide",label:"Hide"},{value:"show",label:"Show"}]}}},nullLabel:{type:"string",required:!1,meta:{constraints:{oneOf:["null","-"]},control:{options:[{value:"null",label:"null"},{value:"-",label:"- (m0 token)"}]}}},fill:{type:"number",required:!1,meta:{constraints:{min:0,max:1}}},backgroundImage:{type:"media",required:!1,meta:{control:{picker:"file",accept:["image"]}}},backgroundImageOpacity:{type:"number",required:!1,meta:{constraints:{min:0,max:1}}},backgroundImageFit:{type:"string",required:!1,meta:{constraints:{oneOf:["cover","contain"]},control:{options:[{value:"cover",label:"Cover"},{value:"contain",label:"Contain"}]}}},preset:{type:"string",required:!1,meta:{constraints:{oneOf:["none","thumb-dark","thumb-light","debug-contrast","heatmap-depth","grid-paper"]},control:{options:[{value:"none",label:"None (mode-driven)"},{value:"thumb-dark",label:"Thumb Dark"},{value:"thumb-light",label:"Thumb Light"},{value:"debug-contrast",label:"Debug Contrast"},{value:"heatmap-depth",label:"Heatmap Depth"},{value:"grid-paper",label:"Grid Paper"}]}}},theme:{type:"group",required:!1}});exports.WireframeV3={id:(0,types_1.asTemplateId)("@m0saic/wireframe/base/v3"),version:3,capabilities:{tier:"core"},outputHints:{width:1920,height:1080,fps:30,durationMs:1e3,note:"Wireframe for documentation (layout visualization)",format:{kind:"image",container:"png",pixelFormat:"rgba"}},propsSchema,bindings:{unbound:{backgroundImageOpacity:"trace image (needs a background image)"}},defaultProps:{preset:"none",backgroundImageFit:"cover",M0String:DEFAULT_LAYOUT,mode:"debug",labelContent:"dimensions",labelOverflow:"degrade",unlabeledCells:"marks",background:"white",nullFrames:"hide",nullLabel:"null",fill:0},render(e,t){var l,o,i,d,f,m,u,p,v,g,n,s,a,c,h,k,M,y,S,D,q,H;if(e.preset==="none"){const{preset:b,..._}=e;e=_}const{M0String:z,labels:ue,cellColors:A}=e,N=e.labelsByStableKey?stableKeyLabelsToPositional(e.labelsByStableKey,z,t.target.width,t.target.height):void 0,ee=N??ue,te=(l=e.unlabeledCells)!==null&&l!==void 0?l:DEFAULT_UNLABELED_CELLS,r=!!e.preset||!!e.theme||e.mode==="thumb"?(0,wireframe_1.resolveTheme)(e):null,ne=(o=r?.useThumb)!==null&&o!==void 0?o:!1,oe=(0,template_utils_1.parseMosaicFrames)(z,t),$=[],B={},ce=((i=A?.length)!==null&&i!==void 0?i:0)>0,me=[{propKey:"fill"},{propKey:"backgroundImage"},...e.backgroundImage?[{propKey:"backgroundImageOpacity"}]:[]],le=x((b,_,C=[])=>(0,canvas_handles_1.withAddHandles)((0,template_utils_1.bindProp)(b,"labels",_-1),[...C,...me]),"bindCell"),U=x((b,_)=>le(b,_,[{propKey:"cellColors",index:_-1}]),"bindCompositeCell"),he=(0,template_utils_1.parseMosaicRenderFrames)(z,t),ie=new Map,ae=[];for(const b of he){const _=b.logicalIndex;_!=null&&ie.set(_,b.paintOrder),ae.push({z:b.paintOrder,x:b.x,y:b.y,w:b.width,h:b.height})}const G=e.preset==="debug-contrast"?18:14,K=(d=e.labelContent)!==null&&d!==void 0?d:DEFAULT_LABEL_CONTENT,j=(f=e.labelOverflow)!==null&&f!==void 0?f:DEFAULT_LABEL_OVERFLOW,fe=((m=e.nullFrames)!==null&&m!==void 0?m:DEFAULT_NULL_FRAMES)==="show",Z=Math.max(0,Math.min(1,(u=e.fill)!==null&&u!==void 0?u:0));let P=0,I=0;for(const b of oe)P=Math.max(P,b.x+b.width),I=Math.max(I,b.y+b.height);const V=r?.borderWidthFrac,X=V!=null&&V<=MAX_CANVAS_BORDER_FRAC?V:DEBUG_BORDER_FRAC,pe=Math.max(1,Math.round(Math.min(P,I)*X));let L=0;for(const b of oe){if(b.nullRender)continue;L+=1;const _=b.width,C=b.height;if(ne){let w=(p=r?.tileColor)!==null&&p!==void 0?p:"#141824";!((v=r?.heatmap)===null||v===void 0)&&v.enabled&&r.heatmap.shades.length>0?w=r.heatmap.shades[(L-1)%r.heatmap.shades.length]:r&&L%2===0&&(w=r.tileColorAlt);const T={rounding:(g=r?.rounding)!==null&&g!==void 0?g:{borderRadius:.04,cornerStyle:"rounded"},stroke:{width:(n=r?.borderWidthFrac)!==null&&n!==void 0?n:.0015,color:(s=r?.borderColor)!==null&&s!==void 0?s:"#ffffff",alpha:(a=r?.borderAlpha)!==null&&a!==void 0?a:.1,position:"inner"}};r?.dropShadow&&(T.dropShadow=r.dropShadow),$.push((0,template_utils_1.makeColorTile)(w,{effects:T}))}else{const w=(c=r?.borderColor)!==null&&c!==void 0?c:"#000000",T=cellLabelFor(ee,L,te),re=(k=ie.get((h=b.logicalIndex)!==null&&h!==void 0?h:-1))!==null&&k!==void 0?k:-1;let se=!1;if(re>=0){const E=labelLineRects({cellW:_,cellH:C,order:L,label:T,content:K,overflow:j,minTextSize:G});e:for(const R of E){const xe=b.x+R.x,_e=b.y+R.y;for(const O of ae)if(!(O.z<=re)&&rectsIntersect(xe,_e,R.w,R.h,O.x,O.y,O.w,O.h)){se=!0;break e}}}const ge=buildDebugCellMaskPath({cellW:_,cellH:C,order:L,label:T,content:K,overflow:j,borderPx:pe,minTextSize:G,suppressLabel:se}),de=(0,template_utils_1.makeColorTile)(w,{mask:{kind:"inline-mask",localPath:ge,bounds:{x:0,y:0,width:_,height:C},...Z>0?{matte:Z}:{}}}),F=ce&&(M=A?.[L-1])!==null&&M!==void 0?M:"",ke=!!(T&&T.trim());if(F&&F.trim()&&!ke)$.push(U((0,template_utils_1.makeColorTile)(F,{effects:{stroke:{width:X,color:w,alpha:.5,position:"inner"}}}),L));else if(F&&F.trim()){const E=`heatcell${L}`;B[E]={kind:"mosaic_document",version:1,assets:{},m0:"F{F}",size:{width:Math.max(1,Math.round(_)),height:Math.max(1,Math.round(C))},sources:[(0,template_utils_1.makeColorTile)(F),de],durationMs:1e3},$.push(U({type:"mosaic",ref:E},L))}else $.push(U(de,L))}}const ve=(y=e.background)!==null&&y!==void 0?y:DEFAULT_BACKGROUND,Y=(S=r?.backgroundColor)!==null&&S!==void 0?S:ve==="white"?"#ffffff":null,J={};let W;if(e.backgroundImage){const b=(0,types_1.asAssetId)("wireframe_background_image");J[b]=e.backgroundImage.startsWith("data:")?{kind:"data-uri",uri:e.backgroundImage,mediaType:"image"}:{kind:"file",path:e.backgroundImage,mediaType:"image"};const _=e.backgroundImageOpacity;W={assetId:b,..._!=null?{opacity:_}:{},...e.backgroundImageFit?{fit:e.backgroundImageFit}:{}}}if(fe){const b=t.output.width,_=t.output.height,C=buildLayerExplode({m0:z,canvasW:b,canvasH:_,fps:t.output.fps,useThumb:ne,resolved:r,labels:ee,unlabeledCells:te,labelContent:K,labelOverflow:j,borderPx:Math.max(1,Math.round(Math.min(b,_)*X)),minTextSize:G,fillAlpha:Z,bg:Y,assets:J,backgroundImage:W,nullLabel:(D=e.nullLabel)!==null&&D!==void 0?D:DEFAULT_NULL_LABEL,bindCell:x((w,T)=>le(w,T),"bindCell")});if(C)return Promise.resolve(C)}let Q=z;!((q=r?.paperGrid)===null||q===void 0)&&q.enabled&&($.push((0,paperGrid_1.makePaperGridSource)({width:P,height:I,ink:(H=r.borderColor)!==null&&H!==void 0?H:"#000000",stepFrac:r.paperGrid.stepFrac,alpha:r.paperGrid.alpha})),Q=(0,paperGrid_1.appendTopOverlay)(Q));const be={kind:"mosaic_document",version:1,assets:J,m0:(0,dsl_stdlib_1.toM0String)(Q,"Wireframe"),sources:$,format:{kind:"image",container:"png",pixelFormat:"rgba"},...Object.keys(B).length?{children:B}:{},...Y!=null?{backgroundColor:(0,template_utils_1.solidBackground)(Y)}:{},...W?{backgroundImage:W}:{}};return Promise.resolve(be)}},(0,template_utils_1.registerTemplate)(exports.WireframeV3);
@@ -1 +1 @@
1
- "use strict";var i=Object.defineProperty;var e=(r,t)=>i(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.AnimatedWireframe=exports.WireframeV1=exports.Wireframe=exports.WireframeV2=exports.WireframeCell=void 0;var wireframeCell_1=require("./utils/wireframeCell");Object.defineProperty(exports,"WireframeCell",{enumerable:!0,get:e(function(){return wireframeCell_1.WireframeCell},"get")});var v2_1=require("./base/v2");Object.defineProperty(exports,"WireframeV2",{enumerable:!0,get:e(function(){return v2_1.WireframeV2},"get")});var v1_1=require("./base/v1");Object.defineProperty(exports,"Wireframe",{enumerable:!0,get:e(function(){return v1_1.Wireframe},"get")}),Object.defineProperty(exports,"WireframeV1",{enumerable:!0,get:e(function(){return v1_1.Wireframe},"get")});var v1_2=require("./animated/v1");Object.defineProperty(exports,"AnimatedWireframe",{enumerable:!0,get:e(function(){return v1_2.AnimatedWireframe},"get")});
1
+ "use strict";var i=Object.defineProperty;var e=(r,t)=>i(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.AnimatedWireframe=exports.WireframeV1=exports.Wireframe=exports.WireframeV3=exports.WireframeV2=exports.WireframeCell=void 0;var wireframeCell_1=require("./utils/wireframeCell");Object.defineProperty(exports,"WireframeCell",{enumerable:!0,get:e(function(){return wireframeCell_1.WireframeCell},"get")});var v2_1=require("./base/v2");Object.defineProperty(exports,"WireframeV2",{enumerable:!0,get:e(function(){return v2_1.WireframeV2},"get")});var v3_1=require("./base/v3");Object.defineProperty(exports,"WireframeV3",{enumerable:!0,get:e(function(){return v3_1.WireframeV3},"get")});var v1_1=require("./base/v1");Object.defineProperty(exports,"Wireframe",{enumerable:!0,get:e(function(){return v1_1.Wireframe},"get")}),Object.defineProperty(exports,"WireframeV1",{enumerable:!0,get:e(function(){return v1_1.Wireframe},"get")});var v1_2=require("./animated/v1");Object.defineProperty(exports,"AnimatedWireframe",{enumerable:!0,get:e(function(){return v1_2.AnimatedWireframe},"get")});
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TEMPLATE_PACKS=exports.TEMPLATE_REPO=void 0;const types_1=require("@m0saic/types");exports.TEMPLATE_REPO={schemaVersion:1,repoId:(0,types_1.asRepoId)("m0saic/templates"),displayName:"m0saic Templates",description:"Official templates bundled with m0saic.",curator:"m0saic",assets:{templatesDir:"assets/templates"},helloWorld:(0,types_1.asTemplateId)("@m0saic/hello-world/v1")},exports.TEMPLATE_PACKS=[{id:"alpine",title:"Alpine Data Viz",description:"Friendly mobile-marketing chart pack \u2014 rounded cards, soft palette, clean type.",publisher:"m0saic"},{id:"web",title:"Web",description:"Privacy-preserving templates that translate anonymous webpage geometry into editable m0 visuals.",publisher:"m0saic"}];
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TEMPLATE_PACKS=exports.TEMPLATE_REPO=void 0;const types_1=require("@m0saic/types");exports.TEMPLATE_REPO={schemaVersion:1,repoId:(0,types_1.asRepoId)("m0saic/templates"),displayName:"m0saic Templates",description:"Official templates bundled with m0saic.",curator:"m0saic",assets:{templatesDir:"assets/templates"},helloWorld:(0,types_1.asTemplateId)("@m0saic/hello-world/v1"),conventions:"0.3.1"},exports.TEMPLATE_PACKS=[{id:"alpine",title:"Alpine Data Viz",description:"Friendly mobile-marketing chart pack \u2014 rounded cards, soft palette, clean type.",publisher:"m0saic"},{id:"web",title:"Web",description:"Privacy-preserving templates that translate anonymous webpage geometry into editable m0 visuals.",publisher:"m0saic"}];