@bendyline/squisq 2.1.0 → 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-DynJleo-.d.ts → Doc-BubIpWsp.d.ts} +1 -1
- package/dist/{ImageEditDoc-Ca4Tr9uN.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-VWCJ2WXC.js → chunk-2ZWIXGAC.js} +0 -1
- package/dist/{chunk-VYFRI7R6.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-JI77MGAK.js → chunk-7ARJZYQY.js} +159 -120
- 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-JHZWYRSW.js → chunk-C33GTPUZ.js} +11 -4
- package/dist/{chunk-QUUPYOSP.js → chunk-CB45YGAM.js} +2 -3
- package/dist/{chunk-XNLB57UD.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-OTKVFVL6.js → chunk-I2O6W7DX.js} +116 -44
- 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-ILWDXLUK.js → chunk-RS5AP3J4.js} +49 -10
- 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 +27 -12
- package/dist/doc/index.js +16 -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 +11 -11
- package/dist/index.js +60 -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-DDzubQXo.d.ts → materializePageSection-wSLA2A1g.d.ts} +2 -2
- 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 +5 -5
- package/dist/schemas/index.js +5 -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-B72m0W1y.d.ts → themeLibrary-DU9mUmVl.d.ts} +1 -1
- package/dist/timing/index.js +3 -4
- package/dist/transform/index.d.ts +3 -3
- 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-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-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-FVTQSNR7.js.map +0 -1
- package/dist/chunk-GZY66SDN.js.map +0 -1
- package/dist/chunk-ILWDXLUK.js.map +0 -1
- package/dist/chunk-JHZWYRSW.js.map +0 -1
- package/dist/chunk-JI77MGAK.js.map +0 -1
- package/dist/chunk-JOQYPRDZ.js.map +0 -1
- package/dist/chunk-OTKVFVL6.js.map +0 -1
- package/dist/chunk-PGGGKYWG.js +0 -1
- package/dist/chunk-PGGGKYWG.js.map +0 -1
- package/dist/chunk-Q7LROV2H.js.map +0 -1
- package/dist/chunk-QE7TWGVT.js.map +0 -1
- package/dist/chunk-QUUPYOSP.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-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-VWCJ2WXC.js.map +0 -1
- package/dist/chunk-VYFRI7R6.js.map +0 -1
- package/dist/chunk-XNLB57UD.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 -167
- package/src/__tests__/materializePageSections.test.ts +0 -404
- 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__/pageStyle.test.ts +0 -258
- 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 -173
- 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 -161
- package/src/doc/markdownToDoc.ts +0 -1054
- package/src/doc/materializeBlockLayers.ts +0 -465
- package/src/doc/mediaAnnotations.ts +0 -120
- package/src/doc/page/PageSection.ts +0 -174
- package/src/doc/page/materializePageSection.ts +0 -616
- package/src/doc/page/resolvePageBlock.ts +0 -108
- package/src/doc/page/sectionExtractors.ts +0 -466
- package/src/doc/pageCss.ts +0 -628
- 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 -424
- 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 -1073
- 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/PageStyle.ts +0 -213
- package/src/schemas/Theme.ts +0 -413
- 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 -31
- package/src/schemas/pageStyleDefaults.ts +0 -204
- package/src/schemas/themeCompile.ts +0 -244
- package/src/schemas/themeConstants.ts +0 -2
- package/src/schemas/themeLibrary.ts +0 -60
- package/src/schemas/themeValidator.ts +0 -609
- package/src/schemas/themes/bold.json +0 -77
- package/src/schemas/themes/cinematic.json +0 -143
- package/src/schemas/themes/documentary.json +0 -125
- package/src/schemas/themes/gezellig.json +0 -123
- package/src/schemas/themes/index.ts +0 -53
- package/src/schemas/themes/magazine.json +0 -126
- package/src/schemas/themes/minimalist.json +0 -74
- package/src/schemas/themes/morning-light.json +0 -117
- package/src/schemas/themes/standard-dark.json +0 -109
- package/src/schemas/themes/standard.json +0 -98
- package/src/schemas/themes/tech-dark.json +0 -143
- package/src/schemas/themes/warm-earth.json +0 -74
- 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 -217
- package/src/transform/styles/dataDriven.ts +0 -18
- package/src/transform/styles/documentary.ts +0 -18
- package/src/transform/styles/index.ts +0 -5
- package/src/transform/styles/magazine.ts +0 -19
- package/src/transform/styles/minimal.ts +0 -18
- package/src/transform/styles/narrative.ts +0 -19
- package/src/transform/templateSelector.ts +0 -389
- package/src/transform/timingAllocator.ts +0 -257
- package/src/transform/types.ts +0 -158
- 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
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Theme Compilation
|
|
3
|
-
*
|
|
4
|
-
* Turns a partial Theme (typically authored by the customizer panel from
|
|
5
|
-
* a few seed colors and preset choices) into a complete, validated Theme
|
|
6
|
-
* by:
|
|
7
|
-
*
|
|
8
|
-
* 1. Filling unspecified fields from a hardcoded `STARTER_THEME`.
|
|
9
|
-
* 2. Deriving missing color slots from `seedColors` via OKLCh math.
|
|
10
|
-
* 3. Validating the result.
|
|
11
|
-
*
|
|
12
|
-
* Built-in themes ship as fully-specified Theme JSON and skip this step.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import type {
|
|
16
|
-
Theme,
|
|
17
|
-
DeepPartial,
|
|
18
|
-
ThemeColorPalette,
|
|
19
|
-
ThemeColorScheme,
|
|
20
|
-
ThemeSeedColors,
|
|
21
|
-
FontFamily,
|
|
22
|
-
} from './Theme.js';
|
|
23
|
-
import { THEME_SCHEMA_VERSION, createTheme } from './Theme.js';
|
|
24
|
-
import { assertTheme } from './themeValidator.js';
|
|
25
|
-
import { defaultPageStyle } from './pageStyleDefaults.js';
|
|
26
|
-
import {
|
|
27
|
-
oklchLighten,
|
|
28
|
-
oklchDarken,
|
|
29
|
-
oklchSetChroma,
|
|
30
|
-
pickContrastingText,
|
|
31
|
-
relativeLuminance,
|
|
32
|
-
deriveScale,
|
|
33
|
-
isHex,
|
|
34
|
-
} from './colorUtils.js';
|
|
35
|
-
|
|
36
|
-
/** Internal default theme used to fill in fields the customizer doesn't expose. */
|
|
37
|
-
const STARTER_BODY_FONT: FontFamily = { stackId: 'system-sans' };
|
|
38
|
-
const STARTER_TITLE_FONT: FontFamily = { stackId: 'system-serif' };
|
|
39
|
-
const STARTER_MONO_FONT: FontFamily = { stackId: 'system-mono' };
|
|
40
|
-
|
|
41
|
-
const STARTER_COLOR_SCHEMES: Record<string, ThemeColorScheme> = {
|
|
42
|
-
blue: { bg: '#1a365d', text: '#63b3ed', accent: '#90cdf4' },
|
|
43
|
-
green: { bg: '#22543d', text: '#9ae6b4', accent: '#68d391' },
|
|
44
|
-
purple: { bg: '#44337a', text: '#d6bcfa', accent: '#b794f4' },
|
|
45
|
-
red: { bg: '#742a2a', text: '#fc8181', accent: '#feb2b2' },
|
|
46
|
-
orange: { bg: '#744210', text: '#fbd38d', accent: '#f6ad55' },
|
|
47
|
-
teal: { bg: '#234e52', text: '#81e6d9', accent: '#4fd1c5' },
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export const STARTER_THEME: Theme = {
|
|
51
|
-
schemaVersion: THEME_SCHEMA_VERSION,
|
|
52
|
-
id: 'custom',
|
|
53
|
-
name: 'Custom Theme',
|
|
54
|
-
description: 'Customizer starter — gets overridden by user choices.',
|
|
55
|
-
colors: {
|
|
56
|
-
primary: '#3182ce',
|
|
57
|
-
secondary: '#4a5568',
|
|
58
|
-
background: '#1a202c',
|
|
59
|
-
backgroundLight: '#2d3748',
|
|
60
|
-
text: '#f7fafc',
|
|
61
|
-
textMuted: '#a0aec0',
|
|
62
|
-
highlight: '#4299e1',
|
|
63
|
-
warning: '#fc8181',
|
|
64
|
-
},
|
|
65
|
-
typography: {
|
|
66
|
-
bodyFont: STARTER_BODY_FONT,
|
|
67
|
-
titleFont: STARTER_TITLE_FONT,
|
|
68
|
-
monoFont: STARTER_MONO_FONT,
|
|
69
|
-
titleWeight: 'bold',
|
|
70
|
-
},
|
|
71
|
-
style: {
|
|
72
|
-
textShadow: true,
|
|
73
|
-
overlayOpacity: 0.45,
|
|
74
|
-
animationSpeed: 1.0,
|
|
75
|
-
borderRadius: 6,
|
|
76
|
-
},
|
|
77
|
-
renderStyle: {
|
|
78
|
-
name: 'standard',
|
|
79
|
-
defaultTextAnimation: 'fadeIn',
|
|
80
|
-
defaultImageAnimation: 'slowZoom',
|
|
81
|
-
ambientMotion: true,
|
|
82
|
-
defaultTransition: { type: 'fade', duration: 0.7 },
|
|
83
|
-
},
|
|
84
|
-
colorSchemes: STARTER_COLOR_SCHEMES,
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Derive a full `ThemeColorPalette` from `seedColors`, with any explicit
|
|
89
|
-
* `partialColors` taking precedence over derived values. Background and
|
|
90
|
-
* text are guessed from luminance when the user gave only a primary.
|
|
91
|
-
*/
|
|
92
|
-
export function deriveColorPalette(
|
|
93
|
-
seeds: ThemeSeedColors,
|
|
94
|
-
partialColors: Partial<ThemeColorPalette> = {},
|
|
95
|
-
opts: { contrast?: 'subtle' | 'balanced' | 'high' } = {},
|
|
96
|
-
): ThemeColorPalette {
|
|
97
|
-
const spread = opts.contrast === 'high' ? 0.22 : opts.contrast === 'subtle' ? 0.08 : 0.15;
|
|
98
|
-
|
|
99
|
-
const primary = seeds.primary;
|
|
100
|
-
const secondary = seeds.secondary ?? oklchSetChroma(oklchLighten(primary, 0.05), 0.5);
|
|
101
|
-
const accent = seeds.accent ?? oklchLighten(primary, spread);
|
|
102
|
-
|
|
103
|
-
// Decide light vs dark surface from the explicit background, the seed background,
|
|
104
|
-
// or default to dark.
|
|
105
|
-
const bgSeed = partialColors.background ?? seeds.background;
|
|
106
|
-
let background: string;
|
|
107
|
-
if (bgSeed) {
|
|
108
|
-
background = bgSeed;
|
|
109
|
-
} else {
|
|
110
|
-
// Pick a dark or light background that contrasts with primary
|
|
111
|
-
background = relativeLuminance(primary) > 0.5 ? '#0a0a0a' : '#1a202c';
|
|
112
|
-
}
|
|
113
|
-
const isLightSurface = relativeLuminance(background) > 0.5;
|
|
114
|
-
|
|
115
|
-
const backgroundLight =
|
|
116
|
-
partialColors.backgroundLight ??
|
|
117
|
-
(isLightSurface ? oklchDarken(background, 0.04) : oklchLighten(background, 0.04));
|
|
118
|
-
|
|
119
|
-
const text =
|
|
120
|
-
partialColors.text ?? seeds.text ?? pickContrastingText(background, '#f7fafc', '#1a202c');
|
|
121
|
-
const textMuted =
|
|
122
|
-
partialColors.textMuted ??
|
|
123
|
-
(isLightSurface ? oklchLighten(text, 0.25) : oklchDarken(text, 0.25));
|
|
124
|
-
|
|
125
|
-
const highlight = partialColors.highlight ?? accent;
|
|
126
|
-
const warning = partialColors.warning ?? '#fc8181';
|
|
127
|
-
|
|
128
|
-
return {
|
|
129
|
-
primary: partialColors.primary ?? primary,
|
|
130
|
-
secondary: partialColors.secondary ?? secondary,
|
|
131
|
-
background,
|
|
132
|
-
backgroundLight,
|
|
133
|
-
text,
|
|
134
|
-
textMuted,
|
|
135
|
-
highlight,
|
|
136
|
-
warning,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Expand one accent color into a full `{bg, text, accent}` color scheme via
|
|
142
|
-
* the OKLCh scale — dark saturated bg, light readable text, the picked accent.
|
|
143
|
-
* Falls back to a neutral scheme when the input isn't a valid hex. Shared by
|
|
144
|
-
* the editor's accent list and file-import theme inference so both derive
|
|
145
|
-
* identical schemes from the same accent.
|
|
146
|
-
*/
|
|
147
|
-
export function accentToColorScheme(accent: string): ThemeColorScheme {
|
|
148
|
-
if (!isHex(accent)) return { bg: '#1a202c', text: '#e2e8f0', accent: '#63b3ed' };
|
|
149
|
-
const scale = deriveScale(accent, 0.3);
|
|
150
|
-
return { bg: scale.darker2, text: scale.lighter2, accent: scale.base };
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/** Map a contrast preset to numeric spread used by `deriveColorPalette`. */
|
|
154
|
-
export type ContrastPreset = 'subtle' | 'balanced' | 'high';
|
|
155
|
-
|
|
156
|
-
export interface CompileOptions {
|
|
157
|
-
/** Contrast level for OKLCh derivation (default 'balanced'). */
|
|
158
|
-
contrast?: ContrastPreset;
|
|
159
|
-
/**
|
|
160
|
-
* Base theme to inherit from. When provided, the partial is deep-merged
|
|
161
|
-
* over this theme instead of the neutral `STARTER_THEME`, so the compiled
|
|
162
|
-
* theme inherits the base's render style, color schemes, typography, and
|
|
163
|
-
* persistent layers — and only the fields the user changed are overridden.
|
|
164
|
-
* The base's id is recorded on the result as `basedOn`.
|
|
165
|
-
*/
|
|
166
|
-
base?: Theme;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Compile a partial Theme into a complete one. Fills missing fields from
|
|
171
|
-
* the base (`opts.base` when given, else `STARTER_THEME`), derives missing
|
|
172
|
-
* color slots from `seedColors` (when present), and validates the result.
|
|
173
|
-
*/
|
|
174
|
-
export function compileTheme(partial: DeepPartial<Theme>, opts: CompileOptions = {}): Theme {
|
|
175
|
-
// Step 1: deep-merge over the base (a chosen theme, or the neutral starter)
|
|
176
|
-
const base = opts.base ?? STARTER_THEME;
|
|
177
|
-
const merged = createTheme(base, partial);
|
|
178
|
-
merged.schemaVersion = THEME_SCHEMA_VERSION;
|
|
179
|
-
// Record which theme this was derived from so a customizer can re-inherit.
|
|
180
|
-
if (opts.base && !merged.basedOn) merged.basedOn = opts.base.id;
|
|
181
|
-
|
|
182
|
-
// Step 1b: typography fonts are discriminated unions ({stackId} | {custom}),
|
|
183
|
-
// so deep-merge would leave stale keys from the starter when the partial
|
|
184
|
-
// switches form. Replace each font wholesale when explicitly provided.
|
|
185
|
-
const partialTypography = partial.typography;
|
|
186
|
-
if (partialTypography) {
|
|
187
|
-
if (partialTypography.titleFont !== undefined) {
|
|
188
|
-
merged.typography.titleFont = partialTypography.titleFont as FontFamily;
|
|
189
|
-
}
|
|
190
|
-
if (partialTypography.bodyFont !== undefined) {
|
|
191
|
-
merged.typography.bodyFont = partialTypography.bodyFont as FontFamily;
|
|
192
|
-
}
|
|
193
|
-
if (partialTypography.monoFont !== undefined) {
|
|
194
|
-
merged.typography.monoFont = partialTypography.monoFont as FontFamily;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Step 1c: colorSchemes is a map the user edits wholesale (add / remove
|
|
199
|
-
// accents). Deep-merge can't delete keys, so replace it outright when the
|
|
200
|
-
// partial provides it — mirroring the font replacement above. This lets a
|
|
201
|
-
// removed accent actually disappear rather than lingering from the base.
|
|
202
|
-
if (partial.colorSchemes !== undefined) {
|
|
203
|
-
merged.colorSchemes = partial.colorSchemes as Record<string, ThemeColorScheme>;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
// Step 2: derive missing color slots from seeds, if present
|
|
207
|
-
if (merged.seedColors) {
|
|
208
|
-
const partialColors = (partial.colors ?? {}) as Partial<ThemeColorPalette>;
|
|
209
|
-
merged.colors = deriveColorPalette(merged.seedColors, partialColors, {
|
|
210
|
-
contrast: opts.contrast,
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// Step 2b: fill page art direction from existing fields when absent, so
|
|
215
|
-
// every compiled theme carries an explicit, serializable pageStyle.
|
|
216
|
-
if (!merged.pageStyle) {
|
|
217
|
-
merged.pageStyle = defaultPageStyle(merged);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
// Step 3: validate
|
|
221
|
-
return assertTheme(merged, `compiled theme "${merged.id}"`);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Parse a JSON string into a validated Theme. Throws on invalid input.
|
|
226
|
-
*/
|
|
227
|
-
export function parseTheme(json: string): Theme {
|
|
228
|
-
let parsed: unknown;
|
|
229
|
-
try {
|
|
230
|
-
parsed = JSON.parse(json);
|
|
231
|
-
} catch (err: unknown) {
|
|
232
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
233
|
-
throw new Error(`Invalid theme JSON: ${msg}`);
|
|
234
|
-
}
|
|
235
|
-
return assertTheme(parsed, 'parsed theme');
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Serialize a Theme to a stable, pretty-printed JSON string. Round-trips
|
|
240
|
-
* cleanly through `parseTheme`.
|
|
241
|
-
*/
|
|
242
|
-
export function serializeTheme(theme: Theme): string {
|
|
243
|
-
return JSON.stringify(theme, null, 2);
|
|
244
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Built-in Theme Library
|
|
3
|
-
*
|
|
4
|
-
* Public entry point for theme lookup. Built-in themes live as JSON
|
|
5
|
-
* sidecars in [./themes/](./themes/) — they share the exact same shape
|
|
6
|
-
* as customizer-authored themes (no two-tier distinction).
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { THEMES, resolveTheme } from '@bendyline/squisq/schemas';
|
|
11
|
-
*
|
|
12
|
-
* const theme = resolveTheme('minimalist'); // built-in lookup by id
|
|
13
|
-
* const theme = THEMES.documentary; // direct access to a built-in
|
|
14
|
-
* ```
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import type { Theme, ThemeRegistry } from './Theme.js';
|
|
18
|
-
import { BUILTIN_THEMES } from './themes/index.js';
|
|
19
|
-
import { cloneAndFreezeData } from '../internal/immutable.js';
|
|
20
|
-
|
|
21
|
-
/** All built-in themes, keyed by id. */
|
|
22
|
-
export const THEMES: Readonly<Record<string, Theme>> = Object.freeze(
|
|
23
|
-
Object.fromEntries(
|
|
24
|
-
Object.entries(BUILTIN_THEMES).map(([id, theme]) => [id, cloneAndFreezeData(theme)]),
|
|
25
|
-
),
|
|
26
|
-
);
|
|
27
|
-
|
|
28
|
-
/** The default theme id. */
|
|
29
|
-
export const DEFAULT_THEME_ID = 'standard';
|
|
30
|
-
|
|
31
|
-
/** The default theme (standard — safe system fonts, no external dependencies). */
|
|
32
|
-
export const DEFAULT_THEME: Theme = THEMES[DEFAULT_THEME_ID];
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Resolve a theme by id. When a caller-owned registry is supplied its themes
|
|
36
|
-
* take precedence over built-ins; unknown ids fall back to the default.
|
|
37
|
-
*/
|
|
38
|
-
export function resolveTheme(id: string | undefined, registry?: ThemeRegistry): Theme {
|
|
39
|
-
const registered = id ? registry?.get(id) : undefined;
|
|
40
|
-
if (registered) return registered;
|
|
41
|
-
if (id && id in THEMES) return THEMES[id];
|
|
42
|
-
return DEFAULT_THEME;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/** Get built-in ids plus ids from an optional caller-owned registry. */
|
|
46
|
-
export function getAvailableThemes(registry?: ThemeRegistry): string[] {
|
|
47
|
-
return Array.from(
|
|
48
|
-
new Set([...Object.keys(THEMES), ...(registry?.list().map((theme) => theme.id) ?? [])]),
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/** Get summaries for built-ins plus an optional caller-owned registry. */
|
|
53
|
-
export function getThemeSummaries(
|
|
54
|
-
registry?: ThemeRegistry,
|
|
55
|
-
): Array<{ id: string; name: string; description?: string }> {
|
|
56
|
-
return getAvailableThemes(registry).map((id) => {
|
|
57
|
-
const theme = resolveTheme(id, registry);
|
|
58
|
-
return { id, name: theme.name, description: theme.description };
|
|
59
|
-
});
|
|
60
|
-
}
|