m0saic 0.2.2 → 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.
- package/LICENSE +22 -7
- package/README.md +23 -5
- package/dist/browseE2e.js +1 -1
- package/dist/connectionsFromEnv.js +1 -1
- package/dist/e2eTemplateVariants.js +1 -1
- package/dist/frontDoor.js +1 -1
- package/dist/index.js +1 -1
- package/dist/inlineDsl.js +1 -1
- package/dist/mcp/bridgeClient.js +1 -0
- package/dist/mcp/server.js +1 -0
- package/dist/mcp/tools.js +1 -0
- package/dist/mosaicxRunner.js +1 -1
- package/dist/outputPattern.js +1 -1
- package/dist/showcaseFeed.js +1 -1
- package/dist/templateDoctor.js +1 -1
- package/dist/utils/checkFeasibility.js +1 -1
- package/dist/utils/collectRenderErrors.js +1 -1
- package/dist/utils/enrichImageAlphaFromDoc.js +1 -1
- package/dist/utils/ensureFfmpeg.js +1 -1
- package/dist/utils/extractLayoutMeta.js +1 -1
- package/dist/utils/failureHints.js +1 -1
- package/dist/utils/ffmpegProbe.js +1 -1
- package/dist/utils/formatM0saicForCli.js +1 -1
- package/dist/utils/hashFile.js +1 -1
- package/dist/utils/helpGroups.js +1 -1
- package/dist/utils/installContext.js +1 -0
- package/dist/utils/invocation.js +1 -1
- package/dist/utils/licenseActivation.js +1 -0
- package/dist/utils/licenseActivationWorker.js +1 -0
- package/dist/utils/mosaicSpinner.js +1 -1
- package/dist/utils/parseDimensions.js +1 -1
- package/dist/utils/pathInfo.js +1 -1
- package/dist/utils/readJsonArg.js +1 -1
- package/dist/utils/renderOutcome.js +1 -1
- package/dist/utils/renderReport.js +1 -1
- package/dist/utils/renderSignals.js +1 -1
- package/dist/utils/renderWorkspace.js +1 -1
- package/dist/utils/reportOutputFormat.js +1 -0
- package/dist/utils/setupFfmpeg.js +1 -1
- package/dist/utils/telemetry.js +1 -1
- package/dist/utils/telemetryFlushWorker.js +1 -1
- package/dist/utils/telemetryUpstream.js +1 -1
- package/dist/utils/telemetryUsage.js +1 -1
- package/dist/utils/toolchainConfig.js +1 -1
- package/dist/utils/tutorialDuration.js +1 -1
- package/dist/utils/updateCheck.js +1 -1
- package/dist/utils/updateCheckWorker.js +1 -1
- package/dist/utils/validateSourceCounts.js +1 -1
- package/dist/utils/versions.js +1 -1
- package/dist/webCustomizeLink.js +1 -1
- package/node_modules/@m0saic/community-m/NOTICE +9 -0
- package/node_modules/@m0saic/community-m/release.json +2 -2
- package/node_modules/@m0saic/core/dist/core/buildChildMosaicSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildChunkCommands.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildEncodeCommands.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildLavfiSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildMediaSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildMosaicNode.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildMosaicPlanFromFile.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildSvgTextSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildTextRenderCommand.js +1 -1
- package/node_modules/@m0saic/core/dist/core/collectRefTargets.js +1 -1
- package/node_modules/@m0saic/core/dist/core/index.js +1 -1
- package/node_modules/@m0saic/core/dist/core/maskCacheDir.js +1 -1
- package/node_modules/@m0saic/core/dist/core/maskWorkerBridge.js +1 -1
- package/node_modules/@m0saic/core/dist/core/playbackPlaySpeed.js +1 -1
- package/node_modules/@m0saic/core/dist/core/prepareProps.js +1 -1
- package/node_modules/@m0saic/core/dist/core/primaryOutput.js +1 -1
- package/node_modules/@m0saic/core/dist/core/rasterizeMaskPng.js +1 -1
- package/node_modules/@m0saic/core/dist/core/rasterizeSvgMediaPng.js +1 -1
- package/node_modules/@m0saic/core/dist/core/refTargetTap.js +1 -1
- package/node_modules/@m0saic/core/dist/core/resolveMasks.js +1 -1
- package/node_modules/@m0saic/core/dist/core/resolveMasksSync.js +1 -1
- package/node_modules/@m0saic/core/dist/core/resolveStrokeRingsSync.js +1 -1
- package/node_modules/@m0saic/core/dist/core/roundedRectMask.js +1 -1
- package/node_modules/@m0saic/core/dist/core/strokeRing.js +1 -1
- package/node_modules/@m0saic/core/dist/core/svgRaster.js +1 -1
- package/node_modules/@m0saic/core/dist/defaults.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/backgroundImageInput.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/bufferGuard.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/ffmpegCommands.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBackdropBlur.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBlur.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBorderRadius.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyCamera.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyChromaKey.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyFade.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyGrade.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyMask.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyNoise.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyPixelize.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyRotate.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyStroke.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyTileEffects.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/coverCrop.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/index.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/sourceRectCrop.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/gridLowering.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/index.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/splitAvMux.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/threadGuard.js +1 -1
- package/node_modules/@m0saic/core/dist/flatten/index.js +1 -1
- package/node_modules/@m0saic/core/dist/fs/index.js +1 -1
- package/node_modules/@m0saic/core/dist/fs/tempWorkspace.js +1 -1
- package/node_modules/@m0saic/core/dist/index.js +1 -1
- package/node_modules/@m0saic/core/dist/media/buildAssetManifestFromInputs.js +1 -1
- package/node_modules/@m0saic/core/dist/media/buildMediaRegistryFromInput.js +1 -1
- package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromInvocationProps.js +1 -1
- package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromMosaicRenderableFile.js +1 -1
- package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromProps.js +1 -1
- package/node_modules/@m0saic/core/dist/media/index.js +1 -1
- package/node_modules/@m0saic/core/dist/media/internalMintAsset.js +1 -1
- package/node_modules/@m0saic/core/dist/media/remoteUrl.js +1 -1
- package/node_modules/@m0saic/core/dist/media/stageUnsafeFilenames.js +1 -1
- package/node_modules/@m0saic/core/dist/media/types.js +1 -1
- package/node_modules/@m0saic/core/dist/output/index.js +1 -1
- package/node_modules/@m0saic/core/dist/output/resolveOutputFormat.js +1 -1
- package/node_modules/@m0saic/core/dist/output/types.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/cellLuminanceProbe.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/extractSubtitleCues.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/helpers.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/index.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/luminanceProbe.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/probeMedia.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/runFFprobe.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/types.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/engineRedaction.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/ffmpegFailure.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/filterPreflight.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/hashFile.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/index.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/pathInfo.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/perfHeatmap.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/perfReport.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/pipelineM0p.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderCostModel.constants.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderCostModel.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderReport.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderSidecars.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/resolveMosaicx.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/runPlan.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/types.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/upstream.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/writeSidecars.js +1 -1
- package/node_modules/@m0saic/core/dist/types/chunk.js +1 -1
- package/node_modules/@m0saic/core/dist/types/index.js +1 -1
- package/node_modules/@m0saic/core/dist/types/mosaic-plan.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/assertTiming.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/command.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/createEngineContext.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/createTemplateRenderCache.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/ffmpegColor.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/formatDuration.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/fsSafeId.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/index.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/lowerRenderableToMosaicDocument.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/movSafeCodec.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/resolveBoxFrac.js +1 -1
- package/node_modules/@m0saic/core/dist/validate/index.js +1 -1
- package/node_modules/@m0saic/core/scripts/mask-rasterize-core.js +1 -1
- package/node_modules/@m0saic/core/scripts/mask-rasterize-worker.js +1 -1
- package/node_modules/@m0saic/core/scripts/mask-worker-thread.js +1 -1
- package/node_modules/@m0saic/dictionary/NOTICE +9 -0
- package/node_modules/@m0saic/dictionary/README.md +315 -0
- package/node_modules/@m0saic/dictionary/package.json +1 -1
- package/node_modules/@m0saic/dsl/package.json +1 -1
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/agent.js +6 -0
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0/parseM0File.js +1 -1
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0/serializeM0File.js +2 -2
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0c/m0cFile.js +3 -3
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/types.js +1 -1
- package/node_modules/@m0saic/dsl-file-formats/package.json +1 -1
- package/node_modules/@m0saic/dsl-stdlib/dist/cjs/builders/bakeM0cInsets.js +1 -0
- package/node_modules/@m0saic/dsl-stdlib/dist/cjs/builders/index.js +1 -1
- package/node_modules/@m0saic/dsl-stdlib/package.json +1 -1
- package/node_modules/@m0saic/knowledge/LICENSE +21 -0
- package/node_modules/@m0saic/knowledge/README.md +71 -0
- package/node_modules/@m0saic/knowledge/dist/index.js +1 -0
- package/node_modules/@m0saic/knowledge/docs/README.md +60 -0
- package/node_modules/@m0saic/knowledge/docs/file-formats/m0-iteration-protocol.md +120 -0
- package/node_modules/@m0saic/knowledge/docs/file-formats/m0p-and-custom-field.md +195 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/README.md +27 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/composition-arithmetic.md +278 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/dsl-complexity.md +75 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/dsl-rules.md +367 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/feasibility-precision-quantization.md +591 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/m0-construction-methods.md +201 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/precision-tiers.md +84 -0
- package/node_modules/@m0saic/knowledge/docs/m0saic-thesis.md +95 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/README.md +24 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/agent-at-the-canvas.md +108 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/cli-usage.md +475 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/ffmpeg-expression-limits.md +117 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/reduce-to-one.md +96 -0
- package/node_modules/@m0saic/knowledge/docs/skills/README.md +40 -0
- package/node_modules/@m0saic/knowledge/docs/skills/axis-and-geometry.md +103 -0
- package/node_modules/@m0saic/knowledge/docs/skills/dsl-stdlib-method-catalog.md +7 -0
- package/node_modules/@m0saic/knowledge/docs/skills/identity.md +123 -0
- package/node_modules/@m0saic/knowledge/docs/skills/labels-and-masks.md +170 -0
- package/node_modules/@m0saic/knowledge/docs/skills/m0saic-string-generation.md +251 -0
- package/node_modules/@m0saic/knowledge/docs/skills/more-atoms-not-bigger-atoms.md +77 -0
- package/node_modules/@m0saic/knowledge/docs/skills/overlay-semantics.md +194 -0
- package/node_modules/@m0saic/knowledge/docs/skills/parse-apis.md +79 -0
- package/node_modules/@m0saic/knowledge/docs/skills/passthrough-semantics.md +136 -0
- package/node_modules/@m0saic/knowledge/docs/skills/structural-construction.md +86 -0
- package/node_modules/@m0saic/knowledge/docs/skills/text-in-templates.md +126 -0
- package/node_modules/@m0saic/knowledge/docs/skills/zero-overlay-analysis.md +87 -0
- package/node_modules/@m0saic/knowledge/docs/templates/README.md +65 -0
- package/node_modules/@m0saic/knowledge/docs/templates/capability-templates.md +72 -0
- package/node_modules/@m0saic/knowledge/docs/templates/construction-strategy.md +329 -0
- package/node_modules/@m0saic/knowledge/docs/templates/data-pipeline.md +324 -0
- package/node_modules/@m0saic/knowledge/docs/templates/emission-patterns.md +130 -0
- package/node_modules/@m0saic/knowledge/docs/templates/geometry-recipes.md +248 -0
- package/node_modules/@m0saic/knowledge/docs/templates/layout-contract.md +168 -0
- package/node_modules/@m0saic/knowledge/docs/templates/output-resolution-tree.md +210 -0
- package/node_modules/@m0saic/knowledge/docs/templates/patterns/case-study-lessons.md +69 -0
- package/node_modules/@m0saic/knowledge/docs/templates/patterns/perf-authoring-rules.md +100 -0
- package/node_modules/@m0saic/knowledge/docs/templates/patterns/primitive-extraction-pattern.md +103 -0
- package/node_modules/@m0saic/knowledge/docs/templates/philosophy-and-contract.md +310 -0
- package/node_modules/@m0saic/knowledge/docs/templates/recursion-nested-rendering.md +154 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/grid.md +104 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/json-prop-type.md +169 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/mosaic-color.md +81 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/mosaic-placement-props.md +103 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/prop-bindings.md +338 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/template-flags.md +236 -0
- package/node_modules/@m0saic/knowledge/docs/templates/render-lifecycle.md +117 -0
- package/node_modules/@m0saic/knowledge/docs/templates/rendering-model-contract.md +392 -0
- package/node_modules/@m0saic/knowledge/docs/templates/standalone-pack-authoring.md +309 -0
- package/node_modules/@m0saic/knowledge/docs/templates/theming.md +81 -0
- package/node_modules/@m0saic/knowledge/docs/templates/ui-controls.md +150 -0
- package/node_modules/@m0saic/knowledge/package.json +6 -0
- package/node_modules/@m0saic/momo-types/README.md +109 -0
- package/node_modules/@m0saic/momo-types/dist/agent.js +1 -6
- package/node_modules/@m0saic/momo-types/dist/context.js +1 -1
- package/node_modules/@m0saic/momo-types/package.json +1 -1
- package/node_modules/@m0saic/platform/README.md +3 -0
- package/node_modules/@m0saic/platform/dist/cjs/index.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/outputKind/outputKind.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/propBindings/index.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/propBindings/propBindings.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/validate/validateSources.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/packages/mosaicPackages.js +1 -0
- package/node_modules/@m0saic/platform/dist/cjs/paths/m0saicRoot.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/lifecycle.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/preview.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/sender.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/usageRecorder.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/usageStore.js +3 -3
- package/node_modules/@m0saic/platform/dist/cjs/template-repos/index.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/template-repos/loadTemplateRepoFromPath.js +4 -4
- package/node_modules/@m0saic/platform/dist/cjs/template-repos/templateCatalogSidecars.js +2 -0
- package/node_modules/@m0saic/platform/dist/cjs/templateCatalog/index.js +1 -0
- package/node_modules/@m0saic/platform/dist/cjs/templateCatalog/templateCatalog.js +1 -0
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/baseline.json +25 -97
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/index.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/install.js +2 -2
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/goldenFfmpeg.js +6 -6
- package/node_modules/@m0saic/platform/package.json +1 -1
- package/node_modules/@m0saic/product/dist/communityRelease.js +1 -1
- package/node_modules/@m0saic/product/dist/freeTierLicense.js +1 -1
- package/node_modules/@m0saic/product/dist/index.js +1 -1
- package/node_modules/@m0saic/product/dist/licenseActivationNotice.js +1 -0
- package/node_modules/@m0saic/product/dist/licenseFile.js +1 -0
- package/node_modules/@m0saic/product/dist/licenseToken.js +1 -1
- package/node_modules/@m0saic/product/dist/makeScratchPath.js +1 -0
- package/node_modules/@m0saic/product/dist/postRenderWrapper.js +1 -1
- package/node_modules/@m0saic/product/dist/publicKeys.js +1 -1
- package/node_modules/@m0saic/product/dist/revokedKeys.js +1 -1
- package/node_modules/@m0saic/product/dist/upstreamDefaults.js +1 -1
- package/node_modules/@m0saic/product/dist/workspaceScaffold.js +1 -0
- package/node_modules/@m0saic/template-utils/dist/brand/hello-world/helloWorld.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/geometry-contract/frameResolution.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/geometry-contract/index.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/geometry-contract/layoutConstraint.js +2 -2
- package/node_modules/@m0saic/template-utils/dist/m0saic/loadSession.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/render/createDesignContext.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/sources/makeErrorMosaic.js +2 -2
- package/node_modules/@m0saic/template-utils/dist/sources/svgTextSource.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/template/auditRenderedTemplate.js +5 -5
- package/node_modules/@m0saic/template-utils/dist/template/auditSchemaConventions.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/template/defineMosaicTemplate.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/template/resolveTemplateOutputHints.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/template/templateCatalogStore.js +1 -0
- package/node_modules/@m0saic/template-utils/dist/template/templateConventions.js +4 -4
- package/node_modules/@m0saic/template-utils/dist/template/templateRegistry.js +3 -3
- package/node_modules/@m0saic/template-utils/dist/template/validateTemplateProps.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/text/fitText.js +6 -6
- package/node_modules/@m0saic/template-utils/package.json +1 -1
- package/node_modules/@m0saic/templates/NOTICE +9 -0
- package/node_modules/@m0saic/templates/dist/catalog.js +1 -0
- package/node_modules/@m0saic/templates/dist/freeze.js +8 -8
- package/node_modules/@m0saic/templates/dist/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/_shared/canvas-handles.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/_shared/stand-in.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/v2/commit-feed.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/v2/trace-timeline.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/_shared/alpine-conventions.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/bar-graph/v2/bar-graph.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/bar-graph/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/commit-feed/v3/commit-feed.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/commit-feed/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/contributor-table/v2/contributor-table.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/contributor-table/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/donut/v4/donut.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/donut/v4/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/heatmap/v3/heatmap.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/heatmap/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/kpi-card/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/kpi-card/v3/kpi-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/leaderboard/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/leaderboard/v2/leaderboard.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/line-chart/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/line-chart/v3/line-chart.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/progress-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/progress-card/v2/progress-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/stat-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/stat-card/v2/stat-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/timeline/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/timeline/v3/timeline.js +4 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/treemap/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/treemap/v3/treemap.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/benchmark/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/benchmark/report/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/benchmark/report/v2/report.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/brand/business-card/v2/business-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/brand/business-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/brand/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/brand/logo/v4/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/brand/logo/v4/logo_runner.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/bar-graph/v3/bar-graph.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/bar-graph/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/donut/v5/donut.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/donut/v5/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/charts/line-chart/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/line-chart/v2/line-chart.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/stat-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/stat-card/v2/stat-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/code/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/code/snippet-morph/v2/snippet-morph.js +3 -0
- package/node_modules/@m0saic/templates/dist/m0saic/collage/image-collage/v2/image-collage.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/collage/image-collage/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/collage/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/v2/dsl-tutorial.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/v2/year-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/runner/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/runner/v2/runner.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/barcode/v2/barcode.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/barcode/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v1/tutorial.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v2/blur-regions.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/v2/highlights.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/v2/logo-animate.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/v2/metadata-stamp.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/qr/code/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/qr/code/v2/qr-code.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/qr/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/qr/stamp/v2/qr-stamp-custom.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/v3/screencap-grid.js +4 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/v2/screencap-grid-aspect-safe.js +3 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/v2/scroll-wall.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/v2/subtitle-burn.js +4 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/v2/trickplay.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/v2/video-to-png-sequence.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/v2/watermark.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/primitives/grid/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/primitives/grid/v3/grid.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/v2/quote-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/story/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/v2/narrated-chapters.js +4 -0
- package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/props.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/scrapbook.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/theming/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/theming/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/theming/v2/theming.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/web/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/web/page-skeleton/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/web/page-skeleton/v2/page-skeleton.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/wireframe/base/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/wireframe/base/v3/wireframe.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/wireframe/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/repo.js +1 -1
- package/node_modules/@m0saic/templates/dist/template-catalog.json +5429 -0
- package/node_modules/@m0saic/templates/dist/template-registry.js +1 -1
- package/node_modules/@m0saic/templates/dist/web.js +1 -1
- package/node_modules/@m0saic/templates/package.json +1 -1
- package/node_modules/@m0saic/templates/template-catalog.json +5429 -0
- package/node_modules/@m0saic/templates/template-manifest.json +1030 -286
- package/node_modules/@m0saic/templates/web-template-ids.json +38 -0
- package/node_modules/@m0saic/templates-advanced/NOTICE +9 -0
- package/node_modules/@m0saic/text/package.json +1 -1
- package/node_modules/@m0saic/types/dist/analytics/consent.js +1 -1
- package/node_modules/@m0saic/types/dist/analytics/event.js +1 -1
- package/node_modules/@m0saic/types/dist/analytics/usageMetrics.js +1 -1
- package/node_modules/@m0saic/types/dist/identifiers/identifiers.js +1 -1
- package/node_modules/@m0saic/types/dist/telemetry/ffmpegFailure.js +1 -1
- package/node_modules/@m0saic/types/dist/template/template.js +1 -1
- package/node_modules/@m0saic/types/package.json +1 -1
- package/node_modules/@m0saic/types-internal/dist/analytics/featureKeys.js +1 -1
- package/package.json +13 -11
- package/resources/starter-base/starter-base.json +10 -0
- package/resources/starter-base/starter-base.tgz +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var F=Object.defineProperty;var _=(n,e)=>F(n,"name",{value:e,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.QrStampCustomV2=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"),brandMCenter_1=require("../../_shared/brandMCenter"),onboarding_cover_1=require("../../../../_shared/onboarding-cover"),DEFAULTS={text:"https://www.m0saic.io",position:"br",sizePct:26,marginPct:2.2,mode:"auto",animation:"fade-in",moduleStyle:"circle",center:"m"},STAND_IN_CHILD_KEY="stand-in",propsSchema=(0,template_utils_1.definePropsSchema)({mediaPath:{type:"media",required:!0,meta:{control:{picker:"file",accept:["image","video"]}}},text:{type:"string",required:!1,meta:{control:{flavor:"url"}}},position:{type:"string",required:!1,meta:{constraints:{oneOf:["br","bl","tr","tl"]}}},sizePct:{type:"number",required:!1,meta:{constraints:{min:1,max:50}}},marginPct:{type:"number",required:!1,meta:{constraints:{min:0,max:25}}},mode:{type:"string",required:!1,meta:{constraints:{oneOf:["light","dark","transparent","auto"]}}},luminanceBuckets:{type:"json",required:!1},animation:{type:"string",required:!1,meta:{constraints:{oneOf:["none","fade-in"]}}},moduleStyle:{type:"string",required:!1,meta:{constraints:{oneOf:["square","roundedSquare","circle"]}}},center:{type:"string",required:!1,meta:{constraints:{oneOf:["m","asset","off"]}}},centerAsset:{type:"media",required:!1,meta:{ui:{visibleWhen:{prop:"center",equals:"asset"}},control:{picker:"file",accept:["image","video"]}}}});function assetCenterDoc(n,e,s){const a=(0,types_1.asAssetId)("qr_stamp_center"),i=(0,template_utils_1.determineMediaType)(n,e);return{kind:"mosaic_document",version:1,m0:"F",assets:{[a]:{kind:"file",path:n,mediaType:i}},sources:[{type:"media",mediaType:i,assetId:a,placement:{fit:"contain"}}],size:{width:template_utils_1.STYLED_QR_DEFAULTS.centerWidth,height:template_utils_1.STYLED_QR_DEFAULTS.centerHeight},...s!==void 0?{backgroundColor:(0,template_utils_1.solidBackground)(s)}:{}}}_(assetCenterDoc,"assetCenterDoc");function stampLook(n,e,s,a){const i=n==="square",r=e==="m"?t=>(0,brandMCenter_1.buildBrandMCenterDoc)({mColor:"#f97316",bgColor:t,width:template_utils_1.STYLED_QR_DEFAULTS.centerWidth,height:template_utils_1.STYLED_QR_DEFAULTS.centerHeight,label:"QrStampCustom"}):e==="asset"&&s?t=>assetCenterDoc(s,a,t):null;return{moduleBorderRadius:(0,template_utils_1.styledQrModuleRadius)(n),eyeOuterBorderRadius:i?0:template_utils_1.STYLED_QR_DEFAULTS.eyeOuterBorderRadius,eyeInnerDotBorderRadius:i?0:template_utils_1.STYLED_QR_DEFAULTS.eyeInnerDotBorderRadius,...r?{center:{width:template_utils_1.STYLED_QR_DEFAULTS.centerWidth,height:template_utils_1.STYLED_QR_DEFAULTS.centerHeight,paddingPct:template_utils_1.STYLED_QR_DEFAULTS.centerPaddingPct,docFor:r}}:{}}}_(stampLook,"stampLook");async function probeStampLuma(n,e,s,a,i){const r=i.analysis;if(!r)return;const t=i.media[(0,types_1.asAssetId)(n)];if(!t||!(t.width>0)||!(t.height>0)||t.kind!=="video"&&t.kind!=="image")return;const m=i.output.width,d=i.output.height,u=Math.min(m,d),p=s/100*u,o=a/100*u,c=e==="br"||e==="tr"?m-o-p:o,v=e==="br"||e==="bl"?d-o-p:o,l=Math.max(m/t.width,d/t.height),q=(t.width-m/l)/2,w=(t.height-d/l)/2,k=q+c/l,P=w+v/l,g=p/l,D=Math.max(0,(k-.05*g)/t.width),T=Math.max(0,(P-.05*g)/t.height),y={xPct:D,yPct:T,wPct:Math.min(1-D,1.1*g/t.width),hPct:Math.min(1-T,1.1*g/t.height)};try{const b=await r.regionLuminance(n,y,{bucketMs:500,smoothingMs:t.kind==="video"?1500:500});return b.buckets.length>0?b.buckets:void 0}catch{return}}_(probeStampLuma,"probeStampLuma"),exports.QrStampCustomV2=(0,template_utils_1.defineMosaicTemplate)({id:(0,types_1.asTemplateId)("@m0saic/media/qr/stamp/v2"),version:2,lattice:{mode:"bitmap"},capabilities:{tier:"capability",caps:{fs:{read:!0,write:!0,temp:!0}}},outputHints:{width:1920,height:1080,fps:30,durationMs:5e3,format:{kind:"video",container:"mp4"},posterTimeMs:1500},propsSchema,bindings:{unbound:{luminanceBuckets:"luminance override (programmatic; auto mode probes the footage itself)",centerAsset:"centre = asset (the stamp carries it then)"}},defaultProps:DEFAULTS,async render(n,e){var s,a,i,r,t,m,d,u,p,o,c,v,l;const q=(s=n.text)!==null&&s!==void 0?s:DEFAULTS.text,w=(a=n.position)!==null&&a!==void 0?a:DEFAULTS.position,k=(i=n.sizePct)!==null&&i!==void 0?i:DEFAULTS.sizePct,P=(r=n.marginPct)!==null&&r!==void 0?r:DEFAULTS.marginPct,g=(t=n.mode)!==null&&t!==void 0?t:DEFAULTS.mode,D=(m=n.animation)!==null&&m!==void 0?m:DEFAULTS.animation,T=(d=n.moduleStyle)!==null&&d!==void 0?d:DEFAULTS.moduleStyle,y=(u=n.center)!==null&&u!==void 0?u:DEFAULTS.center,b=((p=n.centerAsset)===null||p===void 0?void 0:p.trim())||void 0;if(y==="asset"&&!b)return(0,template_utils_1.makeErrorMosaic)("QrStampCustom: Centre is 'asset' but no centre asset was given \u2014 pick an image or video, or switch Centre to 'm' / 'off'.",{title:"QR Stamp",width:e.target.width,height:e.target.height});const h=((o=n.mediaPath)===null||o===void 0?void 0:o.trim())||void 0,A=h?void 0:(0,stand_in_1.mediaStandInDocument)({width:e.output.width,height:e.output.height,name:"QR Stamp",title:"Drop an image or video here",hint:"It comes back with this QR in its corner.",handles:[{propKey:"mediaPath"}],fps:e.target.fps,durationMs:e.target.durationMs,nested:!0}),Q=h?(0,template_utils_1.determineMediaType)(h,e):"image",M=(0,types_1.asAssetId)("qr_stamp_custom_base"),L=h?{[M]:{kind:"file",path:h,mediaType:Q}}:{},C=h?(0,template_utils_1.bindProps)({type:"media",mediaType:Q,assetId:M,placement:{fit:"cover"}},[{propKey:"mediaPath"}]):(0,stand_in_1.markIncomplete)((0,template_utils_1.bindProps)({type:"mosaic",ref:STAND_IN_CHILD_KEY},[{propKey:"mediaPath"}]),"QR Stamp: drop the image or video to stamp"),R={kind:"mosaic_document",version:1,m0:"F",sources:[C],assets:L,size:{width:e.output.width,height:e.output.height}},E=(c=n.luminanceBuckets)!==null&&c!==void 0?c:g==="auto"&&h?await probeStampLuma(h,w,k,P,e):void 0;let S;try{S=(0,template_utils_1.stampQrOnMedia)({baseDoc:R,text:q,position:w,sizePct:k/100,marginPct:P/100,mode:!h&&g==="auto"?"light":g,...E?{luminanceBuckets:E}:{},animation:D,qr:stampLook(T,y,b,e),canvasW:e.output.width,canvasH:e.output.height})}catch(f){return(0,template_utils_1.makeErrorMosaic)(`QrStampCustom: ${f instanceof Error?f.message:String(f)}`,{title:"QR Stamp",width:e.target.width,height:e.target.height})}const I=[{propKey:"text"},{propKey:"sizePct"},{propKey:"marginPct"},...y==="asset"?[{propKey:"centerAsset"}]:[]];for(const f of(v=S.sources)!==null&&v!==void 0?v:[])f!==C&&f.type==="mosaic"&&(0,canvas_handles_1.withAddHandles)(f,I);return A?{...S,children:{...(l=S.children)!==null&&l!==void 0?l:{},[STAND_IN_CHILD_KEY]:A},backgroundColor:A.backgroundColor,audio:{mode:"off"}}:S}}),exports.QrStampCustomV2.renderCover=_(async function(e,s){var a,i;const r=(0,onboarding_cover_1.brandedCoverHeroBox)(s,"band"),t=typeof process<"u"&&!!(!((a=process.versions)===null||a===void 0)&&a.node),m=_(c=>c.includes("/app.asar/")?c.split("/app.asar/").join("/app.asar.unpacked/"):c.split("\\app.asar\\").join("\\app.asar.unpacked\\"),"unpackedAsar"),d=(0,types_1.asAssetId)("qr-stamp-cover-frame"),u=t?{[d]:{kind:"file",path:m(`${__dirname}/../v1/assets/cover-frame.jpg`),mediaType:"image"}}:{},p={kind:"mosaic_document",version:1,m0:"F",sources:[t?{type:"media",mediaType:"image",assetId:d,placement:{fit:"cover"}}:{type:"lavfi",color:"#21262d"}],assets:u,size:{width:r.width,height:r.height}},o=(0,template_utils_1.stampQrOnMedia)({baseDoc:p,text:DEFAULTS.text,position:DEFAULTS.position,sizePct:DEFAULTS.sizePct/100,marginPct:DEFAULTS.marginPct/100,mode:"light",animation:"none",canvasW:r.width,canvasH:r.height});return(0,onboarding_cover_1.buildBrandedCover)({ctx:s,variant:"band",copy:{productName:"QR Stamp",title:"A scannable corner stamp on your media."},hero:_(c=>(0,onboarding_cover_1.onboardingFrame)((0,onboarding_cover_1.inlineHeroDoc)(o),c.borderStrong),"hero"),heroAssets:{...u,...(i=o.assets)!==null&&i!==void 0?i:{}},children:o.children})},"renderCover"),(0,template_utils_1.registerTemplate)(exports.QrStampCustomV2),exports.default=exports.QrStampCustomV2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var t=Object.defineProperty;var e=(r,n)=>t(r,"name",{value:n,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.InfoPane=exports.ScreencapGridV2=exports.ScreencapGrid=void 0;var v1_1=require("./v1");Object.defineProperty(exports,"ScreencapGrid",{enumerable:!0,get:e(function(){return v1_1.ScreencapGrid},"get")});var v2_1=require("./v2");Object.defineProperty(exports,"ScreencapGridV2",{enumerable:!0,get:e(function(){return v2_1.ScreencapGridV2},"get")});var internal_1=require("./internal");Object.defineProperty(exports,"InfoPane",{enumerable:!0,get:e(function(){return internal_1.InfoPane},"get")});
|
|
1
|
+
"use strict";var t=Object.defineProperty;var e=(r,n)=>t(r,"name",{value:n,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.InfoPane=exports.ScreencapGridV3=exports.ScreencapGridV2=exports.ScreencapGrid=void 0;var v1_1=require("./v1");Object.defineProperty(exports,"ScreencapGrid",{enumerable:!0,get:e(function(){return v1_1.ScreencapGrid},"get")});var v2_1=require("./v2");Object.defineProperty(exports,"ScreencapGridV2",{enumerable:!0,get:e(function(){return v2_1.ScreencapGridV2},"get")});var v3_1=require("./v3");Object.defineProperty(exports,"ScreencapGridV3",{enumerable:!0,get:e(function(){return v3_1.ScreencapGridV3},"get")});var internal_1=require("./internal");Object.defineProperty(exports,"InfoPane",{enumerable:!0,get:e(function(){return internal_1.InfoPane},"get")});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var t=Object.defineProperty;var e=(r,c)=>t(r,"name",{value:c,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScreencapGridV3=void 0;var screencap_grid_1=require("./screencap-grid");Object.defineProperty(exports,"ScreencapGridV3",{enumerable:!0,get:e(function(){return screencap_grid_1.ScreencapGridV3},"get")});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";var le=Object.defineProperty;var a=(e,t)=>le(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScreencapGridV3=exports.bColor=exports.bEnum=exports.bNum=exports.bBool=void 0,exports.paneLineEmBudget=paneLineEmBudget,exports.ellipsizeMiddleEm=ellipsizeMiddleEm,exports.computeGridTileRects=computeGridTileRects,exports.timestampChipRect=timestampChipRect,exports.tightTimestampSource=tightTimestampSource,exports.customGridTileInset=customGridTileInset,exports.renderScreencapGridV3=renderScreencapGridV3;const types_1=require("@m0saic/types"),dsl_stdlib_1=require("@m0saic/dsl-stdlib"),dsl_1=require("@m0saic/dsl"),template_utils_1=require("@m0saic/template-utils"),screencap_grid_cover_1=require("../v2/screencap-grid-cover"),screencap_grid_tutorial_1=require("../v2/screencap-grid-tutorial"),info_pane_1=require("../internal/info_pane"),screencap_grid_1=require("../v1/screencap-grid"),SCREENCAP_GRID_V3_ID="@m0saic/media/screencap_grid/v3",bBool=a(()=>({type:"boolean",required:!1}),"bBool");exports.bBool=bBool;const bNum=a((e,t)=>({type:"number",required:!1,...e||t?{meta:{...t?{constraints:t}:{},...e?{control:e}:{}}}:{}}),"bNum");exports.bNum=bNum;const bEnum=a(e=>({type:"string",required:!1,meta:{constraints:{oneOf:e}}}),"bEnum");exports.bEnum=bEnum;const bColor=a(()=>({type:"string",required:!1,meta:{control:{colorPicker:!0},constraints:{isColor:!0}}}),"bColor");exports.bColor=bColor;const propsSchema=(0,template_utils_1.definePropsSchema)({sourceIds:{type:"media[]",required:!0,meta:{control:{multiple:!0,picker:"folder",accept:["video"]}}},outputFormat:{type:"string",required:!1,meta:{constraints:{oneOf:["png","mp4"]}}},rows:{type:"number",required:!1,meta:{constraints:{min:1,max:20}}},cols:{type:"number",required:!1,meta:{constraints:{min:1,max:20}}},infoPane:{type:"group",required:!1,fields:{show:(0,exports.bBool)(),align:(0,exports.bEnum)(["left","center","right"])}},timestamps:{type:"group",required:!1,fields:{show:(0,exports.bBool)(),corner:(0,exports.bEnum)(["tl","tr","bl","br"]),color:(0,exports.bColor)(),bgColor:(0,exports.bColor)()}},tiles:{type:"group",required:!1,fields:{gapPx:(0,exports.bNum)({flavor:"slider",step:1,unit:"px"},{min:0,max:40}),fit:(0,exports.bEnum)(["cover","contain"])}},advanced:{type:"group",required:!1,fields:{customGrid:{type:"m0",required:!1}}},debugGeometry:{type:"boolean",required:!1}}),PANE_PAD_X=.015,EM_WIDTH_RATIO=.62;function paneLineEmBudget(e,t){return e*(1-2*PANE_PAD_X)/(t*EM_WIDTH_RATIO)}a(paneLineEmBudget,"paneLineEmBudget");function ellipsizeMiddleEm(e,t){if((0,template_utils_1.textEmUnits)(e)<=t+.5)return e;const n=[...e],o=n.slice(-10),s=(0,template_utils_1.textEmUnits)(o.join(""));let l="",c=1+s;for(const d of n){const i=(0,template_utils_1.textEmUnits)(d);if(c+i>t)break;l+=d,c+=i}return`${l}\u2026${o.join("")}`}a(ellipsizeMiddleEm,"ellipsizeMiddleEm");function computeGridTileRects(e){const{canvasW:t,canvasH:n,paneHeightPx:o,rows:s,cols:l,tileGapPx:c}=e,d=n-o,i=Array.from({length:l+1},(u,v)=>Math.round(v*t/l)),m=Array.from({length:s+1},(u,v)=>o+Math.round(v*d/s)),x=a(u=>Math.min(...u.slice(1).map((v,S)=>v-u[S])),"minSpan"),y=Math.max(0,Math.min(c,x(i)-1)),r=Math.max(0,Math.min(c,x(m)-1)),g=a(u=>Math.floor(u/2),"lead"),h=a(u=>Math.ceil(u/2),"trail"),w=[];for(let u=0;u<s;u++){const v=m[u]+(u>0?g(r):0),S=m[u+1]-(u<s-1?h(r):0);for(let T=0;T<l;T++){const E=i[T]+(T>0?g(y):0),A=i[T+1]-(T<l-1?h(y):0);w.push({x:E,y:v,w:A-E,h:S-v})}}return w}a(computeGridTileRects,"computeGridTileRects");const INSET_CAP=.49,CHIP_FONT_PX=18,CHIP_PLATE_PX=6,CHIP_PAD_X_FRAC=.02,CHIP_PAD_Y_FRAC=.03,CHIP_WIDEST_TEXT="00:00:00.000";function timestampChipRect(e,t){const n=(0,template_utils_1.measureText)(CHIP_WIDEST_TEXT,{fontSize:CHIP_FONT_PX}),o=Math.min(e.w,Math.ceil(n.width)+2*CHIP_PLATE_PX+2),s=Math.min(e.h,Math.ceil(n.height)+2*CHIP_PLATE_PX),l=Math.max(0,Math.round(e.w*CHIP_PAD_X_FRAC)-CHIP_PLATE_PX),c=Math.max(0,Math.round(e.h*CHIP_PAD_Y_FRAC)-CHIP_PLATE_PX),d=t==="tr"||t==="br",i=t==="bl"||t==="br";return{x:d?e.x+e.w-l-o:e.x+l,y:i?e.y+e.h-c-s:e.y+c,w:o,h:s}}a(timestampChipRect,"timestampChipRect");function tightTimestampSource(e){var t;const n=((t=e.layers)!==null&&t!==void 0?t:[]).map(o=>({...o,placement:{hAlign:"center",vAlign:"middle"}}));return{...e,layers:n}}a(tightTimestampSource,"tightTimestampSource");function customGridTileInset(e,t,n,o){if(t<=0||e.width<=0||e.height<=0)return;const s=Math.floor(t/2),l=Math.ceil(t/2);let c=e.x>0?s:0,d=e.x+e.width<n?l:0,i=e.y>0?s:0,m=e.y+e.height<o?l:0;const x=a((r,g)=>r===0?0:(r+.5)/g,"frac"),y=a((r,g,h)=>r+g<h&&x(r,h)<=INSET_CAP&&x(g,h)<=INSET_CAP,"axisOk");if(y(c,d,e.width)||(c=0,d=0),y(i,m,e.height)||(i=0,m=0),!(c===0&&d===0&&i===0&&m===0))return{top:x(i,e.height),right:x(d,e.width),bottom:x(m,e.height),left:x(c,e.width)}}a(customGridTileInset,"customGridTileInset");function resolveMode(e){return e.outputFormat==="mp4"?"animated":"static"}a(resolveMode,"resolveMode");function formatForMode(e){return e==="animated"?{kind:"video",container:"mp4"}:{kind:"image",container:"png"}}a(formatForMode,"formatForMode");function resolveInputs(e){return e.sourceIds&&e.sourceIds.length>0?e.sourceIds:[]}a(resolveInputs,"resolveInputs");function resolveV2Knobs(e){var t,n,o,s,l,c,d,i,m,x,y,r,g,h,w,u,v,S,T,E,A,H,D,_,b,P,q;const p=e,N=(n=(t=e.tiles)===null||t===void 0?void 0:t.gapPx)!==null&&n!==void 0?n:p.tileGapPx,F=typeof p.tileGap=="number"&&p.tileGap>0?Math.round(p.tileGap*480):void 0;return{rows:(o=e.rows)!==null&&o!==void 0?o:4,cols:(s=e.cols)!==null&&s!==void 0?s:4,withInfoPane:(d=(c=(l=e.infoPane)===null||l===void 0?void 0:l.show)!==null&&c!==void 0?c:p.withInfoPane)!==null&&d!==void 0?d:!0,headerAlign:(x=(m=(i=e.infoPane)===null||i===void 0?void 0:i.align)!==null&&m!==void 0?m:p.headerAlign)!==null&&x!==void 0?x:"left",withTileTimestamp:(g=(r=(y=e.timestamps)===null||y===void 0?void 0:y.show)!==null&&r!==void 0?r:p.withTileTimestamp)!==null&&g!==void 0?g:!0,timestampCorner:(u=(w=(h=e.timestamps)===null||h===void 0?void 0:h.corner)!==null&&w!==void 0?w:p.timestampCorner)!==null&&u!==void 0?u:"br",timestampColor:(T=(S=(v=e.timestamps)===null||v===void 0?void 0:v.color)!==null&&S!==void 0?S:p.timestampColor)!==null&&T!==void 0?T:"#ffffff",timestampBgColor:(H=(A=(E=e.timestamps)===null||E===void 0?void 0:E.bgColor)!==null&&A!==void 0?A:p.timestampBgColor)!==null&&H!==void 0?H:"#000000",tileGapPx:typeof N=="number"&&N>=0?N:F??2,tileFit:(b=(_=(D=e.tiles)===null||D===void 0?void 0:D.fit)!==null&&_!==void 0?_:p.tileFit)!==null&&b!==void 0?b:"cover",customGridRaw:(q=(P=e.advanced)===null||P===void 0?void 0:P.customGrid)!==null&&q!==void 0?q:p.customGrid}}a(resolveV2Knobs,"resolveV2Knobs");function resolveCustomGrid(e){if(!e)return null;const t=e.split(`
|
|
2
|
+
`).map(n=>n.trim()).filter(n=>n.length>0&&!n.startsWith("#")).join("");return t.length>0?t:null}a(resolveCustomGrid,"resolveCustomGrid");async function renderScreencapGridV3(e,t){const n=resolveMode(e),o=resolveInputs(e);return o.length===0?renderScreencapGridForInput(null,0,e,t,n):o.length===1?renderScreencapGridForInput(o[0],0,e,t,n):buildMultiInputPipeline(o,e,t,n)}a(renderScreencapGridV3,"renderScreencapGridV3");async function buildMultiInputPipeline(e,t,n,o){var s;const l=(0,template_utils_1.buildStepNames)(e),c=o==="animated"?(s=n.target.durationMs)!==null&&s!==void 0?s:5e3:40,d=[];for(let i=0;i<e.length;i++){const m=await renderScreencapGridForInput(e[i],i,t,n,o);d.push({name:l[i],label:l[i],durationMs:c,file:m})}return{kind:"mosaic_pipeline",version:1,emit:"multi",steps:d}}a(buildMultiInputPipeline,"buildMultiInputPipeline");async function renderScreencapGridForInput(e,t,n,o,s){var l,c,d;const i=e===null,m=e??"",x=(0,types_1.asAssetId)(m),y=(0,types_1.asAssetId)((0,template_utils_1.slugifyAssetKeyFromPath)(m)),r=i?void 0:o.media[x],{rows:g,cols:h,withInfoPane:w,headerAlign:u,withTileTimestamp:v,timestampCorner:S,timestampColor:T,timestampBgColor:E,tileGapPx:A,tileFit:H,customGridRaw:D}=resolveV2Knobs(n),_=o.target.width,b=o.target.height,P=resolveCustomGrid(D);if(P&&!(0,dsl_1.isValidM0String)(P))return(0,template_utils_1.makeErrorMosaic)("Custom Grid is not a valid m0 string.",{title:"Screencap Grid",width:_,height:b});const q={};let p=0,N="",F="";if(w){const f=i?{title:STAND_IN_TITLE,metadata:STAND_IN_HINT,metaLineCount:1}:r?(0,screencap_grid_1.formatInfoLines)(m,r):{title:`No metadata for sourceId=${m}`,metadata:"",metaLineCount:0},I=Math.max(.03,Math.min(.25,(0,screencap_grid_1.estimateInfoPaneHeight)(b,f.metaLineCount)/b));p=Math.max(1,Math.round(b*I));const M=((l=f.title.split("/").pop())===null||l===void 0?void 0:l.split("\\").pop())||f.title;N=ellipsizeMiddleEm(M,paneLineEmBudget(_,(0,screencap_grid_1.infoPaneTitleFontSize)(b)));const k=paneLineEmBudget(_,(0,screencap_grid_1.infoPaneMetaFontSize)(b));F=f.metadata.split(`
|
|
3
|
+
`).map(C=>(0,template_utils_1.textEmUnits)(C)<=k+.5?C:(0,template_utils_1.fitEmUnits)(C,k)).join(`
|
|
4
|
+
`)}const B=b-p;if(!P&&(B<g||_<h))return(0,template_utils_1.makeErrorMosaic)(`Canvas ${_}\xD7${b} is too small for a ${g}\xD7${h} grid${w?" below the info pane":""}.`,{title:"Screencap Grid",width:_,height:b});if(w){const f=await(0,template_utils_1.renderNestedTemplate)(info_pane_1.INFO_PANE_TEMPLATE_ID,{title:N,metadata:F,paneHeight:p,align:u},o,{slot:{width:_,height:b}});q["info-pane"]=f}const V=r?.kind==="video"&&r.durationMs!=null&&r.durationMs>0,R=V||i,z=V?r.durationMs:STAND_IN_DURATION_MS,U=r?.kind==="video"?"video":r?.kind==="audio"?"audio":"image",ie=Math.max(1,Math.round(1e3/((d=(c=r?.fps)!==null&&c!==void 0?c:o.target.fps)!==null&&d!==void 0?d:30))),j={type:"mosaic",ref:"info-pane",placement:{fit:"cover",focusY:0}},W=[{propKey:"sourceIds",index:t},...P?[]:[{propKey:"rows"},{propKey:"cols"}],{propKey:"tiles.gapPx"}];let ne=0;const X=a((f,I)=>{const M=ne++;if(i){const k=P?M:Math.floor(M/Math.max(1,h))+M%Math.max(1,h),C=(0,template_utils_1.makeColorTile)(STAND_IN_TILES[k%STAND_IN_TILES.length],I?{placement:{inset:I}}:void 0);return M===0&&(C.engine={renderStatus:"incomplete",renderError:{message:`Screencap Grid: ${STAND_IN_TITLE}`}}),(0,template_utils_1.bindProps)((0,template_utils_1.tag)(C,"tile"),W)}return(0,template_utils_1.bindProps)({type:"media",mediaType:U,assetId:y,placement:{fit:H,...I?{inset:I}:{}},...V?{playback:s==="animated"?{clipStartMs:f}:{clipStartMs:f,clipDurationMs:ie,loopMode:"freeze"},audio:{enabled:!1}}:{},editor:{owner:"template",label:"tile"}},W)},"mediaTileSource"),O=a(f=>(0,template_utils_1.bindProps)((0,template_utils_1.tag)((0,screencap_grid_1.buildTimestampSource)({t:f,mode:i?"static":s,isVideo:R,corner:S,color:T,bgColor:E}),"timestamp"),[{propKey:"timestamps.color"},{propKey:"timestamps.bgColor"}]),"timestampSource"),Y=i?{}:{[y]:{kind:"file",path:m,mediaType:U}},J=formatForMode(s);if(P){const f=(0,dsl_1.parseM0StringToRenderFrames)(P,_,B),I=new Map;for(const G of f)I.set(G.logicalIndex,{x:G.x,y:G.y,width:G.width,height:G.height});const M=f.length,k=R?(0,screencap_grid_1.computeTimestamps)(M,z):[],C=[];w&&C.push(j);for(let G=0;G<M;G++){const ee=R?k[G]:0,te=I.get(G),$=te?customGridTileInset(te,A,_,B):void 0;if(C.push(X(ee,$)),v){const oe=O(ee);C.push($?{...oe,placement:{inset:$}}:oe)}}const ae=(0,screencap_grid_1.assembleScreencapM0)({rows:g,cols:h,paneHeightPx:p,gridH:B,withTileTimestamp:v,gridM0:P});return{kind:"mosaic_document",version:1,sources:C,assets:Y,m0:(0,dsl_stdlib_1.toM0String)(ae,"ScreencapGrid"),children:q,format:J,...s==="animated"?{audio:{mode:"off"}}:{}}}const Q=computeGridTileRects({canvasW:_,canvasH:b,paneHeightPx:p,rows:g,cols:h,tileGapPx:A}),Z=Q.length,re=R?(0,screencap_grid_1.computeTimestamps)(Z,z):[],L=[];w&&L.push({rect:{x:0,y:0,w:_,h:p},source:j});for(let f=0;f<Z;f++){const I=R?re[f]:0,M=Q[f];L.push({rect:{x:M.x,y:M.y,w:M.w,h:M.h},source:X(I)}),v&&L.push({rect:{...timestampChipRect(M,S),importance:1},source:tightTimestampSource(O(I))})}const K=(0,template_utils_1.placeInsetPieces)({rootW:_,rootH:b,pieces:L}),se={kind:"mosaic_document",version:1,sources:K.sources,assets:Y,m0:K.m0,children:q,format:J,...s==="animated"?{audio:{mode:"off"}}:{}};return(0,template_utils_1.withGeometryContract)(se,o,{templateId:SCREENCAP_GRID_V3_ID,expectations:K.expectations,debug:n.debugGeometry===!0})}a(renderScreencapGridForInput,"renderScreencapGridForInput");const STAND_IN_TITLE="Drop a video here",STAND_IN_HINT="Its frames fill this grid. Files, a folder, or drag and drop.",STAND_IN_TILES=["#1c212b","#232a36"],STAND_IN_DURATION_MS=96e3,SHARED_DEFAULTS={outputFormat:"png",rows:4,cols:4,infoPane:{show:!0,align:"left"},timestamps:{show:!0,corner:"br",color:"#ffffff",bgColor:"#000000"},tiles:{gapPx:2,fit:"cover"}};exports.ScreencapGridV3={id:(0,types_1.asTemplateId)(SCREENCAP_GRID_V3_ID),version:3,capabilities:{tier:"core"},propsSchema,outputHints:{format:{kind:"image",container:"png"},width:1920,height:1080,fps:30,durationMs:5e3},defaultProps:{debugGeometry:!1,...SHARED_DEFAULTS},render(e,t){return renderScreencapGridV3(e,t)},renderCover(e,t){return(0,screencap_grid_cover_1.renderScreencapGridV2Cover)(t)},renderTutorial(e,t){return(0,screencap_grid_tutorial_1.renderScreencapGridV2Tutorial)(t)}},(0,template_utils_1.registerTemplate)(exports.ScreencapGridV3);
|
package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var c=Object.defineProperty;var e=(r,t)=>c(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScreencapGridAspectSafe=void 0;var v1_1=require("./v1");Object.defineProperty(exports,"ScreencapGridAspectSafe",{enumerable:!0,get:e(function(){return v1_1.ScreencapGridAspectSafe},"get")});
|
|
1
|
+
"use strict";var c=Object.defineProperty;var e=(r,t)=>c(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScreencapGridAspectSafeV2=exports.ScreencapGridAspectSafe=void 0;var v1_1=require("./v1");Object.defineProperty(exports,"ScreencapGridAspectSafe",{enumerable:!0,get:e(function(){return v1_1.ScreencapGridAspectSafe},"get")});var v2_1=require("./v2");Object.defineProperty(exports,"ScreencapGridAspectSafeV2",{enumerable:!0,get:e(function(){return v2_1.ScreencapGridAspectSafeV2},"get")});
|
package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/v2/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var t=Object.defineProperty;var e=(r,c)=>t(r,"name",{value:c,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScreencapGridAspectSafeV2=void 0;var screencap_grid_aspect_safe_1=require("./screencap-grid-aspect-safe");Object.defineProperty(exports,"ScreencapGridAspectSafeV2",{enumerable:!0,get:e(function(){return screencap_grid_aspect_safe_1.ScreencapGridAspectSafeV2},"get")});
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";var Q=Object.defineProperty;var h=(e,a)=>Q(e,"name",{value:a,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScreencapGridAspectSafeV2=exports.CELL_SHAPE_RATIOS=void 0,exports.targetShapeDistance=targetShapeDistance,exports.enumerateAspectSafePairs=enumerateAspectSafePairs,exports.renderScreencapGridAspectSafe=renderScreencapGridAspectSafe;const types_1=require("@m0saic/types"),dsl_stdlib_1=require("@m0saic/dsl-stdlib"),template_utils_1=require("@m0saic/template-utils"),screencap_grid_1=require("../../screencap_grid/v1/screencap-grid"),screencap_grid_2=require("../../screencap_grid/v3/screencap-grid"),info_pane_1=require("../../screencap_grid/internal/info_pane"),screencap_grid_aspect_safe_cover_1=require("../v1/screencap-grid-aspect-safe-cover"),screencap_grid_aspect_safe_tutorial_1=require("../v1/screencap-grid-aspect-safe-tutorial"),ASPECT_SAFE_ID="@m0saic/media/screencap_grid_aspect_safe/v2";exports.CELL_SHAPE_RATIOS={landscape:16/9,square:1,portrait:9/16};const propsSchema=(0,template_utils_1.definePropsSchema)({sourceIds:{type:"media[]",required:!0,meta:{control:{multiple:!0,picker:"folder",accept:["video"]}}},outputFormat:{type:"string",required:!1,meta:{constraints:{oneOf:["png","mp4"]}}},cellShape:{type:"string",required:!1,meta:{constraints:{oneOf:["landscape","square","portrait"]}}},gridChoice:{type:"number",required:!1,meta:{constraints:{min:0,max:24},control:{flavor:"slider",step:1}}},search:{type:"group",required:!1,fields:{cellAspect:(0,screencap_grid_2.bNum)(void 0,{min:.1,max:10}),minCells:(0,screencap_grid_2.bNum)(void 0,{min:1,max:64}),maxCells:(0,screencap_grid_2.bNum)(void 0,{min:1,max:64})}},canvas:{type:"group",required:!1,fields:{landscapeW:(0,screencap_grid_2.bNum)(void 0,{min:16,max:8192}),landscapeH:(0,screencap_grid_2.bNum)(void 0,{min:16,max:8192}),portraitW:(0,screencap_grid_2.bNum)(void 0,{min:16,max:8192}),portraitH:(0,screencap_grid_2.bNum)(void 0,{min:16,max:8192})}},infoPane:{type:"group",required:!1,fields:{show:(0,screencap_grid_2.bBool)(),align:(0,screencap_grid_2.bEnum)(["left","center","right"])}},timestamps:{type:"group",required:!1,fields:{show:(0,screencap_grid_2.bBool)(),corner:(0,screencap_grid_2.bEnum)(["tl","tr","bl","br"]),color:(0,screencap_grid_2.bColor)(),bgColor:(0,screencap_grid_2.bColor)()}},tiles:{type:"group",required:!1,fields:{gapPx:(0,screencap_grid_2.bNum)({flavor:"slider",step:1,unit:"px"},{min:0,max:40}),fit:(0,screencap_grid_2.bEnum)(["cover","contain"])}},debugGeometry:{type:"boolean",required:!1}}),SHARED_DEFAULTS={outputFormat:"png",cellShape:"landscape",gridChoice:0,search:{minCells:4,maxCells:32},canvas:{landscapeW:1920,landscapeH:1080,portraitW:1080,portraitH:1920},infoPane:{show:!0,align:"left"},timestamps:{show:!0,corner:"br",color:"#ffffff",bgColor:"none"},tiles:{gapPx:2,fit:"cover"}};function resolveInputs(e){return e.sourceIds&&e.sourceIds.length>0?e.sourceIds:[]}h(resolveInputs,"resolveInputs");function resolveConfig(e){var a,t,n,o,l,p,u,_,C,r,i,m,g,f,y,v,M,L,H,s,A,E,V,P,N,$,G,D,W,k,F,K,w,I,R,B,c,x,S,b,q,O,z,T,U,j,Y;const d=e,J=(t=(a=e.search)===null||a===void 0?void 0:a.cellAspect)!==null&&t!==void 0?t:d.targetCellAspect;return{inputs:resolveInputs(e),targetCellAspect:typeof J=="number"&&J>0?J:(o=exports.CELL_SHAPE_RATIOS[(n=e.cellShape)!==null&&n!==void 0?n:"landscape"])!==null&&o!==void 0?o:exports.CELL_SHAPE_RATIOS.landscape,gridChoice:(l=e.gridChoice)!==null&&l!==void 0?l:0,countMin:(_=(u=(p=e.search)===null||p===void 0?void 0:p.minCells)!==null&&u!==void 0?u:d.targetCellCountMin)!==null&&_!==void 0?_:4,countMax:(i=(r=(C=e.search)===null||C===void 0?void 0:C.maxCells)!==null&&r!==void 0?r:d.targetCellCountMax)!==null&&i!==void 0?i:32,landscapeW:(f=(g=(m=e.canvas)===null||m===void 0?void 0:m.landscapeW)!==null&&g!==void 0?g:d.landscapeW)!==null&&f!==void 0?f:1920,landscapeH:(M=(v=(y=e.canvas)===null||y===void 0?void 0:y.landscapeH)!==null&&v!==void 0?v:d.landscapeH)!==null&&M!==void 0?M:1080,portraitW:(s=(H=(L=e.canvas)===null||L===void 0?void 0:L.portraitW)!==null&&H!==void 0?H:d.portraitW)!==null&&s!==void 0?s:1080,portraitH:(V=(E=(A=e.canvas)===null||A===void 0?void 0:A.portraitH)!==null&&E!==void 0?E:d.portraitH)!==null&&V!==void 0?V:1920,withInfoPane:($=(N=(P=e.infoPane)===null||P===void 0?void 0:P.show)!==null&&N!==void 0?N:d.withInfoPane)!==null&&$!==void 0?$:!0,headerAlign:(W=(D=(G=e.infoPane)===null||G===void 0?void 0:G.align)!==null&&D!==void 0?D:d.headerAlign)!==null&&W!==void 0?W:"left",withTileTimestamp:(K=(F=(k=e.timestamps)===null||k===void 0?void 0:k.show)!==null&&F!==void 0?F:d.withTileTimestamp)!==null&&K!==void 0?K:!0,timestampCorner:(R=(I=(w=e.timestamps)===null||w===void 0?void 0:w.corner)!==null&&I!==void 0?I:d.timestampCorner)!==null&&R!==void 0?R:"br",timestampColor:(x=(c=(B=e.timestamps)===null||B===void 0?void 0:B.color)!==null&&c!==void 0?c:d.timestampColor)!==null&&x!==void 0?x:"#ffffff",timestampBgColor:(q=(b=(S=e.timestamps)===null||S===void 0?void 0:S.bgColor)!==null&&b!==void 0?b:d.timestampBgColor)!==null&&q!==void 0?q:"none",tileGapPx:(T=(z=(O=e.tiles)===null||O===void 0?void 0:O.gapPx)!==null&&z!==void 0?z:d.tileGapPx)!==null&&T!==void 0?T:2,tileFit:(Y=(j=(U=e.tiles)===null||U===void 0?void 0:U.fit)!==null&&j!==void 0?j:d.tileFit)!==null&&Y!==void 0?Y:"cover",debugGeometry:e.debugGeometry===!0}}h(resolveConfig,"resolveConfig");function targetShapeDistance(e,a){const t=Math.log(a);return Math.abs(Math.log(e.landscape.cellAspectRatio)-t)+Math.abs(Math.log(e.portrait.cellAspectRatio)-t)}h(targetShapeDistance,"targetShapeDistance");function enumerateAspectSafePairs(e){var a;const t=(a=e.targetCellAspect)!==null&&a!==void 0?a:null,n=[];for(let o=e.countMin;o<=e.countMax;o++)try{const l=(0,dsl_stdlib_1.aspectSafeGrid)({landscapeW:e.landscapeW,landscapeH:e.landscapeH,portraitW:e.portraitW,portraitH:e.portraitH,targetCellCount:o,cellCountTolerance:0,...t!=null?{targetCellAspectRatio:t}:{},letterbox:!0});n.push(l)}catch{}return n.sort((o,l)=>{if(t!=null){const u=targetShapeDistance(o,t)-targetShapeDistance(l,t);if(Math.abs(u)>1e-9)return u}const p=o.cellAspectLogDelta-l.cellAspectLogDelta;return Math.abs(p)>1e-9?p:l.cellCount-o.cellCount}),n}h(enumerateAspectSafePairs,"enumerateAspectSafePairs");function pickAspectSafePair(e){const a=enumerateAspectSafePairs(e);if(a.length===0)return null;const t=Math.max(0,Math.min(a.length-1,e.gridChoice));return a[t]}h(pickAspectSafePair,"pickAspectSafePair");function resolveMode(e){return e.outputFormat==="mp4"?"animated":"static"}h(resolveMode,"resolveMode");function formatForMode(e){return e==="animated"?{kind:"video",container:"mp4"}:{kind:"image",container:"png"}}h(formatForMode,"formatForMode");async function renderOrientationForInput(e,a,t,n,o,l,p){var u,_,C;const r=o==="landscape"?t.landscapeW:t.portraitW,i=o==="landscape"?t.landscapeH:t.portraitH,m=o==="landscape"?n.landscape:n.portrait,g=m.rows,f=m.cols,y=g*f,v=e===null,M=e??"",L=(0,types_1.asAssetId)(M),H=(0,types_1.asAssetId)((0,template_utils_1.slugifyAssetKeyFromPath)(M)),s=v?void 0:l.media[L];let A=0;const E={};if(t.withInfoPane){const c=v?{title:STAND_IN_TITLE,metadata:STAND_IN_HINT,metaLineCount:1}:s?(0,screencap_grid_1.formatInfoLines)(M,s):{title:`No metadata for sourceId=${M}`,metadata:"",metaLineCount:0},x=Math.max(.03,Math.min(.25,(0,screencap_grid_1.estimateInfoPaneHeight)(i,c.metaLineCount)/i));A=Math.max(1,Math.round(i*x));const S=((u=c.title.split("/").pop())===null||u===void 0?void 0:u.split("\\").pop())||c.title,b=(0,screencap_grid_2.ellipsizeMiddleEm)(S,(0,screencap_grid_2.paneLineEmBudget)(r,(0,screencap_grid_1.infoPaneTitleFontSize)(i))),q=(0,screencap_grid_2.paneLineEmBudget)(r,(0,screencap_grid_1.infoPaneMetaFontSize)(i)),O=c.metadata.split(`
|
|
2
|
+
`).map(T=>(0,template_utils_1.textEmUnits)(T)<=q+.5?T:(0,template_utils_1.fitEmUnits)(T,q)).join(`
|
|
3
|
+
`),z=await(0,template_utils_1.renderNestedTemplate)(info_pane_1.INFO_PANE_TEMPLATE_ID,{title:b,metadata:O,paneHeight:A,align:t.headerAlign},l,{slot:{width:r,height:i}});E["info-pane"]=z}if(i-A<g||r<f)return(0,template_utils_1.makeErrorMosaic)(`${o} canvas ${r}\xD7${i} is too small for the ${g}\xD7${f} grid${t.withInfoPane?" below the info pane":""}.`,{title:"Screencap Grid \u2014 Aspect Safe",width:r,height:i});const P=s?.kind==="video"&&s.durationMs!=null&&s.durationMs>0,N=P||v,$=N?(0,screencap_grid_1.computeTimestamps)(y,P?s.durationMs:STAND_IN_DURATION_MS):[],G=s?.kind==="video"?"video":s?.kind==="audio"?"audio":"image",D=Math.max(1,Math.round(1e3/((C=(_=s?.fps)!==null&&_!==void 0?_:l.target.fps)!==null&&C!==void 0?C:30))),W=[{propKey:o==="landscape"?"canvas.landscapeW":"canvas.portraitW"},{propKey:o==="landscape"?"canvas.landscapeH":"canvas.portraitH"}],k=(0,template_utils_1.bindProps)({type:"mosaic",ref:"info-pane",placement:{fit:"cover",focusY:0},editor:{label:"info-pane"}},W),F=[{propKey:"sourceIds",index:a},{propKey:"gridChoice"},{propKey:"search.cellAspect"},{propKey:"search.minCells"},{propKey:"search.maxCells"},{propKey:"tiles.gapPx"},...t.withInfoPane?[]:W],K=(0,screencap_grid_2.computeGridTileRects)({canvasW:r,canvasH:i,paneHeightPx:A,rows:g,cols:f,tileGapPx:t.tileGapPx}),w=[];t.withInfoPane&&w.push({rect:{x:0,y:0,w:r,h:A},source:k});for(let c=0;c<y;c++){const x=P?$[c]:0,S=K[c];let b;v?(b=(0,template_utils_1.tag)((0,template_utils_1.makeColorTile)(STAND_IN_TILES[(Math.floor(c/f)+c%f)%STAND_IN_TILES.length]),"tile"),c===0&&(b.engine={renderStatus:"incomplete",renderError:{message:`Screencap Grid \u2014 Aspect Safe: ${STAND_IN_TITLE}`}})):b={type:"media",mediaType:G,assetId:H,placement:{fit:t.tileFit},...P?{playback:p==="animated"?{clipStartMs:x}:{clipStartMs:x,clipDurationMs:D,loopMode:"freeze"},audio:{enabled:!1}}:{},editor:{owner:"template",label:"tile"}},w.push({rect:{x:S.x,y:S.y,w:S.w,h:S.h},source:(0,template_utils_1.bindProps)(b,F)}),t.withTileTimestamp&&w.push({rect:{...(0,screencap_grid_2.timestampChipRect)(S,t.timestampCorner),importance:1},source:(0,template_utils_1.bindProps)((0,template_utils_1.tag)((0,screencap_grid_2.tightTimestampSource)((0,screencap_grid_1.buildTimestampSource)({t:x,mode:v?"static":p,isVideo:N,corner:t.timestampCorner,color:t.timestampColor,bgColor:t.timestampBgColor})),"timestamp"),[{propKey:"timestamps.color"},{propKey:"timestamps.bgColor"}])})}const I=(0,template_utils_1.placeInsetPieces)({rootW:r,rootH:i,pieces:w}),R=v?{}:{[H]:{kind:"file",path:M,mediaType:G}},B={kind:"mosaic_document",version:1,sources:I.sources,assets:R,m0:I.m0,children:E,size:{width:r,height:i},format:formatForMode(p),...p==="animated"?{audio:{mode:"off"}}:{}};return(0,template_utils_1.withGeometryContract)(B,{...l,target:{...l.target,width:r,height:i}},{templateId:ASPECT_SAFE_ID,expectations:I.expectations,debug:t.debugGeometry})}h(renderOrientationForInput,"renderOrientationForInput");async function buildAspectSafePipeline(e,a,t,n){var o;const l=n==="animated"?(o=t.target.durationMs)!==null&&o!==void 0?o:5e3:40,p=new Set,u=h(r=>{let i=r,m=2;for(;p.has(i);)i=`${r.slice(0,128-String(m).length-1)}_${m}`,m++;return p.add(i),i},"claim"),_=[],C=e.inputs.length?e.inputs:[null];for(let r=0;r<C.length;r++){const i=C[r],m=i===null?"sheet":(0,template_utils_1.slugifyAssetKeyFromPath)(i),g=u(`${m}__landscape`),f=u(`${m}__portrait`),y=await renderOrientationForInput(i,r,e,a,"landscape",t,n),v=await renderOrientationForInput(i,r,e,a,"portrait",t,n);_.push({name:g,label:g,durationMs:l,file:y}),_.push({name:f,label:f,durationMs:l,file:v})}return{kind:"mosaic_pipeline",version:1,emit:"multi",steps:_}}h(buildAspectSafePipeline,"buildAspectSafePipeline");async function renderScreencapGridAspectSafe(e,a){const t=resolveMode(e),n=resolveConfig(e);if(n.countMax<n.countMin)return(0,template_utils_1.makeErrorMosaic)(`targetCellCountMax (${n.countMax}) must be >= targetCellCountMin (${n.countMin}).`,{title:"Screencap Grid \u2014 Aspect Safe",width:a.target.width,height:a.target.height});const o=pickAspectSafePair(n);return o?buildAspectSafePipeline(n,o,a,t):(0,template_utils_1.makeErrorMosaic)(`No feasible (landscape, portrait) grid pair found in cell-count range [${n.countMin}, ${n.countMax}] at landscape ${n.landscapeW}\xD7${n.landscapeH} / portrait ${n.portraitW}\xD7${n.portraitH}. Widen the range or enable letterbox.`,{title:"Screencap Grid \u2014 Aspect Safe",width:a.target.width,height:a.target.height})}h(renderScreencapGridAspectSafe,"renderScreencapGridAspectSafe");const STAND_IN_TITLE="Drop a video here",STAND_IN_HINT="Its frames fill both sheets: one landscape, one portrait, the same cells.",STAND_IN_TILES=["#1c212b","#232a36"],STAND_IN_DURATION_MS=96e3;exports.ScreencapGridAspectSafeV2={id:(0,types_1.asTemplateId)(ASPECT_SAFE_ID),version:2,capabilities:{tier:"core"},propsSchema,outputHints:{format:{kind:"image",container:"png"},width:1920,height:1080,fps:30,durationMs:5e3},defaultProps:{debugGeometry:!1,...SHARED_DEFAULTS},render(e,a){return renderScreencapGridAspectSafe(e,a)},renderCover(e,a){return(0,screencap_grid_aspect_safe_cover_1.renderScreencapGridAspectSafeCover)(a)},renderTutorial(e,a){return(0,screencap_grid_aspect_safe_tutorial_1.renderScreencapGridAspectSafeTutorial)(a)}},(0,template_utils_1.registerTemplate)(exports.ScreencapGridAspectSafeV2);
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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")});
|
package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/v2/narrated-chapters.js
ADDED
|
@@ -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
|
|
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")});
|