origam 2.2.1 → 2.3.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/CHANGELOG.md +224 -0
- package/README.md +22 -0
- package/dist/src/assets/css/tokens/dark.css +318 -0
- package/dist/src/assets/css/tokens/light.css +159 -0
- package/dist/src/assets/locales/index.js +2 -2
- package/dist/src/assets/scss/tokens/_dark.scss +159 -0
- package/dist/src/assets/scss/tokens/_light.scss +159 -0
- package/dist/src/components/Bracket/OrigamBracket.vue +530 -0
- package/dist/src/components/Bracket/OrigamBracketCompetitor.vue +210 -0
- package/dist/src/components/Bracket/OrigamBracketMatch.vue +288 -0
- package/dist/src/components/Bracket/OrigamBracketRound.vue +150 -0
- package/dist/src/components/Bracket/index.cjs +34 -0
- package/dist/src/components/Bracket/index.d.ts +4 -0
- package/dist/src/components/Bracket/index.js +4 -0
- package/dist/src/components/ClientOnly/OrigamClientOnly.vue +28 -0
- package/dist/src/components/ClientOnly/index.cjs +13 -0
- package/dist/src/components/ClientOnly/index.d.ts +1 -0
- package/dist/src/components/ClientOnly/index.js +1 -0
- package/dist/src/components/Code/OrigamCode.vue +449 -0
- package/dist/src/components/Code/index.cjs +13 -0
- package/dist/src/components/Code/index.d.ts +1 -0
- package/dist/src/components/Code/index.js +1 -0
- package/dist/src/components/ColorPickerField/OrigamColorPickerField.vue +1 -0
- package/dist/src/components/CommandPalette/OrigamCommandPalette.vue +614 -0
- package/dist/src/components/CommandPalette/index.cjs +13 -0
- package/dist/src/components/CommandPalette/index.d.ts +1 -0
- package/dist/src/components/CommandPalette/index.js +1 -0
- package/dist/src/components/DatePickerField/OrigamDatePickerField.vue +1 -0
- package/dist/src/components/Parallax/OrigamParallax.vue +65 -34
- package/dist/src/components/Parallax/OrigamParallaxLayer.vue +119 -0
- package/dist/src/components/Parallax/index.cjs +7 -0
- package/dist/src/components/Parallax/index.d.ts +1 -0
- package/dist/src/components/Parallax/index.js +1 -0
- package/dist/src/components/PasswordField/OrigamPasswordField.vue +1 -0
- package/dist/src/components/Select/OrigamSelect.vue +1 -0
- package/dist/src/components/SnackbarStack/OrigamSnackbarStack.vue +457 -0
- package/dist/src/components/SnackbarStack/index.cjs +13 -0
- package/dist/src/components/SnackbarStack/index.d.ts +1 -0
- package/dist/src/components/SnackbarStack/index.js +1 -0
- package/dist/src/components/Tabs/OrigamTab.vue +263 -0
- package/dist/src/components/Tabs/OrigamTabPanel.vue +112 -0
- package/dist/src/components/Tabs/OrigamTabPanels.vue +139 -0
- package/dist/src/components/Tabs/OrigamTabs.vue +242 -0
- package/dist/src/components/Tabs/index.cjs +34 -0
- package/dist/src/components/Tabs/index.d.ts +4 -0
- package/dist/src/components/Tabs/index.js +4 -0
- package/dist/src/components/TextField/OrigamTextField.vue +75 -5
- package/dist/src/components/TextareaField/OrigamRichToolbar.vue +284 -0
- package/dist/src/components/TextareaField/OrigamTextareaField.vue +192 -5
- package/dist/src/components/TextareaField/index.cjs +7 -0
- package/dist/src/components/TextareaField/index.d.ts +1 -0
- package/dist/src/components/TextareaField/index.js +1 -0
- package/dist/src/components/index.cjs +66 -0
- package/dist/src/components/index.d.ts +6 -0
- package/dist/src/components/index.js +6 -0
- package/dist/src/composables/Code/code.composable.cjs +98 -0
- package/dist/src/composables/Code/code.composable.d.ts +10 -0
- package/dist/src/composables/Code/code.composable.js +82 -0
- package/dist/src/composables/CommandPalette/command.composable.cjs +53 -0
- package/dist/src/composables/CommandPalette/command.composable.d.ts +37 -0
- package/dist/src/composables/CommandPalette/command.composable.js +46 -0
- package/dist/src/composables/Commons/virtual.composable.cjs +1 -0
- package/dist/src/composables/Commons/virtual.composable.js +1 -0
- package/dist/src/composables/CssSupport/cssSupport.composable.cjs +12 -0
- package/dist/src/composables/CssSupport/cssSupport.composable.d.ts +25 -0
- package/dist/src/composables/CssSupport/cssSupport.composable.js +10 -1
- package/dist/src/composables/DataTable/headers.composable.d.ts +36 -36
- package/dist/src/composables/Mask/index.cjs +16 -0
- package/dist/src/composables/Mask/index.d.ts +1 -0
- package/dist/src/composables/Mask/index.js +1 -0
- package/dist/src/composables/Mask/mask.composable.cjs +57 -0
- package/dist/src/composables/Mask/mask.composable.d.ts +39 -0
- package/dist/src/composables/Mask/mask.composable.js +51 -0
- package/dist/src/composables/Parallax/parallax.composable.cjs +232 -0
- package/dist/src/composables/Parallax/parallax.composable.d.ts +60 -0
- package/dist/src/composables/Parallax/parallax.composable.js +219 -0
- package/dist/src/composables/Responsive/aspect.composable.cjs +6 -1
- package/dist/src/composables/Responsive/aspect.composable.d.ts +10 -0
- package/dist/src/composables/Responsive/aspect.composable.js +6 -1
- package/dist/src/composables/SnackbarStack/snackbar-stack.composable.cjs +102 -0
- package/dist/src/composables/SnackbarStack/snackbar-stack.composable.d.ts +58 -0
- package/dist/src/composables/SnackbarStack/snackbar-stack.composable.js +92 -0
- package/dist/src/composables/Textarea/textarea-rich.composable.cjs +263 -0
- package/dist/src/composables/Textarea/textarea-rich.composable.d.ts +41 -0
- package/dist/src/composables/Textarea/textarea-rich.composable.js +257 -0
- package/dist/src/composables/index.cjs +66 -0
- package/dist/src/composables/index.d.ts +6 -0
- package/dist/src/composables/index.js +6 -0
- package/dist/src/consts/Bracket/bracket.const.cjs +12 -0
- package/dist/src/consts/Bracket/bracket.const.d.ts +34 -0
- package/dist/src/consts/Bracket/bracket.const.js +15 -0
- package/dist/src/consts/Code/code.const.cjs +26 -0
- package/dist/src/consts/Code/code.const.d.ts +40 -0
- package/dist/src/consts/Code/code.const.js +35 -0
- package/dist/src/consts/CommandPalette/command-palette.const.cjs +10 -0
- package/dist/src/consts/CommandPalette/command-palette.const.d.ts +16 -0
- package/dist/src/consts/CommandPalette/command-palette.const.js +7 -0
- package/dist/src/consts/Mask/built-in-patterns.const.cjs +66 -0
- package/dist/src/consts/Mask/built-in-patterns.const.d.ts +20 -0
- package/dist/src/consts/Mask/built-in-patterns.const.js +60 -0
- package/dist/src/consts/Parallax/parallax-layer.const.cjs +7 -0
- package/dist/src/consts/Parallax/parallax-layer.const.d.ts +3 -0
- package/dist/src/consts/Parallax/parallax-layer.const.js +1 -0
- package/dist/src/consts/SnackbarStack/snackbar-stack.const.cjs +12 -0
- package/dist/src/consts/SnackbarStack/snackbar-stack.const.d.ts +33 -0
- package/dist/src/consts/SnackbarStack/snackbar-stack.const.js +18 -0
- package/dist/src/consts/Tabs/tabs.const.cjs +9 -0
- package/dist/src/consts/Tabs/tabs.const.d.ts +23 -0
- package/dist/src/consts/Tabs/tabs.const.js +3 -0
- package/dist/src/consts/Textarea/textarea.const.cjs +28 -0
- package/dist/src/consts/Textarea/textarea.const.d.ts +38 -0
- package/dist/src/consts/Textarea/textarea.const.js +65 -0
- package/dist/src/consts/Theme/theme.const.cjs +15 -0
- package/dist/src/consts/Theme/theme.const.d.ts +9 -0
- package/dist/src/consts/Theme/theme.const.js +9 -0
- package/dist/src/consts/index.cjs +99 -0
- package/dist/src/consts/index.d.ts +9 -0
- package/dist/src/consts/index.js +9 -0
- package/dist/src/enums/Bracket/bracket-match-status.enum.cjs +13 -0
- package/dist/src/enums/Bracket/bracket-match-status.enum.d.ts +6 -0
- package/dist/src/enums/Bracket/bracket-match-status.enum.js +7 -0
- package/dist/src/enums/Bracket/bracket-variant.enum.cjs +12 -0
- package/dist/src/enums/Bracket/bracket-variant.enum.d.ts +5 -0
- package/dist/src/enums/Bracket/bracket-variant.enum.js +6 -0
- package/dist/src/enums/Code/code-lang.enum.cjs +23 -0
- package/dist/src/enums/Code/code-lang.enum.d.ts +25 -0
- package/dist/src/enums/Code/code-lang.enum.js +17 -0
- package/dist/src/enums/Code/code-theme.enum.cjs +12 -0
- package/dist/src/enums/Code/code-theme.enum.d.ts +12 -0
- package/dist/src/enums/Code/code-theme.enum.js +6 -0
- package/dist/src/enums/Mask/mask.enum.cjs +28 -0
- package/dist/src/enums/Mask/mask.enum.d.ts +36 -0
- package/dist/src/enums/Mask/mask.enum.js +22 -0
- package/dist/src/enums/Parallax/parallax-direction.enum.cjs +12 -0
- package/dist/src/enums/Parallax/parallax-direction.enum.d.ts +5 -0
- package/dist/src/enums/Parallax/parallax-direction.enum.js +6 -0
- package/dist/src/enums/Parallax/parallax-easing.enum.cjs +12 -0
- package/dist/src/enums/Parallax/parallax-easing.enum.d.ts +5 -0
- package/dist/src/enums/Parallax/parallax-easing.enum.js +6 -0
- package/dist/src/enums/Tabs/tab-variant.enum.cjs +12 -0
- package/dist/src/enums/Tabs/tab-variant.enum.d.ts +5 -0
- package/dist/src/enums/Tabs/tab-variant.enum.js +6 -0
- package/dist/src/enums/Textarea/textarea-mode.enum.cjs +11 -0
- package/dist/src/enums/Textarea/textarea-mode.enum.d.ts +13 -0
- package/dist/src/enums/Textarea/textarea-mode.enum.js +5 -0
- package/dist/src/enums/Textarea/textarea-output.enum.cjs +11 -0
- package/dist/src/enums/Textarea/textarea-output.enum.d.ts +14 -0
- package/dist/src/enums/Textarea/textarea-output.enum.js +5 -0
- package/dist/src/enums/Textarea/textarea-toolbar-command.enum.cjs +21 -0
- package/dist/src/enums/Textarea/textarea-toolbar-command.enum.d.ts +20 -0
- package/dist/src/enums/Textarea/textarea-toolbar-command.enum.js +15 -0
- package/dist/src/enums/Textarea/textarea-toolbar-position.enum.cjs +12 -0
- package/dist/src/enums/Textarea/textarea-toolbar-position.enum.d.ts +10 -0
- package/dist/src/enums/Textarea/textarea-toolbar-position.enum.js +6 -0
- package/dist/src/enums/index.cjs +132 -0
- package/dist/src/enums/index.d.ts +12 -0
- package/dist/src/enums/index.js +12 -0
- package/dist/src/interfaces/Bracket/bracket-competitor-component.interface.cjs +1 -0
- package/dist/src/interfaces/Bracket/bracket-competitor-component.interface.d.ts +53 -0
- package/dist/src/interfaces/Bracket/bracket-competitor-component.interface.js +0 -0
- package/dist/src/interfaces/Bracket/bracket-competitor.interface.cjs +1 -0
- package/dist/src/interfaces/Bracket/bracket-competitor.interface.d.ts +25 -0
- package/dist/src/interfaces/Bracket/bracket-competitor.interface.js +0 -0
- package/dist/src/interfaces/Bracket/bracket-match-component.interface.cjs +1 -0
- package/dist/src/interfaces/Bracket/bracket-match-component.interface.d.ts +45 -0
- package/dist/src/interfaces/Bracket/bracket-match-component.interface.js +0 -0
- package/dist/src/interfaces/Bracket/bracket-match.interface.cjs +1 -0
- package/dist/src/interfaces/Bracket/bracket-match.interface.d.ts +51 -0
- package/dist/src/interfaces/Bracket/bracket-match.interface.js +0 -0
- package/dist/src/interfaces/Bracket/bracket-round-component.interface.cjs +1 -0
- package/dist/src/interfaces/Bracket/bracket-round-component.interface.d.ts +26 -0
- package/dist/src/interfaces/Bracket/bracket-round-component.interface.js +0 -0
- package/dist/src/interfaces/Bracket/bracket-round.interface.cjs +1 -0
- package/dist/src/interfaces/Bracket/bracket-round.interface.d.ts +27 -0
- package/dist/src/interfaces/Bracket/bracket-round.interface.js +0 -0
- package/dist/src/interfaces/Bracket/bracket.interface.cjs +1 -0
- package/dist/src/interfaces/Bracket/bracket.interface.d.ts +71 -0
- package/dist/src/interfaces/Bracket/bracket.interface.js +0 -0
- package/dist/src/interfaces/Code/code.interface.cjs +1 -0
- package/dist/src/interfaces/Code/code.interface.d.ts +99 -0
- package/dist/src/interfaces/Code/code.interface.js +0 -0
- package/dist/src/interfaces/CommandPalette/command-palette.interface.cjs +1 -0
- package/dist/src/interfaces/CommandPalette/command-palette.interface.d.ts +57 -0
- package/dist/src/interfaces/CommandPalette/command-palette.interface.js +0 -0
- package/dist/src/interfaces/CommandPalette/command.interface.cjs +1 -0
- package/dist/src/interfaces/CommandPalette/command.interface.d.ts +51 -0
- package/dist/src/interfaces/CommandPalette/command.interface.js +0 -0
- package/dist/src/interfaces/Mask/mask-options.interface.cjs +1 -0
- package/dist/src/interfaces/Mask/mask-options.interface.d.ts +48 -0
- package/dist/src/interfaces/Mask/mask-options.interface.js +0 -0
- package/dist/src/interfaces/Nuxt/nuxt-module.interface.cjs +1 -0
- package/dist/src/interfaces/Nuxt/nuxt-module.interface.d.ts +73 -0
- package/dist/src/interfaces/Nuxt/nuxt-module.interface.js +0 -0
- package/dist/src/interfaces/Parallax/parallax-layer.interface.cjs +1 -0
- package/dist/src/interfaces/Parallax/parallax-layer.interface.d.ts +39 -0
- package/dist/src/interfaces/Parallax/parallax-layer.interface.js +0 -0
- package/dist/src/interfaces/Parallax/parallax.interface.d.ts +83 -3
- package/dist/src/interfaces/SnackbarStack/snackbar-stack-item.interface.cjs +1 -0
- package/dist/src/interfaces/SnackbarStack/snackbar-stack-item.interface.d.ts +60 -0
- package/dist/src/interfaces/SnackbarStack/snackbar-stack-item.interface.js +0 -0
- package/dist/src/interfaces/SnackbarStack/snackbar-stack.interface.cjs +1 -0
- package/dist/src/interfaces/SnackbarStack/snackbar-stack.interface.d.ts +60 -0
- package/dist/src/interfaces/SnackbarStack/snackbar-stack.interface.js +0 -0
- package/dist/src/interfaces/Tabs/tab-panel.interface.cjs +1 -0
- package/dist/src/interfaces/Tabs/tab-panel.interface.d.ts +12 -0
- package/dist/src/interfaces/Tabs/tab-panel.interface.js +0 -0
- package/dist/src/interfaces/Tabs/tab-panels.interface.cjs +1 -0
- package/dist/src/interfaces/Tabs/tab-panels.interface.d.ts +28 -0
- package/dist/src/interfaces/Tabs/tab-panels.interface.js +0 -0
- package/dist/src/interfaces/Tabs/tab.interface.cjs +1 -0
- package/dist/src/interfaces/Tabs/tab.interface.d.ts +18 -0
- package/dist/src/interfaces/Tabs/tab.interface.js +0 -0
- package/dist/src/interfaces/Tabs/tabs.interface.cjs +1 -0
- package/dist/src/interfaces/Tabs/tabs.interface.d.ts +26 -0
- package/dist/src/interfaces/Tabs/tabs.interface.js +0 -0
- package/dist/src/interfaces/TextField/text-field.interface.d.ts +21 -1
- package/dist/src/interfaces/Textarea/textarea-rich.interface.cjs +1 -0
- package/dist/src/interfaces/Textarea/textarea-rich.interface.d.ts +41 -0
- package/dist/src/interfaces/Textarea/textarea-rich.interface.js +0 -0
- package/dist/src/interfaces/Textarea/textarea-toolbar.interface.cjs +1 -0
- package/dist/src/interfaces/Textarea/textarea-toolbar.interface.d.ts +31 -0
- package/dist/src/interfaces/Textarea/textarea-toolbar.interface.js +0 -0
- package/dist/src/interfaces/TextareaField/textarea-field.interface.d.ts +38 -1
- package/dist/src/interfaces/index.cjs +231 -0
- package/dist/src/interfaces/index.d.ts +21 -0
- package/dist/src/interfaces/index.js +21 -0
- package/dist/src/nuxt/index.cjs +13 -0
- package/dist/src/nuxt/index.d.ts +2 -0
- package/dist/src/nuxt/index.js +1 -0
- package/dist/src/nuxt/module.cjs +74 -0
- package/dist/src/nuxt/module.d.ts +31 -0
- package/dist/src/nuxt/module.js +68 -0
- package/dist/src/nuxt/plugin.client.cjs +44 -0
- package/dist/src/nuxt/plugin.client.d.ts +2 -0
- package/dist/src/nuxt/plugin.client.js +36 -0
- package/dist/src/nuxt/plugin.server.cjs +51 -0
- package/dist/src/nuxt/plugin.server.d.ts +2 -0
- package/dist/src/nuxt/plugin.server.js +45 -0
- package/dist/src/types/Bracket/bracket-direction.type.cjs +1 -0
- package/dist/src/types/Bracket/bracket-direction.type.d.ts +13 -0
- package/dist/src/types/Bracket/bracket-direction.type.js +0 -0
- package/dist/src/types/Bracket/bracket-match-status.type.cjs +1 -0
- package/dist/src/types/Bracket/bracket-match-status.type.d.ts +2 -0
- package/dist/src/types/Bracket/bracket-match-status.type.js +0 -0
- package/dist/src/types/Bracket/bracket-round-side.type.cjs +1 -0
- package/dist/src/types/Bracket/bracket-round-side.type.d.ts +12 -0
- package/dist/src/types/Bracket/bracket-round-side.type.js +0 -0
- package/dist/src/types/Bracket/bracket-variant.type.cjs +1 -0
- package/dist/src/types/Bracket/bracket-variant.type.d.ts +2 -0
- package/dist/src/types/Bracket/bracket-variant.type.js +0 -0
- package/dist/src/types/Code/code-lang.type.cjs +1 -0
- package/dist/src/types/Code/code-lang.type.d.ts +2 -0
- package/dist/src/types/Code/code-lang.type.js +0 -0
- package/dist/src/types/Code/code-theme.type.cjs +1 -0
- package/dist/src/types/Code/code-theme.type.d.ts +2 -0
- package/dist/src/types/Code/code-theme.type.js +0 -0
- package/dist/src/types/CommandPalette/command-palette-hotkey.type.cjs +1 -0
- package/dist/src/types/CommandPalette/command-palette-hotkey.type.d.ts +5 -0
- package/dist/src/types/CommandPalette/command-palette-hotkey.type.js +0 -0
- package/dist/src/types/Mask/built-in-pattern.type.cjs +1 -0
- package/dist/src/types/Mask/built-in-pattern.type.d.ts +7 -0
- package/dist/src/types/Mask/built-in-pattern.type.js +0 -0
- package/dist/src/types/Mask/mask.type.cjs +1 -0
- package/dist/src/types/Mask/mask.type.d.ts +19 -0
- package/dist/src/types/Mask/mask.type.js +0 -0
- package/dist/src/types/Mask/pattern-validator.type.cjs +1 -0
- package/dist/src/types/Mask/pattern-validator.type.d.ts +16 -0
- package/dist/src/types/Mask/pattern-validator.type.js +0 -0
- package/dist/src/types/Parallax/parallax-direction.type.cjs +1 -0
- package/dist/src/types/Parallax/parallax-direction.type.d.ts +2 -0
- package/dist/src/types/Parallax/parallax-direction.type.js +0 -0
- package/dist/src/types/Parallax/parallax-easing.type.cjs +1 -0
- package/dist/src/types/Parallax/parallax-easing.type.d.ts +2 -0
- package/dist/src/types/Parallax/parallax-easing.type.js +0 -0
- package/dist/src/types/SnackbarStack/snackbar-stack-direction.type.cjs +1 -0
- package/dist/src/types/SnackbarStack/snackbar-stack-direction.type.d.ts +11 -0
- package/dist/src/types/SnackbarStack/snackbar-stack-direction.type.js +0 -0
- package/dist/src/types/SnackbarStack/snackbar-stack-location.type.cjs +1 -0
- package/dist/src/types/SnackbarStack/snackbar-stack-location.type.d.ts +9 -0
- package/dist/src/types/SnackbarStack/snackbar-stack-location.type.js +0 -0
- package/dist/src/types/SnackbarStack/snackbar-stack.type.cjs +1 -0
- package/dist/src/types/SnackbarStack/snackbar-stack.type.d.ts +2 -0
- package/dist/src/types/SnackbarStack/snackbar-stack.type.js +0 -0
- package/dist/src/types/Tabs/tab-panel.type.cjs +1 -0
- package/dist/src/types/Tabs/tab-panel.type.d.ts +2 -0
- package/dist/src/types/Tabs/tab-panel.type.js +0 -0
- package/dist/src/types/Tabs/tab-panels.type.cjs +1 -0
- package/dist/src/types/Tabs/tab-panels.type.d.ts +2 -0
- package/dist/src/types/Tabs/tab-panels.type.js +0 -0
- package/dist/src/types/Tabs/tab-variant.type.cjs +1 -0
- package/dist/src/types/Tabs/tab-variant.type.d.ts +2 -0
- package/dist/src/types/Tabs/tab-variant.type.js +0 -0
- package/dist/src/types/Tabs/tab.type.cjs +1 -0
- package/dist/src/types/Tabs/tab.type.d.ts +2 -0
- package/dist/src/types/Tabs/tab.type.js +0 -0
- package/dist/src/types/Tabs/tabs.type.cjs +1 -0
- package/dist/src/types/Tabs/tabs.type.d.ts +2 -0
- package/dist/src/types/Tabs/tabs.type.js +0 -0
- package/dist/src/types/Textarea/textarea-mode.type.cjs +1 -0
- package/dist/src/types/Textarea/textarea-mode.type.d.ts +2 -0
- package/dist/src/types/Textarea/textarea-mode.type.js +0 -0
- package/dist/src/types/Textarea/textarea-output.type.cjs +1 -0
- package/dist/src/types/Textarea/textarea-output.type.d.ts +2 -0
- package/dist/src/types/Textarea/textarea-output.type.js +0 -0
- package/dist/src/types/Textarea/textarea-toolbar-command.type.cjs +1 -0
- package/dist/src/types/Textarea/textarea-toolbar-command.type.d.ts +2 -0
- package/dist/src/types/Textarea/textarea-toolbar-command.type.js +0 -0
- package/dist/src/types/Textarea/textarea-toolbar-position.type.cjs +1 -0
- package/dist/src/types/Textarea/textarea-toolbar-position.type.d.ts +2 -0
- package/dist/src/types/Textarea/textarea-toolbar-position.type.js +0 -0
- package/dist/src/types/index.cjs +264 -0
- package/dist/src/types/index.d.ts +24 -0
- package/dist/src/types/index.js +24 -0
- package/dist/src/types/tokens.type.d.ts +1 -1
- package/dist/src/utils/Code/parse-highlight-lines.util.cjs +34 -0
- package/dist/src/utils/Code/parse-highlight-lines.util.d.ts +24 -0
- package/dist/src/utils/Code/parse-highlight-lines.util.js +28 -0
- package/dist/src/utils/CommandPalette/fuzzy-match.util.cjs +84 -0
- package/dist/src/utils/CommandPalette/fuzzy-match.util.d.ts +51 -0
- package/dist/src/utils/CommandPalette/fuzzy-match.util.js +62 -0
- package/dist/src/utils/Mask/apply-mask.util.cjs +120 -0
- package/dist/src/utils/Mask/apply-mask.util.d.ts +13 -0
- package/dist/src/utils/Mask/apply-mask.util.js +91 -0
- package/dist/src/utils/Mask/index.cjs +38 -0
- package/dist/src/utils/Mask/index.d.ts +3 -0
- package/dist/src/utils/Mask/index.js +3 -0
- package/dist/src/utils/Mask/resolve-mask-config.util.cjs +31 -0
- package/dist/src/utils/Mask/resolve-mask-config.util.d.ts +15 -0
- package/dist/src/utils/Mask/resolve-mask-config.util.js +21 -0
- package/dist/src/utils/Mask/validate-pattern.util.cjs +92 -0
- package/dist/src/utils/Mask/validate-pattern.util.d.ts +41 -0
- package/dist/src/utils/Mask/validate-pattern.util.js +81 -0
- package/dist/src/utils/Textarea/html-to-markdown.util.cjs +85 -0
- package/dist/src/utils/Textarea/html-to-markdown.util.d.ts +21 -0
- package/dist/src/utils/Textarea/html-to-markdown.util.js +78 -0
- package/dist/src/utils/Textarea/sanitize-html.util.cjs +82 -0
- package/dist/src/utils/Textarea/sanitize-html.util.d.ts +17 -0
- package/dist/src/utils/Textarea/sanitize-html.util.js +83 -0
- package/dist/src/utils/index.cjs +77 -0
- package/dist/src/utils/index.d.ts +7 -0
- package/dist/src/utils/index.js +7 -0
- package/package.json +13 -3
- package/dist/src/globals.d.ts +0 -172
- package/dist/src/shims.d.ts +0 -36
- package/dist/src/vite-env.d.ts +0 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseHighlightLines = parseHighlightLines;
|
|
7
|
+
function parseHighlightLines(input) {
|
|
8
|
+
if (input == null) return [];
|
|
9
|
+
if (Array.isArray(input)) {
|
|
10
|
+
const cleaned = input.filter(n => typeof n === "number" && Number.isFinite(n) && n >= 1).map(n => Math.floor(n));
|
|
11
|
+
return Array.from(new Set(cleaned)).sort((a, b) => a - b);
|
|
12
|
+
}
|
|
13
|
+
if (typeof input !== "string") return [];
|
|
14
|
+
const trimmed = input.trim();
|
|
15
|
+
if (!trimmed) return [];
|
|
16
|
+
const out = /* @__PURE__ */new Set();
|
|
17
|
+
for (const rawSegment of trimmed.split(",")) {
|
|
18
|
+
const segment = rawSegment.trim();
|
|
19
|
+
if (!segment) continue;
|
|
20
|
+
if (segment.includes("-")) {
|
|
21
|
+
const [rawStart, rawEnd] = segment.split("-").map(s => s.trim());
|
|
22
|
+
const start = Number.parseInt(rawStart, 10);
|
|
23
|
+
const end = Number.parseInt(rawEnd, 10);
|
|
24
|
+
if (!Number.isFinite(start) || !Number.isFinite(end)) continue;
|
|
25
|
+
if (start < 1 || end < 1) continue;
|
|
26
|
+
const [lo, hi] = start <= end ? [start, end] : [end, start];
|
|
27
|
+
for (let i = lo; i <= hi; i++) out.add(i);
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const single = Number.parseInt(segment, 10);
|
|
31
|
+
if (Number.isFinite(single) && single >= 1) out.add(single);
|
|
32
|
+
}
|
|
33
|
+
return Array.from(out).sort((a, b) => a - b);
|
|
34
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse the `highlight-lines` prop of `<OrigamCode>` into a Set of 1-based
|
|
3
|
+
* line numbers.
|
|
4
|
+
*
|
|
5
|
+
* Accepts:
|
|
6
|
+
* - an array of numbers, returned as-is (deduplicated, sorted) so the
|
|
7
|
+
* consumer can build a Set with a single allocation;
|
|
8
|
+
* - a comma- and/or range-separated string ("1", "1,3", "1-3",
|
|
9
|
+
* "1,3-5,7"). Whitespace inside the string is ignored. Negative
|
|
10
|
+
* values, zeros and NaN are dropped silently — the surface is meant
|
|
11
|
+
* for prose-style author input, not validated runtime data.
|
|
12
|
+
*
|
|
13
|
+
* Returns `[]` when the input is `null`, `undefined`, an empty string or
|
|
14
|
+
* an empty array. The caller decides whether to skip the highlight pass
|
|
15
|
+
* altogether based on `result.length === 0`.
|
|
16
|
+
*
|
|
17
|
+
* Examples:
|
|
18
|
+
* parseHighlightLines('1,3-5,7') → [1, 3, 4, 5, 7]
|
|
19
|
+
* parseHighlightLines([2, 5]) → [2, 5]
|
|
20
|
+
* parseHighlightLines(' 2 , 5 - 7 ') → [2, 5, 6, 7]
|
|
21
|
+
* parseHighlightLines('foo') → []
|
|
22
|
+
* parseHighlightLines(null) → []
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseHighlightLines(input: number[] | string | null | undefined): number[];
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function parseHighlightLines(input) {
|
|
2
|
+
if (input == null) return [];
|
|
3
|
+
if (Array.isArray(input)) {
|
|
4
|
+
const cleaned = input.filter((n) => typeof n === "number" && Number.isFinite(n) && n >= 1).map((n) => Math.floor(n));
|
|
5
|
+
return Array.from(new Set(cleaned)).sort((a, b) => a - b);
|
|
6
|
+
}
|
|
7
|
+
if (typeof input !== "string") return [];
|
|
8
|
+
const trimmed = input.trim();
|
|
9
|
+
if (!trimmed) return [];
|
|
10
|
+
const out = /* @__PURE__ */ new Set();
|
|
11
|
+
for (const rawSegment of trimmed.split(",")) {
|
|
12
|
+
const segment = rawSegment.trim();
|
|
13
|
+
if (!segment) continue;
|
|
14
|
+
if (segment.includes("-")) {
|
|
15
|
+
const [rawStart, rawEnd] = segment.split("-").map((s) => s.trim());
|
|
16
|
+
const start = Number.parseInt(rawStart, 10);
|
|
17
|
+
const end = Number.parseInt(rawEnd, 10);
|
|
18
|
+
if (!Number.isFinite(start) || !Number.isFinite(end)) continue;
|
|
19
|
+
if (start < 1 || end < 1) continue;
|
|
20
|
+
const [lo, hi] = start <= end ? [start, end] : [end, start];
|
|
21
|
+
for (let i = lo; i <= hi; i++) out.add(i);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
const single = Number.parseInt(segment, 10);
|
|
25
|
+
if (Number.isFinite(single) && single >= 1) out.add(single);
|
|
26
|
+
}
|
|
27
|
+
return Array.from(out).sort((a, b) => a - b);
|
|
28
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.fuzzyMatch = fuzzyMatch;
|
|
7
|
+
const SCORE_CONSECUTIVE = 4;
|
|
8
|
+
const SCORE_FIRST_LABEL_POS = 30;
|
|
9
|
+
const SCORE_LABEL_PREFIX = 50;
|
|
10
|
+
const lower = value => value.toLowerCase();
|
|
11
|
+
const isSubsequence = (query, haystack) => {
|
|
12
|
+
if (query.length === 0) return true;
|
|
13
|
+
if (haystack.length === 0) return false;
|
|
14
|
+
let qi = 0;
|
|
15
|
+
for (let hi = 0; hi < haystack.length; hi++) {
|
|
16
|
+
if (haystack.charAt(hi) === query.charAt(qi)) {
|
|
17
|
+
qi += 1;
|
|
18
|
+
if (qi === query.length) return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
};
|
|
23
|
+
const scoreOne = (query, label, haystack) => {
|
|
24
|
+
if (query.length === 0) return 0;
|
|
25
|
+
let qi = 0;
|
|
26
|
+
let consecutive = 0;
|
|
27
|
+
let bestConsecutive = 0;
|
|
28
|
+
let lastMatchIdx = -1;
|
|
29
|
+
for (let hi = 0; hi < haystack.length; hi++) {
|
|
30
|
+
if (haystack.charAt(hi) === query.charAt(qi)) {
|
|
31
|
+
if (hi === lastMatchIdx + 1) {
|
|
32
|
+
consecutive += 1;
|
|
33
|
+
} else {
|
|
34
|
+
consecutive = 1;
|
|
35
|
+
}
|
|
36
|
+
if (consecutive > bestConsecutive) bestConsecutive = consecutive;
|
|
37
|
+
lastMatchIdx = hi;
|
|
38
|
+
qi += 1;
|
|
39
|
+
if (qi === query.length) break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
let score = bestConsecutive * SCORE_CONSECUTIVE;
|
|
43
|
+
const firstLabelHit = label.indexOf(query.charAt(0));
|
|
44
|
+
if (firstLabelHit !== -1) {
|
|
45
|
+
score += Math.max(0, SCORE_FIRST_LABEL_POS - firstLabelHit);
|
|
46
|
+
if (label.startsWith(query)) {
|
|
47
|
+
score += SCORE_LABEL_PREFIX;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return score;
|
|
51
|
+
};
|
|
52
|
+
function fuzzyMatch(items, query, getHaystack) {
|
|
53
|
+
const q = lower(query.trim());
|
|
54
|
+
if (q.length === 0) {
|
|
55
|
+
return items.map(item => ({
|
|
56
|
+
item,
|
|
57
|
+
score: 0
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
const matched = [];
|
|
61
|
+
for (let i = 0; i < items.length; i++) {
|
|
62
|
+
const {
|
|
63
|
+
label,
|
|
64
|
+
haystack
|
|
65
|
+
} = getHaystack(items[i]);
|
|
66
|
+
const lcLabel = lower(label);
|
|
67
|
+
const lcHaystack = lower(haystack);
|
|
68
|
+
if (!isSubsequence(q, lcHaystack)) continue;
|
|
69
|
+
const score = scoreOne(q, lcLabel, lcHaystack);
|
|
70
|
+
matched.push({
|
|
71
|
+
item: items[i],
|
|
72
|
+
score,
|
|
73
|
+
idx: i
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
matched.sort((a, b) => b.score - a.score || a.idx - b.idx);
|
|
77
|
+
return matched.map(({
|
|
78
|
+
item,
|
|
79
|
+
score
|
|
80
|
+
}) => ({
|
|
81
|
+
item,
|
|
82
|
+
score
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subsequence-based fuzzy matcher used by `OrigamCommandPalette`.
|
|
3
|
+
*
|
|
4
|
+
* Why not `fuse.js` / `match-sorter`?
|
|
5
|
+
*
|
|
6
|
+
* The palette only ranks a small (~hundreds) list of registered commands
|
|
7
|
+
* whose haystacks are short labels + a handful of keywords. A subsequence
|
|
8
|
+
* matcher with a tiny scoring heuristic gives us:
|
|
9
|
+
*
|
|
10
|
+
* - zero runtime dependency,
|
|
11
|
+
* - deterministic O(haystack-length) ranking,
|
|
12
|
+
* - predictable behaviour for unit tests.
|
|
13
|
+
*
|
|
14
|
+
* Algorithm — for each command:
|
|
15
|
+
*
|
|
16
|
+
* 1. Build the haystack as `label + ' ' + (keywords ?? []).join(' ') +
|
|
17
|
+
* ' ' + (description ?? '')`, all lowercased.
|
|
18
|
+
* 2. Walk the lowercased query character-by-character against the
|
|
19
|
+
* haystack. If we cannot find every query character in order, the
|
|
20
|
+
* command does not match.
|
|
21
|
+
* 3. Score = consecutive-run weight + label-position bonus + label-prefix
|
|
22
|
+
* bonus. Higher is better. Ties are broken by registration order
|
|
23
|
+
* (caller controlled).
|
|
24
|
+
*
|
|
25
|
+
* The function is pure — no side effects, no Vue reactivity. Safe to call
|
|
26
|
+
* inside a `computed`.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Output of `fuzzyMatch` — the matched item carries its score so callers
|
|
30
|
+
* can short-circuit a re-sort on cached input.
|
|
31
|
+
*/
|
|
32
|
+
export interface IFuzzyMatchResult<T> {
|
|
33
|
+
/** Original item passed in. */
|
|
34
|
+
item: T;
|
|
35
|
+
/** Higher = better fit. `0` is the floor for a successful match. */
|
|
36
|
+
score: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Filter `items` to those whose composite haystack contains the
|
|
40
|
+
* query as a subsequence, and rank them by score (descending).
|
|
41
|
+
*
|
|
42
|
+
* - When `query` is empty, returns every item with `score=0` in the
|
|
43
|
+
* input order (stable). The caller is expected to handle grouping
|
|
44
|
+
* on top of this.
|
|
45
|
+
* - The comparator is `(b.score - a.score)`; equal scores fall back
|
|
46
|
+
* to the original index so order is deterministic.
|
|
47
|
+
*/
|
|
48
|
+
export declare function fuzzyMatch<T>(items: ReadonlyArray<T>, query: string, getHaystack: (item: T) => {
|
|
49
|
+
label: string;
|
|
50
|
+
haystack: string;
|
|
51
|
+
}): Array<IFuzzyMatchResult<T>>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const SCORE_CONSECUTIVE = 4;
|
|
2
|
+
const SCORE_FIRST_LABEL_POS = 30;
|
|
3
|
+
const SCORE_LABEL_PREFIX = 50;
|
|
4
|
+
const lower = (value) => value.toLowerCase();
|
|
5
|
+
const isSubsequence = (query, haystack) => {
|
|
6
|
+
if (query.length === 0) return true;
|
|
7
|
+
if (haystack.length === 0) return false;
|
|
8
|
+
let qi = 0;
|
|
9
|
+
for (let hi = 0; hi < haystack.length; hi++) {
|
|
10
|
+
if (haystack.charAt(hi) === query.charAt(qi)) {
|
|
11
|
+
qi += 1;
|
|
12
|
+
if (qi === query.length) return true;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
};
|
|
17
|
+
const scoreOne = (query, label, haystack) => {
|
|
18
|
+
if (query.length === 0) return 0;
|
|
19
|
+
let qi = 0;
|
|
20
|
+
let consecutive = 0;
|
|
21
|
+
let bestConsecutive = 0;
|
|
22
|
+
let lastMatchIdx = -1;
|
|
23
|
+
for (let hi = 0; hi < haystack.length; hi++) {
|
|
24
|
+
if (haystack.charAt(hi) === query.charAt(qi)) {
|
|
25
|
+
if (hi === lastMatchIdx + 1) {
|
|
26
|
+
consecutive += 1;
|
|
27
|
+
} else {
|
|
28
|
+
consecutive = 1;
|
|
29
|
+
}
|
|
30
|
+
if (consecutive > bestConsecutive) bestConsecutive = consecutive;
|
|
31
|
+
lastMatchIdx = hi;
|
|
32
|
+
qi += 1;
|
|
33
|
+
if (qi === query.length) break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
let score = bestConsecutive * SCORE_CONSECUTIVE;
|
|
37
|
+
const firstLabelHit = label.indexOf(query.charAt(0));
|
|
38
|
+
if (firstLabelHit !== -1) {
|
|
39
|
+
score += Math.max(0, SCORE_FIRST_LABEL_POS - firstLabelHit);
|
|
40
|
+
if (label.startsWith(query)) {
|
|
41
|
+
score += SCORE_LABEL_PREFIX;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return score;
|
|
45
|
+
};
|
|
46
|
+
export function fuzzyMatch(items, query, getHaystack) {
|
|
47
|
+
const q = lower(query.trim());
|
|
48
|
+
if (q.length === 0) {
|
|
49
|
+
return items.map((item) => ({ item, score: 0 }));
|
|
50
|
+
}
|
|
51
|
+
const matched = [];
|
|
52
|
+
for (let i = 0; i < items.length; i++) {
|
|
53
|
+
const { label, haystack } = getHaystack(items[i]);
|
|
54
|
+
const lcLabel = lower(label);
|
|
55
|
+
const lcHaystack = lower(haystack);
|
|
56
|
+
if (!isSubsequence(q, lcHaystack)) continue;
|
|
57
|
+
const score = scoreOne(q, lcLabel, lcHaystack);
|
|
58
|
+
matched.push({ item: items[i], score, idx: i });
|
|
59
|
+
}
|
|
60
|
+
matched.sort((a, b) => b.score - a.score || a.idx - b.idx);
|
|
61
|
+
return matched.map(({ item, score }) => ({ item, score }));
|
|
62
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.applyMask = applyMask;
|
|
7
|
+
exports.parsePattern = parsePattern;
|
|
8
|
+
exports.unmaskValue = unmaskValue;
|
|
9
|
+
const TOKEN_CACHE = /* @__PURE__ */new Map();
|
|
10
|
+
function parsePattern(pattern) {
|
|
11
|
+
if (TOKEN_CACHE.has(pattern)) {
|
|
12
|
+
return TOKEN_CACHE.get(pattern);
|
|
13
|
+
}
|
|
14
|
+
const tokens = [];
|
|
15
|
+
for (const char of pattern) {
|
|
16
|
+
if (char === "#") {
|
|
17
|
+
tokens.push({
|
|
18
|
+
kind: "digit",
|
|
19
|
+
char: "#",
|
|
20
|
+
consumer: true
|
|
21
|
+
});
|
|
22
|
+
} else if (char === "A") {
|
|
23
|
+
tokens.push({
|
|
24
|
+
kind: "letter",
|
|
25
|
+
char: "A",
|
|
26
|
+
consumer: true
|
|
27
|
+
});
|
|
28
|
+
} else if (char === "*") {
|
|
29
|
+
tokens.push({
|
|
30
|
+
kind: "any",
|
|
31
|
+
char: "*",
|
|
32
|
+
consumer: true
|
|
33
|
+
});
|
|
34
|
+
} else {
|
|
35
|
+
tokens.push({
|
|
36
|
+
kind: "literal",
|
|
37
|
+
char,
|
|
38
|
+
consumer: false
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
TOKEN_CACHE.set(pattern, tokens);
|
|
43
|
+
return tokens;
|
|
44
|
+
}
|
|
45
|
+
const isDigit = c => c >= "0" && c <= "9";
|
|
46
|
+
const isLetter = c => c >= "a" && c <= "z" || c >= "A" && c <= "Z";
|
|
47
|
+
const LITERALS_CACHE = /* @__PURE__ */new Map();
|
|
48
|
+
function literalSetOf(pattern) {
|
|
49
|
+
if (LITERALS_CACHE.has(pattern)) return LITERALS_CACHE.get(pattern);
|
|
50
|
+
const set = /* @__PURE__ */new Set();
|
|
51
|
+
for (const tok of parsePattern(pattern)) {
|
|
52
|
+
if (!tok.consumer) set.add(tok.char);
|
|
53
|
+
}
|
|
54
|
+
LITERALS_CACHE.set(pattern, set);
|
|
55
|
+
return set;
|
|
56
|
+
}
|
|
57
|
+
function stripLiterals(raw, pattern) {
|
|
58
|
+
const literals = literalSetOf(pattern);
|
|
59
|
+
let out = "";
|
|
60
|
+
for (const c of raw) {
|
|
61
|
+
if (literals.has(c)) continue;
|
|
62
|
+
out += c;
|
|
63
|
+
}
|
|
64
|
+
return out;
|
|
65
|
+
}
|
|
66
|
+
function applyMask(value, pattern) {
|
|
67
|
+
if (!pattern) {
|
|
68
|
+
return {
|
|
69
|
+
masked: value ?? "",
|
|
70
|
+
unmasked: value ?? "",
|
|
71
|
+
complete: false
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const tokens = parsePattern(pattern);
|
|
75
|
+
const stripped = stripLiterals(value ?? "", pattern);
|
|
76
|
+
let masked = "";
|
|
77
|
+
let unmasked = "";
|
|
78
|
+
let consumed = 0;
|
|
79
|
+
let filledConsumers = 0;
|
|
80
|
+
const totalConsumers = tokens.reduce((acc, t) => acc + (t.consumer ? 1 : 0), 0);
|
|
81
|
+
for (const tok of tokens) {
|
|
82
|
+
if (!tok.consumer) {
|
|
83
|
+
if (consumed < stripped.length || unmasked.length > 0) {
|
|
84
|
+
masked += tok.char;
|
|
85
|
+
}
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
let matched = null;
|
|
89
|
+
while (consumed < stripped.length) {
|
|
90
|
+
const c = stripped[consumed++];
|
|
91
|
+
if (tok.kind === "digit" && isDigit(c)) {
|
|
92
|
+
matched = c;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
if (tok.kind === "letter" && isLetter(c)) {
|
|
96
|
+
matched = c;
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
if (tok.kind === "any") {
|
|
100
|
+
matched = c;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (matched === null) {
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
masked += matched;
|
|
108
|
+
unmasked += matched;
|
|
109
|
+
filledConsumers++;
|
|
110
|
+
}
|
|
111
|
+
const complete = filledConsumers === totalConsumers && totalConsumers > 0;
|
|
112
|
+
return {
|
|
113
|
+
masked,
|
|
114
|
+
unmasked,
|
|
115
|
+
complete
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function unmaskValue(value, pattern) {
|
|
119
|
+
return applyMask(value, pattern).unmasked;
|
|
120
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IMaskApplyResult, IMaskToken } from '../../interfaces';
|
|
2
|
+
export declare function parsePattern(pattern: string): Array<IMaskToken>;
|
|
3
|
+
/**
|
|
4
|
+
* Walk the pattern and consume the (pre-stripped) input
|
|
5
|
+
* char-by-char. Mismatching characters are dropped.
|
|
6
|
+
*/
|
|
7
|
+
export declare function applyMask(value: string, pattern: string): IMaskApplyResult;
|
|
8
|
+
/**
|
|
9
|
+
* Returns just the unmasked value — handy from outside
|
|
10
|
+
* code that already knows its mask but only wants the
|
|
11
|
+
* raw characters.
|
|
12
|
+
*/
|
|
13
|
+
export declare function unmaskValue(value: string, pattern: string): string;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const TOKEN_CACHE = /* @__PURE__ */ new Map();
|
|
2
|
+
export function parsePattern(pattern) {
|
|
3
|
+
if (TOKEN_CACHE.has(pattern)) {
|
|
4
|
+
return TOKEN_CACHE.get(pattern);
|
|
5
|
+
}
|
|
6
|
+
const tokens = [];
|
|
7
|
+
for (const char of pattern) {
|
|
8
|
+
if (char === "#") {
|
|
9
|
+
tokens.push({ kind: "digit", char: "#", consumer: true });
|
|
10
|
+
} else if (char === "A") {
|
|
11
|
+
tokens.push({ kind: "letter", char: "A", consumer: true });
|
|
12
|
+
} else if (char === "*") {
|
|
13
|
+
tokens.push({ kind: "any", char: "*", consumer: true });
|
|
14
|
+
} else {
|
|
15
|
+
tokens.push({ kind: "literal", char, consumer: false });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
TOKEN_CACHE.set(pattern, tokens);
|
|
19
|
+
return tokens;
|
|
20
|
+
}
|
|
21
|
+
const isDigit = (c) => c >= "0" && c <= "9";
|
|
22
|
+
const isLetter = (c) => c >= "a" && c <= "z" || c >= "A" && c <= "Z";
|
|
23
|
+
const LITERALS_CACHE = /* @__PURE__ */ new Map();
|
|
24
|
+
function literalSetOf(pattern) {
|
|
25
|
+
if (LITERALS_CACHE.has(pattern)) return LITERALS_CACHE.get(pattern);
|
|
26
|
+
const set = /* @__PURE__ */ new Set();
|
|
27
|
+
for (const tok of parsePattern(pattern)) {
|
|
28
|
+
if (!tok.consumer) set.add(tok.char);
|
|
29
|
+
}
|
|
30
|
+
LITERALS_CACHE.set(pattern, set);
|
|
31
|
+
return set;
|
|
32
|
+
}
|
|
33
|
+
function stripLiterals(raw, pattern) {
|
|
34
|
+
const literals = literalSetOf(pattern);
|
|
35
|
+
let out = "";
|
|
36
|
+
for (const c of raw) {
|
|
37
|
+
if (literals.has(c)) continue;
|
|
38
|
+
out += c;
|
|
39
|
+
}
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
export function applyMask(value, pattern) {
|
|
43
|
+
if (!pattern) {
|
|
44
|
+
return { masked: value ?? "", unmasked: value ?? "", complete: false };
|
|
45
|
+
}
|
|
46
|
+
const tokens = parsePattern(pattern);
|
|
47
|
+
const stripped = stripLiterals(value ?? "", pattern);
|
|
48
|
+
let masked = "";
|
|
49
|
+
let unmasked = "";
|
|
50
|
+
let consumed = 0;
|
|
51
|
+
let filledConsumers = 0;
|
|
52
|
+
const totalConsumers = tokens.reduce(
|
|
53
|
+
(acc, t) => acc + (t.consumer ? 1 : 0),
|
|
54
|
+
0
|
|
55
|
+
);
|
|
56
|
+
for (const tok of tokens) {
|
|
57
|
+
if (!tok.consumer) {
|
|
58
|
+
if (consumed < stripped.length || unmasked.length > 0) {
|
|
59
|
+
masked += tok.char;
|
|
60
|
+
}
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
let matched = null;
|
|
64
|
+
while (consumed < stripped.length) {
|
|
65
|
+
const c = stripped[consumed++];
|
|
66
|
+
if (tok.kind === "digit" && isDigit(c)) {
|
|
67
|
+
matched = c;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
if (tok.kind === "letter" && isLetter(c)) {
|
|
71
|
+
matched = c;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
if (tok.kind === "any") {
|
|
75
|
+
matched = c;
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (matched === null) {
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
masked += matched;
|
|
83
|
+
unmasked += matched;
|
|
84
|
+
filledConsumers++;
|
|
85
|
+
}
|
|
86
|
+
const complete = filledConsumers === totalConsumers && totalConsumers > 0;
|
|
87
|
+
return { masked, unmasked, complete };
|
|
88
|
+
}
|
|
89
|
+
export function unmaskValue(value, pattern) {
|
|
90
|
+
return applyMask(value, pattern).unmasked;
|
|
91
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _applyMask = require("./apply-mask.util.cjs");
|
|
7
|
+
Object.keys(_applyMask).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _applyMask[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _applyMask[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _resolveMaskConfig = require("./resolve-mask-config.util.cjs");
|
|
18
|
+
Object.keys(_resolveMaskConfig).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _resolveMaskConfig[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _resolveMaskConfig[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _validatePattern = require("./validate-pattern.util.cjs");
|
|
29
|
+
Object.keys(_validatePattern).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _validatePattern[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _validatePattern[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.resolveMaskConfig = resolveMaskConfig;
|
|
7
|
+
var _consts = require("../../consts/index.cjs");
|
|
8
|
+
function resolveMaskConfig(mask) {
|
|
9
|
+
if (mask == null || mask === "") return null;
|
|
10
|
+
if (typeof mask === "string") {
|
|
11
|
+
if (_consts.BUILT_IN_PATTERN_KEYS.has(mask)) {
|
|
12
|
+
const preset = _consts.BUILT_IN_PATTERNS[mask];
|
|
13
|
+
return {
|
|
14
|
+
pattern: preset.pattern,
|
|
15
|
+
validator: preset.validator ?? null,
|
|
16
|
+
required: preset.required ?? false
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
pattern: mask,
|
|
21
|
+
validator: null,
|
|
22
|
+
required: false
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const opts = mask;
|
|
26
|
+
return {
|
|
27
|
+
pattern: opts.pattern,
|
|
28
|
+
validator: opts.validator ?? null,
|
|
29
|
+
required: opts.required ?? false
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { IResolvedMaskConfig } from '../../interfaces';
|
|
2
|
+
import type { TMask } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Normalise the polymorphic `mask` prop / arg into a fully
|
|
5
|
+
* resolved `{ pattern, validator, required }` object.
|
|
6
|
+
*
|
|
7
|
+
* - `null | undefined | ''` → returns `null`. Callers treat
|
|
8
|
+
* this as "no masking".
|
|
9
|
+
* - `string` → either a registered built-in
|
|
10
|
+
* key (looked up) or a raw
|
|
11
|
+
* pattern (used verbatim).
|
|
12
|
+
* - `IMaskOptions` → consumed as-is, with `required`
|
|
13
|
+
* defaulting to `false`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveMaskConfig(mask: TMask | undefined): IResolvedMaskConfig | null;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BUILT_IN_PATTERN_KEYS, BUILT_IN_PATTERNS } from "../../consts/index.js";
|
|
2
|
+
export function resolveMaskConfig(mask) {
|
|
3
|
+
if (mask == null || mask === "") return null;
|
|
4
|
+
if (typeof mask === "string") {
|
|
5
|
+
if (BUILT_IN_PATTERN_KEYS.has(mask)) {
|
|
6
|
+
const preset = BUILT_IN_PATTERNS[mask];
|
|
7
|
+
return {
|
|
8
|
+
pattern: preset.pattern,
|
|
9
|
+
validator: preset.validator ?? null,
|
|
10
|
+
required: preset.required ?? false
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
return { pattern: mask, validator: null, required: false };
|
|
14
|
+
}
|
|
15
|
+
const opts = mask;
|
|
16
|
+
return {
|
|
17
|
+
pattern: opts.pattern,
|
|
18
|
+
validator: opts.validator ?? null,
|
|
19
|
+
required: opts.required ?? false
|
|
20
|
+
};
|
|
21
|
+
}
|