@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,42 @@
|
|
|
1
|
+
import { hostGetLocale, hostGetTimepickerOptions } from "./hostBridge.js";
|
|
2
|
+
//#region src/utils/timeOptions.ts
|
|
3
|
+
var timeOptionsCache = null;
|
|
4
|
+
var generateTimeOptions = () => {
|
|
5
|
+
if (timeOptionsCache) return timeOptionsCache;
|
|
6
|
+
const options = [];
|
|
7
|
+
const timepickerOptions = hostGetTimepickerOptions() || {};
|
|
8
|
+
const lang = timepickerOptions.lang || {
|
|
9
|
+
AM: "AM",
|
|
10
|
+
PM: "PM"
|
|
11
|
+
};
|
|
12
|
+
const timeFormat = timepickerOptions.timeFormat || "g:i A";
|
|
13
|
+
for (let hour = 0; hour < 24; hour++) for (let minute = 0; minute < 60; minute += 30) {
|
|
14
|
+
const timeString = `${hour.toString().padStart(2, "0")}:${minute.toString().padStart(2, "0")}`;
|
|
15
|
+
let displayTime;
|
|
16
|
+
if (timeFormat === "g:i A") {
|
|
17
|
+
let displayHour = hour;
|
|
18
|
+
if (hour === 0) displayHour = 12;
|
|
19
|
+
else if (hour > 12) displayHour = hour - 12;
|
|
20
|
+
const ampm = hour >= 12 ? lang.PM : lang.AM;
|
|
21
|
+
displayTime = `${displayHour}:${minute.toString().padStart(2, "0")} ${ampm}`;
|
|
22
|
+
} else if (timeFormat === "G:i") displayTime = timeString;
|
|
23
|
+
else displayTime = (/* @__PURE__ */ new Date(`2000-01-01T${timeString}:00`)).toLocaleTimeString(hostGetLocale() || "en-US", {
|
|
24
|
+
hour: "numeric",
|
|
25
|
+
minute: "2-digit",
|
|
26
|
+
hour12: timeFormat.includes("A")
|
|
27
|
+
});
|
|
28
|
+
options.push({
|
|
29
|
+
value: timeString,
|
|
30
|
+
label: displayTime
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
timeOptionsCache = options;
|
|
34
|
+
return options;
|
|
35
|
+
};
|
|
36
|
+
var clearTimeOptionsCache = () => {
|
|
37
|
+
timeOptionsCache = null;
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
export { clearTimeOptionsCache, generateTimeOptions };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=timeOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeOptions.js","names":[],"sources":["../../src/utils/timeOptions.ts"],"sourcesContent":["import { hostGetLocale, hostGetTimepickerOptions } from './hostBridge';\n\n// Cache for time options to avoid regenerating on every render\nlet timeOptionsCache: Array<{ value: string; label: string }> | null = null;\n\n// Generate time options in 30-minute increments starting from midnight\nexport const generateTimeOptions = (): Array<{ value: string; label: string }> => {\n // Return cached options if available\n if (timeOptionsCache) {\n return timeOptionsCache;\n }\n\n const options: Array<{ value: string; label: string }> = [];\n const timepickerOptions = hostGetTimepickerOptions() || {};\n const lang = timepickerOptions.lang || { AM: 'AM', PM: 'PM' };\n const timeFormat = timepickerOptions.timeFormat || 'g:i A';\n\n for (let hour = 0; hour < 24; hour++) {\n for (let minute = 0; minute < 60; minute += 30) {\n const timeString = `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`;\n\n // Use Craft's time formatting\n let displayTime: string;\n if (timeFormat === 'g:i A') {\n // 12-hour format with AM/PM\n let displayHour = hour;\n if (hour === 0) {\n displayHour = 12;\n } else if (hour > 12) {\n displayHour = hour - 12;\n }\n const ampm = hour >= 12 ? lang.PM : lang.AM;\n displayTime = `${displayHour}:${minute.toString().padStart(2, '0')} ${ampm}`;\n } else if (timeFormat === 'G:i') {\n // 24-hour format\n displayTime = timeString;\n } else {\n // Fallback to browser's locale formatting\n displayTime = new Date(`2000-01-01T${timeString}:00`).toLocaleTimeString(hostGetLocale() || 'en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: timeFormat.includes('A'),\n });\n }\n\n options.push({\n value: timeString,\n label: displayTime,\n });\n }\n }\n\n // Cache the result\n timeOptionsCache = options;\n return options;\n};\n\n// Clear cache (useful for testing or if Craft settings change)\nexport const clearTimeOptionsCache = (): void => {\n timeOptionsCache = null;\n};\n"],"mappings":";;AAGA,IAAI,mBAAmE;AAGvE,IAAa,4BAAqE;AAE9E,KAAI,iBACA,QAAO;CAGX,MAAM,UAAmD,EAAE;CAC3D,MAAM,oBAAoB,0BAA0B,IAAI,EAAE;CAC1D,MAAM,OAAO,kBAAkB,QAAQ;EAAE,IAAI;EAAM,IAAI;EAAM;CAC7D,MAAM,aAAa,kBAAkB,cAAc;AAEnD,MAAK,IAAI,OAAO,GAAG,OAAO,IAAI,OAC1B,MAAK,IAAI,SAAS,GAAG,SAAS,IAAI,UAAU,IAAI;EAC5C,MAAM,aAAa,GAAG,KAAK,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,UAAU,CAAC,SAAS,GAAG,IAAI;EAG5F,IAAI;AACJ,MAAI,eAAe,SAAS;GAExB,IAAI,cAAc;AAClB,OAAI,SAAS,EACT,eAAc;YACP,OAAO,GACd,eAAc,OAAO;GAEzB,MAAM,OAAO,QAAQ,KAAK,KAAK,KAAK,KAAK;AACzC,iBAAc,GAAG,YAAY,GAAG,OAAO,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;aAC/D,eAAe,MAEtB,eAAc;MAGd,gCAAc,IAAI,KAAK,cAAc,WAAW,KAAK,EAAC,mBAAmB,eAAe,IAAI,SAAS;GACjG,MAAM;GACN,QAAQ;GACR,QAAQ,WAAW,SAAS,IAAI;GACnC,CAAC;AAGN,UAAQ,KAAK;GACT,OAAO;GACP,OAAO;GACV,CAAC;;AAKV,oBAAmB;AACnB,QAAO;;AAIX,IAAa,8BAAoC;AAC7C,oBAAmB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert ProseMirror JSON content to HTML
|
|
3
|
+
* @param {Array} json - ProseMirror JSON content array
|
|
4
|
+
* @returns {string} - Generated HTML string
|
|
5
|
+
*/
|
|
6
|
+
export declare const getRichTextHtml: (json: any) => any;
|
|
7
|
+
/**
|
|
8
|
+
* Extract plain text from ProseMirror JSON content
|
|
9
|
+
* @param {Array} json - ProseMirror JSON content array
|
|
10
|
+
* @returns {string} - Plain text string
|
|
11
|
+
*/
|
|
12
|
+
export declare const getRichTextText: (json: any) => any;
|
|
13
|
+
//# sourceMappingURL=tiptap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiptap.d.ts","sourceRoot":"","sources":["../../src/utils/tiptap.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,SAAI,QAuBnC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,SAAI,QAmBnC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { generateHTML } from "@tiptap/core";
|
|
2
|
+
import Document from "@tiptap/extension-document";
|
|
3
|
+
import Paragraph from "@tiptap/extension-paragraph";
|
|
4
|
+
import Text from "@tiptap/extension-text";
|
|
5
|
+
//#region src/utils/tiptap.ts
|
|
6
|
+
/**
|
|
7
|
+
* Convert ProseMirror JSON content to HTML
|
|
8
|
+
* @param {Array} json - ProseMirror JSON content array
|
|
9
|
+
* @returns {string} - Generated HTML string
|
|
10
|
+
*/
|
|
11
|
+
var getRichTextHtml = (json) => {
|
|
12
|
+
if (!json) return "";
|
|
13
|
+
if (typeof json === "string") try {
|
|
14
|
+
json = JSON.parse(json);
|
|
15
|
+
} catch {
|
|
16
|
+
return json;
|
|
17
|
+
}
|
|
18
|
+
return generateHTML({
|
|
19
|
+
type: "doc",
|
|
20
|
+
content: json
|
|
21
|
+
}, [
|
|
22
|
+
Document,
|
|
23
|
+
Paragraph,
|
|
24
|
+
Text
|
|
25
|
+
]);
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Extract plain text from ProseMirror JSON content
|
|
29
|
+
* @param {Array} json - ProseMirror JSON content array
|
|
30
|
+
* @returns {string} - Plain text string
|
|
31
|
+
*/
|
|
32
|
+
var getRichTextText = (json) => {
|
|
33
|
+
if (!json) return "";
|
|
34
|
+
return getRichTextHtml(json).replace(/<[^>]*>/g, " ").replace(/ /g, " ").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, "\"").replace(/'/g, "'").replace(/\s+/g, " ").trim();
|
|
35
|
+
};
|
|
36
|
+
//#endregion
|
|
37
|
+
export { getRichTextHtml, getRichTextText };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=tiptap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiptap.js","names":[],"sources":["../../src/utils/tiptap.ts"],"sourcesContent":["import { generateHTML } from '@tiptap/core';\nimport Document from '@tiptap/extension-document';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Text from '@tiptap/extension-text';\n\n/**\n * Convert ProseMirror JSON content to HTML\n * @param {Array} json - ProseMirror JSON content array\n * @returns {string} - Generated HTML string\n */\nexport const getRichTextHtml = (json) => {\n if (!json) {\n return '';\n }\n\n if (typeof json === 'string') {\n // If this is json-encoded, try to parse it\n try {\n json = JSON.parse(json);\n } catch {\n // If it's not valid JSON, return the original string\n return json;\n }\n }\n\n return generateHTML({\n type: 'doc',\n content: json,\n }, [\n Document,\n Paragraph,\n Text,\n ]);\n};\n\n/**\n * Extract plain text from ProseMirror JSON content\n * @param {Array} json - ProseMirror JSON content array\n * @returns {string} - Plain text string\n */\nexport const getRichTextText = (json) => {\n if (!json) {\n return '';\n }\n\n // Generate HTML first\n const html = getRichTextHtml(json);\n\n // Strip HTML tags and decode entities\n return html\n .replace(/<[^>]*>/g, ' ') // Replace HTML tags with spaces\n .replace(/ /g, ' ') // Replace non-breaking spaces\n .replace(/&/g, '&') // Decode common HTML entities\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(/\\s+/g, ' ') // Replace multiple spaces with single space\n .trim();\n};\n"],"mappings":";;;;;;;;;;AAUA,IAAa,mBAAmB,SAAS;AACrC,KAAI,CAAC,KACD,QAAO;AAGX,KAAI,OAAO,SAAS,SAEhB,KAAI;AACA,SAAO,KAAK,MAAM,KAAK;SACnB;AAEJ,SAAO;;AAIf,QAAO,aAAa;EAChB,MAAM;EACN,SAAS;EACZ,EAAE;EACC;EACA;EACA;EACH,CAAC;;;;;;;AAQN,IAAa,mBAAmB,SAAS;AACrC,KAAI,CAAC,KACD,QAAO;AAOX,QAHa,gBAAgB,KAGtB,CACF,QAAQ,YAAY,IAAI,CACxB,QAAQ,WAAW,IAAI,CACvB,QAAQ,UAAU,IAAI,CACtB,QAAQ,SAAS,IAAI,CACrB,QAAQ,SAAS,IAAI,CACrB,QAAQ,WAAW,KAAI,CACvB,QAAQ,UAAU,IAAI,CACtB,QAAQ,QAAQ,IAAI,CACpB,MAAM"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type TranslateParams = Record<string, string>;
|
|
2
|
+
export declare const setTranslationCategory: (category: string) => void;
|
|
3
|
+
export declare const setTranslateFunction: (fn?: (category: string, message: string, params?: TranslateParams) => string) => void;
|
|
4
|
+
export declare const translate: (message: string, params?: TranslateParams) => string;
|
|
5
|
+
//# sourceMappingURL=translation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation.d.ts","sourceRoot":"","sources":["../../src/utils/translation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAKrD,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,KAAG,IAEzD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,KAAK,MAAM,KAAG,IAEnH,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,EAAE,SAAS,eAAe,KAAG,MAcrE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/utils/translation.ts
|
|
2
|
+
var translationCategory = "plugin-handle";
|
|
3
|
+
var translateFn;
|
|
4
|
+
var setTranslationCategory = (category) => {
|
|
5
|
+
translationCategory = category.trim() || "plugin-handle";
|
|
6
|
+
};
|
|
7
|
+
var setTranslateFunction = (fn) => {
|
|
8
|
+
translateFn = fn;
|
|
9
|
+
};
|
|
10
|
+
var translate = (message, params) => {
|
|
11
|
+
if (translateFn) return translateFn(translationCategory, message, params);
|
|
12
|
+
if (typeof window !== "undefined") {
|
|
13
|
+
const craft = window.Craft;
|
|
14
|
+
if (craft?.t) return craft.t(translationCategory, message, params);
|
|
15
|
+
}
|
|
16
|
+
return message;
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { setTranslateFunction, setTranslationCategory, translate };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=translation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation.js","names":[],"sources":["../../src/utils/translation.ts"],"sourcesContent":["export type TranslateParams = Record<string, string>;\n\nlet translationCategory = 'plugin-handle';\nlet translateFn: ((category: string, message: string, params?: TranslateParams) => string) | undefined;\n\nexport const setTranslationCategory = (category: string): void => {\n translationCategory = category.trim() || 'plugin-handle';\n};\n\nexport const setTranslateFunction = (fn?: (category: string, message: string, params?: TranslateParams) => string): void => {\n translateFn = fn;\n};\n\nexport const translate = (message: string, params?: TranslateParams): string => {\n if (translateFn) {\n return translateFn(translationCategory, message, params);\n }\n\n if (typeof window !== 'undefined') {\n const craft = (window as { Craft?: { t?: (category: string, message: string, params?: TranslateParams) => string } }).Craft;\n\n if (craft?.t) {\n return craft.t(translationCategory, message, params);\n }\n }\n\n return message;\n};\n"],"mappings":";AAEA,IAAI,sBAAsB;AAC1B,IAAI;AAEJ,IAAa,0BAA0B,aAA2B;AAC9D,uBAAsB,SAAS,MAAM,IAAI;;AAG7C,IAAa,wBAAwB,OAAuF;AACxH,eAAc;;AAGlB,IAAa,aAAa,SAAiB,WAAqC;AAC5E,KAAI,YACA,QAAO,YAAY,qBAAqB,SAAS,OAAO;AAG5D,KAAI,OAAO,WAAW,aAAa;EAC/B,MAAM,QAAS,OAAuG;AAEtH,MAAI,OAAO,EACP,QAAO,MAAM,EAAE,qBAAqB,SAAS,OAAO;;AAI5D,QAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AA6VA,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAAE,GAAG,SAAS,CA0GlD"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { translate } from "./translation.js";
|
|
2
|
+
import * as v from "valibot";
|
|
3
|
+
//#region src/utils/validation.ts
|
|
4
|
+
var isRecord = (value) => {
|
|
5
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
6
|
+
};
|
|
7
|
+
var parseRules = (field) => {
|
|
8
|
+
const tokens = (typeof field.validation === "string" ? field.validation : "").split("|").map((token) => {
|
|
9
|
+
return token.trim();
|
|
10
|
+
}).filter(Boolean);
|
|
11
|
+
const hasRequiredRule = tokens.some((rule) => {
|
|
12
|
+
return rule === "required" || rule.startsWith("required");
|
|
13
|
+
});
|
|
14
|
+
if (field.required && !hasRequiredRule) tokens.unshift("required");
|
|
15
|
+
return tokens.map((token) => {
|
|
16
|
+
const [name, ...rest] = token.split(":");
|
|
17
|
+
return {
|
|
18
|
+
name,
|
|
19
|
+
args: rest.length > 0 ? rest.join(":").split(",") : []
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
var isEmptyValue = (value) => {
|
|
24
|
+
if (value === void 0 || value === null) return true;
|
|
25
|
+
if (typeof value === "string") return value === "";
|
|
26
|
+
if (Array.isArray(value)) return value.length === 0;
|
|
27
|
+
return false;
|
|
28
|
+
};
|
|
29
|
+
var getValueSize = (value) => {
|
|
30
|
+
if (typeof value === "number") return value;
|
|
31
|
+
if (typeof value === "string") {
|
|
32
|
+
const trimmed = value.trim();
|
|
33
|
+
if (trimmed !== "" && Number.isFinite(Number(trimmed))) return Number(trimmed);
|
|
34
|
+
return value.length;
|
|
35
|
+
}
|
|
36
|
+
if (Array.isArray(value)) return value.length;
|
|
37
|
+
return NaN;
|
|
38
|
+
};
|
|
39
|
+
var collectFields = (node, prefix = "", fields = []) => {
|
|
40
|
+
if (!node) return fields;
|
|
41
|
+
if (Array.isArray(node)) {
|
|
42
|
+
node.forEach((child) => {
|
|
43
|
+
return collectFields(child, prefix, fields);
|
|
44
|
+
});
|
|
45
|
+
return fields;
|
|
46
|
+
}
|
|
47
|
+
if (!isRecord(node)) return fields;
|
|
48
|
+
if (node.$field === "list" && node.name) {
|
|
49
|
+
if (node.children) collectFields(node.children, `${prefix}${node.name}.*.`, fields);
|
|
50
|
+
return fields;
|
|
51
|
+
}
|
|
52
|
+
if (node.$field === "table" && node.name) {
|
|
53
|
+
fields.push({
|
|
54
|
+
...node,
|
|
55
|
+
name: `${prefix}${node.name}`
|
|
56
|
+
});
|
|
57
|
+
if (!Array.isArray(node.columns)) return fields;
|
|
58
|
+
node.columns.forEach((column) => {
|
|
59
|
+
if (!column?.name) return;
|
|
60
|
+
if (column.type === "heading" || column.type === "label") return;
|
|
61
|
+
fields.push({
|
|
62
|
+
...column,
|
|
63
|
+
name: `${prefix}${node.name}.*.${column.name}`
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
return fields;
|
|
67
|
+
}
|
|
68
|
+
if (node.$field && node.name) fields.push({
|
|
69
|
+
...node,
|
|
70
|
+
name: `${prefix}${node.name}`
|
|
71
|
+
});
|
|
72
|
+
if (node.children) collectFields(node.children, prefix, fields);
|
|
73
|
+
return fields;
|
|
74
|
+
};
|
|
75
|
+
var collectTableDefinitions = (node, tables = {}) => {
|
|
76
|
+
if (!node) return tables;
|
|
77
|
+
if (Array.isArray(node)) {
|
|
78
|
+
node.forEach((child) => {
|
|
79
|
+
return collectTableDefinitions(child, tables);
|
|
80
|
+
});
|
|
81
|
+
return tables;
|
|
82
|
+
}
|
|
83
|
+
if (!isRecord(node)) return tables;
|
|
84
|
+
if (node.$field === "table" && node.name) {
|
|
85
|
+
const tableName = String(node.name);
|
|
86
|
+
const tableLabel = String(node.label || node.name);
|
|
87
|
+
const columns = {};
|
|
88
|
+
if (Array.isArray(node.columns)) node.columns.forEach((column) => {
|
|
89
|
+
if (!column?.name) return;
|
|
90
|
+
columns[String(column.name)] = String(column.label || column.name);
|
|
91
|
+
});
|
|
92
|
+
tables[tableName] = {
|
|
93
|
+
name: tableName,
|
|
94
|
+
label: tableLabel,
|
|
95
|
+
columns
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
if (node.children) collectTableDefinitions(node.children, tables);
|
|
99
|
+
return tables;
|
|
100
|
+
};
|
|
101
|
+
var expandWildcardPaths = (values, path) => {
|
|
102
|
+
if (!path.includes("*")) return [path];
|
|
103
|
+
const parts = path.split(".");
|
|
104
|
+
const results = [];
|
|
105
|
+
const walk = (current, index, acc) => {
|
|
106
|
+
if (index >= parts.length) {
|
|
107
|
+
results.push(acc.join("."));
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const part = parts[index];
|
|
111
|
+
if (part === "*") {
|
|
112
|
+
if (Array.isArray(current)) current.forEach((item, idx) => {
|
|
113
|
+
walk(item, index + 1, [...acc, String(idx)]);
|
|
114
|
+
});
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (isRecord(current) && part in current) {
|
|
118
|
+
walk(current[part], index + 1, [...acc, part]);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
walk(void 0, index + 1, [...acc, part]);
|
|
122
|
+
};
|
|
123
|
+
walk(values, 0, []);
|
|
124
|
+
return results;
|
|
125
|
+
};
|
|
126
|
+
var getValueAtPath = (values, path) => {
|
|
127
|
+
if (!path) return;
|
|
128
|
+
return path.split(".").reduce((current, segment) => {
|
|
129
|
+
if (current === void 0 || current === null) return;
|
|
130
|
+
return current[Array.isArray(current) ? Number(segment) : segment];
|
|
131
|
+
}, values);
|
|
132
|
+
};
|
|
133
|
+
var emailRegex = /(^$|^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$)/;
|
|
134
|
+
var variableRegex = /({.*?})/;
|
|
135
|
+
var buildFieldSchema = (field, rules) => {
|
|
136
|
+
const label = String(field.label || field.name || "");
|
|
137
|
+
const isRequired = rules.some((rule) => {
|
|
138
|
+
return rule.name === "required";
|
|
139
|
+
});
|
|
140
|
+
const actions = [];
|
|
141
|
+
rules.forEach((rule) => {
|
|
142
|
+
const ruleName = rule.name;
|
|
143
|
+
const { args } = rule;
|
|
144
|
+
const maybeSkip = (value) => {
|
|
145
|
+
return !isRequired && isEmptyValue(value);
|
|
146
|
+
};
|
|
147
|
+
switch (ruleName) {
|
|
148
|
+
case "required":
|
|
149
|
+
actions.push(v.check((value) => {
|
|
150
|
+
return !isEmptyValue(value);
|
|
151
|
+
}, translate("{attribute} cannot be blank.", { attribute: label })));
|
|
152
|
+
break;
|
|
153
|
+
case "email":
|
|
154
|
+
actions.push(v.check((value) => {
|
|
155
|
+
if (maybeSkip(value)) return true;
|
|
156
|
+
return emailRegex.test(String(value));
|
|
157
|
+
}, translate("{attribute} must be a valid email address.", { attribute: label })));
|
|
158
|
+
break;
|
|
159
|
+
case "emailOrVariable":
|
|
160
|
+
actions.push(v.check((value) => {
|
|
161
|
+
if (maybeSkip(value)) return true;
|
|
162
|
+
const text = String(value);
|
|
163
|
+
return variableRegex.test(text) || emailRegex.test(text);
|
|
164
|
+
}, translate("{attribute} must be a valid email address or variable.", { attribute: label })));
|
|
165
|
+
break;
|
|
166
|
+
case "min": {
|
|
167
|
+
const min = Number(args[0]);
|
|
168
|
+
actions.push(v.check((value) => {
|
|
169
|
+
if (maybeSkip(value)) return true;
|
|
170
|
+
const size = getValueSize(value);
|
|
171
|
+
return Number.isFinite(size) ? size >= min : false;
|
|
172
|
+
}, translate("{attribute} must be at least {min}.", {
|
|
173
|
+
attribute: label,
|
|
174
|
+
min: String(args[0])
|
|
175
|
+
})));
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
case "max": {
|
|
179
|
+
const max = Number(args[0]);
|
|
180
|
+
actions.push(v.check((value) => {
|
|
181
|
+
if (maybeSkip(value)) return true;
|
|
182
|
+
const size = getValueSize(value);
|
|
183
|
+
return Number.isFinite(size) ? size <= max : false;
|
|
184
|
+
}, translate("{attribute} must be at most {max}.", {
|
|
185
|
+
attribute: label,
|
|
186
|
+
max: String(args[0])
|
|
187
|
+
})));
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
default: break;
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
return v.pipe(v.any(), ...actions);
|
|
194
|
+
};
|
|
195
|
+
function validateFormValues(schema, values) {
|
|
196
|
+
const normalizedValues = values && typeof values === "object" ? values : {};
|
|
197
|
+
const fields = collectFields(schema);
|
|
198
|
+
if (!fields.length) return;
|
|
199
|
+
const fieldErrors = {};
|
|
200
|
+
fields.forEach((field) => {
|
|
201
|
+
if (!field?.name) return;
|
|
202
|
+
const rules = parseRules(field);
|
|
203
|
+
if (!rules.length) return;
|
|
204
|
+
const validator = buildFieldSchema(field, rules);
|
|
205
|
+
expandWildcardPaths(normalizedValues, field.name).forEach((path) => {
|
|
206
|
+
const value = getValueAtPath(normalizedValues, path);
|
|
207
|
+
const result = v.safeParse(validator, value);
|
|
208
|
+
if (result.success) return;
|
|
209
|
+
const message = (result.issues || []).map((issue) => {
|
|
210
|
+
return issue.message;
|
|
211
|
+
}).filter(Boolean)[0];
|
|
212
|
+
if (message) fieldErrors[path] = [message];
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
const tableDefinitions = collectTableDefinitions(schema);
|
|
216
|
+
const formatColumnMessage = (message, label) => {
|
|
217
|
+
const trimmed = String(message || "").trim();
|
|
218
|
+
if (!trimmed) return label;
|
|
219
|
+
const match = trimmed.match(/^.+?(\s+(?:cannot|must|is)\b.*)$/i);
|
|
220
|
+
if (match) return `${label}${match[1]}`;
|
|
221
|
+
return `${label}: ${trimmed}`;
|
|
222
|
+
};
|
|
223
|
+
Object.entries(tableDefinitions).forEach(([tableName, definition]) => {
|
|
224
|
+
const nestedKeys = Object.keys(fieldErrors).filter((key) => {
|
|
225
|
+
return key.startsWith(`${tableName}.`);
|
|
226
|
+
});
|
|
227
|
+
if (nestedKeys.length === 0) return;
|
|
228
|
+
const columnErrors = {};
|
|
229
|
+
nestedKeys.forEach((key) => {
|
|
230
|
+
const columnName = key.match(new RegExp(`^${tableName}\\.\\d+\\.(.+)$`))?.[1];
|
|
231
|
+
if (!columnName) return;
|
|
232
|
+
const messages = fieldErrors[key] || [];
|
|
233
|
+
if (!messages.length) return;
|
|
234
|
+
if (!columnErrors[columnName]) columnErrors[columnName] = [];
|
|
235
|
+
columnErrors[columnName].push(...messages);
|
|
236
|
+
});
|
|
237
|
+
const columnMessages = Object.entries(columnErrors).flatMap(([columnName, messages]) => {
|
|
238
|
+
if (!messages.length) return [];
|
|
239
|
+
const columnLabel = definition.columns[columnName] || columnName;
|
|
240
|
+
const label = `${definition.label} - ${columnLabel}`;
|
|
241
|
+
const firstMessage = Array.from(new Set(messages))[0];
|
|
242
|
+
return firstMessage ? [formatColumnMessage(firstMessage, label)] : [];
|
|
243
|
+
});
|
|
244
|
+
if (!columnMessages.length) return;
|
|
245
|
+
const merged = new Set([...fieldErrors[tableName] || [], ...columnMessages]);
|
|
246
|
+
fieldErrors[tableName] = Array.from(merged);
|
|
247
|
+
});
|
|
248
|
+
return Object.keys(fieldErrors).length > 0 ? { fields: fieldErrors } : void 0;
|
|
249
|
+
}
|
|
250
|
+
//#endregion
|
|
251
|
+
export { validateFormValues };
|
|
252
|
+
|
|
253
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","names":[],"sources":["../../src/utils/validation.ts"],"sourcesContent":["import * as v from 'valibot';\nimport { translate } from '@verbb/plugin-kit-react/utils/translation';\n\n// ============================================================================\n// Valibot schema adapter\n// ============================================================================\n// We accept Laravel-style rule strings from Craft schema and turn them into\n// Valibot validation actions. This keeps the server-driven rules contract\n// while avoiding validatorjs' brittle attribute handling.\n\n// Minimal schema shape required to derive rules/labels.\ntype SchemaField = {\n name?: string;\n label?: string;\n required?: boolean;\n validation?: string;\n $field?: string;\n children?: SchemaValue;\n columns?: Array<SchemaField & { type?: string }>;\n};\n\ntype SchemaValue = SchemaField | SchemaValue[] | null | undefined;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n};\n\ntype RuleToken = {\n name: string;\n args: string[];\n};\n\nconst parseRules = (field: SchemaField): RuleToken[] => {\n const rawRules = typeof field.validation === 'string' ? field.validation : '';\n const tokens = rawRules\n .split('|')\n .map((token) => { return token.trim(); })\n .filter(Boolean);\n\n const hasRequiredRule = tokens.some((rule) => { return rule === 'required' || rule.startsWith('required'); });\n if (field.required && !hasRequiredRule) {\n tokens.unshift('required');\n }\n\n return tokens.map((token) => {\n const [name, ...rest] = token.split(':');\n const args = rest.length > 0 ? rest.join(':').split(',') : [];\n return { name, args };\n });\n};\n\nconst isEmptyValue = (value: unknown) => {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (typeof value === 'string') {\n return value === '';\n }\n\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n\n return false;\n};\n\nconst getValueSize = (value: unknown) => {\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed !== '' && Number.isFinite(Number(trimmed))) {\n return Number(trimmed);\n }\n\n return value.length;\n }\n\n if (Array.isArray(value)) {\n return value.length;\n }\n\n return NaN;\n};\n\n// Walk schema nodes and collect all fields that can be validated.\n// - list fields: expand children using wildcard paths (`list.*.field`)\n// - table fields: validate the table itself (required / min rules), then each\n// column per row (`table.*.column`)\n// - default fields: just collect as-is\nconst collectFields = (node: SchemaValue, prefix = '', fields: SchemaField[] = []) => {\n if (!node) {\n return fields;\n }\n\n if (Array.isArray(node)) {\n node.forEach((child) => { return collectFields(child, prefix, fields); });\n return fields;\n }\n\n if (!isRecord(node)) {\n return fields;\n }\n\n if (node.$field === 'list' && node.name) {\n if (node.children) {\n collectFields(node.children, `${prefix}${node.name}.*.`, fields);\n }\n return fields;\n }\n\n if (node.$field === 'table' && node.name) {\n fields.push({\n ...node,\n name: `${prefix}${node.name}`,\n });\n\n if (!Array.isArray(node.columns)) {\n return fields;\n }\n\n node.columns.forEach((column: SchemaField & { type?: string }) => {\n if (!column?.name) {\n return;\n }\n\n if (column.type === 'heading' || column.type === 'label') {\n return;\n }\n\n fields.push({\n ...column,\n name: `${prefix}${node.name}.*.${column.name}`,\n });\n });\n\n return fields;\n }\n\n if (node.$field && node.name) {\n fields.push({\n ...node,\n name: `${prefix}${node.name}`,\n });\n }\n\n if (node.children) {\n collectFields(node.children, prefix, fields);\n }\n\n return fields;\n};\n\ntype TableDefinition = {\n name: string;\n label: string;\n columns: Record<string, string>;\n};\n\nconst collectTableDefinitions = (\n node: SchemaValue,\n tables: Record<string, TableDefinition> = {},\n): Record<string, TableDefinition> => {\n if (!node) {\n return tables;\n }\n\n if (Array.isArray(node)) {\n node.forEach((child) => { return collectTableDefinitions(child, tables); });\n return tables;\n }\n\n if (!isRecord(node)) {\n return tables;\n }\n\n if (node.$field === 'table' && node.name) {\n const tableName = String(node.name);\n const tableLabel = String(node.label || node.name);\n const columns: Record<string, string> = {};\n\n if (Array.isArray(node.columns)) {\n node.columns.forEach((column) => {\n if (!column?.name) {\n return;\n }\n\n columns[String(column.name)] = String(column.label || column.name);\n });\n }\n\n tables[tableName] = {\n name: tableName,\n label: tableLabel,\n columns,\n };\n }\n\n if (node.children) {\n collectTableDefinitions(node.children, tables);\n }\n\n return tables;\n};\n\nconst expandWildcardPaths = (values: Record<string, unknown>, path: string) => {\n if (!path.includes('*')) {\n return [path];\n }\n\n const parts = path.split('.');\n const results: string[] = [];\n\n const walk = (current: unknown, index: number, acc: string[]) => {\n if (index >= parts.length) {\n results.push(acc.join('.'));\n return;\n }\n\n const part = parts[index];\n if (part === '*') {\n if (Array.isArray(current)) {\n current.forEach((item, idx) => {\n walk(item, index + 1, [...acc, String(idx)]);\n });\n }\n return;\n }\n\n if (isRecord(current) && part in current) {\n walk(current[part], index + 1, [...acc, part]);\n return;\n }\n\n // Allow missing leaf keys so required rules still validate.\n walk(undefined, index + 1, [...acc, part]);\n };\n\n walk(values, 0, []);\n return results;\n};\n\nconst getValueAtPath = (values: Record<string, unknown>, path: string) => {\n if (!path) {\n return undefined;\n }\n\n return path.split('.').reduce<unknown>((current, segment) => {\n if (current === undefined || current === null) {\n return undefined;\n }\n\n const key = Array.isArray(current) ? Number(segment) : segment;\n return current[key as keyof typeof current];\n }, values);\n};\n\nconst emailRegex = /(^$|^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$)/;\nconst variableRegex = /({.*?})/;\n\nconst buildFieldSchema = (field: SchemaField, rules: RuleToken[]) => {\n const label = String(field.label || field.name || '');\n const isRequired = rules.some((rule) => { return rule.name === 'required'; });\n\n const actions = [];\n\n rules.forEach((rule) => {\n const ruleName = rule.name;\n const { args } = rule;\n\n const maybeSkip = (value: unknown) => {\n return !isRequired && isEmptyValue(value);\n };\n\n switch (ruleName) {\n case 'required':\n actions.push(v.check(\n (value) => { return !isEmptyValue(value); },\n translate('{attribute} cannot be blank.', { attribute: label }),\n ));\n break;\n\n case 'email':\n actions.push(v.check(\n (value) => {\n if (maybeSkip(value)) {\n return true;\n }\n return emailRegex.test(String(value));\n },\n translate('{attribute} must be a valid email address.', { attribute: label }),\n ));\n break;\n\n case 'emailOrVariable':\n actions.push(v.check(\n (value) => {\n if (maybeSkip(value)) {\n return true;\n }\n const text = String(value);\n return variableRegex.test(text) || emailRegex.test(text);\n },\n translate('{attribute} must be a valid email address or variable.', { attribute: label }),\n ));\n break;\n\n case 'min': {\n const min = Number(args[0]);\n actions.push(v.check(\n (value) => {\n if (maybeSkip(value)) {\n return true;\n }\n const size = getValueSize(value);\n return Number.isFinite(size) ? size >= min : false;\n },\n translate('{attribute} must be at least {min}.', { attribute: label, min: String(args[0]) }),\n ));\n break;\n }\n\n case 'max': {\n const max = Number(args[0]);\n actions.push(v.check(\n (value) => {\n if (maybeSkip(value)) {\n return true;\n }\n const size = getValueSize(value);\n return Number.isFinite(size) ? size <= max : false;\n },\n translate('{attribute} must be at most {max}.', { attribute: label, max: String(args[0]) }),\n ));\n break;\n }\n\n default:\n break;\n }\n });\n\n return v.pipe(v.any(), ...actions);\n};\n\n// Run Valibot and return TanStack Form–friendly error shape.\nexport function validateFormValues(\n schema: unknown,\n values: Record<string, unknown>,\n): { fields: Record<string, string[]> } | undefined {\n const normalizedValues = values && typeof values === 'object' ? values : {};\n const fields = collectFields(schema as SchemaValue);\n\n if (!fields.length) {\n return undefined;\n }\n\n const fieldErrors: Record<string, string[]> = {};\n\n fields.forEach((field) => {\n if (!field?.name) {\n return;\n }\n\n const rules = parseRules(field);\n if (!rules.length) {\n return;\n }\n\n const validator = buildFieldSchema(field, rules);\n const paths = expandWildcardPaths(normalizedValues, field.name);\n\n paths.forEach((path) => {\n const value = getValueAtPath(normalizedValues, path);\n const result = v.safeParse(validator, value);\n\n if (result.success) {\n return;\n }\n\n const message = (result.issues || [])\n .map((issue) => { return issue.message; })\n .filter(Boolean)[0];\n\n if (message) {\n fieldErrors[path] = [message];\n }\n });\n });\n\n // Aggregate table row errors up to the parent table field.\n const tableDefinitions = collectTableDefinitions(schema);\n const formatColumnMessage = (message: string, label: string) => {\n const trimmed = String(message || '').trim();\n if (!trimmed) {\n return label;\n }\n\n const match = trimmed.match(/^.+?(\\s+(?:cannot|must|is)\\b.*)$/i);\n if (match) {\n return `${label}${match[1]}`;\n }\n\n return `${label}: ${trimmed}`;\n };\n\n Object.entries(tableDefinitions).forEach(([tableName, definition]) => {\n const nestedKeys = Object.keys(fieldErrors).filter((key) => {\n return key.startsWith(`${tableName}.`);\n });\n if (nestedKeys.length === 0) {\n return;\n }\n\n const columnErrors: Record<string, string[]> = {};\n nestedKeys.forEach((key) => {\n const matches = key.match(new RegExp(`^${tableName}\\\\.\\\\d+\\\\.(.+)$`));\n const columnName = matches?.[1];\n if (!columnName) {\n return;\n }\n\n const messages = fieldErrors[key] || [];\n if (!messages.length) {\n return;\n }\n\n if (!columnErrors[columnName]) {\n columnErrors[columnName] = [];\n }\n\n columnErrors[columnName].push(...messages);\n });\n\n const columnMessages = Object.entries(columnErrors).flatMap(([columnName, messages]) => {\n if (!messages.length) {\n return [];\n }\n\n const columnLabel = definition.columns[columnName] || columnName;\n const label = `${definition.label} - ${columnLabel}`;\n const uniqueMessages = Array.from(new Set(messages));\n const firstMessage = uniqueMessages[0];\n return firstMessage ? [formatColumnMessage(firstMessage, label)] : [];\n });\n\n if (!columnMessages.length) {\n return;\n }\n\n const merged = new Set([...(fieldErrors[tableName] || []), ...columnMessages]);\n fieldErrors[tableName] = Array.from(merged);\n });\n\n return Object.keys(fieldErrors).length > 0 ? { fields: fieldErrors } : undefined;\n}\n"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@verbb/plugin-kit-react",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"vite-dev.mjs",
|
|
11
|
+
"CHANGELOG.md",
|
|
12
|
+
"LICENSE.md"
|
|
13
|
+
],
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/verbb/plugin-kit-react.git"
|
|
17
|
+
},
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/verbb/plugin-kit-react/issues"
|
|
20
|
+
},
|
|
21
|
+
"homepage": "https://docs.verbb.io/plugin-kit/react",
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": ">=20.0.0"
|
|
24
|
+
},
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"import": "./dist/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./components": {
|
|
31
|
+
"types": "./dist/components/index.d.ts",
|
|
32
|
+
"import": "./dist/components/index.js"
|
|
33
|
+
},
|
|
34
|
+
"./components/*": {
|
|
35
|
+
"types": "./dist/components/*.d.ts",
|
|
36
|
+
"import": "./dist/components/*.js"
|
|
37
|
+
},
|
|
38
|
+
"./forms": {
|
|
39
|
+
"types": "./dist/forms/index.d.ts",
|
|
40
|
+
"import": "./dist/forms/index.js"
|
|
41
|
+
},
|
|
42
|
+
"./forms/*": {
|
|
43
|
+
"types": "./dist/forms/*.d.ts",
|
|
44
|
+
"import": "./dist/forms/*.js"
|
|
45
|
+
},
|
|
46
|
+
"./hooks": {
|
|
47
|
+
"types": "./dist/hooks/index.d.ts",
|
|
48
|
+
"import": "./dist/hooks/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./hooks/*": {
|
|
51
|
+
"types": "./dist/hooks/*.d.ts",
|
|
52
|
+
"import": "./dist/hooks/*.js"
|
|
53
|
+
},
|
|
54
|
+
"./utils": {
|
|
55
|
+
"types": "./dist/utils/index.d.ts",
|
|
56
|
+
"import": "./dist/utils/index.js"
|
|
57
|
+
},
|
|
58
|
+
"./utils/*": {
|
|
59
|
+
"types": "./dist/utils/*.d.ts",
|
|
60
|
+
"import": "./dist/utils/*.js"
|
|
61
|
+
},
|
|
62
|
+
"./style.css": {
|
|
63
|
+
"style": "./dist/css/style.css",
|
|
64
|
+
"default": "./dist/css/style.css"
|
|
65
|
+
},
|
|
66
|
+
"./package.json": "./package.json",
|
|
67
|
+
"./vite-dev": "./vite-dev.mjs"
|
|
68
|
+
},
|
|
69
|
+
"publishConfig": {
|
|
70
|
+
"access": "public"
|
|
71
|
+
},
|
|
72
|
+
"scripts": {
|
|
73
|
+
"build": "vite build",
|
|
74
|
+
"dev": "vite build --watch",
|
|
75
|
+
"test": "vitest run",
|
|
76
|
+
"visual-tests:dev": "vite --config vite.visual-tests.config.ts --open /visual-tests/index.html",
|
|
77
|
+
"visual-tests:build": "vite build --config vite.visual-tests.config.ts",
|
|
78
|
+
"docs:dev": "vitepress dev docs",
|
|
79
|
+
"docs:build": "vitepress build docs",
|
|
80
|
+
"docs:preview": "vitepress preview docs"
|
|
81
|
+
},
|
|
82
|
+
"license": "MIT",
|
|
83
|
+
"devDependencies": {
|
|
84
|
+
"@verbb/vitepress-theme": "1.0.0",
|
|
85
|
+
"@tailwindcss/typography": "^0.5.19",
|
|
86
|
+
"@tailwindcss/vite": "^4.2.4",
|
|
87
|
+
"@types/lodash-es": "^4.17.12",
|
|
88
|
+
"@types/node": "^25.6.0",
|
|
89
|
+
"@types/react": "^19.2.14",
|
|
90
|
+
"@types/react-dom": "^19.2.3",
|
|
91
|
+
"@vitejs/plugin-react": "^6.0.1",
|
|
92
|
+
"@vitest/browser": "^4.1.5",
|
|
93
|
+
"@vitest/coverage-v8": "^4.1.5",
|
|
94
|
+
"fs-extra": "^11.3.4",
|
|
95
|
+
"globals": "^17.5.0",
|
|
96
|
+
"react": "^19.2.5",
|
|
97
|
+
"react-dom": "^19.2.5",
|
|
98
|
+
"typescript": "^6.0.3",
|
|
99
|
+
"vite": "^8.0.10",
|
|
100
|
+
"vite-plugin-dts": "^4.5.4",
|
|
101
|
+
"vite-plugin-tailwind-shadowdom": "^1.1.1",
|
|
102
|
+
"vitepress": "^1.6.4",
|
|
103
|
+
"vitest": "^4.1.5"
|
|
104
|
+
},
|
|
105
|
+
"peerDependencies": {
|
|
106
|
+
"react": "^19.2.5",
|
|
107
|
+
"react-dom": "^19.2.5"
|
|
108
|
+
},
|
|
109
|
+
"dependencies": {
|
|
110
|
+
"@base-ui/react": "^1.4.1",
|
|
111
|
+
"@dnd-kit/abstract": "^0.4.0",
|
|
112
|
+
"@dnd-kit/dom": "^0.4.0",
|
|
113
|
+
"@dnd-kit/helpers": "^0.4.0",
|
|
114
|
+
"@dnd-kit/react": "^0.4.0",
|
|
115
|
+
"@fortawesome/fontawesome-svg-core": "^7.2.0",
|
|
116
|
+
"@fortawesome/pro-regular-svg-icons": "^7.2.0",
|
|
117
|
+
"@fortawesome/pro-solid-svg-icons": "^7.2.0",
|
|
118
|
+
"@fortawesome/react-fontawesome": "^3.3.1",
|
|
119
|
+
"@tanstack/react-virtual": "^3.13.24",
|
|
120
|
+
"@tiptap/core": "^3.22.4",
|
|
121
|
+
"@tiptap/extension-blockquote": "^3.22.4",
|
|
122
|
+
"@tiptap/extension-bold": "^3.22.4",
|
|
123
|
+
"@tiptap/extension-bullet-list": "^3.22.4",
|
|
124
|
+
"@tiptap/extension-code": "^3.22.4",
|
|
125
|
+
"@tiptap/extension-code-block": "^3.22.4",
|
|
126
|
+
"@tiptap/extension-document": "^3.22.4",
|
|
127
|
+
"@tiptap/extension-dropcursor": "^3.22.4",
|
|
128
|
+
"@tiptap/extension-gapcursor": "^3.22.4",
|
|
129
|
+
"@tiptap/extension-hard-break": "^3.22.4",
|
|
130
|
+
"@tiptap/extension-heading": "^3.22.4",
|
|
131
|
+
"@tiptap/extension-highlight": "^3.22.4",
|
|
132
|
+
"@tiptap/extension-history": "^3.22.4",
|
|
133
|
+
"@tiptap/extension-horizontal-rule": "^3.22.4",
|
|
134
|
+
"@tiptap/extension-italic": "^3.22.4",
|
|
135
|
+
"@tiptap/extension-link": "^3.22.4",
|
|
136
|
+
"@tiptap/extension-list-item": "^3.22.4",
|
|
137
|
+
"@tiptap/extension-ordered-list": "^3.22.4",
|
|
138
|
+
"@tiptap/extension-paragraph": "^3.22.4",
|
|
139
|
+
"@tiptap/extension-strike": "^3.22.4",
|
|
140
|
+
"@tiptap/extension-subscript": "^3.22.4",
|
|
141
|
+
"@tiptap/extension-superscript": "^3.22.4",
|
|
142
|
+
"@tiptap/extension-table": "^3.22.4",
|
|
143
|
+
"@tiptap/extension-table-cell": "^3.22.4",
|
|
144
|
+
"@tiptap/extension-table-header": "^3.22.4",
|
|
145
|
+
"@tiptap/extension-table-row": "^3.22.4",
|
|
146
|
+
"@tiptap/extension-text": "^3.22.4",
|
|
147
|
+
"@tiptap/extension-text-align": "^3.22.4",
|
|
148
|
+
"@tiptap/extension-underline": "^3.22.4",
|
|
149
|
+
"@tiptap/pm": "^3.22.4",
|
|
150
|
+
"@tiptap/react": "^3.22.4",
|
|
151
|
+
"@types/prismjs": "^1.26.6",
|
|
152
|
+
"@verbb/plugin-kit": "1.0.0",
|
|
153
|
+
"class-variance-authority": "^0.7.1",
|
|
154
|
+
"clsx": "^2.1.1",
|
|
155
|
+
"cmdk": "^1.1.1",
|
|
156
|
+
"framer-motion": "^12.38.0",
|
|
157
|
+
"jexl": "^2.3.0",
|
|
158
|
+
"lodash-es": "^4.18.1",
|
|
159
|
+
"prismjs": "^1.30.0",
|
|
160
|
+
"react-day-picker": "^9.14.0",
|
|
161
|
+
"tailwind-merge": "^3.5.0",
|
|
162
|
+
"tailwindcss": "^4.2.4",
|
|
163
|
+
"tw-animate-css": "^1.4.0",
|
|
164
|
+
"valibot": "^1.3.1",
|
|
165
|
+
"zustand": "^5.0.12"
|
|
166
|
+
}
|
|
167
|
+
}
|