postext 1.15.1 → 1.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/arabic/harakatProfile.test.d.ts +2 -0
- package/dist/__tests__/arabic/harakatProfile.test.d.ts.map +1 -0
- package/dist/__tests__/arabic/harakatProfile.test.js +105 -0
- package/dist/__tests__/arabic/harakatProfile.test.js.map +1 -0
- package/dist/__tests__/bundleLocaleAndBytes.test.js +9 -9
- package/dist/__tests__/bundleLocaleAndBytes.test.js.map +1 -1
- package/dist/__tests__/chineseLocale.test.js +10 -5
- package/dist/__tests__/chineseLocale.test.js.map +1 -1
- package/dist/__tests__/cjk/annotationsRender.test.js +5 -2
- package/dist/__tests__/cjk/annotationsRender.test.js.map +1 -1
- package/dist/__tests__/cjk/chipLatinSpacing.test.d.ts +2 -0
- package/dist/__tests__/cjk/chipLatinSpacing.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/chipLatinSpacing.test.js +137 -0
- package/dist/__tests__/cjk/chipLatinSpacing.test.js.map +1 -0
- package/dist/__tests__/cjk/chipTracking.test.d.ts +2 -0
- package/dist/__tests__/cjk/chipTracking.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/chipTracking.test.js +56 -0
- package/dist/__tests__/cjk/chipTracking.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseHtml.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseHtml.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseHtml.test.js +163 -0
- package/dist/__tests__/cjk/japaneseHtml.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseMarks.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseMarks.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseMarks.test.js +289 -0
- package/dist/__tests__/cjk/japaneseMarks.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseMarksRender.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseMarksRender.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseMarksRender.test.js +161 -0
- package/dist/__tests__/cjk/japaneseMarksRender.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseRuby.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseRuby.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseRuby.test.js +457 -0
- package/dist/__tests__/cjk/japaneseRuby.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseSegmentLanguage.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseSegmentLanguage.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseSegmentLanguage.test.js +50 -0
- package/dist/__tests__/cjk/japaneseSegmentLanguage.test.js.map +1 -0
- package/dist/__tests__/cjk/japaneseSpacing.test.d.ts +2 -0
- package/dist/__tests__/cjk/japaneseSpacing.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/japaneseSpacing.test.js +417 -0
- package/dist/__tests__/cjk/japaneseSpacing.test.js.map +1 -0
- package/dist/__tests__/cjk/kanbunKunten.test.d.ts +2 -0
- package/dist/__tests__/cjk/kanbunKunten.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/kanbunKunten.test.js +230 -0
- package/dist/__tests__/cjk/kanbunKunten.test.js.map +1 -0
- package/dist/__tests__/cjk/kanbunKuntenRender.test.d.ts +2 -0
- package/dist/__tests__/cjk/kanbunKuntenRender.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/kanbunKuntenRender.test.js +127 -0
- package/dist/__tests__/cjk/kanbunKuntenRender.test.js.map +1 -0
- package/dist/__tests__/cjk/keepAll.test.d.ts +2 -0
- package/dist/__tests__/cjk/keepAll.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/keepAll.test.js +146 -0
- package/dist/__tests__/cjk/keepAll.test.js.map +1 -0
- package/dist/__tests__/cjk/kinsokuJa.test.d.ts +2 -0
- package/dist/__tests__/cjk/kinsokuJa.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/kinsokuJa.test.js +388 -0
- package/dist/__tests__/cjk/kinsokuJa.test.js.map +1 -0
- package/dist/__tests__/cjk/kinsokuJaBuild.test.d.ts +2 -0
- package/dist/__tests__/cjk/kinsokuJaBuild.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/kinsokuJaBuild.test.js +38 -0
- package/dist/__tests__/cjk/kinsokuJaBuild.test.js.map +1 -0
- package/dist/__tests__/cjk/resourceAnnotations.test.d.ts +2 -0
- package/dist/__tests__/cjk/resourceAnnotations.test.d.ts.map +1 -0
- package/dist/__tests__/cjk/resourceAnnotations.test.js +223 -0
- package/dist/__tests__/cjk/resourceAnnotations.test.js.map +1 -0
- package/dist/__tests__/defaults/cjk.test.js +10 -2
- package/dist/__tests__/defaults/cjk.test.js.map +1 -1
- package/dist/__tests__/exports.test.js +37 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js +2 -1
- package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
- package/dist/__tests__/indexChinese.test.js +1 -1
- package/dist/__tests__/indexJapanese.test.d.ts +2 -0
- package/dist/__tests__/indexJapanese.test.d.ts.map +1 -0
- package/dist/__tests__/indexJapanese.test.js +242 -0
- package/dist/__tests__/indexJapanese.test.js.map +1 -0
- package/dist/__tests__/japaneseCaptions.test.d.ts +2 -0
- package/dist/__tests__/japaneseCaptions.test.d.ts.map +1 -0
- package/dist/__tests__/japaneseCaptions.test.js +79 -0
- package/dist/__tests__/japaneseCaptions.test.js.map +1 -0
- package/dist/__tests__/japaneseHeadings.test.d.ts +2 -0
- package/dist/__tests__/japaneseHeadings.test.d.ts.map +1 -0
- package/dist/__tests__/japaneseHeadings.test.js +364 -0
- package/dist/__tests__/japaneseHeadings.test.js.map +1 -0
- package/dist/__tests__/japaneseLocale.test.d.ts +2 -0
- package/dist/__tests__/japaneseLocale.test.d.ts.map +1 -0
- package/dist/__tests__/japaneseLocale.test.js +201 -0
- package/dist/__tests__/japaneseLocale.test.js.map +1 -0
- package/dist/__tests__/japaneseNotes.test.d.ts +2 -0
- package/dist/__tests__/japaneseNotes.test.d.ts.map +1 -0
- package/dist/__tests__/japaneseNotes.test.js +336 -0
- package/dist/__tests__/japaneseNotes.test.js.map +1 -0
- package/dist/__tests__/japaneseNumbering.test.d.ts +2 -0
- package/dist/__tests__/japaneseNumbering.test.d.ts.map +1 -0
- package/dist/__tests__/japaneseNumbering.test.js +292 -0
- package/dist/__tests__/japaneseNumbering.test.js.map +1 -0
- package/dist/__tests__/parse/listNesting.test.d.ts +2 -0
- package/dist/__tests__/parse/listNesting.test.d.ts.map +1 -0
- package/dist/__tests__/parse/listNesting.test.js +142 -0
- package/dist/__tests__/parse/listNesting.test.js.map +1 -0
- package/dist/__tests__/pipeline/citationsJapanese.test.d.ts +2 -0
- package/dist/__tests__/pipeline/citationsJapanese.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/citationsJapanese.test.js +110 -0
- package/dist/__tests__/pipeline/citationsJapanese.test.js.map +1 -0
- package/dist/__tests__/pipeline/listNestingLayout.test.d.ts +2 -0
- package/dist/__tests__/pipeline/listNestingLayout.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/listNestingLayout.test.js +90 -0
- package/dist/__tests__/pipeline/listNestingLayout.test.js.map +1 -0
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js +2 -2
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js.map +1 -1
- package/dist/__tests__/pipeline/safeArea.test.d.ts +2 -0
- package/dist/__tests__/pipeline/safeArea.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/safeArea.test.js +207 -0
- package/dist/__tests__/pipeline/safeArea.test.js.map +1 -0
- package/dist/__tests__/vertical/compositionPaint.test.js +6 -5
- package/dist/__tests__/vertical/compositionPaint.test.js.map +1 -1
- package/dist/__tests__/vertical/japaneseVertical.test.d.ts +2 -0
- package/dist/__tests__/vertical/japaneseVertical.test.d.ts.map +1 -0
- package/dist/__tests__/vertical/japaneseVertical.test.js +247 -0
- package/dist/__tests__/vertical/japaneseVertical.test.js.map +1 -0
- package/dist/__tests__/vertical/verticalSpans.d.ts +2 -1
- package/dist/__tests__/vertical/verticalSpans.d.ts.map +1 -1
- package/dist/__tests__/vertical/verticalSpans.js +3 -2
- package/dist/__tests__/vertical/verticalSpans.js.map +1 -1
- package/dist/__tests__/video.test.d.ts +2 -0
- package/dist/__tests__/video.test.d.ts.map +1 -0
- package/dist/__tests__/video.test.js +305 -0
- package/dist/__tests__/video.test.js.map +1 -0
- package/dist/arabicMarks.d.ts +11 -1
- package/dist/arabicMarks.d.ts.map +1 -1
- package/dist/arabicMarks.js +72 -5
- package/dist/arabicMarks.js.map +1 -1
- package/dist/bundle/adapters.d.ts +6 -0
- package/dist/bundle/adapters.d.ts.map +1 -1
- package/dist/bundle/adapters.js +30 -0
- package/dist/bundle/adapters.js.map +1 -1
- package/dist/bundle/codec.d.ts.map +1 -1
- package/dist/bundle/codec.js +67 -3
- package/dist/bundle/codec.js.map +1 -1
- package/dist/bundle/index.d.ts +2 -2
- package/dist/bundle/index.d.ts.map +1 -1
- package/dist/bundle/index.js +2 -2
- package/dist/bundle/index.js.map +1 -1
- package/dist/bundle/manifest.d.ts +8 -0
- package/dist/bundle/manifest.d.ts.map +1 -1
- package/dist/bundle/manifest.js +48 -1
- package/dist/bundle/manifest.js.map +1 -1
- package/dist/bundle/types.d.ts +5 -0
- package/dist/bundle/types.d.ts.map +1 -1
- package/dist/bundle/zip.js +1 -1
- package/dist/bundle/zip.js.map +1 -1
- package/dist/canvas-backend/annotations.d.ts +20 -5
- package/dist/canvas-backend/annotations.d.ts.map +1 -1
- package/dist/canvas-backend/annotations.js +59 -6
- package/dist/canvas-backend/annotations.js.map +1 -1
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +29 -3
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts +6 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.js +124 -5
- package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
- package/dist/canvas-backend/verticalText.d.ts +9 -4
- package/dist/canvas-backend/verticalText.d.ts.map +1 -1
- package/dist/canvas-backend/verticalText.js +20 -9
- package/dist/canvas-backend/verticalText.js.map +1 -1
- package/dist/chineseNumerals.d.ts +3 -2
- package/dist/chineseNumerals.d.ts.map +1 -1
- package/dist/chineseNumerals.js +11 -8
- package/dist/chineseNumerals.js.map +1 -1
- package/dist/citations/bibtex.d.ts.map +1 -1
- package/dist/citations/bibtex.js +4 -0
- package/dist/citations/bibtex.js.map +1 -1
- package/dist/citations/data.d.ts.map +1 -1
- package/dist/citations/data.js +6 -1
- package/dist/citations/data.js.map +1 -1
- package/dist/citations/types.d.ts +8 -0
- package/dist/citations/types.d.ts.map +1 -1
- package/dist/cjkMarks.d.ts +23 -14
- package/dist/cjkMarks.d.ts.map +1 -1
- package/dist/cjkMarks.js +251 -49
- package/dist/cjkMarks.js.map +1 -1
- package/dist/configWarnings.js +10 -4
- package/dist/configWarnings.js.map +1 -1
- package/dist/defaults/captionStyle.d.ts +19 -4
- package/dist/defaults/captionStyle.d.ts.map +1 -1
- package/dist/defaults/captionStyle.js +27 -8
- package/dist/defaults/captionStyle.js.map +1 -1
- package/dist/defaults/cjk.d.ts +64 -14
- package/dist/defaults/cjk.d.ts.map +1 -1
- package/dist/defaults/cjk.js +209 -29
- package/dist/defaults/cjk.js.map +1 -1
- package/dist/defaults/footnotes.d.ts +27 -4
- package/dist/defaults/footnotes.d.ts.map +1 -1
- package/dist/defaults/footnotes.js +95 -36
- package/dist/defaults/footnotes.js.map +1 -1
- package/dist/defaults/headings.d.ts +5 -0
- package/dist/defaults/headings.d.ts.map +1 -1
- package/dist/defaults/headings.js +46 -1
- package/dist/defaults/headings.js.map +1 -1
- package/dist/defaults/index.d.ts +4 -3
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +14 -5
- package/dist/defaults/index.js.map +1 -1
- package/dist/defaults/indexConfig.d.ts.map +1 -1
- package/dist/defaults/indexConfig.js +7 -4
- package/dist/defaults/indexConfig.js.map +1 -1
- package/dist/defaults/paragraphStyles.d.ts.map +1 -1
- package/dist/defaults/paragraphStyles.js +8 -0
- package/dist/defaults/paragraphStyles.js.map +1 -1
- package/dist/defaults/resourceTypes.d.ts +16 -3
- package/dist/defaults/resourceTypes.d.ts.map +1 -1
- package/dist/defaults/resourceTypes.js +56 -8
- package/dist/defaults/resourceTypes.js.map +1 -1
- package/dist/defaults/shared.d.ts.map +1 -1
- package/dist/defaults/shared.js +21 -0
- package/dist/defaults/shared.js.map +1 -1
- package/dist/defaults/tableStyle.d.ts.map +1 -1
- package/dist/defaults/tableStyle.js +4 -1
- package/dist/defaults/tableStyle.js.map +1 -1
- package/dist/defaults/videoStyle.d.ts +9 -0
- package/dist/defaults/videoStyle.d.ts.map +1 -0
- package/dist/defaults/videoStyle.js +130 -0
- package/dist/defaults/videoStyle.js.map +1 -0
- package/dist/design/placeholders.d.ts.map +1 -1
- package/dist/design/placeholders.js +5 -3
- package/dist/design/placeholders.js.map +1 -1
- package/dist/html-backend.d.ts +13 -0
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +233 -26
- package/dist/html-backend.js.map +1 -1
- package/dist/htmlAnnotations.d.ts +47 -9
- package/dist/htmlAnnotations.d.ts.map +1 -1
- package/dist/htmlAnnotations.js +89 -17
- package/dist/htmlAnnotations.js.map +1 -1
- package/dist/index.d.ts +13 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/japaneseNumerals.d.ts +44 -0
- package/dist/japaneseNumerals.d.ts.map +1 -0
- package/dist/japaneseNumerals.js +100 -0
- package/dist/japaneseNumerals.js.map +1 -0
- package/dist/knuthPlass/richAdapter.d.ts +5 -1
- package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/richAdapter.js +2 -0
- package/dist/knuthPlass/richAdapter.js.map +1 -1
- package/dist/locale.d.ts +19 -12
- package/dist/locale.d.ts.map +1 -1
- package/dist/locale.js +24 -12
- package/dist/locale.js.map +1 -1
- package/dist/measure/cache.d.ts.map +1 -1
- package/dist/measure/cache.js +20 -9
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/canvas.d.ts +21 -0
- package/dist/measure/canvas.d.ts.map +1 -1
- package/dist/measure/canvas.js +82 -0
- package/dist/measure/canvas.js.map +1 -1
- package/dist/measure/cjk.d.ts +3 -1
- package/dist/measure/cjk.d.ts.map +1 -1
- package/dist/measure/cjk.js +4 -2
- package/dist/measure/cjk.js.map +1 -1
- package/dist/measure/cjkAnnotate.d.ts +62 -3
- package/dist/measure/cjkAnnotate.d.ts.map +1 -1
- package/dist/measure/cjkAnnotate.js +99 -2
- package/dist/measure/cjkAnnotate.js.map +1 -1
- package/dist/measure/cjkClasses.d.ts +93 -13
- package/dist/measure/cjkClasses.d.ts.map +1 -1
- package/dist/measure/cjkClasses.js +204 -14
- package/dist/measure/cjkClasses.js.map +1 -1
- package/dist/measure/cjkCompose.d.ts +10 -4
- package/dist/measure/cjkCompose.d.ts.map +1 -1
- package/dist/measure/cjkCompose.js +834 -85
- package/dist/measure/cjkCompose.js.map +1 -1
- package/dist/measure/cjkPunctuation.d.ts +73 -14
- package/dist/measure/cjkPunctuation.d.ts.map +1 -1
- package/dist/measure/cjkPunctuation.js +97 -21
- package/dist/measure/cjkPunctuation.js.map +1 -1
- package/dist/measure/plain.js +2 -2
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/rich.d.ts +12 -2
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +46 -8
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/rubyJis.d.ts +96 -0
- package/dist/measure/rubyJis.d.ts.map +1 -0
- package/dist/measure/rubyJis.js +245 -0
- package/dist/measure/rubyJis.js.map +1 -0
- package/dist/measure/types.d.ts +6 -1
- package/dist/measure/types.d.ts.map +1 -1
- package/dist/measure/types.js.map +1 -1
- package/dist/measure/vertical.d.ts +13 -5
- package/dist/measure/vertical.d.ts.map +1 -1
- package/dist/measure/vertical.js +16 -6
- package/dist/measure/vertical.js.map +1 -1
- package/dist/numberWords.d.ts +4 -3
- package/dist/numberWords.d.ts.map +1 -1
- package/dist/numberWords.js +15 -5
- package/dist/numberWords.js.map +1 -1
- package/dist/numbering.d.ts +24 -12
- package/dist/numbering.d.ts.map +1 -1
- package/dist/numbering.js +57 -11
- package/dist/numbering.js.map +1 -1
- package/dist/parse/annotations.d.ts +21 -18
- package/dist/parse/annotations.d.ts.map +1 -1
- package/dist/parse/annotations.js +140 -51
- package/dist/parse/annotations.js.map +1 -1
- package/dist/parse/blockParser.d.ts.map +1 -1
- package/dist/parse/blockParser.js +12 -1
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/index.d.ts +1 -1
- package/dist/parse/index.d.ts.map +1 -1
- package/dist/parse/index.js.map +1 -1
- package/dist/parse/indexMarks.d.ts.map +1 -1
- package/dist/parse/indexMarks.js +42 -0
- package/dist/parse/indexMarks.js.map +1 -1
- package/dist/parse/inlineFormatting.d.ts +4 -3
- package/dist/parse/inlineFormatting.d.ts.map +1 -1
- package/dist/parse/inlineFormatting.js +9 -8
- package/dist/parse/inlineFormatting.js.map +1 -1
- package/dist/parse/listNesting.d.ts +47 -0
- package/dist/parse/listNesting.d.ts.map +1 -0
- package/dist/parse/listNesting.js +65 -0
- package/dist/parse/listNesting.js.map +1 -0
- package/dist/parse/types.d.ts +93 -5
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/annotations.d.ts +25 -15
- package/dist/pipeline/annotations.d.ts.map +1 -1
- package/dist/pipeline/annotations.js +102 -16
- package/dist/pipeline/annotations.js.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +284 -31
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildBlockKind.d.ts +7 -0
- package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
- package/dist/pipeline/buildBlockKind.js +25 -2
- package/dist/pipeline/buildBlockKind.js.map +1 -1
- package/dist/pipeline/buildHelpers.d.ts +2 -0
- package/dist/pipeline/buildHelpers.d.ts.map +1 -1
- package/dist/pipeline/buildHelpers.js +17 -0
- package/dist/pipeline/buildHelpers.js.map +1 -1
- package/dist/pipeline/buildMeasurement.d.ts +3 -0
- package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
- package/dist/pipeline/buildMeasurement.js +1 -0
- package/dist/pipeline/buildMeasurement.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts +2 -0
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +5 -5
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/citations.d.ts +1 -1
- package/dist/pipeline/citations.d.ts.map +1 -1
- package/dist/pipeline/citations.js +15 -7
- package/dist/pipeline/citations.js.map +1 -1
- package/dist/pipeline/columnBalancing.d.ts +22 -0
- package/dist/pipeline/columnBalancing.d.ts.map +1 -1
- package/dist/pipeline/columnBalancing.js +80 -3
- package/dist/pipeline/columnBalancing.js.map +1 -1
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +4 -3
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +19 -0
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/continuation.d.ts.map +1 -1
- package/dist/pipeline/continuation.js +3 -3
- package/dist/pipeline/continuation.js.map +1 -1
- package/dist/pipeline/crossRefs.d.ts.map +1 -1
- package/dist/pipeline/crossRefs.js +3 -0
- package/dist/pipeline/crossRefs.js.map +1 -1
- package/dist/pipeline/footnotes.d.ts +20 -12
- package/dist/pipeline/footnotes.d.ts.map +1 -1
- package/dist/pipeline/footnotes.js +62 -16
- package/dist/pipeline/footnotes.js.map +1 -1
- package/dist/pipeline/headingStyles.js +1 -1
- package/dist/pipeline/headingStyles.js.map +1 -1
- package/dist/pipeline/indexDirective.d.ts.map +1 -1
- package/dist/pipeline/indexDirective.js +89 -12
- package/dist/pipeline/indexDirective.js.map +1 -1
- package/dist/pipeline/indexGroups.d.ts +5 -3
- package/dist/pipeline/indexGroups.d.ts.map +1 -1
- package/dist/pipeline/indexGroups.js +9 -4
- package/dist/pipeline/indexGroups.js.map +1 -1
- package/dist/pipeline/indexJapanese.d.ts +75 -0
- package/dist/pipeline/indexJapanese.d.ts.map +1 -0
- package/dist/pipeline/indexJapanese.js +264 -0
- package/dist/pipeline/indexJapanese.js.map +1 -0
- package/dist/pipeline/lineSpan.d.ts +36 -0
- package/dist/pipeline/lineSpan.d.ts.map +1 -0
- package/dist/pipeline/lineSpan.js +36 -0
- package/dist/pipeline/lineSpan.js.map +1 -0
- package/dist/pipeline/lists.js +2 -2
- package/dist/pipeline/lists.js.map +1 -1
- package/dist/pipeline/measureContentBlock.d.ts +4 -0
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +57 -5
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/pipeline/outline.d.ts.map +1 -1
- package/dist/pipeline/outline.js +3 -1
- package/dist/pipeline/outline.js.map +1 -1
- package/dist/pipeline/paragraphContainers.d.ts +25 -2
- package/dist/pipeline/paragraphContainers.d.ts.map +1 -1
- package/dist/pipeline/paragraphContainers.js +82 -2
- package/dist/pipeline/paragraphContainers.js.map +1 -1
- package/dist/pipeline/parts.d.ts +2 -2
- package/dist/pipeline/parts.js +3 -3
- package/dist/pipeline/parts.js.map +1 -1
- package/dist/pipeline/placement.d.ts.map +1 -1
- package/dist/pipeline/placement.js +2 -2
- package/dist/pipeline/placement.js.map +1 -1
- package/dist/pipeline/resourceLayout.d.ts +6 -0
- package/dist/pipeline/resourceLayout.d.ts.map +1 -1
- package/dist/pipeline/resourceLayout.js +93 -17
- package/dist/pipeline/resourceLayout.js.map +1 -1
- package/dist/pipeline/resourceNumbering.d.ts +5 -2
- package/dist/pipeline/resourceNumbering.d.ts.map +1 -1
- package/dist/pipeline/resourceNumbering.js +12 -7
- package/dist/pipeline/resourceNumbering.js.map +1 -1
- package/dist/pipeline/safeArea.d.ts +29 -0
- package/dist/pipeline/safeArea.d.ts.map +1 -0
- package/dist/pipeline/safeArea.js +89 -0
- package/dist/pipeline/safeArea.js.map +1 -0
- package/dist/pipeline/styles.d.ts +16 -1
- package/dist/pipeline/styles.d.ts.map +1 -1
- package/dist/pipeline/styles.js +8 -1
- package/dist/pipeline/styles.js.map +1 -1
- package/dist/pipeline/verse.d.ts +3 -0
- package/dist/pipeline/verse.d.ts.map +1 -1
- package/dist/pipeline/verse.js +1 -1
- package/dist/pipeline/verse.js.map +1 -1
- package/dist/pipeline/verticalMetrics.d.ts.map +1 -1
- package/dist/pipeline/verticalMetrics.js +4 -0
- package/dist/pipeline/verticalMetrics.js.map +1 -1
- package/dist/pipeline/videoOverlay.d.ts +24 -0
- package/dist/pipeline/videoOverlay.d.ts.map +1 -0
- package/dist/pipeline/videoOverlay.js +134 -0
- package/dist/pipeline/videoOverlay.js.map +1 -0
- package/dist/types.d.ts +594 -50
- package/dist/types.d.ts.map +1 -1
- package/dist/uprightArabic.js +1 -1
- package/dist/uprightArabic.js.map +1 -1
- package/dist/vdt.d.ts +221 -17
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- package/dist/video/qr.d.ts +21 -0
- package/dist/video/qr.d.ts.map +1 -0
- package/dist/video/qr.js +326 -0
- package/dist/video/qr.js.map +1 -0
- package/dist/video/url.d.ts +62 -0
- package/dist/video/url.d.ts.map +1 -0
- package/dist/video/url.js +206 -0
- package/dist/video/url.js.map +1 -0
- package/dist/writingMode.d.ts +74 -20
- package/dist/writingMode.d.ts.map +1 -1
- package/dist/writingMode.js +146 -27
- package/dist/writingMode.js.map +1 -1
- package/package.json +1 -1
package/dist/video/qr.js
ADDED
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QR Code encoder (ISO/IEC 18004), byte mode, versions 1–40, used to print
|
|
3
|
+
* the code that opens a video resource (#454). The algorithm follows
|
|
4
|
+
* Project Nayuki's reference implementation (MIT): data bits → Reed–Solomon
|
|
5
|
+
* blocks interleaved → function patterns → codewords in the zigzag → the
|
|
6
|
+
* mask with the lowest penalty.
|
|
7
|
+
*/
|
|
8
|
+
const ECL_INDEX = { L: 0, M: 1, Q: 2, H: 3 };
|
|
9
|
+
const ECL_FORMAT_BITS = { L: 1, M: 0, Q: 3, H: 2 };
|
|
10
|
+
// Indexed [ecl][version]; index 0 is unused.
|
|
11
|
+
const ECC_CODEWORDS_PER_BLOCK = [
|
|
12
|
+
[-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
|
|
13
|
+
[-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
|
|
14
|
+
[-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
|
|
15
|
+
[-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
|
|
16
|
+
];
|
|
17
|
+
const NUM_ERROR_CORRECTION_BLOCKS = [
|
|
18
|
+
[-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],
|
|
19
|
+
[-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],
|
|
20
|
+
[-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],
|
|
21
|
+
[-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81],
|
|
22
|
+
];
|
|
23
|
+
/** Modules available for data and error correction in a version (all but
|
|
24
|
+
* the function patterns and the format and version bits). */
|
|
25
|
+
function numRawDataModules(ver) {
|
|
26
|
+
let result = (16 * ver + 128) * ver + 64;
|
|
27
|
+
if (ver >= 2) {
|
|
28
|
+
const numAlign = Math.floor(ver / 7) + 2;
|
|
29
|
+
result -= (25 * numAlign - 10) * numAlign - 55;
|
|
30
|
+
if (ver >= 7)
|
|
31
|
+
result -= 36;
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
function numDataCodewords(ver, ecl) {
|
|
36
|
+
const e = ECL_INDEX[ecl];
|
|
37
|
+
return Math.floor(numRawDataModules(ver) / 8)
|
|
38
|
+
- ECC_CODEWORDS_PER_BLOCK[e][ver] * NUM_ERROR_CORRECTION_BLOCKS[e][ver];
|
|
39
|
+
}
|
|
40
|
+
function gfMultiply(x, y) {
|
|
41
|
+
let z = 0;
|
|
42
|
+
for (let i = 7; i >= 0; i--) {
|
|
43
|
+
z = (z << 1) ^ ((z >>> 7) * 0x11d);
|
|
44
|
+
z ^= ((y >>> i) & 1) * x;
|
|
45
|
+
}
|
|
46
|
+
return z & 0xff;
|
|
47
|
+
}
|
|
48
|
+
function rsDivisor(degree) {
|
|
49
|
+
const result = new Array(degree).fill(0);
|
|
50
|
+
result[degree - 1] = 1;
|
|
51
|
+
let root = 1;
|
|
52
|
+
for (let i = 0; i < degree; i++) {
|
|
53
|
+
for (let j = 0; j < result.length; j++) {
|
|
54
|
+
result[j] = gfMultiply(result[j], root);
|
|
55
|
+
if (j + 1 < result.length)
|
|
56
|
+
result[j] ^= result[j + 1];
|
|
57
|
+
}
|
|
58
|
+
root = gfMultiply(root, 0x02);
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
function rsRemainder(data, divisor) {
|
|
63
|
+
const result = divisor.map(() => 0);
|
|
64
|
+
for (const b of data) {
|
|
65
|
+
const factor = b ^ result.shift();
|
|
66
|
+
result.push(0);
|
|
67
|
+
divisor.forEach((coef, i) => { result[i] ^= gfMultiply(coef, factor); });
|
|
68
|
+
}
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
function utf8(text) {
|
|
72
|
+
return Array.from(new TextEncoder().encode(text));
|
|
73
|
+
}
|
|
74
|
+
/** Encode `text` (UTF-8, byte mode) in the smallest version that holds it at
|
|
75
|
+
* `ecl`, raising the level while the version still holds the data.
|
|
76
|
+
* `undefined` when even version 40 is too small. */
|
|
77
|
+
export function encodeQr(text, ecl = 'M') {
|
|
78
|
+
const data = utf8(text);
|
|
79
|
+
let ver = 1;
|
|
80
|
+
const usedBits = (v) => 4 + (v <= 9 ? 8 : 16) + data.length * 8;
|
|
81
|
+
for (; ver <= 40; ver++) {
|
|
82
|
+
if (usedBits(ver) <= numDataCodewords(ver, ecl) * 8)
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
if (ver > 40)
|
|
86
|
+
return undefined;
|
|
87
|
+
const levels = ['L', 'M', 'Q', 'H'];
|
|
88
|
+
for (const higher of levels.slice(ECL_INDEX[ecl] + 1)) {
|
|
89
|
+
if (usedBits(ver) <= numDataCodewords(ver, higher) * 8)
|
|
90
|
+
ecl = higher;
|
|
91
|
+
}
|
|
92
|
+
// Data bits: mode, count, bytes, terminator, padding.
|
|
93
|
+
const bits = [];
|
|
94
|
+
const append = (value, len) => {
|
|
95
|
+
for (let i = len - 1; i >= 0; i--)
|
|
96
|
+
bits.push((value >>> i) & 1);
|
|
97
|
+
};
|
|
98
|
+
append(0x4, 4);
|
|
99
|
+
append(data.length, ver <= 9 ? 8 : 16);
|
|
100
|
+
for (const b of data)
|
|
101
|
+
append(b, 8);
|
|
102
|
+
const capacity = numDataCodewords(ver, ecl) * 8;
|
|
103
|
+
append(0, Math.min(4, capacity - bits.length));
|
|
104
|
+
append(0, (8 - (bits.length % 8)) % 8);
|
|
105
|
+
for (let pad = 0xec; bits.length < capacity; pad ^= 0xec ^ 0x11)
|
|
106
|
+
append(pad, 8);
|
|
107
|
+
const codewords = [];
|
|
108
|
+
for (let i = 0; i < bits.length; i += 8) {
|
|
109
|
+
let byte = 0;
|
|
110
|
+
for (let j = 0; j < 8; j++)
|
|
111
|
+
byte = (byte << 1) | bits[i + j];
|
|
112
|
+
codewords.push(byte);
|
|
113
|
+
}
|
|
114
|
+
// Error correction blocks, interleaved.
|
|
115
|
+
const e = ECL_INDEX[ecl];
|
|
116
|
+
const numBlocks = NUM_ERROR_CORRECTION_BLOCKS[e][ver];
|
|
117
|
+
const blockEccLen = ECC_CODEWORDS_PER_BLOCK[e][ver];
|
|
118
|
+
const rawCodewords = Math.floor(numRawDataModules(ver) / 8);
|
|
119
|
+
const numShortBlocks = numBlocks - (rawCodewords % numBlocks);
|
|
120
|
+
const shortBlockLen = Math.floor(rawCodewords / numBlocks);
|
|
121
|
+
const divisor = rsDivisor(blockEccLen);
|
|
122
|
+
const blocks = [];
|
|
123
|
+
for (let i = 0, k = 0; i < numBlocks; i++) {
|
|
124
|
+
const dat = codewords.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1));
|
|
125
|
+
k += dat.length;
|
|
126
|
+
const ecc = rsRemainder(dat, divisor);
|
|
127
|
+
if (i < numShortBlocks)
|
|
128
|
+
dat.push(0);
|
|
129
|
+
blocks.push(dat.concat(ecc));
|
|
130
|
+
}
|
|
131
|
+
const all = [];
|
|
132
|
+
for (let i = 0; i < blocks[0].length; i++) {
|
|
133
|
+
blocks.forEach((block, j) => {
|
|
134
|
+
if (i !== shortBlockLen - blockEccLen || j >= numShortBlocks)
|
|
135
|
+
all.push(block[i]);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
// The symbol.
|
|
139
|
+
const size = ver * 4 + 17;
|
|
140
|
+
const modules = Array.from({ length: size }, () => new Array(size).fill(false));
|
|
141
|
+
const isFunction = Array.from({ length: size }, () => new Array(size).fill(false));
|
|
142
|
+
const setFunction = (x, y, dark) => {
|
|
143
|
+
modules[y][x] = dark;
|
|
144
|
+
isFunction[y][x] = true;
|
|
145
|
+
};
|
|
146
|
+
for (let i = 0; i < size; i++) {
|
|
147
|
+
setFunction(6, i, i % 2 === 0);
|
|
148
|
+
setFunction(i, 6, i % 2 === 0);
|
|
149
|
+
}
|
|
150
|
+
const finder = (cx, cy) => {
|
|
151
|
+
for (let dy = -4; dy <= 4; dy++) {
|
|
152
|
+
for (let dx = -4; dx <= 4; dx++) {
|
|
153
|
+
const dist = Math.max(Math.abs(dx), Math.abs(dy));
|
|
154
|
+
const x = cx + dx;
|
|
155
|
+
const y = cy + dy;
|
|
156
|
+
if (x >= 0 && x < size && y >= 0 && y < size)
|
|
157
|
+
setFunction(x, y, dist !== 2 && dist !== 4);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
finder(3, 3);
|
|
162
|
+
finder(size - 4, 3);
|
|
163
|
+
finder(3, size - 4);
|
|
164
|
+
const alignPos = [];
|
|
165
|
+
if (ver > 1) {
|
|
166
|
+
const numAlign = Math.floor(ver / 7) + 2;
|
|
167
|
+
const step = ver === 32 ? 26 : Math.ceil((ver * 4 + 4) / (numAlign * 2 - 2)) * 2;
|
|
168
|
+
alignPos.push(6);
|
|
169
|
+
for (let pos = size - 7; alignPos.length < numAlign; pos -= step)
|
|
170
|
+
alignPos.splice(1, 0, pos);
|
|
171
|
+
}
|
|
172
|
+
const last = alignPos.length - 1;
|
|
173
|
+
alignPos.forEach((ay, i) => {
|
|
174
|
+
alignPos.forEach((ax, j) => {
|
|
175
|
+
if ((i === 0 && j === 0) || (i === 0 && j === last) || (i === last && j === 0))
|
|
176
|
+
return;
|
|
177
|
+
for (let dy = -2; dy <= 2; dy++) {
|
|
178
|
+
for (let dx = -2; dx <= 2; dx++)
|
|
179
|
+
setFunction(ax + dx, ay + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
const bit = (value, i) => ((value >>> i) & 1) !== 0;
|
|
184
|
+
const drawFormat = (mask) => {
|
|
185
|
+
const fmt = (ECL_FORMAT_BITS[ecl] << 3) | mask;
|
|
186
|
+
let rem = fmt;
|
|
187
|
+
for (let i = 0; i < 10; i++)
|
|
188
|
+
rem = (rem << 1) ^ ((rem >>> 9) * 0x537);
|
|
189
|
+
const fbits = ((fmt << 10) | rem) ^ 0x5412;
|
|
190
|
+
for (let i = 0; i <= 5; i++)
|
|
191
|
+
setFunction(8, i, bit(fbits, i));
|
|
192
|
+
setFunction(8, 7, bit(fbits, 6));
|
|
193
|
+
setFunction(8, 8, bit(fbits, 7));
|
|
194
|
+
setFunction(7, 8, bit(fbits, 8));
|
|
195
|
+
for (let i = 9; i < 15; i++)
|
|
196
|
+
setFunction(14 - i, 8, bit(fbits, i));
|
|
197
|
+
for (let i = 0; i < 8; i++)
|
|
198
|
+
setFunction(size - 1 - i, 8, bit(fbits, i));
|
|
199
|
+
for (let i = 8; i < 15; i++)
|
|
200
|
+
setFunction(8, size - 15 + i, bit(fbits, i));
|
|
201
|
+
setFunction(8, size - 8, true);
|
|
202
|
+
};
|
|
203
|
+
drawFormat(0);
|
|
204
|
+
if (ver >= 7) {
|
|
205
|
+
let rem = ver;
|
|
206
|
+
for (let i = 0; i < 12; i++)
|
|
207
|
+
rem = (rem << 1) ^ ((rem >>> 11) * 0x1f25);
|
|
208
|
+
const vbits = (ver << 12) | rem;
|
|
209
|
+
for (let i = 0; i < 18; i++) {
|
|
210
|
+
const a = size - 11 + (i % 3);
|
|
211
|
+
const b = Math.floor(i / 3);
|
|
212
|
+
setFunction(a, b, bit(vbits, i));
|
|
213
|
+
setFunction(b, a, bit(vbits, i));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Codewords in the zigzag, right to left in pairs of columns.
|
|
217
|
+
let n = 0;
|
|
218
|
+
for (let right = size - 1; right >= 1; right -= 2) {
|
|
219
|
+
if (right === 6)
|
|
220
|
+
right = 5;
|
|
221
|
+
for (let vert = 0; vert < size; vert++) {
|
|
222
|
+
for (let j = 0; j < 2; j++) {
|
|
223
|
+
const x = right - j;
|
|
224
|
+
const upward = ((right + 1) & 2) === 0;
|
|
225
|
+
const y = upward ? size - 1 - vert : vert;
|
|
226
|
+
if (!isFunction[y][x] && n < all.length * 8) {
|
|
227
|
+
modules[y][x] = bit(all[n >>> 3], 7 - (n & 7));
|
|
228
|
+
n++;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
const applyMask = (mask) => {
|
|
234
|
+
for (let y = 0; y < size; y++) {
|
|
235
|
+
for (let x = 0; x < size; x++) {
|
|
236
|
+
let invert;
|
|
237
|
+
switch (mask) {
|
|
238
|
+
case 0:
|
|
239
|
+
invert = (x + y) % 2 === 0;
|
|
240
|
+
break;
|
|
241
|
+
case 1:
|
|
242
|
+
invert = y % 2 === 0;
|
|
243
|
+
break;
|
|
244
|
+
case 2:
|
|
245
|
+
invert = x % 3 === 0;
|
|
246
|
+
break;
|
|
247
|
+
case 3:
|
|
248
|
+
invert = (x + y) % 3 === 0;
|
|
249
|
+
break;
|
|
250
|
+
case 4:
|
|
251
|
+
invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 === 0;
|
|
252
|
+
break;
|
|
253
|
+
case 5:
|
|
254
|
+
invert = ((x * y) % 2) + ((x * y) % 3) === 0;
|
|
255
|
+
break;
|
|
256
|
+
case 6:
|
|
257
|
+
invert = (((x * y) % 2) + ((x * y) % 3)) % 2 === 0;
|
|
258
|
+
break;
|
|
259
|
+
default:
|
|
260
|
+
invert = (((x + y) % 2) + ((x * y) % 3)) % 2 === 0;
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
if (!isFunction[y][x] && invert)
|
|
264
|
+
modules[y][x] = !modules[y][x];
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
let best = 0;
|
|
269
|
+
let bestPenalty = Infinity;
|
|
270
|
+
for (let mask = 0; mask < 8; mask++) {
|
|
271
|
+
applyMask(mask);
|
|
272
|
+
drawFormat(mask);
|
|
273
|
+
const p = penalty(modules);
|
|
274
|
+
if (p < bestPenalty) {
|
|
275
|
+
bestPenalty = p;
|
|
276
|
+
best = mask;
|
|
277
|
+
}
|
|
278
|
+
applyMask(mask);
|
|
279
|
+
}
|
|
280
|
+
applyMask(best);
|
|
281
|
+
drawFormat(best);
|
|
282
|
+
return { size, rows: modules.map((row) => row.map((d) => (d ? '1' : '0')).join('')) };
|
|
283
|
+
}
|
|
284
|
+
const FINDER_LIKE = ['10111010000', '00001011101'];
|
|
285
|
+
/** The mask penalty of ISO/IEC 18004 §8.8.2: runs, 2×2 blocks, finder-like
|
|
286
|
+
* patterns and the dark/light balance. */
|
|
287
|
+
function penalty(modules) {
|
|
288
|
+
const size = modules.length;
|
|
289
|
+
const lines = [];
|
|
290
|
+
for (let y = 0; y < size; y++)
|
|
291
|
+
lines.push(modules[y].map((d) => (d ? '1' : '0')).join(''));
|
|
292
|
+
for (let x = 0; x < size; x++)
|
|
293
|
+
lines.push(modules.map((row) => (row[x] ? '1' : '0')).join(''));
|
|
294
|
+
let result = 0;
|
|
295
|
+
for (const line of lines) {
|
|
296
|
+
let run = 1;
|
|
297
|
+
for (let i = 1; i <= line.length; i++) {
|
|
298
|
+
if (i < line.length && line[i] === line[i - 1]) {
|
|
299
|
+
run++;
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
if (run >= 5)
|
|
303
|
+
result += 3 + (run - 5);
|
|
304
|
+
run = 1;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
for (const pattern of FINDER_LIKE) {
|
|
308
|
+
for (let at = line.indexOf(pattern); at >= 0; at = line.indexOf(pattern, at + 1))
|
|
309
|
+
result += 40;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
let dark = 0;
|
|
313
|
+
for (let y = 0; y < size; y++) {
|
|
314
|
+
for (let x = 0; x < size; x++) {
|
|
315
|
+
const c = modules[y][x];
|
|
316
|
+
if (c)
|
|
317
|
+
dark++;
|
|
318
|
+
if (x + 1 < size && y + 1 < size && c === modules[y][x + 1] && c === modules[y + 1][x] && c === modules[y + 1][x + 1])
|
|
319
|
+
result += 3;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
const total = size * size;
|
|
323
|
+
const k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;
|
|
324
|
+
return result + Math.max(0, k) * 10;
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=qr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qr.js","sourceRoot":"","sources":["../../src/video/qr.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,SAAS,GAAsC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChF,MAAM,eAAe,GAAsC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAEtF,6CAA6C;AAC7C,MAAM,uBAAuB,GAAe;IAC1C,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACnK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACpK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACpK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CACrK,CAAC;AACF,MAAM,2BAA2B,GAAe;IAC9C,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC7I,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtJ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACzJ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Video addresses (#454): recognise YouTube and Vimeo links, and build the
|
|
3
|
+
* page a reader is sent to (the QR code, the PDF link) and the player a
|
|
4
|
+
* screen output embeds.
|
|
5
|
+
*/
|
|
6
|
+
import type { Resource, ResolvedVideoPlayerOptions, VideoSource } from '../types';
|
|
7
|
+
/** A YouTube or Vimeo video recognised from a link. */
|
|
8
|
+
export interface ParsedVideoUrl {
|
|
9
|
+
source: Exclude<VideoSource, 'file'>;
|
|
10
|
+
/** The video id: 11 characters on YouTube, digits on Vimeo. */
|
|
11
|
+
id: string;
|
|
12
|
+
/** Vimeo's privacy hash of an unlisted video (`vimeo.com/123/abc`,
|
|
13
|
+
* `player.vimeo.com/video/123?h=abc`). */
|
|
14
|
+
hash?: string;
|
|
15
|
+
/** Start time in whole seconds (`t=90`, `t=1m30s`, `#t=90s`). */
|
|
16
|
+
start?: number;
|
|
17
|
+
}
|
|
18
|
+
/** Recognise a YouTube or Vimeo link: watch pages, short links, Shorts,
|
|
19
|
+
* embeds (youtube-nocookie too), Vimeo channel, group and showcase pages
|
|
20
|
+
* and unlisted links. A bare host-less id is not accepted. */
|
|
21
|
+
export declare function parseVideoUrl(input: string | undefined): ParsedVideoUrl | undefined;
|
|
22
|
+
/** The page of a YouTube or Vimeo video, the address printed in its QR code
|
|
23
|
+
* and linked from the PDF, starting at `start` seconds. */
|
|
24
|
+
export declare function videoWatchUrl(parsed: ParsedVideoUrl, start?: number): string;
|
|
25
|
+
/** The address a reader of a printed page is sent to for a video resource:
|
|
26
|
+
* the YouTube or Vimeo page, or the production address of a self-hosted
|
|
27
|
+
* file (`video.url`). `undefined` when there is none (a file not
|
|
28
|
+
* published yet, a link that is neither YouTube nor Vimeo is still
|
|
29
|
+
* returned as written when it is an http(s) address). */
|
|
30
|
+
export declare function resourceVideoLink(resource: Resource): string | undefined;
|
|
31
|
+
/** The `src` of the YouTube or Vimeo player for a video, with the player
|
|
32
|
+
* options the platform honours: controls, autoplay (muted, as browsers
|
|
33
|
+
* require), loop, start and end, privacy-enhanced mode (youtube-nocookie,
|
|
34
|
+
* Vimeo `dnt`) and, on Vimeo, the speed and picture-in-picture buttons.
|
|
35
|
+
* Download is never offered by the embedded players. */
|
|
36
|
+
export declare function videoEmbedUrl(parsed: ParsedVideoUrl, player: ResolvedVideoPlayerOptions, range?: {
|
|
37
|
+
start?: number;
|
|
38
|
+
end?: number;
|
|
39
|
+
}): string;
|
|
40
|
+
/** The `allow` attribute of a YouTube or Vimeo `<iframe>`: what the player
|
|
41
|
+
* may use. */
|
|
42
|
+
export declare function videoEmbedAllow(player: ResolvedVideoPlayerOptions): string;
|
|
43
|
+
/** The attributes of an HTML5 `<video>` element for the player options, in
|
|
44
|
+
* the order they are written: `controls`, `controlslist` (the buttons the
|
|
45
|
+
* browser hides: `nodownload`, `nofullscreen`, `noremoteplayback`,
|
|
46
|
+
* `noplaybackrate`), `disablepictureinpicture`, `disableremoteplayback`,
|
|
47
|
+
* `autoplay`, `muted`, `loop`, `playsinline`, `preload`. Each value is
|
|
48
|
+
* `true` for a boolean attribute. */
|
|
49
|
+
export declare function videoElementAttributes(player: ResolvedVideoPlayerOptions): Array<[string, string | true]>;
|
|
50
|
+
/** A media fragment (`#t=10,40`) that plays a self-hosted file from `start`
|
|
51
|
+
* to `end` seconds; empty when neither is set. */
|
|
52
|
+
export declare function mediaFragment(range: {
|
|
53
|
+
start?: number;
|
|
54
|
+
end?: number;
|
|
55
|
+
}): string;
|
|
56
|
+
/** The media type of a self-hosted video by its format (`mp4`, `webm`…). */
|
|
57
|
+
export declare function videoMimeType(format: string | undefined): string;
|
|
58
|
+
/** YouTube's poster frames for a video, largest first: `maxresdefault`
|
|
59
|
+
* (1280×720, not every video has one), `sddefault` and `hqdefault` (4:3,
|
|
60
|
+
* letterboxed). Hosts fetch the first that exists. */
|
|
61
|
+
export declare function youtubePosterUrls(id: string): string[];
|
|
62
|
+
//# sourceMappingURL=url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/video/url.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElF,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrC,+DAA+D;IAC/D,EAAE,EAAE,MAAM,CAAC;IACX;+CAC2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAaD;;+DAE+D;AAC/D,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAmCnF;AAED;4DAC4D;AAC5D,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED;;;;0DAI0D;AAC1D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAOxE;AAOD;;;;yDAIyD;AACzD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,0BAA0B,EAClC,KAAK,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,MAAM,CA6BR;AAED;eACe;AACf,wBAAgB,eAAe,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM,CAS1E;AAED;;;;;sCAKsC;AACtC,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,0BAA0B,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAkBzG;AAED;mDACmD;AACnD,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAG7E;AAWD,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEhE;AAED;;uDAEuD;AACvD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAEtD"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
const YOUTUBE_ID = /^[A-Za-z0-9_-]{11}$/;
|
|
2
|
+
/** Seconds from `90`, `90s`, `1m30s`, `1h2m3s`. */
|
|
3
|
+
function parseTime(value) {
|
|
4
|
+
if (!value)
|
|
5
|
+
return undefined;
|
|
6
|
+
if (/^\d+$/.test(value))
|
|
7
|
+
return Number(value);
|
|
8
|
+
const m = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(value);
|
|
9
|
+
if (!m || (!m[1] && !m[2] && !m[3]))
|
|
10
|
+
return undefined;
|
|
11
|
+
return Number(m[1] ?? 0) * 3600 + Number(m[2] ?? 0) * 60 + Number(m[3] ?? 0);
|
|
12
|
+
}
|
|
13
|
+
/** Recognise a YouTube or Vimeo link: watch pages, short links, Shorts,
|
|
14
|
+
* embeds (youtube-nocookie too), Vimeo channel, group and showcase pages
|
|
15
|
+
* and unlisted links. A bare host-less id is not accepted. */
|
|
16
|
+
export function parseVideoUrl(input) {
|
|
17
|
+
if (!input)
|
|
18
|
+
return undefined;
|
|
19
|
+
let url;
|
|
20
|
+
try {
|
|
21
|
+
url = new URL(input.trim().replace(/^(?!https?:\/\/)/i, 'https://'));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const host = url.hostname.toLowerCase().replace(/^(www|m|music)\./, '');
|
|
27
|
+
const parts = url.pathname.split('/').filter(Boolean);
|
|
28
|
+
const hashTime = /(?:^|&)t=([^&]+)/.exec(url.hash.slice(1))?.[1];
|
|
29
|
+
if (host === 'youtu.be') {
|
|
30
|
+
const id = parts[0];
|
|
31
|
+
if (!id || !YOUTUBE_ID.test(id))
|
|
32
|
+
return undefined;
|
|
33
|
+
const start = parseTime(url.searchParams.get('t') ?? url.searchParams.get('start'));
|
|
34
|
+
return { source: 'youtube', id, ...(start ? { start } : {}) };
|
|
35
|
+
}
|
|
36
|
+
if (host === 'youtube.com' || host === 'youtube-nocookie.com') {
|
|
37
|
+
let id;
|
|
38
|
+
if (parts[0] === 'watch' || parts.length === 0)
|
|
39
|
+
id = url.searchParams.get('v') ?? undefined;
|
|
40
|
+
else if (['embed', 'shorts', 'live', 'v', 'e'].includes(parts[0]))
|
|
41
|
+
id = parts[1];
|
|
42
|
+
if (!id || !YOUTUBE_ID.test(id))
|
|
43
|
+
return undefined;
|
|
44
|
+
const start = parseTime(url.searchParams.get('t') ?? url.searchParams.get('start') ?? hashTime);
|
|
45
|
+
return { source: 'youtube', id, ...(start ? { start } : {}) };
|
|
46
|
+
}
|
|
47
|
+
if (host === 'vimeo.com' || host === 'player.vimeo.com') {
|
|
48
|
+
const at = parts.findIndex((p) => /^\d+$/.test(p));
|
|
49
|
+
if (at < 0)
|
|
50
|
+
return undefined;
|
|
51
|
+
const id = parts[at];
|
|
52
|
+
const next = parts[at + 1];
|
|
53
|
+
const hash = url.searchParams.get('h') ?? (next && /^[0-9a-f]{6,}$/i.test(next) ? next : undefined);
|
|
54
|
+
const start = parseTime(hashTime);
|
|
55
|
+
return { source: 'vimeo', id, ...(hash ? { hash } : {}), ...(start ? { start } : {}) };
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
/** The page of a YouTube or Vimeo video, the address printed in its QR code
|
|
60
|
+
* and linked from the PDF, starting at `start` seconds. */
|
|
61
|
+
export function videoWatchUrl(parsed, start) {
|
|
62
|
+
const t = start ?? parsed.start;
|
|
63
|
+
if (parsed.source === 'youtube') {
|
|
64
|
+
return `https://youtu.be/${parsed.id}${t ? `?t=${t}` : ''}`;
|
|
65
|
+
}
|
|
66
|
+
return `https://vimeo.com/${parsed.id}${parsed.hash ? `/${parsed.hash}` : ''}${t ? `#t=${t}s` : ''}`;
|
|
67
|
+
}
|
|
68
|
+
/** The address a reader of a printed page is sent to for a video resource:
|
|
69
|
+
* the YouTube or Vimeo page, or the production address of a self-hosted
|
|
70
|
+
* file (`video.url`). `undefined` when there is none (a file not
|
|
71
|
+
* published yet, a link that is neither YouTube nor Vimeo is still
|
|
72
|
+
* returned as written when it is an http(s) address). */
|
|
73
|
+
export function resourceVideoLink(resource) {
|
|
74
|
+
const v = resource.video;
|
|
75
|
+
if (!v)
|
|
76
|
+
return undefined;
|
|
77
|
+
if (v.source === 'file')
|
|
78
|
+
return httpUrl(v.url);
|
|
79
|
+
const parsed = parseVideoUrl(v.url);
|
|
80
|
+
if (parsed && parsed.source === v.source)
|
|
81
|
+
return videoWatchUrl(parsed, v.start);
|
|
82
|
+
return httpUrl(v.url);
|
|
83
|
+
}
|
|
84
|
+
function httpUrl(url) {
|
|
85
|
+
const t = url?.trim();
|
|
86
|
+
return t && /^https?:\/\/\S+$/i.test(t) ? t : undefined;
|
|
87
|
+
}
|
|
88
|
+
/** The `src` of the YouTube or Vimeo player for a video, with the player
|
|
89
|
+
* options the platform honours: controls, autoplay (muted, as browsers
|
|
90
|
+
* require), loop, start and end, privacy-enhanced mode (youtube-nocookie,
|
|
91
|
+
* Vimeo `dnt`) and, on Vimeo, the speed and picture-in-picture buttons.
|
|
92
|
+
* Download is never offered by the embedded players. */
|
|
93
|
+
export function videoEmbedUrl(parsed, player, range = {}) {
|
|
94
|
+
const start = range.start ?? parsed.start;
|
|
95
|
+
const q = new URLSearchParams();
|
|
96
|
+
if (parsed.source === 'youtube') {
|
|
97
|
+
if (!player.controls)
|
|
98
|
+
q.set('controls', '0');
|
|
99
|
+
if (player.autoplay)
|
|
100
|
+
q.set('autoplay', '1');
|
|
101
|
+
if (player.autoplay || player.muted)
|
|
102
|
+
q.set('mute', '1');
|
|
103
|
+
if (player.loop) {
|
|
104
|
+
q.set('loop', '1');
|
|
105
|
+
q.set('playlist', parsed.id);
|
|
106
|
+
}
|
|
107
|
+
if (!player.fullscreen)
|
|
108
|
+
q.set('fs', '0');
|
|
109
|
+
q.set('rel', '0');
|
|
110
|
+
q.set('playsinline', '1');
|
|
111
|
+
if (start)
|
|
112
|
+
q.set('start', String(Math.floor(start)));
|
|
113
|
+
if (range.end)
|
|
114
|
+
q.set('end', String(Math.floor(range.end)));
|
|
115
|
+
const host = player.privacy ? 'https://www.youtube-nocookie.com' : 'https://www.youtube.com';
|
|
116
|
+
return `${host}/embed/${parsed.id}?${q.toString()}`;
|
|
117
|
+
}
|
|
118
|
+
if (parsed.hash)
|
|
119
|
+
q.set('h', parsed.hash);
|
|
120
|
+
if (!player.controls)
|
|
121
|
+
q.set('controls', '0');
|
|
122
|
+
if (player.autoplay)
|
|
123
|
+
q.set('autoplay', '1');
|
|
124
|
+
if (player.autoplay || player.muted)
|
|
125
|
+
q.set('muted', '1');
|
|
126
|
+
if (player.loop)
|
|
127
|
+
q.set('loop', '1');
|
|
128
|
+
if (player.privacy)
|
|
129
|
+
q.set('dnt', '1');
|
|
130
|
+
if (!player.pictureInPicture)
|
|
131
|
+
q.set('pip', '0');
|
|
132
|
+
if (!player.playbackRate)
|
|
133
|
+
q.set('speed', '0');
|
|
134
|
+
q.set('playsinline', '1');
|
|
135
|
+
return `https://player.vimeo.com/video/${parsed.id}?${q.toString()}${start ? `#t=${Math.floor(start)}s` : ''}`;
|
|
136
|
+
}
|
|
137
|
+
/** The `allow` attribute of a YouTube or Vimeo `<iframe>`: what the player
|
|
138
|
+
* may use. */
|
|
139
|
+
export function videoEmbedAllow(player) {
|
|
140
|
+
return [
|
|
141
|
+
'accelerometer',
|
|
142
|
+
...(player.autoplay ? ['autoplay'] : []),
|
|
143
|
+
'encrypted-media',
|
|
144
|
+
...(player.fullscreen ? ['fullscreen'] : []),
|
|
145
|
+
'gyroscope',
|
|
146
|
+
...(player.pictureInPicture ? ['picture-in-picture'] : []),
|
|
147
|
+
].join('; ');
|
|
148
|
+
}
|
|
149
|
+
/** The attributes of an HTML5 `<video>` element for the player options, in
|
|
150
|
+
* the order they are written: `controls`, `controlslist` (the buttons the
|
|
151
|
+
* browser hides: `nodownload`, `nofullscreen`, `noremoteplayback`,
|
|
152
|
+
* `noplaybackrate`), `disablepictureinpicture`, `disableremoteplayback`,
|
|
153
|
+
* `autoplay`, `muted`, `loop`, `playsinline`, `preload`. Each value is
|
|
154
|
+
* `true` for a boolean attribute. */
|
|
155
|
+
export function videoElementAttributes(player) {
|
|
156
|
+
const attrs = [];
|
|
157
|
+
if (player.controls)
|
|
158
|
+
attrs.push(['controls', true]);
|
|
159
|
+
const hidden = [
|
|
160
|
+
...(player.download ? [] : ['nodownload']),
|
|
161
|
+
...(player.fullscreen ? [] : ['nofullscreen']),
|
|
162
|
+
...(player.remotePlayback ? [] : ['noremoteplayback']),
|
|
163
|
+
...(player.playbackRate ? [] : ['noplaybackrate']),
|
|
164
|
+
];
|
|
165
|
+
if (hidden.length > 0)
|
|
166
|
+
attrs.push(['controlslist', hidden.join(' ')]);
|
|
167
|
+
if (!player.pictureInPicture)
|
|
168
|
+
attrs.push(['disablepictureinpicture', true]);
|
|
169
|
+
if (!player.remotePlayback)
|
|
170
|
+
attrs.push(['disableremoteplayback', true]);
|
|
171
|
+
if (player.autoplay)
|
|
172
|
+
attrs.push(['autoplay', true]);
|
|
173
|
+
if (player.autoplay || player.muted)
|
|
174
|
+
attrs.push(['muted', true]);
|
|
175
|
+
if (player.loop)
|
|
176
|
+
attrs.push(['loop', true]);
|
|
177
|
+
attrs.push(['playsinline', true]);
|
|
178
|
+
attrs.push(['preload', player.preload]);
|
|
179
|
+
return attrs;
|
|
180
|
+
}
|
|
181
|
+
/** A media fragment (`#t=10,40`) that plays a self-hosted file from `start`
|
|
182
|
+
* to `end` seconds; empty when neither is set. */
|
|
183
|
+
export function mediaFragment(range) {
|
|
184
|
+
if (!range.start && !range.end)
|
|
185
|
+
return '';
|
|
186
|
+
return `#t=${range.start ?? 0}${range.end ? `,${range.end}` : ''}`;
|
|
187
|
+
}
|
|
188
|
+
const MIME_BY_FORMAT = {
|
|
189
|
+
mp4: 'video/mp4',
|
|
190
|
+
m4v: 'video/mp4',
|
|
191
|
+
webm: 'video/webm',
|
|
192
|
+
ogv: 'video/ogg',
|
|
193
|
+
ogg: 'video/ogg',
|
|
194
|
+
mov: 'video/quicktime',
|
|
195
|
+
};
|
|
196
|
+
/** The media type of a self-hosted video by its format (`mp4`, `webm`…). */
|
|
197
|
+
export function videoMimeType(format) {
|
|
198
|
+
return MIME_BY_FORMAT[(format ?? 'mp4').toLowerCase()] ?? 'video/mp4';
|
|
199
|
+
}
|
|
200
|
+
/** YouTube's poster frames for a video, largest first: `maxresdefault`
|
|
201
|
+
* (1280×720, not every video has one), `sddefault` and `hqdefault` (4:3,
|
|
202
|
+
* letterboxed). Hosts fetch the first that exists. */
|
|
203
|
+
export function youtubePosterUrls(id) {
|
|
204
|
+
return ['maxresdefault', 'sddefault', 'hqdefault'].map((name) => `https://i.ytimg.com/vi/${id}/${name}.jpg`);
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/video/url.ts"],"names":[],"mappings":"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"}
|