@verbb/plugin-kit-react 1.0.9 → 2.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 +25 -0
- package/README.md +91 -16
- package/dist/app/PluginKitProvider.d.ts +28 -0
- package/dist/app/PluginKitProvider.d.ts.map +1 -0
- package/dist/app/PluginKitProvider.js +39 -0
- package/dist/app/PluginKitProvider.js.map +1 -0
- package/dist/app/configure.d.ts +29 -0
- package/dist/app/configure.d.ts.map +1 -0
- package/dist/app/configure.js +35 -0
- package/dist/app/configure.js.map +1 -0
- package/dist/app/index.d.ts +5 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +5 -0
- package/dist/app/mountShadowApp.d.ts +6 -0
- package/dist/app/mountShadowApp.d.ts.map +1 -0
- package/dist/app/mountShadowApp.js +2 -0
- package/dist/components/Button.d.ts +26 -25
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Button.js +34 -141
- package/dist/components/Button.js.map +1 -1
- package/dist/components/ButtonGroup.d.ts +15 -10
- package/dist/components/ButtonGroup.d.ts.map +1 -1
- package/dist/components/ButtonGroup.js +24 -54
- package/dist/components/ButtonGroup.js.map +1 -1
- package/dist/components/Calendar.d.ts +17 -10
- package/dist/components/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar.js +17 -129
- package/dist/components/Calendar.js.map +1 -1
- package/dist/components/Checkbox.d.ts +27 -4
- package/dist/components/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox.js +37 -34
- package/dist/components/Checkbox.js.map +1 -1
- package/dist/components/CheckboxInput.d.ts +10 -10
- package/dist/components/CheckboxInput.d.ts.map +1 -1
- package/dist/components/CheckboxInput.js +30 -10
- package/dist/components/CheckboxInput.js.map +1 -1
- package/dist/components/CheckboxSelect.d.ts +18 -17
- package/dist/components/CheckboxSelect.d.ts.map +1 -1
- package/dist/components/CheckboxSelect.js +30 -58
- package/dist/components/CheckboxSelect.js.map +1 -1
- package/dist/components/CodeEditor.d.ts +16 -10
- package/dist/components/CodeEditor.d.ts.map +1 -1
- package/dist/components/CodeEditor.js +32 -71
- package/dist/components/CodeEditor.js.map +1 -1
- package/dist/components/ColorInput.d.ts +25 -12
- package/dist/components/ColorInput.d.ts.map +1 -1
- package/dist/components/ColorInput.js +42 -142
- package/dist/components/ColorInput.js.map +1 -1
- package/dist/components/Combobox.d.ts +31 -39
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +47 -385
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ComboboxInput.d.ts +34 -17
- package/dist/components/ComboboxInput.d.ts.map +1 -1
- package/dist/components/ComboboxInput.js +81 -161
- package/dist/components/ComboboxInput.js.map +1 -1
- package/dist/components/CopyButton.d.ts +12 -8
- package/dist/components/CopyButton.d.ts.map +1 -1
- package/dist/components/CopyButton.js +15 -36
- package/dist/components/CopyButton.js.map +1 -1
- package/dist/components/DatePicker.d.ts +28 -7
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker.js +82 -53
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/Dialog.d.ts +20 -20
- package/dist/components/Dialog.d.ts.map +1 -1
- package/dist/components/Dialog.js +50 -175
- package/dist/components/Dialog.js.map +1 -1
- package/dist/components/DropdownMenu.d.ts +39 -46
- package/dist/components/DropdownMenu.d.ts.map +1 -1
- package/dist/components/DropdownMenu.js +40 -232
- package/dist/components/DropdownMenu.js.map +1 -1
- package/dist/components/EditableTable.d.ts +82 -27
- package/dist/components/EditableTable.d.ts.map +1 -1
- package/dist/components/EditableTable.js +183 -133
- package/dist/components/EditableTable.js.map +1 -1
- package/dist/components/Field.d.ts +13 -0
- package/dist/components/Field.d.ts.map +1 -0
- package/dist/components/Field.js +32 -0
- package/dist/components/Field.js.map +1 -0
- package/dist/components/Icon.d.ts +7 -0
- package/dist/components/Icon.d.ts.map +1 -0
- package/dist/components/Icon.js +15 -0
- package/dist/components/Icon.js.map +1 -0
- package/dist/components/Input.d.ts +20 -8
- package/dist/components/Input.d.ts.map +1 -1
- package/dist/components/Input.js +37 -34
- package/dist/components/Input.js.map +1 -1
- package/dist/components/InputGroup.d.ts +39 -19
- package/dist/components/InputGroup.d.ts.map +1 -1
- package/dist/components/InputGroup.js +83 -102
- package/dist/components/InputGroup.js.map +1 -1
- package/dist/components/Lightswitch.d.ts +15 -8
- package/dist/components/Lightswitch.d.ts.map +1 -1
- package/dist/components/Lightswitch.js +22 -47
- package/dist/components/Lightswitch.js.map +1 -1
- package/dist/components/Popover.d.ts +23 -11
- package/dist/components/Popover.d.ts.map +1 -1
- package/dist/components/Popover.js +46 -65
- package/dist/components/Popover.js.map +1 -1
- package/dist/components/Popup.d.ts +14 -0
- package/dist/components/Popup.d.ts.map +1 -0
- package/dist/components/Popup.js +19 -0
- package/dist/components/Popup.js.map +1 -0
- package/dist/components/RadioGroup.d.ts +26 -5
- package/dist/components/RadioGroup.d.ts.map +1 -1
- package/dist/components/RadioGroup.js +56 -26
- package/dist/components/RadioGroup.js.map +1 -1
- package/dist/components/RadioGroupInput.d.ts +19 -0
- package/dist/components/RadioGroupInput.d.ts.map +1 -0
- package/dist/components/RadioGroupInput.js +35 -0
- package/dist/components/RadioGroupInput.js.map +1 -0
- package/dist/components/ScrollArea.d.ts +11 -15
- package/dist/components/ScrollArea.d.ts.map +1 -1
- package/dist/components/ScrollArea.js +11 -42
- package/dist/components/ScrollArea.js.map +1 -1
- package/dist/components/Select.d.ts +46 -22
- package/dist/components/Select.d.ts.map +1 -1
- package/dist/components/Select.js +74 -196
- package/dist/components/Select.js.map +1 -1
- package/dist/components/SelectInput.d.ts +28 -21
- package/dist/components/SelectInput.d.ts.map +1 -1
- package/dist/components/SelectInput.js +62 -76
- package/dist/components/SelectInput.js.map +1 -1
- package/dist/components/Separator.d.ts +7 -3
- package/dist/components/Separator.d.ts.map +1 -1
- package/dist/components/Separator.js +11 -13
- package/dist/components/Separator.js.map +1 -1
- package/dist/components/Spinner.d.ts +12 -8
- package/dist/components/Spinner.d.ts.map +1 -1
- package/dist/components/Spinner.js +15 -34
- package/dist/components/Spinner.js.map +1 -1
- package/dist/components/Status.d.ts +7 -7
- package/dist/components/Status.d.ts.map +1 -1
- package/dist/components/Status.js +11 -51
- package/dist/components/Status.js.map +1 -1
- package/dist/components/Tabs.d.ts +31 -7
- package/dist/components/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs.js +57 -30
- package/dist/components/Tabs.js.map +1 -1
- package/dist/components/Textarea.d.ts +18 -7
- package/dist/components/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea.js +33 -18
- package/dist/components/Textarea.js.map +1 -1
- package/dist/components/TimePicker.d.ts +18 -8
- package/dist/components/TimePicker.d.ts.map +1 -1
- package/dist/components/TimePicker.js +38 -36
- package/dist/components/TimePicker.js.map +1 -1
- package/dist/components/Tiptap.d.ts +43 -0
- package/dist/components/Tiptap.d.ts.map +1 -0
- package/dist/components/Tiptap.js +96 -0
- package/dist/components/Tiptap.js.map +1 -0
- package/dist/components/Toggle.d.ts +13 -8
- package/dist/components/Toggle.d.ts.map +1 -1
- package/dist/components/Toggle.js +13 -42
- package/dist/components/Toggle.js.map +1 -1
- package/dist/components/ToggleGroup.d.ts +11 -10
- package/dist/components/ToggleGroup.d.ts.map +1 -1
- package/dist/components/ToggleGroup.js +11 -65
- package/dist/components/ToggleGroup.js.map +1 -1
- package/dist/components/Tooltip.d.ts +18 -8
- package/dist/components/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip.js +18 -47
- package/dist/components/Tooltip.js.map +1 -1
- package/dist/components/index.d.ts +37 -45
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +35 -43
- package/dist/fault/AppFaultBoundary.d.ts +18 -0
- package/dist/fault/AppFaultBoundary.d.ts.map +1 -0
- package/dist/fault/AppFaultBoundary.js +24 -0
- package/dist/fault/AppFaultBoundary.js.map +1 -0
- package/dist/fault/AppFaultProvider.d.ts +43 -0
- package/dist/fault/AppFaultProvider.d.ts.map +1 -0
- package/dist/fault/AppFaultProvider.js +192 -0
- package/dist/fault/AppFaultProvider.js.map +1 -0
- package/dist/fault/FaultFallback.d.ts +16 -0
- package/dist/fault/FaultFallback.d.ts.map +1 -0
- package/dist/fault/FaultFallback.js +67 -0
- package/dist/fault/FaultFallback.js.map +1 -0
- package/dist/fault/buildSupportBundle.d.ts +3 -0
- package/dist/fault/buildSupportBundle.d.ts.map +1 -0
- package/dist/fault/buildSupportBundle.js +22 -0
- package/dist/fault/buildSupportBundle.js.map +1 -0
- package/dist/fault/index.d.ts +8 -0
- package/dist/fault/index.d.ts.map +1 -0
- package/dist/fault/index.js +7 -0
- package/dist/fault/isIgnorableGlobalError.d.ts +3 -0
- package/dist/fault/isIgnorableGlobalError.d.ts.map +1 -0
- package/dist/fault/isIgnorableGlobalError.js +14 -0
- package/dist/fault/isIgnorableGlobalError.js.map +1 -0
- package/dist/fault/types.d.ts +18 -0
- package/dist/fault/types.d.ts.map +1 -0
- package/dist/fault/useUiWatchdog.d.ts +13 -0
- package/dist/fault/useUiWatchdog.d.ts.map +1 -0
- package/dist/fault/useUiWatchdog.js +38 -0
- package/dist/fault/useUiWatchdog.js.map +1 -0
- package/dist/forms/Field.d.ts +19 -31
- package/dist/forms/Field.d.ts.map +1 -1
- package/dist/forms/Field.js +28 -164
- package/dist/forms/Field.js.map +1 -1
- package/dist/forms/SchemaFormEngine.d.ts +5 -4
- package/dist/forms/SchemaFormEngine.d.ts.map +1 -1
- package/dist/forms/SchemaFormEngine.js +36 -16
- package/dist/forms/SchemaFormEngine.js.map +1 -1
- package/dist/forms/SchemaFormFieldNode.d.ts +13 -0
- package/dist/forms/SchemaFormFieldNode.d.ts.map +1 -0
- package/dist/forms/SchemaFormFieldNode.js +48 -0
- package/dist/forms/SchemaFormFieldNode.js.map +1 -0
- package/dist/forms/assertSchemaRegistry.d.ts +18 -0
- package/dist/forms/assertSchemaRegistry.d.ts.map +1 -0
- package/dist/forms/assertSchemaRegistry.js +71 -0
- package/dist/forms/assertSchemaRegistry.js.map +1 -0
- package/dist/forms/builtin-field-loaders.d.ts +11 -0
- package/dist/forms/builtin-field-loaders.d.ts.map +1 -0
- package/dist/forms/builtin-field-loaders.js +31 -0
- package/dist/forms/builtin-field-loaders.js.map +1 -0
- package/dist/forms/components/FieldWrap.d.ts +7 -1
- package/dist/forms/components/FieldWrap.d.ts.map +1 -1
- package/dist/forms/components/FieldWrap.js +17 -23
- package/dist/forms/components/FieldWrap.js.map +1 -1
- package/dist/forms/components/ModalTabs.d.ts +28 -13
- package/dist/forms/components/ModalTabs.d.ts.map +1 -1
- package/dist/forms/components/ModalTabs.js +99 -30
- package/dist/forms/components/ModalTabs.js.map +1 -1
- package/dist/forms/components/index.d.ts +3 -2
- package/dist/forms/components/index.d.ts.map +1 -1
- package/dist/forms/components/schemaErrors.d.ts +5 -0
- package/dist/forms/components/schemaErrors.d.ts.map +1 -0
- package/dist/forms/components/schemaErrors.js +34 -0
- package/dist/forms/components/schemaErrors.js.map +1 -0
- package/dist/forms/datetime.d.ts +12 -0
- package/dist/forms/datetime.d.ts.map +1 -0
- package/dist/forms/datetime.js +34 -0
- package/dist/forms/datetime.js.map +1 -0
- package/dist/forms/engine/context.d.ts +4 -19
- package/dist/forms/engine/context.d.ts.map +1 -1
- package/dist/forms/engine/context.js.map +1 -1
- package/dist/forms/fields/CheckboxSelectField.d.ts +3 -3
- package/dist/forms/fields/CheckboxSelectField.d.ts.map +1 -1
- package/dist/forms/fields/CheckboxSelectField.js +1 -3
- package/dist/forms/fields/CheckboxSelectField.js.map +1 -1
- package/dist/forms/fields/CodeEditorField.d.ts +3 -3
- package/dist/forms/fields/CodeEditorField.d.ts.map +1 -1
- package/dist/forms/fields/CodeEditorField.js +7 -7
- package/dist/forms/fields/CodeEditorField.js.map +1 -1
- package/dist/forms/fields/ColorField.d.ts +1 -1
- package/dist/forms/fields/ColorField.d.ts.map +1 -1
- package/dist/forms/fields/ColorField.js +4 -5
- package/dist/forms/fields/ColorField.js.map +1 -1
- package/dist/forms/fields/ComboboxField.d.ts +4 -5
- package/dist/forms/fields/ComboboxField.d.ts.map +1 -1
- package/dist/forms/fields/ComboboxField.js +2 -5
- package/dist/forms/fields/ComboboxField.js.map +1 -1
- package/dist/forms/fields/DateTimeField.d.ts +1 -1
- package/dist/forms/fields/DateTimeField.d.ts.map +1 -1
- package/dist/forms/fields/DateTimeField.js +22 -18
- package/dist/forms/fields/DateTimeField.js.map +1 -1
- package/dist/forms/fields/GroupField.d.ts +2 -2
- package/dist/forms/fields/GroupField.d.ts.map +1 -1
- package/dist/forms/fields/GroupField.js +0 -1
- package/dist/forms/fields/GroupField.js.map +1 -1
- package/dist/forms/fields/LightswitchField.d.ts +1 -1
- package/dist/forms/fields/LightswitchField.d.ts.map +1 -1
- package/dist/forms/fields/LightswitchField.js +2 -6
- package/dist/forms/fields/LightswitchField.js.map +1 -1
- package/dist/forms/fields/NumberField.d.ts +1 -1
- package/dist/forms/fields/NumberField.d.ts.map +1 -1
- package/dist/forms/fields/NumberField.js +4 -5
- package/dist/forms/fields/NumberField.js.map +1 -1
- package/dist/forms/fields/RadioGroupField.d.ts +2 -2
- package/dist/forms/fields/RadioGroupField.d.ts.map +1 -1
- package/dist/forms/fields/RadioGroupField.js +14 -39
- package/dist/forms/fields/RadioGroupField.js.map +1 -1
- package/dist/forms/fields/SelectField.d.ts +2 -2
- package/dist/forms/fields/SelectField.d.ts.map +1 -1
- package/dist/forms/fields/SelectField.js +1 -2
- package/dist/forms/fields/SelectField.js.map +1 -1
- package/dist/forms/fields/TextField.d.ts +1 -1
- package/dist/forms/fields/TextField.d.ts.map +1 -1
- package/dist/forms/fields/TextField.js +3 -4
- package/dist/forms/fields/TextField.js.map +1 -1
- package/dist/forms/fields/TextareaField.d.ts +1 -1
- package/dist/forms/fields/TextareaField.d.ts.map +1 -1
- package/dist/forms/fields/TextareaField.js +3 -5
- package/dist/forms/fields/TextareaField.js.map +1 -1
- package/dist/forms/index.d.ts +12 -7
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +9 -7
- package/dist/forms/registry.d.ts +4 -1
- package/dist/forms/registry.d.ts.map +1 -1
- package/dist/forms/registry.js +18 -50
- package/dist/forms/registry.js.map +1 -1
- package/dist/forms/useEngineField.d.ts +1 -1
- package/dist/forms/useEngineField.d.ts.map +1 -1
- package/dist/forms/useEngineField.js.map +1 -1
- package/dist/forms/utils.d.ts +6 -0
- package/dist/forms/utils.d.ts.map +1 -0
- package/dist/forms/utils.js +14 -0
- package/dist/forms/utils.js.map +1 -0
- package/dist/hooks/index.d.ts +1 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -2
- package/dist/hooks/useTranslation.d.ts +2 -1
- package/dist/hooks/useTranslation.d.ts.map +1 -1
- package/dist/hooks/useTranslation.js +3 -5
- package/dist/hooks/useTranslation.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -2
- package/dist/utils/cn.d.ts +4 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +11 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/craftHostBridge.d.ts +3 -2
- package/dist/utils/craftHostBridge.d.ts.map +1 -1
- package/dist/utils/craftHostBridge.js +1 -0
- package/dist/utils/craftHostBridge.js.map +1 -1
- package/dist/utils/create-plugin-kit-component.d.ts +16 -0
- package/dist/utils/create-plugin-kit-component.d.ts.map +1 -0
- package/dist/utils/create-plugin-kit-component.js +97 -0
- package/dist/utils/create-plugin-kit-component.js.map +1 -0
- package/dist/utils/index.d.ts +8 -19
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +7 -73
- package/dist/utils/isHostEvent.d.ts +7 -0
- package/dist/utils/isHostEvent.d.ts.map +1 -0
- package/dist/utils/isHostEvent.js +13 -0
- package/dist/utils/isHostEvent.js.map +1 -0
- package/dist/utils/lit-react-booleans.d.ts +9 -0
- package/dist/utils/lit-react-booleans.d.ts.map +1 -0
- package/dist/utils/lit-react-booleans.js +17 -0
- package/dist/utils/lit-react-booleans.js.map +1 -0
- package/dist/utils/pk-change.d.ts +5 -0
- package/dist/utils/pk-change.d.ts.map +1 -0
- package/dist/utils/pk-change.js +13 -0
- package/dist/utils/pk-change.js.map +1 -0
- package/package.json +34 -80
- package/style.css +16 -0
- package/tailwind-preflight-scope.css +28 -0
- package/tailwind-theme.css +245 -0
- package/vite-dev.mjs +22 -2
- package/dist/_virtual/_rolldown/runtime.js +0 -34
- package/dist/components/Command.d.ts +0 -26
- package/dist/components/Command.d.ts.map +0 -1
- package/dist/components/Command.js +0 -94
- package/dist/components/Command.js.map +0 -1
- package/dist/components/FadeIn.d.ts +0 -12
- package/dist/components/FadeIn.d.ts.map +0 -1
- package/dist/components/FadeIn.js +0 -24
- package/dist/components/FadeIn.js.map +0 -1
- package/dist/components/Label.d.ts +0 -4
- package/dist/components/Label.d.ts.map +0 -1
- package/dist/components/Label.js +0 -15
- package/dist/components/Label.js.map +0 -1
- package/dist/components/Markdown.d.ts +0 -11
- package/dist/components/Markdown.d.ts.map +0 -1
- package/dist/components/Markdown.js +0 -46
- package/dist/components/Markdown.js.map +0 -1
- package/dist/components/MenuButton.d.ts +0 -40
- package/dist/components/MenuButton.d.ts.map +0 -1
- package/dist/components/MenuButton.js +0 -122
- package/dist/components/MenuButton.js.map +0 -1
- package/dist/components/ModalTabs.d.ts +0 -8
- package/dist/components/ModalTabs.d.ts.map +0 -1
- package/dist/components/ModalTabs.js +0 -37
- package/dist/components/ModalTabs.js.map +0 -1
- package/dist/components/PaneTabs.d.ts +0 -8
- package/dist/components/PaneTabs.d.ts.map +0 -1
- package/dist/components/PaneTabs.js +0 -37
- package/dist/components/PaneTabs.js.map +0 -1
- package/dist/components/SlideUp.d.ts +0 -12
- package/dist/components/SlideUp.d.ts.map +0 -1
- package/dist/components/SlideUp.js +0 -36
- package/dist/components/SlideUp.js.map +0 -1
- package/dist/components/Slot.d.ts +0 -6
- package/dist/components/Slot.d.ts.map +0 -1
- package/dist/components/Slot.js +0 -52
- package/dist/components/Slot.js.map +0 -1
- package/dist/components/Table.d.ts +0 -10
- package/dist/components/Table.d.ts.map +0 -1
- package/dist/components/Table.js +0 -64
- package/dist/components/Table.js.map +0 -1
- package/dist/components/TiptapContent.d.ts +0 -9
- package/dist/components/TiptapContent.d.ts.map +0 -1
- package/dist/components/TiptapContent.js +0 -43
- package/dist/components/TiptapContent.js.map +0 -1
- package/dist/components/TiptapEditor.d.ts +0 -43
- package/dist/components/TiptapEditor.d.ts.map +0 -1
- package/dist/components/TiptapEditor.js +0 -573
- package/dist/components/TiptapEditor.js.map +0 -1
- package/dist/components/TiptapInput.d.ts +0 -20
- package/dist/components/TiptapInput.d.ts.map +0 -1
- package/dist/components/TiptapInput.js +0 -140
- package/dist/components/TiptapInput.js.map +0 -1
- package/dist/components/VirtualizedScrollArea.d.ts +0 -25
- package/dist/components/VirtualizedScrollArea.d.ts.map +0 -1
- package/dist/components/VirtualizedScrollArea.js +0 -80
- package/dist/components/VirtualizedScrollArea.js.map +0 -1
- package/dist/components/editable-table/RowDataCells.d.ts +0 -3
- package/dist/components/editable-table/RowDataCells.d.ts.map +0 -1
- package/dist/components/editable-table/RowDataCells.js +0 -33
- package/dist/components/editable-table/RowDataCells.js.map +0 -1
- package/dist/components/editable-table/TableCell.d.ts +0 -13
- package/dist/components/editable-table/TableCell.d.ts.map +0 -1
- package/dist/components/editable-table/TableCell.js +0 -415
- package/dist/components/editable-table/TableCell.js.map +0 -1
- package/dist/components/editable-table/TableRow.d.ts +0 -3
- package/dist/components/editable-table/TableRow.d.ts.map +0 -1
- package/dist/components/editable-table/TableRow.js +0 -166
- package/dist/components/editable-table/TableRow.js.map +0 -1
- package/dist/components/editable-table/helpers.d.ts +0 -12
- package/dist/components/editable-table/helpers.d.ts.map +0 -1
- package/dist/components/editable-table/helpers.js +0 -23
- package/dist/components/editable-table/helpers.js.map +0 -1
- package/dist/components/editable-table/index.d.ts +0 -4
- package/dist/components/editable-table/index.d.ts.map +0 -1
- package/dist/components/editable-table/index.js +0 -4
- package/dist/components/editable-table/types.d.ts +0 -55
- package/dist/components/editable-table/types.d.ts.map +0 -1
- package/dist/components/editable-table/types.js +0 -0
- package/dist/components/editable-table/useEditableTableCellChange.d.ts +0 -17
- package/dist/components/editable-table/useEditableTableCellChange.d.ts.map +0 -1
- package/dist/components/editable-table/useEditableTableCellChange.js +0 -152
- package/dist/components/editable-table/useEditableTableCellChange.js.map +0 -1
- package/dist/components/editable-table/useEditableTableDnd.d.ts +0 -18
- package/dist/components/editable-table/useEditableTableDnd.d.ts.map +0 -1
- package/dist/components/editable-table/useEditableTableDnd.js +0 -55
- package/dist/components/editable-table/useEditableTableDnd.js.map +0 -1
- package/dist/components/editable-table/useEditableTableRows.d.ts +0 -17
- package/dist/components/editable-table/useEditableTableRows.d.ts.map +0 -1
- package/dist/components/editable-table/useEditableTableRows.js +0 -108
- package/dist/components/editable-table/useEditableTableRows.js.map +0 -1
- package/dist/components/tiptap/InlineVariablePickerPopover.d.ts +0 -24
- package/dist/components/tiptap/InlineVariablePickerPopover.d.ts.map +0 -1
- package/dist/components/tiptap/InlineVariablePickerPopover.js +0 -63
- package/dist/components/tiptap/InlineVariablePickerPopover.js.map +0 -1
- package/dist/components/tiptap/InsertLinkDialog.d.ts +0 -14
- package/dist/components/tiptap/InsertLinkDialog.d.ts.map +0 -1
- package/dist/components/tiptap/InsertLinkDialog.js +0 -145
- package/dist/components/tiptap/InsertLinkDialog.js.map +0 -1
- package/dist/components/tiptap/LinkBubbleMenu.d.ts +0 -10
- package/dist/components/tiptap/LinkBubbleMenu.d.ts.map +0 -1
- package/dist/components/tiptap/LinkBubbleMenu.js +0 -106
- package/dist/components/tiptap/LinkBubbleMenu.js.map +0 -1
- package/dist/components/tiptap/LinkDropdown.d.ts +0 -53
- package/dist/components/tiptap/LinkDropdown.d.ts.map +0 -1
- package/dist/components/tiptap/LinkDropdown.js +0 -155
- package/dist/components/tiptap/LinkDropdown.js.map +0 -1
- package/dist/components/tiptap/VariableCommandList.d.ts +0 -37
- package/dist/components/tiptap/VariableCommandList.d.ts.map +0 -1
- package/dist/components/tiptap/VariableCommandList.js +0 -166
- package/dist/components/tiptap/VariableCommandList.js.map +0 -1
- package/dist/components/tiptap/VariableDropdown.d.ts +0 -40
- package/dist/components/tiptap/VariableDropdown.d.ts.map +0 -1
- package/dist/components/tiptap/VariableDropdown.js +0 -121
- package/dist/components/tiptap/VariableDropdown.js.map +0 -1
- package/dist/components/tiptap/VariablePickerContext.d.ts +0 -58
- package/dist/components/tiptap/VariablePickerContext.d.ts.map +0 -1
- package/dist/components/tiptap/VariablePickerContext.js +0 -34
- package/dist/components/tiptap/VariablePickerContext.js.map +0 -1
- package/dist/components/tiptap/VariableTag.d.ts +0 -6
- package/dist/components/tiptap/VariableTag.d.ts.map +0 -1
- package/dist/components/tiptap/VariableTag.js +0 -153
- package/dist/components/tiptap/VariableTag.js.map +0 -1
- package/dist/components/tiptap/VariableTagView.d.ts +0 -3
- package/dist/components/tiptap/VariableTagView.d.ts.map +0 -1
- package/dist/components/tiptap/VariableTagView.js +0 -584
- package/dist/components/tiptap/VariableTagView.js.map +0 -1
- package/dist/components/tiptap/VariableTransformControls.d.ts +0 -37
- package/dist/components/tiptap/VariableTransformControls.d.ts.map +0 -1
- package/dist/components/tiptap/VariableTransformControls.js +0 -157
- package/dist/components/tiptap/VariableTransformControls.js.map +0 -1
- package/dist/components/tiptap/editorConfig.d.ts +0 -15
- package/dist/components/tiptap/editorConfig.d.ts.map +0 -1
- package/dist/components/tiptap/editorConfig.js +0 -191
- package/dist/components/tiptap/editorConfig.js.map +0 -1
- package/dist/components/tiptap/useInlineVariablePicker.d.ts +0 -34
- package/dist/components/tiptap/useInlineVariablePicker.d.ts.map +0 -1
- package/dist/components/tiptap/useInlineVariablePicker.js +0 -240
- package/dist/components/tiptap/useInlineVariablePicker.js.map +0 -1
- package/dist/components/tiptap/useVariablePicker.d.ts +0 -28
- package/dist/components/tiptap/useVariablePicker.d.ts.map +0 -1
- package/dist/components/tiptap/useVariablePicker.js +0 -122
- package/dist/components/tiptap/useVariablePicker.js.map +0 -1
- package/dist/components/tiptap/variablePickerUtils.d.ts +0 -11
- package/dist/components/tiptap/variablePickerUtils.d.ts.map +0 -1
- package/dist/components/tiptap/variablePickerUtils.js +0 -63
- package/dist/components/tiptap/variablePickerUtils.js.map +0 -1
- package/dist/components/tiptap/variableSerialization.d.ts +0 -53
- package/dist/components/tiptap/variableSerialization.d.ts.map +0 -1
- package/dist/components/tiptap/variableSerialization.js +0 -291
- package/dist/components/tiptap/variableSerialization.js.map +0 -1
- package/dist/css/core.css +0 -288
- package/dist/css/style.css +0 -295
- package/dist/forms/TranslationIcon.d.ts +0 -5
- package/dist/forms/TranslationIcon.d.ts.map +0 -1
- package/dist/forms/TranslationIcon.js +0 -18
- package/dist/forms/TranslationIcon.js.map +0 -1
- package/dist/forms/components/index.js +0 -3
- package/dist/forms/contexts/VariableCategoriesContext.d.ts +0 -19
- package/dist/forms/contexts/VariableCategoriesContext.d.ts.map +0 -1
- package/dist/forms/contexts/VariableCategoriesContext.js +0 -20
- package/dist/forms/contexts/VariableCategoriesContext.js.map +0 -1
- package/dist/forms/engine/FormStateStore.d.ts +0 -24
- package/dist/forms/engine/FormStateStore.d.ts.map +0 -1
- package/dist/forms/engine/FormStateStore.js +0 -97
- package/dist/forms/engine/FormStateStore.js.map +0 -1
- package/dist/forms/engine/SchemaIndex.d.ts +0 -33
- package/dist/forms/engine/SchemaIndex.d.ts.map +0 -1
- package/dist/forms/engine/SchemaIndex.js +0 -21
- package/dist/forms/engine/SchemaIndex.js.map +0 -1
- package/dist/forms/engine/ValidationEngine.d.ts +0 -13
- package/dist/forms/engine/ValidationEngine.d.ts.map +0 -1
- package/dist/forms/engine/ValidationEngine.js +0 -155
- package/dist/forms/engine/ValidationEngine.js.map +0 -1
- package/dist/forms/engine/buildGroupedMessage.d.ts +0 -2
- package/dist/forms/engine/buildGroupedMessage.d.ts.map +0 -1
- package/dist/forms/engine/buildGroupedMessage.js +0 -20
- package/dist/forms/engine/buildGroupedMessage.js.map +0 -1
- package/dist/forms/engine/rules/email.d.ts +0 -2
- package/dist/forms/engine/rules/email.d.ts.map +0 -1
- package/dist/forms/engine/rules/email.js +0 -11
- package/dist/forms/engine/rules/email.js.map +0 -1
- package/dist/forms/engine/rules/emailOrVariable.d.ts +0 -2
- package/dist/forms/engine/rules/emailOrVariable.d.ts.map +0 -1
- package/dist/forms/engine/rules/emailOrVariable.js +0 -13
- package/dist/forms/engine/rules/emailOrVariable.js.map +0 -1
- package/dist/forms/engine/rules/handle.d.ts +0 -2
- package/dist/forms/engine/rules/handle.d.ts.map +0 -1
- package/dist/forms/engine/rules/handle.js +0 -12
- package/dist/forms/engine/rules/handle.js.map +0 -1
- package/dist/forms/engine/rules/index.d.ts +0 -9
- package/dist/forms/engine/rules/index.d.ts.map +0 -1
- package/dist/forms/engine/rules/index.js +0 -35
- package/dist/forms/engine/rules/index.js.map +0 -1
- package/dist/forms/engine/rules/max.d.ts +0 -2
- package/dist/forms/engine/rules/max.d.ts.map +0 -1
- package/dist/forms/engine/rules/max.js +0 -16
- package/dist/forms/engine/rules/max.js.map +0 -1
- package/dist/forms/engine/rules/min.d.ts +0 -2
- package/dist/forms/engine/rules/min.d.ts.map +0 -1
- package/dist/forms/engine/rules/min.js +0 -16
- package/dist/forms/engine/rules/min.js.map +0 -1
- package/dist/forms/engine/rules/required.d.ts +0 -2
- package/dist/forms/engine/rules/required.d.ts.map +0 -1
- package/dist/forms/engine/rules/required.js +0 -11
- package/dist/forms/engine/rules/required.js.map +0 -1
- package/dist/forms/engine/rules/uniqueHandle.d.ts +0 -9
- package/dist/forms/engine/rules/uniqueHandle.d.ts.map +0 -1
- package/dist/forms/engine/rules/uniqueHandle.js +0 -95
- package/dist/forms/engine/rules/uniqueHandle.js.map +0 -1
- package/dist/forms/engine/rules/utils.d.ts +0 -3
- package/dist/forms/engine/rules/utils.d.ts.map +0 -1
- package/dist/forms/engine/rules/utils.js +0 -21
- package/dist/forms/engine/rules/utils.js.map +0 -1
- package/dist/forms/fields/CalculationsField.d.ts +0 -24
- package/dist/forms/fields/CalculationsField.d.ts.map +0 -1
- package/dist/forms/fields/CalculationsField.js +0 -215
- package/dist/forms/fields/CalculationsField.js.map +0 -1
- package/dist/forms/fields/CalculationsToolbar.d.ts +0 -17
- package/dist/forms/fields/CalculationsToolbar.d.ts.map +0 -1
- package/dist/forms/fields/CalculationsToolbar.js +0 -130
- package/dist/forms/fields/CalculationsToolbar.js.map +0 -1
- package/dist/forms/fields/EditableTableField.d.ts +0 -22
- package/dist/forms/fields/EditableTableField.d.ts.map +0 -1
- package/dist/forms/fields/EditableTableField.js +0 -37
- package/dist/forms/fields/EditableTableField.js.map +0 -1
- package/dist/forms/fields/ElementSelectField.d.ts +0 -20
- package/dist/forms/fields/ElementSelectField.d.ts.map +0 -1
- package/dist/forms/fields/ElementSelectField.js +0 -215
- package/dist/forms/fields/ElementSelectField.js.map +0 -1
- package/dist/forms/fields/HandleField.d.ts +0 -20
- package/dist/forms/fields/HandleField.d.ts.map +0 -1
- package/dist/forms/fields/HandleField.js +0 -70
- package/dist/forms/fields/HandleField.js.map +0 -1
- package/dist/forms/fields/ListField.d.ts +0 -18
- package/dist/forms/fields/ListField.d.ts.map +0 -1
- package/dist/forms/fields/ListField.js +0 -52
- package/dist/forms/fields/ListField.js.map +0 -1
- package/dist/forms/fields/RichTextField.d.ts +0 -24
- package/dist/forms/fields/RichTextField.d.ts.map +0 -1
- package/dist/forms/fields/RichTextField.js +0 -53
- package/dist/forms/fields/RichTextField.js.map +0 -1
- package/dist/forms/fields/StaticTableField.d.ts +0 -34
- package/dist/forms/fields/StaticTableField.d.ts.map +0 -1
- package/dist/forms/fields/StaticTableField.js +0 -128
- package/dist/forms/fields/StaticTableField.js.map +0 -1
- package/dist/forms/fields/VariablePickerField.d.ts +0 -21
- package/dist/forms/fields/VariablePickerField.d.ts.map +0 -1
- package/dist/forms/fields/VariablePickerField.js +0 -51
- package/dist/forms/fields/VariablePickerField.js.map +0 -1
- package/dist/forms/store/element-store.d.ts +0 -11
- package/dist/forms/store/element-store.d.ts.map +0 -1
- package/dist/forms/store/element-store.js +0 -41
- package/dist/forms/store/element-store.js.map +0 -1
- package/dist/forms/useEditableTableFieldBinding.d.ts +0 -13
- package/dist/forms/useEditableTableFieldBinding.d.ts.map +0 -1
- package/dist/forms/useEditableTableFieldBinding.js +0 -91
- package/dist/forms/useEditableTableFieldBinding.js.map +0 -1
- package/dist/hooks/useKeyboardShortcuts.d.ts +0 -14
- package/dist/hooks/useKeyboardShortcuts.d.ts.map +0 -1
- package/dist/hooks/useKeyboardShortcuts.js +0 -67
- package/dist/hooks/useKeyboardShortcuts.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +0 -15
- package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +0 -15
- package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js +0 -13
- package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/createClass.js +0 -21
- package/dist/node_modules/@babel/runtime/helpers/createClass.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/defineProperty.js +0 -20
- package/dist/node_modules/@babel/runtime/helpers/defineProperty.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js +0 -13
- package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js +0 -13
- package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js +0 -13
- package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js +0 -21
- package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js +0 -22
- package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js +0 -18
- package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/typeof.js +0 -18
- package/dist/node_modules/@babel/runtime/helpers/typeof.js.map +0 -1
- package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +0 -19
- package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +0 -1
- package/dist/node_modules/jexl/dist/Expression.js +0 -84
- package/dist/node_modules/jexl/dist/Expression.js.map +0 -1
- package/dist/node_modules/jexl/dist/Jexl.js +0 -165
- package/dist/node_modules/jexl/dist/Jexl.js.map +0 -1
- package/dist/node_modules/jexl/dist/Lexer.js +0 -152
- package/dist/node_modules/jexl/dist/Lexer.js.map +0 -1
- package/dist/node_modules/jexl/dist/PromiseSync.js +0 -87
- package/dist/node_modules/jexl/dist/PromiseSync.js.map +0 -1
- package/dist/node_modules/jexl/dist/evaluator/Evaluator.js +0 -98
- package/dist/node_modules/jexl/dist/evaluator/Evaluator.js.map +0 -1
- package/dist/node_modules/jexl/dist/evaluator/handlers.js +0 -162
- package/dist/node_modules/jexl/dist/evaluator/handlers.js.map +0 -1
- package/dist/node_modules/jexl/dist/grammar.js +0 -195
- package/dist/node_modules/jexl/dist/grammar.js.map +0 -1
- package/dist/node_modules/jexl/dist/parser/Parser.js +0 -135
- package/dist/node_modules/jexl/dist/parser/Parser.js.map +0 -1
- package/dist/node_modules/jexl/dist/parser/handlers.js +0 -205
- package/dist/node_modules/jexl/dist/parser/handlers.js.map +0 -1
- package/dist/node_modules/jexl/dist/parser/states.js +0 -158
- package/dist/node_modules/jexl/dist/parser/states.js.map +0 -1
- package/dist/types/global.d.d.ts +0 -1
- package/dist/types/global.d.js +0 -0
- package/dist/utils/classes.d.ts +0 -18
- package/dist/utils/classes.d.ts.map +0 -1
- package/dist/utils/classes.js +0 -25
- package/dist/utils/classes.js.map +0 -1
- package/dist/utils/config.d.ts +0 -14
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -20
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/datetime.d.ts +0 -10
- package/dist/utils/datetime.d.ts.map +0 -1
- package/dist/utils/datetime.js +0 -60
- package/dist/utils/datetime.js.map +0 -1
- package/dist/utils/documentScrollStability.d.ts +0 -7
- package/dist/utils/documentScrollStability.d.ts.map +0 -1
- package/dist/utils/documentScrollStability.js +0 -19
- package/dist/utils/documentScrollStability.js.map +0 -1
- package/dist/utils/handle.d.ts +0 -10
- package/dist/utils/handle.d.ts.map +0 -1
- package/dist/utils/handle.js +0 -51
- package/dist/utils/handle.js.map +0 -1
- package/dist/utils/hostBridge.d.ts +0 -40
- package/dist/utils/hostBridge.d.ts.map +0 -1
- package/dist/utils/hostBridge.js +0 -35
- package/dist/utils/hostBridge.js.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/portal.d.ts +0 -17
- package/dist/utils/portal.d.ts.map +0 -1
- package/dist/utils/portal.js +0 -51
- package/dist/utils/portal.js.map +0 -1
- package/dist/utils/schema.d.ts +0 -17
- package/dist/utils/schema.d.ts.map +0 -1
- package/dist/utils/schema.js +0 -56
- package/dist/utils/schema.js.map +0 -1
- package/dist/utils/schemaFieldNames.d.ts +0 -2
- package/dist/utils/schemaFieldNames.d.ts.map +0 -1
- package/dist/utils/schemaFieldNames.js +0 -16
- package/dist/utils/schemaFieldNames.js.map +0 -1
- package/dist/utils/schemaIndex.d.ts +0 -6
- package/dist/utils/schemaIndex.d.ts.map +0 -1
- package/dist/utils/schemaIndex.js +0 -31
- package/dist/utils/schemaIndex.js.map +0 -1
- package/dist/utils/schemaIndexCache.d.ts +0 -6
- package/dist/utils/schemaIndexCache.d.ts.map +0 -1
- package/dist/utils/schemaIndexCache.js +0 -32
- package/dist/utils/schemaIndexCache.js.map +0 -1
- package/dist/utils/schemaNormalize.d.ts +0 -13
- package/dist/utils/schemaNormalize.d.ts.map +0 -1
- package/dist/utils/schemaNormalize.js +0 -17
- package/dist/utils/schemaNormalize.js.map +0 -1
- package/dist/utils/store.d.ts +0 -7
- package/dist/utils/store.d.ts.map +0 -1
- package/dist/utils/store.js +0 -6
- package/dist/utils/store.js.map +0 -1
- package/dist/utils/timeOptions.d.ts +0 -6
- package/dist/utils/timeOptions.d.ts.map +0 -1
- package/dist/utils/timeOptions.js +0 -42
- package/dist/utils/timeOptions.js.map +0 -1
- package/dist/utils/tiptap.d.ts +0 -13
- package/dist/utils/tiptap.d.ts.map +0 -1
- package/dist/utils/tiptap.js +0 -39
- package/dist/utils/tiptap.js.map +0 -1
- package/dist/utils/translation.d.ts +0 -5
- package/dist/utils/translation.d.ts.map +0 -1
- package/dist/utils/translation.js +0 -21
- package/dist/utils/translation.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -4
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -253
- package/dist/utils/validation.js.map +0 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { AppFaultContext, AppFaultKind, AppFaultRecord } from './types.js';
|
|
3
|
+
type RecordFaultInput = {
|
|
4
|
+
kind: AppFaultKind;
|
|
5
|
+
message: string;
|
|
6
|
+
stack?: string;
|
|
7
|
+
tagName?: string;
|
|
8
|
+
fatal?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type AppFaultProviderProps = AppFaultContext & {
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
/** When false, skip the main-thread watchdog (useful in tests). */
|
|
13
|
+
enableWatchdog?: boolean;
|
|
14
|
+
/** Labels for the fault UI — pass translated strings from the host app. */
|
|
15
|
+
labels?: {
|
|
16
|
+
fatalTitle?: string;
|
|
17
|
+
fatalMessage?: string;
|
|
18
|
+
stuckTitle?: string;
|
|
19
|
+
stuckMessage?: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
type AppFaultContextValue = {
|
|
23
|
+
faults: AppFaultRecord[];
|
|
24
|
+
hasFatalFault: boolean;
|
|
25
|
+
isStuck: boolean;
|
|
26
|
+
recordFault: (input: RecordFaultInput) => void;
|
|
27
|
+
resetUi: () => void;
|
|
28
|
+
reload: () => void;
|
|
29
|
+
clearFaults: () => void;
|
|
30
|
+
dismissStuck: () => void;
|
|
31
|
+
};
|
|
32
|
+
export declare function AppFaultProvider({ children, meta, onResetUi, onReload, enableWatchdog, labels, }: AppFaultProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export declare function useAppFault(): AppFaultContextValue;
|
|
34
|
+
/** Optional hook — returns null outside a provider (for chrome mounted in separate portals). */
|
|
35
|
+
export declare function useAppFaultOptional(): AppFaultContextValue | null;
|
|
36
|
+
export type ResetUiButtonProps = {
|
|
37
|
+
className?: string;
|
|
38
|
+
label?: string;
|
|
39
|
+
};
|
|
40
|
+
/** Always-reachable overlay recovery — mount in builder chrome, not inside dialogs. */
|
|
41
|
+
export declare function ResetUiButton({ className, label }: ResetUiButtonProps): import("react/jsx-runtime").JSX.Element | null;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=AppFaultProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppFaultProvider.d.ts","sourceRoot":"","sources":["../../src/fault/AppFaultProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQH,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGhF,KAAK,gBAAgB,GAAG;IACpB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG;IAClD,QAAQ,EAAE,SAAS,CAAC;IACpB,mEAAmE;IACnE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2EAA2E;IAC3E,MAAM,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACL,CAAC;AAEF,KAAK,oBAAoB,GAAG;IACxB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AAOF,wBAAgB,gBAAgB,CAAC,EAC7B,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,cAAqB,EACrB,MAAM,GACT,EAAE,qBAAqB,2CA0MvB;AAED,wBAAgB,WAAW,IAAI,oBAAoB,CAQlD;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,IAAI,oBAAoB,GAAG,IAAI,CAEjE;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,KAAkB,EAAE,EAAE,kBAAkB,kDAYlF"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { AppFaultBoundary } from "./AppFaultBoundary.js";
|
|
2
|
+
import { FaultFallback } from "./FaultFallback.js";
|
|
3
|
+
import { isIgnorableGlobalError } from "./isIgnorableGlobalError.js";
|
|
4
|
+
import { useUiWatchdog } from "./useUiWatchdog.js";
|
|
5
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
6
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { recoverOverlays } from "@verbb/plugin-kit-web/plugin-kit";
|
|
8
|
+
//#region src/fault/AppFaultProvider.tsx
|
|
9
|
+
var AppFaultReactContext = createContext(null);
|
|
10
|
+
var faultKey = (input) => `${input.kind}:${input.tagName ?? ""}:${input.message.split("\n")[0]}`;
|
|
11
|
+
function AppFaultProvider({ children, meta, onResetUi, onReload, enableWatchdog = true, labels }) {
|
|
12
|
+
const [faults, setFaults] = useState([]);
|
|
13
|
+
const [hasFatalFault, setHasFatalFault] = useState(false);
|
|
14
|
+
const [isStuck, setIsStuck] = useState(false);
|
|
15
|
+
const seenRef = useRef(/* @__PURE__ */ new Map());
|
|
16
|
+
const recordFault = useCallback((input) => {
|
|
17
|
+
const key = faultKey(input);
|
|
18
|
+
const count = (seenRef.current.get(key) ?? 0) + 1;
|
|
19
|
+
seenRef.current.set(key, count);
|
|
20
|
+
const record = {
|
|
21
|
+
kind: input.kind,
|
|
22
|
+
message: input.message,
|
|
23
|
+
stack: input.stack,
|
|
24
|
+
tagName: input.tagName,
|
|
25
|
+
timestamp: Date.now(),
|
|
26
|
+
count
|
|
27
|
+
};
|
|
28
|
+
setFaults((prev) => {
|
|
29
|
+
return [record, ...prev.filter((item) => faultKey(item) !== key)].slice(0, 8);
|
|
30
|
+
});
|
|
31
|
+
if (input.fatal !== false && (input.kind === "react" || input.kind === "global")) setHasFatalFault(true);
|
|
32
|
+
}, []);
|
|
33
|
+
const resetUi = useCallback(() => {
|
|
34
|
+
const { actions, diagnostic } = recoverOverlays();
|
|
35
|
+
console.info("[plugin-kit] overlay recovery:", actions.join(", "), diagnostic.report);
|
|
36
|
+
onResetUi?.();
|
|
37
|
+
setIsStuck(false);
|
|
38
|
+
setHasFatalFault(false);
|
|
39
|
+
setFaults([]);
|
|
40
|
+
seenRef.current.clear();
|
|
41
|
+
}, [onResetUi]);
|
|
42
|
+
const reload = useCallback(() => {
|
|
43
|
+
if (onReload) {
|
|
44
|
+
onReload();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
window.location.reload();
|
|
48
|
+
}, [onReload]);
|
|
49
|
+
const clearFaults = useCallback(() => {
|
|
50
|
+
setHasFatalFault(false);
|
|
51
|
+
setFaults([]);
|
|
52
|
+
seenRef.current.clear();
|
|
53
|
+
}, []);
|
|
54
|
+
const dismissStuck = useCallback(() => {
|
|
55
|
+
setIsStuck(false);
|
|
56
|
+
}, []);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
const onResetShortcut = (event) => {
|
|
59
|
+
if (!((event.ctrlKey || event.metaKey) && event.shiftKey && (event.key === "U" || event.key === "u"))) return;
|
|
60
|
+
event.preventDefault();
|
|
61
|
+
resetUi();
|
|
62
|
+
};
|
|
63
|
+
window.addEventListener("keydown", onResetShortcut, true);
|
|
64
|
+
return () => {
|
|
65
|
+
window.removeEventListener("keydown", onResetShortcut, true);
|
|
66
|
+
};
|
|
67
|
+
}, [resetUi]);
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
const onError = (event) => {
|
|
70
|
+
if (isIgnorableGlobalError(event.message, event.error)) return;
|
|
71
|
+
recordFault({
|
|
72
|
+
kind: "global",
|
|
73
|
+
message: event.message || event.error?.message || "Unknown error",
|
|
74
|
+
stack: event.error?.stack,
|
|
75
|
+
fatal: true
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
const onRejection = (event) => {
|
|
79
|
+
const reason = event.reason;
|
|
80
|
+
const message = reason?.message ?? String(event.reason);
|
|
81
|
+
if (isIgnorableGlobalError(message, reason)) return;
|
|
82
|
+
recordFault({
|
|
83
|
+
kind: "rejection",
|
|
84
|
+
message,
|
|
85
|
+
stack: reason?.stack,
|
|
86
|
+
fatal: false
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
const onPkError = (event) => {
|
|
90
|
+
const detail = event.detail;
|
|
91
|
+
recordFault({
|
|
92
|
+
kind: "pk-error",
|
|
93
|
+
tagName: detail?.tagName,
|
|
94
|
+
message: detail?.message ?? "Web component error",
|
|
95
|
+
stack: detail?.stack,
|
|
96
|
+
fatal: false
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
window.addEventListener("error", onError);
|
|
100
|
+
window.addEventListener("unhandledrejection", onRejection);
|
|
101
|
+
window.addEventListener("pk-error", onPkError);
|
|
102
|
+
return () => {
|
|
103
|
+
window.removeEventListener("error", onError);
|
|
104
|
+
window.removeEventListener("unhandledrejection", onRejection);
|
|
105
|
+
window.removeEventListener("pk-error", onPkError);
|
|
106
|
+
};
|
|
107
|
+
}, [recordFault]);
|
|
108
|
+
useUiWatchdog({
|
|
109
|
+
enabled: enableWatchdog && !hasFatalFault,
|
|
110
|
+
onStall: () => {
|
|
111
|
+
setIsStuck(true);
|
|
112
|
+
recordFault({
|
|
113
|
+
kind: "watchdog",
|
|
114
|
+
message: "The builder stopped responding.",
|
|
115
|
+
fatal: false
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
const value = useMemo(() => ({
|
|
120
|
+
faults,
|
|
121
|
+
hasFatalFault,
|
|
122
|
+
isStuck,
|
|
123
|
+
recordFault,
|
|
124
|
+
resetUi,
|
|
125
|
+
reload,
|
|
126
|
+
clearFaults,
|
|
127
|
+
dismissStuck
|
|
128
|
+
}), [
|
|
129
|
+
faults,
|
|
130
|
+
hasFatalFault,
|
|
131
|
+
isStuck,
|
|
132
|
+
recordFault,
|
|
133
|
+
resetUi,
|
|
134
|
+
reload,
|
|
135
|
+
clearFaults,
|
|
136
|
+
dismissStuck
|
|
137
|
+
]);
|
|
138
|
+
return /* @__PURE__ */ jsx(AppFaultReactContext.Provider, {
|
|
139
|
+
value,
|
|
140
|
+
children: /* @__PURE__ */ jsx(AppFaultBoundary, {
|
|
141
|
+
onFault: (fault) => recordFault({
|
|
142
|
+
...fault,
|
|
143
|
+
fatal: true
|
|
144
|
+
}),
|
|
145
|
+
children: hasFatalFault ? /* @__PURE__ */ jsx(FaultFallback, {
|
|
146
|
+
title: labels?.fatalTitle,
|
|
147
|
+
message: labels?.fatalMessage,
|
|
148
|
+
faults,
|
|
149
|
+
meta,
|
|
150
|
+
onReload: reload,
|
|
151
|
+
onResetUi: resetUi
|
|
152
|
+
}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [isStuck ? /* @__PURE__ */ jsx("div", {
|
|
153
|
+
className: "mb-3",
|
|
154
|
+
children: /* @__PURE__ */ jsx(FaultFallback, {
|
|
155
|
+
compact: true,
|
|
156
|
+
title: labels?.stuckTitle ?? "Builder became unresponsive",
|
|
157
|
+
message: labels?.stuckMessage ?? "The page may still scroll but clicks might not work. Reset UI to close stuck overlays, or reload if the problem continues.",
|
|
158
|
+
faults,
|
|
159
|
+
meta,
|
|
160
|
+
onReload: reload,
|
|
161
|
+
onResetUi: resetUi,
|
|
162
|
+
onDismiss: dismissStuck
|
|
163
|
+
})
|
|
164
|
+
}) : null, children] })
|
|
165
|
+
})
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
function useAppFault() {
|
|
169
|
+
const ctx = useContext(AppFaultReactContext);
|
|
170
|
+
if (!ctx) throw new Error("useAppFault must be used within AppFaultProvider");
|
|
171
|
+
return ctx;
|
|
172
|
+
}
|
|
173
|
+
/** Optional hook — returns null outside a provider (for chrome mounted in separate portals). */
|
|
174
|
+
function useAppFaultOptional() {
|
|
175
|
+
return useContext(AppFaultReactContext);
|
|
176
|
+
}
|
|
177
|
+
/** Always-reachable overlay recovery — mount in builder chrome, not inside dialogs. */
|
|
178
|
+
function ResetUiButton({ className, label = "Reset UI" }) {
|
|
179
|
+
const fault = useAppFaultOptional();
|
|
180
|
+
if (!fault) return null;
|
|
181
|
+
return /* @__PURE__ */ jsx("button", {
|
|
182
|
+
type: "button",
|
|
183
|
+
className,
|
|
184
|
+
onClick: fault.resetUi,
|
|
185
|
+
title: "Close stuck dialogs and overlays",
|
|
186
|
+
children: label
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
//#endregion
|
|
190
|
+
export { AppFaultProvider, ResetUiButton, useAppFault, useAppFaultOptional };
|
|
191
|
+
|
|
192
|
+
//# sourceMappingURL=AppFaultProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppFaultProvider.js","names":[],"sources":["../../src/fault/AppFaultProvider.tsx"],"sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\nimport { recoverOverlays } from '@verbb/plugin-kit-web/plugin-kit';\n\nimport { AppFaultBoundary } from './AppFaultBoundary.js';\nimport { FaultFallback } from './FaultFallback.js';\nimport { isIgnorableGlobalError } from './isIgnorableGlobalError.js';\nimport type { AppFaultContext, AppFaultKind, AppFaultRecord } from './types.js';\nimport { useUiWatchdog } from './useUiWatchdog.js';\n\ntype RecordFaultInput = {\n kind: AppFaultKind;\n message: string;\n stack?: string;\n tagName?: string;\n fatal?: boolean;\n};\n\nexport type AppFaultProviderProps = AppFaultContext & {\n children: ReactNode;\n /** When false, skip the main-thread watchdog (useful in tests). */\n enableWatchdog?: boolean;\n /** Labels for the fault UI — pass translated strings from the host app. */\n labels?: {\n fatalTitle?: string;\n fatalMessage?: string;\n stuckTitle?: string;\n stuckMessage?: string;\n };\n};\n\ntype AppFaultContextValue = {\n faults: AppFaultRecord[];\n hasFatalFault: boolean;\n isStuck: boolean;\n recordFault: (input: RecordFaultInput) => void;\n resetUi: () => void;\n reload: () => void;\n clearFaults: () => void;\n dismissStuck: () => void;\n};\n\nconst AppFaultReactContext = createContext<AppFaultContextValue | null>(null);\n\nconst faultKey = (input: RecordFaultInput): string =>\n `${input.kind}:${input.tagName ?? ''}:${input.message.split('\\n')[0]}`;\n\nexport function AppFaultProvider({\n children,\n meta,\n onResetUi,\n onReload,\n enableWatchdog = true,\n labels,\n}: AppFaultProviderProps) {\n const [faults, setFaults] = useState<AppFaultRecord[]>([]);\n const [hasFatalFault, setHasFatalFault] = useState(false);\n const [isStuck, setIsStuck] = useState(false);\n const seenRef = useRef(new Map<string, number>());\n\n const recordFault = useCallback((input: RecordFaultInput) => {\n const key = faultKey(input);\n const count = (seenRef.current.get(key) ?? 0) + 1;\n seenRef.current.set(key, count);\n\n const record: AppFaultRecord = {\n kind: input.kind,\n message: input.message,\n stack: input.stack,\n tagName: input.tagName,\n timestamp: Date.now(),\n count,\n };\n\n setFaults((prev) => {\n const withoutDup = prev.filter((item) => faultKey(item) !== key);\n return [record, ...withoutDup].slice(0, 8);\n });\n\n if (input.fatal !== false && (input.kind === 'react' || input.kind === 'global')) {\n setHasFatalFault(true);\n }\n }, []);\n\n const resetUi = useCallback(() => {\n const { actions, diagnostic } = recoverOverlays();\n console.info('[plugin-kit] overlay recovery:', actions.join(', '), diagnostic.report);\n onResetUi?.();\n setIsStuck(false);\n setHasFatalFault(false);\n setFaults([]);\n seenRef.current.clear();\n }, [onResetUi]);\n\n const reload = useCallback(() => {\n if (onReload) {\n onReload();\n return;\n }\n\n window.location.reload();\n }, [onReload]);\n\n const clearFaults = useCallback(() => {\n setHasFatalFault(false);\n setFaults([]);\n seenRef.current.clear();\n }, []);\n\n const dismissStuck = useCallback(() => {\n setIsStuck(false);\n }, []);\n\n useEffect(() => {\n const onResetShortcut = (event: KeyboardEvent) => {\n const combo =\n (event.ctrlKey || event.metaKey) && event.shiftKey && (event.key === 'U' || event.key === 'u');\n\n if (!combo) {\n return;\n }\n\n event.preventDefault();\n resetUi();\n };\n\n window.addEventListener('keydown', onResetShortcut, true);\n\n return () => {\n window.removeEventListener('keydown', onResetShortcut, true);\n };\n }, [resetUi]);\n\n useEffect(() => {\n const onError = (event: ErrorEvent) => {\n if (isIgnorableGlobalError(event.message, event.error)) {\n return;\n }\n\n recordFault({\n kind: 'global',\n message: event.message || event.error?.message || 'Unknown error',\n stack: event.error?.stack,\n fatal: true,\n });\n };\n\n const onRejection = (event: PromiseRejectionEvent) => {\n const reason = event.reason as Error | undefined;\n const message = reason?.message ?? String(event.reason);\n\n if (isIgnorableGlobalError(message, reason)) {\n return;\n }\n\n recordFault({\n kind: 'rejection',\n message,\n stack: reason?.stack,\n fatal: false,\n });\n };\n\n const onPkError = (event: Event) => {\n const detail = (event as CustomEvent<{ tagName?: string; message?: string; stack?: string }>).detail;\n\n recordFault({\n kind: 'pk-error',\n tagName: detail?.tagName,\n message: detail?.message ?? 'Web component error',\n stack: detail?.stack,\n fatal: false,\n });\n };\n\n window.addEventListener('error', onError);\n window.addEventListener('unhandledrejection', onRejection);\n window.addEventListener('pk-error', onPkError);\n\n return () => {\n window.removeEventListener('error', onError);\n window.removeEventListener('unhandledrejection', onRejection);\n window.removeEventListener('pk-error', onPkError);\n };\n }, [recordFault]);\n\n useUiWatchdog({\n enabled: enableWatchdog && !hasFatalFault,\n onStall: () => {\n setIsStuck(true);\n recordFault({\n kind: 'watchdog',\n message: 'The builder stopped responding.',\n fatal: false,\n });\n },\n });\n\n const value = useMemo<AppFaultContextValue>(\n () => ({\n faults,\n hasFatalFault,\n isStuck,\n recordFault,\n resetUi,\n reload,\n clearFaults,\n dismissStuck,\n }),\n [faults, hasFatalFault, isStuck, recordFault, resetUi, reload, clearFaults, dismissStuck],\n );\n\n return (\n <AppFaultReactContext.Provider value={value}>\n <AppFaultBoundary\n onFault={(fault) =>\n recordFault({\n ...fault,\n fatal: true,\n })\n }\n >\n {hasFatalFault ? (\n <FaultFallback\n title={labels?.fatalTitle}\n message={labels?.fatalMessage}\n faults={faults}\n meta={meta}\n onReload={reload}\n onResetUi={resetUi}\n />\n ) : (\n <>\n {isStuck ? (\n <div className=\"mb-3\">\n <FaultFallback\n compact\n title={labels?.stuckTitle ?? 'Builder became unresponsive'}\n message={\n labels?.stuckMessage ??\n 'The page may still scroll but clicks might not work. Reset UI to close stuck overlays, or reload if the problem continues.'\n }\n faults={faults}\n meta={meta}\n onReload={reload}\n onResetUi={resetUi}\n onDismiss={dismissStuck}\n />\n </div>\n ) : null}\n {children}\n </>\n )}\n </AppFaultBoundary>\n </AppFaultReactContext.Provider>\n );\n}\n\nexport function useAppFault(): AppFaultContextValue {\n const ctx = useContext(AppFaultReactContext);\n\n if (!ctx) {\n throw new Error('useAppFault must be used within AppFaultProvider');\n }\n\n return ctx;\n}\n\n/** Optional hook — returns null outside a provider (for chrome mounted in separate portals). */\nexport function useAppFaultOptional(): AppFaultContextValue | null {\n return useContext(AppFaultReactContext);\n}\n\nexport type ResetUiButtonProps = {\n className?: string;\n label?: string;\n};\n\n/** Always-reachable overlay recovery — mount in builder chrome, not inside dialogs. */\nexport function ResetUiButton({ className, label = 'Reset UI' }: ResetUiButtonProps) {\n const fault = useAppFaultOptional();\n\n if (!fault) {\n return null;\n }\n\n return (\n <button type=\"button\" className={className} onClick={fault.resetUi} title=\"Close stuck dialogs and overlays\">\n {label}\n </button>\n );\n}\n"],"mappings":";;;;;;;;AAkDA,IAAM,uBAAuB,cAA2C,KAAK;AAE7E,IAAM,YAAY,UACd,GAAG,MAAM,KAAK,GAAG,MAAM,WAAW,GAAG,GAAG,MAAM,QAAQ,MAAM,KAAK,CAAC;AAEtE,SAAgB,iBAAiB,EAC7B,UACA,MACA,WACA,UACA,iBAAiB,MACjB,UACsB;CACtB,MAAM,CAAC,QAAQ,aAAa,SAA2B,EAAE,CAAC;CAC1D,MAAM,CAAC,eAAe,oBAAoB,SAAS,MAAM;CACzD,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAC7C,MAAM,UAAU,uBAAO,IAAI,KAAqB,CAAC;CAEjD,MAAM,cAAc,aAAa,UAA4B;EACzD,MAAM,MAAM,SAAS,MAAM;EAC3B,MAAM,SAAS,QAAQ,QAAQ,IAAI,IAAI,IAAI,KAAK;AAChD,UAAQ,QAAQ,IAAI,KAAK,MAAM;EAE/B,MAAM,SAAyB;GAC3B,MAAM,MAAM;GACZ,SAAS,MAAM;GACf,OAAO,MAAM;GACb,SAAS,MAAM;GACf,WAAW,KAAK,KAAK;GACrB;GACH;AAED,aAAW,SAAS;AAEhB,UAAO,CAAC,QAAQ,GADG,KAAK,QAAQ,SAAS,SAAS,KAAK,KAAK,IACzC,CAAW,CAAC,MAAM,GAAG,EAAE;IAC5C;AAEF,MAAI,MAAM,UAAU,UAAU,MAAM,SAAS,WAAW,MAAM,SAAS,UACnE,kBAAiB,KAAK;IAE3B,EAAE,CAAC;CAEN,MAAM,UAAU,kBAAkB;EAC9B,MAAM,EAAE,SAAS,eAAe,iBAAiB;AACjD,UAAQ,KAAK,kCAAkC,QAAQ,KAAK,KAAK,EAAE,WAAW,OAAO;AACrF,eAAa;AACb,aAAW,MAAM;AACjB,mBAAiB,MAAM;AACvB,YAAU,EAAE,CAAC;AACb,UAAQ,QAAQ,OAAO;IACxB,CAAC,UAAU,CAAC;CAEf,MAAM,SAAS,kBAAkB;AAC7B,MAAI,UAAU;AACV,aAAU;AACV;;AAGJ,SAAO,SAAS,QAAQ;IACzB,CAAC,SAAS,CAAC;CAEd,MAAM,cAAc,kBAAkB;AAClC,mBAAiB,MAAM;AACvB,YAAU,EAAE,CAAC;AACb,UAAQ,QAAQ,OAAO;IACxB,EAAE,CAAC;CAEN,MAAM,eAAe,kBAAkB;AACnC,aAAW,MAAM;IAClB,EAAE,CAAC;AAEN,iBAAgB;EACZ,MAAM,mBAAmB,UAAyB;AAI9C,OAAI,GAFC,MAAM,WAAW,MAAM,YAAY,MAAM,aAAa,MAAM,QAAQ,OAAO,MAAM,QAAQ,MAG1F;AAGJ,SAAM,gBAAgB;AACtB,YAAS;;AAGb,SAAO,iBAAiB,WAAW,iBAAiB,KAAK;AAEzD,eAAa;AACT,UAAO,oBAAoB,WAAW,iBAAiB,KAAK;;IAEjE,CAAC,QAAQ,CAAC;AAEb,iBAAgB;EACZ,MAAM,WAAW,UAAsB;AACnC,OAAI,uBAAuB,MAAM,SAAS,MAAM,MAAM,CAClD;AAGJ,eAAY;IACR,MAAM;IACN,SAAS,MAAM,WAAW,MAAM,OAAO,WAAW;IAClD,OAAO,MAAM,OAAO;IACpB,OAAO;IACV,CAAC;;EAGN,MAAM,eAAe,UAAiC;GAClD,MAAM,SAAS,MAAM;GACrB,MAAM,UAAU,QAAQ,WAAW,OAAO,MAAM,OAAO;AAEvD,OAAI,uBAAuB,SAAS,OAAO,CACvC;AAGJ,eAAY;IACR,MAAM;IACN;IACA,OAAO,QAAQ;IACf,OAAO;IACV,CAAC;;EAGN,MAAM,aAAa,UAAiB;GAChC,MAAM,SAAU,MAA8E;AAE9F,eAAY;IACR,MAAM;IACN,SAAS,QAAQ;IACjB,SAAS,QAAQ,WAAW;IAC5B,OAAO,QAAQ;IACf,OAAO;IACV,CAAC;;AAGN,SAAO,iBAAiB,SAAS,QAAQ;AACzC,SAAO,iBAAiB,sBAAsB,YAAY;AAC1D,SAAO,iBAAiB,YAAY,UAAU;AAE9C,eAAa;AACT,UAAO,oBAAoB,SAAS,QAAQ;AAC5C,UAAO,oBAAoB,sBAAsB,YAAY;AAC7D,UAAO,oBAAoB,YAAY,UAAU;;IAEtD,CAAC,YAAY,CAAC;AAEjB,eAAc;EACV,SAAS,kBAAkB,CAAC;EAC5B,eAAe;AACX,cAAW,KAAK;AAChB,eAAY;IACR,MAAM;IACN,SAAS;IACT,OAAO;IACV,CAAC;;EAET,CAAC;CAEF,MAAM,QAAQ,eACH;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACH,GACD;EAAC;EAAQ;EAAe;EAAS;EAAa;EAAS;EAAQ;EAAa;EAAa,CAC5F;AAED,QACI,oBAAC,qBAAqB,UAAtB;EAAsC;YAClC,oBAAC,kBAAD;GACI,UAAU,UACN,YAAY;IACR,GAAG;IACH,OAAO;IACV,CAAC;aAGL,gBACG,oBAAC,eAAD;IACI,OAAO,QAAQ;IACf,SAAS,QAAQ;IACT;IACF;IACN,UAAU;IACV,WAAW;IACb,CAAA,GAEF,qBAAA,YAAA,EAAA,UAAA,CACK,UACG,oBAAC,OAAD;IAAK,WAAU;cACX,oBAAC,eAAD;KACI,SAAA;KACA,OAAO,QAAQ,cAAc;KAC7B,SACI,QAAQ,gBACR;KAEI;KACF;KACN,UAAU;KACV,WAAW;KACX,WAAW;KACb,CAAA;IACA,CAAA,GACN,MACH,SACF,EAAA,CAAA;GAEQ,CAAA;EACS,CAAA;;AAIxC,SAAgB,cAAoC;CAChD,MAAM,MAAM,WAAW,qBAAqB;AAE5C,KAAI,CAAC,IACD,OAAM,IAAI,MAAM,mDAAmD;AAGvE,QAAO;;;AAIX,SAAgB,sBAAmD;AAC/D,QAAO,WAAW,qBAAqB;;;AAS3C,SAAgB,cAAc,EAAE,WAAW,QAAQ,cAAkC;CACjF,MAAM,QAAQ,qBAAqB;AAEnC,KAAI,CAAC,MACD,QAAO;AAGX,QACI,oBAAC,UAAD;EAAQ,MAAK;EAAoB;EAAW,SAAS,MAAM;EAAS,OAAM;YACrE;EACI,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { AppFaultRecord } from './types.js';
|
|
3
|
+
export type FaultFallbackProps = {
|
|
4
|
+
title?: string;
|
|
5
|
+
message?: string;
|
|
6
|
+
faults: AppFaultRecord[];
|
|
7
|
+
meta?: Record<string, unknown>;
|
|
8
|
+
onReload: () => void;
|
|
9
|
+
onResetUi?: () => void;
|
|
10
|
+
onDismiss?: () => void;
|
|
11
|
+
/** When true, show inline banner styling instead of full-panel takeover. */
|
|
12
|
+
compact?: boolean;
|
|
13
|
+
children?: ReactNode;
|
|
14
|
+
};
|
|
15
|
+
export declare function FaultFallback({ title, message, faults, meta, onReload, onResetUi, onDismiss, compact, children, }: FaultFallbackProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=FaultFallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FaultFallback.d.ts","sourceRoot":"","sources":["../../src/fault/FaultFallback.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC;AAQF,wBAAgB,aAAa,CAAC,EAC1B,KAA8B,EAC9B,OAAuG,EACvG,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,SAAS,EACT,OAAe,EACf,QAAQ,GACX,EAAE,kBAAkB,2CAgDpB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { buildSupportBundle } from "./buildSupportBundle.js";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
//#region src/fault/FaultFallback.tsx
|
|
4
|
+
var btnClass = "inline-flex items-center justify-center rounded-md border border-black/10 bg-white px-3 py-1.5 text-sm font-medium text-gray-800 shadow-sm hover:bg-gray-50 disabled:opacity-50";
|
|
5
|
+
var btnPrimaryClass = "inline-flex items-center justify-center rounded-md border border-transparent bg-[#0d78f2] px-3 py-1.5 text-sm font-medium text-white shadow-sm hover:bg-[#0b6ad9] disabled:opacity-50";
|
|
6
|
+
function FaultFallback({ title = "Something went wrong", message = "The builder hit an unexpected error. You can try resetting the UI or reloading the builder.", faults, meta, onReload, onResetUi, onDismiss, compact = false, children }) {
|
|
7
|
+
const copyDetails = async () => {
|
|
8
|
+
const text = buildSupportBundle(faults, meta);
|
|
9
|
+
try {
|
|
10
|
+
await navigator.clipboard.writeText(text);
|
|
11
|
+
} catch {
|
|
12
|
+
console.warn("[plugin-kit] support bundle:\n", text);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
16
|
+
className: compact ? "rounded-lg border border-amber-300 bg-amber-50 p-4 text-sm text-amber-950" : "rounded-lg border border-red-200 bg-red-50 p-6 text-sm text-red-900",
|
|
17
|
+
role: "alert",
|
|
18
|
+
children: [
|
|
19
|
+
/* @__PURE__ */ jsx("div", {
|
|
20
|
+
className: "font-semibold",
|
|
21
|
+
children: title
|
|
22
|
+
}),
|
|
23
|
+
/* @__PURE__ */ jsx("p", {
|
|
24
|
+
className: "mt-2 text-[13px] leading-relaxed opacity-90",
|
|
25
|
+
children: message
|
|
26
|
+
}),
|
|
27
|
+
children,
|
|
28
|
+
/* @__PURE__ */ jsxs("div", {
|
|
29
|
+
className: "mt-4 flex flex-wrap gap-2",
|
|
30
|
+
children: [
|
|
31
|
+
onResetUi ? /* @__PURE__ */ jsx("button", {
|
|
32
|
+
type: "button",
|
|
33
|
+
className: btnClass,
|
|
34
|
+
onClick: onResetUi,
|
|
35
|
+
children: "Reset UI"
|
|
36
|
+
}) : null,
|
|
37
|
+
/* @__PURE__ */ jsx("button", {
|
|
38
|
+
type: "button",
|
|
39
|
+
className: btnPrimaryClass,
|
|
40
|
+
onClick: onReload,
|
|
41
|
+
children: "Reload builder"
|
|
42
|
+
}),
|
|
43
|
+
/* @__PURE__ */ jsx("button", {
|
|
44
|
+
type: "button",
|
|
45
|
+
className: btnClass,
|
|
46
|
+
onClick: () => void copyDetails(),
|
|
47
|
+
children: "Copy details for support"
|
|
48
|
+
}),
|
|
49
|
+
onDismiss ? /* @__PURE__ */ jsx("button", {
|
|
50
|
+
type: "button",
|
|
51
|
+
className: btnClass,
|
|
52
|
+
onClick: onDismiss,
|
|
53
|
+
children: "Dismiss"
|
|
54
|
+
}) : null
|
|
55
|
+
]
|
|
56
|
+
}),
|
|
57
|
+
!compact && faults[0]?.message ? /* @__PURE__ */ jsx("pre", {
|
|
58
|
+
className: "mt-4 max-h-40 overflow-auto rounded border border-red-200/60 bg-white/70 p-3 text-xs text-red-800",
|
|
59
|
+
children: faults[0].message
|
|
60
|
+
}) : null
|
|
61
|
+
]
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//#endregion
|
|
65
|
+
export { FaultFallback };
|
|
66
|
+
|
|
67
|
+
//# sourceMappingURL=FaultFallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FaultFallback.js","names":[],"sources":["../../src/fault/FaultFallback.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { buildSupportBundle } from './buildSupportBundle.js';\nimport type { AppFaultRecord } from './types.js';\n\nexport type FaultFallbackProps = {\n title?: string;\n message?: string;\n faults: AppFaultRecord[];\n meta?: Record<string, unknown>;\n onReload: () => void;\n onResetUi?: () => void;\n onDismiss?: () => void;\n /** When true, show inline banner styling instead of full-panel takeover. */\n compact?: boolean;\n children?: ReactNode;\n};\n\nconst btnClass =\n 'inline-flex items-center justify-center rounded-md border border-black/10 bg-white px-3 py-1.5 text-sm font-medium text-gray-800 shadow-sm hover:bg-gray-50 disabled:opacity-50';\n\nconst btnPrimaryClass =\n 'inline-flex items-center justify-center rounded-md border border-transparent bg-[#0d78f2] px-3 py-1.5 text-sm font-medium text-white shadow-sm hover:bg-[#0b6ad9] disabled:opacity-50';\n\nexport function FaultFallback({\n title = 'Something went wrong',\n message = 'The builder hit an unexpected error. You can try resetting the UI or reloading the builder.',\n faults,\n meta,\n onReload,\n onResetUi,\n onDismiss,\n compact = false,\n children,\n}: FaultFallbackProps) {\n const copyDetails = async () => {\n const text = buildSupportBundle(faults, meta);\n\n try {\n await navigator.clipboard.writeText(text);\n } catch {\n console.warn('[plugin-kit] support bundle:\\n', text);\n }\n };\n\n const shellClass = compact\n ? 'rounded-lg border border-amber-300 bg-amber-50 p-4 text-sm text-amber-950'\n : 'rounded-lg border border-red-200 bg-red-50 p-6 text-sm text-red-900';\n\n return (\n <div className={shellClass} role=\"alert\">\n <div className=\"font-semibold\">{title}</div>\n <p className=\"mt-2 text-[13px] leading-relaxed opacity-90\">{message}</p>\n\n {children}\n\n <div className=\"mt-4 flex flex-wrap gap-2\">\n {onResetUi ? (\n <button type=\"button\" className={btnClass} onClick={onResetUi}>\n Reset UI\n </button>\n ) : null}\n <button type=\"button\" className={btnPrimaryClass} onClick={onReload}>\n Reload builder\n </button>\n <button type=\"button\" className={btnClass} onClick={() => void copyDetails()}>\n Copy details for support\n </button>\n {onDismiss ? (\n <button type=\"button\" className={btnClass} onClick={onDismiss}>\n Dismiss\n </button>\n ) : null}\n </div>\n\n {!compact && faults[0]?.message ? (\n <pre className=\"mt-4 max-h-40 overflow-auto rounded border border-red-200/60 bg-white/70 p-3 text-xs text-red-800\">\n {faults[0].message}\n </pre>\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;AAkBA,IAAM,WACF;AAEJ,IAAM,kBACF;AAEJ,SAAgB,cAAc,EAC1B,QAAQ,wBACR,UAAU,+FACV,QACA,MACA,UACA,WACA,WACA,UAAU,OACV,YACmB;CACnB,MAAM,cAAc,YAAY;EAC5B,MAAM,OAAO,mBAAmB,QAAQ,KAAK;AAE7C,MAAI;AACA,SAAM,UAAU,UAAU,UAAU,KAAK;UACrC;AACJ,WAAQ,KAAK,kCAAkC,KAAK;;;AAQ5D,QACI,qBAAC,OAAD;EAAK,WALU,UACb,8EACA;EAG0B,MAAK;YAAjC;GACI,oBAAC,OAAD;IAAK,WAAU;cAAiB;IAAY,CAAA;GAC5C,oBAAC,KAAD;IAAG,WAAU;cAA+C;IAAY,CAAA;GAEvE;GAED,qBAAC,OAAD;IAAK,WAAU;cAAf;KACK,YACG,oBAAC,UAAD;MAAQ,MAAK;MAAS,WAAW;MAAU,SAAS;gBAAW;MAEtD,CAAA,GACT;KACJ,oBAAC,UAAD;MAAQ,MAAK;MAAS,WAAW;MAAiB,SAAS;gBAAU;MAE5D,CAAA;KACT,oBAAC,UAAD;MAAQ,MAAK;MAAS,WAAW;MAAU,eAAe,KAAK,aAAa;gBAAE;MAErE,CAAA;KACR,YACG,oBAAC,UAAD;MAAQ,MAAK;MAAS,WAAW;MAAU,SAAS;gBAAW;MAEtD,CAAA,GACT;KACF;;GAEL,CAAC,WAAW,OAAO,IAAI,UACpB,oBAAC,OAAD;IAAK,WAAU;cACV,OAAO,GAAG;IACT,CAAA,GACN;GACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildSupportBundle.d.ts","sourceRoot":"","sources":["../../src/fault/buildSupportBundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,kBAAkB,GAC3B,QAAQ,cAAc,EAAE,EACxB,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,MAiBF,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/fault/buildSupportBundle.ts
|
|
2
|
+
var buildSupportBundle = (faults, meta) => {
|
|
3
|
+
const payload = {
|
|
4
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
5
|
+
userAgent: typeof navigator !== "undefined" ? navigator.userAgent : "",
|
|
6
|
+
url: typeof location !== "undefined" ? location.href : "",
|
|
7
|
+
meta: meta ?? {},
|
|
8
|
+
faults: faults.map((fault) => ({
|
|
9
|
+
kind: fault.kind,
|
|
10
|
+
message: fault.message,
|
|
11
|
+
stack: fault.stack,
|
|
12
|
+
tagName: fault.tagName,
|
|
13
|
+
timestamp: new Date(fault.timestamp).toISOString(),
|
|
14
|
+
count: fault.count
|
|
15
|
+
}))
|
|
16
|
+
};
|
|
17
|
+
return JSON.stringify(payload, null, 2);
|
|
18
|
+
};
|
|
19
|
+
//#endregion
|
|
20
|
+
export { buildSupportBundle };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=buildSupportBundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildSupportBundle.js","names":[],"sources":["../../src/fault/buildSupportBundle.ts"],"sourcesContent":["import type { AppFaultRecord } from './types.js';\n\nexport const buildSupportBundle = (\n faults: AppFaultRecord[],\n meta?: Record<string, unknown>,\n): string => {\n const payload = {\n timestamp: new Date().toISOString(),\n userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : '',\n url: typeof location !== 'undefined' ? location.href : '',\n meta: meta ?? {},\n faults: faults.map((fault) => ({\n kind: fault.kind,\n message: fault.message,\n stack: fault.stack,\n tagName: fault.tagName,\n timestamp: new Date(fault.timestamp).toISOString(),\n count: fault.count,\n })),\n };\n\n return JSON.stringify(payload, null, 2);\n};\n"],"mappings":";AAEA,IAAa,sBACT,QACA,SACS;CACT,MAAM,UAAU;EACZ,4BAAW,IAAI,MAAM,EAAC,aAAa;EACnC,WAAW,OAAO,cAAc,cAAc,UAAU,YAAY;EACpE,KAAK,OAAO,aAAa,cAAc,SAAS,OAAO;EACvD,MAAM,QAAQ,EAAE;EAChB,QAAQ,OAAO,KAAK,WAAW;GAC3B,MAAM,MAAM;GACZ,SAAS,MAAM;GACf,OAAO,MAAM;GACb,SAAS,MAAM;GACf,WAAW,IAAI,KAAK,MAAM,UAAU,CAAC,aAAa;GAClD,OAAO,MAAM;GAChB,EAAE;EACN;AAED,QAAO,KAAK,UAAU,SAAS,MAAM,EAAE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { AppFaultBoundary } from './AppFaultBoundary.js';
|
|
2
|
+
export { AppFaultProvider, ResetUiButton, useAppFault, useAppFaultOptional, type AppFaultProviderProps, type ResetUiButtonProps, } from './AppFaultProvider.js';
|
|
3
|
+
export { buildSupportBundle } from './buildSupportBundle.js';
|
|
4
|
+
export { FaultFallback, type FaultFallbackProps } from './FaultFallback.js';
|
|
5
|
+
export { isIgnorableGlobalError } from './isIgnorableGlobalError.js';
|
|
6
|
+
export { useUiWatchdog, type UiWatchdogOptions } from './useUiWatchdog.js';
|
|
7
|
+
export type { AppFaultContext, AppFaultKind, AppFaultRecord } from './types.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fault/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACH,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppFaultBoundary } from "./AppFaultBoundary.js";
|
|
2
|
+
import { buildSupportBundle } from "./buildSupportBundle.js";
|
|
3
|
+
import { FaultFallback } from "./FaultFallback.js";
|
|
4
|
+
import { isIgnorableGlobalError } from "./isIgnorableGlobalError.js";
|
|
5
|
+
import { useUiWatchdog } from "./useUiWatchdog.js";
|
|
6
|
+
import { AppFaultProvider, ResetUiButton, useAppFault, useAppFaultOptional } from "./AppFaultProvider.js";
|
|
7
|
+
export { AppFaultBoundary, AppFaultProvider, FaultFallback, ResetUiButton, buildSupportBundle, isIgnorableGlobalError, useAppFault, useAppFaultOptional, useUiWatchdog };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isIgnorableGlobalError.d.ts","sourceRoot":"","sources":["../../src/fault/isIgnorableGlobalError.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,EAAE,QAAQ,KAAK,KAAG,OAoBvE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/fault/isIgnorableGlobalError.ts
|
|
2
|
+
/** Errors that should not escalate to the app fault UI. */
|
|
3
|
+
var isIgnorableGlobalError = (message, error) => {
|
|
4
|
+
const text = `${message}\n${error?.message ?? ""}`.toLowerCase();
|
|
5
|
+
if (text.includes("resizeobserver loop")) return true;
|
|
6
|
+
if (text.includes("aborted") && text.includes("fetch")) return true;
|
|
7
|
+
if (text.includes("networkerror") && text.includes("fetch")) return true;
|
|
8
|
+
if (text.includes("loading chunk") && text.includes("failed")) return false;
|
|
9
|
+
return false;
|
|
10
|
+
};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { isIgnorableGlobalError };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=isIgnorableGlobalError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isIgnorableGlobalError.js","names":[],"sources":["../../src/fault/isIgnorableGlobalError.ts"],"sourcesContent":["/** Errors that should not escalate to the app fault UI. */\nexport const isIgnorableGlobalError = (message: string, error?: Error): boolean => {\n const text = `${message}\\n${error?.message ?? ''}`.toLowerCase();\n\n if (text.includes('resizeobserver loop')) {\n return true;\n }\n\n if (text.includes('aborted') && text.includes('fetch')) {\n return true;\n }\n\n if (text.includes('networkerror') && text.includes('fetch')) {\n return true;\n }\n\n if (text.includes('loading chunk') && text.includes('failed')) {\n return false;\n }\n\n return false;\n};\n"],"mappings":";;AACA,IAAa,0BAA0B,SAAiB,UAA2B;CAC/E,MAAM,OAAO,GAAG,QAAQ,IAAI,OAAO,WAAW,KAAK,aAAa;AAEhE,KAAI,KAAK,SAAS,sBAAsB,CACpC,QAAO;AAGX,KAAI,KAAK,SAAS,UAAU,IAAI,KAAK,SAAS,QAAQ,CAClD,QAAO;AAGX,KAAI,KAAK,SAAS,eAAe,IAAI,KAAK,SAAS,QAAQ,CACvD,QAAO;AAGX,KAAI,KAAK,SAAS,gBAAgB,IAAI,KAAK,SAAS,SAAS,CACzD,QAAO;AAGX,QAAO"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type AppFaultKind = 'react' | 'global' | 'rejection' | 'pk-error' | 'watchdog' | 'overlay';
|
|
2
|
+
export type AppFaultRecord = {
|
|
3
|
+
kind: AppFaultKind;
|
|
4
|
+
message: string;
|
|
5
|
+
stack?: string;
|
|
6
|
+
tagName?: string;
|
|
7
|
+
timestamp: number;
|
|
8
|
+
count: number;
|
|
9
|
+
};
|
|
10
|
+
export type AppFaultContext = {
|
|
11
|
+
/** App-specific metadata included in support bundles (menu id, site id, etc.). */
|
|
12
|
+
meta?: Record<string, unknown>;
|
|
13
|
+
/** Called after overlay recovery — reset dialog/menu React state. */
|
|
14
|
+
onResetUi?: () => void;
|
|
15
|
+
/** Soft reload — remount builder without full page navigation when provided. */
|
|
16
|
+
onReload?: () => void;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fault/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAElG,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type UiWatchdogOptions = {
|
|
2
|
+
/** Milliseconds without a heartbeat tick before reporting stuck UI. */
|
|
3
|
+
stallMs?: number;
|
|
4
|
+
/** When false, the watchdog is paused (e.g. app fault screen already shown). */
|
|
5
|
+
enabled?: boolean;
|
|
6
|
+
onStall: () => void;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Detects main-thread stalls via rAF heartbeat. Does not recover — callers show
|
|
10
|
+
* a banner or escalate to the fault UI.
|
|
11
|
+
*/
|
|
12
|
+
export declare const useUiWatchdog: ({ stallMs, enabled, onStall, }: UiWatchdogOptions) => void;
|
|
13
|
+
//# sourceMappingURL=useUiWatchdog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUiWatchdog.d.ts","sourceRoot":"","sources":["../../src/fault/useUiWatchdog.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,gCAI3B,iBAAiB,KAAG,IAyCtB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react";
|
|
2
|
+
//#region src/fault/useUiWatchdog.ts
|
|
3
|
+
/**
|
|
4
|
+
* Detects main-thread stalls via rAF heartbeat. Does not recover — callers show
|
|
5
|
+
* a banner or escalate to the fault UI.
|
|
6
|
+
*/
|
|
7
|
+
var useUiWatchdog = ({ stallMs = 3e3, enabled = true, onStall }) => {
|
|
8
|
+
const lastTickRef = useRef(performance.now());
|
|
9
|
+
const firedRef = useRef(false);
|
|
10
|
+
const onStallRef = useRef(onStall);
|
|
11
|
+
onStallRef.current = onStall;
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (!enabled) return;
|
|
14
|
+
firedRef.current = false;
|
|
15
|
+
lastTickRef.current = performance.now();
|
|
16
|
+
let rafId = 0;
|
|
17
|
+
const tick = () => {
|
|
18
|
+
lastTickRef.current = performance.now();
|
|
19
|
+
rafId = window.requestAnimationFrame(tick);
|
|
20
|
+
};
|
|
21
|
+
rafId = window.requestAnimationFrame(tick);
|
|
22
|
+
const intervalId = window.setInterval(() => {
|
|
23
|
+
if (firedRef.current) return;
|
|
24
|
+
if (performance.now() - lastTickRef.current >= stallMs) {
|
|
25
|
+
firedRef.current = true;
|
|
26
|
+
onStallRef.current();
|
|
27
|
+
}
|
|
28
|
+
}, Math.min(500, stallMs / 2));
|
|
29
|
+
return () => {
|
|
30
|
+
window.cancelAnimationFrame(rafId);
|
|
31
|
+
window.clearInterval(intervalId);
|
|
32
|
+
};
|
|
33
|
+
}, [enabled, stallMs]);
|
|
34
|
+
};
|
|
35
|
+
//#endregion
|
|
36
|
+
export { useUiWatchdog };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=useUiWatchdog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUiWatchdog.js","names":[],"sources":["../../src/fault/useUiWatchdog.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport type UiWatchdogOptions = {\n /** Milliseconds without a heartbeat tick before reporting stuck UI. */\n stallMs?: number;\n /** When false, the watchdog is paused (e.g. app fault screen already shown). */\n enabled?: boolean;\n onStall: () => void;\n};\n\n/**\n * Detects main-thread stalls via rAF heartbeat. Does not recover — callers show\n * a banner or escalate to the fault UI.\n */\nexport const useUiWatchdog = ({\n stallMs = 3000,\n enabled = true,\n onStall,\n}: UiWatchdogOptions): void => {\n const lastTickRef = useRef(performance.now());\n const firedRef = useRef(false);\n const onStallRef = useRef(onStall);\n onStallRef.current = onStall;\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n firedRef.current = false;\n lastTickRef.current = performance.now();\n\n let rafId = 0;\n\n const tick = () => {\n lastTickRef.current = performance.now();\n rafId = window.requestAnimationFrame(tick);\n };\n\n rafId = window.requestAnimationFrame(tick);\n\n const intervalId = window.setInterval(() => {\n if (firedRef.current) {\n return;\n }\n\n const elapsed = performance.now() - lastTickRef.current;\n\n if (elapsed >= stallMs) {\n firedRef.current = true;\n onStallRef.current();\n }\n }, Math.min(500, stallMs / 2));\n\n return () => {\n window.cancelAnimationFrame(rafId);\n window.clearInterval(intervalId);\n };\n }, [enabled, stallMs]);\n};\n"],"mappings":";;;;;;AAcA,IAAa,iBAAiB,EAC1B,UAAU,KACV,UAAU,MACV,cAC2B;CAC3B,MAAM,cAAc,OAAO,YAAY,KAAK,CAAC;CAC7C,MAAM,WAAW,OAAO,MAAM;CAC9B,MAAM,aAAa,OAAO,QAAQ;AAClC,YAAW,UAAU;AAErB,iBAAgB;AACZ,MAAI,CAAC,QACD;AAGJ,WAAS,UAAU;AACnB,cAAY,UAAU,YAAY,KAAK;EAEvC,IAAI,QAAQ;EAEZ,MAAM,aAAa;AACf,eAAY,UAAU,YAAY,KAAK;AACvC,WAAQ,OAAO,sBAAsB,KAAK;;AAG9C,UAAQ,OAAO,sBAAsB,KAAK;EAE1C,MAAM,aAAa,OAAO,kBAAkB;AACxC,OAAI,SAAS,QACT;AAKJ,OAFgB,YAAY,KAAK,GAAG,YAAY,WAEjC,SAAS;AACpB,aAAS,UAAU;AACnB,eAAW,SAAS;;KAEzB,KAAK,IAAI,KAAK,UAAU,EAAE,CAAC;AAE9B,eAAa;AACT,UAAO,qBAAqB,MAAM;AAClC,UAAO,cAAc,WAAW;;IAErC,CAAC,SAAS,QAAQ,CAAC"}
|
package/dist/forms/Field.d.ts
CHANGED
|
@@ -1,38 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { Slot } from '../components/Slot';
|
|
4
|
-
type FieldContextValue = {
|
|
5
|
-
id: string;
|
|
6
|
-
name: string;
|
|
7
|
-
errors: string[];
|
|
8
|
-
};
|
|
9
|
-
declare const InlineFieldErrorVisibilityContext: import('react').Context<boolean>;
|
|
10
|
-
declare const useFieldContext: () => FieldContextValue;
|
|
11
|
-
type FieldRootProps = ComponentProps<'div'> & {
|
|
12
|
-
name: string;
|
|
13
|
-
errors?: string[];
|
|
14
|
-
};
|
|
15
|
-
declare const FieldRoot: ({ name, errors, className, ...props }: FieldRootProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
declare const FieldHeader: ({ className, ...props }: ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
-
declare const FieldLabel: ({ className, ...props }: ComponentProps<typeof Label>) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
declare const FieldInstructions: ({ className, children, ...props }: ComponentProps<"p">) => import("react/jsx-runtime").JSX.Element;
|
|
19
|
-
type FieldControlProps = Omit<ComponentProps<typeof Slot>, 'className'> & {
|
|
20
|
-
className?: string;
|
|
21
|
-
};
|
|
22
|
-
declare const FieldControl: ({ className, ...props }: FieldControlProps) => import("react/jsx-runtime").JSX.Element;
|
|
23
|
-
declare const FieldErrors: ({ className, ...props }: ComponentProps<"ul">) => import("react/jsx-runtime").JSX.Element | null;
|
|
24
|
-
type FieldLayoutProps = ComponentProps<'div'> & {
|
|
1
|
+
import { default as React, ReactNode } from 'react';
|
|
2
|
+
export type FieldLayoutProps = {
|
|
25
3
|
name: string;
|
|
26
4
|
label?: string;
|
|
27
5
|
instructions?: string;
|
|
28
|
-
headerEnd?: ReactNode;
|
|
29
|
-
required?: boolean;
|
|
30
6
|
warning?: string;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
showInlineErrors?: boolean;
|
|
7
|
+
tip?: string;
|
|
8
|
+
required?: boolean;
|
|
34
9
|
translatable?: boolean;
|
|
10
|
+
errors?: string[];
|
|
11
|
+
headerEnd?: ReactNode;
|
|
12
|
+
className?: string;
|
|
13
|
+
style?: React.CSSProperties;
|
|
14
|
+
children?: ReactNode;
|
|
35
15
|
};
|
|
36
|
-
|
|
37
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Schema-form field shell. Delegates label / instructions / errors / warning / tip /
|
|
18
|
+
* required / translatable rendering to the `<pk-field>` web component, so there is no
|
|
19
|
+
* Tailwind or per-framework styling in this facade — only tokens + shadow-DOM CSS.
|
|
20
|
+
*
|
|
21
|
+
* Do not force `width: auto` on unlabeled shells here — composite controls (conditions
|
|
22
|
+
* tables, etc.) need full width. FieldWrap clusters shrink nested hosts via
|
|
23
|
+
* `[data-pk-field-wrap-controls] pk-field` in `style.css`.
|
|
24
|
+
*/
|
|
25
|
+
export declare const FieldLayout: ({ name, label, instructions, warning, tip, required, translatable, errors, headerEnd, className, style, children, }: FieldLayoutProps) => import("react/jsx-runtime").JSX.Element;
|
|
38
26
|
//# sourceMappingURL=Field.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/forms/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/forms/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI9C,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GAAI,qHAazB,gBAAgB,4CAkBlB,CAAC"}
|