@cratis/components 0.1.19 → 1.0.3
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/dist/cjs/CommandDialog/CommandDialog.js +14 -25
- package/dist/cjs/CommandDialog/CommandDialog.js.map +1 -1
- package/dist/cjs/CommandForm/fields/CheckboxField.js +2 -2
- package/dist/cjs/CommandForm/fields/CheckboxField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/DropdownField.js +5 -5
- package/dist/cjs/CommandForm/fields/DropdownField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/InputTextField.js +2 -2
- package/dist/cjs/CommandForm/fields/InputTextField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/NumberField.js +2 -2
- package/dist/cjs/CommandForm/fields/NumberField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/SliderField.js +5 -9
- package/dist/cjs/CommandForm/fields/SliderField.js.map +1 -1
- package/dist/cjs/CommandForm/fields/TextAreaField.js +2 -2
- package/dist/cjs/CommandForm/fields/TextAreaField.js.map +1 -1
- package/dist/cjs/CommandForm/index.js +35 -15
- package/dist/cjs/CommandForm/index.js.map +1 -1
- package/dist/cjs/DataTables/DataTableForObservableQuery.js +53 -1
- package/dist/cjs/DataTables/DataTableForObservableQuery.js.map +1 -1
- package/dist/cjs/DataTables/DataTableForQuery.js +19 -1
- package/dist/cjs/DataTables/DataTableForQuery.js.map +1 -1
- package/dist/cjs/Dialogs/BusyIndicatorDialog.js +2 -3
- package/dist/cjs/Dialogs/BusyIndicatorDialog.js.map +1 -1
- package/dist/cjs/Dialogs/ConfirmationDialog.js +4 -21
- package/dist/cjs/Dialogs/ConfirmationDialog.js.map +1 -1
- package/dist/cjs/Dialogs/Dialog.js +66 -0
- package/dist/cjs/Dialogs/Dialog.js.map +1 -0
- package/dist/cjs/Dialogs/index.js +4 -2
- package/dist/cjs/Dialogs/index.js.map +1 -1
- package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js +156 -0
- package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js.map +1 -0
- package/dist/cjs/ObjectContentEditor/index.js +8 -0
- package/dist/cjs/{EventModeling → ObjectContentEditor}/index.js.map +1 -1
- package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js +45 -0
- package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -0
- package/dist/cjs/ObjectNavigationalBar/index.js +8 -0
- package/dist/cjs/ObjectNavigationalBar/index.js.map +1 -0
- package/dist/cjs/SchemaEditor/NameCell.js +38 -0
- package/dist/cjs/SchemaEditor/NameCell.js.map +1 -0
- package/dist/cjs/SchemaEditor/SchemaEditor.js +352 -0
- package/dist/cjs/SchemaEditor/SchemaEditor.js.map +1 -0
- package/dist/cjs/SchemaEditor/SchemaEditor.module.css +11 -0
- package/dist/cjs/SchemaEditor/TypeCell.js +102 -0
- package/dist/cjs/SchemaEditor/TypeCell.js.map +1 -0
- package/dist/cjs/SchemaEditor/index.js +10 -0
- package/dist/cjs/SchemaEditor/index.js.map +1 -0
- package/dist/cjs/index.js +10 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/TypeFormat.js +20 -0
- package/dist/cjs/types/TypeFormat.js.map +1 -0
- package/dist/esm/CommandDialog/CommandDialog.d.ts +1 -1
- package/dist/esm/CommandDialog/CommandDialog.d.ts.map +1 -1
- package/dist/esm/CommandDialog/CommandDialog.js +15 -26
- package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
- package/dist/esm/CommandDialog/CommandDialog.stories.d.ts +1 -0
- package/dist/esm/CommandDialog/CommandDialog.stories.d.ts.map +1 -1
- package/dist/esm/CommandDialog/CommandDialog.stories.js +57 -3
- package/dist/esm/CommandDialog/CommandDialog.stories.js.map +1 -1
- package/dist/esm/CommandForm/fields/CheckboxField.d.ts +3 -2
- package/dist/esm/CommandForm/fields/CheckboxField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/CheckboxField.js +1 -1
- package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -1
- package/dist/esm/CommandForm/fields/DropdownField.d.ts +7 -6
- package/dist/esm/CommandForm/fields/DropdownField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/DropdownField.js +6 -6
- package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -1
- package/dist/esm/CommandForm/fields/Fields.stories.d.ts +13 -0
- package/dist/esm/CommandForm/fields/Fields.stories.d.ts.map +1 -0
- package/dist/esm/CommandForm/fields/Fields.stories.js +137 -0
- package/dist/esm/CommandForm/fields/Fields.stories.js.map +1 -0
- package/dist/esm/CommandForm/fields/InputTextField.d.ts +3 -2
- package/dist/esm/CommandForm/fields/InputTextField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/InputTextField.js +1 -1
- package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -1
- package/dist/esm/CommandForm/fields/NumberField.d.ts +3 -2
- package/dist/esm/CommandForm/fields/NumberField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/NumberField.js +1 -1
- package/dist/esm/CommandForm/fields/NumberField.js.map +1 -1
- package/dist/esm/CommandForm/fields/SliderField.d.ts +5 -4
- package/dist/esm/CommandForm/fields/SliderField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/SliderField.js +5 -9
- package/dist/esm/CommandForm/fields/SliderField.js.map +1 -1
- package/dist/esm/CommandForm/fields/TextAreaField.d.ts +3 -2
- package/dist/esm/CommandForm/fields/TextAreaField.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/TextAreaField.js +1 -1
- package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -1
- package/dist/esm/CommandForm/fields/index.d.ts +2 -2
- package/dist/esm/CommandForm/fields/index.d.ts.map +1 -1
- package/dist/esm/CommandForm/fields/index.js +2 -2
- package/dist/esm/CommandForm/fields/index.js.map +1 -1
- package/dist/esm/CommandForm/index.d.ts +1 -5
- package/dist/esm/CommandForm/index.d.ts.map +1 -1
- package/dist/esm/CommandForm/index.js +3 -7
- package/dist/esm/CommandForm/index.js.map +1 -1
- package/dist/esm/Common/ErrorBoundary.d.ts +1 -1
- package/dist/esm/Common/ErrorBoundary.stories.d.ts +7 -7
- package/dist/esm/Common/ErrorBoundary.stories.d.ts.map +1 -1
- package/dist/esm/Common/ErrorBoundary.stories.js +21 -5
- package/dist/esm/Common/ErrorBoundary.stories.js.map +1 -1
- package/dist/esm/Common/FormElement.stories.d.ts +8 -7
- package/dist/esm/Common/FormElement.stories.d.ts.map +1 -1
- package/dist/esm/Common/FormElement.stories.js +25 -4
- package/dist/esm/Common/FormElement.stories.js.map +1 -1
- package/dist/esm/Common/Page.stories.d.ts +7 -7
- package/dist/esm/Common/Page.stories.d.ts.map +1 -1
- package/dist/esm/Common/Page.stories.js +20 -5
- package/dist/esm/Common/Page.stories.js.map +1 -1
- package/dist/esm/DataPage/DataPage.stories.d.ts +7 -7
- package/dist/esm/DataPage/DataPage.stories.d.ts.map +1 -1
- package/dist/esm/DataPage/DataPage.stories.js +33 -5
- package/dist/esm/DataPage/DataPage.stories.js.map +1 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.d.ts +1 -0
- package/dist/esm/DataTables/DataTableForObservableQuery.d.ts.map +1 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.js +55 -3
- package/dist/esm/DataTables/DataTableForObservableQuery.js.map +1 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.d.ts +7 -7
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.d.ts.map +1 -1
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.js +55 -5
- package/dist/esm/DataTables/DataTableForObservableQuery.stories.js.map +1 -1
- package/dist/esm/DataTables/DataTableForQuery.d.ts +1 -0
- package/dist/esm/DataTables/DataTableForQuery.d.ts.map +1 -1
- package/dist/esm/DataTables/DataTableForQuery.js +21 -3
- package/dist/esm/DataTables/DataTableForQuery.js.map +1 -1
- package/dist/esm/DataTables/DataTableForQuery.stories.d.ts +7 -7
- package/dist/esm/DataTables/DataTableForQuery.stories.d.ts.map +1 -1
- package/dist/esm/DataTables/DataTableForQuery.stories.js +31 -5
- package/dist/esm/DataTables/DataTableForQuery.stories.js.map +1 -1
- package/dist/esm/Dialogs/BusyIndicatorDialog.d.ts.map +1 -1
- package/dist/esm/Dialogs/BusyIndicatorDialog.js +3 -4
- package/dist/esm/Dialogs/BusyIndicatorDialog.js.map +1 -1
- package/dist/esm/Dialogs/ConfirmationDialog.d.ts.map +1 -1
- package/dist/esm/Dialogs/ConfirmationDialog.js +6 -23
- package/dist/esm/Dialogs/ConfirmationDialog.js.map +1 -1
- package/dist/esm/Dialogs/Dialog.d.ts +23 -0
- package/dist/esm/Dialogs/Dialog.d.ts.map +1 -0
- package/dist/esm/Dialogs/Dialog.js +64 -0
- package/dist/esm/Dialogs/Dialog.js.map +1 -0
- package/dist/esm/Dialogs/index.d.ts +2 -1
- package/dist/esm/Dialogs/index.d.ts.map +1 -1
- package/dist/esm/Dialogs/index.js +2 -1
- package/dist/esm/Dialogs/index.js.map +1 -1
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts +8 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts.map +1 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.js +135 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.d.ts +10 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.d.ts.map +1 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.js +144 -0
- package/dist/esm/ObjectContentEditor/ObjectContentEditor.stories.js.map +1 -0
- package/dist/esm/ObjectContentEditor/index.d.ts +2 -0
- package/dist/esm/ObjectContentEditor/index.d.ts.map +1 -0
- package/dist/esm/ObjectContentEditor/index.js +2 -0
- package/dist/esm/ObjectContentEditor/index.js.map +1 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.d.ts +6 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.d.ts.map +1 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js +24 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.d.ts +10 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.d.ts.map +1 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.js +46 -0
- package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.stories.js.map +1 -0
- package/dist/esm/ObjectNavigationalBar/index.d.ts +2 -0
- package/dist/esm/ObjectNavigationalBar/index.d.ts.map +1 -0
- package/dist/esm/ObjectNavigationalBar/index.js +2 -0
- package/dist/esm/ObjectNavigationalBar/index.js.map +1 -0
- package/dist/esm/SchemaEditor/NameCell.d.ts +9 -0
- package/dist/esm/SchemaEditor/NameCell.d.ts.map +1 -0
- package/dist/esm/SchemaEditor/NameCell.js +17 -0
- package/dist/esm/SchemaEditor/NameCell.js.map +1 -0
- package/dist/esm/SchemaEditor/SchemaEditor.d.ts +17 -0
- package/dist/esm/SchemaEditor/SchemaEditor.d.ts.map +1 -0
- package/dist/esm/SchemaEditor/SchemaEditor.js +331 -0
- package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -0
- package/dist/esm/SchemaEditor/SchemaEditor.module.css +11 -0
- package/dist/esm/SchemaEditor/SchemaEditor.stories.d.ts +12 -0
- package/dist/esm/SchemaEditor/SchemaEditor.stories.d.ts.map +1 -0
- package/dist/esm/SchemaEditor/SchemaEditor.stories.js +158 -0
- package/dist/esm/SchemaEditor/SchemaEditor.stories.js.map +1 -0
- package/dist/esm/SchemaEditor/TypeCell.d.ts +14 -0
- package/dist/esm/SchemaEditor/TypeCell.d.ts.map +1 -0
- package/dist/esm/SchemaEditor/TypeCell.js +81 -0
- package/dist/esm/SchemaEditor/TypeCell.js.map +1 -0
- package/dist/esm/SchemaEditor/index.d.ts +4 -0
- package/dist/esm/SchemaEditor/index.d.ts.map +1 -0
- package/dist/esm/SchemaEditor/index.js +3 -0
- package/dist/esm/TimeMachine/EventsView.stories.d.ts +8 -7
- package/dist/esm/TimeMachine/EventsView.stories.d.ts.map +1 -1
- package/dist/esm/TimeMachine/EventsView.stories.js +80 -4
- package/dist/esm/TimeMachine/EventsView.stories.js.map +1 -1
- package/dist/esm/TimeMachine/Properties.stories.d.ts +9 -7
- package/dist/esm/TimeMachine/Properties.stories.d.ts.map +1 -1
- package/dist/esm/TimeMachine/Properties.stories.js +49 -4
- package/dist/esm/TimeMachine/Properties.stories.js.map +1 -1
- package/dist/esm/TimeMachine/ReadModelView.stories.d.ts +7 -7
- package/dist/esm/TimeMachine/ReadModelView.stories.d.ts.map +1 -1
- package/dist/esm/TimeMachine/ReadModelView.stories.js +79 -5
- package/dist/esm/TimeMachine/ReadModelView.stories.js.map +1 -1
- package/dist/esm/TimeMachine/TimeMachine.stories.d.ts +8 -7
- package/dist/esm/TimeMachine/TimeMachine.stories.d.ts.map +1 -1
- package/dist/esm/TimeMachine/TimeMachine.stories.js +113 -4
- package/dist/esm/TimeMachine/TimeMachine.stories.js.map +1 -1
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +10 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/types/JsonSchema.d.ts +32 -0
- package/dist/esm/types/JsonSchema.d.ts.map +1 -0
- package/dist/esm/types/JsonSchema.js +2 -0
- package/dist/esm/types/JsonSchema.js.map +1 -0
- package/dist/esm/types/TypeFormat.d.ts +6 -0
- package/dist/esm/types/TypeFormat.d.ts.map +1 -0
- package/dist/esm/types/TypeFormat.js +18 -0
- package/dist/esm/types/TypeFormat.js.map +1 -0
- package/package.json +10 -5
- package/dist/cjs/CommandForm/CommandForm.js +0 -183
- package/dist/cjs/CommandForm/CommandForm.js.map +0 -1
- package/dist/cjs/CommandForm/CommandFormField.js +0 -11
- package/dist/cjs/CommandForm/CommandFormField.js.map +0 -1
- package/dist/cjs/CommandForm/CommandFormFields.js +0 -73
- package/dist/cjs/CommandForm/CommandFormFields.js.map +0 -1
- package/dist/cjs/CommandForm/ValidationMessage.js +0 -24
- package/dist/cjs/CommandForm/ValidationMessage.js.map +0 -1
- package/dist/cjs/CommandForm/asCommandFormField.js +0 -47
- package/dist/cjs/CommandForm/asCommandFormField.js.map +0 -1
- package/dist/cjs/EventModeling/EventModeling.css +0 -146
- package/dist/cjs/EventModeling/EventModeling.js +0 -209
- package/dist/cjs/EventModeling/EventModeling.js.map +0 -1
- package/dist/cjs/EventModeling/components/Canvas.js +0 -403
- package/dist/cjs/EventModeling/components/Canvas.js.map +0 -1
- package/dist/cjs/EventModeling/components/CanvasControls.js +0 -10
- package/dist/cjs/EventModeling/components/CanvasControls.js.map +0 -1
- package/dist/cjs/EventModeling/components/Toolbox.js +0 -18
- package/dist/cjs/EventModeling/components/Toolbox.js.map +0 -1
- package/dist/cjs/EventModeling/engine/connectorGraphics.js +0 -173
- package/dist/cjs/EventModeling/engine/connectorGraphics.js.map +0 -1
- package/dist/cjs/EventModeling/engine/elementSprites.js +0 -301
- package/dist/cjs/EventModeling/engine/elementSprites.js.map +0 -1
- package/dist/cjs/EventModeling/index.js +0 -12
- package/dist/cjs/EventModeling/types.js +0 -60
- package/dist/cjs/EventModeling/types.js.map +0 -1
- package/dist/esm/CommandForm/CommandForm.d.ts +0 -49
- package/dist/esm/CommandForm/CommandForm.d.ts.map +0 -1
- package/dist/esm/CommandForm/CommandForm.js +0 -178
- package/dist/esm/CommandForm/CommandForm.js.map +0 -1
- package/dist/esm/CommandForm/CommandForm.stories.d.ts +0 -8
- package/dist/esm/CommandForm/CommandForm.stories.d.ts.map +0 -1
- package/dist/esm/CommandForm/CommandForm.stories.js +0 -45
- package/dist/esm/CommandForm/CommandForm.stories.js.map +0 -1
- package/dist/esm/CommandForm/CommandFormField.d.ts +0 -18
- package/dist/esm/CommandForm/CommandFormField.d.ts.map +0 -1
- package/dist/esm/CommandForm/CommandFormField.js +0 -9
- package/dist/esm/CommandForm/CommandFormField.js.map +0 -1
- package/dist/esm/CommandForm/CommandFormFields.d.ts +0 -11
- package/dist/esm/CommandForm/CommandFormFields.d.ts.map +0 -1
- package/dist/esm/CommandForm/CommandFormFields.js +0 -71
- package/dist/esm/CommandForm/CommandFormFields.js.map +0 -1
- package/dist/esm/CommandForm/UserRegistrationCommand.d.ts +0 -63
- package/dist/esm/CommandForm/UserRegistrationCommand.d.ts.map +0 -1
- package/dist/esm/CommandForm/UserRegistrationCommand.js +0 -143
- package/dist/esm/CommandForm/UserRegistrationCommand.js.map +0 -1
- package/dist/esm/CommandForm/ValidationMessage.d.ts +0 -8
- package/dist/esm/CommandForm/ValidationMessage.d.ts.map +0 -1
- package/dist/esm/CommandForm/ValidationMessage.js +0 -22
- package/dist/esm/CommandForm/ValidationMessage.js.map +0 -1
- package/dist/esm/CommandForm/asCommandFormField.d.ts +0 -32
- package/dist/esm/CommandForm/asCommandFormField.d.ts.map +0 -1
- package/dist/esm/CommandForm/asCommandFormField.js +0 -45
- package/dist/esm/CommandForm/asCommandFormField.js.map +0 -1
- package/dist/esm/EventModeling/EventModeling.css +0 -146
- package/dist/esm/EventModeling/EventModeling.d.ts +0 -11
- package/dist/esm/EventModeling/EventModeling.d.ts.map +0 -1
- package/dist/esm/EventModeling/EventModeling.js +0 -207
- package/dist/esm/EventModeling/EventModeling.js.map +0 -1
- package/dist/esm/EventModeling/EventModeling.stories.d.ts +0 -10
- package/dist/esm/EventModeling/EventModeling.stories.d.ts.map +0 -1
- package/dist/esm/EventModeling/EventModeling.stories.js +0 -252
- package/dist/esm/EventModeling/EventModeling.stories.js.map +0 -1
- package/dist/esm/EventModeling/components/Canvas.d.ts +0 -23
- package/dist/esm/EventModeling/components/Canvas.d.ts.map +0 -1
- package/dist/esm/EventModeling/components/Canvas.js +0 -382
- package/dist/esm/EventModeling/components/Canvas.js.map +0 -1
- package/dist/esm/EventModeling/components/CanvasControls.d.ts +0 -10
- package/dist/esm/EventModeling/components/CanvasControls.d.ts.map +0 -1
- package/dist/esm/EventModeling/components/CanvasControls.js +0 -8
- package/dist/esm/EventModeling/components/CanvasControls.js.map +0 -1
- package/dist/esm/EventModeling/components/Toolbox.d.ts +0 -9
- package/dist/esm/EventModeling/components/Toolbox.d.ts.map +0 -1
- package/dist/esm/EventModeling/components/Toolbox.js +0 -16
- package/dist/esm/EventModeling/components/Toolbox.js.map +0 -1
- package/dist/esm/EventModeling/engine/connectorGraphics.d.ts +0 -12
- package/dist/esm/EventModeling/engine/connectorGraphics.d.ts.map +0 -1
- package/dist/esm/EventModeling/engine/connectorGraphics.js +0 -151
- package/dist/esm/EventModeling/engine/connectorGraphics.js.map +0 -1
- package/dist/esm/EventModeling/engine/elementSprites.d.ts +0 -23
- package/dist/esm/EventModeling/engine/elementSprites.d.ts.map +0 -1
- package/dist/esm/EventModeling/engine/elementSprites.js +0 -276
- package/dist/esm/EventModeling/engine/elementSprites.js.map +0 -1
- package/dist/esm/EventModeling/index.d.ts +0 -3
- package/dist/esm/EventModeling/index.d.ts.map +0 -1
- package/dist/esm/EventModeling/index.js +0 -3
- package/dist/esm/EventModeling/types.d.ts +0 -79
- package/dist/esm/EventModeling/types.d.ts.map +0 -1
- package/dist/esm/EventModeling/types.js +0 -56
- package/dist/esm/EventModeling/types.js.map +0 -1
- /package/dist/esm/{EventModeling → SchemaEditor}/index.js.map +0 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useEffect, useCallback, useMemo } from 'react';
|
|
3
|
+
import { Button } from 'primereact/button';
|
|
4
|
+
import { DataTable } from 'primereact/datatable';
|
|
5
|
+
import { Column } from 'primereact/column';
|
|
6
|
+
import { Menubar } from 'primereact/menubar';
|
|
7
|
+
import { Tooltip } from 'primereact/tooltip';
|
|
8
|
+
import * as faIcons from 'react-icons/fa6';
|
|
9
|
+
import { NameCell } from './NameCell.js';
|
|
10
|
+
import { TypeCell } from './TypeCell.js';
|
|
11
|
+
import { DEFAULT_TYPE_FORMATS } from '../types/TypeFormat.js';
|
|
12
|
+
import css from './SchemaEditor.module.css';
|
|
13
|
+
|
|
14
|
+
const SchemaEditor = ({ schema, eventTypeName = '', canEdit = true, canNotEditReason, onChange, onSave, onCancel, editMode, saveDisabled = false, cancelDisabled = false, typeFormats = DEFAULT_TYPE_FORMATS }) => {
|
|
15
|
+
const [currentPath, setCurrentPath] = useState([]);
|
|
16
|
+
const [properties, setProperties] = useState([]);
|
|
17
|
+
const [currentSchema, setCurrentSchema] = useState(schema);
|
|
18
|
+
const [isEditMode, setIsEditMode] = useState(editMode ?? false);
|
|
19
|
+
const [initialSchema, setInitialSchema] = useState(schema);
|
|
20
|
+
const [validationErrors, setValidationErrors] = useState({});
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (!isEditMode) {
|
|
23
|
+
setCurrentPath([]);
|
|
24
|
+
}
|
|
25
|
+
}, [isEditMode]);
|
|
26
|
+
const validatePropertyName = useCallback((name, propertyId, allProperties) => {
|
|
27
|
+
if (!name || name.trim() === '') {
|
|
28
|
+
return 'Property name cannot be empty';
|
|
29
|
+
}
|
|
30
|
+
const validIdentifierPattern = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
31
|
+
if (!validIdentifierPattern.test(name)) {
|
|
32
|
+
return 'Property name must start with a letter or underscore and contain only letters, numbers, and underscores';
|
|
33
|
+
}
|
|
34
|
+
const duplicates = allProperties.filter(p => p.name === name && p.id !== propertyId);
|
|
35
|
+
if (duplicates.length > 0) {
|
|
36
|
+
return 'Property name must be unique';
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}, []);
|
|
40
|
+
const validateAllProperties = useCallback((properties) => {
|
|
41
|
+
const errors = {};
|
|
42
|
+
properties.forEach(prop => {
|
|
43
|
+
if (!prop.name)
|
|
44
|
+
return;
|
|
45
|
+
const error = validatePropertyName(prop.name, prop.id, properties);
|
|
46
|
+
if (error) {
|
|
47
|
+
errors[prop.id] = error;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
setValidationErrors(errors);
|
|
51
|
+
return Object.keys(errors).length === 0;
|
|
52
|
+
}, [validatePropertyName]);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
setCurrentSchema(schema);
|
|
55
|
+
setInitialSchema(JSON.parse(JSON.stringify(schema)));
|
|
56
|
+
}, [schema]);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
loadPropertiesForCurrentPath();
|
|
59
|
+
}, [currentPath, currentSchema, isEditMode]);
|
|
60
|
+
const loadPropertiesForCurrentPath = () => {
|
|
61
|
+
let targetSchema = currentSchema;
|
|
62
|
+
for (const segment of currentPath) {
|
|
63
|
+
if (targetSchema.type === 'array' && segment === '$items') {
|
|
64
|
+
targetSchema = targetSchema.items || {};
|
|
65
|
+
}
|
|
66
|
+
else if (targetSchema.properties && targetSchema.properties[segment]) {
|
|
67
|
+
targetSchema = targetSchema.properties[segment];
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const schemaProps = [];
|
|
74
|
+
if (targetSchema.properties) {
|
|
75
|
+
let idCounter = 0;
|
|
76
|
+
for (const [name, property] of Object.entries(targetSchema.properties)) {
|
|
77
|
+
schemaProps.push({
|
|
78
|
+
id: `prop-${currentPath.join('-')}-${idCounter++}`,
|
|
79
|
+
name,
|
|
80
|
+
type: property.type || 'string',
|
|
81
|
+
format: property.format,
|
|
82
|
+
description: property.description,
|
|
83
|
+
items: property.items,
|
|
84
|
+
properties: property.properties,
|
|
85
|
+
required: currentSchema.required?.includes(name) || false
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
setProperties(schemaProps);
|
|
90
|
+
if (isEditMode) {
|
|
91
|
+
validateAllProperties(schemaProps);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const updateSchemaAtPath = useCallback((path, updater) => {
|
|
95
|
+
const newSchema = JSON.parse(JSON.stringify(currentSchema));
|
|
96
|
+
if (path.length === 0) {
|
|
97
|
+
const updated = updater(newSchema);
|
|
98
|
+
setCurrentSchema(updated);
|
|
99
|
+
onChange?.(updated);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
let targetSchema = newSchema;
|
|
103
|
+
for (let i = 0; i < path.length - 1; i++) {
|
|
104
|
+
const segment = path[i];
|
|
105
|
+
if (targetSchema.type === 'array' && segment === '$items') {
|
|
106
|
+
if (!targetSchema.items) {
|
|
107
|
+
targetSchema.items = { type: 'object', properties: {} };
|
|
108
|
+
}
|
|
109
|
+
targetSchema = targetSchema.items;
|
|
110
|
+
}
|
|
111
|
+
else if (targetSchema.properties && targetSchema.properties[segment]) {
|
|
112
|
+
targetSchema = targetSchema.properties[segment];
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const lastSegment = path[path.length - 1];
|
|
116
|
+
if (targetSchema.type === 'array' && lastSegment === '$items') {
|
|
117
|
+
targetSchema.items = updater(targetSchema.items || {});
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
if (!targetSchema.properties) {
|
|
121
|
+
targetSchema.properties = {};
|
|
122
|
+
}
|
|
123
|
+
targetSchema.properties[lastSegment] = updater(targetSchema.properties[lastSegment] || {});
|
|
124
|
+
}
|
|
125
|
+
setCurrentSchema(newSchema);
|
|
126
|
+
onChange?.(newSchema);
|
|
127
|
+
}, [currentSchema, onChange]);
|
|
128
|
+
const addProperty = useCallback(() => {
|
|
129
|
+
updateSchemaAtPath(currentPath, (schema) => {
|
|
130
|
+
const newProps = { ...(schema.properties || {}) };
|
|
131
|
+
let newName = 'newProperty';
|
|
132
|
+
let counter = 1;
|
|
133
|
+
while (newProps[newName]) {
|
|
134
|
+
newName = `newProperty${counter++}`;
|
|
135
|
+
}
|
|
136
|
+
newProps[newName] = { type: 'string' };
|
|
137
|
+
return { ...schema, properties: newProps };
|
|
138
|
+
});
|
|
139
|
+
}, [currentPath, updateSchemaAtPath]);
|
|
140
|
+
const removeProperty = useCallback((propertyName) => {
|
|
141
|
+
updateSchemaAtPath(currentPath, (schema) => {
|
|
142
|
+
const newProps = { ...(schema.properties || {}) };
|
|
143
|
+
delete newProps[propertyName];
|
|
144
|
+
return { ...schema, properties: newProps };
|
|
145
|
+
});
|
|
146
|
+
}, [currentPath, updateSchemaAtPath]);
|
|
147
|
+
const updateProperty = useCallback((oldName, field, value, additionalUpdates) => {
|
|
148
|
+
updateSchemaAtPath(currentPath, (schema) => {
|
|
149
|
+
const newProps = { ...(schema.properties || {}) };
|
|
150
|
+
const prop = { ...(newProps[oldName] || {}) };
|
|
151
|
+
if (field === 'name') {
|
|
152
|
+
if (value !== oldName && !newProps[value]) {
|
|
153
|
+
newProps[value] = prop;
|
|
154
|
+
delete newProps[oldName];
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else if (field === 'type') {
|
|
158
|
+
prop.type = value;
|
|
159
|
+
if (value === 'array') {
|
|
160
|
+
prop.items = { type: 'string' };
|
|
161
|
+
delete prop.format;
|
|
162
|
+
}
|
|
163
|
+
else if (value === 'object') {
|
|
164
|
+
prop.properties = {};
|
|
165
|
+
delete prop.format;
|
|
166
|
+
delete prop.items;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
delete prop.items;
|
|
170
|
+
delete prop.properties;
|
|
171
|
+
}
|
|
172
|
+
if (additionalUpdates) {
|
|
173
|
+
if ('format' in additionalUpdates) {
|
|
174
|
+
if (additionalUpdates.format) {
|
|
175
|
+
prop.format = additionalUpdates.format;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
delete prop.format;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
newProps[oldName] = prop;
|
|
183
|
+
}
|
|
184
|
+
else if (field === 'format') {
|
|
185
|
+
if (value && value !== 'none') {
|
|
186
|
+
prop.format = value;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
delete prop.format;
|
|
190
|
+
}
|
|
191
|
+
newProps[oldName] = prop;
|
|
192
|
+
}
|
|
193
|
+
return { ...schema, properties: newProps };
|
|
194
|
+
});
|
|
195
|
+
}, [currentPath, updateSchemaAtPath]);
|
|
196
|
+
const updateArrayItemType = useCallback((propertyName, itemType) => {
|
|
197
|
+
updateSchemaAtPath(currentPath, (schema) => {
|
|
198
|
+
const newProps = { ...(schema.properties || {}) };
|
|
199
|
+
const prop = { ...(newProps[propertyName] || {}) };
|
|
200
|
+
if (itemType === 'object') {
|
|
201
|
+
prop.items = { type: 'object', properties: {} };
|
|
202
|
+
}
|
|
203
|
+
else if (itemType === 'array') {
|
|
204
|
+
prop.items = { type: 'array', items: { type: 'string' } };
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
prop.items = { type: itemType };
|
|
208
|
+
}
|
|
209
|
+
newProps[propertyName] = prop;
|
|
210
|
+
return { ...schema, properties: newProps };
|
|
211
|
+
});
|
|
212
|
+
}, [currentPath, updateSchemaAtPath]);
|
|
213
|
+
const navigateToProperty = useCallback((propertyName) => {
|
|
214
|
+
setCurrentPath([...currentPath, propertyName]);
|
|
215
|
+
}, [currentPath]);
|
|
216
|
+
const navigateToArrayItems = useCallback((propertyName) => {
|
|
217
|
+
setCurrentPath([...currentPath, propertyName, '$items']);
|
|
218
|
+
}, [currentPath]);
|
|
219
|
+
const navigateBack = useCallback(() => {
|
|
220
|
+
if (currentPath.length > 0) {
|
|
221
|
+
setCurrentPath(currentPath.slice(0, -1));
|
|
222
|
+
}
|
|
223
|
+
}, [currentPath]);
|
|
224
|
+
const navigateToBreadcrumb = useCallback((index) => {
|
|
225
|
+
const items = getBreadcrumbItems();
|
|
226
|
+
setCurrentPath(items[index].path);
|
|
227
|
+
}, [currentPath, eventTypeName]);
|
|
228
|
+
const handleSave = useCallback(() => {
|
|
229
|
+
onSave?.();
|
|
230
|
+
setIsEditMode(false);
|
|
231
|
+
}, [onSave]);
|
|
232
|
+
const handleCancel = useCallback(() => {
|
|
233
|
+
setCurrentSchema(JSON.parse(JSON.stringify(initialSchema)));
|
|
234
|
+
onChange?.(JSON.parse(JSON.stringify(initialSchema)));
|
|
235
|
+
setIsEditMode(false);
|
|
236
|
+
onCancel?.();
|
|
237
|
+
}, [initialSchema, onChange, onCancel]);
|
|
238
|
+
const handleEdit = useCallback(() => {
|
|
239
|
+
setInitialSchema(JSON.parse(JSON.stringify(currentSchema)));
|
|
240
|
+
setIsEditMode(true);
|
|
241
|
+
}, [currentSchema]);
|
|
242
|
+
const getBreadcrumbItems = () => {
|
|
243
|
+
const items = [{ name: eventTypeName, path: [] }];
|
|
244
|
+
for (let i = 0; i < currentPath.length; i++) {
|
|
245
|
+
const segment = currentPath[i];
|
|
246
|
+
if (segment === '$items') {
|
|
247
|
+
items.push({
|
|
248
|
+
name: '[items]',
|
|
249
|
+
path: currentPath.slice(0, i + 1)
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
items.push({
|
|
254
|
+
name: segment,
|
|
255
|
+
path: currentPath.slice(0, i + 1)
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return items;
|
|
260
|
+
};
|
|
261
|
+
const getCurrentDescription = useCallback(() => {
|
|
262
|
+
let targetSchema = currentSchema;
|
|
263
|
+
for (const segment of currentPath) {
|
|
264
|
+
if (targetSchema.type === 'array' && segment === '$items') {
|
|
265
|
+
targetSchema = targetSchema.items || {};
|
|
266
|
+
}
|
|
267
|
+
else if (targetSchema.properties && targetSchema.properties[segment]) {
|
|
268
|
+
targetSchema = targetSchema.properties[segment];
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
return undefined;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return targetSchema.description;
|
|
275
|
+
}, [currentSchema, currentPath]);
|
|
276
|
+
const hasValidationErrors = Object.keys(validationErrors).length > 0;
|
|
277
|
+
const menuItems = useMemo(() => [
|
|
278
|
+
...(!isEditMode ? [{
|
|
279
|
+
label: 'Edit',
|
|
280
|
+
icon: jsx(faIcons.FaPencil, { className: 'mr-2' }),
|
|
281
|
+
command: canEdit ? handleEdit : undefined,
|
|
282
|
+
className: !canEdit ? 'edit-disabled-with-reason' : undefined,
|
|
283
|
+
template: !canEdit && canNotEditReason ? (item) => (jsxs("div", { className: "p-menuitem-link p-disabled", "data-pr-tooltip": canNotEditReason, "data-pr-position": "bottom", style: { cursor: 'not-allowed', opacity: 0.6 }, children: [item.icon, jsx("span", { className: "p-menuitem-text", children: item.label })] })) : undefined
|
|
284
|
+
}] : []),
|
|
285
|
+
...(isEditMode ? [
|
|
286
|
+
...(!saveDisabled ? [{
|
|
287
|
+
label: 'Save',
|
|
288
|
+
icon: jsx(faIcons.FaCheck, { className: 'mr-2' }),
|
|
289
|
+
command: hasValidationErrors ? undefined : handleSave,
|
|
290
|
+
disabled: hasValidationErrors
|
|
291
|
+
}] : []),
|
|
292
|
+
...(!cancelDisabled ? [{
|
|
293
|
+
label: 'Cancel',
|
|
294
|
+
icon: jsx(faIcons.FaXmark, { className: 'mr-2' }),
|
|
295
|
+
command: handleCancel
|
|
296
|
+
}] : []),
|
|
297
|
+
{
|
|
298
|
+
label: 'Add Property',
|
|
299
|
+
icon: jsx(faIcons.FaPlus, { className: 'mr-2' }),
|
|
300
|
+
command: addProperty
|
|
301
|
+
}
|
|
302
|
+
] : [])
|
|
303
|
+
], [isEditMode, handleSave, handleCancel, handleEdit, addProperty, canEdit, canNotEditReason, hasValidationErrors, saveDisabled, cancelDisabled]);
|
|
304
|
+
const breadcrumbItems = getBreadcrumbItems();
|
|
305
|
+
const isAtRoot = currentPath.length === 0;
|
|
306
|
+
const currentDescription = getCurrentDescription();
|
|
307
|
+
return (jsxs("div", { className: "schema-editor", style: { display: 'flex', flexDirection: 'column', height: '100%' }, children: [jsxs("div", { className: "px-4 py-4", children: [jsx(Tooltip, { target: "[data-pr-tooltip]" }), jsx("div", { className: "schema-editor-menubar", children: jsx(Menubar, { "aria-label": "Actions", model: menuItems }) })] }), jsxs("div", { className: "px-4 py-2 border-bottom-1 surface-border", children: [jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem' }, children: [jsx(Button, { icon: jsx(faIcons.FaArrowLeft, {}), className: "p-button-text p-button-sm", onClick: navigateBack, disabled: isAtRoot, tooltip: "Navigate back", tooltipOptions: { position: 'top' } }), jsx("div", { style: { fontSize: '0.9rem', color: 'var(--text-color-secondary)', cursor: 'pointer' }, children: breadcrumbItems.map((item, index) => (jsxs("span", { children: [index > 0 && jsx("span", { className: "mx-2", children: ">" }), jsx("span", { onClick: () => navigateToBreadcrumb(index), style: { cursor: 'pointer', textDecoration: index < breadcrumbItems.length - 1 ? 'underline' : 'none' }, children: item.name })] }, index))) })] }), currentDescription && (jsxs("div", { style: { fontSize: '0.875rem', color: 'var(--text-color-secondary)', marginTop: '0.5rem', marginLeft: '2.5rem', fontStyle: 'italic', display: 'flex', alignItems: 'center', gap: '0.5rem' }, children: [jsx(faIcons.FaCircleInfo, {}), jsx("span", { children: currentDescription })] }))] }), jsxs("div", { style: { flex: 1, overflow: 'auto', padding: '1rem' }, children: [jsx(Tooltip, { target: ".schema-navigation-tooltip", mouseTrack: true, mouseTrackTop: 15 }, `nav-${eventTypeName}-${currentPath.join('/')}`), jsx(Tooltip, { target: ".schema-description-tooltip" }, `desc-${eventTypeName}-${currentPath.join('/')}`), jsxs(DataTable, { value: properties, dataKey: "id", emptyMessage: "No properties defined", rowClassName: (rowData) => {
|
|
308
|
+
if (!isEditMode && (rowData.type === 'object' || (rowData.type === 'array' && rowData.items?.type === 'object'))) {
|
|
309
|
+
return css.navigableRow;
|
|
310
|
+
}
|
|
311
|
+
return '';
|
|
312
|
+
}, onRowClick: (e) => {
|
|
313
|
+
if (!isEditMode) {
|
|
314
|
+
const rowData = e.data;
|
|
315
|
+
if (rowData.name) {
|
|
316
|
+
if (rowData.type === 'object') {
|
|
317
|
+
navigateToProperty(rowData.name);
|
|
318
|
+
}
|
|
319
|
+
else if (rowData.type === 'array' && rowData.items?.type === 'object') {
|
|
320
|
+
navigateToArrayItems(rowData.name);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}, pt: {
|
|
325
|
+
root: { style: { border: 'none' } },
|
|
326
|
+
tbody: { style: { borderTop: '1px solid var(--surface-border)' } }
|
|
327
|
+
}, children: [jsx(Column, { field: "name", header: "Property", body: (rowData) => (jsx(NameCell, { rowData: rowData, isEditMode: isEditMode, onUpdate: updateProperty, validationError: validationErrors[rowData.id] })), style: { width: '30%' } }), jsx(Column, { header: "Type", body: (rowData) => (jsx(TypeCell, { rowData: rowData, isEditMode: isEditMode, typeFormats: typeFormats, onUpdateProperty: updateProperty, onUpdateArrayItemType: updateArrayItemType, onNavigateToProperty: navigateToProperty, onNavigateToArrayItems: navigateToArrayItems, onRemoveProperty: removeProperty })), style: { width: '70%' } })] }, `${isEditMode}-${currentPath.join('/')}`)] })] }));
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
export { SchemaEditor };
|
|
331
|
+
//# sourceMappingURL=SchemaEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaEditor.js","sources":["../../../SchemaEditor/SchemaEditor.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useState, useEffect, useMemo, useCallback } from 'react';\nimport { Button } from 'primereact/button';\nimport { DataTable } from 'primereact/datatable';\nimport { Column } from 'primereact/column';\nimport { Menubar } from 'primereact/menubar';\nimport { Tooltip } from 'primereact/tooltip';\nimport * as faIcons from 'react-icons/fa6';\nimport { NameCell } from './NameCell';\nimport { TypeCell } from './TypeCell';\nimport { JsonSchema, JsonSchemaProperty, NavigationItem } from '../types/JsonSchema';\nimport { TypeFormat, DEFAULT_TYPE_FORMATS } from '../types/TypeFormat';\nimport css from './SchemaEditor.module.css';\nimport { MenuItem } from 'primereact/menuitem';\n\nexport interface SchemaEditorProps {\n schema: JsonSchema;\n eventTypeName?: string;\n canEdit?: boolean;\n canNotEditReason?: string;\n onChange?: (schema: JsonSchema) => void;\n onSave?: () => void;\n onCancel?: () => void;\n editMode?: boolean;\n saveDisabled?: boolean;\n cancelDisabled?: boolean;\n typeFormats?: TypeFormat[];\n}\n\nexport const SchemaEditor = ({ \n schema, \n eventTypeName = '', \n canEdit = true, \n canNotEditReason, \n onChange, \n onSave, \n onCancel, \n editMode, \n saveDisabled = false, \n cancelDisabled = false,\n typeFormats = DEFAULT_TYPE_FORMATS\n}: SchemaEditorProps) => {\n const [currentPath, setCurrentPath] = useState<string[]>([]);\n const [properties, setProperties] = useState<JsonSchemaProperty[]>([]);\n const [currentSchema, setCurrentSchema] = useState<JsonSchema>(schema);\n const [isEditMode, setIsEditMode] = useState(editMode ?? false);\n const [initialSchema, setInitialSchema] = useState<JsonSchema>(schema);\n const [validationErrors, setValidationErrors] = useState<Record<string, string>>({});\n\n useEffect(() => {\n if (!isEditMode) {\n setCurrentPath([]);\n }\n }, [isEditMode]);\n\n const validatePropertyName = useCallback((name: string, propertyId: string, allProperties: JsonSchemaProperty[]): string | undefined => {\n if (!name || name.trim() === '') {\n return 'Property name cannot be empty';\n }\n\n const validIdentifierPattern = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n if (!validIdentifierPattern.test(name)) {\n return 'Property name must start with a letter or underscore and contain only letters, numbers, and underscores';\n }\n\n const duplicates = allProperties.filter(p => p.name === name && p.id !== propertyId);\n if (duplicates.length > 0) {\n return 'Property name must be unique';\n }\n\n return undefined;\n }, []);\n\n const validateAllProperties = useCallback((properties: JsonSchemaProperty[]) => {\n const errors: Record<string, string> = {};\n\n properties.forEach(prop => {\n if (!prop.name) return;\n const error = validatePropertyName(prop.name, prop.id!, properties);\n if (error) {\n errors[prop.id!] = error;\n }\n });\n\n setValidationErrors(errors);\n return Object.keys(errors).length === 0;\n }, [validatePropertyName]);\n\n useEffect(() => {\n setCurrentSchema(schema);\n setInitialSchema(JSON.parse(JSON.stringify(schema)));\n }, [schema]);\n\n useEffect(() => {\n loadPropertiesForCurrentPath();\n }, [currentPath, currentSchema, isEditMode]);\n\n const loadPropertiesForCurrentPath = () => {\n let targetSchema: JsonSchema | JsonSchemaProperty = currentSchema;\n\n for (const segment of currentPath) {\n if (targetSchema.type === 'array' && segment === '$items') {\n targetSchema = targetSchema.items || {};\n } else if (targetSchema.properties && targetSchema.properties[segment]) {\n targetSchema = targetSchema.properties[segment] as JsonSchema | JsonSchemaProperty;\n } else {\n return;\n }\n }\n\n const schemaProps: JsonSchemaProperty[] = [];\n if (targetSchema.properties) {\n let idCounter = 0;\n for (const [name, property] of Object.entries(targetSchema.properties)) {\n schemaProps.push({\n id: `prop-${currentPath.join('-')}-${idCounter++}`,\n name,\n type: property.type || 'string',\n format: property.format,\n description: property.description,\n items: property.items,\n properties: property.properties,\n required: (currentSchema.required as string[] | undefined)?.includes(name) || false\n });\n }\n }\n\n setProperties(schemaProps);\n if (isEditMode) {\n validateAllProperties(schemaProps);\n }\n };\n\n const updateSchemaAtPath = useCallback((path: string[], updater: (schema: JsonSchema) => JsonSchema) => {\n const newSchema = JSON.parse(JSON.stringify(currentSchema));\n\n if (path.length === 0) {\n const updated = updater(newSchema);\n setCurrentSchema(updated);\n onChange?.(updated);\n return;\n }\n\n let targetSchema = newSchema;\n for (let i = 0; i < path.length - 1; i++) {\n const segment = path[i];\n if (targetSchema.type === 'array' && segment === '$items') {\n if (!targetSchema.items) {\n targetSchema.items = { type: 'object', properties: {} };\n }\n targetSchema = targetSchema.items;\n } else if (targetSchema.properties && targetSchema.properties[segment]) {\n targetSchema = targetSchema.properties[segment];\n }\n }\n\n const lastSegment = path[path.length - 1];\n if (targetSchema.type === 'array' && lastSegment === '$items') {\n targetSchema.items = updater(targetSchema.items || {});\n } else {\n if (!targetSchema.properties) {\n targetSchema.properties = {};\n }\n targetSchema.properties[lastSegment] = updater(targetSchema.properties[lastSegment] || {});\n }\n\n setCurrentSchema(newSchema);\n onChange?.(newSchema);\n }, [currentSchema, onChange]);\n\n const addProperty = useCallback(() => {\n updateSchemaAtPath(currentPath, (schema) => {\n const newProps = { ...(schema.properties || {}) };\n let newName = 'newProperty';\n let counter = 1;\n while (newProps[newName]) {\n newName = `newProperty${counter++}`;\n }\n newProps[newName] = { type: 'string' };\n return { ...schema, properties: newProps };\n });\n }, [currentPath, updateSchemaAtPath]);\n\n const removeProperty = useCallback((propertyName: string) => {\n updateSchemaAtPath(currentPath, (schema) => {\n const newProps = { ...(schema.properties || {}) };\n delete newProps[propertyName];\n return { ...schema, properties: newProps };\n });\n }, [currentPath, updateSchemaAtPath]);\n\n const updateProperty = useCallback((oldName: string, field: keyof JsonSchemaProperty, value: unknown, additionalUpdates?: Partial<JsonSchemaProperty>) => {\n updateSchemaAtPath(currentPath, (schema) => {\n const newProps = { ...(schema.properties || {}) };\n const prop = { ...(newProps[oldName] || {}) };\n\n if (field === 'name') {\n if (value !== oldName && !newProps[value as string]) {\n newProps[value as string] = prop;\n delete newProps[oldName];\n }\n } else if (field === 'type') {\n prop.type = value as string;\n if (value === 'array') {\n prop.items = { type: 'string' };\n delete prop.format;\n } else if (value === 'object') {\n prop.properties = {};\n delete prop.format;\n delete prop.items;\n } else {\n delete prop.items;\n delete prop.properties;\n }\n\n if (additionalUpdates) {\n if ('format' in additionalUpdates) {\n if (additionalUpdates.format) {\n prop.format = additionalUpdates.format as string;\n } else {\n delete prop.format;\n }\n }\n }\n\n newProps[oldName] = prop;\n } else if (field === 'format') {\n if (value && value !== 'none') {\n prop.format = value as string;\n } else {\n delete prop.format;\n }\n newProps[oldName] = prop;\n }\n\n return { ...schema, properties: newProps };\n });\n }, [currentPath, updateSchemaAtPath]);\n\n const updateArrayItemType = useCallback((propertyName: string, itemType: string) => {\n updateSchemaAtPath(currentPath, (schema) => {\n const newProps = { ...(schema.properties || {}) };\n const prop = { ...(newProps[propertyName] || {}) };\n\n if (itemType === 'object') {\n prop.items = { type: 'object', properties: {} };\n } else if (itemType === 'array') {\n prop.items = { type: 'array', items: { type: 'string' } };\n } else {\n prop.items = { type: itemType };\n }\n\n newProps[propertyName] = prop;\n return { ...schema, properties: newProps };\n });\n }, [currentPath, updateSchemaAtPath]);\n\n const navigateToProperty = useCallback((propertyName: string) => {\n setCurrentPath([...currentPath, propertyName]);\n }, [currentPath]);\n\n const navigateToArrayItems = useCallback((propertyName: string) => {\n setCurrentPath([...currentPath, propertyName, '$items']);\n }, [currentPath]);\n\n const navigateBack = useCallback(() => {\n if (currentPath.length > 0) {\n setCurrentPath(currentPath.slice(0, -1));\n }\n }, [currentPath]);\n\n const navigateToBreadcrumb = useCallback((index: number) => {\n const items = getBreadcrumbItems();\n setCurrentPath(items[index].path);\n }, [currentPath, eventTypeName]);\n\n const handleSave = useCallback(() => {\n onSave?.();\n setIsEditMode(false);\n }, [onSave]);\n\n const handleCancel = useCallback(() => {\n setCurrentSchema(JSON.parse(JSON.stringify(initialSchema)));\n onChange?.(JSON.parse(JSON.stringify(initialSchema)));\n setIsEditMode(false);\n onCancel?.();\n }, [initialSchema, onChange, onCancel]);\n\n const handleEdit = useCallback(() => {\n setInitialSchema(JSON.parse(JSON.stringify(currentSchema)));\n setIsEditMode(true);\n }, [currentSchema]);\n\n const getBreadcrumbItems = () => {\n const items: NavigationItem[] = [{ name: eventTypeName, path: [] }];\n\n for (let i = 0; i < currentPath.length; i++) {\n const segment = currentPath[i];\n if (segment === '$items') {\n items.push({\n name: '[items]',\n path: currentPath.slice(0, i + 1)\n });\n } else {\n items.push({\n name: segment,\n path: currentPath.slice(0, i + 1)\n });\n }\n }\n\n return items;\n };\n\n const getCurrentDescription = useCallback(() => {\n let targetSchema: JsonSchema | JsonSchemaProperty = currentSchema;\n\n for (const segment of currentPath) {\n if (targetSchema.type === 'array' && segment === '$items') {\n targetSchema = targetSchema.items || {};\n } else if (targetSchema.properties && targetSchema.properties[segment]) {\n targetSchema = targetSchema.properties[segment] as JsonSchema | JsonSchemaProperty;\n } else {\n return undefined;\n }\n }\n\n return targetSchema.description;\n }, [currentSchema, currentPath]);\n\n const hasValidationErrors = Object.keys(validationErrors).length > 0;\n\n const menuItems = useMemo(() => [\n ...(!isEditMode ? [{\n label: 'Edit',\n icon: <faIcons.FaPencil className='mr-2' />,\n command: canEdit ? handleEdit : undefined,\n className: !canEdit ? 'edit-disabled-with-reason' : undefined,\n template: !canEdit && canNotEditReason ? (item: MenuItem) => (\n <div\n className=\"p-menuitem-link p-disabled\"\n data-pr-tooltip={canNotEditReason}\n data-pr-position=\"bottom\"\n style={{ cursor: 'not-allowed', opacity: 0.6 }}\n >\n {item.icon}\n <span className=\"p-menuitem-text\">{item.label}</span>\n </div>\n ) : undefined\n }] : []),\n ...(isEditMode ? [\n ...(!saveDisabled ? [{\n label: 'Save',\n icon: <faIcons.FaCheck className='mr-2' />,\n command: hasValidationErrors ? undefined : handleSave,\n disabled: hasValidationErrors\n }] : []),\n ...(!cancelDisabled ? [{\n label: 'Cancel',\n icon: <faIcons.FaXmark className='mr-2' />,\n command: handleCancel\n }] : []),\n {\n label: 'Add Property',\n icon: <faIcons.FaPlus className='mr-2' />,\n command: addProperty\n }\n ] : [])\n ], [isEditMode, handleSave, handleCancel, handleEdit, addProperty, canEdit, canNotEditReason, hasValidationErrors, saveDisabled, cancelDisabled]);\n\n const breadcrumbItems = getBreadcrumbItems();\n const isAtRoot = currentPath.length === 0;\n const currentDescription = getCurrentDescription();\n\n return (\n <div className=\"schema-editor\" style={{ display: 'flex', flexDirection: 'column', height: '100%' }}>\n <div className=\"px-4 py-4\">\n <Tooltip target=\"[data-pr-tooltip]\" />\n <div className=\"schema-editor-menubar\">\n <Menubar aria-label=\"Actions\" model={menuItems} />\n </div>\n </div>\n\n <div className=\"px-4 py-2 border-bottom-1 surface-border\">\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <Button\n icon={<faIcons.FaArrowLeft />}\n className=\"p-button-text p-button-sm\"\n onClick={navigateBack}\n disabled={isAtRoot}\n tooltip=\"Navigate back\"\n tooltipOptions={{ position: 'top' }}\n />\n <div style={{ fontSize: '0.9rem', color: 'var(--text-color-secondary)', cursor: 'pointer' }}>\n {breadcrumbItems.map((item, index) => (\n <span key={index}>\n {index > 0 && <span className=\"mx-2\">></span>}\n <span\n onClick={() => navigateToBreadcrumb(index)}\n style={{ cursor: 'pointer', textDecoration: index < breadcrumbItems.length - 1 ? 'underline' : 'none' }}\n >\n {item.name}\n </span>\n </span>\n ))}\n </div>\n </div>\n {currentDescription && (\n <div style={{ fontSize: '0.875rem', color: 'var(--text-color-secondary)', marginTop: '0.5rem', marginLeft: '2.5rem', fontStyle: 'italic', display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <faIcons.FaCircleInfo />\n <span>{currentDescription}</span>\n </div>\n )}\n </div>\n\n <div style={{ flex: 1, overflow: 'auto', padding: '1rem' }}>\n <Tooltip key={`nav-${eventTypeName}-${currentPath.join('/')}`} target=\".schema-navigation-tooltip\" mouseTrack mouseTrackTop={15} />\n <Tooltip key={`desc-${eventTypeName}-${currentPath.join('/')}`} target=\".schema-description-tooltip\" />\n <DataTable\n key={`${isEditMode}-${currentPath.join('/')}`}\n value={properties}\n dataKey=\"id\"\n emptyMessage=\"No properties defined\"\n rowClassName={(rowData: JsonSchemaProperty) => {\n if (!isEditMode && (rowData.type === 'object' || (rowData.type === 'array' && rowData.items?.type === 'object'))) {\n return css.navigableRow;\n }\n return '';\n }}\n onRowClick={(e) => {\n if (!isEditMode) {\n const rowData = e.data as JsonSchemaProperty;\n if (rowData.name) {\n if (rowData.type === 'object') {\n navigateToProperty(rowData.name);\n } else if (rowData.type === 'array' && rowData.items?.type === 'object') {\n navigateToArrayItems(rowData.name);\n }\n }\n }\n }}\n pt={{\n root: { style: { border: 'none' } },\n tbody: { style: { borderTop: '1px solid var(--surface-border)' } }\n }}\n >\n <Column\n field=\"name\"\n header=\"Property\"\n body={(rowData: JsonSchemaProperty) => (\n <NameCell\n rowData={rowData}\n isEditMode={isEditMode}\n onUpdate={updateProperty}\n validationError={validationErrors[rowData.id!]}\n />\n )}\n style={{ width: '30%' }}\n />\n <Column\n header=\"Type\"\n body={(rowData: JsonSchemaProperty) => (\n <TypeCell\n rowData={rowData}\n isEditMode={isEditMode}\n typeFormats={typeFormats}\n onUpdateProperty={updateProperty}\n onUpdateArrayItemType={updateArrayItemType}\n onNavigateToProperty={navigateToProperty}\n onNavigateToArrayItems={navigateToArrayItems}\n onRemoveProperty={removeProperty}\n />\n )}\n style={{ width: '70%' }}\n />\n </DataTable>\n </div>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
Licensed under the MIT license. See LICENSE file in the project root for full license information. */
|
|
3
|
+
|
|
4
|
+
.navigableRow {
|
|
5
|
+
cursor: pointer;
|
|
6
|
+
transition: background-color 0.15s;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.navigableRow:hover {
|
|
10
|
+
background-color: var(--surface-hover) !important;
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { SchemaEditor } from './SchemaEditor';
|
|
3
|
+
declare const meta: Meta<typeof SchemaEditor>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof SchemaEditor>;
|
|
6
|
+
export declare const Interactive: Story;
|
|
7
|
+
export declare const ViewMode: Story;
|
|
8
|
+
export declare const EditMode: Story;
|
|
9
|
+
export declare const ReadOnly: Story;
|
|
10
|
+
export declare const EmptySchema: Story;
|
|
11
|
+
export declare const SimpleSchema: Story;
|
|
12
|
+
//# sourceMappingURL=SchemaEditor.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaEditor.stories.d.ts","sourceRoot":"","sources":["../../../SchemaEditor/SchemaEditor.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAOnC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC;AAwF3C,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAStB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAUtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAQtB,CAAC;AAOF,eAAO,MAAM,WAAW,EAAE,KAUzB,CAAC;AAoBF,eAAO,MAAM,YAAY,EAAE,KAO1B,CAAC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { SchemaEditor } from './SchemaEditor';
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'Components/SchemaEditor',
|
|
6
|
+
component: SchemaEditor,
|
|
7
|
+
tags: ['autodocs'],
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: 'padded',
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
export default meta;
|
|
13
|
+
const sampleSchema = {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
id: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
format: 'guid',
|
|
19
|
+
description: 'Unique identifier'
|
|
20
|
+
},
|
|
21
|
+
name: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'Name of the entity'
|
|
24
|
+
},
|
|
25
|
+
email: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: 'Email address'
|
|
28
|
+
},
|
|
29
|
+
age: {
|
|
30
|
+
type: 'integer',
|
|
31
|
+
format: 'int32',
|
|
32
|
+
description: 'Age in years'
|
|
33
|
+
},
|
|
34
|
+
isActive: {
|
|
35
|
+
type: 'boolean',
|
|
36
|
+
description: 'Whether the entity is active'
|
|
37
|
+
},
|
|
38
|
+
address: {
|
|
39
|
+
type: 'object',
|
|
40
|
+
description: 'Address information',
|
|
41
|
+
properties: {
|
|
42
|
+
street: {
|
|
43
|
+
type: 'string',
|
|
44
|
+
description: 'Street address'
|
|
45
|
+
},
|
|
46
|
+
city: {
|
|
47
|
+
type: 'string',
|
|
48
|
+
description: 'City name'
|
|
49
|
+
},
|
|
50
|
+
zipCode: {
|
|
51
|
+
type: 'string',
|
|
52
|
+
description: 'ZIP/Postal code'
|
|
53
|
+
},
|
|
54
|
+
country: {
|
|
55
|
+
type: 'string',
|
|
56
|
+
description: 'Country name'
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
tags: {
|
|
61
|
+
type: 'array',
|
|
62
|
+
description: 'Tags associated with the entity',
|
|
63
|
+
items: { type: 'string' }
|
|
64
|
+
},
|
|
65
|
+
metadata: {
|
|
66
|
+
type: 'array',
|
|
67
|
+
description: 'Metadata entries',
|
|
68
|
+
items: {
|
|
69
|
+
type: 'object',
|
|
70
|
+
properties: {
|
|
71
|
+
key: { type: 'string' },
|
|
72
|
+
value: { type: 'string' }
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const InteractiveWrapper = () => {
|
|
79
|
+
const [schema, setSchema] = useState(JSON.parse(JSON.stringify(sampleSchema)));
|
|
80
|
+
return (_jsx("div", { style: { height: '600px', background: 'var(--surface-ground)' }, children: _jsx(SchemaEditor, { schema: schema, eventTypeName: "User", canEdit: true, onChange: (newSchema) => {
|
|
81
|
+
setSchema(newSchema);
|
|
82
|
+
console.log('Schema changed:', newSchema);
|
|
83
|
+
}, onSave: () => console.log('Save clicked', schema), onCancel: () => console.log('Cancel clicked') }) }));
|
|
84
|
+
};
|
|
85
|
+
export const Interactive = {
|
|
86
|
+
render: () => _jsx(InteractiveWrapper, {}),
|
|
87
|
+
};
|
|
88
|
+
export const ViewMode = {
|
|
89
|
+
args: {
|
|
90
|
+
schema: sampleSchema,
|
|
91
|
+
eventTypeName: 'User',
|
|
92
|
+
canEdit: true,
|
|
93
|
+
onChange: () => console.log('Schema changed'),
|
|
94
|
+
onSave: () => console.log('Save clicked'),
|
|
95
|
+
onCancel: () => console.log('Cancel clicked'),
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
export const EditMode = {
|
|
99
|
+
args: {
|
|
100
|
+
schema: sampleSchema,
|
|
101
|
+
eventTypeName: 'User',
|
|
102
|
+
canEdit: true,
|
|
103
|
+
editMode: true,
|
|
104
|
+
onChange: () => console.log('Schema changed'),
|
|
105
|
+
onSave: () => console.log('Save clicked'),
|
|
106
|
+
onCancel: () => console.log('Cancel clicked'),
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
export const ReadOnly = {
|
|
110
|
+
args: {
|
|
111
|
+
schema: sampleSchema,
|
|
112
|
+
eventTypeName: 'User',
|
|
113
|
+
canEdit: false,
|
|
114
|
+
canNotEditReason: 'Schema is locked for editing',
|
|
115
|
+
onChange: () => console.log('Schema changed'),
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
const emptySchema = {
|
|
119
|
+
type: 'object',
|
|
120
|
+
properties: {}
|
|
121
|
+
};
|
|
122
|
+
export const EmptySchema = {
|
|
123
|
+
args: {
|
|
124
|
+
schema: emptySchema,
|
|
125
|
+
eventTypeName: 'NewType',
|
|
126
|
+
canEdit: true,
|
|
127
|
+
editMode: true,
|
|
128
|
+
onChange: () => console.log('Schema changed'),
|
|
129
|
+
onSave: () => console.log('Save clicked'),
|
|
130
|
+
onCancel: () => console.log('Cancel clicked'),
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
const simpleSchema = {
|
|
134
|
+
type: 'object',
|
|
135
|
+
properties: {
|
|
136
|
+
title: {
|
|
137
|
+
type: 'string',
|
|
138
|
+
description: 'The title'
|
|
139
|
+
},
|
|
140
|
+
count: {
|
|
141
|
+
type: 'integer',
|
|
142
|
+
description: 'A count value'
|
|
143
|
+
},
|
|
144
|
+
enabled: {
|
|
145
|
+
type: 'boolean',
|
|
146
|
+
description: 'Whether enabled'
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
export const SimpleSchema = {
|
|
151
|
+
args: {
|
|
152
|
+
schema: simpleSchema,
|
|
153
|
+
eventTypeName: 'SimpleType',
|
|
154
|
+
canEdit: true,
|
|
155
|
+
onChange: () => console.log('Schema changed'),
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=SchemaEditor.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaEditor.stories.js","sourceRoot":"","sources":["../../../SchemaEditor/SchemaEditor.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TypeFormat } from '../types/TypeFormat';
|
|
2
|
+
import { JsonSchemaProperty } from '../types/JsonSchema';
|
|
3
|
+
export interface TypeCellProps {
|
|
4
|
+
rowData: JsonSchemaProperty;
|
|
5
|
+
isEditMode: boolean;
|
|
6
|
+
typeFormats: TypeFormat[];
|
|
7
|
+
onUpdateProperty: (oldName: string, field: keyof JsonSchemaProperty, value: unknown, additionalUpdates?: Partial<JsonSchemaProperty>) => void;
|
|
8
|
+
onUpdateArrayItemType: (propertyName: string, itemType: string) => void;
|
|
9
|
+
onNavigateToProperty: (propertyName: string) => void;
|
|
10
|
+
onNavigateToArrayItems: (propertyName: string) => void;
|
|
11
|
+
onRemoveProperty: (propertyName: string) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare const TypeCell: ({ rowData, isEditMode, typeFormats, onUpdateProperty, onUpdateArrayItemType, onNavigateToProperty, onNavigateToArrayItems, onRemoveProperty }: TypeCellProps) => string | import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=TypeCell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeCell.d.ts","sourceRoot":"","sources":["../../../SchemaEditor/TypeCell.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;IAC9I,qBAAqB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,oBAAoB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,sBAAsB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAOD,eAAO,MAAM,QAAQ,GAAI,+IAStB,aAAa,qDAmJf,CAAC"}
|