@bendyline/squisq 2.0.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE.md +24 -0
- package/dist/{ContentContainer-BXUlIf18.d.ts → ContentContainer-B2w9sUoL.d.ts} +15 -0
- package/dist/{Doc-ylqWKDc_.d.ts → Doc-BubIpWsp.d.ts} +160 -3
- package/dist/{ImageEditDoc-D828IXJ1.d.ts → ImageEditDoc-CGxk5CHc.d.ts} +1 -1
- package/dist/{annotationCoercion-Dr_DY9Hx.d.ts → annotationCoercion-PtRQhk5V.d.ts} +1 -1
- package/dist/chunk-2L55443L.js +0 -0
- package/dist/chunk-2ZWIXGAC.js +214 -0
- package/dist/{chunk-2PWOO4ZE.js → chunk-32R2RZAO.js} +72 -3
- package/dist/chunk-3IGPAPQ7.js +645 -0
- package/dist/{chunk-QE7TWGVT.js → chunk-4VOD55SX.js} +0 -1
- package/dist/{chunk-3E5F2XMR.js → chunk-67L6WRJN.js} +0 -1
- package/dist/{chunk-5DKBFXPY.js → chunk-6ECMNUIP.js} +26 -18
- package/dist/{chunk-X6DUONGT.js → chunk-7ARJZYQY.js} +280 -128
- package/dist/{chunk-DBS6RIFL.js → chunk-7N4G32LG.js} +0 -1
- package/dist/{chunk-JOQYPRDZ.js → chunk-7YEZFHLS.js} +10 -8
- package/dist/{chunk-2UQOHYE2.js → chunk-7ZAAICW4.js} +0 -1
- package/dist/{chunk-66QO7XFB.js → chunk-ACZOVWX3.js} +117 -7
- package/dist/{chunk-5J4HKRJF.js → chunk-BAOV476U.js} +0 -1
- package/dist/chunk-BCCXTMN5.js +699 -0
- package/dist/{chunk-W4O2TX5I.js → chunk-C33GTPUZ.js} +579 -4
- package/dist/{chunk-MMPBOUK7.js → chunk-CB45YGAM.js} +7 -2
- package/dist/{chunk-CY2R2VPR.js → chunk-DYPMOPIW.js} +18 -2
- package/dist/{chunk-VR7UPJ7C.js → chunk-FCG3BIZN.js} +12 -1
- package/dist/{chunk-5UYI3RJB.js → chunk-FDYDYL77.js} +54 -40
- package/dist/{chunk-TFJVXUHH.js → chunk-I2O6W7DX.js} +1513 -79
- package/dist/{chunk-Q7LROV2H.js → chunk-NKNMGIIN.js} +0 -1
- package/dist/chunk-OPO5K4DZ.js +241 -0
- package/dist/{chunk-TUWMK62B.js → chunk-PUS54YU6.js} +45 -2
- package/dist/chunk-QKPXHDLR.js +0 -0
- package/dist/{chunk-GZY66SDN.js → chunk-R3KTTOMS.js} +0 -1
- package/dist/{chunk-PXLVXTLW.js → chunk-RS5AP3J4.js} +72 -15
- package/dist/chunk-WV5ARNDA.js +0 -0
- package/dist/{chunk-4X3JQXNM.js → chunk-XOFT65EX.js} +1 -2
- package/dist/{chunk-FVTQSNR7.js → chunk-XRW6P7IF.js} +13 -5
- package/dist/chunk-XWNNA3KE.js +0 -0
- package/dist/chunk-YZNGMV3G.js +0 -0
- package/dist/{chunk-R2YZTCLO.js → chunk-ZQKZSJAX.js} +1 -2
- package/dist/doc/index.d.ts +166 -12
- package/dist/doc/index.js +36 -17
- package/dist/generate/index.d.ts +2 -2
- package/dist/generate/index.js +2 -3
- package/dist/icons/index.js +3 -4
- package/dist/icons/inlineIconMarker.js +1 -2
- package/dist/imageEdit/index.d.ts +48 -17
- package/dist/imageEdit/index.js +3 -4
- package/dist/index.d.ts +13 -12
- package/dist/index.js +118 -33
- package/dist/jsonForm/index.d.ts +10 -3
- package/dist/jsonForm/index.js +8 -7
- package/dist/markdown/index.d.ts +75 -11
- package/dist/markdown/index.js +32 -7
- package/dist/materializePageSection-wSLA2A1g.d.ts +223 -0
- package/dist/narration/index.d.ts +16 -3
- package/dist/narration/index.js +13 -14
- package/dist/random/index.d.ts +11 -2
- package/dist/random/index.js +2 -3
- package/dist/recommend/index.d.ts +1 -1
- package/dist/recommend/index.js +3 -4
- package/dist/schemas/index.d.ts +31 -6
- package/dist/schemas/index.js +43 -6
- package/dist/spatial/index.d.ts +2 -1
- package/dist/spatial/index.js +1 -2
- package/dist/storage/index.d.ts +4 -2
- package/dist/storage/index.js +1 -2
- package/dist/{themeLibrary-RjVgLpUi.d.ts → themeLibrary-DU9mUmVl.d.ts} +1 -1
- package/dist/timing/index.js +3 -4
- package/dist/transform/index.d.ts +9 -10
- package/dist/transform/index.js +6 -7
- package/dist/{types-C4kiRn_k.d.ts → types-8QjefM9J.d.ts} +38 -2
- package/dist/{types-BwMPl2CB.d.ts → types-CUNc9biN.d.ts} +24 -1
- package/dist/versions/index.d.ts +14 -11
- package/dist/versions/index.js +2 -3
- package/package.json +4 -2
- package/dist/chunk-2PWOO4ZE.js.map +0 -1
- package/dist/chunk-2UQOHYE2.js.map +0 -1
- package/dist/chunk-3E5F2XMR.js.map +0 -1
- package/dist/chunk-4X3JQXNM.js.map +0 -1
- package/dist/chunk-5DKBFXPY.js.map +0 -1
- package/dist/chunk-5J4HKRJF.js.map +0 -1
- package/dist/chunk-5UYI3RJB.js.map +0 -1
- package/dist/chunk-66QO7XFB.js.map +0 -1
- package/dist/chunk-AMIR72JP.js +0 -380
- package/dist/chunk-AMIR72JP.js.map +0 -1
- package/dist/chunk-CY2R2VPR.js.map +0 -1
- package/dist/chunk-DBS6RIFL.js.map +0 -1
- package/dist/chunk-DNJKBAI7.js +0 -1
- package/dist/chunk-DNJKBAI7.js.map +0 -1
- package/dist/chunk-ET53IIEP.js +0 -1
- package/dist/chunk-ET53IIEP.js.map +0 -1
- package/dist/chunk-FVJUUTEM.js +0 -74
- package/dist/chunk-FVJUUTEM.js.map +0 -1
- package/dist/chunk-FVTQSNR7.js.map +0 -1
- package/dist/chunk-GZY66SDN.js.map +0 -1
- package/dist/chunk-JOQYPRDZ.js.map +0 -1
- package/dist/chunk-MMPBOUK7.js.map +0 -1
- package/dist/chunk-PGGGKYWG.js +0 -1
- package/dist/chunk-PGGGKYWG.js.map +0 -1
- package/dist/chunk-PXLVXTLW.js.map +0 -1
- package/dist/chunk-Q7LROV2H.js.map +0 -1
- package/dist/chunk-QE7TWGVT.js.map +0 -1
- package/dist/chunk-R2GC6RLD.js +0 -344
- package/dist/chunk-R2GC6RLD.js.map +0 -1
- package/dist/chunk-R2YZTCLO.js.map +0 -1
- package/dist/chunk-S7A5D7ZJ.js +0 -174
- package/dist/chunk-S7A5D7ZJ.js.map +0 -1
- package/dist/chunk-TFJVXUHH.js.map +0 -1
- package/dist/chunk-TUWMK62B.js.map +0 -1
- package/dist/chunk-V543AI2F.js +0 -1
- package/dist/chunk-V543AI2F.js.map +0 -1
- package/dist/chunk-VR7UPJ7C.js.map +0 -1
- package/dist/chunk-W4O2TX5I.js.map +0 -1
- package/dist/chunk-X6DUONGT.js.map +0 -1
- package/dist/chunk-ZLQKNOZQ.js +0 -1
- package/dist/chunk-ZLQKNOZQ.js.map +0 -1
- package/dist/doc/index.js.map +0 -1
- package/dist/generate/index.js.map +0 -1
- package/dist/icons/index.js.map +0 -1
- package/dist/icons/inlineIconMarker.js.map +0 -1
- package/dist/imageEdit/index.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/jsonForm/index.js.map +0 -1
- package/dist/markdown/index.js.map +0 -1
- package/dist/narration/index.js.map +0 -1
- package/dist/random/index.js.map +0 -1
- package/dist/recommend/index.js.map +0 -1
- package/dist/schemas/index.js.map +0 -1
- package/dist/spatial/index.js.map +0 -1
- package/dist/storage/index.js.map +0 -1
- package/dist/timing/index.js.map +0 -1
- package/dist/transform/index.js.map +0 -1
- package/dist/versions/index.js.map +0 -1
- package/src/__tests__/animationUtils.test.ts +0 -117
- package/src/__tests__/annotationCoercion.test.ts +0 -243
- package/src/__tests__/applyNarrationTiming.test.ts +0 -190
- package/src/__tests__/applyRenderStyle.test.ts +0 -146
- package/src/__tests__/asciiDiagramBattle.test.ts +0 -246
- package/src/__tests__/asciiDiagramDetect.test.ts +0 -162
- package/src/__tests__/asciiDiagramMapping.test.ts +0 -38
- package/src/__tests__/asciiDiagramParse.test.ts +0 -233
- package/src/__tests__/asciiDiagramPipeline.test.ts +0 -273
- package/src/__tests__/asciiDiagramRender.test.ts +0 -162
- package/src/__tests__/asciiDiagramRepair.test.ts +0 -84
- package/src/__tests__/asciiTimelineDetect.test.ts +0 -157
- package/src/__tests__/asciiTimelineParse.test.ts +0 -205
- package/src/__tests__/asciiTimelinePipeline.test.ts +0 -349
- package/src/__tests__/asciiTimelineRender.test.ts +0 -376
- package/src/__tests__/atmosphereLayers.test.ts +0 -108
- package/src/__tests__/attrTokens.test.ts +0 -167
- package/src/__tests__/colorUtils.test.ts +0 -112
- package/src/__tests__/contentContainer.test.ts +0 -325
- package/src/__tests__/contentExtractor.test.ts +0 -243
- package/src/__tests__/coverBlock.test.ts +0 -310
- package/src/__tests__/customTemplateSample.test.ts +0 -144
- package/src/__tests__/customTemplatesFrontmatter.test.ts +0 -221
- package/src/__tests__/customThemesFrontmatter.test.ts +0 -146
- package/src/__tests__/dataTable.test.ts +0 -145
- package/src/__tests__/diagramBlock.test.ts +0 -122
- package/src/__tests__/diagramLayout.test.ts +0 -134
- package/src/__tests__/diagramText.test.ts +0 -26
- package/src/__tests__/docToMarkdownMedia.test.ts +0 -83
- package/src/__tests__/drawing.test.ts +0 -109
- package/src/__tests__/drawingBlock.test.ts +0 -124
- package/src/__tests__/drawingLayout.test.ts +0 -171
- package/src/__tests__/fixtures/asciiDiagramBattle.ts +0 -512
- package/src/__tests__/fixtures/asciiDiagrams.ts +0 -287
- package/src/__tests__/fixtures/asciiTimelines.ts +0 -35
- package/src/__tests__/fixtures/treeviewFixtures.ts +0 -243
- package/src/__tests__/geohash.test.ts +0 -110
- package/src/__tests__/getLayers.test.ts +0 -243
- package/src/__tests__/getLayersFallback.test.ts +0 -103
- package/src/__tests__/haversine.test.ts +0 -63
- package/src/__tests__/iconResolve.test.ts +0 -122
- package/src/__tests__/imageEditExportSvg.test.ts +0 -70
- package/src/__tests__/imageEditState.test.ts +0 -74
- package/src/__tests__/imageEditVersions.test.ts +0 -243
- package/src/__tests__/inferDocumentTitle.test.ts +0 -50
- package/src/__tests__/inlineIconMarker.test.ts +0 -36
- package/src/__tests__/inputDescriptors.test.ts +0 -162
- package/src/__tests__/jsonForm.chooseControl.test.ts +0 -86
- package/src/__tests__/jsonForm.evaluateWhen.test.ts +0 -59
- package/src/__tests__/jsonForm.inferSchema.test.ts +0 -25
- package/src/__tests__/jsonForm.pointer.test.ts +0 -149
- package/src/__tests__/jsonForm.tokens.test.ts +0 -84
- package/src/__tests__/layoutBlock.test.ts +0 -83
- package/src/__tests__/layoutLayout.test.ts +0 -169
- package/src/__tests__/localForageAdapter.test.ts +0 -155
- package/src/__tests__/majorApiTypes.test.ts +0 -18
- package/src/__tests__/markdown.test.ts +0 -1009
- package/src/__tests__/markdownIcons.test.ts +0 -104
- package/src/__tests__/markdownSanitize.test.ts +0 -81
- package/src/__tests__/markdownToDoc.test.ts +0 -957
- package/src/__tests__/matchFontFamily.test.ts +0 -114
- package/src/__tests__/materializeBlockLayers.test.ts +0 -135
- package/src/__tests__/materializeTestUtils.ts +0 -17
- package/src/__tests__/mediaAnnotations.test.ts +0 -91
- package/src/__tests__/mediaSchedule.test.ts +0 -118
- package/src/__tests__/narrationAlign.test.ts +0 -150
- package/src/__tests__/narrationFeatures.test.ts +0 -71
- package/src/__tests__/narrationNuclei.test.ts +0 -45
- package/src/__tests__/narrationPacing.test.ts +0 -189
- package/src/__tests__/narrationScript.test.ts +0 -149
- package/src/__tests__/narrationSessionRepro.test.ts +0 -62
- package/src/__tests__/narrationSidecar.test.ts +0 -88
- package/src/__tests__/narrationSyllables.test.ts +0 -65
- package/src/__tests__/narrationTestSignals.ts +0 -167
- package/src/__tests__/narrationVad.test.ts +0 -66
- package/src/__tests__/pandocAttrParse.test.ts +0 -187
- package/src/__tests__/recommendTemplates.test.ts +0 -183
- package/src/__tests__/resolveDocTheme.test.ts +0 -69
- package/src/__tests__/rootExports.test.ts +0 -61
- package/src/__tests__/scopedContentContainer.test.ts +0 -109
- package/src/__tests__/seededRandom.test.ts +0 -142
- package/src/__tests__/shapeGeometry.test.ts +0 -138
- package/src/__tests__/shapeVocabulary.test.ts +0 -133
- package/src/__tests__/storage.test.ts +0 -60
- package/src/__tests__/structuredData.test.ts +0 -249
- package/src/__tests__/surface.test.ts +0 -68
- package/src/__tests__/templateAnnotationParse.test.ts +0 -160
- package/src/__tests__/templateInputs.test.ts +0 -69
- package/src/__tests__/templateMetadata.test.ts +0 -32
- package/src/__tests__/templates.test.ts +0 -710
- package/src/__tests__/themeCompile.test.ts +0 -225
- package/src/__tests__/themeValidator.test.ts +0 -131
- package/src/__tests__/timing.test.ts +0 -167
- package/src/__tests__/transformProvenance.test.ts +0 -160
- package/src/__tests__/transformV2.test.ts +0 -163
- package/src/__tests__/transitionNormalize.test.ts +0 -61
- package/src/__tests__/treeviewBattle.test.ts +0 -76
- package/src/__tests__/treeviewDetect.test.ts +0 -168
- package/src/__tests__/treeviewParse.test.ts +0 -118
- package/src/__tests__/treeviewPipeline.test.ts +0 -183
- package/src/__tests__/treeviewRender.test.ts +0 -91
- package/src/__tests__/validateDoc.test.ts +0 -260
- package/src/__tests__/versions.test.ts +0 -459
- package/src/doc/annotationBlocks.ts +0 -117
- package/src/doc/applyNarrationTiming.ts +0 -244
- package/src/doc/asciiDiagram/chars.ts +0 -210
- package/src/doc/asciiDiagram/detect.ts +0 -175
- package/src/doc/asciiDiagram/index.ts +0 -38
- package/src/doc/asciiDiagram/mapping.ts +0 -225
- package/src/doc/asciiDiagram/parse.ts +0 -1095
- package/src/doc/asciiDiagram/render.ts +0 -963
- package/src/doc/asciiDiagram/repair.ts +0 -400
- package/src/doc/asciiDiagram/types.ts +0 -65
- package/src/doc/asciiTimeline/detect.ts +0 -138
- package/src/doc/asciiTimeline/index.ts +0 -26
- package/src/doc/asciiTimeline/mapping.ts +0 -43
- package/src/doc/asciiTimeline/parse.ts +0 -870
- package/src/doc/asciiTimeline/render.ts +0 -427
- package/src/doc/asciiTimeline/types.ts +0 -73
- package/src/doc/asciiTimeline/wrappedFlow.ts +0 -427
- package/src/doc/audioMapping.ts +0 -442
- package/src/doc/customTemplatesFrontmatter.ts +0 -273
- package/src/doc/customThemesFrontmatter.ts +0 -95
- package/src/doc/docToMarkdown.ts +0 -284
- package/src/doc/index.ts +0 -127
- package/src/doc/markdownToDoc.ts +0 -1054
- package/src/doc/materializeBlockLayers.ts +0 -304
- package/src/doc/mediaAnnotations.ts +0 -120
- package/src/doc/resolveDocTheme.ts +0 -56
- package/src/doc/standaloneAnnotation.ts +0 -58
- package/src/doc/structuredData.ts +0 -301
- package/src/doc/templateInputs.ts +0 -423
- package/src/doc/templates/__tests__/customTemplate.test.ts +0 -170
- package/src/doc/templates/__tests__/customTemplateRegistry.test.ts +0 -124
- package/src/doc/templates/__tests__/listBlock.test.ts +0 -64
- package/src/doc/templates/accentImage.ts +0 -362
- package/src/doc/templates/captionUtils.ts +0 -56
- package/src/doc/templates/comparisonBar.ts +0 -173
- package/src/doc/templates/coverBlock.ts +0 -255
- package/src/doc/templates/customTemplate.ts +0 -51
- package/src/doc/templates/dataTable.ts +0 -102
- package/src/doc/templates/dateEvent.ts +0 -147
- package/src/doc/templates/definitionCard.ts +0 -140
- package/src/doc/templates/diagramBlock.ts +0 -403
- package/src/doc/templates/diagramLayout.ts +0 -159
- package/src/doc/templates/drawingBlock.ts +0 -325
- package/src/doc/templates/drawingLayout.ts +0 -539
- package/src/doc/templates/factCard.ts +0 -146
- package/src/doc/templates/fallbackBlock.ts +0 -123
- package/src/doc/templates/featureBlock.ts +0 -209
- package/src/doc/templates/fullBleedQuote.ts +0 -83
- package/src/doc/templates/imageWithCaption.ts +0 -186
- package/src/doc/templates/index.ts +0 -642
- package/src/doc/templates/inputDescriptors.ts +0 -451
- package/src/doc/templates/layoutBlock.ts +0 -43
- package/src/doc/templates/layoutLayout.ts +0 -243
- package/src/doc/templates/listBlock.ts +0 -207
- package/src/doc/templates/mapBlock.ts +0 -138
- package/src/doc/templates/metadata.ts +0 -130
- package/src/doc/templates/persistentLayers.ts +0 -526
- package/src/doc/templates/photoGrid.ts +0 -190
- package/src/doc/templates/pullQuote.ts +0 -141
- package/src/doc/templates/quoteBlock.ts +0 -141
- package/src/doc/templates/registry.ts +0 -88
- package/src/doc/templates/sectionHeader.ts +0 -120
- package/src/doc/templates/statHighlight.ts +0 -146
- package/src/doc/templates/templateNames.ts +0 -22
- package/src/doc/templates/timelineBlock.ts +0 -613
- package/src/doc/templates/titleBlock.ts +0 -150
- package/src/doc/templates/tokens/__tests__/resolveTokens.test.ts +0 -487
- package/src/doc/templates/tokens/resolveTokens.ts +0 -453
- package/src/doc/templates/treeBlock.ts +0 -131
- package/src/doc/templates/twoColumn.ts +0 -263
- package/src/doc/templates/videoPullQuote.ts +0 -142
- package/src/doc/templates/videoWithCaption.ts +0 -135
- package/src/doc/treeview/chars.ts +0 -72
- package/src/doc/treeview/detect.ts +0 -145
- package/src/doc/treeview/index.ts +0 -30
- package/src/doc/treeview/mapping.ts +0 -95
- package/src/doc/treeview/parse.ts +0 -201
- package/src/doc/treeview/render.ts +0 -41
- package/src/doc/treeview/types.ts +0 -43
- package/src/doc/utils/animationUtils.ts +0 -399
- package/src/doc/utils/applyRenderStyle.ts +0 -106
- package/src/doc/utils/diagramText.ts +0 -78
- package/src/doc/utils/imageTreatment.ts +0 -70
- package/src/doc/utils/nearest.ts +0 -59
- package/src/doc/utils/shapeGeometry.ts +0 -614
- package/src/doc/utils/themeUtils.ts +0 -243
- package/src/doc/validate.ts +0 -575
- package/src/generate/contentExtractor.ts +0 -921
- package/src/generate/index.ts +0 -18
- package/src/generate/templateMapper.ts +0 -177
- package/src/icons/iconData.ts +0 -31
- package/src/icons/index.ts +0 -26
- package/src/icons/inlineIconMarker.ts +0 -73
- package/src/icons/resolve.ts +0 -139
- package/src/imageEdit/ImageEditVersionManager.ts +0 -73
- package/src/imageEdit/export.ts +0 -410
- package/src/imageEdit/index.ts +0 -72
- package/src/imageEdit/persistence.ts +0 -113
- package/src/imageEdit/state.ts +0 -112
- package/src/imageEdit/versionPaths.ts +0 -44
- package/src/imageEdit/versions.ts +0 -152
- package/src/index.ts +0 -15
- package/src/internal/immutable.ts +0 -58
- package/src/jsonForm/chooseControl.ts +0 -88
- package/src/jsonForm/evaluateWhen.ts +0 -59
- package/src/jsonForm/index.ts +0 -32
- package/src/jsonForm/inferSchema.ts +0 -25
- package/src/jsonForm/pointer.ts +0 -154
- package/src/jsonForm/tokens.ts +0 -78
- package/src/jsonForm/types.ts +0 -167
- package/src/markdown/annotationCoercion.ts +0 -295
- package/src/markdown/attrTokens.ts +0 -243
- package/src/markdown/convert.ts +0 -1353
- package/src/markdown/htmlParse.ts +0 -212
- package/src/markdown/index.ts +0 -152
- package/src/markdown/parse.ts +0 -103
- package/src/markdown/sanitize.ts +0 -318
- package/src/markdown/stringify.ts +0 -207
- package/src/markdown/types.ts +0 -710
- package/src/markdown/utils.ts +0 -459
- package/src/narration/align.ts +0 -514
- package/src/narration/features.ts +0 -231
- package/src/narration/index.ts +0 -86
- package/src/narration/nuclei.ts +0 -118
- package/src/narration/pacing.ts +0 -211
- package/src/narration/script.ts +0 -239
- package/src/narration/session.ts +0 -100
- package/src/narration/sidecar.ts +0 -187
- package/src/narration/syllables.ts +0 -85
- package/src/narration/trace.ts +0 -50
- package/src/narration/types.ts +0 -299
- package/src/narration/vad.ts +0 -131
- package/src/ngeohash.d.ts +0 -11
- package/src/random/SeededRandom.ts +0 -127
- package/src/random/index.ts +0 -1
- package/src/recommend/index.ts +0 -16
- package/src/recommend/numberHighlight.ts +0 -25
- package/src/recommend/templates.ts +0 -393
- package/src/schemas/BlockTemplates.ts +0 -1046
- package/src/schemas/CustomTemplates.ts +0 -126
- package/src/schemas/Doc.ts +0 -1052
- package/src/schemas/ImageEditDoc.ts +0 -102
- package/src/schemas/LayoutStrategy.ts +0 -178
- package/src/schemas/Media.ts +0 -179
- package/src/schemas/MediaProvider.ts +0 -70
- package/src/schemas/Theme.ts +0 -406
- package/src/schemas/Transitions.ts +0 -224
- package/src/schemas/Types.ts +0 -15
- package/src/schemas/Viewport.ts +0 -91
- package/src/schemas/colorUtils.ts +0 -219
- package/src/schemas/fontStacks.ts +0 -339
- package/src/schemas/index.ts +0 -29
- package/src/schemas/themeCompile.ts +0 -237
- package/src/schemas/themeConstants.ts +0 -2
- package/src/schemas/themeLibrary.ts +0 -60
- package/src/schemas/themeValidator.ts +0 -426
- package/src/schemas/themes/bold.json +0 -48
- package/src/schemas/themes/cinematic.json +0 -111
- package/src/schemas/themes/documentary.json +0 -96
- package/src/schemas/themes/gezellig.json +0 -93
- package/src/schemas/themes/index.ts +0 -53
- package/src/schemas/themes/magazine.json +0 -89
- package/src/schemas/themes/minimalist.json +0 -45
- package/src/schemas/themes/morning-light.json +0 -85
- package/src/schemas/themes/standard-dark.json +0 -85
- package/src/schemas/themes/standard.json +0 -74
- package/src/schemas/themes/tech-dark.json +0 -101
- package/src/schemas/themes/warm-earth.json +0 -50
- package/src/spatial/Geohash.ts +0 -196
- package/src/spatial/Haversine.ts +0 -59
- package/src/spatial/index.ts +0 -2
- package/src/storage/ContentContainer.ts +0 -220
- package/src/storage/LocalForageAdapter.ts +0 -103
- package/src/storage/LocalStorageAdapter.ts +0 -57
- package/src/storage/MediaProviderFromContainer.ts +0 -92
- package/src/storage/MemoryStorageAdapter.ts +0 -37
- package/src/storage/ScopedContentContainer.ts +0 -143
- package/src/storage/Storage.ts +0 -28
- package/src/storage/index.ts +0 -9
- package/src/timing/index.ts +0 -17
- package/src/timing/narrationTiming.ts +0 -220
- package/src/timing/readingTime.ts +0 -94
- package/src/transform/applyTransform.ts +0 -122
- package/src/transform/blockAnalyzer.ts +0 -181
- package/src/transform/index.ts +0 -23
- package/src/transform/registry.ts +0 -198
- package/src/transform/styles/dataDriven.ts +0 -17
- package/src/transform/styles/documentary.ts +0 -17
- package/src/transform/styles/index.ts +0 -5
- package/src/transform/styles/magazine.ts +0 -18
- package/src/transform/styles/minimal.ts +0 -17
- package/src/transform/styles/narrative.ts +0 -18
- package/src/transform/templateSelector.ts +0 -389
- package/src/transform/timingAllocator.ts +0 -257
- package/src/transform/types.ts +0 -151
- package/src/versions/DocumentVersionManager.ts +0 -70
- package/src/versions/gitignore.ts +0 -34
- package/src/versions/index.ts +0 -56
- package/src/versions/operations.ts +0 -144
- package/src/versions/paths.ts +0 -51
- package/src/versions/snapshotStore.ts +0 -202
- package/src/versions/timestamp.ts +0 -48
- package/src/versions/types.ts +0 -93
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Bendyline LLC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/NOTICE.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Third-Party Notices for @bendyline/squisq
|
|
2
|
+
|
|
3
|
+
This notice applies to the `@bendyline/squisq` npm package. Squisq-authored
|
|
4
|
+
code is licensed under the MIT license in `LICENSE`. Third-party components
|
|
5
|
+
remain under their respective license terms.
|
|
6
|
+
|
|
7
|
+
## Runtime dependencies
|
|
8
|
+
|
|
9
|
+
| Package | Version | License | Repository |
|
|
10
|
+
| ------------------- | ------- | ---------- | ---------------------------------------------------------------------- |
|
|
11
|
+
| genson-js | 0.0.8 | Apache-2.0 | https://github.com/aspecto-io/genson-js |
|
|
12
|
+
| hast-util-from-html | 2.0.3 | MIT | https://github.com/syntax-tree/hast-util-from-html |
|
|
13
|
+
| localforage | 1.10.0 | Apache-2.0 | https://github.com/localForage/localForage |
|
|
14
|
+
| ngeohash | 0.6.3 | MIT | https://github.com/sunng87/node-geohash |
|
|
15
|
+
| remark-directive | 3.0.1 | MIT | https://github.com/remarkjs/remark-directive |
|
|
16
|
+
| remark-frontmatter | 5.0.0 | MIT | https://github.com/remarkjs/remark-frontmatter |
|
|
17
|
+
| remark-gfm | 4.0.1 | MIT | https://github.com/remarkjs/remark-gfm |
|
|
18
|
+
| remark-math | 6.0.0 | MIT | https://github.com/remarkjs/remark-math |
|
|
19
|
+
| remark-parse | 11.0.0 | MIT | https://github.com/remarkjs/remark/tree/main/packages/remark-parse |
|
|
20
|
+
| remark-stringify | 11.0.0 | MIT | https://github.com/remarkjs/remark/tree/main/packages/remark-stringify |
|
|
21
|
+
| unified | 11.0.5 | MIT | https://unifiedjs.com |
|
|
22
|
+
|
|
23
|
+
Copyright and complete license texts for these dependencies are included in
|
|
24
|
+
their respective npm distributions and source repositories.
|
|
@@ -31,10 +31,23 @@ interface ContentEntry {
|
|
|
31
31
|
* with no leading slash. Example: 'images/hero.jpg', 'index.md'.
|
|
32
32
|
*/
|
|
33
33
|
interface ContentContainer {
|
|
34
|
+
/**
|
|
35
|
+
* Shared identity used to serialize in-process mutations across multiple
|
|
36
|
+
* scoped views of the same backing store. Implementations may omit it; the
|
|
37
|
+
* container object itself is then used.
|
|
38
|
+
*/
|
|
39
|
+
readonly mutationLock?: object;
|
|
34
40
|
/** Read a file's binary content. Returns null if the file does not exist. */
|
|
35
41
|
readFile(path: string): Promise<ArrayBuffer | null>;
|
|
36
42
|
/** Write a file. Creates or overwrites. */
|
|
37
43
|
writeFile(path: string, data: ArrayBuffer | Uint8Array, mimeType?: string): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Atomically create a file only when the path does not already exist.
|
|
46
|
+
* Returns false on collision. Persistent adapters should implement this
|
|
47
|
+
* with their datastore/filesystem's exclusive-create primitive so callers
|
|
48
|
+
* are safe across tabs and processes.
|
|
49
|
+
*/
|
|
50
|
+
writeFileExclusive?(path: string, data: ArrayBuffer | Uint8Array, mimeType?: string): Promise<boolean>;
|
|
38
51
|
/** Remove a file. No-op if the file does not exist. */
|
|
39
52
|
removeFile(path: string): Promise<void>;
|
|
40
53
|
/**
|
|
@@ -79,8 +92,10 @@ declare function findDocumentPath(entries: ContentEntry[]): string | null;
|
|
|
79
92
|
*/
|
|
80
93
|
declare class MemoryContentContainer implements ContentContainer {
|
|
81
94
|
private files;
|
|
95
|
+
readonly mutationLock: object;
|
|
82
96
|
readFile(path: string): Promise<ArrayBuffer | null>;
|
|
83
97
|
writeFile(path: string, data: ArrayBuffer | Uint8Array, mimeType?: string): Promise<void>;
|
|
98
|
+
writeFileExclusive(path: string, data: ArrayBuffer | Uint8Array, mimeType?: string): Promise<boolean>;
|
|
84
99
|
removeFile(path: string): Promise<void>;
|
|
85
100
|
listFiles(prefix?: string): Promise<ContentEntry[]>;
|
|
86
101
|
exists(path: string): Promise<boolean>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a0 as Transition, a2 as TransitionType, M as MarkdownBlockNode, r as MarkdownHeading } from './types-CUNc9biN.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Media-clip timing model.
|
|
@@ -1142,6 +1142,138 @@ interface ProgressIndicatorConfig {
|
|
|
1142
1142
|
color?: string;
|
|
1143
1143
|
}
|
|
1144
1144
|
|
|
1145
|
+
/**
|
|
1146
|
+
* Page Style — the theme's art-direction layer for Page (linear) mode.
|
|
1147
|
+
*
|
|
1148
|
+
* Slides render through fixed-viewport SVG templates; pages render through
|
|
1149
|
+
* a small closed vocabulary of variable-height HTML section layouts
|
|
1150
|
+
* (`PageSectionKind`). A `ThemePageStyle` is how a theme art-directs that
|
|
1151
|
+
* page rendition: it picks a design family, sets page-wide tokens
|
|
1152
|
+
* (column widths, spacing, dividers, hero treatment, image framing …),
|
|
1153
|
+
* and can override how individual section kinds or block templates map
|
|
1154
|
+
* onto the section vocabulary.
|
|
1155
|
+
*
|
|
1156
|
+
* Design principles (mirrors the rest of the Theme schema):
|
|
1157
|
+
* - Fully JSON-serializable — rides the `squisq-custom-themes` frontmatter
|
|
1158
|
+
* codec unchanged.
|
|
1159
|
+
* - Closed enums everywhere so renderers can switch exhaustively and the
|
|
1160
|
+
* validator can reject typos.
|
|
1161
|
+
* - Optional on `Theme`; `resolvePageStyle`/`defaultPageStyle` derive a
|
|
1162
|
+
* complete style from existing theme fields when absent, so legacy and
|
|
1163
|
+
* customizer themes keep working without edits.
|
|
1164
|
+
*/
|
|
1165
|
+
/**
|
|
1166
|
+
* The closed set of page section layouts. Every block template maps onto
|
|
1167
|
+
* one of these kinds (see `doc/page/sectionExtractors.ts`); themes may
|
|
1168
|
+
* remap via `ThemePageStyle.sections` / `.templates`.
|
|
1169
|
+
*/
|
|
1170
|
+
declare const PAGE_SECTION_KINDS: readonly ["hero", "banner", "stat-band", "quote-band", "feature-split", "media-figure", "gallery", "callout", "card-grid", "item-list", "timeline-rail", "table-section", "canvas-embed", "prose", "footer"];
|
|
1171
|
+
type PageSectionKind = (typeof PAGE_SECTION_KINDS)[number];
|
|
1172
|
+
/** Relative visual weight of a section within the page. */
|
|
1173
|
+
type PageEmphasis = 'lead' | 'strong' | 'standard' | 'quiet';
|
|
1174
|
+
/** Which background treatment a section sits on. */
|
|
1175
|
+
type PageBackground = 'base' | 'alternate' | 'accent' | 'media';
|
|
1176
|
+
/**
|
|
1177
|
+
* Broad page design personalities. A family selects the structural
|
|
1178
|
+
* skeleton (how sections compose); tokens parameterize it per theme.
|
|
1179
|
+
*/
|
|
1180
|
+
declare const PAGE_DESIGN_FAMILIES: readonly ["clean", "editorial", "brutalist", "terminal", "cinematic", "documentary", "organic", "soft"];
|
|
1181
|
+
type PageDesignFamily = (typeof PAGE_DESIGN_FAMILIES)[number];
|
|
1182
|
+
/** How headings announce themselves across the page. */
|
|
1183
|
+
interface PageHeadingTreatment {
|
|
1184
|
+
/** Small label above headings: none, plain kicker, "01 —" numbering, or a mono tag. */
|
|
1185
|
+
eyebrow: 'none' | 'kicker' | 'numbered' | 'mono-tag';
|
|
1186
|
+
/** Overall heading size register. */
|
|
1187
|
+
scale: 'regular' | 'display' | 'oversized';
|
|
1188
|
+
/** Optional case transform for headings/eyebrows. */
|
|
1189
|
+
case?: 'none' | 'uppercase';
|
|
1190
|
+
/** Optional decoration under headings. */
|
|
1191
|
+
underline?: 'none' | 'accent-bar' | 'full-rule';
|
|
1192
|
+
}
|
|
1193
|
+
/**
|
|
1194
|
+
* Page-wide design tokens. Structural CSS reads these via
|
|
1195
|
+
* `--squisq-page-*` custom properties (see `doc/pageCss.ts`).
|
|
1196
|
+
*/
|
|
1197
|
+
interface PageTokens {
|
|
1198
|
+
/** Reading-column max width in px (prose, callouts, quotes). */
|
|
1199
|
+
contentMaxWidth: number;
|
|
1200
|
+
/** Wide-band inner max width in px (figures, tables, feature splits). */
|
|
1201
|
+
wideMaxWidth: number;
|
|
1202
|
+
/** Vertical rhythm between sections. */
|
|
1203
|
+
sectionSpacing: 'compact' | 'comfortable' | 'generous';
|
|
1204
|
+
/** Corner radius for cards, media frames, panels (px). */
|
|
1205
|
+
cornerRadius: number;
|
|
1206
|
+
/** Divider treatment between sections. */
|
|
1207
|
+
divider: 'none' | 'gap-only' | 'hairline' | 'thick-rule' | 'double-rule' | 'dotted';
|
|
1208
|
+
/** How section backgrounds vary down the page. */
|
|
1209
|
+
backgroundRhythm: 'flat' | 'alternate' | 'accent-bands' | 'tinted-panels';
|
|
1210
|
+
/** Hero (cover/title) composition. */
|
|
1211
|
+
heroStyle: 'stacked' | 'split' | 'full-bleed' | 'letterbox' | 'oversized-type';
|
|
1212
|
+
/** Heading voice across the page. */
|
|
1213
|
+
headingTreatment: PageHeadingTreatment;
|
|
1214
|
+
/** Frame treatment for photographic media. */
|
|
1215
|
+
imageFraming: 'flush' | 'rounded' | 'bordered' | 'polaroid' | 'letterboxed' | 'circle-accent';
|
|
1216
|
+
/** Shadow language for elevated elements. */
|
|
1217
|
+
shadow: 'none' | 'soft' | 'crisp' | 'heavy';
|
|
1218
|
+
/** Decoration on quote sections. */
|
|
1219
|
+
quoteMark: 'none' | 'oversized-glyph' | 'accent-bar';
|
|
1220
|
+
/** Treatment of large stat numerals. */
|
|
1221
|
+
numeralStyle: 'plain' | 'oversized' | 'boxed' | 'mono';
|
|
1222
|
+
/** Optional page background pattern. */
|
|
1223
|
+
pattern?: 'none' | 'dots' | 'grid' | 'diagonal' | 'noise';
|
|
1224
|
+
}
|
|
1225
|
+
/**
|
|
1226
|
+
* A theme's override for one section kind or one block template —
|
|
1227
|
+
* remap the kind, force a variant, adjust emphasis/background, or pass
|
|
1228
|
+
* freeform scalar hints the section renderer understands.
|
|
1229
|
+
*/
|
|
1230
|
+
interface PageSectionOverride {
|
|
1231
|
+
kind?: PageSectionKind;
|
|
1232
|
+
variant?: string;
|
|
1233
|
+
emphasis?: PageEmphasis;
|
|
1234
|
+
background?: PageBackground;
|
|
1235
|
+
/** Freeform scalar hints (e.g. `dropCap: true`, `frame: "terminal"`). */
|
|
1236
|
+
hints?: Record<string, string | number | boolean>;
|
|
1237
|
+
}
|
|
1238
|
+
/** How named color schemes rotate across accent-bearing sections. */
|
|
1239
|
+
interface PageAccentRotation {
|
|
1240
|
+
strategy: 'primary-only' | 'cycle' | 'alternate-two' | 'none';
|
|
1241
|
+
/**
|
|
1242
|
+
* ColorScheme names (keys of `theme.colorSchemes`) to rotate through.
|
|
1243
|
+
* Defaults to all schemes in insertion order.
|
|
1244
|
+
*/
|
|
1245
|
+
schemes?: string[];
|
|
1246
|
+
}
|
|
1247
|
+
/**
|
|
1248
|
+
* The complete page art direction for a theme. Optional on `Theme`;
|
|
1249
|
+
* `defaultPageStyle(theme)` derives one from existing theme fields.
|
|
1250
|
+
*/
|
|
1251
|
+
interface ThemePageStyle {
|
|
1252
|
+
family: PageDesignFamily;
|
|
1253
|
+
tokens: PageTokens;
|
|
1254
|
+
/** Per-section-kind overrides. */
|
|
1255
|
+
sections?: Partial<Record<PageSectionKind, PageSectionOverride>>;
|
|
1256
|
+
/** Per-template overrides (canonical template ids); win over `sections`. */
|
|
1257
|
+
templates?: Record<string, PageSectionOverride>;
|
|
1258
|
+
accentRotation: PageAccentRotation;
|
|
1259
|
+
}
|
|
1260
|
+
declare const PAGE_SECTION_SPACINGS: readonly ["compact", "comfortable", "generous"];
|
|
1261
|
+
declare const PAGE_DIVIDERS: readonly ["none", "gap-only", "hairline", "thick-rule", "double-rule", "dotted"];
|
|
1262
|
+
declare const PAGE_BACKGROUND_RHYTHMS: readonly ["flat", "alternate", "accent-bands", "tinted-panels"];
|
|
1263
|
+
declare const PAGE_HERO_STYLES: readonly ["stacked", "split", "full-bleed", "letterbox", "oversized-type"];
|
|
1264
|
+
declare const PAGE_EYEBROWS: readonly ["none", "kicker", "numbered", "mono-tag"];
|
|
1265
|
+
declare const PAGE_HEADING_SCALES: readonly ["regular", "display", "oversized"];
|
|
1266
|
+
declare const PAGE_HEADING_CASES: readonly ["none", "uppercase"];
|
|
1267
|
+
declare const PAGE_HEADING_UNDERLINES: readonly ["none", "accent-bar", "full-rule"];
|
|
1268
|
+
declare const PAGE_IMAGE_FRAMINGS: readonly ["flush", "rounded", "bordered", "polaroid", "letterboxed", "circle-accent"];
|
|
1269
|
+
declare const PAGE_SHADOWS: readonly ["none", "soft", "crisp", "heavy"];
|
|
1270
|
+
declare const PAGE_QUOTE_MARKS: readonly ["none", "oversized-glyph", "accent-bar"];
|
|
1271
|
+
declare const PAGE_NUMERAL_STYLES: readonly ["plain", "oversized", "boxed", "mono"];
|
|
1272
|
+
declare const PAGE_PATTERNS: readonly ["none", "dots", "grid", "diagonal", "noise"];
|
|
1273
|
+
declare const PAGE_EMPHASES: readonly ["lead", "strong", "standard", "quiet"];
|
|
1274
|
+
declare const PAGE_BACKGROUNDS: readonly ["base", "alternate", "accent", "media"];
|
|
1275
|
+
declare const PAGE_ACCENT_STRATEGIES: readonly ["primary-only", "cycle", "alternate-two", "none"];
|
|
1276
|
+
|
|
1145
1277
|
/** Current Theme schema version. Bump on breaking changes; loader migrates. */
|
|
1146
1278
|
declare const THEME_SCHEMA_VERSION: "1";
|
|
1147
1279
|
|
|
@@ -1344,6 +1476,12 @@ interface Theme {
|
|
|
1344
1476
|
colorSchemes: Record<string, ThemeColorScheme>;
|
|
1345
1477
|
/** Optional persistent layers baked into the theme */
|
|
1346
1478
|
persistentLayers?: PersistentLayerConfig;
|
|
1479
|
+
/**
|
|
1480
|
+
* Optional page art direction for Page (linear) mode. When absent,
|
|
1481
|
+
* `resolvePageStyle`/`defaultPageStyle` derive one from the fields above,
|
|
1482
|
+
* so legacy themes render pages without declaring this.
|
|
1483
|
+
*/
|
|
1484
|
+
pageStyle?: ThemePageStyle;
|
|
1347
1485
|
}
|
|
1348
1486
|
/**
|
|
1349
1487
|
* Recursively makes every property optional.
|
|
@@ -1819,7 +1957,7 @@ interface Block {
|
|
|
1819
1957
|
* A visual element within a block.
|
|
1820
1958
|
* Layers are composited back-to-front (first layer is background).
|
|
1821
1959
|
*/
|
|
1822
|
-
type Layer = ImageLayer | TextLayer | ShapeLayer | PathLayer | MapLayer | VideoLayer | TableLayer | TreeLayer;
|
|
1960
|
+
type Layer = ImageLayer | TextLayer | ShapeLayer | PathLayer | MapLayer | VideoLayer | TableLayer | TreeLayer | MermaidLayer;
|
|
1823
1961
|
interface BaseLayer {
|
|
1824
1962
|
/** Unique identifier for this layer */
|
|
1825
1963
|
id: string;
|
|
@@ -2176,6 +2314,25 @@ interface TreeLayerStyle {
|
|
|
2176
2314
|
/** FontAwesome icon token for leaves (default `file`). */
|
|
2177
2315
|
fileIcon?: string;
|
|
2178
2316
|
}
|
|
2317
|
+
/**
|
|
2318
|
+
* Mermaid diagram layer — renders an authored `mermaid` code fence through
|
|
2319
|
+
* the official Mermaid runtime while keeping the fence source authoritative.
|
|
2320
|
+
* Like video/table/tree layers, the browser renderer hosts the diagram in an
|
|
2321
|
+
* SVG `<foreignObject>` so it participates in slide layout and frame capture.
|
|
2322
|
+
*/
|
|
2323
|
+
interface MermaidLayer extends BaseLayer {
|
|
2324
|
+
type: 'mermaid';
|
|
2325
|
+
content: {
|
|
2326
|
+
/** Complete Mermaid source, excluding the Markdown fence delimiters. */
|
|
2327
|
+
source: string;
|
|
2328
|
+
/** Theme-derived panel color behind the generated SVG. */
|
|
2329
|
+
background?: string;
|
|
2330
|
+
/** Theme-derived foreground used by loading/error states. */
|
|
2331
|
+
foreground?: string;
|
|
2332
|
+
/** Inner panel padding in pixels. */
|
|
2333
|
+
padding?: number;
|
|
2334
|
+
};
|
|
2335
|
+
}
|
|
2179
2336
|
/**
|
|
2180
2337
|
* Available map tile styles from free/open-source providers.
|
|
2181
2338
|
*/
|
|
@@ -2385,4 +2542,4 @@ declare function getBlockAtTime(blocks: Block[], time: number): Block | null;
|
|
|
2385
2542
|
*/
|
|
2386
2543
|
declare function getCaptionAtTime(captions: CaptionTrack | undefined, time: number): CaptionPhrase | null;
|
|
2387
2544
|
|
|
2388
|
-
export { type MapBlockInput as $, type AccentImage as A, type Block as B, type CaptionPhrase as C, DARK_SURFACE as D, type DiagramTemplateNode as E, type Doc as F, type DocBlock as G, type DocDiagnostic as H, type DrawingBlockInput as I, FRONTMATTER_CUSTOM_TEMPLATES_KEY as J, FRONTMATTER_CUSTOM_THEMES_KEY as K, type FactCardInput as L, type FontFamily as M, type FontFamilyKind as N, type FullBleedQuoteInput as O, type GradientBackgroundConfig as P, type ImageBackgroundConfig as Q, type ImageLayer as R, type ImageTreatment as S, type ImageWithCaptionInput as T, LIGHT_SURFACE as U, type Layer as V, type LayerRepeat as W, type LayoutHints as X, type LeftFeatureInput as Y, type LinearGradient as Z, type ListBlockInput as _, type AccentPosition as a, type
|
|
2545
|
+
export { type MapBlockInput as $, type AccentImage as A, type Block as B, type CaptionPhrase as C, DARK_SURFACE as D, type DiagramTemplateNode as E, type Doc as F, type DocBlock as G, type DocDiagnostic as H, type DrawingBlockInput as I, FRONTMATTER_CUSTOM_TEMPLATES_KEY as J, FRONTMATTER_CUSTOM_THEMES_KEY as K, type FactCardInput as L, type FontFamily as M, type FontFamilyKind as N, type FullBleedQuoteInput as O, type GradientBackgroundConfig as P, type ImageBackgroundConfig as Q, type ImageLayer as R, type ImageTreatment as S, type ImageWithCaptionInput as T, LIGHT_SURFACE as U, type Layer as V, type LayerRepeat as W, type LayoutHints as X, type LeftFeatureInput as Y, type LinearGradient as Z, type ListBlockInput as _, type AccentPosition as a, type TextLayer as a$, type MapLayer as a0, type MapMarker as a1, type MapTileStyle as a2, type MarkerStyle as a3, type MediaClip as a4, type MermaidLayer as a5, PAGE_ACCENT_STRATEGIES as a6, PAGE_BACKGROUNDS as a7, PAGE_BACKGROUND_RHYTHMS as a8, PAGE_DESIGN_FAMILIES as a9, type PersistentLayerTemplate as aA, type PersistentLayerTemplateConfig as aB, type PersistentLayerTemplateType as aC, type PhotoGridInput as aD, type Position as aE, type ProgressIndicatorConfig as aF, type PullQuoteInput as aG, type QuoteBlockInput as aH, type RawLayersInput as aI, type RenderStyle as aJ, type RightFeatureInput as aK, type ScheduledClip as aL, type SectionHeaderInput as aM, type ShapeFilter as aN, type ShapeLayer as aO, type ShapePattern as aP, type SolidBackgroundConfig as aQ, type StartBlockConfig as aR, type StatHighlightInput as aS, type SurfaceScheme as aT, THEME_SCHEMA_VERSION as aU, type TableLayer as aV, type TableLayerStyle as aW, type TemplateBlock as aX, type TemplateContext as aY, type TemplateFunction as aZ, type TemplateRegistry as a_, PAGE_DIVIDERS as aa, PAGE_EMPHASES as ab, PAGE_EYEBROWS as ac, PAGE_HEADING_CASES as ad, PAGE_HEADING_SCALES as ae, PAGE_HEADING_UNDERLINES as af, PAGE_HERO_STYLES as ag, PAGE_IMAGE_FRAMINGS as ah, PAGE_NUMERAL_STYLES as ai, PAGE_PATTERNS as aj, PAGE_QUOTE_MARKS as ak, PAGE_SECTION_KINDS as al, PAGE_SECTION_SPACINGS as am, PAGE_SHADOWS as an, type PageAccentRotation as ao, type PageBackground as ap, type PageDesignFamily as aq, type PageEmphasis as ar, type PageHeadingTreatment as as, type PageSectionKind as at, type PageSectionOverride as au, type PageTokens as av, type PathLayer as aw, type PatternBackgroundConfig as ax, type PersistentLayer as ay, type PersistentLayerConfig as az, type AmbientGradientConfig as b, type TextStyle as b0, type Theme as b1, type ThemeColorPalette as b2, type ThemeColorScheme as b3, type ThemePageStyle as b4, type ThemeRegistry as b5, type ThemeSchemaVersion as b6, type ThemeSeedColors as b7, type ThemeStyle as b8, type ThemeTypography as b9, getAspectRatioString as bA, getBlockAtTime as bB, getCaptionAtTime as bC, getDocPlaybackDuration as bD, getLayoutHints as bE, getSafeTextBounds as bF, getSegmentAtTime as bG, getTwoColumnPositions as bH, getViewport as bI, getViewportOrientation as bJ, isPersistentLayerTemplate as bK, isTemplateBlock as bL, scaledFontSize$1 as bM, resolveMediaSchedule as bN, scaledFontSize as bO, type TimelineBlockInput as ba, type TimelineTemplateEvent as bb, type TimelineTemplateLink as bc, type TimelineTemplateTrack as bd, type TitleBlockInput as be, type TitleCaptionConfig as bf, type TreeBlockInput as bg, type TreeLayer as bh, type TreeLayerItem as bi, type TreeLayerStyle as bj, type TreeTemplateItem as bk, type TwoColumnInput as bl, VIEWPORT_PRESETS as bm, type VideoLayer as bn, type VideoPullQuoteInput as bo, type VideoWithCaptionInput as bp, type ViewportConfig as bq, type ViewportOrientation as br, type ViewportPreset as bs, type VignetteConfig as bt, applySurface as bu, calculateDuration as bv, calculateFontScale as bw, createTemplateContext as bx, createTheme as by, createThemeRegistry as bz, type Animation as c, type AnimationType as d, type AudioBookmark as e, type AudioSegment as f, type AudioTimingData as g, type AudioTrack as h, type BlockConnection as i, type BorderStyle as j, type CaptionTrack as k, type CaptionWord as l, type ColorScheme as m, type ComparisonBarInput as n, type CornerBrandingConfig as o, type CustomTemplateDefinition as p, type CustomTemplateLayer as q, DEFAULT_DOC_FONT as r, DEFAULT_TITLE_FONT as s, type DataTableInput as t, type DateEventInput as u, type DeepPartial as v, type DefinitionCardInput as w, type DiagramBlockInput as x, type DiagramEdgeAnchor as y, type DiagramTemplateEdge as z };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as ImageLayer,
|
|
1
|
+
import { R as ImageLayer, a$ as TextLayer, aO as ShapeLayer, aw as PathLayer } from './Doc-BubIpWsp.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* ImageEditDoc — JSON document describing a layered, editable image.
|
|
File without changes
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
// src/schemas/Media.ts
|
|
2
|
+
function flatten(blocks, out = []) {
|
|
3
|
+
for (const b of blocks) {
|
|
4
|
+
out.push(b);
|
|
5
|
+
if (b.children && b.children.length > 0) flatten(b.children, out);
|
|
6
|
+
}
|
|
7
|
+
return out;
|
|
8
|
+
}
|
|
9
|
+
function clipLength(clip) {
|
|
10
|
+
if (clip.clipEnd == null) return null;
|
|
11
|
+
return Math.max(0, clip.clipEnd - (clip.clipStart ?? 0));
|
|
12
|
+
}
|
|
13
|
+
function baseTimelineEnd(doc) {
|
|
14
|
+
const blockEnd = flatten(doc.blocks).reduce(
|
|
15
|
+
(max, b) => Math.max(max, b.startTime + b.duration),
|
|
16
|
+
0
|
|
17
|
+
);
|
|
18
|
+
return Math.max(doc.duration ?? 0, blockEnd);
|
|
19
|
+
}
|
|
20
|
+
function resolveMediaSchedule(doc) {
|
|
21
|
+
const out = [];
|
|
22
|
+
const docEnd = baseTimelineEnd(doc);
|
|
23
|
+
for (const block of flatten(doc.blocks)) {
|
|
24
|
+
const blockEnd = block.startTime + block.duration;
|
|
25
|
+
for (const clip of block.media ?? []) {
|
|
26
|
+
const start = block.startTime + clip.startAt;
|
|
27
|
+
const len = clipLength(clip);
|
|
28
|
+
let end;
|
|
29
|
+
if (clip.spillover) {
|
|
30
|
+
end = len != null ? start + len : blockEnd;
|
|
31
|
+
} else {
|
|
32
|
+
end = len != null ? Math.min(start + len, blockEnd) : blockEnd;
|
|
33
|
+
}
|
|
34
|
+
out.push({
|
|
35
|
+
id: clip.id,
|
|
36
|
+
src: clip.src,
|
|
37
|
+
kind: clip.kind,
|
|
38
|
+
absoluteStart: start,
|
|
39
|
+
absoluteEnd: Math.max(start, end),
|
|
40
|
+
sourceIn: clip.clipStart ?? 0,
|
|
41
|
+
anchor: "block",
|
|
42
|
+
blockId: block.id,
|
|
43
|
+
...clip.sourceLine != null ? { sourceLine: clip.sourceLine } : {}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
for (const clip of doc.documentMedia ?? []) {
|
|
48
|
+
const start = clip.startAt;
|
|
49
|
+
const len = clipLength(clip);
|
|
50
|
+
const end = len != null ? start + len : docEnd;
|
|
51
|
+
out.push({
|
|
52
|
+
id: clip.id,
|
|
53
|
+
src: clip.src,
|
|
54
|
+
kind: clip.kind,
|
|
55
|
+
absoluteStart: start,
|
|
56
|
+
absoluteEnd: Math.max(start, end),
|
|
57
|
+
sourceIn: clip.clipStart ?? 0,
|
|
58
|
+
anchor: "document",
|
|
59
|
+
...clip.sourceLine != null ? { sourceLine: clip.sourceLine } : {}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
function getDocPlaybackDuration(doc) {
|
|
65
|
+
const base = baseTimelineEnd(doc);
|
|
66
|
+
const mediaEnd = resolveMediaSchedule(doc).reduce((max, c) => Math.max(max, c.absoluteEnd), 0);
|
|
67
|
+
return Math.max(base, mediaEnd);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// src/schemas/pageStyleDefaults.ts
|
|
71
|
+
var FAMILY_BY_RENDER_STYLE = {
|
|
72
|
+
standard: "clean",
|
|
73
|
+
minimalist: "clean",
|
|
74
|
+
documentary: "documentary",
|
|
75
|
+
magazine: "editorial",
|
|
76
|
+
bold: "brutalist",
|
|
77
|
+
"tech-dark": "terminal",
|
|
78
|
+
cinematic: "cinematic",
|
|
79
|
+
"warm-earth": "organic",
|
|
80
|
+
"morning-light": "soft",
|
|
81
|
+
gezellig: "soft"
|
|
82
|
+
};
|
|
83
|
+
var FAMILY_DEFAULTS = {
|
|
84
|
+
clean: {
|
|
85
|
+
sectionSpacing: "comfortable",
|
|
86
|
+
divider: "hairline",
|
|
87
|
+
backgroundRhythm: "alternate",
|
|
88
|
+
heroStyle: "stacked",
|
|
89
|
+
headingTreatment: { eyebrow: "kicker", scale: "regular", underline: "none" },
|
|
90
|
+
quoteMark: "accent-bar",
|
|
91
|
+
numeralStyle: "plain",
|
|
92
|
+
accentStrategy: "cycle"
|
|
93
|
+
},
|
|
94
|
+
editorial: {
|
|
95
|
+
sectionSpacing: "comfortable",
|
|
96
|
+
divider: "double-rule",
|
|
97
|
+
backgroundRhythm: "flat",
|
|
98
|
+
heroStyle: "split",
|
|
99
|
+
headingTreatment: { eyebrow: "kicker", scale: "display", underline: "none" },
|
|
100
|
+
quoteMark: "oversized-glyph",
|
|
101
|
+
numeralStyle: "oversized",
|
|
102
|
+
accentStrategy: "alternate-two"
|
|
103
|
+
},
|
|
104
|
+
brutalist: {
|
|
105
|
+
sectionSpacing: "compact",
|
|
106
|
+
divider: "thick-rule",
|
|
107
|
+
backgroundRhythm: "accent-bands",
|
|
108
|
+
heroStyle: "oversized-type",
|
|
109
|
+
headingTreatment: { eyebrow: "kicker", scale: "oversized", case: "uppercase" },
|
|
110
|
+
quoteMark: "none",
|
|
111
|
+
numeralStyle: "oversized",
|
|
112
|
+
accentStrategy: "cycle"
|
|
113
|
+
},
|
|
114
|
+
terminal: {
|
|
115
|
+
sectionSpacing: "compact",
|
|
116
|
+
divider: "hairline",
|
|
117
|
+
backgroundRhythm: "tinted-panels",
|
|
118
|
+
heroStyle: "stacked",
|
|
119
|
+
headingTreatment: { eyebrow: "mono-tag", scale: "regular", underline: "none" },
|
|
120
|
+
quoteMark: "none",
|
|
121
|
+
numeralStyle: "mono",
|
|
122
|
+
accentStrategy: "primary-only"
|
|
123
|
+
},
|
|
124
|
+
cinematic: {
|
|
125
|
+
sectionSpacing: "generous",
|
|
126
|
+
divider: "gap-only",
|
|
127
|
+
backgroundRhythm: "flat",
|
|
128
|
+
heroStyle: "full-bleed",
|
|
129
|
+
headingTreatment: { eyebrow: "kicker", scale: "display", case: "uppercase" },
|
|
130
|
+
quoteMark: "none",
|
|
131
|
+
numeralStyle: "oversized",
|
|
132
|
+
accentStrategy: "primary-only"
|
|
133
|
+
},
|
|
134
|
+
documentary: {
|
|
135
|
+
sectionSpacing: "generous",
|
|
136
|
+
divider: "thick-rule",
|
|
137
|
+
backgroundRhythm: "flat",
|
|
138
|
+
heroStyle: "letterbox",
|
|
139
|
+
headingTreatment: { eyebrow: "numbered", scale: "display", underline: "none" },
|
|
140
|
+
quoteMark: "accent-bar",
|
|
141
|
+
numeralStyle: "boxed",
|
|
142
|
+
accentStrategy: "primary-only"
|
|
143
|
+
},
|
|
144
|
+
organic: {
|
|
145
|
+
sectionSpacing: "comfortable",
|
|
146
|
+
divider: "thick-rule",
|
|
147
|
+
backgroundRhythm: "tinted-panels",
|
|
148
|
+
heroStyle: "stacked",
|
|
149
|
+
headingTreatment: { eyebrow: "kicker", scale: "regular", underline: "accent-bar" },
|
|
150
|
+
quoteMark: "oversized-glyph",
|
|
151
|
+
numeralStyle: "boxed",
|
|
152
|
+
accentStrategy: "alternate-two"
|
|
153
|
+
},
|
|
154
|
+
soft: {
|
|
155
|
+
sectionSpacing: "comfortable",
|
|
156
|
+
divider: "dotted",
|
|
157
|
+
backgroundRhythm: "tinted-panels",
|
|
158
|
+
heroStyle: "split",
|
|
159
|
+
headingTreatment: { eyebrow: "kicker", scale: "regular", underline: "none" },
|
|
160
|
+
quoteMark: "oversized-glyph",
|
|
161
|
+
numeralStyle: "plain",
|
|
162
|
+
accentStrategy: "alternate-two"
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
function derivePattern(theme) {
|
|
166
|
+
const layers = [
|
|
167
|
+
...theme.persistentLayers?.bottomLayers ?? [],
|
|
168
|
+
...theme.persistentLayers?.topLayers ?? []
|
|
169
|
+
];
|
|
170
|
+
for (const layer of layers) {
|
|
171
|
+
if (typeof layer === "object" && layer !== null && "template" in layer && layer.template === "patternBackground") {
|
|
172
|
+
const config = layer.config;
|
|
173
|
+
const pattern = config?.pattern;
|
|
174
|
+
if (pattern === "dots" || pattern === "grid" || pattern === "diagonal" || pattern === "noise") {
|
|
175
|
+
return pattern;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return void 0;
|
|
180
|
+
}
|
|
181
|
+
function defaultPageStyle(theme) {
|
|
182
|
+
const family = FAMILY_BY_RENDER_STYLE[theme.renderStyle?.name ?? ""] ?? "clean";
|
|
183
|
+
const defaults = FAMILY_DEFAULTS[family];
|
|
184
|
+
const cornerRadius = theme.style?.borderRadius ?? 6;
|
|
185
|
+
const treatmentType = theme.style?.imageTreatment?.type;
|
|
186
|
+
const imageFraming = treatmentType === "mono" || treatmentType === "duotone" ? "letterboxed" : cornerRadius > 0 ? "rounded" : "flush";
|
|
187
|
+
const tokens = {
|
|
188
|
+
contentMaxWidth: 760,
|
|
189
|
+
wideMaxWidth: 1100,
|
|
190
|
+
sectionSpacing: defaults.sectionSpacing,
|
|
191
|
+
cornerRadius,
|
|
192
|
+
divider: defaults.divider,
|
|
193
|
+
backgroundRhythm: defaults.backgroundRhythm,
|
|
194
|
+
heroStyle: defaults.heroStyle,
|
|
195
|
+
headingTreatment: { ...defaults.headingTreatment },
|
|
196
|
+
imageFraming,
|
|
197
|
+
shadow: theme.style?.textShadow ? "soft" : "none",
|
|
198
|
+
quoteMark: defaults.quoteMark,
|
|
199
|
+
numeralStyle: defaults.numeralStyle
|
|
200
|
+
};
|
|
201
|
+
const pattern = derivePattern(theme);
|
|
202
|
+
if (pattern) tokens.pattern = pattern;
|
|
203
|
+
return {
|
|
204
|
+
family,
|
|
205
|
+
tokens,
|
|
206
|
+
accentRotation: { strategy: defaults.accentStrategy }
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export {
|
|
211
|
+
resolveMediaSchedule,
|
|
212
|
+
getDocPlaybackDuration,
|
|
213
|
+
defaultPageStyle
|
|
214
|
+
};
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
DEFAULT_THEME,
|
|
3
3
|
applySurface,
|
|
4
4
|
resolveFontFamily
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-C33GTPUZ.js";
|
|
6
6
|
|
|
7
7
|
// src/jsonForm/chooseControl.ts
|
|
8
8
|
var ENUM_SEGMENTED_LIMIT = 4;
|
|
@@ -169,6 +169,74 @@ function resolveRef(schema, root) {
|
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
// src/jsonForm/evaluateWhen.ts
|
|
172
|
+
var MAX_CONDITION_REGEX_LENGTH = 256;
|
|
173
|
+
function isSafeConditionRegex(pattern) {
|
|
174
|
+
if (pattern.length === 0 || pattern.length > MAX_CONDITION_REGEX_LENGTH) return false;
|
|
175
|
+
if (/\\[1-9]|\(\?[=!<]/.test(pattern)) return false;
|
|
176
|
+
const groups = [];
|
|
177
|
+
let escaped = false;
|
|
178
|
+
let inClass = false;
|
|
179
|
+
let unboundedQuantifiers = 0;
|
|
180
|
+
for (let index = 0; index < pattern.length; index++) {
|
|
181
|
+
const ch = pattern[index];
|
|
182
|
+
if (escaped) {
|
|
183
|
+
escaped = false;
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
if (ch === "\\") {
|
|
187
|
+
escaped = true;
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
if (ch === "[") {
|
|
191
|
+
inClass = true;
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
if (ch === "]" && inClass) {
|
|
195
|
+
inClass = false;
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
if (inClass) continue;
|
|
199
|
+
if (ch === "(") {
|
|
200
|
+
groups.push({ hasQuantifier: false, hasAlternation: false });
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (ch === "|") {
|
|
204
|
+
const group = groups[groups.length - 1];
|
|
205
|
+
if (group) group.hasAlternation = true;
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
if (ch === ")") {
|
|
209
|
+
const group = groups.pop();
|
|
210
|
+
if (!group) return false;
|
|
211
|
+
const next = pattern[index + 1];
|
|
212
|
+
if (next && "*+?{".includes(next) && (group.hasQuantifier || group.hasAlternation)) {
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
if (next && "*+?{".includes(next)) {
|
|
216
|
+
const parent = groups[groups.length - 1];
|
|
217
|
+
if (parent) parent.hasQuantifier = true;
|
|
218
|
+
}
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
if ("*+?".includes(ch) || ch === "{") {
|
|
222
|
+
if (ch === "*" || ch === "+") unboundedQuantifiers += 1;
|
|
223
|
+
if (ch === "{") {
|
|
224
|
+
const close = pattern.indexOf("}", index + 1);
|
|
225
|
+
if (close < 0) return false;
|
|
226
|
+
const bounds = pattern.slice(index + 1, close);
|
|
227
|
+
if (!/^\d+(?:,\d*)?$/.test(bounds)) return false;
|
|
228
|
+
const values = bounds.split(",").filter(Boolean).map(Number);
|
|
229
|
+
if (values.some((value) => value > 1e3)) return false;
|
|
230
|
+
if (bounds.endsWith(",")) unboundedQuantifiers += 1;
|
|
231
|
+
index = close;
|
|
232
|
+
}
|
|
233
|
+
if (unboundedQuantifiers > 1) return false;
|
|
234
|
+
const group = groups[groups.length - 1];
|
|
235
|
+
if (group) group.hasQuantifier = true;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return !escaped && !inClass && groups.length === 0;
|
|
239
|
+
}
|
|
172
240
|
function evaluateWhen(when, rootData) {
|
|
173
241
|
const actual = getByPointer(rootData, when.field);
|
|
174
242
|
if (when.equals !== void 0) {
|
|
@@ -178,7 +246,8 @@ function evaluateWhen(when, rootData) {
|
|
|
178
246
|
return when.oneOf.some((v) => deepEqual(actual, v));
|
|
179
247
|
}
|
|
180
248
|
if (when.matches !== void 0) {
|
|
181
|
-
if (typeof actual !== "string") return false;
|
|
249
|
+
if (typeof actual !== "string" || actual.length > 1e5) return false;
|
|
250
|
+
if (!isSafeConditionRegex(when.matches)) return false;
|
|
182
251
|
try {
|
|
183
252
|
return new RegExp(when.matches).test(actual);
|
|
184
253
|
} catch {
|
|
@@ -266,10 +335,10 @@ export {
|
|
|
266
335
|
getByPointer,
|
|
267
336
|
setByPointer,
|
|
268
337
|
resolveRef,
|
|
338
|
+
isSafeConditionRegex,
|
|
269
339
|
evaluateWhen,
|
|
270
340
|
resolveFlag,
|
|
271
341
|
inferSchema,
|
|
272
342
|
buildJsonFormTokens,
|
|
273
343
|
resolveJsonFormTheme
|
|
274
344
|
};
|
|
275
|
-
//# sourceMappingURL=chunk-2PWOO4ZE.js.map
|