@verbb/plugin-kit-react 1.0.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 +5 -0
- package/LICENSE.md +21 -0
- package/README.md +31 -0
- package/dist/_virtual/_rolldown/runtime.js +34 -0
- package/dist/components/Button.d.ts +26 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +148 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/ButtonGroup.d.ts +11 -0
- package/dist/components/ButtonGroup.d.ts.map +1 -0
- package/dist/components/ButtonGroup.js +59 -0
- package/dist/components/ButtonGroup.js.map +1 -0
- package/dist/components/Calendar.d.ts +11 -0
- package/dist/components/Calendar.d.ts.map +1 -0
- package/dist/components/Calendar.js +133 -0
- package/dist/components/Calendar.js.map +1 -0
- package/dist/components/Checkbox.d.ts +5 -0
- package/dist/components/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox.js +41 -0
- package/dist/components/Checkbox.js.map +1 -0
- package/dist/components/CheckboxInput.d.ts +14 -0
- package/dist/components/CheckboxInput.d.ts.map +1 -0
- package/dist/components/CheckboxInput.js +31 -0
- package/dist/components/CheckboxInput.js.map +1 -0
- package/dist/components/CheckboxSelect.d.ts +19 -0
- package/dist/components/CheckboxSelect.d.ts.map +1 -0
- package/dist/components/CheckboxSelect.js +63 -0
- package/dist/components/CheckboxSelect.js.map +1 -0
- package/dist/components/ColorInput.d.ts +14 -0
- package/dist/components/ColorInput.d.ts.map +1 -0
- package/dist/components/ColorInput.js +148 -0
- package/dist/components/ColorInput.js.map +1 -0
- package/dist/components/Combobox.d.ts +40 -0
- package/dist/components/Combobox.d.ts.map +1 -0
- package/dist/components/Combobox.js +393 -0
- package/dist/components/Combobox.js.map +1 -0
- package/dist/components/ComboboxInput.d.ts +28 -0
- package/dist/components/ComboboxInput.d.ts.map +1 -0
- package/dist/components/ComboboxInput.js +165 -0
- package/dist/components/ComboboxInput.js.map +1 -0
- package/dist/components/Command.d.ts +26 -0
- package/dist/components/Command.d.ts.map +1 -0
- package/dist/components/Command.js +94 -0
- package/dist/components/Command.js.map +1 -0
- package/dist/components/CopyButton.d.ts +9 -0
- package/dist/components/CopyButton.d.ts.map +1 -0
- package/dist/components/CopyButton.js +40 -0
- package/dist/components/CopyButton.js.map +1 -0
- package/dist/components/DatePicker.d.ts +9 -0
- package/dist/components/DatePicker.d.ts.map +1 -0
- package/dist/components/DatePicker.js +46 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/Dialog.d.ts +21 -0
- package/dist/components/Dialog.d.ts.map +1 -0
- package/dist/components/Dialog.js +179 -0
- package/dist/components/Dialog.js.map +1 -0
- package/dist/components/DropdownMenu.d.ts +47 -0
- package/dist/components/DropdownMenu.d.ts.map +1 -0
- package/dist/components/DropdownMenu.js +240 -0
- package/dist/components/DropdownMenu.js.map +1 -0
- package/dist/components/EditableTable.d.ts +28 -0
- package/dist/components/EditableTable.d.ts.map +1 -0
- package/dist/components/EditableTable.js +145 -0
- package/dist/components/EditableTable.js.map +1 -0
- package/dist/components/FadeIn.d.ts +12 -0
- package/dist/components/FadeIn.d.ts.map +1 -0
- package/dist/components/FadeIn.js +24 -0
- package/dist/components/FadeIn.js.map +1 -0
- package/dist/components/Input.d.ts +9 -0
- package/dist/components/Input.d.ts.map +1 -0
- package/dist/components/Input.js +43 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/InputGroup.d.ts +20 -0
- package/dist/components/InputGroup.d.ts.map +1 -0
- package/dist/components/InputGroup.js +111 -0
- package/dist/components/InputGroup.js.map +1 -0
- package/dist/components/Label.d.ts +4 -0
- package/dist/components/Label.d.ts.map +1 -0
- package/dist/components/Label.js +15 -0
- package/dist/components/Label.js.map +1 -0
- package/dist/components/Lightswitch.d.ts +9 -0
- package/dist/components/Lightswitch.d.ts.map +1 -0
- package/dist/components/Lightswitch.js +56 -0
- package/dist/components/Lightswitch.js.map +1 -0
- package/dist/components/Markdown.d.ts +11 -0
- package/dist/components/Markdown.d.ts.map +1 -0
- package/dist/components/Markdown.js +46 -0
- package/dist/components/Markdown.js.map +1 -0
- package/dist/components/MenuButton.d.ts +40 -0
- package/dist/components/MenuButton.d.ts.map +1 -0
- package/dist/components/MenuButton.js +122 -0
- package/dist/components/MenuButton.js.map +1 -0
- package/dist/components/ModalTabs.d.ts +8 -0
- package/dist/components/ModalTabs.d.ts.map +1 -0
- package/dist/components/ModalTabs.js +37 -0
- package/dist/components/ModalTabs.js.map +1 -0
- package/dist/components/PaneTabs.d.ts +8 -0
- package/dist/components/PaneTabs.d.ts.map +1 -0
- package/dist/components/PaneTabs.js +37 -0
- package/dist/components/PaneTabs.js.map +1 -0
- package/dist/components/Popover.d.ts +12 -0
- package/dist/components/Popover.d.ts.map +1 -0
- package/dist/components/Popover.js +70 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/RadioGroup.d.ts +6 -0
- package/dist/components/RadioGroup.d.ts.map +1 -0
- package/dist/components/RadioGroup.js +34 -0
- package/dist/components/RadioGroup.js.map +1 -0
- package/dist/components/ScrollArea.d.ts +16 -0
- package/dist/components/ScrollArea.d.ts.map +1 -0
- package/dist/components/ScrollArea.js +47 -0
- package/dist/components/ScrollArea.js.map +1 -0
- package/dist/components/Select.d.ts +23 -0
- package/dist/components/Select.d.ts.map +1 -0
- package/dist/components/Select.js +205 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/SelectInput.d.ts +33 -0
- package/dist/components/SelectInput.d.ts.map +1 -0
- package/dist/components/SelectInput.js +85 -0
- package/dist/components/SelectInput.js.map +1 -0
- package/dist/components/Separator.d.ts +4 -0
- package/dist/components/Separator.d.ts.map +1 -0
- package/dist/components/Separator.js +17 -0
- package/dist/components/Separator.js.map +1 -0
- package/dist/components/SlideUp.d.ts +12 -0
- package/dist/components/SlideUp.d.ts.map +1 -0
- package/dist/components/SlideUp.js +36 -0
- package/dist/components/SlideUp.js.map +1 -0
- package/dist/components/Slot.d.ts +6 -0
- package/dist/components/Slot.d.ts.map +1 -0
- package/dist/components/Slot.js +52 -0
- package/dist/components/Slot.js.map +1 -0
- package/dist/components/Spinner.d.ts +9 -0
- package/dist/components/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner.js +43 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/Status.d.ts +8 -0
- package/dist/components/Status.d.ts.map +1 -0
- package/dist/components/Status.js +55 -0
- package/dist/components/Status.js.map +1 -0
- package/dist/components/Table.d.ts +10 -0
- package/dist/components/Table.d.ts.map +1 -0
- package/dist/components/Table.js +64 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Tabs.d.ts +8 -0
- package/dist/components/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs.js +37 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/Textarea.d.ts +8 -0
- package/dist/components/Textarea.d.ts.map +1 -0
- package/dist/components/Textarea.js +26 -0
- package/dist/components/Textarea.js.map +1 -0
- package/dist/components/TimePicker.d.ts +9 -0
- package/dist/components/TimePicker.d.ts.map +1 -0
- package/dist/components/TimePicker.js +40 -0
- package/dist/components/TimePicker.js.map +1 -0
- package/dist/components/TiptapContent.d.ts +9 -0
- package/dist/components/TiptapContent.d.ts.map +1 -0
- package/dist/components/TiptapContent.js +24 -0
- package/dist/components/TiptapContent.js.map +1 -0
- package/dist/components/TiptapEditor.d.ts +41 -0
- package/dist/components/TiptapEditor.d.ts.map +1 -0
- package/dist/components/TiptapEditor.js +555 -0
- package/dist/components/TiptapEditor.js.map +1 -0
- package/dist/components/TiptapInput.d.ts +15 -0
- package/dist/components/TiptapInput.d.ts.map +1 -0
- package/dist/components/TiptapInput.js +138 -0
- package/dist/components/TiptapInput.js.map +1 -0
- package/dist/components/Toggle.d.ts +9 -0
- package/dist/components/Toggle.d.ts.map +1 -0
- package/dist/components/Toggle.js +48 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/ToggleGroup.d.ts +11 -0
- package/dist/components/ToggleGroup.d.ts.map +1 -0
- package/dist/components/ToggleGroup.js +70 -0
- package/dist/components/ToggleGroup.js.map +1 -0
- package/dist/components/Tooltip.d.ts +9 -0
- package/dist/components/Tooltip.d.ts.map +1 -0
- package/dist/components/Tooltip.js +51 -0
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/VirtualizedScrollArea.d.ts +25 -0
- package/dist/components/VirtualizedScrollArea.d.ts.map +1 -0
- package/dist/components/VirtualizedScrollArea.js +80 -0
- package/dist/components/VirtualizedScrollArea.js.map +1 -0
- package/dist/components/editable-table/RowDataCells.d.ts +3 -0
- package/dist/components/editable-table/RowDataCells.d.ts.map +1 -0
- package/dist/components/editable-table/RowDataCells.js +33 -0
- package/dist/components/editable-table/RowDataCells.js.map +1 -0
- package/dist/components/editable-table/TableCell.d.ts +13 -0
- package/dist/components/editable-table/TableCell.d.ts.map +1 -0
- package/dist/components/editable-table/TableCell.js +415 -0
- package/dist/components/editable-table/TableCell.js.map +1 -0
- package/dist/components/editable-table/TableRow.d.ts +3 -0
- package/dist/components/editable-table/TableRow.d.ts.map +1 -0
- package/dist/components/editable-table/TableRow.js +163 -0
- package/dist/components/editable-table/TableRow.js.map +1 -0
- package/dist/components/editable-table/helpers.d.ts +12 -0
- package/dist/components/editable-table/helpers.d.ts.map +1 -0
- package/dist/components/editable-table/helpers.js +23 -0
- package/dist/components/editable-table/helpers.js.map +1 -0
- package/dist/components/editable-table/index.d.ts +4 -0
- package/dist/components/editable-table/index.d.ts.map +1 -0
- package/dist/components/editable-table/index.js +4 -0
- package/dist/components/editable-table/types.d.ts +43 -0
- package/dist/components/editable-table/types.d.ts.map +1 -0
- package/dist/components/editable-table/types.js +0 -0
- package/dist/components/editable-table/useEditableTableCellChange.d.ts +17 -0
- package/dist/components/editable-table/useEditableTableCellChange.d.ts.map +1 -0
- package/dist/components/editable-table/useEditableTableCellChange.js +152 -0
- package/dist/components/editable-table/useEditableTableCellChange.js.map +1 -0
- package/dist/components/editable-table/useEditableTableDnd.d.ts +18 -0
- package/dist/components/editable-table/useEditableTableDnd.d.ts.map +1 -0
- package/dist/components/editable-table/useEditableTableDnd.js +55 -0
- package/dist/components/editable-table/useEditableTableDnd.js.map +1 -0
- package/dist/components/editable-table/useEditableTableRows.d.ts +17 -0
- package/dist/components/editable-table/useEditableTableRows.d.ts.map +1 -0
- package/dist/components/editable-table/useEditableTableRows.js +108 -0
- package/dist/components/editable-table/useEditableTableRows.js.map +1 -0
- package/dist/components/index.d.ts +45 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +45 -0
- package/dist/components/tiptap/InlineVariablePickerPopover.d.ts +24 -0
- package/dist/components/tiptap/InlineVariablePickerPopover.d.ts.map +1 -0
- package/dist/components/tiptap/InlineVariablePickerPopover.js +63 -0
- package/dist/components/tiptap/InlineVariablePickerPopover.js.map +1 -0
- package/dist/components/tiptap/InsertLinkDialog.d.ts +14 -0
- package/dist/components/tiptap/InsertLinkDialog.d.ts.map +1 -0
- package/dist/components/tiptap/InsertLinkDialog.js +145 -0
- package/dist/components/tiptap/InsertLinkDialog.js.map +1 -0
- package/dist/components/tiptap/LinkBubbleMenu.d.ts +10 -0
- package/dist/components/tiptap/LinkBubbleMenu.d.ts.map +1 -0
- package/dist/components/tiptap/LinkBubbleMenu.js +106 -0
- package/dist/components/tiptap/LinkBubbleMenu.js.map +1 -0
- package/dist/components/tiptap/LinkDropdown.d.ts +53 -0
- package/dist/components/tiptap/LinkDropdown.d.ts.map +1 -0
- package/dist/components/tiptap/LinkDropdown.js +155 -0
- package/dist/components/tiptap/LinkDropdown.js.map +1 -0
- package/dist/components/tiptap/VariableCommandList.d.ts +37 -0
- package/dist/components/tiptap/VariableCommandList.d.ts.map +1 -0
- package/dist/components/tiptap/VariableCommandList.js +166 -0
- package/dist/components/tiptap/VariableCommandList.js.map +1 -0
- package/dist/components/tiptap/VariableDropdown.d.ts +33 -0
- package/dist/components/tiptap/VariableDropdown.d.ts.map +1 -0
- package/dist/components/tiptap/VariableDropdown.js +121 -0
- package/dist/components/tiptap/VariableDropdown.js.map +1 -0
- package/dist/components/tiptap/VariablePickerContext.d.ts +38 -0
- package/dist/components/tiptap/VariablePickerContext.d.ts.map +1 -0
- package/dist/components/tiptap/VariablePickerContext.js +30 -0
- package/dist/components/tiptap/VariablePickerContext.js.map +1 -0
- package/dist/components/tiptap/VariableTag.d.ts +6 -0
- package/dist/components/tiptap/VariableTag.d.ts.map +1 -0
- package/dist/components/tiptap/VariableTag.js +153 -0
- package/dist/components/tiptap/VariableTag.js.map +1 -0
- package/dist/components/tiptap/VariableTagView.d.ts +3 -0
- package/dist/components/tiptap/VariableTagView.d.ts.map +1 -0
- package/dist/components/tiptap/VariableTagView.js +445 -0
- package/dist/components/tiptap/VariableTagView.js.map +1 -0
- package/dist/components/tiptap/VariableTransformControls.d.ts +37 -0
- package/dist/components/tiptap/VariableTransformControls.d.ts.map +1 -0
- package/dist/components/tiptap/VariableTransformControls.js +157 -0
- package/dist/components/tiptap/VariableTransformControls.js.map +1 -0
- package/dist/components/tiptap/editorConfig.d.ts +15 -0
- package/dist/components/tiptap/editorConfig.d.ts.map +1 -0
- package/dist/components/tiptap/editorConfig.js +191 -0
- package/dist/components/tiptap/editorConfig.js.map +1 -0
- package/dist/components/tiptap/useInlineVariablePicker.d.ts +34 -0
- package/dist/components/tiptap/useInlineVariablePicker.d.ts.map +1 -0
- package/dist/components/tiptap/useInlineVariablePicker.js +240 -0
- package/dist/components/tiptap/useInlineVariablePicker.js.map +1 -0
- package/dist/components/tiptap/useVariablePicker.d.ts +28 -0
- package/dist/components/tiptap/useVariablePicker.d.ts.map +1 -0
- package/dist/components/tiptap/useVariablePicker.js +122 -0
- package/dist/components/tiptap/useVariablePicker.js.map +1 -0
- package/dist/components/tiptap/variablePickerUtils.d.ts +11 -0
- package/dist/components/tiptap/variablePickerUtils.d.ts.map +1 -0
- package/dist/components/tiptap/variablePickerUtils.js +63 -0
- package/dist/components/tiptap/variablePickerUtils.js.map +1 -0
- package/dist/components/tiptap/variableSerialization.d.ts +49 -0
- package/dist/components/tiptap/variableSerialization.d.ts.map +1 -0
- package/dist/components/tiptap/variableSerialization.js +250 -0
- package/dist/components/tiptap/variableSerialization.js.map +1 -0
- package/dist/css/core.css +288 -0
- package/dist/css/style.css +295 -0
- package/dist/forms/Field.d.ts +37 -0
- package/dist/forms/Field.d.ts.map +1 -0
- package/dist/forms/Field.js +159 -0
- package/dist/forms/Field.js.map +1 -0
- package/dist/forms/SchemaFormEngine.d.ts +23 -0
- package/dist/forms/SchemaFormEngine.d.ts.map +1 -0
- package/dist/forms/SchemaFormEngine.js +444 -0
- package/dist/forms/SchemaFormEngine.js.map +1 -0
- package/dist/forms/components/FieldWrap.d.ts +11 -0
- package/dist/forms/components/FieldWrap.d.ts.map +1 -0
- package/dist/forms/components/FieldWrap.js +84 -0
- package/dist/forms/components/FieldWrap.js.map +1 -0
- package/dist/forms/components/ModalTabs.d.ts +21 -0
- package/dist/forms/components/ModalTabs.d.ts.map +1 -0
- package/dist/forms/components/ModalTabs.js +84 -0
- package/dist/forms/components/ModalTabs.js.map +1 -0
- package/dist/forms/components/index.d.ts +3 -0
- package/dist/forms/components/index.d.ts.map +1 -0
- package/dist/forms/components/index.js +3 -0
- package/dist/forms/contexts/VariableCategoriesContext.d.ts +17 -0
- package/dist/forms/contexts/VariableCategoriesContext.d.ts.map +1 -0
- package/dist/forms/contexts/VariableCategoriesContext.js +18 -0
- package/dist/forms/contexts/VariableCategoriesContext.js.map +1 -0
- package/dist/forms/engine/FormStateStore.d.ts +24 -0
- package/dist/forms/engine/FormStateStore.d.ts.map +1 -0
- package/dist/forms/engine/FormStateStore.js +97 -0
- package/dist/forms/engine/FormStateStore.js.map +1 -0
- package/dist/forms/engine/SchemaIndex.d.ts +33 -0
- package/dist/forms/engine/SchemaIndex.d.ts.map +1 -0
- package/dist/forms/engine/SchemaIndex.js +21 -0
- package/dist/forms/engine/SchemaIndex.js.map +1 -0
- package/dist/forms/engine/ValidationEngine.d.ts +13 -0
- package/dist/forms/engine/ValidationEngine.d.ts.map +1 -0
- package/dist/forms/engine/ValidationEngine.js +155 -0
- package/dist/forms/engine/ValidationEngine.js.map +1 -0
- package/dist/forms/engine/buildGroupedMessage.d.ts +2 -0
- package/dist/forms/engine/buildGroupedMessage.d.ts.map +1 -0
- package/dist/forms/engine/buildGroupedMessage.js +20 -0
- package/dist/forms/engine/buildGroupedMessage.js.map +1 -0
- package/dist/forms/engine/context.d.ts +60 -0
- package/dist/forms/engine/context.d.ts.map +1 -0
- package/dist/forms/engine/context.js +12 -0
- package/dist/forms/engine/context.js.map +1 -0
- package/dist/forms/engine/rules/email.d.ts +2 -0
- package/dist/forms/engine/rules/email.d.ts.map +1 -0
- package/dist/forms/engine/rules/email.js +11 -0
- package/dist/forms/engine/rules/email.js.map +1 -0
- package/dist/forms/engine/rules/emailOrVariable.d.ts +2 -0
- package/dist/forms/engine/rules/emailOrVariable.d.ts.map +1 -0
- package/dist/forms/engine/rules/emailOrVariable.js +13 -0
- package/dist/forms/engine/rules/emailOrVariable.js.map +1 -0
- package/dist/forms/engine/rules/handle.d.ts +2 -0
- package/dist/forms/engine/rules/handle.d.ts.map +1 -0
- package/dist/forms/engine/rules/handle.js +12 -0
- package/dist/forms/engine/rules/handle.js.map +1 -0
- package/dist/forms/engine/rules/index.d.ts +9 -0
- package/dist/forms/engine/rules/index.d.ts.map +1 -0
- package/dist/forms/engine/rules/index.js +35 -0
- package/dist/forms/engine/rules/index.js.map +1 -0
- package/dist/forms/engine/rules/max.d.ts +2 -0
- package/dist/forms/engine/rules/max.d.ts.map +1 -0
- package/dist/forms/engine/rules/max.js +16 -0
- package/dist/forms/engine/rules/max.js.map +1 -0
- package/dist/forms/engine/rules/min.d.ts +2 -0
- package/dist/forms/engine/rules/min.d.ts.map +1 -0
- package/dist/forms/engine/rules/min.js +16 -0
- package/dist/forms/engine/rules/min.js.map +1 -0
- package/dist/forms/engine/rules/required.d.ts +2 -0
- package/dist/forms/engine/rules/required.d.ts.map +1 -0
- package/dist/forms/engine/rules/required.js +11 -0
- package/dist/forms/engine/rules/required.js.map +1 -0
- package/dist/forms/engine/rules/uniqueHandle.d.ts +9 -0
- package/dist/forms/engine/rules/uniqueHandle.d.ts.map +1 -0
- package/dist/forms/engine/rules/uniqueHandle.js +95 -0
- package/dist/forms/engine/rules/uniqueHandle.js.map +1 -0
- package/dist/forms/engine/rules/utils.d.ts +3 -0
- package/dist/forms/engine/rules/utils.d.ts.map +1 -0
- package/dist/forms/engine/rules/utils.js +21 -0
- package/dist/forms/engine/rules/utils.js.map +1 -0
- package/dist/forms/fields/CalculationsField.d.ts +24 -0
- package/dist/forms/fields/CalculationsField.d.ts.map +1 -0
- package/dist/forms/fields/CalculationsField.js +215 -0
- package/dist/forms/fields/CalculationsField.js.map +1 -0
- package/dist/forms/fields/CalculationsToolbar.d.ts +17 -0
- package/dist/forms/fields/CalculationsToolbar.d.ts.map +1 -0
- package/dist/forms/fields/CalculationsToolbar.js +130 -0
- package/dist/forms/fields/CalculationsToolbar.js.map +1 -0
- package/dist/forms/fields/CheckboxSelectField.d.ts +19 -0
- package/dist/forms/fields/CheckboxSelectField.d.ts.map +1 -0
- package/dist/forms/fields/CheckboxSelectField.js +30 -0
- package/dist/forms/fields/CheckboxSelectField.js.map +1 -0
- package/dist/forms/fields/ColorField.d.ts +15 -0
- package/dist/forms/fields/ColorField.d.ts.map +1 -0
- package/dist/forms/fields/ColorField.js +30 -0
- package/dist/forms/fields/ColorField.js.map +1 -0
- package/dist/forms/fields/ComboboxField.d.ts +23 -0
- package/dist/forms/fields/ComboboxField.d.ts.map +1 -0
- package/dist/forms/fields/ComboboxField.js +38 -0
- package/dist/forms/fields/ComboboxField.js.map +1 -0
- package/dist/forms/fields/DateTimeField.d.ts +14 -0
- package/dist/forms/fields/DateTimeField.d.ts.map +1 -0
- package/dist/forms/fields/DateTimeField.js +53 -0
- package/dist/forms/fields/DateTimeField.js.map +1 -0
- package/dist/forms/fields/EditableTableField.d.ts +22 -0
- package/dist/forms/fields/EditableTableField.d.ts.map +1 -0
- package/dist/forms/fields/EditableTableField.js +37 -0
- package/dist/forms/fields/EditableTableField.js.map +1 -0
- package/dist/forms/fields/ElementSelectField.d.ts +20 -0
- package/dist/forms/fields/ElementSelectField.d.ts.map +1 -0
- package/dist/forms/fields/ElementSelectField.js +215 -0
- package/dist/forms/fields/ElementSelectField.js.map +1 -0
- package/dist/forms/fields/GroupField.d.ts +19 -0
- package/dist/forms/fields/GroupField.d.ts.map +1 -0
- package/dist/forms/fields/GroupField.js +50 -0
- package/dist/forms/fields/GroupField.js.map +1 -0
- package/dist/forms/fields/HandleField.d.ts +20 -0
- package/dist/forms/fields/HandleField.d.ts.map +1 -0
- package/dist/forms/fields/HandleField.js +70 -0
- package/dist/forms/fields/HandleField.js.map +1 -0
- package/dist/forms/fields/LightswitchField.d.ts +14 -0
- package/dist/forms/fields/LightswitchField.d.ts.map +1 -0
- package/dist/forms/fields/LightswitchField.js +29 -0
- package/dist/forms/fields/LightswitchField.js.map +1 -0
- package/dist/forms/fields/ListField.d.ts +17 -0
- package/dist/forms/fields/ListField.d.ts.map +1 -0
- package/dist/forms/fields/ListField.js +51 -0
- package/dist/forms/fields/ListField.js.map +1 -0
- package/dist/forms/fields/NumberField.d.ts +17 -0
- package/dist/forms/fields/NumberField.d.ts.map +1 -0
- package/dist/forms/fields/NumberField.js +33 -0
- package/dist/forms/fields/NumberField.js.map +1 -0
- package/dist/forms/fields/RadioGroupField.d.ts +25 -0
- package/dist/forms/fields/RadioGroupField.d.ts.map +1 -0
- package/dist/forms/fields/RadioGroupField.js +102 -0
- package/dist/forms/fields/RadioGroupField.js.map +1 -0
- package/dist/forms/fields/RichTextField.d.ts +23 -0
- package/dist/forms/fields/RichTextField.d.ts.map +1 -0
- package/dist/forms/fields/RichTextField.js +50 -0
- package/dist/forms/fields/RichTextField.js.map +1 -0
- package/dist/forms/fields/SelectField.d.ts +25 -0
- package/dist/forms/fields/SelectField.d.ts.map +1 -0
- package/dist/forms/fields/SelectField.js +73 -0
- package/dist/forms/fields/SelectField.js.map +1 -0
- package/dist/forms/fields/StaticTableField.d.ts +34 -0
- package/dist/forms/fields/StaticTableField.d.ts.map +1 -0
- package/dist/forms/fields/StaticTableField.js +128 -0
- package/dist/forms/fields/StaticTableField.js.map +1 -0
- package/dist/forms/fields/TextField.d.ts +16 -0
- package/dist/forms/fields/TextField.d.ts.map +1 -0
- package/dist/forms/fields/TextField.js +31 -0
- package/dist/forms/fields/TextField.js.map +1 -0
- package/dist/forms/fields/TextareaField.d.ts +17 -0
- package/dist/forms/fields/TextareaField.d.ts.map +1 -0
- package/dist/forms/fields/TextareaField.js +32 -0
- package/dist/forms/fields/TextareaField.js.map +1 -0
- package/dist/forms/fields/VariablePickerField.d.ts +21 -0
- package/dist/forms/fields/VariablePickerField.d.ts.map +1 -0
- package/dist/forms/fields/VariablePickerField.js +49 -0
- package/dist/forms/fields/VariablePickerField.js.map +1 -0
- package/dist/forms/index.d.ts +8 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +10 -0
- package/dist/forms/registry.d.ts +8 -0
- package/dist/forms/registry.d.ts.map +1 -0
- package/dist/forms/registry.js +76 -0
- package/dist/forms/registry.js.map +1 -0
- package/dist/forms/store/element-store.d.ts +11 -0
- package/dist/forms/store/element-store.d.ts.map +1 -0
- package/dist/forms/store/element-store.js +41 -0
- package/dist/forms/store/element-store.js.map +1 -0
- package/dist/forms/useEditableTableFieldBinding.d.ts +13 -0
- package/dist/forms/useEditableTableFieldBinding.d.ts.map +1 -0
- package/dist/forms/useEditableTableFieldBinding.js +91 -0
- package/dist/forms/useEditableTableFieldBinding.js.map +1 -0
- package/dist/forms/useEngineField.d.ts +9 -0
- package/dist/forms/useEngineField.d.ts.map +1 -0
- package/dist/forms/useEngineField.js +32 -0
- package/dist/forms/useEngineField.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts +14 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.js +67 -0
- package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/hooks/useTranslation.d.ts +3 -0
- package/dist/hooks/useTranslation.d.ts.map +1 -0
- package/dist/hooks/useTranslation.js +12 -0
- package/dist/hooks/useTranslation.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +15 -0
- package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +15 -0
- package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js +13 -0
- package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/createClass.js +21 -0
- package/dist/node_modules/@babel/runtime/helpers/createClass.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/defineProperty.js +20 -0
- package/dist/node_modules/@babel/runtime/helpers/defineProperty.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js +13 -0
- package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js +13 -0
- package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js +13 -0
- package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js +21 -0
- package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js +22 -0
- package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js +18 -0
- package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/typeof.js +18 -0
- package/dist/node_modules/@babel/runtime/helpers/typeof.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +19 -0
- package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +1 -0
- package/dist/node_modules/jexl/dist/Expression.js +84 -0
- package/dist/node_modules/jexl/dist/Expression.js.map +1 -0
- package/dist/node_modules/jexl/dist/Jexl.js +165 -0
- package/dist/node_modules/jexl/dist/Jexl.js.map +1 -0
- package/dist/node_modules/jexl/dist/Lexer.js +152 -0
- package/dist/node_modules/jexl/dist/Lexer.js.map +1 -0
- package/dist/node_modules/jexl/dist/PromiseSync.js +87 -0
- package/dist/node_modules/jexl/dist/PromiseSync.js.map +1 -0
- package/dist/node_modules/jexl/dist/evaluator/Evaluator.js +98 -0
- package/dist/node_modules/jexl/dist/evaluator/Evaluator.js.map +1 -0
- package/dist/node_modules/jexl/dist/evaluator/handlers.js +162 -0
- package/dist/node_modules/jexl/dist/evaluator/handlers.js.map +1 -0
- package/dist/node_modules/jexl/dist/grammar.js +195 -0
- package/dist/node_modules/jexl/dist/grammar.js.map +1 -0
- package/dist/node_modules/jexl/dist/parser/Parser.js +135 -0
- package/dist/node_modules/jexl/dist/parser/Parser.js.map +1 -0
- package/dist/node_modules/jexl/dist/parser/handlers.js +205 -0
- package/dist/node_modules/jexl/dist/parser/handlers.js.map +1 -0
- package/dist/node_modules/jexl/dist/parser/states.js +158 -0
- package/dist/node_modules/jexl/dist/parser/states.js.map +1 -0
- package/dist/types/global.d.d.ts +1 -0
- package/dist/types/global.d.js +0 -0
- package/dist/utils/classes.d.ts +18 -0
- package/dist/utils/classes.d.ts.map +1 -0
- package/dist/utils/classes.js +25 -0
- package/dist/utils/classes.js.map +1 -0
- package/dist/utils/config.d.ts +14 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +16 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/craftHostBridge.d.ts +16 -0
- package/dist/utils/craftHostBridge.d.ts.map +1 -0
- package/dist/utils/craftHostBridge.js +28 -0
- package/dist/utils/craftHostBridge.js.map +1 -0
- package/dist/utils/handle.d.ts +10 -0
- package/dist/utils/handle.d.ts.map +1 -0
- package/dist/utils/handle.js +51 -0
- package/dist/utils/handle.js.map +1 -0
- package/dist/utils/hostBridge.d.ts +40 -0
- package/dist/utils/hostBridge.d.ts.map +1 -0
- package/dist/utils/hostBridge.js +35 -0
- package/dist/utils/hostBridge.js.map +1 -0
- package/dist/utils/index.d.ts +18 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +66 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/portal.d.ts +17 -0
- package/dist/utils/portal.d.ts.map +1 -0
- package/dist/utils/portal.js +51 -0
- package/dist/utils/portal.js.map +1 -0
- package/dist/utils/schema.d.ts +17 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +56 -0
- package/dist/utils/schema.js.map +1 -0
- package/dist/utils/schemaFieldNames.d.ts +2 -0
- package/dist/utils/schemaFieldNames.d.ts.map +1 -0
- package/dist/utils/schemaFieldNames.js +16 -0
- package/dist/utils/schemaFieldNames.js.map +1 -0
- package/dist/utils/schemaIndex.d.ts +6 -0
- package/dist/utils/schemaIndex.d.ts.map +1 -0
- package/dist/utils/schemaIndex.js +31 -0
- package/dist/utils/schemaIndex.js.map +1 -0
- package/dist/utils/schemaIndexCache.d.ts +6 -0
- package/dist/utils/schemaIndexCache.d.ts.map +1 -0
- package/dist/utils/schemaIndexCache.js +32 -0
- package/dist/utils/schemaIndexCache.js.map +1 -0
- package/dist/utils/schemaNormalize.d.ts +13 -0
- package/dist/utils/schemaNormalize.d.ts.map +1 -0
- package/dist/utils/schemaNormalize.js +17 -0
- package/dist/utils/schemaNormalize.js.map +1 -0
- package/dist/utils/store.d.ts +7 -0
- package/dist/utils/store.d.ts.map +1 -0
- package/dist/utils/store.js +6 -0
- package/dist/utils/store.js.map +1 -0
- package/dist/utils/timeOptions.d.ts +6 -0
- package/dist/utils/timeOptions.d.ts.map +1 -0
- package/dist/utils/timeOptions.js +42 -0
- package/dist/utils/timeOptions.js.map +1 -0
- package/dist/utils/tiptap.d.ts +13 -0
- package/dist/utils/tiptap.d.ts.map +1 -0
- package/dist/utils/tiptap.js +39 -0
- package/dist/utils/tiptap.js.map +1 -0
- package/dist/utils/translation.d.ts +5 -0
- package/dist/utils/translation.d.ts.map +1 -0
- package/dist/utils/translation.js +21 -0
- package/dist/utils/translation.js.map +1 -0
- package/dist/utils/validation.d.ts +4 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +253 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +167 -0
- package/vite-dev.mjs +56 -0
|
@@ -0,0 +1,555 @@
|
|
|
1
|
+
import { cn } from "../utils/classes.js";
|
|
2
|
+
import "../utils/index.js";
|
|
3
|
+
import { useTranslation } from "../hooks/useTranslation.js";
|
|
4
|
+
import "../hooks/index.js";
|
|
5
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "./Tooltip.js";
|
|
6
|
+
import { VariableDropdown } from "./tiptap/VariableDropdown.js";
|
|
7
|
+
import { LinkDropdown } from "./tiptap/LinkDropdown.js";
|
|
8
|
+
import { VariablePickerProvider } from "./tiptap/VariablePickerContext.js";
|
|
9
|
+
import { InlineVariablePickerPopover } from "./tiptap/InlineVariablePickerPopover.js";
|
|
10
|
+
import { useInlineVariablePicker } from "./tiptap/useInlineVariablePicker.js";
|
|
11
|
+
import { LinkBubbleMenu } from "./tiptap/LinkBubbleMenu.js";
|
|
12
|
+
import { InsertLinkDialog } from "./tiptap/InsertLinkDialog.js";
|
|
13
|
+
import { createTiptapExtensions, getFatalTiptapContentError, normalizeContentArray, valueToContent } from "./tiptap/editorConfig.js";
|
|
14
|
+
import "./index.js";
|
|
15
|
+
import { Button } from "./Button.js";
|
|
16
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
17
|
+
import { getMarkRange } from "@tiptap/core";
|
|
18
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
19
|
+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
20
|
+
import { faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faArrowRotateLeft, faArrowRotateRight, faBold, faBracketsCurly, faCode, faH1, faH2, faH3, faH4, faH5, faH6, faHighlighter, faItalic, faListOl, faListUl, faMinus, faQuoteRight, faStrikethrough, faSubscript, faSuperscript, faTextSlash, faTriangleExclamation, faUnderline } from "@fortawesome/pro-solid-svg-icons";
|
|
21
|
+
import { EditorContent, EditorContext, useEditor } from "@tiptap/react";
|
|
22
|
+
import { faFileDashedLine, faTable } from "@fortawesome/pro-regular-svg-icons";
|
|
23
|
+
//#region src/components/TiptapEditor.tsx
|
|
24
|
+
var MenuBar = ({ editor, buttons = ["bold", "italic"], linkOptions, linkSelectorStorageKeyPrefix, variableCategories = {}, variableCategoryLabels, variableCategoryOrder, variablePickerOpen, onVariablePickerOpenChange, openInsertLinkDialog }) => {
|
|
25
|
+
const t = useTranslation();
|
|
26
|
+
if (!editor) return null;
|
|
27
|
+
const hasAnyVariables = Object.values(variableCategories ?? {}).some((items) => {
|
|
28
|
+
return Array.isArray(items) && items.length > 0;
|
|
29
|
+
});
|
|
30
|
+
const visibleButtons = buttons.filter((buttonName) => {
|
|
31
|
+
if (buttonName === "variableTag") return hasAnyVariables;
|
|
32
|
+
return true;
|
|
33
|
+
});
|
|
34
|
+
const buttonConfig = {
|
|
35
|
+
bold: {
|
|
36
|
+
icon: FontAwesomeIcon,
|
|
37
|
+
iconProp: faBold,
|
|
38
|
+
title: t("Bold"),
|
|
39
|
+
action: () => {
|
|
40
|
+
return editor.chain().focus().toggleBold().run();
|
|
41
|
+
},
|
|
42
|
+
isActive: () => {
|
|
43
|
+
return editor.isActive("bold");
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
italic: {
|
|
47
|
+
icon: FontAwesomeIcon,
|
|
48
|
+
iconProp: faItalic,
|
|
49
|
+
title: t("Italic"),
|
|
50
|
+
action: () => {
|
|
51
|
+
return editor.chain().focus().toggleItalic().run();
|
|
52
|
+
},
|
|
53
|
+
isActive: () => {
|
|
54
|
+
return editor.isActive("italic");
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
underline: {
|
|
58
|
+
icon: FontAwesomeIcon,
|
|
59
|
+
iconProp: faUnderline,
|
|
60
|
+
title: t("Underline"),
|
|
61
|
+
action: () => {
|
|
62
|
+
return editor.chain().focus().toggleUnderline().run();
|
|
63
|
+
},
|
|
64
|
+
isActive: () => {
|
|
65
|
+
return editor.isActive("underline");
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
strikethrough: {
|
|
69
|
+
icon: FontAwesomeIcon,
|
|
70
|
+
iconProp: faStrikethrough,
|
|
71
|
+
title: t("Strikethrough"),
|
|
72
|
+
action: () => {
|
|
73
|
+
return editor.chain().focus().toggleStrike().run();
|
|
74
|
+
},
|
|
75
|
+
isActive: () => {
|
|
76
|
+
return editor.isActive("strike");
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
subscript: {
|
|
80
|
+
icon: FontAwesomeIcon,
|
|
81
|
+
iconProp: faSubscript,
|
|
82
|
+
title: t("Subscript"),
|
|
83
|
+
action: () => {
|
|
84
|
+
return editor.chain().focus().toggleSubscript().run();
|
|
85
|
+
},
|
|
86
|
+
isActive: () => {
|
|
87
|
+
return editor.isActive("subscript");
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
superscript: {
|
|
91
|
+
icon: FontAwesomeIcon,
|
|
92
|
+
iconProp: faSuperscript,
|
|
93
|
+
title: t("Superscript"),
|
|
94
|
+
action: () => {
|
|
95
|
+
return editor.chain().focus().toggleSuperscript().run();
|
|
96
|
+
},
|
|
97
|
+
isActive: () => {
|
|
98
|
+
return editor.isActive("superscript");
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"unordered-list": {
|
|
102
|
+
icon: FontAwesomeIcon,
|
|
103
|
+
iconProp: faListUl,
|
|
104
|
+
title: t("Bullet List"),
|
|
105
|
+
action: () => {
|
|
106
|
+
return editor.chain().focus().toggleBulletList().run();
|
|
107
|
+
},
|
|
108
|
+
isActive: () => {
|
|
109
|
+
return editor.isActive("bulletList");
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"ordered-list": {
|
|
113
|
+
icon: FontAwesomeIcon,
|
|
114
|
+
iconProp: faListOl,
|
|
115
|
+
title: t("Ordered List"),
|
|
116
|
+
action: () => {
|
|
117
|
+
return editor.chain().focus().toggleOrderedList().run();
|
|
118
|
+
},
|
|
119
|
+
isActive: () => {
|
|
120
|
+
return editor.isActive("orderedList");
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
blockquote: {
|
|
124
|
+
icon: FontAwesomeIcon,
|
|
125
|
+
iconProp: faQuoteRight,
|
|
126
|
+
title: t("Blockquote"),
|
|
127
|
+
action: () => {
|
|
128
|
+
return editor.chain().focus().toggleBlockquote().run();
|
|
129
|
+
},
|
|
130
|
+
isActive: () => {
|
|
131
|
+
return editor.isActive("blockquote");
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
highlight: {
|
|
135
|
+
icon: FontAwesomeIcon,
|
|
136
|
+
iconProp: faHighlighter,
|
|
137
|
+
title: t("Highlight"),
|
|
138
|
+
action: () => {
|
|
139
|
+
return editor.chain().focus().toggleHighlight().run();
|
|
140
|
+
},
|
|
141
|
+
isActive: () => {
|
|
142
|
+
return editor.isActive("highlight");
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
code: {
|
|
146
|
+
icon: FontAwesomeIcon,
|
|
147
|
+
iconProp: faBracketsCurly,
|
|
148
|
+
title: t("Inline Code"),
|
|
149
|
+
action: () => {
|
|
150
|
+
return editor.chain().focus().toggleCode().run();
|
|
151
|
+
},
|
|
152
|
+
isActive: () => {
|
|
153
|
+
return editor.isActive("code");
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
"code-block": {
|
|
157
|
+
icon: FontAwesomeIcon,
|
|
158
|
+
iconProp: faCode,
|
|
159
|
+
title: t("Code Block"),
|
|
160
|
+
action: () => {
|
|
161
|
+
return editor.chain().focus().toggleCodeBlock().run();
|
|
162
|
+
},
|
|
163
|
+
isActive: () => {
|
|
164
|
+
return editor.isActive("codeBlock");
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
hr: {
|
|
168
|
+
icon: FontAwesomeIcon,
|
|
169
|
+
iconProp: faMinus,
|
|
170
|
+
title: t("Horizontal Rule"),
|
|
171
|
+
action: () => {
|
|
172
|
+
return editor.chain().focus().setHorizontalRule().run();
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"line-break": {
|
|
176
|
+
icon: FontAwesomeIcon,
|
|
177
|
+
iconProp: faFileDashedLine,
|
|
178
|
+
title: t("Line Break"),
|
|
179
|
+
action: () => {
|
|
180
|
+
return editor.chain().focus().setHardBreak().run();
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"align-left": {
|
|
184
|
+
icon: FontAwesomeIcon,
|
|
185
|
+
iconProp: faAlignLeft,
|
|
186
|
+
title: t("Align Left"),
|
|
187
|
+
action: () => {
|
|
188
|
+
return editor.chain().focus().setTextAlign("left").run();
|
|
189
|
+
},
|
|
190
|
+
isActive: () => {
|
|
191
|
+
return editor.isActive({ textAlign: "left" });
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
"align-center": {
|
|
195
|
+
icon: FontAwesomeIcon,
|
|
196
|
+
iconProp: faAlignCenter,
|
|
197
|
+
title: t("Align Center"),
|
|
198
|
+
action: () => {
|
|
199
|
+
return editor.chain().focus().setTextAlign("center").run();
|
|
200
|
+
},
|
|
201
|
+
isActive: () => {
|
|
202
|
+
return editor.isActive({ textAlign: "center" });
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"align-right": {
|
|
206
|
+
icon: FontAwesomeIcon,
|
|
207
|
+
iconProp: faAlignRight,
|
|
208
|
+
title: t("Align Right"),
|
|
209
|
+
action: () => {
|
|
210
|
+
return editor.chain().focus().setTextAlign("right").run();
|
|
211
|
+
},
|
|
212
|
+
isActive: () => {
|
|
213
|
+
return editor.isActive({ textAlign: "right" });
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"align-justify": {
|
|
217
|
+
icon: FontAwesomeIcon,
|
|
218
|
+
iconProp: faAlignJustify,
|
|
219
|
+
title: t("Justify"),
|
|
220
|
+
action: () => {
|
|
221
|
+
return editor.chain().focus().setTextAlign("justify").run();
|
|
222
|
+
},
|
|
223
|
+
isActive: () => {
|
|
224
|
+
return editor.isActive({ textAlign: "justify" });
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
"clear-format": {
|
|
228
|
+
icon: FontAwesomeIcon,
|
|
229
|
+
iconProp: faTextSlash,
|
|
230
|
+
title: t("Clear Format"),
|
|
231
|
+
action: () => {
|
|
232
|
+
return editor.chain().focus().clearNodes().unsetAllMarks().run();
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
undo: {
|
|
236
|
+
icon: FontAwesomeIcon,
|
|
237
|
+
iconProp: faArrowRotateLeft,
|
|
238
|
+
title: t("Undo"),
|
|
239
|
+
action: () => {
|
|
240
|
+
return editor.chain().focus().undo().run();
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
redo: {
|
|
244
|
+
icon: FontAwesomeIcon,
|
|
245
|
+
iconProp: faArrowRotateRight,
|
|
246
|
+
title: t("Redo"),
|
|
247
|
+
action: () => {
|
|
248
|
+
return editor.chain().focus().redo().run();
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
link: {
|
|
252
|
+
title: t("Link"),
|
|
253
|
+
isActive: () => {
|
|
254
|
+
return editor.isActive("link");
|
|
255
|
+
},
|
|
256
|
+
isDropdown: true
|
|
257
|
+
},
|
|
258
|
+
table: {
|
|
259
|
+
icon: FontAwesomeIcon,
|
|
260
|
+
iconProp: faTable,
|
|
261
|
+
title: t("Insert Table"),
|
|
262
|
+
action: () => {
|
|
263
|
+
return editor.chain().focus().insertTable({
|
|
264
|
+
rows: 3,
|
|
265
|
+
cols: 3,
|
|
266
|
+
withHeaderRow: true
|
|
267
|
+
}).run();
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
variableTag: {
|
|
271
|
+
title: t("Insert Variable"),
|
|
272
|
+
isActive: () => {
|
|
273
|
+
return editor.isActive("variableTag");
|
|
274
|
+
},
|
|
275
|
+
isDropdown: true
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
[
|
|
279
|
+
1,
|
|
280
|
+
2,
|
|
281
|
+
3,
|
|
282
|
+
4,
|
|
283
|
+
5,
|
|
284
|
+
6
|
|
285
|
+
].forEach((level) => {
|
|
286
|
+
buttonConfig[`h${level}`] = {
|
|
287
|
+
icon: FontAwesomeIcon,
|
|
288
|
+
iconProp: {
|
|
289
|
+
1: faH1,
|
|
290
|
+
2: faH2,
|
|
291
|
+
3: faH3,
|
|
292
|
+
4: faH4,
|
|
293
|
+
5: faH5,
|
|
294
|
+
6: faH6
|
|
295
|
+
}[level],
|
|
296
|
+
title: t("Heading {level}", { level: String(level) }),
|
|
297
|
+
action: () => {
|
|
298
|
+
return editor.chain().focus().toggleHeading({ level }).run();
|
|
299
|
+
},
|
|
300
|
+
isActive: () => {
|
|
301
|
+
return editor.isActive("heading", { level });
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
});
|
|
305
|
+
const resolveIsActive = (config) => {
|
|
306
|
+
if (!config.isActive) return false;
|
|
307
|
+
return typeof config.isActive === "function" ? config.isActive() : config.isActive;
|
|
308
|
+
};
|
|
309
|
+
const renderedButtons = visibleButtons.map((buttonName) => {
|
|
310
|
+
const config = buttonConfig[buttonName];
|
|
311
|
+
if (!config) return null;
|
|
312
|
+
if (config.isDropdown && buttonName === "link") return /* @__PURE__ */ jsx(LinkDropdown, {
|
|
313
|
+
editor,
|
|
314
|
+
linkOptions,
|
|
315
|
+
linkSelectorStorageKeyPrefix,
|
|
316
|
+
openInsertLinkDialog,
|
|
317
|
+
title: config.title
|
|
318
|
+
}, buttonName);
|
|
319
|
+
if (config.isDropdown && buttonName === "variableTag") return /* @__PURE__ */ jsx(VariableDropdown, {
|
|
320
|
+
editor,
|
|
321
|
+
variableCategories,
|
|
322
|
+
variableCategoryLabels,
|
|
323
|
+
variableCategoryOrder,
|
|
324
|
+
title: config.title,
|
|
325
|
+
open: variablePickerOpen,
|
|
326
|
+
onOpenChange: onVariablePickerOpenChange
|
|
327
|
+
}, buttonName);
|
|
328
|
+
const Icon = config.icon;
|
|
329
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(Button, {
|
|
330
|
+
variant: "transparent",
|
|
331
|
+
onClick: config.action,
|
|
332
|
+
className: cn("w-[32px] h-[32px]", "text-[#1c2e36]", "hover:bg-slate-100!", resolveIsActive(config) && "bg-slate-250! hover:bg-slate-250!"),
|
|
333
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
334
|
+
icon: config.iconProp,
|
|
335
|
+
className: "size-4"
|
|
336
|
+
})
|
|
337
|
+
}) }), /* @__PURE__ */ jsx(TooltipContent, {
|
|
338
|
+
sideOffset: 4,
|
|
339
|
+
children: config.title
|
|
340
|
+
})] }, buttonName);
|
|
341
|
+
}).filter(Boolean);
|
|
342
|
+
if (renderedButtons.length === 0) return null;
|
|
343
|
+
return /* @__PURE__ */ jsx("div", {
|
|
344
|
+
className: cn("flex flex-wrap relative z-10 gap-1 px-[8px] py-[4px]", "border-b border-[rgba(96,125,159,0.4)] bg-white", "shadow-[0_2px_3px_rgba(49,49,93,.07)]"),
|
|
345
|
+
children: renderedButtons
|
|
346
|
+
});
|
|
347
|
+
};
|
|
348
|
+
var TiptapEditor = ({ value = "", onChange, buttons = ["bold", "italic"], tableOptions = [], linkOptions, linkSelectorStorageKeyPrefix, variableCategories = {}, variableCategoryLabels, variableCategoryOrder, variableTransformerRegistry, variablePickerTriggerCharacters = ["@"], toolbarContent, rows, className, isInvalid, disabled = false, readOnly = false, invalidContentMessage, ...props }) => {
|
|
349
|
+
useTranslation();
|
|
350
|
+
const wrapperRef = useRef(null);
|
|
351
|
+
const handleKeyDownRef = useRef(null);
|
|
352
|
+
const extensions = useMemo(() => {
|
|
353
|
+
return createTiptapExtensions({ trailingCursorText: "" });
|
|
354
|
+
}, []);
|
|
355
|
+
const [isVariablePickerOpen, setIsVariablePickerOpen] = useState(false);
|
|
356
|
+
const hasAnyVariables = useMemo(() => {
|
|
357
|
+
return Object.values(variableCategories || {}).some((variables) => {
|
|
358
|
+
return Array.isArray(variables) && variables.length > 0;
|
|
359
|
+
});
|
|
360
|
+
}, [variableCategories]);
|
|
361
|
+
const editorContent = useMemo(() => {
|
|
362
|
+
return valueToContent(value, { trailingCursorText: "" });
|
|
363
|
+
}, [value]);
|
|
364
|
+
const contentError = useMemo(() => {
|
|
365
|
+
const detectedError = getFatalTiptapContentError(value);
|
|
366
|
+
return detectedError ? invalidContentMessage || detectedError : "";
|
|
367
|
+
}, [invalidContentMessage, value]);
|
|
368
|
+
const serializeContent = (content) => {
|
|
369
|
+
return normalizeContentArray(content);
|
|
370
|
+
};
|
|
371
|
+
const editor = useEditor({
|
|
372
|
+
extensions,
|
|
373
|
+
content: contentError ? null : editorContent,
|
|
374
|
+
editable: !disabled && !readOnly,
|
|
375
|
+
editorProps: { handleKeyDown: (view, event) => {
|
|
376
|
+
return handleKeyDownRef.current?.(view, event) ?? false;
|
|
377
|
+
} },
|
|
378
|
+
onUpdate: ({ editor }) => {
|
|
379
|
+
if (onChange) onChange(serializeContent(editor.getJSON().content));
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
const inlinePicker = useInlineVariablePicker(editor, {
|
|
383
|
+
variableCategories,
|
|
384
|
+
variableCategoryLabels,
|
|
385
|
+
variableCategoryOrder,
|
|
386
|
+
variablePickerTriggerCharacters,
|
|
387
|
+
disabled,
|
|
388
|
+
readOnly,
|
|
389
|
+
wrapperRef,
|
|
390
|
+
onOpenDropdown: () => {
|
|
391
|
+
return setIsVariablePickerOpen(true);
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
useEffect(() => {
|
|
395
|
+
handleKeyDownRef.current = inlinePicker.handleKeyDown;
|
|
396
|
+
}, [inlinePicker.handleKeyDown]);
|
|
397
|
+
const [insertLinkDialogOpen, setInsertLinkDialogOpen] = useState(false);
|
|
398
|
+
const [insertLinkInitialValues, setInsertLinkInitialValues] = useState();
|
|
399
|
+
const editorMinHeight = useMemo(() => {
|
|
400
|
+
return `${Math.max(1, Number(rows || 0)) * 24 + 32}px`;
|
|
401
|
+
}, [rows]);
|
|
402
|
+
useEffect(() => {
|
|
403
|
+
if (!editor?.view?.dom) return;
|
|
404
|
+
editor.view.dom.style.minHeight = editorMinHeight;
|
|
405
|
+
}, [editor, editorMinHeight]);
|
|
406
|
+
const openInsertLinkDialog = useCallback((initial) => {
|
|
407
|
+
if (initial) {
|
|
408
|
+
const openInNewTab = editor?.isActive("link") ? editor.getAttributes("link").target === "_blank" : false;
|
|
409
|
+
setInsertLinkInitialValues({
|
|
410
|
+
...initial,
|
|
411
|
+
openInNewTab
|
|
412
|
+
});
|
|
413
|
+
} else setInsertLinkInitialValues(void 0);
|
|
414
|
+
setInsertLinkDialogOpen(true);
|
|
415
|
+
}, [editor]);
|
|
416
|
+
const insertLink = useCallback((params) => {
|
|
417
|
+
if (!editor) return;
|
|
418
|
+
const { url, text, openInNewTab, from: fromParam, to: toParam } = params;
|
|
419
|
+
const chain = editor.chain().focus();
|
|
420
|
+
const linkAttrs = { href: url };
|
|
421
|
+
if (openInNewTab) linkAttrs.target = "_blank";
|
|
422
|
+
const content = {
|
|
423
|
+
type: "text",
|
|
424
|
+
text: text.trim() || url,
|
|
425
|
+
marks: [{
|
|
426
|
+
type: "link",
|
|
427
|
+
attrs: linkAttrs
|
|
428
|
+
}]
|
|
429
|
+
};
|
|
430
|
+
if (typeof fromParam === "number" && typeof toParam === "number" && fromParam !== toParam) chain.insertContentAt({
|
|
431
|
+
from: fromParam,
|
|
432
|
+
to: toParam
|
|
433
|
+
}, [content]).run();
|
|
434
|
+
else {
|
|
435
|
+
const { from, to } = editor.state.selection;
|
|
436
|
+
if (editor.state.doc.textBetween(from, to, " ")) chain.extendMarkRange("link").setLink(linkAttrs).run();
|
|
437
|
+
else chain.insertContent([content]).run();
|
|
438
|
+
}
|
|
439
|
+
}, [editor]);
|
|
440
|
+
useEffect(() => {
|
|
441
|
+
if (editor) {
|
|
442
|
+
const newContent = contentError ? null : editorContent;
|
|
443
|
+
const currentContent = editor.getJSON();
|
|
444
|
+
if (JSON.stringify(newContent) !== JSON.stringify(currentContent)) editor.commands.setContent(newContent);
|
|
445
|
+
}
|
|
446
|
+
}, [
|
|
447
|
+
contentError,
|
|
448
|
+
editor,
|
|
449
|
+
editorContent
|
|
450
|
+
]);
|
|
451
|
+
const handleLinkBubbleEdit = useCallback(() => {
|
|
452
|
+
if (!editor) return;
|
|
453
|
+
const { href } = editor.getAttributes("link");
|
|
454
|
+
const { state } = editor;
|
|
455
|
+
const linkType = state.schema.marks.link;
|
|
456
|
+
const range = getMarkRange(state.selection.$from, linkType);
|
|
457
|
+
const from = range?.from ?? state.selection.from;
|
|
458
|
+
const to = range?.to ?? state.selection.to;
|
|
459
|
+
openInsertLinkDialog({
|
|
460
|
+
url: href,
|
|
461
|
+
text: editor.state.doc.textBetween(from, to, " "),
|
|
462
|
+
from,
|
|
463
|
+
to
|
|
464
|
+
});
|
|
465
|
+
}, [editor, openInsertLinkDialog]);
|
|
466
|
+
return /* @__PURE__ */ jsx("div", {
|
|
467
|
+
className: cn("border border-[rgba(96,125,159,0.4)] rounded-sm overflow-hidden", isInvalid && ["border-rose-600!", "[focus-visible:shadow-[0_0_0_1px_var(--color-rose-600),0_0_4px_0_hsl(from_var(--color-rose-600)_h_s_l/0.7)]!"], className),
|
|
468
|
+
children: /* @__PURE__ */ jsxs(VariablePickerProvider, {
|
|
469
|
+
variableCategories,
|
|
470
|
+
variableCategoryLabels,
|
|
471
|
+
variableCategoryOrder,
|
|
472
|
+
variableTransformerRegistry,
|
|
473
|
+
children: [/* @__PURE__ */ jsxs(EditorContext.Provider, {
|
|
474
|
+
value: { editor },
|
|
475
|
+
children: [
|
|
476
|
+
toolbarContent ? toolbarContent({
|
|
477
|
+
editor,
|
|
478
|
+
variableCategories,
|
|
479
|
+
variableCategoryLabels,
|
|
480
|
+
variableCategoryOrder,
|
|
481
|
+
variablePickerOpen: isVariablePickerOpen,
|
|
482
|
+
onVariablePickerOpenChange: setIsVariablePickerOpen
|
|
483
|
+
}) : /* @__PURE__ */ jsx(MenuBar, {
|
|
484
|
+
editor,
|
|
485
|
+
buttons,
|
|
486
|
+
tableOptions,
|
|
487
|
+
linkOptions,
|
|
488
|
+
linkSelectorStorageKeyPrefix,
|
|
489
|
+
variableCategories,
|
|
490
|
+
variableCategoryLabels,
|
|
491
|
+
variableCategoryOrder,
|
|
492
|
+
variablePickerOpen: isVariablePickerOpen,
|
|
493
|
+
onVariablePickerOpenChange: setIsVariablePickerOpen,
|
|
494
|
+
openInsertLinkDialog
|
|
495
|
+
}),
|
|
496
|
+
/* @__PURE__ */ jsxs("div", {
|
|
497
|
+
ref: wrapperRef,
|
|
498
|
+
className: "relative",
|
|
499
|
+
children: [
|
|
500
|
+
contentError && /* @__PURE__ */ jsxs("div", {
|
|
501
|
+
className: "flex items-start gap-2 border-b border-rose-200 bg-rose-50 px-4 py-2 text-sm text-rose-800",
|
|
502
|
+
children: [/* @__PURE__ */ jsx(FontAwesomeIcon, {
|
|
503
|
+
icon: faTriangleExclamation,
|
|
504
|
+
className: "mt-0.5 size-3.5 shrink-0"
|
|
505
|
+
}), /* @__PURE__ */ jsx("p", { children: contentError })]
|
|
506
|
+
}),
|
|
507
|
+
/* @__PURE__ */ jsx(EditorContent, {
|
|
508
|
+
editor,
|
|
509
|
+
className: cn("[&_.ProseMirror]:outline-none", "[&_.ProseMirror]:min-h-8", "[&_.ProseMirror]:p-4", "[&_.ProseMirror]:bg-[#fbfcfe]", "[&_.ProseMirror]:shadow-none", "[&_.ProseMirror]:whitespace-pre-wrap", "[&_.ProseMirror_p]:m-0 [&_.ProseMirror_p]:mb-2", "[&_.ProseMirror_p:last-child]:mb-0", "[&_.ProseMirror_h1]:text-xl [&_.ProseMirror_h1]:font-bold [&_.ProseMirror_h1]:mb-2", "[&_.ProseMirror_h2]:text-lg [&_.ProseMirror_h2]:font-semibold [&_.ProseMirror_h2]:mb-2", "[&_.ProseMirror_ul]:list-disc [&_.ProseMirror_ul]:pl-5 [&_.ProseMirror_ul]:mb-2", "[&_.ProseMirror_ol]:list-decimal [&_.ProseMirror_ol]:pl-5 [&_.ProseMirror_ol]:mb-2", "[&_.ProseMirror_li]:mb-1", "[&_.ProseMirror_hr]:border-slate-300 [&_.ProseMirror_hr]:my-4", "[&_.ProseMirror_code]:bg-slate-100 [&_.ProseMirror_code]:px-1 [&_.ProseMirror_code]:py-0.5 [&_.ProseMirror_code]:rounded [&_.ProseMirror_code]:text-sm", "[&_.ProseMirror_pre]:bg-slate-100 [&_.ProseMirror_pre]:p-3 [&_.ProseMirror_pre]:rounded [&_.ProseMirror_pre]:overflow-x-auto [&_.ProseMirror_pre]:mb-2", "[&_.ProseMirror_blockquote]:border-l-4 [&_.ProseMirror_blockquote]:border-slate-300 [&_.ProseMirror_blockquote]:pl-4 [&_.ProseMirror_blockquote]:italic [&_.ProseMirror_blockquote]:text-slate-600 [&_.ProseMirror_blockquote]:mb-2", "[&_.ProseMirror_table]:border-collapse [&_.ProseMirror_table]:w-full [&_.ProseMirror_table]:mb-2", "[&_.ProseMirror_th]:border [&_.ProseMirror_th]:border-slate-300 [&_.ProseMirror_th]:px-3 [&_.ProseMirror_th]:py-2 [&_.ProseMirror_th]:bg-slate-100 [&_.ProseMirror_th]:text-left", "[&_.ProseMirror_td]:border [&_.ProseMirror_td]:border-slate-300 [&_.ProseMirror_td]:px-3 [&_.ProseMirror_td]:py-2", "[&_.ProseMirror_a]:text-blue-600 [&_.ProseMirror_a]:underline [&_.ProseMirror_a]:cursor-pointer"),
|
|
510
|
+
...props
|
|
511
|
+
}),
|
|
512
|
+
hasAnyVariables && !readOnly && /* @__PURE__ */ jsx(InlineVariablePickerPopover, {
|
|
513
|
+
open: inlinePicker.state.open,
|
|
514
|
+
onOpenChange: (open) => {
|
|
515
|
+
if (!open) inlinePicker.closePicker();
|
|
516
|
+
},
|
|
517
|
+
position: {
|
|
518
|
+
top: inlinePicker.state.top,
|
|
519
|
+
left: inlinePicker.state.left
|
|
520
|
+
},
|
|
521
|
+
isChildMode: inlinePicker.filteredVariables.isChildMode,
|
|
522
|
+
query: inlinePicker.state.query,
|
|
523
|
+
onQueryChange: inlinePicker.setQuery,
|
|
524
|
+
filteredVariables: inlinePicker.filteredVariables,
|
|
525
|
+
onSelect: inlinePicker.handleSelect,
|
|
526
|
+
onBack: inlinePicker.goBack
|
|
527
|
+
})
|
|
528
|
+
]
|
|
529
|
+
}),
|
|
530
|
+
buttons.includes("link") && editor && /* @__PURE__ */ jsx(LinkBubbleMenu, {
|
|
531
|
+
editor,
|
|
532
|
+
onEdit: handleLinkBubbleEdit,
|
|
533
|
+
dialogOpen: insertLinkDialogOpen
|
|
534
|
+
})
|
|
535
|
+
]
|
|
536
|
+
}), /* @__PURE__ */ jsx(InsertLinkDialog, {
|
|
537
|
+
open: insertLinkDialogOpen,
|
|
538
|
+
onOpenChange: setInsertLinkDialogOpen,
|
|
539
|
+
initialValues: insertLinkInitialValues,
|
|
540
|
+
onInsert: (values) => {
|
|
541
|
+
insertLink({
|
|
542
|
+
...values,
|
|
543
|
+
from: insertLinkInitialValues?.from,
|
|
544
|
+
to: insertLinkInitialValues?.to
|
|
545
|
+
});
|
|
546
|
+
setInsertLinkDialogOpen(false);
|
|
547
|
+
}
|
|
548
|
+
})]
|
|
549
|
+
})
|
|
550
|
+
});
|
|
551
|
+
};
|
|
552
|
+
//#endregion
|
|
553
|
+
export { TiptapEditor };
|
|
554
|
+
|
|
555
|
+
//# sourceMappingURL=TiptapEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TiptapEditor.js","names":[],"sources":["../../src/components/TiptapEditor.tsx"],"sourcesContent":["import {\n useEffect, useCallback, useMemo, useRef, useState,\n} from 'react';\nimport type { ReactNode } from 'react';\nimport { useEditor, EditorContent, EditorContext } from '@tiptap/react';\nimport { getMarkRange, type Editor as TiptapEditorInstance } from '@tiptap/core';\n\nimport { Button } from '@verbb/plugin-kit-react/components';\nimport { LinkDropdown } from './tiptap/LinkDropdown';\nimport type { LinkOptions, LinkOptionsInput } from './tiptap/LinkDropdown';\nimport { VariableDropdown } from './tiptap/VariableDropdown';\nimport type { VariableOption, VariableCategories } from './tiptap/VariableDropdown';\nimport type { VariableTransformerRegistry } from './tiptap/VariablePickerContext';\nimport { VariablePickerProvider } from './tiptap/VariablePickerContext';\nimport { InlineVariablePickerPopover } from './tiptap/InlineVariablePickerPopover';\nimport { useInlineVariablePicker } from './tiptap/useInlineVariablePicker';\n\nexport type {\n LinkOptions, LinkOptionsInput, VariableOption, VariableCategories,\n};\nimport { LinkBubbleMenu } from './tiptap/LinkBubbleMenu';\nimport { InsertLinkDialog } from './tiptap/InsertLinkDialog';\n\nimport {\n createTiptapExtensions,\n getFatalTiptapContentError,\n normalizeContentArray,\n valueToContent,\n} from './tiptap/editorConfig';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport {\n faAlignCenter,\n faAlignJustify,\n faAlignLeft,\n faAlignRight,\n faArrowRotateLeft,\n faArrowRotateRight,\n faBold,\n faBracketsCurly,\n faCode,\n faH1,\n faH2,\n faH3,\n faH4,\n faH5,\n faH6,\n faHighlighter,\n faItalic,\n faListOl,\n faListUl,\n faMinus,\n faQuoteRight,\n faStrikethrough,\n faSubscript,\n faSuperscript,\n faTriangleExclamation,\n\n faUnderline,\n faTextSlash,\n} from '@fortawesome/pro-solid-svg-icons';\n\nimport {\n faFileDashedLine,\n faTable,\n} from '@fortawesome/pro-regular-svg-icons';\n\nimport { cn } from '@verbb/plugin-kit-react/utils';\nimport { useTranslation } from '@verbb/plugin-kit-react/hooks';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@verbb/plugin-kit-react/components/Tooltip';\n\nconst MenuBar = ({\n editor,\n buttons = ['bold', 'italic'],\n linkOptions,\n linkSelectorStorageKeyPrefix,\n variableCategories = {},\n variableCategoryLabels,\n variableCategoryOrder,\n variablePickerOpen,\n onVariablePickerOpenChange,\n openInsertLinkDialog,\n}: {\n editor: TiptapEditorInstance | null | undefined;\n buttons?: string[];\n linkOptions?: LinkOptionsInput;\n linkSelectorStorageKeyPrefix?: string;\n variableCategories?: VariableCategories;\n variableCategoryLabels?: Record<string, string>;\n variableCategoryOrder?: string[];\n variablePickerOpen?: boolean;\n onVariablePickerOpenChange?: (open: boolean) => void;\n openInsertLinkDialog?: (initial?: { url?: string; text?: string; from?: number; to?: number }) => void;\n}) => {\n const t = useTranslation();\n\n if (!editor) {\n return null;\n }\n\n const hasAnyVariables = Object.values(variableCategories ?? {}).some(\n items => {\n return Array.isArray(items) && items.length > 0;\n },\n );\n\n const visibleButtons = buttons.filter((buttonName) => {\n if (buttonName === 'variableTag') {\n return hasAnyVariables;\n }\n\n return true;\n });\n\n const buttonConfig = {\n bold: {\n icon: FontAwesomeIcon,\n iconProp: faBold,\n title: t('Bold'),\n action: () => { return editor.chain().focus().toggleBold().run(); },\n isActive: () => { return editor.isActive('bold'); },\n },\n italic: {\n icon: FontAwesomeIcon,\n iconProp: faItalic,\n title: t('Italic'),\n action: () => { return editor.chain().focus().toggleItalic().run(); },\n isActive: () => { return editor.isActive('italic'); },\n },\n underline: {\n icon: FontAwesomeIcon,\n iconProp: faUnderline,\n title: t('Underline'),\n action: () => { return editor.chain().focus().toggleUnderline().run(); },\n isActive: () => { return editor.isActive('underline'); },\n },\n strikethrough: {\n icon: FontAwesomeIcon,\n iconProp: faStrikethrough,\n title: t('Strikethrough'),\n action: () => { return editor.chain().focus().toggleStrike().run(); },\n isActive: () => { return editor.isActive('strike'); },\n },\n subscript: {\n icon: FontAwesomeIcon,\n iconProp: faSubscript,\n title: t('Subscript'),\n action: () => { return editor.chain().focus().toggleSubscript().run(); },\n isActive: () => { return editor.isActive('subscript'); },\n },\n superscript: {\n icon: FontAwesomeIcon,\n iconProp: faSuperscript,\n title: t('Superscript'),\n action: () => { return editor.chain().focus().toggleSuperscript().run(); },\n isActive: () => { return editor.isActive('superscript'); },\n },\n 'unordered-list': {\n icon: FontAwesomeIcon,\n iconProp: faListUl,\n title: t('Bullet List'),\n action: () => { return editor.chain().focus().toggleBulletList().run(); },\n isActive: () => { return editor.isActive('bulletList'); },\n },\n 'ordered-list': {\n icon: FontAwesomeIcon,\n iconProp: faListOl,\n title: t('Ordered List'),\n action: () => { return editor.chain().focus().toggleOrderedList().run(); },\n isActive: () => { return editor.isActive('orderedList'); },\n },\n blockquote: {\n icon: FontAwesomeIcon,\n iconProp: faQuoteRight,\n title: t('Blockquote'),\n action: () => { return editor.chain().focus().toggleBlockquote().run(); },\n isActive: () => { return editor.isActive('blockquote'); },\n },\n highlight: {\n icon: FontAwesomeIcon,\n iconProp: faHighlighter,\n title: t('Highlight'),\n action: () => { return editor.chain().focus().toggleHighlight().run(); },\n isActive: () => { return editor.isActive('highlight'); },\n },\n code: {\n icon: FontAwesomeIcon,\n iconProp: faBracketsCurly,\n title: t('Inline Code'),\n action: () => { return editor.chain().focus().toggleCode().run(); },\n isActive: () => { return editor.isActive('code'); },\n },\n 'code-block': {\n icon: FontAwesomeIcon,\n iconProp: faCode,\n title: t('Code Block'),\n action: () => { return editor.chain().focus().toggleCodeBlock().run(); },\n isActive: () => { return editor.isActive('codeBlock'); },\n },\n hr: {\n icon: FontAwesomeIcon,\n iconProp: faMinus,\n title: t('Horizontal Rule'),\n action: () => { return editor.chain().focus().setHorizontalRule().run(); },\n },\n 'line-break': {\n icon: FontAwesomeIcon,\n iconProp: faFileDashedLine,\n title: t('Line Break'),\n action: () => { return editor.chain().focus().setHardBreak().run(); },\n },\n 'align-left': {\n icon: FontAwesomeIcon,\n iconProp: faAlignLeft,\n title: t('Align Left'),\n action: () => { return editor.chain().focus().setTextAlign('left').run(); },\n isActive: () => { return editor.isActive({ textAlign: 'left' }); },\n },\n 'align-center': {\n icon: FontAwesomeIcon,\n iconProp: faAlignCenter,\n title: t('Align Center'),\n action: () => { return editor.chain().focus().setTextAlign('center').run(); },\n isActive: () => { return editor.isActive({ textAlign: 'center' }); },\n },\n 'align-right': {\n icon: FontAwesomeIcon,\n iconProp: faAlignRight,\n title: t('Align Right'),\n action: () => { return editor.chain().focus().setTextAlign('right').run(); },\n isActive: () => { return editor.isActive({ textAlign: 'right' }); },\n },\n 'align-justify': {\n icon: FontAwesomeIcon,\n iconProp: faAlignJustify,\n title: t('Justify'),\n action: () => { return editor.chain().focus().setTextAlign('justify').run(); },\n isActive: () => { return editor.isActive({ textAlign: 'justify' }); },\n },\n 'clear-format': {\n icon: FontAwesomeIcon,\n iconProp: faTextSlash,\n title: t('Clear Format'),\n action: () => { return editor.chain().focus().clearNodes().unsetAllMarks().run(); },\n },\n undo: {\n icon: FontAwesomeIcon,\n iconProp: faArrowRotateLeft,\n title: t('Undo'),\n action: () => { return editor.chain().focus().undo().run(); },\n },\n redo: {\n icon: FontAwesomeIcon,\n iconProp: faArrowRotateRight,\n title: t('Redo'),\n action: () => { return editor.chain().focus().redo().run(); },\n },\n link: {\n title: t('Link'),\n isActive: () => { return editor.isActive('link'); },\n isDropdown: true,\n },\n table: {\n icon: FontAwesomeIcon,\n iconProp: faTable,\n title: t('Insert Table'),\n action: () => { return editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run(); },\n },\n variableTag: {\n title: t('Insert Variable'),\n isActive: () => { return editor.isActive('variableTag'); },\n isDropdown: true,\n },\n };\n\n // Add heading levels h1–h6\n [1, 2, 3, 4, 5, 6].forEach((level) => {\n buttonConfig[`h${level}`] = {\n icon: FontAwesomeIcon,\n iconProp: {\n 1: faH1,\n 2: faH2,\n 3: faH3,\n 4: faH4,\n 5: faH5,\n 6: faH6,\n }[level],\n title: t('Heading {level}', { level: String(level) }),\n action: () => { return editor.chain().focus().toggleHeading({ level }).run(); },\n isActive: () => { return editor.isActive('heading', { level }); },\n };\n });\n\n const resolveIsActive = (config) => {\n if (!config.isActive) {\n return false;\n }\n return typeof config.isActive === 'function' ? config.isActive() : config.isActive;\n };\n\n const renderedButtons = visibleButtons\n .map((buttonName) => {\n const config = buttonConfig[buttonName];\n\n if (!config) { return null; }\n\n if (config.isDropdown && buttonName === 'link') {\n return (\n <LinkDropdown\n key={buttonName}\n editor={editor}\n linkOptions={linkOptions}\n linkSelectorStorageKeyPrefix={linkSelectorStorageKeyPrefix}\n openInsertLinkDialog={openInsertLinkDialog!}\n title={config.title}\n />\n );\n }\n\n if (config.isDropdown && buttonName === 'variableTag') {\n return (\n <VariableDropdown\n key={buttonName}\n editor={editor}\n variableCategories={variableCategories}\n variableCategoryLabels={variableCategoryLabels}\n variableCategoryOrder={variableCategoryOrder}\n title={config.title}\n open={variablePickerOpen}\n onOpenChange={onVariablePickerOpenChange}\n />\n );\n }\n\n const Icon = config.icon;\n\n return (\n <Tooltip key={buttonName}>\n <TooltipTrigger\n render={\n <Button\n variant=\"transparent\"\n onClick={config.action}\n className={cn(\n 'w-[32px] h-[32px]',\n 'text-[#1c2e36]',\n 'hover:bg-slate-100!',\n resolveIsActive(config) && 'bg-slate-250! hover:bg-slate-250!',\n )}\n >\n <Icon icon={config.iconProp} className=\"size-4\" />\n </Button>\n }\n />\n <TooltipContent sideOffset={4}>{config.title}</TooltipContent>\n </Tooltip>\n );\n })\n .filter(Boolean);\n\n if (renderedButtons.length === 0) {\n return null;\n }\n\n return (\n <div className={cn(\n 'flex flex-wrap relative z-10 gap-1 px-[8px] py-[4px]',\n 'border-b border-[rgba(96,125,159,0.4)] bg-white',\n 'shadow-[0_2px_3px_rgba(49,49,93,.07)]',\n )}>\n {renderedButtons}\n </div>\n );\n};\n\ntype TiptapEditorProps = {\n value?: unknown;\n onChange?: (value: unknown) => void;\n placeholder?: string;\n buttons?: string[];\n tableOptions?: Array<{ rows?: number; cols?: number; withHeaderRow?: boolean }>;\n linkOptions?: LinkOptionsInput;\n linkSelectorStorageKeyPrefix?: string;\n variableCategories?: VariableCategories;\n variableCategoryLabels?: Record<string, string>;\n variableCategoryOrder?: string[];\n variableTransformerRegistry?: VariableTransformerRegistry;\n variablePickerTriggerCharacters?: string[];\n toolbarContent?: (params: {\n editor: TiptapEditorInstance | null;\n variableCategories: VariableCategories;\n variableCategoryLabels?: Record<string, string>;\n variableCategoryOrder?: string[];\n variablePickerOpen: boolean;\n onVariablePickerOpenChange: (open: boolean) => void;\n }) => ReactNode;\n rows?: number;\n className?: string;\n isInvalid?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n invalidContentMessage?: string;\n [key: string]: unknown;\n};\n\nexport const TiptapEditor = ({\n value = '',\n onChange,\n buttons = ['bold', 'italic'],\n tableOptions = [],\n linkOptions,\n linkSelectorStorageKeyPrefix,\n variableCategories = {},\n variableCategoryLabels,\n variableCategoryOrder,\n variableTransformerRegistry,\n variablePickerTriggerCharacters = ['@'],\n toolbarContent,\n rows,\n className,\n isInvalid,\n disabled = false,\n readOnly = false,\n invalidContentMessage,\n ...props\n}: TiptapEditorProps) => {\n // Ensure value is a string and handle null/undefined\n // const safeValue = value || '';\n const t = useTranslation();\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const handleKeyDownRef = useRef<import('./tiptap/useInlineVariablePicker').InlineVariablePickerHandleKeyDown | null>(null);\n\n const extensions = useMemo(() => {\n return createTiptapExtensions({ trailingCursorText: '\\u2060' });\n }, []);\n const [isVariablePickerOpen, setIsVariablePickerOpen] = useState(false);\n const hasAnyVariables = useMemo(() => {\n return Object.values(variableCategories || {}).some((variables) => {\n return Array.isArray(variables) && variables.length > 0;\n });\n }, [variableCategories]);\n const editorContent = useMemo(() => {\n return valueToContent(value, { trailingCursorText: '\\u2060' });\n }, [value]);\n const contentError = useMemo(() => {\n const detectedError = getFatalTiptapContentError(value);\n return detectedError ? (invalidContentMessage || detectedError) : '';\n }, [invalidContentMessage, value]);\n\n const serializeContent = (content: unknown) => {\n return normalizeContentArray(content);\n };\n\n const editor = useEditor({\n extensions,\n content: contentError ? null : editorContent,\n editable: !disabled && !readOnly,\n editorProps: {\n handleKeyDown: (view, event) => {\n return handleKeyDownRef.current?.(view, event) ?? false;\n },\n },\n onUpdate: ({ editor }) => {\n if (onChange) {\n onChange(serializeContent(editor.getJSON().content));\n }\n },\n });\n\n const inlinePicker = useInlineVariablePicker(editor, {\n variableCategories,\n variableCategoryLabels,\n variableCategoryOrder,\n variablePickerTriggerCharacters,\n disabled,\n readOnly,\n wrapperRef,\n onOpenDropdown: () => {\n return setIsVariablePickerOpen(true);\n },\n });\n\n useEffect(() => {\n handleKeyDownRef.current = inlinePicker.handleKeyDown;\n }, [inlinePicker.handleKeyDown]);\n\n const [insertLinkDialogOpen, setInsertLinkDialogOpen] = useState(false);\n const [insertLinkInitialValues, setInsertLinkInitialValues] = useState<{ url?: string; text?: string; openInNewTab?: boolean; from?: number; to?: number } | undefined>();\n const editorMinHeight = useMemo(() => {\n const normalizedRows = Math.max(1, Number(rows || 0));\n const lineHeight = 24;\n const verticalPadding = 32;\n\n return `${(normalizedRows * lineHeight) + verticalPadding}px`;\n }, [rows]);\n\n useEffect(() => {\n if (!editor?.view?.dom) {\n return;\n }\n\n editor.view.dom.style.minHeight = editorMinHeight;\n }, [editor, editorMinHeight]);\n\n const openInsertLinkDialog = useCallback((initial?: { url?: string; text?: string; from?: number; to?: number }) => {\n if (initial) {\n const openInNewTab = editor?.isActive('link') ? editor.getAttributes('link').target === '_blank' : false;\n setInsertLinkInitialValues({ ...initial, openInNewTab });\n } else {\n setInsertLinkInitialValues(undefined);\n }\n setInsertLinkDialogOpen(true);\n }, [editor]);\n\n const insertLink = useCallback(\n (params: { url: string; text: string; openInNewTab: boolean; from?: number; to?: number }) => {\n if (!editor) { return; }\n const {\n url, text, openInNewTab, from: fromParam, to: toParam,\n } = params;\n const chain = editor.chain().focus();\n const linkAttrs: { href: string; target?: string | null } = { href: url };\n if (openInNewTab) {\n linkAttrs.target = '_blank';\n }\n\n const content = {\n type: 'text',\n text: text.trim() || url,\n marks: [{ type: 'link', attrs: linkAttrs }],\n };\n\n if (typeof fromParam === 'number' && typeof toParam === 'number' && fromParam !== toParam) {\n chain.insertContentAt({ from: fromParam, to: toParam }, [content]).run();\n } else {\n const { from, to } = editor.state.selection;\n const selectedText = editor.state.doc.textBetween(from, to, ' ');\n if (selectedText) {\n chain.extendMarkRange('link').setLink(linkAttrs).run();\n } else {\n chain.insertContent([content]).run();\n }\n }\n },\n [editor],\n );\n\n // Watch for value changes and update editor content\n useEffect(() => {\n if (editor) {\n const newContent = contentError ? null : editorContent;\n const currentContent = editor.getJSON();\n\n // Only update if content has actually changed\n if (JSON.stringify(newContent) !== JSON.stringify(currentContent)) {\n editor.commands.setContent(newContent);\n }\n }\n }, [contentError, editor, editorContent]);\n\n const handleLinkBubbleEdit = useCallback(() => {\n if (!editor) { return; }\n const { href } = editor.getAttributes('link');\n const { state } = editor;\n const linkType = state.schema.marks.link;\n const range = getMarkRange(state.selection.$from, linkType);\n const from = range?.from ?? state.selection.from;\n const to = range?.to ?? state.selection.to;\n const text = editor.state.doc.textBetween(from, to, ' ');\n openInsertLinkDialog({\n url: href, text, from, to,\n });\n }, [editor, openInsertLinkDialog]);\n\n return (\n <div className={cn(\n 'border border-[rgba(96,125,159,0.4)] rounded-sm overflow-hidden',\n isInvalid && [\n 'border-rose-600!',\n '[focus-visible:shadow-[0_0_0_1px_var(--color-rose-600),0_0_4px_0_hsl(from_var(--color-rose-600)_h_s_l/0.7)]!',\n ],\n className,\n )}>\n <VariablePickerProvider\n variableCategories={variableCategories}\n variableCategoryLabels={variableCategoryLabels}\n variableCategoryOrder={variableCategoryOrder}\n variableTransformerRegistry={variableTransformerRegistry}\n >\n <EditorContext.Provider value={{ editor }}>\n {toolbarContent ? (\n toolbarContent({\n editor,\n variableCategories,\n variableCategoryLabels,\n variableCategoryOrder,\n variablePickerOpen: isVariablePickerOpen,\n onVariablePickerOpenChange: setIsVariablePickerOpen,\n })\n ) : (\n <MenuBar\n editor={editor}\n buttons={buttons}\n tableOptions={tableOptions}\n linkOptions={linkOptions}\n linkSelectorStorageKeyPrefix={linkSelectorStorageKeyPrefix}\n variableCategories={variableCategories}\n variableCategoryLabels={variableCategoryLabels}\n variableCategoryOrder={variableCategoryOrder}\n variablePickerOpen={isVariablePickerOpen}\n onVariablePickerOpenChange={setIsVariablePickerOpen}\n openInsertLinkDialog={openInsertLinkDialog}\n />\n )}\n\n <div ref={wrapperRef} className=\"relative\">\n {contentError && (\n <div className=\"flex items-start gap-2 border-b border-rose-200 bg-rose-50 px-4 py-2 text-sm text-rose-800\">\n <FontAwesomeIcon icon={faTriangleExclamation} className=\"mt-0.5 size-3.5 shrink-0\" />\n <p>{contentError}</p>\n </div>\n )}\n\n <EditorContent\n editor={editor}\n className={cn(\n '[&_.ProseMirror]:outline-none',\n '[&_.ProseMirror]:min-h-8',\n '[&_.ProseMirror]:p-4',\n '[&_.ProseMirror]:bg-[#fbfcfe]',\n '[&_.ProseMirror]:shadow-none',\n '[&_.ProseMirror]:whitespace-pre-wrap',\n '[&_.ProseMirror_p]:m-0 [&_.ProseMirror_p]:mb-2',\n '[&_.ProseMirror_p:last-child]:mb-0',\n '[&_.ProseMirror_h1]:text-xl [&_.ProseMirror_h1]:font-bold [&_.ProseMirror_h1]:mb-2',\n '[&_.ProseMirror_h2]:text-lg [&_.ProseMirror_h2]:font-semibold [&_.ProseMirror_h2]:mb-2',\n '[&_.ProseMirror_ul]:list-disc [&_.ProseMirror_ul]:pl-5 [&_.ProseMirror_ul]:mb-2',\n '[&_.ProseMirror_ol]:list-decimal [&_.ProseMirror_ol]:pl-5 [&_.ProseMirror_ol]:mb-2',\n '[&_.ProseMirror_li]:mb-1',\n '[&_.ProseMirror_hr]:border-slate-300 [&_.ProseMirror_hr]:my-4',\n '[&_.ProseMirror_code]:bg-slate-100 [&_.ProseMirror_code]:px-1 [&_.ProseMirror_code]:py-0.5 [&_.ProseMirror_code]:rounded [&_.ProseMirror_code]:text-sm',\n '[&_.ProseMirror_pre]:bg-slate-100 [&_.ProseMirror_pre]:p-3 [&_.ProseMirror_pre]:rounded [&_.ProseMirror_pre]:overflow-x-auto [&_.ProseMirror_pre]:mb-2',\n '[&_.ProseMirror_blockquote]:border-l-4 [&_.ProseMirror_blockquote]:border-slate-300 [&_.ProseMirror_blockquote]:pl-4 [&_.ProseMirror_blockquote]:italic [&_.ProseMirror_blockquote]:text-slate-600 [&_.ProseMirror_blockquote]:mb-2',\n '[&_.ProseMirror_table]:border-collapse [&_.ProseMirror_table]:w-full [&_.ProseMirror_table]:mb-2',\n '[&_.ProseMirror_th]:border [&_.ProseMirror_th]:border-slate-300 [&_.ProseMirror_th]:px-3 [&_.ProseMirror_th]:py-2 [&_.ProseMirror_th]:bg-slate-100 [&_.ProseMirror_th]:text-left',\n '[&_.ProseMirror_td]:border [&_.ProseMirror_td]:border-slate-300 [&_.ProseMirror_td]:px-3 [&_.ProseMirror_td]:py-2',\n '[&_.ProseMirror_a]:text-blue-600 [&_.ProseMirror_a]:underline [&_.ProseMirror_a]:cursor-pointer',\n )}\n {...props}\n />\n\n {hasAnyVariables && !readOnly && (\n <InlineVariablePickerPopover\n open={inlinePicker.state.open}\n onOpenChange={(open) => {\n if (!open) {\n inlinePicker.closePicker();\n }\n }}\n position={{ top: inlinePicker.state.top, left: inlinePicker.state.left }}\n isChildMode={inlinePicker.filteredVariables.isChildMode}\n query={inlinePicker.state.query}\n onQueryChange={inlinePicker.setQuery}\n filteredVariables={inlinePicker.filteredVariables}\n onSelect={inlinePicker.handleSelect}\n onBack={inlinePicker.goBack}\n />\n )}\n </div>\n\n {buttons.includes('link') && editor && (\n <LinkBubbleMenu\n editor={editor}\n onEdit={handleLinkBubbleEdit}\n dialogOpen={insertLinkDialogOpen}\n />\n )}\n </EditorContext.Provider>\n\n <InsertLinkDialog\n open={insertLinkDialogOpen}\n onOpenChange={setInsertLinkDialogOpen}\n initialValues={insertLinkInitialValues}\n onInsert={(values) => {\n insertLink({\n ...values,\n from: insertLinkInitialValues?.from,\n to: insertLinkInitialValues?.to,\n });\n setInsertLinkDialogOpen(false);\n }}\n />\n </VariablePickerProvider>\n </div >\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const TiptapInput: ({ value, onChange, className, isInvalid, disabled, readOnly, variableCategories, variableCategoryLabels, variableCategoryOrder, variableTransformerRegistry, variablePickerTriggerCharacters, ...props }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
value?: string | undefined;
|
|
4
|
+
onChange: any;
|
|
5
|
+
className: any;
|
|
6
|
+
isInvalid: any;
|
|
7
|
+
disabled?: boolean | undefined;
|
|
8
|
+
readOnly?: boolean | undefined;
|
|
9
|
+
variableCategories?: {} | undefined;
|
|
10
|
+
variableCategoryLabels: any;
|
|
11
|
+
variableCategoryOrder: any;
|
|
12
|
+
variableTransformerRegistry: any;
|
|
13
|
+
variablePickerTriggerCharacters?: string[] | undefined;
|
|
14
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=TiptapInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TiptapInput.d.ts","sourceRoot":"","sources":["../../src/components/TiptapInput.tsx"],"names":[],"mappings":"AAyBA,eAAO,MAAM,WAAW,GAAI;;;;;;;;;;;;;CAa3B,4CAgJA,CAAC"}
|