postext 1.8.5 → 1.9.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/dist/__bench__/cjkChapter.bench.test.d.ts +2 -0
- package/dist/__bench__/cjkChapter.bench.test.d.ts.map +1 -0
- package/dist/__bench__/cjkChapter.bench.test.js +71 -0
- package/dist/__bench__/cjkChapter.bench.test.js.map +1 -0
- package/dist/__tests__/bundle.test.js +16 -0
- package/dist/__tests__/bundle.test.js.map +1 -1
- package/dist/__tests__/canvasDirection.test.d.ts +2 -0
- package/dist/__tests__/canvasDirection.test.d.ts.map +1 -0
- package/dist/__tests__/canvasDirection.test.js +45 -0
- package/dist/__tests__/canvasDirection.test.js.map +1 -0
- package/dist/__tests__/chineseLocale.test.d.ts +2 -0
- package/dist/__tests__/chineseLocale.test.d.ts.map +1 -0
- package/dist/__tests__/chineseLocale.test.js +253 -0
- package/dist/__tests__/chineseLocale.test.js.map +1 -0
- package/dist/__tests__/chineseNumbering.test.d.ts +2 -0
- package/dist/__tests__/chineseNumbering.test.d.ts.map +1 -0
- package/dist/__tests__/chineseNumbering.test.js +376 -0
- package/dist/__tests__/chineseNumbering.test.js.map +1 -0
- package/dist/__tests__/cjk/annotations.test.d.ts +2 -0
- package/dist/__tests__/cjk/annotations.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/annotations.test.js +483 -0
- package/dist/__tests__/cjk/annotations.test.js.map +1 -0
- package/dist/__tests__/cjk/annotationsRender.test.d.ts +2 -0
- package/dist/__tests__/cjk/annotationsRender.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/annotationsRender.test.js +263 -0
- package/dist/__tests__/cjk/annotationsRender.test.js.map +1 -0
- package/dist/__tests__/cjk/composer.test.d.ts +2 -0
- package/dist/__tests__/cjk/composer.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/composer.test.js +237 -0
- package/dist/__tests__/cjk/composer.test.js.map +1 -0
- package/dist/__tests__/cjk/composerEdges.test.d.ts +2 -0
- package/dist/__tests__/cjk/composerEdges.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/composerEdges.test.js +352 -0
- package/dist/__tests__/cjk/composerEdges.test.js.map +1 -0
- package/dist/__tests__/cjk/dashRule.test.d.ts +2 -0
- package/dist/__tests__/cjk/dashRule.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/dashRule.test.js +261 -0
- package/dist/__tests__/cjk/dashRule.test.js.map +1 -0
- package/dist/__tests__/cjk/fuzz.test.d.ts +2 -0
- package/dist/__tests__/cjk/fuzz.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/fuzz.test.js +102 -0
- package/dist/__tests__/cjk/fuzz.test.js.map +1 -0
- package/dist/__tests__/cjk/grid.test.d.ts +2 -0
- package/dist/__tests__/cjk/grid.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/grid.test.js +261 -0
- package/dist/__tests__/cjk/grid.test.js.map +1 -0
- package/dist/__tests__/cjk/justifyRender.test.d.ts +2 -0
- package/dist/__tests__/cjk/justifyRender.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/justifyRender.test.js +139 -0
- package/dist/__tests__/cjk/justifyRender.test.js.map +1 -0
- package/dist/__tests__/cjk/latinFastPath.test.d.ts +2 -0
- package/dist/__tests__/cjk/latinFastPath.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/latinFastPath.test.js +208 -0
- package/dist/__tests__/cjk/latinFastPath.test.js.map +1 -0
- package/dist/__tests__/cjk/markCutsLatin.test.d.ts +2 -0
- package/dist/__tests__/cjk/markCutsLatin.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/markCutsLatin.test.js +69 -0
- package/dist/__tests__/cjk/markCutsLatin.test.js.map +1 -0
- package/dist/__tests__/cjk/markRuns.test.d.ts +2 -0
- package/dist/__tests__/cjk/markRuns.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/markRuns.test.js +347 -0
- package/dist/__tests__/cjk/markRuns.test.js.map +1 -0
- package/dist/__tests__/cjk/punctuation.test.d.ts +2 -0
- package/dist/__tests__/cjk/punctuation.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/punctuation.test.js +440 -0
- package/dist/__tests__/cjk/punctuation.test.js.map +1 -0
- package/dist/__tests__/cjk/punctuationRender.test.d.ts +2 -0
- package/dist/__tests__/cjk/punctuationRender.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/punctuationRender.test.js +135 -0
- package/dist/__tests__/cjk/punctuationRender.test.js.map +1 -0
- package/dist/__tests__/cjk/rubyDescenders.test.d.ts +2 -0
- package/dist/__tests__/cjk/rubyDescenders.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/rubyDescenders.test.js +77 -0
- package/dist/__tests__/cjk/rubyDescenders.test.js.map +1 -0
- package/dist/__tests__/cjk/runt.test.d.ts +2 -0
- package/dist/__tests__/cjk/runt.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/runt.test.js +103 -0
- package/dist/__tests__/cjk/runt.test.js.map +1 -0
- package/dist/__tests__/cjk/sharedMarks.test.d.ts +2 -0
- package/dist/__tests__/cjk/sharedMarks.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/sharedMarks.test.js +347 -0
- package/dist/__tests__/cjk/sharedMarks.test.js.map +1 -0
- package/dist/__tests__/cjk/uprightDots.test.d.ts +2 -0
- package/dist/__tests__/cjk/uprightDots.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/uprightDots.test.js +47 -0
- package/dist/__tests__/cjk/uprightDots.test.js.map +1 -0
- package/dist/__tests__/cjk/wordJoiner.test.d.ts +2 -0
- package/dist/__tests__/cjk/wordJoiner.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/wordJoiner.test.js +47 -0
- package/dist/__tests__/cjk/wordJoiner.test.js.map +1 -0
- package/dist/__tests__/cjk/zhuyinTones.test.d.ts +2 -0
- package/dist/__tests__/cjk/zhuyinTones.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/zhuyinTones.test.js +72 -0
- package/dist/__tests__/cjk/zhuyinTones.test.js.map +1 -0
- package/dist/__tests__/contentLocale.test.d.ts +2 -0
- package/dist/__tests__/contentLocale.test.d.ts.map +1 -0
- package/dist/__tests__/contentLocale.test.js +167 -0
- package/dist/__tests__/contentLocale.test.js.map +1 -0
- package/dist/__tests__/defaults/cjk.test.d.ts +2 -0
- package/dist/__tests__/defaults/cjk.test.d.ts.map +1 -0
- package/dist/__tests__/defaults/cjk.test.js +70 -0
- package/dist/__tests__/defaults/cjk.test.js.map +1 -0
- package/dist/__tests__/design/designTextRender.test.js +31 -0
- package/dist/__tests__/design/designTextRender.test.js.map +1 -1
- package/dist/__tests__/design/imageAltText.test.d.ts +2 -0
- package/dist/__tests__/design/imageAltText.test.d.ts.map +1 -0
- package/dist/__tests__/design/imageAltText.test.js +126 -0
- package/dist/__tests__/design/imageAltText.test.js.map +1 -0
- package/dist/__tests__/exports.test.js +61 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
- package/dist/__tests__/indexChinese.test.d.ts +2 -0
- package/dist/__tests__/indexChinese.test.d.ts.map +1 -0
- package/dist/__tests__/indexChinese.test.js +190 -0
- package/dist/__tests__/indexChinese.test.js.map +1 -0
- package/dist/__tests__/parse/annotations.test.d.ts +2 -0
- package/dist/__tests__/parse/annotations.test.d.ts.map +1 -0
- package/dist/__tests__/parse/annotations.test.js +175 -0
- package/dist/__tests__/parse/annotations.test.js.map +1 -0
- package/dist/__tests__/parse/attrQuoting.test.js +10 -8
- package/dist/__tests__/parse/attrQuoting.test.js.map +1 -1
- package/dist/__tests__/parse/chineseText.test.d.ts +2 -0
- package/dist/__tests__/parse/chineseText.test.d.ts.map +1 -0
- package/dist/__tests__/parse/chineseText.test.js +352 -0
- package/dist/__tests__/parse/chineseText.test.js.map +1 -0
- package/dist/__tests__/parts.test.js +25 -0
- package/dist/__tests__/parts.test.js.map +1 -1
- package/dist/__tests__/pipeline/colonListRoom.test.js +20 -0
- package/dist/__tests__/pipeline/colonListRoom.test.js.map +1 -1
- package/dist/__tests__/presets/hongloumeng.test.d.ts +2 -0
- package/dist/__tests__/presets/hongloumeng.test.d.ts.map +1 -0
- package/dist/__tests__/presets/hongloumeng.test.js +484 -0
- package/dist/__tests__/presets/hongloumeng.test.js.map +1 -0
- package/dist/__tests__/vertical/canvasPaint.test.d.ts +2 -0
- package/dist/__tests__/vertical/canvasPaint.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/canvasPaint.test.js +229 -0
- package/dist/__tests__/vertical/canvasPaint.test.js.map +1 -0
- package/dist/__tests__/vertical/compositionPaint.test.d.ts +2 -0
- package/dist/__tests__/vertical/compositionPaint.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/compositionPaint.test.js +538 -0
- package/dist/__tests__/vertical/compositionPaint.test.js.map +1 -0
- package/dist/__tests__/vertical/geometry.test.d.ts +2 -0
- package/dist/__tests__/vertical/geometry.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/geometry.test.js +276 -0
- package/dist/__tests__/vertical/geometry.test.js.map +1 -0
- package/dist/__tests__/vertical/htmlSmoke.test.d.ts +2 -0
- package/dist/__tests__/vertical/htmlSmoke.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/htmlSmoke.test.js +25 -0
- package/dist/__tests__/vertical/htmlSmoke.test.js.map +1 -0
- package/dist/__tests__/vertical/htmlTurnedCells.test.d.ts +2 -0
- package/dist/__tests__/vertical/htmlTurnedCells.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/htmlTurnedCells.test.js +99 -0
- package/dist/__tests__/vertical/htmlTurnedCells.test.js.map +1 -0
- package/dist/__tests__/vertical/htmlVertical.test.d.ts +2 -0
- package/dist/__tests__/vertical/htmlVertical.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/htmlVertical.test.js +145 -0
- package/dist/__tests__/vertical/htmlVertical.test.js.map +1 -0
- package/dist/__tests__/vertical/lineAxis.test.d.ts +2 -0
- package/dist/__tests__/vertical/lineAxis.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/lineAxis.test.js +128 -0
- package/dist/__tests__/vertical/lineAxis.test.js.map +1 -0
- package/dist/__tests__/vertical/measurePaint.test.d.ts +2 -0
- package/dist/__tests__/vertical/measurePaint.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/measurePaint.test.js +259 -0
- package/dist/__tests__/vertical/measurePaint.test.js.map +1 -0
- package/dist/__tests__/vertical/orientation.test.d.ts +2 -0
- package/dist/__tests__/vertical/orientation.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/orientation.test.js +153 -0
- package/dist/__tests__/vertical/orientation.test.js.map +1 -0
- package/dist/__tests__/vertical/stub.d.ts +8 -0
- package/dist/__tests__/vertical/stub.d.ts.map +1 -0
- package/dist/__tests__/vertical/stub.js +37 -0
- package/dist/__tests__/vertical/stub.js.map +1 -0
- package/dist/__tests__/vertical/tateChuYoko.test.d.ts +2 -0
- package/dist/__tests__/vertical/tateChuYoko.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/tateChuYoko.test.js +270 -0
- package/dist/__tests__/vertical/tateChuYoko.test.js.map +1 -0
- package/dist/__tests__/vertical/uprightResources.test.d.ts +2 -0
- package/dist/__tests__/vertical/uprightResources.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/uprightResources.test.js +182 -0
- package/dist/__tests__/vertical/uprightResources.test.js.map +1 -0
- package/dist/__tests__/vertical/verticalDesignText.test.d.ts +2 -0
- package/dist/__tests__/vertical/verticalDesignText.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/verticalDesignText.test.js +190 -0
- package/dist/__tests__/vertical/verticalDesignText.test.js.map +1 -0
- package/dist/__tests__/vertical/verticalSpans.d.ts +25 -0
- package/dist/__tests__/vertical/verticalSpans.d.ts.map +1 -0
- package/dist/__tests__/vertical/verticalSpans.js +39 -0
- package/dist/__tests__/vertical/verticalSpans.js.map +1 -0
- package/dist/__tests__/vertical/verticalTwins.test.d.ts +2 -0
- package/dist/__tests__/vertical/verticalTwins.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/verticalTwins.test.js +71 -0
- package/dist/__tests__/vertical/verticalTwins.test.js.map +1 -0
- package/dist/bundle/adapters.d.ts +14 -5
- package/dist/bundle/adapters.d.ts.map +1 -1
- package/dist/bundle/adapters.js +4 -3
- package/dist/bundle/adapters.js.map +1 -1
- package/dist/bundle/codec.d.ts.map +1 -1
- package/dist/bundle/codec.js +27 -4
- package/dist/bundle/codec.js.map +1 -1
- package/dist/bundle/index.d.ts +1 -1
- package/dist/bundle/index.d.ts.map +1 -1
- package/dist/bundle/manifest.d.ts +6 -4
- package/dist/bundle/manifest.d.ts.map +1 -1
- package/dist/bundle/manifest.js +31 -32
- package/dist/bundle/manifest.js.map +1 -1
- package/dist/bundle/types.d.ts +7 -2
- package/dist/bundle/types.d.ts.map +1 -1
- package/dist/canvas-backend/annotations.d.ts +31 -0
- package/dist/canvas-backend/annotations.d.ts.map +1 -0
- package/dist/canvas-backend/annotations.js +120 -0
- package/dist/canvas-backend/annotations.js.map +1 -0
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +195 -15
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/decorations.d.ts +5 -0
- package/dist/canvas-backend/decorations.d.ts.map +1 -1
- package/dist/canvas-backend/decorations.js +27 -0
- package/dist/canvas-backend/decorations.js.map +1 -1
- package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
- package/dist/canvas-backend/headerFooter.js +32 -16
- package/dist/canvas-backend/headerFooter.js.map +1 -1
- package/dist/canvas-backend/index.d.ts +2 -0
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js +62 -2
- package/dist/canvas-backend/index.js.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.js +42 -5
- package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
- package/dist/canvas-backend/segmentText.d.ts +23 -0
- package/dist/canvas-backend/segmentText.d.ts.map +1 -0
- package/dist/canvas-backend/segmentText.js +41 -0
- package/dist/canvas-backend/segmentText.js.map +1 -0
- package/dist/canvas-backend/verticalText.d.ts +113 -0
- package/dist/canvas-backend/verticalText.d.ts.map +1 -0
- package/dist/canvas-backend/verticalText.js +437 -0
- package/dist/canvas-backend/verticalText.js.map +1 -0
- package/dist/chineseNumerals.d.ts +39 -0
- package/dist/chineseNumerals.d.ts.map +1 -0
- package/dist/chineseNumerals.js +192 -0
- package/dist/chineseNumerals.js.map +1 -0
- package/dist/cjkMarks.d.ts +61 -0
- package/dist/cjkMarks.d.ts.map +1 -0
- package/dist/cjkMarks.js +441 -0
- package/dist/cjkMarks.js.map +1 -0
- package/dist/columnClip.d.ts +13 -4
- package/dist/columnClip.d.ts.map +1 -1
- package/dist/columnClip.js +33 -5
- package/dist/columnClip.js.map +1 -1
- package/dist/configWarnings.d.ts.map +1 -1
- package/dist/configWarnings.js +18 -3
- package/dist/configWarnings.js.map +1 -1
- package/dist/defaults/bodyText.d.ts +4 -1
- package/dist/defaults/bodyText.d.ts.map +1 -1
- package/dist/defaults/bodyText.js +27 -5
- package/dist/defaults/bodyText.js.map +1 -1
- package/dist/defaults/calloutStyles.js +1 -1
- package/dist/defaults/calloutStyles.js.map +1 -1
- package/dist/defaults/captionStyle.d.ts.map +1 -1
- package/dist/defaults/captionStyle.js +14 -0
- package/dist/defaults/captionStyle.js.map +1 -1
- package/dist/defaults/cjk.d.ts +33 -0
- package/dist/defaults/cjk.d.ts.map +1 -0
- package/dist/defaults/cjk.js +234 -0
- package/dist/defaults/cjk.js.map +1 -0
- package/dist/defaults/headerFooter.d.ts.map +1 -1
- package/dist/defaults/headerFooter.js +2 -0
- package/dist/defaults/headerFooter.js.map +1 -1
- package/dist/defaults/headingStyles.d.ts.map +1 -1
- package/dist/defaults/headingStyles.js +4 -0
- package/dist/defaults/headingStyles.js.map +1 -1
- package/dist/defaults/headings.d.ts.map +1 -1
- package/dist/defaults/headings.js +13 -6
- package/dist/defaults/headings.js.map +1 -1
- package/dist/defaults/index.d.ts +1 -0
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +10 -1
- package/dist/defaults/index.js.map +1 -1
- package/dist/defaults/indexConfig.d.ts +2 -1
- package/dist/defaults/indexConfig.d.ts.map +1 -1
- package/dist/defaults/indexConfig.js +5 -0
- package/dist/defaults/indexConfig.js.map +1 -1
- package/dist/defaults/layout.d.ts.map +1 -1
- package/dist/defaults/layout.js +7 -0
- package/dist/defaults/layout.js.map +1 -1
- package/dist/defaults/orderedLists.d.ts +5 -2
- package/dist/defaults/orderedLists.d.ts.map +1 -1
- package/dist/defaults/orderedLists.js +20 -5
- package/dist/defaults/orderedLists.js.map +1 -1
- package/dist/defaults/page.d.ts +8 -2
- package/dist/defaults/page.d.ts.map +1 -1
- package/dist/defaults/page.js +24 -7
- package/dist/defaults/page.js.map +1 -1
- package/dist/defaults/resourceTypes.d.ts +3 -3
- package/dist/defaults/resourceTypes.d.ts.map +1 -1
- package/dist/defaults/resourceTypes.js +23 -9
- package/dist/defaults/resourceTypes.js.map +1 -1
- package/dist/defaults/tableStyle.d.ts.map +1 -1
- package/dist/defaults/tableStyle.js +8 -5
- package/dist/defaults/tableStyle.js.map +1 -1
- package/dist/design/layout.d.ts +33 -0
- package/dist/design/layout.d.ts.map +1 -1
- package/dist/design/layout.js +124 -18
- package/dist/design/layout.js.map +1 -1
- package/dist/design/placeholders.d.ts.map +1 -1
- package/dist/design/placeholders.js +5 -1
- package/dist/design/placeholders.js.map +1 -1
- package/dist/design/richText.d.ts +24 -4
- package/dist/design/richText.d.ts.map +1 -1
- package/dist/design/richText.js +77 -16
- package/dist/design/richText.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +635 -25
- package/dist/html-backend.js.map +1 -1
- package/dist/htmlAnnotations.d.ts +29 -0
- package/dist/htmlAnnotations.d.ts.map +1 -0
- package/dist/htmlAnnotations.js +86 -0
- package/dist/htmlAnnotations.js.map +1 -0
- package/dist/hyphenate.js +2 -1
- package/dist/hyphenate.js.map +1 -1
- package/dist/index.d.ts +28 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -8
- package/dist/index.js.map +1 -1
- package/dist/knuthPlass/pretextAdapter.d.ts +4 -1
- package/dist/knuthPlass/pretextAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/pretextAdapter.js +9 -5
- package/dist/knuthPlass/pretextAdapter.js.map +1 -1
- package/dist/knuthPlass/richAdapter.d.ts +15 -2
- package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/richAdapter.js +16 -6
- package/dist/knuthPlass/richAdapter.js.map +1 -1
- package/dist/knuthPlass/tracking.d.ts +1 -1
- package/dist/knuthPlass/tracking.d.ts.map +1 -1
- package/dist/knuthPlass/tracking.js +4 -3
- package/dist/knuthPlass/tracking.js.map +1 -1
- package/dist/knuthPlass/types.d.ts +3 -0
- package/dist/knuthPlass/types.d.ts.map +1 -1
- package/dist/lineInk.d.ts +13 -0
- package/dist/lineInk.d.ts.map +1 -1
- package/dist/lineInk.js +28 -1
- package/dist/lineInk.js.map +1 -1
- package/dist/locale.d.ts +91 -3
- package/dist/locale.d.ts.map +1 -1
- package/dist/locale.js +245 -1
- package/dist/locale.js.map +1 -1
- package/dist/looseLines.d.ts +11 -1
- package/dist/looseLines.d.ts.map +1 -1
- package/dist/looseLines.js +26 -1
- package/dist/looseLines.js.map +1 -1
- package/dist/measure/cache.d.ts.map +1 -1
- package/dist/measure/cache.js +51 -3
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/canvas.d.ts +25 -0
- package/dist/measure/canvas.d.ts.map +1 -1
- package/dist/measure/canvas.js +90 -1
- package/dist/measure/canvas.js.map +1 -1
- package/dist/measure/cjk.d.ts +8 -13
- package/dist/measure/cjk.d.ts.map +1 -1
- package/dist/measure/cjk.js +29 -53
- package/dist/measure/cjk.js.map +1 -1
- package/dist/measure/cjkAnnotate.d.ts +96 -0
- package/dist/measure/cjkAnnotate.d.ts.map +1 -0
- package/dist/measure/cjkAnnotate.js +237 -0
- package/dist/measure/cjkAnnotate.js.map +1 -0
- package/dist/measure/cjkClasses.d.ts +133 -0
- package/dist/measure/cjkClasses.d.ts.map +1 -0
- package/dist/measure/cjkClasses.js +273 -0
- package/dist/measure/cjkClasses.js.map +1 -0
- package/dist/measure/cjkCompose.d.ts +86 -0
- package/dist/measure/cjkCompose.d.ts.map +1 -0
- package/dist/measure/cjkCompose.js +2022 -0
- package/dist/measure/cjkCompose.js.map +1 -0
- package/dist/measure/cjkPunctuation.d.ts +248 -0
- package/dist/measure/cjkPunctuation.d.ts.map +1 -0
- package/dist/measure/cjkPunctuation.js +492 -0
- package/dist/measure/cjkPunctuation.js.map +1 -0
- package/dist/measure/graphemes.d.ts +13 -0
- package/dist/measure/graphemes.d.ts.map +1 -0
- package/dist/measure/graphemes.js +38 -0
- package/dist/measure/graphemes.js.map +1 -0
- package/dist/measure/index.d.ts +3 -0
- package/dist/measure/index.d.ts.map +1 -1
- package/dist/measure/index.js +2 -0
- package/dist/measure/index.js.map +1 -1
- package/dist/measure/links.d.ts +6 -2
- package/dist/measure/links.d.ts.map +1 -1
- package/dist/measure/links.js +15 -5
- package/dist/measure/links.js.map +1 -1
- package/dist/measure/markCuts.d.ts +37 -0
- package/dist/measure/markCuts.d.ts.map +1 -0
- package/dist/measure/markCuts.js +77 -0
- package/dist/measure/markCuts.js.map +1 -0
- package/dist/measure/plain.d.ts.map +1 -1
- package/dist/measure/plain.js +33 -11
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/rich.d.ts +88 -1
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +233 -111
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/rubyLift.d.ts +11 -0
- package/dist/measure/rubyLift.d.ts.map +1 -0
- package/dist/measure/rubyLift.js +57 -0
- package/dist/measure/rubyLift.js.map +1 -0
- package/dist/measure/spaces.d.ts +12 -2
- package/dist/measure/spaces.d.ts.map +1 -1
- package/dist/measure/spaces.js +21 -7
- package/dist/measure/spaces.js.map +1 -1
- package/dist/measure/types.d.ts +20 -1
- package/dist/measure/types.d.ts.map +1 -1
- package/dist/measure/types.js.map +1 -1
- package/dist/measure/vertical.d.ts +104 -0
- package/dist/measure/vertical.d.ts.map +1 -0
- package/dist/measure/vertical.js +184 -0
- package/dist/measure/vertical.js.map +1 -0
- package/dist/numberWords.d.ts +3 -10
- package/dist/numberWords.d.ts.map +1 -1
- package/dist/numberWords.js +21 -9
- package/dist/numberWords.js.map +1 -1
- package/dist/numbering.d.ts +23 -5
- package/dist/numbering.d.ts.map +1 -1
- package/dist/numbering.js +99 -14
- package/dist/numbering.js.map +1 -1
- package/dist/parse/annotations.d.ts +101 -0
- package/dist/parse/annotations.d.ts.map +1 -0
- package/dist/parse/annotations.js +556 -0
- package/dist/parse/annotations.js.map +1 -0
- package/dist/parse/attrs.d.ts +48 -1
- package/dist/parse/attrs.d.ts.map +1 -1
- package/dist/parse/attrs.js +121 -8
- package/dist/parse/attrs.js.map +1 -1
- package/dist/parse/blockParser.d.ts.map +1 -1
- package/dist/parse/blockParser.js +50 -24
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/index.d.ts +3 -1
- package/dist/parse/index.d.ts.map +1 -1
- package/dist/parse/index.js +1 -0
- package/dist/parse/index.js.map +1 -1
- package/dist/parse/injectSpans.d.ts +3 -1
- package/dist/parse/injectSpans.d.ts.map +1 -1
- package/dist/parse/injectSpans.js +29 -8
- package/dist/parse/injectSpans.js.map +1 -1
- package/dist/parse/inlineFormatting.d.ts +38 -6
- package/dist/parse/inlineFormatting.d.ts.map +1 -1
- package/dist/parse/inlineFormatting.js +139 -26
- package/dist/parse/inlineFormatting.js.map +1 -1
- package/dist/parse/inlineSnippet.d.ts +2 -1
- package/dist/parse/inlineSnippet.d.ts.map +1 -1
- package/dist/parse/inlineSnippet.js +6 -2
- package/dist/parse/inlineSnippet.js.map +1 -1
- package/dist/parse/orientationMarks.d.ts +49 -0
- package/dist/parse/orientationMarks.d.ts.map +1 -0
- package/dist/parse/orientationMarks.js +138 -0
- package/dist/parse/orientationMarks.js.map +1 -0
- package/dist/parse/softBreaks.d.ts +56 -0
- package/dist/parse/softBreaks.d.ts.map +1 -0
- package/dist/parse/softBreaks.js +271 -0
- package/dist/parse/softBreaks.js.map +1 -0
- package/dist/parse/sourceMapping.d.ts.map +1 -1
- package/dist/parse/sourceMapping.js +41 -0
- package/dist/parse/sourceMapping.js.map +1 -1
- package/dist/parse/types.d.ts +84 -0
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/annotations.d.ts +56 -0
- package/dist/pipeline/annotations.d.ts.map +1 -0
- package/dist/pipeline/annotations.js +181 -0
- package/dist/pipeline/annotations.js.map +1 -0
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +158 -47
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildBlockKind.d.ts +3 -0
- package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
- package/dist/pipeline/buildBlockKind.js +5 -3
- package/dist/pipeline/buildBlockKind.js.map +1 -1
- package/dist/pipeline/buildHelpers.d.ts +36 -6
- package/dist/pipeline/buildHelpers.d.ts.map +1 -1
- package/dist/pipeline/buildHelpers.js +55 -8
- package/dist/pipeline/buildHelpers.js.map +1 -1
- package/dist/pipeline/buildMeasurement.d.ts +4 -0
- package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
- package/dist/pipeline/buildMeasurement.js +3 -1
- package/dist/pipeline/buildMeasurement.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +25 -11
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/cjkGrid.d.ts +133 -0
- package/dist/pipeline/cjkGrid.d.ts.map +1 -0
- package/dist/pipeline/cjkGrid.js +191 -0
- package/dist/pipeline/cjkGrid.js.map +1 -0
- package/dist/pipeline/config.d.ts +13 -9
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +43 -18
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts +10 -0
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +174 -2
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/floatPlacement.d.ts +9 -3
- package/dist/pipeline/floatPlacement.d.ts.map +1 -1
- package/dist/pipeline/floatPlacement.js +17 -6
- package/dist/pipeline/floatPlacement.js.map +1 -1
- package/dist/pipeline/headerFooter.d.ts +5 -2
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +123 -28
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/headingDesignCuts.d.ts.map +1 -1
- package/dist/pipeline/headingDesignCuts.js +3 -1
- package/dist/pipeline/headingDesignCuts.js.map +1 -1
- package/dist/pipeline/headingStyles.d.ts +9 -3
- package/dist/pipeline/headingStyles.d.ts.map +1 -1
- package/dist/pipeline/headingStyles.js +23 -5
- package/dist/pipeline/headingStyles.js.map +1 -1
- package/dist/pipeline/indexDirective.d.ts.map +1 -1
- package/dist/pipeline/indexDirective.js +64 -20
- package/dist/pipeline/indexDirective.js.map +1 -1
- package/dist/pipeline/indexGroups.d.ts +55 -0
- package/dist/pipeline/indexGroups.d.ts.map +1 -0
- package/dist/pipeline/indexGroups.js +151 -0
- package/dist/pipeline/indexGroups.js.map +1 -0
- package/dist/pipeline/lists.d.ts +17 -0
- package/dist/pipeline/lists.d.ts.map +1 -1
- package/dist/pipeline/lists.js +43 -51
- package/dist/pipeline/lists.js.map +1 -1
- package/dist/pipeline/measureContentBlock.d.ts +3 -0
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +31 -4
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/pipeline/outline.d.ts.map +1 -1
- package/dist/pipeline/outline.js +13 -8
- package/dist/pipeline/outline.js.map +1 -1
- package/dist/pipeline/parts.d.ts +6 -3
- package/dist/pipeline/parts.d.ts.map +1 -1
- package/dist/pipeline/parts.js +28 -5
- package/dist/pipeline/parts.js.map +1 -1
- package/dist/pipeline/placeholders.d.ts +11 -0
- package/dist/pipeline/placeholders.d.ts.map +1 -1
- package/dist/pipeline/placeholders.js +48 -18
- package/dist/pipeline/placeholders.js.map +1 -1
- package/dist/pipeline/placement.d.ts +10 -6
- package/dist/pipeline/placement.d.ts.map +1 -1
- package/dist/pipeline/placement.js +33 -16
- package/dist/pipeline/placement.js.map +1 -1
- package/dist/pipeline/resourceLayout.d.ts +18 -1
- package/dist/pipeline/resourceLayout.d.ts.map +1 -1
- package/dist/pipeline/resourceLayout.js +109 -21
- package/dist/pipeline/resourceLayout.js.map +1 -1
- package/dist/pipeline/toc.d.ts.map +1 -1
- package/dist/pipeline/toc.js +6 -5
- package/dist/pipeline/toc.js.map +1 -1
- package/dist/pipeline/verticalMetrics.d.ts +14 -0
- package/dist/pipeline/verticalMetrics.d.ts.map +1 -0
- package/dist/pipeline/verticalMetrics.js +154 -0
- package/dist/pipeline/verticalMetrics.js.map +1 -0
- package/dist/types.d.ts +344 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +396 -6
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js +49 -0
- package/dist/vdt.js.map +1 -1
- package/dist/writingMode.d.ts +156 -0
- package/dist/writingMode.d.ts.map +1 -0
- package/dist/writingMode.js +291 -0
- package/dist/writingMode.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,556 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chinese inline annotations (#193, #194, #195): emphasis dots
|
|
3
|
+
* (`:dots[…]`), the proper-name and book-title marks (`:name[…]`,
|
|
4
|
+
* `:book[…]`), ruby (`:ruby[…]{rt="…"}` and the compact `{紅樓|hóng|lóu}`)
|
|
5
|
+
* and warichu notes (`:warichu[…]{open close}`).
|
|
6
|
+
*
|
|
7
|
+
* They preserve their text, as `:smallcaps[…]` does: the characters between
|
|
8
|
+
* the brackets stay in the paragraph's plain text (search, the contents,
|
|
9
|
+
* index anchors and the source map see them), and the mark becomes a field
|
|
10
|
+
* of the spans that hold them. {@link markAnnotations} replaces each
|
|
11
|
+
* directive by private-use marks around its content, before the emphasis
|
|
12
|
+
* scanners run, and queues its attributes (so `*` or `_` inside a reading
|
|
13
|
+
* never reach them); {@link applyAnnotationMarks} turns the marks into span
|
|
14
|
+
* fields once the spans exist. The content may hold other inline marks,
|
|
15
|
+
* nested annotations included (`:warichu[甲戌側批::name[寶玉]…]`).
|
|
16
|
+
*/
|
|
17
|
+
import { parseDirectiveAttrs } from './attrs';
|
|
18
|
+
import { graphemesOf } from '../measure/graphemes';
|
|
19
|
+
/** The inline annotation directives, by name. */
|
|
20
|
+
export const ANNOTATION_NAMES = ['dots', 'name', 'book', 'ruby', 'warichu'];
|
|
21
|
+
/** Private-use marks opening each kind of annotation while the emphasis
|
|
22
|
+
* scanners run (after the small-caps and link marks, outside the escape
|
|
23
|
+
* range), and the one mark that closes any of them. */
|
|
24
|
+
const OPEN = {
|
|
25
|
+
dots: '',
|
|
26
|
+
name: '',
|
|
27
|
+
book: '',
|
|
28
|
+
ruby: '',
|
|
29
|
+
warichu: '',
|
|
30
|
+
};
|
|
31
|
+
const CLOSE = '';
|
|
32
|
+
const KIND_OF_OPEN = new Map(ANNOTATION_NAMES.map((n) => [OPEN[n], n]));
|
|
33
|
+
const MARK_RE = /[-]/;
|
|
34
|
+
const MARKS_RE = /[-]/g;
|
|
35
|
+
/** `:dots[`, `:name[`… at the start of a match. */
|
|
36
|
+
const OPENER_RE = /:(dots|name|book|ruby|warichu)\[/y;
|
|
37
|
+
/** Letters that make a `{…|…}` a compact ruby: Han, kana, bopomofo. A
|
|
38
|
+
* brace group without one (`{x|x>0}`) stays text. */
|
|
39
|
+
const RUBY_BASE_RE = /[\p{sc=Han}\p{sc=Hiragana}\p{sc=Katakana}\p{sc=Bopomofo}々〇]/u;
|
|
40
|
+
/**
|
|
41
|
+
* The index of the `]` closing the `[` at `open`, brackets nested inside
|
|
42
|
+
* counting and a backslash escaping the character after it; -1 when the
|
|
43
|
+
* line ends first (or `end` is reached).
|
|
44
|
+
*/
|
|
45
|
+
export function closingBracket(text, open, end = text.length) {
|
|
46
|
+
let depth = 0;
|
|
47
|
+
for (let i = open; i < end; i++) {
|
|
48
|
+
const c = text[i];
|
|
49
|
+
if (c === '\n')
|
|
50
|
+
return -1;
|
|
51
|
+
if (c === '\\') {
|
|
52
|
+
i++;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (c === '[')
|
|
56
|
+
depth++;
|
|
57
|
+
else if (c === ']') {
|
|
58
|
+
depth--;
|
|
59
|
+
if (depth === 0)
|
|
60
|
+
return i;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return -1;
|
|
64
|
+
}
|
|
65
|
+
/** The `{…}` attribute blob right after index `at` (`text[at] === '{'`),
|
|
66
|
+
* on the same line: its end (past the `}`), or -1. */
|
|
67
|
+
function attrBlobEnd(text, at, end = text.length) {
|
|
68
|
+
if (text[at] !== '{')
|
|
69
|
+
return -1;
|
|
70
|
+
for (let i = at + 1; i < end; i++) {
|
|
71
|
+
const c = text[i];
|
|
72
|
+
if (c === '\n' || c === '{')
|
|
73
|
+
return -1;
|
|
74
|
+
if (c === '}')
|
|
75
|
+
return i + 1;
|
|
76
|
+
}
|
|
77
|
+
return -1;
|
|
78
|
+
}
|
|
79
|
+
/** Whether the character at `at` follows an odd run of backslashes. */
|
|
80
|
+
function escapedAt(text, at) {
|
|
81
|
+
let n = 0;
|
|
82
|
+
for (let i = at - 1; i >= 0 && text[i] === '\\'; i--)
|
|
83
|
+
n++;
|
|
84
|
+
return n % 2 === 1;
|
|
85
|
+
}
|
|
86
|
+
/** A compact ruby `{base|reading…}` starting at `at`: the index of its `|`
|
|
87
|
+
* and its end (past the `}`), or undefined. The base holds a Han, kana or
|
|
88
|
+
* bopomofo letter, no brace, no line end. A backslash escapes the `{`
|
|
89
|
+
* (`\{紅|hóng}`) or a bar (`{紅\|hóng}`): a literal brace or bar, no ruby. */
|
|
90
|
+
function compactRubyAt(text, at, end = text.length) {
|
|
91
|
+
if (text[at] !== '{' || escapedAt(text, at))
|
|
92
|
+
return undefined;
|
|
93
|
+
let bar = -1;
|
|
94
|
+
for (let i = at + 1; i < end; i++) {
|
|
95
|
+
const c = text[i];
|
|
96
|
+
if (c === '\\') {
|
|
97
|
+
if (text[i + 1] === '\n')
|
|
98
|
+
return undefined;
|
|
99
|
+
i++;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (c === '\n' || c === '{')
|
|
103
|
+
return undefined;
|
|
104
|
+
if (c === '|' && bar < 0) {
|
|
105
|
+
bar = i;
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (c === '}') {
|
|
109
|
+
if (bar <= at + 1 || i <= bar + 1)
|
|
110
|
+
return undefined;
|
|
111
|
+
const base = text.slice(at + 1, bar);
|
|
112
|
+
if (!RUBY_BASE_RE.test(base) || MARK_RE.test(base) || MARK_RE.test(text.slice(bar + 1, i)))
|
|
113
|
+
return undefined;
|
|
114
|
+
return { bar, end: i + 1 };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
/** Where the next `:` or `{` of `text` at or after `from` is, -1 when
|
|
120
|
+
* there is none: an annotation opens at one of them. */
|
|
121
|
+
function nextOpening(text, from) {
|
|
122
|
+
const colon = text.indexOf(':', from);
|
|
123
|
+
const brace = text.indexOf('{', from);
|
|
124
|
+
return colon < 0 ? brace : brace < 0 ? colon : Math.min(colon, brace);
|
|
125
|
+
}
|
|
126
|
+
/** The next annotation of `text` at or after `from` (before `end`). Only
|
|
127
|
+
* a `:` or a `{` can open one: the text between them is passed over. */
|
|
128
|
+
function nextAnnotation(text, from, end) {
|
|
129
|
+
for (let i = nextOpening(text, from); i >= 0 && i < end; i = nextOpening(text, i + 1)) {
|
|
130
|
+
const c = text[i];
|
|
131
|
+
if (c === ':') {
|
|
132
|
+
OPENER_RE.lastIndex = i;
|
|
133
|
+
const m = OPENER_RE.exec(text);
|
|
134
|
+
if (!m)
|
|
135
|
+
continue;
|
|
136
|
+
const open = i + m[0].length - 1;
|
|
137
|
+
const close = closingBracket(text, open, end);
|
|
138
|
+
if (close < 0 || close === open + 1)
|
|
139
|
+
continue;
|
|
140
|
+
// A compact ruby right after the bracket is text, not attributes
|
|
141
|
+
// (`:name[賈寶玉]{紅|hóng}`).
|
|
142
|
+
const blob = compactRubyAt(text, close + 1, end) ? -1 : attrBlobEnd(text, close + 1, end);
|
|
143
|
+
return {
|
|
144
|
+
name: m[1],
|
|
145
|
+
start: i,
|
|
146
|
+
contentStart: open + 1,
|
|
147
|
+
contentEnd: close,
|
|
148
|
+
end: blob > 0 ? blob : close + 1,
|
|
149
|
+
attrs: blob > 0 ? text.slice(close + 2, blob - 1) : undefined,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
if (c === '{') {
|
|
153
|
+
const ruby = compactRubyAt(text, i, end);
|
|
154
|
+
if (ruby) {
|
|
155
|
+
return { name: 'ruby', start: i, contentStart: i + 1, contentEnd: ruby.bar, end: ruby.end, attrs: undefined, compact: true };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
const unescapeBrackets = (s) => s.replace(/\\([[\]])/g, '$1');
|
|
162
|
+
/** A brace group that a backslash kept from being a compact ruby
|
|
163
|
+
* (`\{紅|hóng}`, `{紅\|hóng}`): `\{` and `\|` in it print as `{` and `|`.
|
|
164
|
+
* Text without a backslash is returned as is. */
|
|
165
|
+
const ESCAPED_RUBY_RE = /(\\?)\{((?:\\.|[^{}\n\\])*)\}/g;
|
|
166
|
+
function unescapeRubyGroups(s) {
|
|
167
|
+
if (!s.includes('\\'))
|
|
168
|
+
return s;
|
|
169
|
+
return s.replace(ESCAPED_RUBY_RE, (m, slash, inner) => {
|
|
170
|
+
if (!slash && !inner.includes('\\|'))
|
|
171
|
+
return m;
|
|
172
|
+
const plain = inner.replace(/\\\|/g, '|');
|
|
173
|
+
const bar = plain.indexOf('|');
|
|
174
|
+
if (bar <= 0 || bar >= plain.length - 1 || !RUBY_BASE_RE.test(plain.slice(0, bar)))
|
|
175
|
+
return m;
|
|
176
|
+
return `{${plain}}`;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/** `s` split at its bars that no backslash escapes, `\|` read as `|`. */
|
|
180
|
+
function splitReadings(s) {
|
|
181
|
+
return s.split(/(?<!\\)\|/).map((r) => r.replace(/\\\|/g, '|'));
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Replace every annotation of `text` by its content between the private-use
|
|
185
|
+
* marks, pushing each one's attributes on `queue` in text order. A
|
|
186
|
+
* directive whose bracket never closes on its line stays text. `restore`
|
|
187
|
+
* turns the escape placeholders of an attribute value back into the
|
|
188
|
+
* characters written.
|
|
189
|
+
*/
|
|
190
|
+
export function markAnnotations(text, queue, restore = (s) => s) {
|
|
191
|
+
if (!text.includes(':') && !text.includes('{'))
|
|
192
|
+
return text;
|
|
193
|
+
const mark = (from, end, inside) => {
|
|
194
|
+
let out = '';
|
|
195
|
+
let at = from;
|
|
196
|
+
for (;;) {
|
|
197
|
+
const found = nextAnnotation(text, at, end);
|
|
198
|
+
if (!found)
|
|
199
|
+
break;
|
|
200
|
+
const between = text.slice(at, found.start);
|
|
201
|
+
out += unescapeRubyGroups(inside ? unescapeBrackets(between) : between);
|
|
202
|
+
const entry = { name: found.name, attrs: {} };
|
|
203
|
+
if (found.compact) {
|
|
204
|
+
entry.readings = splitReadings(text.slice(found.contentEnd + 1, found.end - 1)).map((r) => restore(r).trim());
|
|
205
|
+
}
|
|
206
|
+
else if (found.attrs !== undefined) {
|
|
207
|
+
const attrs = parseDirectiveAttrs(found.attrs);
|
|
208
|
+
for (const key of Object.keys(attrs))
|
|
209
|
+
attrs[key] = restore(attrs[key]);
|
|
210
|
+
entry.attrs = attrs;
|
|
211
|
+
}
|
|
212
|
+
queue.push(entry);
|
|
213
|
+
const content = mark(found.contentStart, found.contentEnd, true);
|
|
214
|
+
out += OPEN[found.name] + (found.compact ? content.replace(/\\\|/g, '|') : content) + CLOSE;
|
|
215
|
+
at = found.end;
|
|
216
|
+
}
|
|
217
|
+
const rest = text.slice(at, end);
|
|
218
|
+
return out + unescapeRubyGroups(inside ? unescapeBrackets(rest) : rest);
|
|
219
|
+
};
|
|
220
|
+
return mark(0, text.length, false);
|
|
221
|
+
}
|
|
222
|
+
/** `text` with every annotation reduced to its content (the plain text of
|
|
223
|
+
* a running head, an index term, a contents row): `boundary` is left where
|
|
224
|
+
* each mark was. */
|
|
225
|
+
export function stripAnnotations(text, boundary = '') {
|
|
226
|
+
if (!text.includes(':') && !text.includes('{'))
|
|
227
|
+
return text;
|
|
228
|
+
const marked = markAnnotations(text, []);
|
|
229
|
+
return marked === text ? text : marked.replace(MARKS_RE, boundary);
|
|
230
|
+
}
|
|
231
|
+
/** Whether a text holds annotation marks (see {@link markAnnotations}). */
|
|
232
|
+
export function hasAnnotationMarks(text) {
|
|
233
|
+
return MARK_RE.test(text);
|
|
234
|
+
}
|
|
235
|
+
/** The innermost ruby open on `stack`. */
|
|
236
|
+
function innermostRuby(stack) {
|
|
237
|
+
for (let i = stack.length - 1; i >= 0; i--)
|
|
238
|
+
if (stack[i].name === 'ruby')
|
|
239
|
+
return stack[i];
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
const DOT_STYLES = new Set(['dot', 'circle', 'sesame']);
|
|
243
|
+
const SIDES = new Set(['over', 'under']);
|
|
244
|
+
const RUBY_SIDES = new Set(['over', 'under', 'right']);
|
|
245
|
+
function emphasisOf(attrs) {
|
|
246
|
+
const mark = {};
|
|
247
|
+
if (attrs.style && DOT_STYLES.has(attrs.style))
|
|
248
|
+
mark.style = attrs.style;
|
|
249
|
+
const fill = attrs.fill;
|
|
250
|
+
if (fill === 'open' || fill === 'filled')
|
|
251
|
+
mark.fill = fill;
|
|
252
|
+
const pos = attrs.pos ?? attrs.position;
|
|
253
|
+
if (pos && SIDES.has(pos))
|
|
254
|
+
mark.position = pos;
|
|
255
|
+
return mark;
|
|
256
|
+
}
|
|
257
|
+
/** A flag attribute: present, and not written `false` or `no`. */
|
|
258
|
+
function flag(value) {
|
|
259
|
+
return value !== undefined && value !== 'false' && value !== 'no';
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* The readings of a ruby, one per base character when they pair up (a mono
|
|
263
|
+
* ruby), else undefined (a group ruby): the `rt` attribute split on `|` or
|
|
264
|
+
* spaces, or the readings of a compact ruby (one `|` each; a single one
|
|
265
|
+
* split on spaces).
|
|
266
|
+
*/
|
|
267
|
+
function monoReadings(entry, count) {
|
|
268
|
+
if (flag(entry.attrs.group))
|
|
269
|
+
return undefined;
|
|
270
|
+
let readings;
|
|
271
|
+
if (entry.readings) {
|
|
272
|
+
readings = entry.readings.length === 1 ? entry.readings[0].split(/\s+/) : entry.readings;
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
const rt = (entry.attrs.rt ?? '').trim();
|
|
276
|
+
readings = rt.includes('|') ? rt.split('|') : rt.split(/\s+/);
|
|
277
|
+
}
|
|
278
|
+
readings = readings.map((r) => r.trim());
|
|
279
|
+
return readings.length === count && readings.every((r) => r.length > 0) ? readings : undefined;
|
|
280
|
+
}
|
|
281
|
+
/** The whole reading of a group ruby, spaces collapsed. */
|
|
282
|
+
function groupReading(entry) {
|
|
283
|
+
const raw = entry.readings ? entry.readings.join(entry.readings.length > 1 ? ' ' : '') : entry.attrs.rt ?? '';
|
|
284
|
+
return raw.replace(/\|/g, ' ').replace(/\s+/g, ' ').trim();
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Split the spans at the annotation marks, setting the fields of each
|
|
288
|
+
* annotation on the spans between its marks and dropping the marks (and
|
|
289
|
+
* any piece left empty). `queue` holds the annotations in the order of
|
|
290
|
+
* their marks (see {@link markAnnotations}); ids count from 1 per call, so
|
|
291
|
+
* a paragraph parsed twice gets the same ones. A mono ruby becomes one span
|
|
292
|
+
* per base character; a group ruby one span (in its first piece's style).
|
|
293
|
+
*/
|
|
294
|
+
export function applyAnnotationMarks(spans, queue) {
|
|
295
|
+
if (queue.length === 0 || !spans.some((s) => MARK_RE.test(s.text)))
|
|
296
|
+
return spans;
|
|
297
|
+
const out = [];
|
|
298
|
+
const stack = [];
|
|
299
|
+
const rubies = [];
|
|
300
|
+
let next = 0;
|
|
301
|
+
let id = 0;
|
|
302
|
+
const fieldsOf = () => {
|
|
303
|
+
const fields = {};
|
|
304
|
+
let depth = 0;
|
|
305
|
+
for (const f of stack) {
|
|
306
|
+
switch (f.name) {
|
|
307
|
+
case 'dots':
|
|
308
|
+
fields.emphasisMark = emphasisOf(f.entry.attrs);
|
|
309
|
+
break;
|
|
310
|
+
case 'name':
|
|
311
|
+
fields.properName = f.id;
|
|
312
|
+
break;
|
|
313
|
+
case 'book':
|
|
314
|
+
depth++;
|
|
315
|
+
fields.bookTitle = { id: f.id, depth };
|
|
316
|
+
break;
|
|
317
|
+
case 'warichu':
|
|
318
|
+
fields.warichu = f.warichu;
|
|
319
|
+
break;
|
|
320
|
+
case 'ruby':
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return fields;
|
|
325
|
+
};
|
|
326
|
+
for (const span of spans) {
|
|
327
|
+
if (!MARK_RE.test(span.text)) {
|
|
328
|
+
const fields = stack.length > 0 ? fieldsOf() : undefined;
|
|
329
|
+
out.push(fields ? { ...span, ...fields } : span);
|
|
330
|
+
const ruby = innermostRuby(stack);
|
|
331
|
+
if (ruby)
|
|
332
|
+
ruby.pieces.push(out.length - 1);
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
let piece = '';
|
|
336
|
+
const flush = () => {
|
|
337
|
+
if (piece.length === 0)
|
|
338
|
+
return;
|
|
339
|
+
out.push({ ...span, text: piece, ...fieldsOf() });
|
|
340
|
+
const ruby = innermostRuby(stack);
|
|
341
|
+
if (ruby)
|
|
342
|
+
ruby.pieces.push(out.length - 1);
|
|
343
|
+
piece = '';
|
|
344
|
+
};
|
|
345
|
+
for (const ch of span.text) {
|
|
346
|
+
const kind = KIND_OF_OPEN.get(ch);
|
|
347
|
+
if (kind !== undefined) {
|
|
348
|
+
flush();
|
|
349
|
+
const entry = queue[next++] ?? { name: kind, attrs: {} };
|
|
350
|
+
const frame = { name: kind, entry, id: ++id };
|
|
351
|
+
if (kind === 'warichu') {
|
|
352
|
+
frame.warichu = {
|
|
353
|
+
id: frame.id,
|
|
354
|
+
...(entry.attrs.open !== undefined ? { open: entry.attrs.open } : {}),
|
|
355
|
+
...(entry.attrs.close !== undefined ? { close: entry.attrs.close } : {}),
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
if (kind === 'ruby') {
|
|
359
|
+
frame.pieces = [];
|
|
360
|
+
rubies.push(frame);
|
|
361
|
+
}
|
|
362
|
+
stack.push(frame);
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
365
|
+
if (ch === CLOSE) {
|
|
366
|
+
flush();
|
|
367
|
+
stack.pop();
|
|
368
|
+
continue;
|
|
369
|
+
}
|
|
370
|
+
piece += ch;
|
|
371
|
+
}
|
|
372
|
+
flush();
|
|
373
|
+
}
|
|
374
|
+
if (rubies.length === 0)
|
|
375
|
+
return out;
|
|
376
|
+
// The rubies: each piece index to the spans it becomes.
|
|
377
|
+
const replace = new Map();
|
|
378
|
+
const drop = new Set();
|
|
379
|
+
for (const frame of rubies) {
|
|
380
|
+
const pieces = frame.pieces;
|
|
381
|
+
if (pieces.length === 0)
|
|
382
|
+
continue;
|
|
383
|
+
const base = pieces.map((i) => out[i].text).join('');
|
|
384
|
+
const graphemes = graphemesOf(base);
|
|
385
|
+
const pos = frame.entry.attrs.pos ?? frame.entry.attrs.position;
|
|
386
|
+
const position = pos && RUBY_SIDES.has(pos) ? pos : undefined;
|
|
387
|
+
const readings = monoReadings(frame.entry, graphemes.length);
|
|
388
|
+
if (readings) {
|
|
389
|
+
let r = 0;
|
|
390
|
+
for (const i of pieces) {
|
|
391
|
+
const span = out[i];
|
|
392
|
+
const parts = [];
|
|
393
|
+
for (const g of graphemesOf(span.text)) {
|
|
394
|
+
parts.push({ ...span, text: g, ruby: { text: readings[r++], id: frame.id, ...(position ? { position } : {}) } });
|
|
395
|
+
}
|
|
396
|
+
replace.set(i, parts);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
const first = out[pieces[0]];
|
|
401
|
+
const reading = groupReading(frame.entry);
|
|
402
|
+
replace.set(pieces[0], [{
|
|
403
|
+
...first,
|
|
404
|
+
text: base,
|
|
405
|
+
...(reading.length > 0 ? { ruby: { text: reading, group: true, id: frame.id, ...(position ? { position } : {}) } } : {}),
|
|
406
|
+
}]);
|
|
407
|
+
for (const i of pieces.slice(1))
|
|
408
|
+
drop.add(i);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
const result = [];
|
|
412
|
+
out.forEach((span, i) => {
|
|
413
|
+
if (drop.has(i))
|
|
414
|
+
return;
|
|
415
|
+
const parts = replace.get(i);
|
|
416
|
+
if (parts)
|
|
417
|
+
result.push(...parts);
|
|
418
|
+
else
|
|
419
|
+
result.push(span);
|
|
420
|
+
});
|
|
421
|
+
return result;
|
|
422
|
+
}
|
|
423
|
+
/** The fields of an annotation a span carries, for a pass that cuts a span
|
|
424
|
+
* into pieces (a placeholder injected inside it): every piece keeps them.
|
|
425
|
+
* `withRuby` keeps a ruby too (a text piece; never the placeholder). */
|
|
426
|
+
export function annotationFields(span, withRuby = true) {
|
|
427
|
+
const out = {};
|
|
428
|
+
if (span.emphasisMark)
|
|
429
|
+
out.emphasisMark = span.emphasisMark;
|
|
430
|
+
if (span.properName !== undefined)
|
|
431
|
+
out.properName = span.properName;
|
|
432
|
+
if (span.bookTitle)
|
|
433
|
+
out.bookTitle = span.bookTitle;
|
|
434
|
+
if (span.warichu)
|
|
435
|
+
out.warichu = span.warichu;
|
|
436
|
+
if (withRuby && span.ruby)
|
|
437
|
+
out.ruby = span.ruby;
|
|
438
|
+
if (span.inserted)
|
|
439
|
+
out.inserted = true;
|
|
440
|
+
return out;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Where the annotations of a stretch of source (`[from, end)` of
|
|
444
|
+
* `markdown`) put markup the plain text does not print: each opener
|
|
445
|
+
* (`:dots[`, a compact ruby's `{`) and each closer (`]` with its `{…}`, a
|
|
446
|
+
* compact ruby's `|…}`), sorted. `computeSourceMap` steps over them, so a
|
|
447
|
+
* plain space after `:ruby[紅]{rt="hóng lóu"}` never maps into the reading.
|
|
448
|
+
* Inline code is left alone, as the parser leaves it.
|
|
449
|
+
*/
|
|
450
|
+
export function annotationSourceSkips(markdown, from, end) {
|
|
451
|
+
const out = [];
|
|
452
|
+
const slice = markdown.slice(from, end);
|
|
453
|
+
if (!/:(?:dots|name|book|ruby|warichu)\[|\{[^{}\n|]*\|/.test(slice))
|
|
454
|
+
return out;
|
|
455
|
+
// Inline code spans, which the parser protects.
|
|
456
|
+
const code = [];
|
|
457
|
+
const codeRe = /(?<!\\)`[^`\n]+?`/g;
|
|
458
|
+
let m;
|
|
459
|
+
while ((m = codeRe.exec(slice)) !== null)
|
|
460
|
+
code.push([from + m.index, from + m.index + m[0].length]);
|
|
461
|
+
const inCode = (at) => code.some(([s, e]) => at >= s && at < e);
|
|
462
|
+
const walk = (at, stop) => {
|
|
463
|
+
for (;;) {
|
|
464
|
+
const found = nextAnnotation(markdown, at, stop);
|
|
465
|
+
if (!found)
|
|
466
|
+
return;
|
|
467
|
+
if (inCode(found.start)) {
|
|
468
|
+
at = found.start + 1;
|
|
469
|
+
continue;
|
|
470
|
+
}
|
|
471
|
+
out.push([found.start, found.contentStart]);
|
|
472
|
+
walk(found.contentStart, found.contentEnd);
|
|
473
|
+
out.push([found.contentEnd, found.end]);
|
|
474
|
+
at = found.end;
|
|
475
|
+
}
|
|
476
|
+
};
|
|
477
|
+
walk(from, end);
|
|
478
|
+
return out.sort((a, b) => a[0] - b[0]);
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Every annotation of a line of source, nested ones included, in order of
|
|
482
|
+
* their openers (for an editor's highlighting): its kind, the opener
|
|
483
|
+
* (`[start, contentStart)`), the text (`[contentStart, contentEnd)`) and the
|
|
484
|
+
* closer with its attributes or readings (`[contentEnd, end)`).
|
|
485
|
+
*/
|
|
486
|
+
export function findAnnotations(text) {
|
|
487
|
+
const out = [];
|
|
488
|
+
const walk = (at, stop) => {
|
|
489
|
+
for (;;) {
|
|
490
|
+
const found = nextAnnotation(text, at, stop);
|
|
491
|
+
if (!found)
|
|
492
|
+
return;
|
|
493
|
+
out.push(found);
|
|
494
|
+
walk(found.contentStart, found.contentEnd);
|
|
495
|
+
at = found.end;
|
|
496
|
+
}
|
|
497
|
+
};
|
|
498
|
+
walk(0, text.length);
|
|
499
|
+
return out;
|
|
500
|
+
}
|
|
501
|
+
/** 《》 around the titles of `:book[…]` (〈〉 for a title inside one), as
|
|
502
|
+
* spans flagged `inserted` (they take no character of the plain text);
|
|
503
|
+
* the titles lose their `bookTitle`. `cjk.bookTitleMark: 'brackets'`. */
|
|
504
|
+
export function withBookBrackets(spans) {
|
|
505
|
+
const out = [];
|
|
506
|
+
// Open titles, by depth (index 0 = depth 1): their run ids.
|
|
507
|
+
const open = [];
|
|
508
|
+
const bracket = (text) => ({ text, bold: false, italic: false, inserted: true });
|
|
509
|
+
const close = (toDepth) => {
|
|
510
|
+
while (open.length > toDepth) {
|
|
511
|
+
out.push(bracket(open.length > 1 ? '〉' : '》'));
|
|
512
|
+
open.pop();
|
|
513
|
+
}
|
|
514
|
+
};
|
|
515
|
+
for (const span of spans) {
|
|
516
|
+
const book = span.bookTitle;
|
|
517
|
+
if (!book) {
|
|
518
|
+
close(0);
|
|
519
|
+
out.push(span);
|
|
520
|
+
continue;
|
|
521
|
+
}
|
|
522
|
+
if (open.length >= book.depth && open[book.depth - 1] === book.id)
|
|
523
|
+
close(book.depth);
|
|
524
|
+
else {
|
|
525
|
+
close(book.depth - 1);
|
|
526
|
+
while (open.length < book.depth) {
|
|
527
|
+
out.push(bracket(open.length > 0 ? '〈' : '《'));
|
|
528
|
+
open.push(open.length === book.depth - 1 ? book.id : -1);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
532
|
+
const { bookTitle: _b, ...rest } = span;
|
|
533
|
+
out.push(rest);
|
|
534
|
+
}
|
|
535
|
+
close(0);
|
|
536
|
+
return out;
|
|
537
|
+
}
|
|
538
|
+
/** `spans` without their Chinese annotations: the text as written, set
|
|
539
|
+
* plain (captions, table cells and notes, which do not draw them). The
|
|
540
|
+
* same array when none has one. With `bookBrackets` (`cjk.bookTitleMark:
|
|
541
|
+
* 'brackets'`) a book title keeps its 《》, which are then punctuation of
|
|
542
|
+
* the text, not a mark. */
|
|
543
|
+
export function dropAnnotations(spans, bookBrackets = false) {
|
|
544
|
+
if (bookBrackets && spans.some((s) => s.bookTitle))
|
|
545
|
+
spans = withBookBrackets(spans);
|
|
546
|
+
if (!spans.some((s) => s.emphasisMark || s.properName !== undefined || s.bookTitle || s.ruby || s.warichu))
|
|
547
|
+
return spans;
|
|
548
|
+
return spans.map((s) => {
|
|
549
|
+
if (!s.emphasisMark && s.properName === undefined && !s.bookTitle && !s.ruby && !s.warichu)
|
|
550
|
+
return s;
|
|
551
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
552
|
+
const { emphasisMark: _e, properName: _p, bookTitle: _b, ruby: _r, warichu: _w, ...rest } = s;
|
|
553
|
+
return rest;
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
//# sourceMappingURL=annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/parse/annotations.ts"],"names":[],"mappings":"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"}
|
package/dist/parse/attrs.d.ts
CHANGED
|
@@ -1,12 +1,59 @@
|
|
|
1
1
|
import type { DirectiveAttrs } from './types';
|
|
2
|
+
/** One `key`, `key=value` or `key="value"` of an attribute blob, with where
|
|
3
|
+
* its value sits in the blob. */
|
|
4
|
+
export interface AttrToken {
|
|
5
|
+
key: string;
|
|
6
|
+
value: string;
|
|
7
|
+
/** Offsets of the token in the blob. */
|
|
8
|
+
start: number;
|
|
9
|
+
end: number;
|
|
10
|
+
/** Offsets of the value's text (inside its quotes), when it has one. */
|
|
11
|
+
valueStart?: number;
|
|
12
|
+
valueEnd?: number;
|
|
13
|
+
/** The value was written between quotes. */
|
|
14
|
+
quoted: boolean;
|
|
15
|
+
/** A key without `=`: a flag with an empty value. */
|
|
16
|
+
flag: boolean;
|
|
17
|
+
/** The key holds letters outside ASCII (`作者=曹雪芹`): read so the blob
|
|
18
|
+
* parses whole, then dropped; `attributeKeyInvalid` reports it. Set by
|
|
19
|
+
* {@link parseAttrBlobStrict} only. */
|
|
20
|
+
invalidKey?: true;
|
|
21
|
+
}
|
|
22
|
+
/** Every token of an attribute blob, read leniently: anything that is not
|
|
23
|
+
* a token is skipped (see {@link parseDirectiveAttrs}). */
|
|
24
|
+
export declare function scanDirectiveAttrs(raw: string): AttrToken[];
|
|
2
25
|
/** Parse the attribute blob inside a `:::name{ ... }` directive, a
|
|
3
26
|
* `:::container{ ... }` fence or an inline `:ref{ ... }`.
|
|
4
|
-
* Supports `key="quoted"`, `key='quoted'`, `key
|
|
27
|
+
* Supports `key="quoted"`, `key='quoted'`, `key=“quoted”`,
|
|
28
|
+
* `key=「quoted」`, `key=bare`, and bare `key`; `=` works as `=`.
|
|
5
29
|
* Attributes may appear in any order; a repeated key keeps the last value.
|
|
6
30
|
*
|
|
7
31
|
* Lives in its own module so the block parser and the inline-formatting
|
|
8
32
|
* pre-pass can share it without a circular import. */
|
|
9
33
|
export declare function parseDirectiveAttrs(raw: string): DirectiveAttrs;
|
|
34
|
+
/**
|
|
35
|
+
* The tokens of a blob the attribute grammar reads whole: tokens separated
|
|
36
|
+
* by whitespace (none needed after a quoted value), nothing else. `undefined`
|
|
37
|
+
* when anything in it is not a token (`{x, y}`, `{紅樓|hóng lóu}`), so a
|
|
38
|
+
* heading keeps such braces in its title. A `key=value` whose key is
|
|
39
|
+
* written outside ASCII (`作者=曹雪芹`) counts as a token, marked
|
|
40
|
+
* `invalidKey`, so the other keys of the blob are still read; a flag
|
|
41
|
+
* outside ASCII (`{風月寶鑑}`) is not a token.
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseAttrBlobStrict(raw: string): AttrToken[] | undefined;
|
|
44
|
+
/** A key written with letters outside ASCII (`作者=曹雪芹`): the grammar
|
|
45
|
+
* does not read it, so the attribute is dropped. Offsets into the blob. */
|
|
46
|
+
export interface InvalidAttrKey {
|
|
47
|
+
key: string;
|
|
48
|
+
start: number;
|
|
49
|
+
end: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The keys of an attribute blob that hold letters outside ASCII, each
|
|
53
|
+
* followed by `=` or `=`. Quoted values are skipped, so an `=` inside a
|
|
54
|
+
* value is never read as a key.
|
|
55
|
+
*/
|
|
56
|
+
export declare function invalidAttributeKeys(raw: string): InvalidAttrKey[];
|
|
10
57
|
/** Upper bound on `:::space{lines=N}` — a typo like `lines=100` must not
|
|
11
58
|
* swallow page after page. */
|
|
12
59
|
export declare const MAX_SPACE_LINES = 20;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attrs.d.ts","sourceRoot":"","sources":["../../src/parse/attrs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"attrs.d.ts","sourceRoot":"","sources":["../../src/parse/attrs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAiB9C;kCACkC;AAClC,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,qDAAqD;IACrD,IAAI,EAAE,OAAO,CAAC;IACd;;4CAEwC;IACxC,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAgBD;4DAC4D;AAC5D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAM3D;AAED;;;;;;;uDAOuD;AACvD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAI/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,SAAS,CA+BxE;AAED;4EAC4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CA4BlE;AAED;+BAC+B;AAC/B,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;wBAGwB;AACxB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMzF"}
|