@rowsncolumns/ui 15.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +100 -0
- package/dist/cjs/arrow/index.d.ts +17 -0
- package/dist/cjs/arrow/index.d.ts.map +1 -0
- package/dist/cjs/arrow/index.js +46 -0
- package/dist/cjs/button/index.d.ts +14 -0
- package/dist/cjs/button/index.d.ts.map +1 -0
- package/dist/cjs/button/index.js +46 -0
- package/dist/cjs/calendar/index.d.ts +5 -0
- package/dist/cjs/calendar/index.d.ts.map +1 -0
- package/dist/cjs/calendar/index.js +13 -0
- package/dist/cjs/card/index.d.ts +10 -0
- package/dist/cjs/card/index.d.ts.map +1 -0
- package/dist/cjs/card/index.js +32 -0
- package/dist/cjs/cell-tooltip/index.d.ts +17 -0
- package/dist/cjs/cell-tooltip/index.d.ts.map +1 -0
- package/dist/cjs/cell-tooltip/index.js +38 -0
- package/dist/cjs/circular-loader/index.d.ts +9 -0
- package/dist/cjs/circular-loader/index.d.ts.map +1 -0
- package/dist/cjs/circular-loader/index.js +11 -0
- package/dist/cjs/color-picker/index.d.ts +12 -0
- package/dist/cjs/color-picker/index.d.ts.map +1 -0
- package/dist/cjs/color-picker/index.js +101 -0
- package/dist/cjs/color-picker/style.d.ts +5 -0
- package/dist/cjs/color-picker/style.d.ts.map +1 -0
- package/dist/cjs/color-picker/style.js +11 -0
- package/dist/cjs/command/index.d.ts +74 -0
- package/dist/cjs/command/index.d.ts.map +1 -0
- package/dist/cjs/command/index.js +37 -0
- package/dist/cjs/conditional-wrapper/index.d.ts +9 -0
- package/dist/cjs/conditional-wrapper/index.d.ts.map +1 -0
- package/dist/cjs/conditional-wrapper/index.js +4 -0
- package/dist/cjs/dialog/index.d.ts +17 -0
- package/dist/cjs/dialog/index.d.ts.map +1 -0
- package/dist/cjs/dialog/index.js +50 -0
- package/dist/cjs/dropdown/index.d.ts +34 -0
- package/dist/cjs/dropdown/index.d.ts.map +1 -0
- package/dist/cjs/dropdown/index.js +73 -0
- package/dist/cjs/editor/constants.d.ts +7 -0
- package/dist/cjs/editor/constants.d.ts.map +1 -0
- package/dist/cjs/editor/constants.js +50 -0
- package/dist/cjs/editor/editor-error-boundary.d.ts +3 -0
- package/dist/cjs/editor/editor-error-boundary.d.ts.map +1 -0
- package/dist/cjs/editor/editor-error-boundary.js +9 -0
- package/dist/cjs/editor/style.d.ts +12 -0
- package/dist/cjs/editor/style.d.ts.map +1 -0
- package/dist/cjs/editor/style.js +24 -0
- package/dist/cjs/editor/suggestions-dropdown.d.ts +25 -0
- package/dist/cjs/editor/suggestions-dropdown.d.ts.map +1 -0
- package/dist/cjs/editor/suggestions-dropdown.js +120 -0
- package/dist/cjs/editor-pm/constants.d.ts +2 -0
- package/dist/cjs/editor-pm/constants.d.ts.map +1 -0
- package/dist/cjs/editor-pm/constants.js +2 -0
- package/dist/cjs/editor-pm/decoration-plugin.d.ts +15 -0
- package/dist/cjs/editor-pm/decoration-plugin.d.ts.map +1 -0
- package/dist/cjs/editor-pm/decoration-plugin.js +38 -0
- package/dist/cjs/editor-pm/helpers.d.ts +197 -0
- package/dist/cjs/editor-pm/helpers.d.ts.map +1 -0
- package/dist/cjs/editor-pm/helpers.js +1170 -0
- package/dist/cjs/editor-pm/index.d.ts +10 -0
- package/dist/cjs/editor-pm/index.d.ts.map +1 -0
- package/dist/cjs/editor-pm/index.js +9 -0
- package/dist/cjs/editor-pm/mention-nodeview.d.ts +31 -0
- package/dist/cjs/editor-pm/mention-nodeview.d.ts.map +1 -0
- package/dist/cjs/editor-pm/mention-nodeview.js +105 -0
- package/dist/cjs/editor-pm/mentions-dropdown.d.ts +13 -0
- package/dist/cjs/editor-pm/mentions-dropdown.d.ts.map +1 -0
- package/dist/cjs/editor-pm/mentions-dropdown.js +19 -0
- package/dist/cjs/editor-pm/mentions-plugin.d.ts +18 -0
- package/dist/cjs/editor-pm/mentions-plugin.d.ts.map +1 -0
- package/dist/cjs/editor-pm/mentions-plugin.js +72 -0
- package/dist/cjs/editor-pm/placeholder-plugin.d.ts +4 -0
- package/dist/cjs/editor-pm/placeholder-plugin.d.ts.map +1 -0
- package/dist/cjs/editor-pm/placeholder-plugin.js +20 -0
- package/dist/cjs/editor-pm/prosemirror-editor.d.ts +493 -0
- package/dist/cjs/editor-pm/prosemirror-editor.d.ts.map +1 -0
- package/dist/cjs/editor-pm/prosemirror-editor.js +1145 -0
- package/dist/cjs/editor-pm/schema.d.ts +3 -0
- package/dist/cjs/editor-pm/schema.d.ts.map +1 -0
- package/dist/cjs/editor-pm/schema.js +183 -0
- package/dist/cjs/editor-pm/types.d.ts +8 -0
- package/dist/cjs/editor-pm/types.d.ts.map +1 -0
- package/dist/cjs/editor-pm/types.js +1 -0
- package/dist/cjs/editor-pm/unfocused-selection-plugin.d.ts +25 -0
- package/dist/cjs/editor-pm/unfocused-selection-plugin.d.ts.map +1 -0
- package/dist/cjs/editor-pm/unfocused-selection-plugin.js +61 -0
- package/dist/cjs/editor-pm/use-dropdown-change-pm.d.ts +24 -0
- package/dist/cjs/editor-pm/use-dropdown-change-pm.d.ts.map +1 -0
- package/dist/cjs/editor-pm/use-dropdown-change-pm.js +140 -0
- package/dist/cjs/editor-pm/use-editor-change-pm.d.ts +29 -0
- package/dist/cjs/editor-pm/use-editor-change-pm.d.ts.map +1 -0
- package/dist/cjs/editor-pm/use-editor-change-pm.js +154 -0
- package/dist/cjs/editor-pm/use-editor-decorator-pm.d.ts +17 -0
- package/dist/cjs/editor-pm/use-editor-decorator-pm.d.ts.map +1 -0
- package/dist/cjs/editor-pm/use-editor-decorator-pm.js +59 -0
- package/dist/cjs/editor-pm/use-editor-keydown-pm.d.ts +21 -0
- package/dist/cjs/editor-pm/use-editor-keydown-pm.d.ts.map +1 -0
- package/dist/cjs/editor-pm/use-editor-keydown-pm.js +81 -0
- package/dist/cjs/editor-pm/use-mention-keydown.d.ts +11 -0
- package/dist/cjs/editor-pm/use-mention-keydown.d.ts.map +1 -0
- package/dist/cjs/editor-pm/use-mention-keydown.js +59 -0
- package/dist/cjs/editor-pm/use-parameter-suggestions.d.ts +19 -0
- package/dist/cjs/editor-pm/use-parameter-suggestions.d.ts.map +1 -0
- package/dist/cjs/editor-pm/use-parameter-suggestions.js +79 -0
- package/dist/cjs/editor-pm/use-parameter-suggestions.test.d.ts +2 -0
- package/dist/cjs/editor-pm/use-parameter-suggestions.test.d.ts.map +1 -0
- package/dist/cjs/editor-pm/use-parameter-suggestions.test.js +122 -0
- package/dist/cjs/eye-dropper/index.d.ts +10 -0
- package/dist/cjs/eye-dropper/index.d.ts.map +1 -0
- package/dist/cjs/eye-dropper/index.js +24 -0
- package/dist/cjs/function-info/helpers.d.ts +10 -0
- package/dist/cjs/function-info/helpers.d.ts.map +1 -0
- package/dist/cjs/function-info/helpers.js +20 -0
- package/dist/cjs/function-info/index.d.ts +11 -0
- package/dist/cjs/function-info/index.d.ts.map +1 -0
- package/dist/cjs/function-info/index.js +71 -0
- package/dist/cjs/function-info/style.d.ts +7 -0
- package/dist/cjs/function-info/style.d.ts.map +1 -0
- package/dist/cjs/function-info/style.js +13 -0
- package/dist/cjs/hex-color-picker/index.d.ts +8 -0
- package/dist/cjs/hex-color-picker/index.d.ts.map +1 -0
- package/dist/cjs/hex-color-picker/index.js +47 -0
- package/dist/cjs/hooks/use-cycle-reference.d.ts +16 -0
- package/dist/cjs/hooks/use-cycle-reference.d.ts.map +1 -0
- package/dist/cjs/hooks/use-cycle-reference.js +72 -0
- package/dist/cjs/hooks/use-dropdown-categories.d.ts +9 -0
- package/dist/cjs/hooks/use-dropdown-categories.d.ts.map +1 -0
- package/dist/cjs/hooks/use-dropdown-categories.js +45 -0
- package/dist/cjs/hooks/use-dropdown.d.ts +38 -0
- package/dist/cjs/hooks/use-dropdown.d.ts.map +1 -0
- package/dist/cjs/hooks/use-dropdown.js +236 -0
- package/dist/cjs/hooks/use-isomorphic-layout-effect.ts.d.ts +6 -0
- package/dist/cjs/hooks/use-isomorphic-layout-effect.ts.d.ts.map +1 -0
- package/dist/cjs/hooks/use-isomorphic-layout-effect.ts.js +8 -0
- package/dist/cjs/hooks/use-modal.d.ts +28 -0
- package/dist/cjs/hooks/use-modal.d.ts.map +1 -0
- package/dist/cjs/hooks/use-modal.js +101 -0
- package/dist/cjs/hooks/use-visibility.d.ts +2 -0
- package/dist/cjs/hooks/use-visibility.d.ts.map +1 -0
- package/dist/cjs/hooks/use-visibility.js +12 -0
- package/dist/cjs/icon-button/index.d.ts +15 -0
- package/dist/cjs/icon-button/index.d.ts.map +1 -0
- package/dist/cjs/icon-button/index.js +34 -0
- package/dist/cjs/index.d.ts +34 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +33 -0
- package/dist/cjs/input/index.d.ts +9 -0
- package/dist/cjs/input/index.d.ts.map +1 -0
- package/dist/cjs/input/index.js +9 -0
- package/dist/cjs/popover/index.d.ts +13 -0
- package/dist/cjs/popover/index.d.ts.map +1 -0
- package/dist/cjs/popover/index.js +29 -0
- package/dist/cjs/progress/index.d.ts +10 -0
- package/dist/cjs/progress/index.d.ts.map +1 -0
- package/dist/cjs/progress/index.js +15 -0
- package/dist/cjs/select/index.d.ts +14 -0
- package/dist/cjs/select/index.d.ts.map +1 -0
- package/dist/cjs/select/index.js +46 -0
- package/dist/cjs/separator/index.d.ts +5 -0
- package/dist/cjs/separator/index.d.ts.map +1 -0
- package/dist/cjs/separator/index.js +10 -0
- package/dist/cjs/skeleton/index.d.ts +7 -0
- package/dist/cjs/skeleton/index.d.ts.map +1 -0
- package/dist/cjs/skeleton/index.js +11 -0
- package/dist/cjs/stack/index.d.ts +11 -0
- package/dist/cjs/stack/index.d.ts.map +1 -0
- package/dist/cjs/stack/index.js +22 -0
- package/dist/cjs/tabs/index.d.ts +8 -0
- package/dist/cjs/tabs/index.d.ts.map +1 -0
- package/dist/cjs/tabs/index.js +21 -0
- package/dist/cjs/tooltip/index.d.ts +12 -0
- package/dist/cjs/tooltip/index.d.ts.map +1 -0
- package/dist/cjs/tooltip/index.js +20 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/cjs/utils.d.ts +3 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +9 -0
- package/dist/cjs/vitest.config.d.ts +3 -0
- package/dist/cjs/vitest.config.d.ts.map +1 -0
- package/dist/cjs/vitest.config.js +21 -0
- package/dist/esm/arrow/index.d.ts +17 -0
- package/dist/esm/arrow/index.d.ts.map +1 -0
- package/dist/esm/arrow/index.js +45 -0
- package/dist/esm/button/index.d.ts +14 -0
- package/dist/esm/button/index.d.ts.map +1 -0
- package/dist/esm/button/index.js +44 -0
- package/dist/esm/calendar/index.d.ts +5 -0
- package/dist/esm/calendar/index.d.ts.map +1 -0
- package/dist/esm/calendar/index.js +34 -0
- package/dist/esm/card/index.d.ts +10 -0
- package/dist/esm/card/index.d.ts.map +1 -0
- package/dist/esm/card/index.js +24 -0
- package/dist/esm/cell-tooltip/index.d.ts +17 -0
- package/dist/esm/cell-tooltip/index.d.ts.map +1 -0
- package/dist/esm/cell-tooltip/index.js +31 -0
- package/dist/esm/circular-loader/index.d.ts +9 -0
- package/dist/esm/circular-loader/index.d.ts.map +1 -0
- package/dist/esm/circular-loader/index.js +7 -0
- package/dist/esm/color-picker/index.d.ts +12 -0
- package/dist/esm/color-picker/index.d.ts.map +1 -0
- package/dist/esm/color-picker/index.js +99 -0
- package/dist/esm/color-picker/style.d.ts +5 -0
- package/dist/esm/color-picker/style.d.ts.map +1 -0
- package/dist/esm/color-picker/style.js +7 -0
- package/dist/esm/command/index.d.ts +74 -0
- package/dist/esm/command/index.d.ts.map +1 -0
- package/dist/esm/command/index.js +18 -0
- package/dist/esm/conditional-wrapper/index.d.ts +9 -0
- package/dist/esm/conditional-wrapper/index.d.ts.map +1 -0
- package/dist/esm/conditional-wrapper/index.js +1 -0
- package/dist/esm/dialog/index.d.ts +17 -0
- package/dist/esm/dialog/index.d.ts.map +1 -0
- package/dist/esm/dialog/index.js +30 -0
- package/dist/esm/dropdown/index.d.ts +34 -0
- package/dist/esm/dropdown/index.d.ts.map +1 -0
- package/dist/esm/dropdown/index.js +42 -0
- package/dist/esm/editor/constants.d.ts +7 -0
- package/dist/esm/editor/constants.d.ts.map +1 -0
- package/dist/esm/editor/constants.js +51 -0
- package/dist/esm/editor/editor-error-boundary.d.ts +3 -0
- package/dist/esm/editor/editor-error-boundary.d.ts.map +1 -0
- package/dist/esm/editor/editor-error-boundary.js +9 -0
- package/dist/esm/editor/style.d.ts +12 -0
- package/dist/esm/editor/style.d.ts.map +1 -0
- package/dist/esm/editor/style.js +17 -0
- package/dist/esm/editor/suggestions-dropdown.d.ts +25 -0
- package/dist/esm/editor/suggestions-dropdown.d.ts.map +1 -0
- package/dist/esm/editor/suggestions-dropdown.js +115 -0
- package/dist/esm/editor-pm/constants.d.ts +2 -0
- package/dist/esm/editor-pm/constants.d.ts.map +1 -0
- package/dist/esm/editor-pm/constants.js +2 -0
- package/dist/esm/editor-pm/decoration-plugin.d.ts +15 -0
- package/dist/esm/editor-pm/decoration-plugin.d.ts.map +1 -0
- package/dist/esm/editor-pm/decoration-plugin.js +38 -0
- package/dist/esm/editor-pm/helpers.d.ts +197 -0
- package/dist/esm/editor-pm/helpers.d.ts.map +1 -0
- package/dist/esm/editor-pm/helpers.js +1113 -0
- package/dist/esm/editor-pm/index.d.ts +10 -0
- package/dist/esm/editor-pm/index.d.ts.map +1 -0
- package/dist/esm/editor-pm/index.js +9 -0
- package/dist/esm/editor-pm/mention-nodeview.d.ts +31 -0
- package/dist/esm/editor-pm/mention-nodeview.d.ts.map +1 -0
- package/dist/esm/editor-pm/mention-nodeview.js +88 -0
- package/dist/esm/editor-pm/mentions-dropdown.d.ts +13 -0
- package/dist/esm/editor-pm/mentions-dropdown.d.ts.map +1 -0
- package/dist/esm/editor-pm/mentions-dropdown.js +17 -0
- package/dist/esm/editor-pm/mentions-plugin.d.ts +18 -0
- package/dist/esm/editor-pm/mentions-plugin.d.ts.map +1 -0
- package/dist/esm/editor-pm/mentions-plugin.js +92 -0
- package/dist/esm/editor-pm/placeholder-plugin.d.ts +4 -0
- package/dist/esm/editor-pm/placeholder-plugin.d.ts.map +1 -0
- package/dist/esm/editor-pm/placeholder-plugin.js +20 -0
- package/dist/esm/editor-pm/prosemirror-editor.d.ts +493 -0
- package/dist/esm/editor-pm/prosemirror-editor.d.ts.map +1 -0
- package/dist/esm/editor-pm/prosemirror-editor.js +1135 -0
- package/dist/esm/editor-pm/schema.d.ts +3 -0
- package/dist/esm/editor-pm/schema.d.ts.map +1 -0
- package/dist/esm/editor-pm/schema.js +179 -0
- package/dist/esm/editor-pm/types.d.ts +8 -0
- package/dist/esm/editor-pm/types.d.ts.map +1 -0
- package/dist/esm/editor-pm/types.js +1 -0
- package/dist/esm/editor-pm/unfocused-selection-plugin.d.ts +25 -0
- package/dist/esm/editor-pm/unfocused-selection-plugin.d.ts.map +1 -0
- package/dist/esm/editor-pm/unfocused-selection-plugin.js +61 -0
- package/dist/esm/editor-pm/use-dropdown-change-pm.d.ts +24 -0
- package/dist/esm/editor-pm/use-dropdown-change-pm.d.ts.map +1 -0
- package/dist/esm/editor-pm/use-dropdown-change-pm.js +137 -0
- package/dist/esm/editor-pm/use-editor-change-pm.d.ts +29 -0
- package/dist/esm/editor-pm/use-editor-change-pm.d.ts.map +1 -0
- package/dist/esm/editor-pm/use-editor-change-pm.js +152 -0
- package/dist/esm/editor-pm/use-editor-decorator-pm.d.ts +17 -0
- package/dist/esm/editor-pm/use-editor-decorator-pm.d.ts.map +1 -0
- package/dist/esm/editor-pm/use-editor-decorator-pm.js +57 -0
- package/dist/esm/editor-pm/use-editor-keydown-pm.d.ts +21 -0
- package/dist/esm/editor-pm/use-editor-keydown-pm.d.ts.map +1 -0
- package/dist/esm/editor-pm/use-editor-keydown-pm.js +79 -0
- package/dist/esm/editor-pm/use-mention-keydown.d.ts +11 -0
- package/dist/esm/editor-pm/use-mention-keydown.d.ts.map +1 -0
- package/dist/esm/editor-pm/use-mention-keydown.js +57 -0
- package/dist/esm/editor-pm/use-parameter-suggestions.d.ts +19 -0
- package/dist/esm/editor-pm/use-parameter-suggestions.d.ts.map +1 -0
- package/dist/esm/editor-pm/use-parameter-suggestions.js +66 -0
- package/dist/esm/editor-pm/use-parameter-suggestions.test.d.ts +2 -0
- package/dist/esm/editor-pm/use-parameter-suggestions.test.d.ts.map +1 -0
- package/dist/esm/editor-pm/use-parameter-suggestions.test.js +66 -0
- package/dist/esm/eye-dropper/index.d.ts +10 -0
- package/dist/esm/eye-dropper/index.d.ts.map +1 -0
- package/dist/esm/eye-dropper/index.js +23 -0
- package/dist/esm/function-info/helpers.d.ts +10 -0
- package/dist/esm/function-info/helpers.d.ts.map +1 -0
- package/dist/esm/function-info/helpers.js +20 -0
- package/dist/esm/function-info/index.d.ts +11 -0
- package/dist/esm/function-info/index.d.ts.map +1 -0
- package/dist/esm/function-info/index.js +68 -0
- package/dist/esm/function-info/style.d.ts +7 -0
- package/dist/esm/function-info/style.d.ts.map +1 -0
- package/dist/esm/function-info/style.js +10 -0
- package/dist/esm/hex-color-picker/index.d.ts +8 -0
- package/dist/esm/hex-color-picker/index.d.ts.map +1 -0
- package/dist/esm/hex-color-picker/index.js +44 -0
- package/dist/esm/hooks/use-cycle-reference.d.ts +16 -0
- package/dist/esm/hooks/use-cycle-reference.d.ts.map +1 -0
- package/dist/esm/hooks/use-cycle-reference.js +70 -0
- package/dist/esm/hooks/use-dropdown-categories.d.ts +9 -0
- package/dist/esm/hooks/use-dropdown-categories.d.ts.map +1 -0
- package/dist/esm/hooks/use-dropdown-categories.js +38 -0
- package/dist/esm/hooks/use-dropdown.d.ts +38 -0
- package/dist/esm/hooks/use-dropdown.d.ts.map +1 -0
- package/dist/esm/hooks/use-dropdown.js +236 -0
- package/dist/esm/hooks/use-isomorphic-layout-effect.ts.d.ts +6 -0
- package/dist/esm/hooks/use-isomorphic-layout-effect.ts.d.ts.map +1 -0
- package/dist/esm/hooks/use-isomorphic-layout-effect.ts.js +8 -0
- package/dist/esm/hooks/use-modal.d.ts +28 -0
- package/dist/esm/hooks/use-modal.d.ts.map +1 -0
- package/dist/esm/hooks/use-modal.js +93 -0
- package/dist/esm/hooks/use-visibility.d.ts +2 -0
- package/dist/esm/hooks/use-visibility.d.ts.map +1 -0
- package/dist/esm/hooks/use-visibility.js +12 -0
- package/dist/esm/icon-button/index.d.ts +15 -0
- package/dist/esm/icon-button/index.d.ts.map +1 -0
- package/dist/esm/icon-button/index.js +32 -0
- package/dist/esm/index.d.ts +34 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +33 -0
- package/dist/esm/input/index.d.ts +9 -0
- package/dist/esm/input/index.d.ts.map +1 -0
- package/dist/esm/input/index.js +7 -0
- package/dist/esm/popover/index.d.ts +13 -0
- package/dist/esm/popover/index.d.ts.map +1 -0
- package/dist/esm/popover/index.js +22 -0
- package/dist/esm/progress/index.d.ts +10 -0
- package/dist/esm/progress/index.d.ts.map +1 -0
- package/dist/esm/progress/index.js +12 -0
- package/dist/esm/select/index.d.ts +14 -0
- package/dist/esm/select/index.d.ts.map +1 -0
- package/dist/esm/select/index.js +30 -0
- package/dist/esm/separator/index.d.ts +5 -0
- package/dist/esm/separator/index.d.ts.map +1 -0
- package/dist/esm/separator/index.js +6 -0
- package/dist/esm/skeleton/index.d.ts +7 -0
- package/dist/esm/skeleton/index.d.ts.map +1 -0
- package/dist/esm/skeleton/index.js +9 -0
- package/dist/esm/stack/index.d.ts +11 -0
- package/dist/esm/stack/index.d.ts.map +1 -0
- package/dist/esm/stack/index.js +20 -0
- package/dist/esm/tabs/index.d.ts +8 -0
- package/dist/esm/tabs/index.d.ts.map +1 -0
- package/dist/esm/tabs/index.js +11 -0
- package/dist/esm/tooltip/index.d.ts +12 -0
- package/dist/esm/tooltip/index.d.ts.map +1 -0
- package/dist/esm/tooltip/index.js +13 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/esm/utils.d.ts +3 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +5 -0
- package/dist/esm/vitest.config.d.ts +3 -0
- package/dist/esm/vitest.config.d.ts.map +1 -0
- package/dist/esm/vitest.config.js +21 -0
- package/package.json +78 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Schema } from "prosemirror-model";
|
|
2
|
+
export declare const schema: Schema<"text" | "line" | "mention" | "doc", "color" | "bold" | "fontFamily" | "fontSize" | "italic" | "strikethrough" | "underline" | "superscript" | "subscript">;
|
|
3
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../editor-pm/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,eAAO,MAAM,MAAM,oKAmLjB,CAAC"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { Schema } from "prosemirror-model";
|
|
2
|
+
export var schema = new Schema({
|
|
3
|
+
nodes: {
|
|
4
|
+
doc: {
|
|
5
|
+
content: "line*",
|
|
6
|
+
},
|
|
7
|
+
line: {
|
|
8
|
+
content: "inline*",
|
|
9
|
+
toDOM: function () {
|
|
10
|
+
return ["div", 0];
|
|
11
|
+
},
|
|
12
|
+
parseDOM: [{ tag: "div" }],
|
|
13
|
+
},
|
|
14
|
+
text: {
|
|
15
|
+
group: "inline",
|
|
16
|
+
},
|
|
17
|
+
mention: {
|
|
18
|
+
group: "inline",
|
|
19
|
+
inline: true,
|
|
20
|
+
atom: true,
|
|
21
|
+
selectable: true,
|
|
22
|
+
draggable: false,
|
|
23
|
+
attrs: { label: {}, value: {} },
|
|
24
|
+
parseDOM: [
|
|
25
|
+
{
|
|
26
|
+
tag: "span[data-mention-value]",
|
|
27
|
+
getAttrs: function (dom) {
|
|
28
|
+
return {
|
|
29
|
+
value: dom.getAttribute("data-mention-value"),
|
|
30
|
+
label: dom.getAttribute("data-mention-label"),
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
tag: "span[data-mention]",
|
|
36
|
+
getAttrs: function (dom) {
|
|
37
|
+
var text = dom.textContent || "";
|
|
38
|
+
var match = text.match(/@(.+)/);
|
|
39
|
+
return match
|
|
40
|
+
? {
|
|
41
|
+
label: match[1],
|
|
42
|
+
value: match[1],
|
|
43
|
+
}
|
|
44
|
+
: false;
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
toDOM: function (node) {
|
|
49
|
+
return [
|
|
50
|
+
"span",
|
|
51
|
+
{
|
|
52
|
+
"data-mention-value": node.attrs.value,
|
|
53
|
+
"data-mention-label": node.attrs.label,
|
|
54
|
+
},
|
|
55
|
+
"@[".concat(node.attrs.label, "](").concat(node.attrs.value, ")"),
|
|
56
|
+
];
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
marks: {
|
|
61
|
+
bold: {
|
|
62
|
+
toDOM: function () {
|
|
63
|
+
return ["strong", 0];
|
|
64
|
+
},
|
|
65
|
+
parseDOM: [
|
|
66
|
+
{ tag: "strong" },
|
|
67
|
+
{ tag: "b" },
|
|
68
|
+
{
|
|
69
|
+
style: "font-weight",
|
|
70
|
+
getAttrs: function (value) { return /^(bold(er)?|[5-9]\d{2,})$/.test(value) && null; },
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
italic: {
|
|
75
|
+
toDOM: function () {
|
|
76
|
+
return ["em", 0];
|
|
77
|
+
},
|
|
78
|
+
parseDOM: [
|
|
79
|
+
{ tag: "em" },
|
|
80
|
+
{ tag: "i" },
|
|
81
|
+
{ style: "font-style=italic" },
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
underline: {
|
|
85
|
+
toDOM: function () {
|
|
86
|
+
return ["u", 0];
|
|
87
|
+
},
|
|
88
|
+
parseDOM: [
|
|
89
|
+
{ tag: "u" },
|
|
90
|
+
{
|
|
91
|
+
style: "text-decoration",
|
|
92
|
+
getAttrs: function (value) {
|
|
93
|
+
return /^(underline)$/.test(String(value)) ? null : false;
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
strikethrough: {
|
|
99
|
+
toDOM: function () {
|
|
100
|
+
return ["s", 0];
|
|
101
|
+
},
|
|
102
|
+
parseDOM: [
|
|
103
|
+
{ tag: "s" },
|
|
104
|
+
{ tag: "del" },
|
|
105
|
+
{ tag: "strike" },
|
|
106
|
+
{
|
|
107
|
+
style: "text-decoration",
|
|
108
|
+
getAttrs: function (value) {
|
|
109
|
+
return /^(line-through)$/.test(String(value)) ? null : false;
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
// Superscript / subscript are mutually exclusive (a glyph can't be
|
|
115
|
+
// both), so each mark excludes the other in addition to itself —
|
|
116
|
+
// note `excludes` REPLACES ProseMirror's default self-exclusion,
|
|
117
|
+
// which is why the mark's own name is listed too.
|
|
118
|
+
superscript: {
|
|
119
|
+
excludes: "superscript subscript",
|
|
120
|
+
toDOM: function () {
|
|
121
|
+
return ["sup", 0];
|
|
122
|
+
},
|
|
123
|
+
parseDOM: [{ tag: "sup" }, { style: "vertical-align=super" }],
|
|
124
|
+
},
|
|
125
|
+
subscript: {
|
|
126
|
+
excludes: "subscript superscript",
|
|
127
|
+
toDOM: function () {
|
|
128
|
+
return ["sub", 0];
|
|
129
|
+
},
|
|
130
|
+
parseDOM: [{ tag: "sub" }, { style: "vertical-align=sub" }],
|
|
131
|
+
},
|
|
132
|
+
color: {
|
|
133
|
+
attrs: { color: {} },
|
|
134
|
+
toDOM: function (mark) {
|
|
135
|
+
return ["span", { style: "color: ".concat(mark.attrs.color) }, 0];
|
|
136
|
+
},
|
|
137
|
+
parseDOM: [
|
|
138
|
+
{
|
|
139
|
+
tag: "span[style*=color]",
|
|
140
|
+
getAttrs: function (dom) {
|
|
141
|
+
var style = dom.getAttribute("style");
|
|
142
|
+
var match = style.match(/color:\s*([^;]+)/);
|
|
143
|
+
return match ? { color: match[1] } : false;
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
// Per-run font size, in points (the `TextFormat.fontSize` unit). Carried
|
|
149
|
+
// as a mark so xlsx-imported size runs survive an edit and so the toolbar
|
|
150
|
+
// font-size control can format a selection inside the cell editor.
|
|
151
|
+
fontSize: {
|
|
152
|
+
attrs: { size: {} },
|
|
153
|
+
toDOM: function (mark) {
|
|
154
|
+
return ["span", { style: "font-size: ".concat(mark.attrs.size, "pt") }, 0];
|
|
155
|
+
},
|
|
156
|
+
parseDOM: [
|
|
157
|
+
{
|
|
158
|
+
style: "font-size",
|
|
159
|
+
getAttrs: function (value) {
|
|
160
|
+
var match = /^([\d.]+)pt$/.exec(String(value).trim());
|
|
161
|
+
return match ? { size: Number(match[1]) } : false;
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
// Per-run font family (`TextFormat.fontFamily`).
|
|
167
|
+
fontFamily: {
|
|
168
|
+
attrs: { family: {} },
|
|
169
|
+
toDOM: function (mark) {
|
|
170
|
+
return ["span", { style: "font-family: ".concat(mark.attrs.family) }, 0];
|
|
171
|
+
},
|
|
172
|
+
parseDOM: [
|
|
173
|
+
{
|
|
174
|
+
style: "font-family",
|
|
175
|
+
getAttrs: function (value) {
|
|
176
|
+
var family = String(value).replace(/["']/g, "").trim();
|
|
177
|
+
return family ? { family: family } : false;
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { TextFormatRun, Mention } from "@rowsncolumns/common-types";
|
|
2
|
+
export type OptionItem = {
|
|
3
|
+
title: string;
|
|
4
|
+
value?: string;
|
|
5
|
+
category?: OptionCategory;
|
|
6
|
+
};
|
|
7
|
+
export type OptionCategory = "table" | "function" | "column" | "namedrange" | "thisrow" | "specialitem" | "property" | "parameter";
|
|
8
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../editor-pm/types.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAEzE,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,aAAa,GACb,UAAU,GACV,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Plugin, PluginKey } from "prosemirror-state";
|
|
2
|
+
/**
|
|
3
|
+
* Plugin state: `true` while the editor DOM is blurred.
|
|
4
|
+
*/
|
|
5
|
+
export declare const unfocusedSelectionPluginKey: PluginKey<boolean>;
|
|
6
|
+
export declare const UNFOCUSED_SELECTION_CLASS = "rnc-pm-unfocused-selection";
|
|
7
|
+
/**
|
|
8
|
+
* Keeps the user's text selection visibly painted while the editor does not
|
|
9
|
+
* own DOM focus.
|
|
10
|
+
*
|
|
11
|
+
* Browsers only paint the native selection of a contenteditable while it is
|
|
12
|
+
* focused, so interacting with a control that must take focus (the toolbar's
|
|
13
|
+
* font-size input, a dropdown search field, a color picker) makes the
|
|
14
|
+
* selection *appear* to vanish even though ProseMirror's state still holds
|
|
15
|
+
* it. This plugin mirrors that kept selection as an inline decoration while
|
|
16
|
+
* the view is blurred and removes it as soon as focus returns — the standard
|
|
17
|
+
* "fake selection" approach rich-text editors use for toolbar interop.
|
|
18
|
+
*
|
|
19
|
+
* The decoration uses the `Highlight` CSS system color so it matches the
|
|
20
|
+
* platform's native selection paint without any stylesheet wiring; the
|
|
21
|
+
* `rnc-pm-unfocused-selection` class is attached for hosts that want to
|
|
22
|
+
* restyle it.
|
|
23
|
+
*/
|
|
24
|
+
export declare function createUnfocusedSelectionPlugin(): Plugin<boolean>;
|
|
25
|
+
//# sourceMappingURL=unfocused-selection-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unfocused-selection-plugin.d.ts","sourceRoot":"","sources":["../../../editor-pm/unfocused-selection-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGtD;;GAEG;AACH,eAAO,MAAM,2BAA2B,oBAEvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,+BAA+B,CAAC;AAEtE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,8BAA8B,oBA0C7C"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Plugin, PluginKey } from "prosemirror-state";
|
|
2
|
+
import { Decoration, DecorationSet } from "prosemirror-view";
|
|
3
|
+
/**
|
|
4
|
+
* Plugin state: `true` while the editor DOM is blurred.
|
|
5
|
+
*/
|
|
6
|
+
export var unfocusedSelectionPluginKey = new PluginKey("unfocusedSelection");
|
|
7
|
+
export var UNFOCUSED_SELECTION_CLASS = "rnc-pm-unfocused-selection";
|
|
8
|
+
/**
|
|
9
|
+
* Keeps the user's text selection visibly painted while the editor does not
|
|
10
|
+
* own DOM focus.
|
|
11
|
+
*
|
|
12
|
+
* Browsers only paint the native selection of a contenteditable while it is
|
|
13
|
+
* focused, so interacting with a control that must take focus (the toolbar's
|
|
14
|
+
* font-size input, a dropdown search field, a color picker) makes the
|
|
15
|
+
* selection *appear* to vanish even though ProseMirror's state still holds
|
|
16
|
+
* it. This plugin mirrors that kept selection as an inline decoration while
|
|
17
|
+
* the view is blurred and removes it as soon as focus returns — the standard
|
|
18
|
+
* "fake selection" approach rich-text editors use for toolbar interop.
|
|
19
|
+
*
|
|
20
|
+
* The decoration uses the `Highlight` CSS system color so it matches the
|
|
21
|
+
* platform's native selection paint without any stylesheet wiring; the
|
|
22
|
+
* `rnc-pm-unfocused-selection` class is attached for hosts that want to
|
|
23
|
+
* restyle it.
|
|
24
|
+
*/
|
|
25
|
+
export function createUnfocusedSelectionPlugin() {
|
|
26
|
+
return new Plugin({
|
|
27
|
+
key: unfocusedSelectionPluginKey,
|
|
28
|
+
state: {
|
|
29
|
+
init: function () { return false; },
|
|
30
|
+
apply: function (tr, blurred) {
|
|
31
|
+
var meta = tr.getMeta(unfocusedSelectionPluginKey);
|
|
32
|
+
return meta === undefined ? blurred : meta;
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
props: {
|
|
36
|
+
handleDOMEvents: {
|
|
37
|
+
blur: function (view) {
|
|
38
|
+
view.dispatch(view.state.tr.setMeta(unfocusedSelectionPluginKey, true));
|
|
39
|
+
return false;
|
|
40
|
+
},
|
|
41
|
+
focus: function (view) {
|
|
42
|
+
view.dispatch(view.state.tr.setMeta(unfocusedSelectionPluginKey, false));
|
|
43
|
+
return false;
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
decorations: function (state) {
|
|
47
|
+
var blurred = unfocusedSelectionPluginKey.getState(state);
|
|
48
|
+
var _a = state.selection, from = _a.from, to = _a.to, empty = _a.empty;
|
|
49
|
+
if (!blurred || empty) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return DecorationSet.create(state.doc, [
|
|
53
|
+
Decoration.inline(from, to, {
|
|
54
|
+
class: UNFOCUSED_SELECTION_CLASS,
|
|
55
|
+
style: "background-color: Highlight;",
|
|
56
|
+
}),
|
|
57
|
+
]);
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ParsedToken } from "@rowsncolumns/calculator";
|
|
2
|
+
import { EditorView } from "prosemirror-view";
|
|
3
|
+
import { OptionItem, TextFormatRun } from "./types";
|
|
4
|
+
type InputProps = {
|
|
5
|
+
itemToString(value: OptionItem): string;
|
|
6
|
+
formulaMode?: boolean;
|
|
7
|
+
getView(): EditorView | null;
|
|
8
|
+
onSubmit?(value: string, textFormatRuns?: TextFormatRun[] | null): void;
|
|
9
|
+
suggestionToken: ParsedToken | undefined;
|
|
10
|
+
activeToken: ParsedToken | undefined;
|
|
11
|
+
propertyToken?: ParsedToken | undefined;
|
|
12
|
+
parameterRange?: {
|
|
13
|
+
start: number;
|
|
14
|
+
end: number;
|
|
15
|
+
} | undefined;
|
|
16
|
+
previousToken?: ParsedToken | undefined;
|
|
17
|
+
};
|
|
18
|
+
export declare const getUnterminatedStringRange: (token: ParsedToken | undefined, docSize: number, fallbackEnd: number) => {
|
|
19
|
+
from: number;
|
|
20
|
+
to: number;
|
|
21
|
+
} | null;
|
|
22
|
+
export declare const useDropdownChangePM: ({ itemToString, formulaMode, getView, onSubmit, suggestionToken, activeToken, propertyToken, parameterRange, previousToken, }: InputProps) => (item: OptionItem) => void;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=use-dropdown-change-pm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-dropdown-change-pm.d.ts","sourceRoot":"","sources":["../../../editor-pm/use-dropdown-change-pm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGpD,KAAK,UAAU,GAAG;IAChB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,IAAI,UAAU,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACxE,eAAe,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACxC,cAAc,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC5D,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,OAAO,WAAW,GAAG,SAAS,EAC9B,SAAS,MAAM,EACf,aAAa,MAAM;;;QAkBpB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,+HAUjC,UAAU,YAEF,UAAU,SAsJpB,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { TextSelection } from "prosemirror-state";
|
|
3
|
+
import { tokenVocabulary } from "@rowsncolumns/fast-formula-parser";
|
|
4
|
+
import { extractTextFormatRuns, getPropertyStartIndex } from "./helpers";
|
|
5
|
+
export var getUnterminatedStringRange = function (token, docSize, fallbackEnd) {
|
|
6
|
+
var _a, _b, _c;
|
|
7
|
+
if (!token ||
|
|
8
|
+
((_a = token.tokenType) === null || _a === void 0 ? void 0 : _a.name) !== tokenVocabulary.UnterminatedStringStart.name) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
var tokenLength = (_c = (_b = token.image) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
|
|
12
|
+
var fallbackStart = fallbackEnd - tokenLength;
|
|
13
|
+
var startOffset = token.startOffset !== undefined ? token.startOffset : fallbackStart - 1;
|
|
14
|
+
var start = Math.max(0, Math.min(startOffset + 1, docSize));
|
|
15
|
+
var end = Math.max(start, Math.min(start + tokenLength, docSize));
|
|
16
|
+
if (end <= start) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return { from: start, to: end };
|
|
20
|
+
};
|
|
21
|
+
export var useDropdownChangePM = function (_a) {
|
|
22
|
+
var itemToString = _a.itemToString, formulaMode = _a.formulaMode, getView = _a.getView, onSubmit = _a.onSubmit, suggestionToken = _a.suggestionToken, activeToken = _a.activeToken, propertyToken = _a.propertyToken, parameterRange = _a.parameterRange, previousToken = _a.previousToken;
|
|
23
|
+
return useCallback(function (item) {
|
|
24
|
+
var _a, _b, _c;
|
|
25
|
+
var category = item.category;
|
|
26
|
+
var value = itemToString(item);
|
|
27
|
+
var view = getView();
|
|
28
|
+
if (formulaMode && view) {
|
|
29
|
+
var state_1 = view.state;
|
|
30
|
+
var tr_1 = state_1.tr;
|
|
31
|
+
var selection = state_1.selection;
|
|
32
|
+
var insertPos_1 = selection.from;
|
|
33
|
+
if (category === "parameter" && parameterRange) {
|
|
34
|
+
var from = Math.max(0, Math.min(parameterRange.start, state_1.doc.content.size));
|
|
35
|
+
var to = Math.max(from, Math.min(parameterRange.end, state_1.doc.content.size));
|
|
36
|
+
tr_1.delete(from, to);
|
|
37
|
+
tr_1.insertText(value, from);
|
|
38
|
+
var newCursorPos_1 = from + value.length;
|
|
39
|
+
tr_1.setSelection(TextSelection.near(tr_1.doc.resolve(newCursorPos_1)));
|
|
40
|
+
view.dispatch(tr_1);
|
|
41
|
+
view.focus();
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
var deleteUnterminatedToken = function (tokenToDelete, fallbackEnd) {
|
|
45
|
+
var range = getUnterminatedStringRange(tokenToDelete, state_1.doc.content.size, fallbackEnd !== null && fallbackEnd !== void 0 ? fallbackEnd : insertPos_1);
|
|
46
|
+
if (range) {
|
|
47
|
+
tr_1.delete(range.from, range.to);
|
|
48
|
+
insertPos_1 = range.from;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
// // If we have a suggestion token, delete it and update insert position
|
|
52
|
+
if (suggestionToken) {
|
|
53
|
+
var from = suggestionToken.startOffset + 1;
|
|
54
|
+
var to = suggestionToken.startOffset +
|
|
55
|
+
((_b = (_a = suggestionToken.image) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) +
|
|
56
|
+
1;
|
|
57
|
+
if (category === "property") {
|
|
58
|
+
var baseToken = propertyToken ||
|
|
59
|
+
suggestionToken.basePropertyToken ||
|
|
60
|
+
suggestionToken;
|
|
61
|
+
if (baseToken === null || baseToken === void 0 ? void 0 : baseToken.image) {
|
|
62
|
+
var dotIndex = getPropertyStartIndex(baseToken);
|
|
63
|
+
if (dotIndex !== -1) {
|
|
64
|
+
var baseStart = ((_c = baseToken.startOffset) !== null && _c !== void 0 ? _c : 0) + 1;
|
|
65
|
+
from = baseStart + dotIndex;
|
|
66
|
+
var tokenEnd = baseStart + baseToken.image.length;
|
|
67
|
+
to = tokenEnd;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
var handled = false;
|
|
72
|
+
if (from <= to && to <= state_1.doc.content.size) {
|
|
73
|
+
tr_1.delete(from, to);
|
|
74
|
+
insertPos_1 = from;
|
|
75
|
+
handled = true;
|
|
76
|
+
}
|
|
77
|
+
if (!handled) {
|
|
78
|
+
deleteUnterminatedToken(suggestionToken);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
deleteUnterminatedToken(previousToken, insertPos_1);
|
|
82
|
+
var textToInsert = "";
|
|
83
|
+
switch (category) {
|
|
84
|
+
case "table": {
|
|
85
|
+
var prevChar = insertPos_1 > 0
|
|
86
|
+
? state_1.doc.textBetween(insertPos_1 - 1, insertPos_1)
|
|
87
|
+
: "";
|
|
88
|
+
var nextChar = state_1.doc.textBetween(insertPos_1, insertPos_1 + 1);
|
|
89
|
+
textToInsert = value + "[";
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case "column": {
|
|
93
|
+
var prevChar = insertPos_1 > 0
|
|
94
|
+
? state_1.doc.textBetween(insertPos_1 - 1, insertPos_1)
|
|
95
|
+
: "";
|
|
96
|
+
var nextChar = state_1.doc.textBetween(insertPos_1, insertPos_1 + 1);
|
|
97
|
+
var prefix = prevChar === "[" || prevChar === "@" ? "" : "[";
|
|
98
|
+
var suffix = nextChar === "]" ? "" : "]";
|
|
99
|
+
textToInsert = prefix + value + suffix;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
case "thisrow":
|
|
103
|
+
textToInsert = "@";
|
|
104
|
+
break;
|
|
105
|
+
case "namedrange":
|
|
106
|
+
case "specialitem":
|
|
107
|
+
case "parameter":
|
|
108
|
+
textToInsert = value;
|
|
109
|
+
break;
|
|
110
|
+
case "property":
|
|
111
|
+
textToInsert = "." + value;
|
|
112
|
+
break;
|
|
113
|
+
case "function":
|
|
114
|
+
default:
|
|
115
|
+
textToInsert = value + "(";
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
// Insert the text and move cursor to the end
|
|
119
|
+
tr_1.insertText(textToInsert, insertPos_1);
|
|
120
|
+
var newCursorPos = insertPos_1 + textToInsert.length;
|
|
121
|
+
tr_1.setSelection(TextSelection.near(tr_1.doc.resolve(newCursorPos)));
|
|
122
|
+
view.dispatch(tr_1);
|
|
123
|
+
view.focus();
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
var textFormatRuns = extractTextFormatRuns(view === null || view === void 0 ? void 0 : view.state.doc);
|
|
127
|
+
onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(value, textFormatRuns);
|
|
128
|
+
}
|
|
129
|
+
}, [
|
|
130
|
+
onSubmit,
|
|
131
|
+
formulaMode,
|
|
132
|
+
getView,
|
|
133
|
+
itemToString,
|
|
134
|
+
suggestionToken,
|
|
135
|
+
activeToken,
|
|
136
|
+
propertyToken,
|
|
137
|
+
parameterRange,
|
|
138
|
+
previousToken,
|
|
139
|
+
]);
|
|
140
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ParsedToken } from "@rowsncolumns/calculator";
|
|
2
|
+
import { EditorState } from "prosemirror-state";
|
|
3
|
+
import { EditorView } from "prosemirror-view";
|
|
4
|
+
import type { ProseMirrorEditorProps } from "./prosemirror-editor";
|
|
5
|
+
import { TextFormatRun } from "./types";
|
|
6
|
+
type UseEditorOnChangePMProps = {
|
|
7
|
+
onChange(value: string, textFormatRuns?: TextFormatRun[] | null): void;
|
|
8
|
+
getView(): EditorView | null;
|
|
9
|
+
isActive?: boolean;
|
|
10
|
+
enableContinuousSelection?: boolean;
|
|
11
|
+
onChangeCursor(position: number | undefined): void;
|
|
12
|
+
onChangeActiveToken(token: ParsedToken | undefined): void;
|
|
13
|
+
tokenizer(value: string): ParsedToken[];
|
|
14
|
+
onFormulaStateChange: ProseMirrorEditorProps["onFormulaStateChange"];
|
|
15
|
+
onSuggestionTokenChange(token: ParsedToken | undefined): void;
|
|
16
|
+
onTableTokenChange(token: ParsedToken | undefined): void;
|
|
17
|
+
onChangeFunctionToken(token: ParsedToken | undefined): void;
|
|
18
|
+
onChangeParameterIndex(index: number): void;
|
|
19
|
+
onChangeIsEdgeOfCell(isEdgeOfCell: boolean): void;
|
|
20
|
+
onCellPropertyTokenChange(token: ParsedToken | undefined): void;
|
|
21
|
+
onChangeFunctionParameters?(params: string[], ranges: {
|
|
22
|
+
start: number;
|
|
23
|
+
end: number;
|
|
24
|
+
}[]): void;
|
|
25
|
+
onChangePreviousToken(token: ParsedToken | undefined): void;
|
|
26
|
+
};
|
|
27
|
+
export declare const useEditorOnChangePM: ({ onChange, getView, isActive, enableContinuousSelection, tokenizer, onChangeCursor, onChangeActiveToken, onFormulaStateChange, onSuggestionTokenChange, onTableTokenChange, onChangeFunctionToken, onChangeParameterIndex, onCellPropertyTokenChange, onChangeFunctionParameters, onChangeIsEdgeOfCell, onChangePreviousToken, }: UseEditorOnChangePMProps) => (newState: EditorState) => void;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=use-editor-change-pm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-editor-change-pm.d.ts","sourceRoot":"","sources":["../../../editor-pm/use-editor-change-pm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAuBnE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACvE,OAAO,IAAI,UAAU,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACnD,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACxC,oBAAoB,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;IACrE,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9D,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IACzD,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5D,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,oBAAoB,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAChE,0BAA0B,CAAC,CACzB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,GACvC,IAAI,CAAC;IACR,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,mUAiBjC,wBAAwB,gBAWV,WAAW,SA6M3B,CAAC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { tokenVocabulary } from "@rowsncolumns/calculator";
|
|
2
|
+
import { isAFormula } from "@rowsncolumns/utils";
|
|
3
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
4
|
+
import { enableCellSelection, extractTextFormatRuns, getActiveFunctionToken, getActiveSelectionIndex, getActiveSuggestionToken, getActiveTableToken, getActiveToken, getCursorPosition, getFunctionParameters, getParameterIndex, getTokenizationContent, getPreviousToken, hasPropertyReference, isCellToken, isNamedRangeToken, isTableColumnToken, isTableNameToken, resolveCellPropertyToken, serializeEditorValue, } from "./helpers";
|
|
5
|
+
import { useCallbackRef } from "@rowsncolumns/grid";
|
|
6
|
+
import { CELL_SUGGESTION_PREFIX } from "../editor/constants";
|
|
7
|
+
export var useEditorOnChangePM = function (_a) {
|
|
8
|
+
var onChange = _a.onChange, getView = _a.getView, isActive = _a.isActive, enableContinuousSelection = _a.enableContinuousSelection, tokenizer = _a.tokenizer, onChangeCursor = _a.onChangeCursor, onChangeActiveToken = _a.onChangeActiveToken, onFormulaStateChange = _a.onFormulaStateChange, onSuggestionTokenChange = _a.onSuggestionTokenChange, onTableTokenChange = _a.onTableTokenChange, onChangeFunctionToken = _a.onChangeFunctionToken, onChangeParameterIndex = _a.onChangeParameterIndex, onCellPropertyTokenChange = _a.onCellPropertyTokenChange, onChangeFunctionParameters = _a.onChangeFunctionParameters, onChangeIsEdgeOfCell = _a.onChangeIsEdgeOfCell, onChangePreviousToken = _a.onChangePreviousToken;
|
|
9
|
+
var lastSeenCursorTokenRef = useRef(undefined);
|
|
10
|
+
useEffect(function () {
|
|
11
|
+
if (!isActive) {
|
|
12
|
+
lastSeenCursorTokenRef.current = undefined;
|
|
13
|
+
}
|
|
14
|
+
}, [isActive]);
|
|
15
|
+
return useCallbackRef(useCallback(function (newState) {
|
|
16
|
+
var _a, _b, _c, _d, _e, _f;
|
|
17
|
+
var newValue = serializeEditorValue(newState.doc);
|
|
18
|
+
var isFormula = isAFormula(newValue);
|
|
19
|
+
var textFormatRuns = isFormula
|
|
20
|
+
? undefined
|
|
21
|
+
: extractTextFormatRuns(newState.doc);
|
|
22
|
+
// Callback
|
|
23
|
+
onChange(newValue, textFormatRuns);
|
|
24
|
+
// Formula mode
|
|
25
|
+
var view = getView();
|
|
26
|
+
// Set cursor tokens
|
|
27
|
+
if (isFormula && isActive && view) {
|
|
28
|
+
var cursorPos = getCursorPosition(newState);
|
|
29
|
+
if (cursorPos === undefined) {
|
|
30
|
+
lastSeenCursorTokenRef.current = undefined;
|
|
31
|
+
onChangeCursor(undefined);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Get content for tokenization - handle both single and multi-line scenarios
|
|
35
|
+
var _g = getTokenizationContent(newState, cursorPos), line = _g.line, offsetInLine = _g.offsetInLine;
|
|
36
|
+
var tokens = tokenizer(line);
|
|
37
|
+
var activeToken = getActiveToken(offsetInLine, tokens);
|
|
38
|
+
var previousToken = getPreviousToken(offsetInLine, tokens);
|
|
39
|
+
var isEdge = (activeToken === null || activeToken === void 0 ? void 0 : activeToken.endColumn) === offsetInLine;
|
|
40
|
+
var isCell = activeToken
|
|
41
|
+
? isCellToken(activeToken) ||
|
|
42
|
+
isTableColumnToken(activeToken) ||
|
|
43
|
+
isTableNameToken(activeToken)
|
|
44
|
+
: false;
|
|
45
|
+
var isNamedRange = activeToken
|
|
46
|
+
? isNamedRangeToken(activeToken)
|
|
47
|
+
: false;
|
|
48
|
+
var isEdgeOfCell = isEdge &&
|
|
49
|
+
((isCell && !hasPropertyReference(activeToken)) || isNamedRange);
|
|
50
|
+
var canSelectCells = Boolean(enableCellSelection(offsetInLine, cursorPos, tokens));
|
|
51
|
+
var selectionIndex = getActiveSelectionIndex(activeToken);
|
|
52
|
+
var suggestionToken = getActiveSuggestionToken(offsetInLine, activeToken, view);
|
|
53
|
+
var tableToken = getActiveTableToken(offsetInLine, activeToken, tokens, view, isEdge);
|
|
54
|
+
var tokenForFunction = activeToken !== null && activeToken !== void 0 ? activeToken : previousToken;
|
|
55
|
+
var functionToken = getActiveFunctionToken(tokenForFunction, tokens);
|
|
56
|
+
// Check for cell property token - we want to show suggestions when user types "A1."
|
|
57
|
+
var cellPropertyToken = resolveCellPropertyToken(activeToken, tokens);
|
|
58
|
+
if (!cellPropertyToken && suggestionToken) {
|
|
59
|
+
var basePropertyToken = suggestionToken.basePropertyToken;
|
|
60
|
+
if (basePropertyToken) {
|
|
61
|
+
cellPropertyToken = basePropertyToken;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
var isPropertyContext = Boolean(cellPropertyToken);
|
|
65
|
+
if (isPropertyContext) {
|
|
66
|
+
canSelectCells = false;
|
|
67
|
+
}
|
|
68
|
+
if (canSelectCells) {
|
|
69
|
+
lastSeenCursorTokenRef.current = cursorPos;
|
|
70
|
+
}
|
|
71
|
+
var charBeforeCursor = offsetInLine > 0 ? line[offsetInLine - 1] : "";
|
|
72
|
+
var isSpaceTerminator = charBeforeCursor === " " &&
|
|
73
|
+
!CELL_SUGGESTION_PREFIX.includes((_b = (_a = previousToken === null || previousToken === void 0 ? void 0 : previousToken.tokenType) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : "");
|
|
74
|
+
if (isSpaceTerminator) {
|
|
75
|
+
lastSeenCursorTokenRef.current = undefined;
|
|
76
|
+
}
|
|
77
|
+
var lastSeenCursorPos = lastSeenCursorTokenRef.current;
|
|
78
|
+
var isLiteralToken = ((_c = activeToken === null || activeToken === void 0 ? void 0 : activeToken.tokenType) === null || _c === void 0 ? void 0 : _c.name) === tokenVocabulary.String.name ||
|
|
79
|
+
((_d = activeToken === null || activeToken === void 0 ? void 0 : activeToken.tokenType) === null || _d === void 0 ? void 0 : _d.name) ===
|
|
80
|
+
tokenVocabulary.UnterminatedStringStart.name ||
|
|
81
|
+
((_e = activeToken === null || activeToken === void 0 ? void 0 : activeToken.tokenType) === null || _e === void 0 ? void 0 : _e.name) === tokenVocabulary.Number.name ||
|
|
82
|
+
((_f = activeToken === null || activeToken === void 0 ? void 0 : activeToken.tokenType) === null || _f === void 0 ? void 0 : _f.name) === tokenVocabulary.Boolean.name;
|
|
83
|
+
var isContinuation = enableContinuousSelection
|
|
84
|
+
? canSelectCells || isEdgeOfCell
|
|
85
|
+
: !isPropertyContext &&
|
|
86
|
+
!isLiteralToken &&
|
|
87
|
+
lastSeenCursorPos !== undefined &&
|
|
88
|
+
cursorPos >= lastSeenCursorPos;
|
|
89
|
+
if (isLiteralToken || (!canSelectCells && !isContinuation)) {
|
|
90
|
+
lastSeenCursorTokenRef.current = undefined;
|
|
91
|
+
}
|
|
92
|
+
// Get function parameters
|
|
93
|
+
var parameterIndex = getParameterIndex(tokenForFunction, functionToken, tokens);
|
|
94
|
+
var _h = getFunctionParameters(line, functionToken), parameters = _h.parameters, ranges = _h.ranges;
|
|
95
|
+
// Cursor position to show cell suggestion
|
|
96
|
+
onChangeCursor(canSelectCells ? cursorPos : undefined);
|
|
97
|
+
// Active token
|
|
98
|
+
onChangeActiveToken(activeToken);
|
|
99
|
+
onChangePreviousToken(previousToken);
|
|
100
|
+
onSuggestionTokenChange === null || onSuggestionTokenChange === void 0 ? void 0 : onSuggestionTokenChange(suggestionToken);
|
|
101
|
+
// Table token change
|
|
102
|
+
onTableTokenChange === null || onTableTokenChange === void 0 ? void 0 : onTableTokenChange(tableToken);
|
|
103
|
+
// Function token change
|
|
104
|
+
onChangeFunctionToken === null || onChangeFunctionToken === void 0 ? void 0 : onChangeFunctionToken(functionToken);
|
|
105
|
+
// Cell property token change
|
|
106
|
+
onCellPropertyTokenChange === null || onCellPropertyTokenChange === void 0 ? void 0 : onCellPropertyTokenChange(cellPropertyToken);
|
|
107
|
+
// On parameter index change
|
|
108
|
+
onChangeParameterIndex === null || onChangeParameterIndex === void 0 ? void 0 : onChangeParameterIndex(parameterIndex);
|
|
109
|
+
onChangeFunctionParameters === null || onChangeFunctionParameters === void 0 ? void 0 : onChangeFunctionParameters(parameters, ranges);
|
|
110
|
+
onChangeIsEdgeOfCell(isEdgeOfCell);
|
|
111
|
+
/**
|
|
112
|
+
* Users are able to select cells
|
|
113
|
+
* 1. When canUserSelect = true
|
|
114
|
+
*/
|
|
115
|
+
var finalCanSelectCells = !isPropertyContext && (canSelectCells || isContinuation);
|
|
116
|
+
var selectionMode = isPropertyContext || !canSelectCells ? "modify" : "append";
|
|
117
|
+
// Callback to update
|
|
118
|
+
onFormulaStateChange === null || onFormulaStateChange === void 0 ? void 0 : onFormulaStateChange(finalCanSelectCells, selectionMode, selectionIndex);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
lastSeenCursorTokenRef.current = undefined;
|
|
122
|
+
// Function token change
|
|
123
|
+
onChangeFunctionToken === null || onChangeFunctionToken === void 0 ? void 0 : onChangeFunctionToken(undefined);
|
|
124
|
+
onChangeFunctionParameters === null || onChangeFunctionParameters === void 0 ? void 0 : onChangeFunctionParameters([], []);
|
|
125
|
+
// Set suggestion token
|
|
126
|
+
onSuggestionTokenChange({
|
|
127
|
+
image: newValue,
|
|
128
|
+
startColumn: 0,
|
|
129
|
+
startOffset: 0,
|
|
130
|
+
endColumn: 0,
|
|
131
|
+
endOffset: 0,
|
|
132
|
+
endLine: 0,
|
|
133
|
+
tokenType: { name: "Suggestion" },
|
|
134
|
+
tokenTypeIdx: 0,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}, [
|
|
138
|
+
onChange,
|
|
139
|
+
getView,
|
|
140
|
+
isActive,
|
|
141
|
+
enableContinuousSelection,
|
|
142
|
+
tokenizer,
|
|
143
|
+
onFormulaStateChange,
|
|
144
|
+
onChangeActiveToken,
|
|
145
|
+
onSuggestionTokenChange,
|
|
146
|
+
onChangeIsEdgeOfCell,
|
|
147
|
+
onChangeCursor,
|
|
148
|
+
onTableTokenChange,
|
|
149
|
+
onChangeFunctionToken,
|
|
150
|
+
onChangeParameterIndex,
|
|
151
|
+
onCellPropertyTokenChange,
|
|
152
|
+
onChangeFunctionParameters,
|
|
153
|
+
]));
|
|
154
|
+
};
|