@cratis/scene.components 0.1.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/.storybook/main.ts +55 -0
- package/.storybook/preview.tsx +36 -0
- package/CratisComponents.stories.tsx +235 -0
- package/README.md +192 -0
- package/bindings/ArcRuntimeBoundary.tsx +36 -0
- package/bindings/BindingKind.ts +18 -0
- package/bindings/BoundConstructor.ts +21 -0
- package/bindings/ElementBinding.ts +19 -0
- package/bindings/MissingBinding.tsx +34 -0
- package/bindings/Placeholder.tsx +42 -0
- package/bindings/bindingRegistry.ts +105 -0
- package/bindings/for_bindingRegistry/when_a_command_is_registered.ts +30 -0
- package/bindings/for_bindingRegistry/when_a_query_is_not_registered.ts +17 -0
- package/bindings/for_bindingRegistry/when_a_query_is_registered.ts +30 -0
- package/bindings/for_bindingRegistry/when_bindings_are_cleared.ts +29 -0
- package/bindings/for_resolveElementBinding/when_resolving_a_command_binding.ts +34 -0
- package/bindings/for_resolveElementBinding/when_resolving_a_query_binding.ts +45 -0
- package/bindings/index.ts +11 -0
- package/bindings/resolveElementBinding.ts +33 -0
- package/common/SceneDropdown.tsx +31 -0
- package/common/SceneErrorBoundary.tsx +17 -0
- package/common/SceneIcon.tsx +18 -0
- package/common/SceneTooltip.tsx +28 -0
- package/common/index.ts +7 -0
- package/cratisComponents.ts +91 -0
- package/cratisComponentsPackage.ts +101 -0
- package/data/SceneDataTable.tsx +41 -0
- package/data/SceneObservableDataTable.tsx +41 -0
- package/data/for_SceneDataTable/when_the_query_binding_is_missing.tsx +48 -0
- package/data/index.ts +5 -0
- package/dialogs/SceneBusyIndicatorDialog.tsx +29 -0
- package/dialogs/SceneCommandDialog.tsx +42 -0
- package/dialogs/SceneConfirmationDialog.tsx +23 -0
- package/dialogs/SceneDialog.tsx +41 -0
- package/dialogs/SceneStepperCommandDialog.tsx +50 -0
- package/dialogs/index.ts +8 -0
- package/dist/cjs/bindings/ArcRuntimeBoundary.js +37 -0
- package/dist/cjs/bindings/ArcRuntimeBoundary.js.map +1 -0
- package/dist/cjs/bindings/BindingKind.js +19 -0
- package/dist/cjs/bindings/BindingKind.js.map +1 -0
- package/dist/cjs/bindings/MissingBinding.js +24 -0
- package/dist/cjs/bindings/MissingBinding.js.map +1 -0
- package/dist/cjs/bindings/Placeholder.js +38 -0
- package/dist/cjs/bindings/Placeholder.js.map +1 -0
- package/dist/cjs/bindings/bindingRegistry.js +101 -0
- package/dist/cjs/bindings/bindingRegistry.js.map +1 -0
- package/dist/cjs/bindings/resolveElementBinding.js +34 -0
- package/dist/cjs/bindings/resolveElementBinding.js.map +1 -0
- package/dist/cjs/common/SceneDropdown.js +30 -0
- package/dist/cjs/common/SceneDropdown.js.map +1 -0
- package/dist/cjs/common/SceneErrorBoundary.js +20 -0
- package/dist/cjs/common/SceneErrorBoundary.js.map +1 -0
- package/dist/cjs/common/SceneIcon.js +22 -0
- package/dist/cjs/common/SceneIcon.js.map +1 -0
- package/dist/cjs/common/SceneTooltip.js +29 -0
- package/dist/cjs/common/SceneTooltip.js.map +1 -0
- package/dist/cjs/cratisComponents.js +106 -0
- package/dist/cjs/cratisComponents.js.map +1 -0
- package/dist/cjs/cratisComponentsPackage.js +105 -0
- package/dist/cjs/cratisComponentsPackage.js.map +1 -0
- package/dist/cjs/data/SceneDataTable.js +46 -0
- package/dist/cjs/data/SceneDataTable.js.map +1 -0
- package/dist/cjs/data/SceneObservableDataTable.js +44 -0
- package/dist/cjs/data/SceneObservableDataTable.js.map +1 -0
- package/dist/cjs/dialogs/SceneBusyIndicatorDialog.js +30 -0
- package/dist/cjs/dialogs/SceneBusyIndicatorDialog.js.map +1 -0
- package/dist/cjs/dialogs/SceneCommandDialog.js +47 -0
- package/dist/cjs/dialogs/SceneCommandDialog.js.map +1 -0
- package/dist/cjs/dialogs/SceneConfirmationDialog.js +25 -0
- package/dist/cjs/dialogs/SceneConfirmationDialog.js.map +1 -0
- package/dist/cjs/dialogs/SceneDialog.js +41 -0
- package/dist/cjs/dialogs/SceneDialog.js.map +1 -0
- package/dist/cjs/dialogs/SceneStepperCommandDialog.js +54 -0
- package/dist/cjs/dialogs/SceneStepperCommandDialog.js.map +1 -0
- package/dist/cjs/editors/SceneFilterPanel.js +57 -0
- package/dist/cjs/editors/SceneFilterPanel.js.map +1 -0
- package/dist/cjs/editors/SceneObjectContentEditor.js +37 -0
- package/dist/cjs/editors/SceneObjectContentEditor.js.map +1 -0
- package/dist/cjs/editors/SceneObjectNavigationalBar.js +34 -0
- package/dist/cjs/editors/SceneObjectNavigationalBar.js.map +1 -0
- package/dist/cjs/editors/SceneSchemaEditor.js +33 -0
- package/dist/cjs/editors/SceneSchemaEditor.js.map +1 -0
- package/dist/cjs/editors/SceneTimeMachine.js +32 -0
- package/dist/cjs/editors/SceneTimeMachine.js.map +1 -0
- package/dist/cjs/editors/filterDefinitions.js +59 -0
- package/dist/cjs/editors/filterDefinitions.js.map +1 -0
- package/dist/cjs/editors/timeMachineVersions.js +44 -0
- package/dist/cjs/editors/timeMachineVersions.js.map +1 -0
- package/dist/cjs/editors/useEditableCopy.js +39 -0
- package/dist/cjs/editors/useEditableCopy.js.map +1 -0
- package/dist/cjs/forms/SceneCommandForm.js +46 -0
- package/dist/cjs/forms/SceneCommandForm.js.map +1 -0
- package/dist/cjs/forms/fields/CommandFormField.js +31 -0
- package/dist/cjs/forms/fields/CommandFormField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneCalendarField.js +41 -0
- package/dist/cjs/forms/fields/SceneCalendarField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneCheckboxField.js +28 -0
- package/dist/cjs/forms/fields/SceneCheckboxField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneChipsField.js +33 -0
- package/dist/cjs/forms/fields/SceneChipsField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneColorPickerField.js +30 -0
- package/dist/cjs/forms/fields/SceneColorPickerField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneDropdownField.js +35 -0
- package/dist/cjs/forms/fields/SceneDropdownField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneInputTextField.js +45 -0
- package/dist/cjs/forms/fields/SceneInputTextField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneMultiSelectField.js +40 -0
- package/dist/cjs/forms/fields/SceneMultiSelectField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneNumberField.js +32 -0
- package/dist/cjs/forms/fields/SceneNumberField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneRadioButtonField.js +35 -0
- package/dist/cjs/forms/fields/SceneRadioButtonField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneRadioGroupField.js +36 -0
- package/dist/cjs/forms/fields/SceneRadioGroupField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneSliderField.js +31 -0
- package/dist/cjs/forms/fields/SceneSliderField.js.map +1 -0
- package/dist/cjs/forms/fields/SceneTextAreaField.js +31 -0
- package/dist/cjs/forms/fields/SceneTextAreaField.js.map +1 -0
- package/dist/cjs/forms/fields/resolveFieldBinding.js +27 -0
- package/dist/cjs/forms/fields/resolveFieldBinding.js.map +1 -0
- package/dist/cjs/index.js +123 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/pages/SceneDataPage.js +45 -0
- package/dist/cjs/pages/SceneDataPage.js.map +1 -0
- package/dist/cjs/pages/SceneFormElement.js +26 -0
- package/dist/cjs/pages/SceneFormElement.js.map +1 -0
- package/dist/cjs/pages/ScenePage.js +28 -0
- package/dist/cjs/pages/ScenePage.js.map +1 -0
- package/dist/cjs/properties.js +104 -0
- package/dist/cjs/properties.js.map +1 -0
- package/dist/cjs/toolbar/SceneToolbar.js +27 -0
- package/dist/cjs/toolbar/SceneToolbar.js.map +1 -0
- package/dist/cjs/toolbar/SceneToolbarButton.js +32 -0
- package/dist/cjs/toolbar/SceneToolbarButton.js.map +1 -0
- package/dist/cjs/toolbar/SceneToolbarGroup.js +27 -0
- package/dist/cjs/toolbar/SceneToolbarGroup.js.map +1 -0
- package/dist/cjs/toolbar/SceneToolbarSeparator.js +25 -0
- package/dist/cjs/toolbar/SceneToolbarSeparator.js.map +1 -0
- package/dist/esm/CratisComponents.stories.d.ts +29 -0
- package/dist/esm/CratisComponents.stories.d.ts.map +1 -0
- package/dist/esm/CratisComponents.stories.js +187 -0
- package/dist/esm/CratisComponents.stories.js.map +1 -0
- package/dist/esm/bindings/ArcRuntimeBoundary.d.ts +6 -0
- package/dist/esm/bindings/ArcRuntimeBoundary.d.ts.map +1 -0
- package/dist/esm/bindings/ArcRuntimeBoundary.js +35 -0
- package/dist/esm/bindings/ArcRuntimeBoundary.js.map +1 -0
- package/dist/esm/bindings/BindingKind.d.ts +5 -0
- package/dist/esm/bindings/BindingKind.d.ts.map +1 -0
- package/dist/esm/bindings/BindingKind.js +17 -0
- package/dist/esm/bindings/BindingKind.js.map +1 -0
- package/dist/esm/bindings/BoundConstructor.d.ts +2 -0
- package/dist/esm/bindings/BoundConstructor.d.ts.map +1 -0
- package/dist/esm/bindings/BoundConstructor.js +2 -0
- package/dist/esm/bindings/BoundConstructor.js.map +1 -0
- package/dist/esm/bindings/ElementBinding.d.ts +6 -0
- package/dist/esm/bindings/ElementBinding.d.ts.map +1 -0
- package/dist/esm/bindings/ElementBinding.js +2 -0
- package/dist/esm/bindings/ElementBinding.js.map +1 -0
- package/dist/esm/bindings/MissingBinding.d.ts +9 -0
- package/dist/esm/bindings/MissingBinding.d.ts.map +1 -0
- package/dist/esm/bindings/MissingBinding.js +22 -0
- package/dist/esm/bindings/MissingBinding.js.map +1 -0
- package/dist/esm/bindings/Placeholder.d.ts +7 -0
- package/dist/esm/bindings/Placeholder.d.ts.map +1 -0
- package/dist/esm/bindings/Placeholder.js +36 -0
- package/dist/esm/bindings/Placeholder.js.map +1 -0
- package/dist/esm/bindings/bindingRegistry.d.ts +11 -0
- package/dist/esm/bindings/bindingRegistry.d.ts.map +1 -0
- package/dist/esm/bindings/bindingRegistry.js +91 -0
- package/dist/esm/bindings/bindingRegistry.js.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.d.ts +2 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.d.ts.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.js +25 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.js.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.d.ts +2 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.d.ts.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.js +12 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.js.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.d.ts +2 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.d.ts.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.js +23 -0
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.js.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.d.ts +2 -0
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.d.ts.map +1 -0
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.js +18 -0
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.js.map +1 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.d.ts +2 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.d.ts.map +1 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.js +25 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.js.map +1 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.d.ts +2 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.d.ts.map +1 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.js +33 -0
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.js.map +1 -0
- package/dist/esm/bindings/index.d.ts +9 -0
- package/dist/esm/bindings/index.d.ts.map +1 -0
- package/dist/esm/bindings/index.js +9 -0
- package/dist/esm/bindings/index.js.map +1 -0
- package/dist/esm/bindings/resolveElementBinding.d.ts +5 -0
- package/dist/esm/bindings/resolveElementBinding.d.ts.map +1 -0
- package/dist/esm/bindings/resolveElementBinding.js +32 -0
- package/dist/esm/bindings/resolveElementBinding.js.map +1 -0
- package/dist/esm/common/SceneDropdown.d.ts +3 -0
- package/dist/esm/common/SceneDropdown.d.ts.map +1 -0
- package/dist/esm/common/SceneDropdown.js +28 -0
- package/dist/esm/common/SceneDropdown.js.map +1 -0
- package/dist/esm/common/SceneErrorBoundary.d.ts +3 -0
- package/dist/esm/common/SceneErrorBoundary.d.ts.map +1 -0
- package/dist/esm/common/SceneErrorBoundary.js +18 -0
- package/dist/esm/common/SceneErrorBoundary.js.map +1 -0
- package/dist/esm/common/SceneIcon.d.ts +3 -0
- package/dist/esm/common/SceneIcon.d.ts.map +1 -0
- package/dist/esm/common/SceneIcon.js +20 -0
- package/dist/esm/common/SceneIcon.js.map +1 -0
- package/dist/esm/common/SceneTooltip.d.ts +3 -0
- package/dist/esm/common/SceneTooltip.d.ts.map +1 -0
- package/dist/esm/common/SceneTooltip.js +27 -0
- package/dist/esm/common/SceneTooltip.js.map +1 -0
- package/dist/esm/common/index.d.ts +5 -0
- package/dist/esm/common/index.d.ts.map +1 -0
- package/dist/esm/common/index.js +5 -0
- package/dist/esm/common/index.js.map +1 -0
- package/dist/esm/cratisComponents.d.ts +4 -0
- package/dist/esm/cratisComponents.d.ts.map +1 -0
- package/dist/esm/cratisComponents.js +103 -0
- package/dist/esm/cratisComponents.js.map +1 -0
- package/dist/esm/cratisComponentsPackage.d.ts +5 -0
- package/dist/esm/cratisComponentsPackage.d.ts.map +1 -0
- package/dist/esm/cratisComponentsPackage.js +102 -0
- package/dist/esm/cratisComponentsPackage.js.map +1 -0
- package/dist/esm/data/SceneDataTable.d.ts +3 -0
- package/dist/esm/data/SceneDataTable.d.ts.map +1 -0
- package/dist/esm/data/SceneDataTable.js +44 -0
- package/dist/esm/data/SceneDataTable.js.map +1 -0
- package/dist/esm/data/SceneObservableDataTable.d.ts +3 -0
- package/dist/esm/data/SceneObservableDataTable.d.ts.map +1 -0
- package/dist/esm/data/SceneObservableDataTable.js +42 -0
- package/dist/esm/data/SceneObservableDataTable.js.map +1 -0
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.d.ts +2 -0
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.d.ts.map +1 -0
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.js +36 -0
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.js.map +1 -0
- package/dist/esm/data/index.d.ts +3 -0
- package/dist/esm/data/index.d.ts.map +1 -0
- package/dist/esm/data/index.js +3 -0
- package/dist/esm/data/index.js.map +1 -0
- package/dist/esm/dialogs/SceneBusyIndicatorDialog.d.ts +3 -0
- package/dist/esm/dialogs/SceneBusyIndicatorDialog.d.ts.map +1 -0
- package/dist/esm/dialogs/SceneBusyIndicatorDialog.js +28 -0
- package/dist/esm/dialogs/SceneBusyIndicatorDialog.js.map +1 -0
- package/dist/esm/dialogs/SceneCommandDialog.d.ts +3 -0
- package/dist/esm/dialogs/SceneCommandDialog.d.ts.map +1 -0
- package/dist/esm/dialogs/SceneCommandDialog.js +45 -0
- package/dist/esm/dialogs/SceneCommandDialog.js.map +1 -0
- package/dist/esm/dialogs/SceneConfirmationDialog.d.ts +2 -0
- package/dist/esm/dialogs/SceneConfirmationDialog.d.ts.map +1 -0
- package/dist/esm/dialogs/SceneConfirmationDialog.js +23 -0
- package/dist/esm/dialogs/SceneConfirmationDialog.js.map +1 -0
- package/dist/esm/dialogs/SceneDialog.d.ts +3 -0
- package/dist/esm/dialogs/SceneDialog.d.ts.map +1 -0
- package/dist/esm/dialogs/SceneDialog.js +39 -0
- package/dist/esm/dialogs/SceneDialog.js.map +1 -0
- package/dist/esm/dialogs/SceneStepperCommandDialog.d.ts +3 -0
- package/dist/esm/dialogs/SceneStepperCommandDialog.d.ts.map +1 -0
- package/dist/esm/dialogs/SceneStepperCommandDialog.js +52 -0
- package/dist/esm/dialogs/SceneStepperCommandDialog.js.map +1 -0
- package/dist/esm/dialogs/index.d.ts +6 -0
- package/dist/esm/dialogs/index.d.ts.map +1 -0
- package/dist/esm/dialogs/index.js +6 -0
- package/dist/esm/dialogs/index.js.map +1 -0
- package/dist/esm/editors/SceneFilterPanel.d.ts +3 -0
- package/dist/esm/editors/SceneFilterPanel.d.ts.map +1 -0
- package/dist/esm/editors/SceneFilterPanel.js +55 -0
- package/dist/esm/editors/SceneFilterPanel.js.map +1 -0
- package/dist/esm/editors/SceneObjectContentEditor.d.ts +3 -0
- package/dist/esm/editors/SceneObjectContentEditor.d.ts.map +1 -0
- package/dist/esm/editors/SceneObjectContentEditor.js +35 -0
- package/dist/esm/editors/SceneObjectContentEditor.js.map +1 -0
- package/dist/esm/editors/SceneObjectNavigationalBar.d.ts +3 -0
- package/dist/esm/editors/SceneObjectNavigationalBar.d.ts.map +1 -0
- package/dist/esm/editors/SceneObjectNavigationalBar.js +32 -0
- package/dist/esm/editors/SceneObjectNavigationalBar.js.map +1 -0
- package/dist/esm/editors/SceneSchemaEditor.d.ts +3 -0
- package/dist/esm/editors/SceneSchemaEditor.d.ts.map +1 -0
- package/dist/esm/editors/SceneSchemaEditor.js +31 -0
- package/dist/esm/editors/SceneSchemaEditor.js.map +1 -0
- package/dist/esm/editors/SceneTimeMachine.d.ts +3 -0
- package/dist/esm/editors/SceneTimeMachine.d.ts.map +1 -0
- package/dist/esm/editors/SceneTimeMachine.js +30 -0
- package/dist/esm/editors/SceneTimeMachine.js.map +1 -0
- package/dist/esm/editors/filterDefinitions.d.ts +3 -0
- package/dist/esm/editors/filterDefinitions.d.ts.map +1 -0
- package/dist/esm/editors/filterDefinitions.js +57 -0
- package/dist/esm/editors/filterDefinitions.js.map +1 -0
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.d.ts +2 -0
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.d.ts.map +1 -0
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.js +15 -0
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.js.map +1 -0
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.d.ts +2 -0
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.d.ts.map +1 -0
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.js +39 -0
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.js.map +1 -0
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.d.ts +2 -0
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.d.ts.map +1 -0
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.js +32 -0
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.js.map +1 -0
- package/dist/esm/editors/index.d.ts +9 -0
- package/dist/esm/editors/index.d.ts.map +1 -0
- package/dist/esm/editors/index.js +9 -0
- package/dist/esm/editors/index.js.map +1 -0
- package/dist/esm/editors/timeMachineVersions.d.ts +3 -0
- package/dist/esm/editors/timeMachineVersions.d.ts.map +1 -0
- package/dist/esm/editors/timeMachineVersions.js +42 -0
- package/dist/esm/editors/timeMachineVersions.js.map +1 -0
- package/dist/esm/editors/useEditableCopy.d.ts +2 -0
- package/dist/esm/editors/useEditableCopy.d.ts.map +1 -0
- package/dist/esm/editors/useEditableCopy.js +37 -0
- package/dist/esm/editors/useEditableCopy.js.map +1 -0
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.d.ts +2 -0
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.d.ts.map +1 -0
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.js +25 -0
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.js.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.d.ts +2 -0
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.d.ts.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.js +34 -0
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.js.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.d.ts +2 -0
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.d.ts.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.js +49 -0
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.js.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.d.ts +2 -0
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.d.ts.map +1 -0
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.js +27 -0
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.js.map +1 -0
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.d.ts +2 -0
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.d.ts.map +1 -0
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.js +24 -0
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.js.map +1 -0
- package/dist/esm/for_properties/when_a_property_is_missing.d.ts +2 -0
- package/dist/esm/for_properties/when_a_property_is_missing.d.ts.map +1 -0
- package/dist/esm/for_properties/when_a_property_is_missing.js +13 -0
- package/dist/esm/for_properties/when_a_property_is_missing.js.map +1 -0
- package/dist/esm/for_properties/when_a_property_is_present.d.ts +2 -0
- package/dist/esm/for_properties/when_a_property_is_present.d.ts.map +1 -0
- package/dist/esm/for_properties/when_a_property_is_present.js +21 -0
- package/dist/esm/for_properties/when_a_property_is_present.js.map +1 -0
- package/dist/esm/forms/SceneCommandForm.d.ts +3 -0
- package/dist/esm/forms/SceneCommandForm.d.ts.map +1 -0
- package/dist/esm/forms/SceneCommandForm.js +44 -0
- package/dist/esm/forms/SceneCommandForm.js.map +1 -0
- package/dist/esm/forms/fields/CommandFormField.d.ts +9 -0
- package/dist/esm/forms/fields/CommandFormField.d.ts.map +1 -0
- package/dist/esm/forms/fields/CommandFormField.js +29 -0
- package/dist/esm/forms/fields/CommandFormField.js.map +1 -0
- package/dist/esm/forms/fields/FieldBinding.d.ts +6 -0
- package/dist/esm/forms/fields/FieldBinding.d.ts.map +1 -0
- package/dist/esm/forms/fields/FieldBinding.js +2 -0
- package/dist/esm/forms/fields/FieldBinding.js.map +1 -0
- package/dist/esm/forms/fields/SceneCalendarField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneCalendarField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneCalendarField.js +39 -0
- package/dist/esm/forms/fields/SceneCalendarField.js.map +1 -0
- package/dist/esm/forms/fields/SceneCheckboxField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneCheckboxField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneCheckboxField.js +26 -0
- package/dist/esm/forms/fields/SceneCheckboxField.js.map +1 -0
- package/dist/esm/forms/fields/SceneChipsField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneChipsField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneChipsField.js +31 -0
- package/dist/esm/forms/fields/SceneChipsField.js.map +1 -0
- package/dist/esm/forms/fields/SceneColorPickerField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneColorPickerField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneColorPickerField.js +28 -0
- package/dist/esm/forms/fields/SceneColorPickerField.js.map +1 -0
- package/dist/esm/forms/fields/SceneDropdownField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneDropdownField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneDropdownField.js +33 -0
- package/dist/esm/forms/fields/SceneDropdownField.js.map +1 -0
- package/dist/esm/forms/fields/SceneInputTextField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneInputTextField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneInputTextField.js +43 -0
- package/dist/esm/forms/fields/SceneInputTextField.js.map +1 -0
- package/dist/esm/forms/fields/SceneMultiSelectField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneMultiSelectField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneMultiSelectField.js +38 -0
- package/dist/esm/forms/fields/SceneMultiSelectField.js.map +1 -0
- package/dist/esm/forms/fields/SceneNumberField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneNumberField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneNumberField.js +30 -0
- package/dist/esm/forms/fields/SceneNumberField.js.map +1 -0
- package/dist/esm/forms/fields/SceneRadioButtonField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneRadioButtonField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneRadioButtonField.js +33 -0
- package/dist/esm/forms/fields/SceneRadioButtonField.js.map +1 -0
- package/dist/esm/forms/fields/SceneRadioGroupField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneRadioGroupField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneRadioGroupField.js +34 -0
- package/dist/esm/forms/fields/SceneRadioGroupField.js.map +1 -0
- package/dist/esm/forms/fields/SceneSliderField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneSliderField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneSliderField.js +29 -0
- package/dist/esm/forms/fields/SceneSliderField.js.map +1 -0
- package/dist/esm/forms/fields/SceneTextAreaField.d.ts +3 -0
- package/dist/esm/forms/fields/SceneTextAreaField.d.ts.map +1 -0
- package/dist/esm/forms/fields/SceneTextAreaField.js +29 -0
- package/dist/esm/forms/fields/SceneTextAreaField.js.map +1 -0
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.d.ts +2 -0
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.d.ts.map +1 -0
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.js +12 -0
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.js.map +1 -0
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.d.ts +2 -0
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.d.ts.map +1 -0
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js +24 -0
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js.map +1 -0
- package/dist/esm/forms/fields/index.d.ts +16 -0
- package/dist/esm/forms/fields/index.d.ts.map +1 -0
- package/dist/esm/forms/fields/index.js +16 -0
- package/dist/esm/forms/fields/index.js.map +1 -0
- package/dist/esm/forms/fields/resolveFieldBinding.d.ts +4 -0
- package/dist/esm/forms/fields/resolveFieldBinding.d.ts.map +1 -0
- package/dist/esm/forms/fields/resolveFieldBinding.js +25 -0
- package/dist/esm/forms/fields/resolveFieldBinding.js.map +1 -0
- package/dist/esm/forms/index.d.ts +3 -0
- package/dist/esm/forms/index.d.ts.map +1 -0
- package/dist/esm/forms/index.js +3 -0
- package/dist/esm/forms/index.js.map +1 -0
- package/dist/esm/given.d.ts +3 -0
- package/dist/esm/given.d.ts.map +1 -0
- package/dist/esm/given.js +21 -0
- package/dist/esm/given.js.map +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +51 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/pages/SceneDataPage.d.ts +3 -0
- package/dist/esm/pages/SceneDataPage.d.ts.map +1 -0
- package/dist/esm/pages/SceneDataPage.js +43 -0
- package/dist/esm/pages/SceneDataPage.js.map +1 -0
- package/dist/esm/pages/SceneFormElement.d.ts +3 -0
- package/dist/esm/pages/SceneFormElement.d.ts.map +1 -0
- package/dist/esm/pages/SceneFormElement.js +24 -0
- package/dist/esm/pages/SceneFormElement.js.map +1 -0
- package/dist/esm/pages/ScenePage.d.ts +3 -0
- package/dist/esm/pages/ScenePage.d.ts.map +1 -0
- package/dist/esm/pages/ScenePage.js +26 -0
- package/dist/esm/pages/ScenePage.js.map +1 -0
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.d.ts +2 -0
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.d.ts.map +1 -0
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.js +31 -0
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.js.map +1 -0
- package/dist/esm/pages/index.d.ts +4 -0
- package/dist/esm/pages/index.d.ts.map +1 -0
- package/dist/esm/pages/index.js +4 -0
- package/dist/esm/pages/index.js.map +1 -0
- package/dist/esm/properties.d.ts +9 -0
- package/dist/esm/properties.d.ts.map +1 -0
- package/dist/esm/properties.js +95 -0
- package/dist/esm/properties.js.map +1 -0
- package/dist/esm/toolbar/SceneToolbar.d.ts +3 -0
- package/dist/esm/toolbar/SceneToolbar.d.ts.map +1 -0
- package/dist/esm/toolbar/SceneToolbar.js +25 -0
- package/dist/esm/toolbar/SceneToolbar.js.map +1 -0
- package/dist/esm/toolbar/SceneToolbarButton.d.ts +3 -0
- package/dist/esm/toolbar/SceneToolbarButton.d.ts.map +1 -0
- package/dist/esm/toolbar/SceneToolbarButton.js +30 -0
- package/dist/esm/toolbar/SceneToolbarButton.js.map +1 -0
- package/dist/esm/toolbar/SceneToolbarGroup.d.ts +3 -0
- package/dist/esm/toolbar/SceneToolbarGroup.d.ts.map +1 -0
- package/dist/esm/toolbar/SceneToolbarGroup.js +25 -0
- package/dist/esm/toolbar/SceneToolbarGroup.js.map +1 -0
- package/dist/esm/toolbar/SceneToolbarSeparator.d.ts +3 -0
- package/dist/esm/toolbar/SceneToolbarSeparator.d.ts.map +1 -0
- package/dist/esm/toolbar/SceneToolbarSeparator.js +23 -0
- package/dist/esm/toolbar/SceneToolbarSeparator.js.map +1 -0
- package/dist/esm/toolbar/index.d.ts +5 -0
- package/dist/esm/toolbar/index.d.ts.map +1 -0
- package/dist/esm/toolbar/index.js +5 -0
- package/dist/esm/toolbar/index.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/editors/SceneFilterPanel.tsx +52 -0
- package/editors/SceneObjectContentEditor.tsx +36 -0
- package/editors/SceneObjectNavigationalBar.tsx +34 -0
- package/editors/SceneSchemaEditor.tsx +34 -0
- package/editors/SceneTimeMachine.tsx +32 -0
- package/editors/filterDefinitions.ts +59 -0
- package/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.tsx +18 -0
- package/editors/for_filterDefinitions/when_reading_filter_definitions.ts +49 -0
- package/editors/for_timeMachineVersions/when_reading_versions.ts +39 -0
- package/editors/index.ts +11 -0
- package/editors/timeMachineVersions.ts +44 -0
- package/editors/useEditableCopy.ts +32 -0
- package/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.tsx +37 -0
- package/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.ts +49 -0
- package/for_cratisComponentsPackage/when_resolving_its_dependencies.ts +68 -0
- package/for_cratisComponentsPackage/when_validating_the_bundle.ts +39 -0
- package/for_properties/when_a_property_has_the_wrong_type.ts +41 -0
- package/for_properties/when_a_property_is_missing.ts +26 -0
- package/for_properties/when_a_property_is_present.ts +36 -0
- package/forms/SceneCommandForm.tsx +45 -0
- package/forms/fields/CommandFormField.tsx +32 -0
- package/forms/fields/FieldBinding.ts +26 -0
- package/forms/fields/SceneCalendarField.tsx +41 -0
- package/forms/fields/SceneCheckboxField.tsx +29 -0
- package/forms/fields/SceneChipsField.tsx +34 -0
- package/forms/fields/SceneColorPickerField.tsx +31 -0
- package/forms/fields/SceneDropdownField.tsx +36 -0
- package/forms/fields/SceneInputTextField.tsx +37 -0
- package/forms/fields/SceneMultiSelectField.tsx +40 -0
- package/forms/fields/SceneNumberField.tsx +33 -0
- package/forms/fields/SceneRadioButtonField.tsx +37 -0
- package/forms/fields/SceneRadioGroupField.tsx +36 -0
- package/forms/fields/SceneSliderField.tsx +32 -0
- package/forms/fields/SceneTextAreaField.tsx +32 -0
- package/forms/fields/for_CommandFormField/when_the_field_names_no_property.tsx +16 -0
- package/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.ts +34 -0
- package/forms/fields/index.ts +18 -0
- package/forms/fields/resolveFieldBinding.ts +27 -0
- package/forms/index.ts +5 -0
- package/given.ts +33 -0
- package/index.ts +14 -0
- package/package.json +68 -0
- package/pages/SceneDataPage.tsx +40 -0
- package/pages/SceneFormElement.tsx +21 -0
- package/pages/ScenePage.tsx +30 -0
- package/pages/for_ScenePage/when_rendering_a_page.tsx +39 -0
- package/pages/index.ts +6 -0
- package/properties.ts +112 -0
- package/storybook-static/assets/CommandDialog-B78_eDOU.css +1 -0
- package/storybook-static/assets/CratisComponents-qPooLvTv.css +1 -0
- package/storybook-static/assets/DataPage-CroWzXsC.css +1 -0
- package/storybook-static/assets/iframe-DQhZBFM5.css +1 -0
- package/theme/sceneTokenBridge.css +72 -0
- package/toolbar/SceneToolbar.tsx +28 -0
- package/toolbar/SceneToolbarButton.tsx +31 -0
- package/toolbar/SceneToolbarGroup.tsx +28 -0
- package/toolbar/SceneToolbarSeparator.tsx +21 -0
- package/toolbar/index.ts +7 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { filterDefinitions } from '../filterDefinitions';
|
|
2
|
+
describe('when reading filter definitions', () => {
|
|
3
|
+
describe('and a filter declares options', () => {
|
|
4
|
+
const definitions = filterDefinitions({
|
|
5
|
+
filters: [
|
|
6
|
+
{
|
|
7
|
+
key: 'status',
|
|
8
|
+
label: 'Status',
|
|
9
|
+
type: 'string',
|
|
10
|
+
multi: true,
|
|
11
|
+
options: [
|
|
12
|
+
{ key: 'draft', label: 'Draft', count: 12 },
|
|
13
|
+
{ key: 'approved', label: 'Approved', value: 'Approved' },
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
});
|
|
18
|
+
it('should read the filter', () => definitions.should.have.lengthOf(1));
|
|
19
|
+
it('should read the declared type', () => definitions[0].type.should.equal('string'));
|
|
20
|
+
it('should read the multi flag', () => definitions[0].multi.should.equal(true));
|
|
21
|
+
it('should fall back to the option key as its value', () => definitions[0].options[0].value.should.equal('draft'));
|
|
22
|
+
it('should use a declared option value when there is one', () => definitions[0].options[1].value.should.equal('Approved'));
|
|
23
|
+
it('should read the option count', () => definitions[0].options[0].count.should.equal(12));
|
|
24
|
+
});
|
|
25
|
+
describe('and an entry is missing a key or a label', () => {
|
|
26
|
+
const definitions = filterDefinitions({
|
|
27
|
+
filters: [{ key: 'status', label: 'Status' }, { label: 'No key' }, { key: 'noLabel' }],
|
|
28
|
+
});
|
|
29
|
+
it('should keep only the filters that can be shown and applied', () => definitions.map(definition => definition.key).should.deep.equal(['status']));
|
|
30
|
+
});
|
|
31
|
+
describe('and a filter declares a type outside the allowed set', () => {
|
|
32
|
+
const definitions = filterDefinitions({ filters: [{ key: 'status', label: 'Status', type: 'colour' }] });
|
|
33
|
+
it('should leave the type unset rather than passing an unknown one through', () => (definitions[0].type === undefined).should.be.true);
|
|
34
|
+
});
|
|
35
|
+
describe('and no filters property is set', () => {
|
|
36
|
+
it('should read no filters', () => filterDefinitions({}).should.deep.equal([]));
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=when_reading_filter_definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_reading_filter_definitions.js","sourceRoot":"","sources":["../../../../editors/for_filterDefinitions/when_reading_filter_definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_reading_versions.d.ts","sourceRoot":"","sources":["../../../../editors/for_timeMachineVersions/when_reading_versions.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { timeMachineVersions } from '../timeMachineVersions';
|
|
2
|
+
describe('when reading versions', () => {
|
|
3
|
+
describe('and every entry is complete', () => {
|
|
4
|
+
const versions = timeMachineVersions({
|
|
5
|
+
versions: [
|
|
6
|
+
{ id: 'v1', label: 'Registered', timestamp: '2026-01-05T10:00:00.000Z', content: 'First' },
|
|
7
|
+
{ id: 'v2', label: 'Approved', timestamp: 1767700800000, content: 'Second' },
|
|
8
|
+
],
|
|
9
|
+
});
|
|
10
|
+
it('should read every version', () => versions.should.have.lengthOf(2));
|
|
11
|
+
it('should read an ISO timestamp', () => versions[0].timestamp.toISOString().should.equal('2026-01-05T10:00:00.000Z'));
|
|
12
|
+
it('should read an epoch timestamp', () => versions[1].timestamp.getTime().should.equal(1767700800000));
|
|
13
|
+
it('should read the content as text', () => versions[0].content.should.equal('First'));
|
|
14
|
+
});
|
|
15
|
+
describe('and an entry is incomplete or unparseable', () => {
|
|
16
|
+
const versions = timeMachineVersions({
|
|
17
|
+
versions: [
|
|
18
|
+
{ id: 'v1', label: 'Registered', timestamp: '2026-01-05T10:00:00.000Z' },
|
|
19
|
+
{ label: 'No id', timestamp: '2026-01-05T10:00:00.000Z' },
|
|
20
|
+
{ id: 'v3', timestamp: '2026-01-05T10:00:00.000Z' },
|
|
21
|
+
{ id: 'v4', label: 'No timestamp' },
|
|
22
|
+
{ id: 'v5', label: 'Unparseable', timestamp: 'the fifth of January' },
|
|
23
|
+
],
|
|
24
|
+
});
|
|
25
|
+
it('should keep only the entries that can be placed on a timeline', () => versions.map(version => version.id).should.deep.equal(['v1']));
|
|
26
|
+
it('should default missing content to empty text', () => versions[0].content.should.equal(''));
|
|
27
|
+
});
|
|
28
|
+
describe('and no versions property is set', () => {
|
|
29
|
+
it('should read no versions', () => timeMachineVersions({}).should.deep.equal([]));
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=when_reading_versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_reading_versions.js","sourceRoot":"","sources":["../../../../editors/for_timeMachineVersions/when_reading_versions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACnC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACzC,MAAM,QAAQ,GAAG,mBAAmB,CAAC;YACjC,QAAQ,EAAE;gBACN,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,0BAA0B,EAAE,OAAO,EAAE,OAAO,EAAE;gBAC1F,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE;aAC/E;SACJ,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACvH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACxG,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACvD,MAAM,QAAQ,GAAG,mBAAmB,CAAC;YACjC,QAAQ,EAAE;gBACN,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,0BAA0B,EAAE;gBACxE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,0BAA0B,EAAE;gBACzD,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,0BAA0B,EAAE;gBACnD,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE;gBACnC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,sBAAsB,EAAE;aACxE;SACJ,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzI,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './useEditableCopy';
|
|
2
|
+
export * from './timeMachineVersions';
|
|
3
|
+
export * from './filterDefinitions';
|
|
4
|
+
export * from './SceneObjectContentEditor';
|
|
5
|
+
export * from './SceneObjectNavigationalBar';
|
|
6
|
+
export * from './SceneSchemaEditor';
|
|
7
|
+
export * from './SceneTimeMachine';
|
|
8
|
+
export * from './SceneFilterPanel';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../editors/index.ts"],"names":[],"mappings":"AAGA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './useEditableCopy';
|
|
2
|
+
export * from './timeMachineVersions';
|
|
3
|
+
export * from './filterDefinitions';
|
|
4
|
+
export * from './SceneObjectContentEditor';
|
|
5
|
+
export * from './SceneObjectNavigationalBar';
|
|
6
|
+
export * from './SceneSchemaEditor';
|
|
7
|
+
export * from './SceneTimeMachine';
|
|
8
|
+
export * from './SceneFilterPanel';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../editors/index.ts"],"names":[],"mappings":"AAGA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeMachineVersions.d.ts","sourceRoot":"","sources":["../../../editors/timeMachineVersions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAezD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,CAalF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { objectArrayProperty, stringProperty, numberProperty } from '../properties.js';
|
|
2
|
+
|
|
3
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
4
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
5
|
+
/**
|
|
6
|
+
* Reads a `versions` property into the `Version` list `TimeMachine` renders.
|
|
7
|
+
*
|
|
8
|
+
* An entry without an `id`, a `label` and a parseable `timestamp` is dropped rather than defaulted,
|
|
9
|
+
* because `TimeMachine`'s whole job is to place versions on a timeline: a version invented at the epoch
|
|
10
|
+
* would not be a slightly wrong entry, it would silently reorder every real one around it. A dropped
|
|
11
|
+
* entry is visibly one item short; a fabricated one is a timeline that lies.
|
|
12
|
+
*
|
|
13
|
+
* `content` is rendered as text. A version whose content is a whole element tree is not something a
|
|
14
|
+
* property bag can carry, and pretending otherwise would be the wrong seam - that belongs in a screen
|
|
15
|
+
* template, not in a property.
|
|
16
|
+
*/ function timeMachineVersions(properties) {
|
|
17
|
+
const entries = objectArrayProperty(properties, 'versions') ?? [];
|
|
18
|
+
return entries.map((entry)=>{
|
|
19
|
+
const id = stringProperty(entry, 'id');
|
|
20
|
+
const label = stringProperty(entry, 'label');
|
|
21
|
+
const timestamp = timestampOf(entry);
|
|
22
|
+
if (id === undefined || label === undefined || timestamp === undefined) return undefined;
|
|
23
|
+
return {
|
|
24
|
+
id,
|
|
25
|
+
label,
|
|
26
|
+
timestamp,
|
|
27
|
+
content: stringProperty(entry, 'content') ?? ''
|
|
28
|
+
};
|
|
29
|
+
}).filter((version)=>version !== undefined);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Reads an entry's `timestamp`, accepting both the ISO string a `.play` screen writes and the epoch
|
|
33
|
+
* number a serializer may produce, and rejecting anything that does not parse into a real date.
|
|
34
|
+
*/ function timestampOf(entry) {
|
|
35
|
+
const value = stringProperty(entry, 'timestamp') ?? numberProperty(entry, 'timestamp');
|
|
36
|
+
if (value === undefined) return undefined;
|
|
37
|
+
const timestamp = new Date(value);
|
|
38
|
+
return Number.isNaN(timestamp.getTime()) ? undefined : timestamp;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { timeMachineVersions };
|
|
42
|
+
//# sourceMappingURL=timeMachineVersions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeMachineVersions.js","sources":["../../../editors/timeMachineVersions.ts"],"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 { Version } from '@cratis/components/TimeMachine';\nimport { numberProperty, objectArrayProperty, stringProperty } from '../properties';\n\n/**\n * Reads a `versions` property into the `Version` list `TimeMachine` renders.\n *\n * An entry without an `id`, a `label` and a parseable `timestamp` is dropped rather than defaulted,\n * because `TimeMachine`'s whole job is to place versions on a timeline: a version invented at the epoch\n * would not be a slightly wrong entry, it would silently reorder every real one around it. A dropped\n * entry is visibly one item short; a fabricated one is a timeline that lies.\n *\n * `content` is rendered as text. A version whose content is a whole element tree is not something a\n * property bag can carry, and pretending otherwise would be the wrong seam - that belongs in a screen\n * template, not in a property.\n */\nexport function timeMachineVersions(properties: Record<string, unknown>): Version[] {\n const entries = objectArrayProperty(properties, 'versions') ?? [];\n\n return entries\n .map((entry): Version | undefined => {\n const id = stringProperty(entry, 'id');\n const label = stringProperty(entry, 'label');\n const timestamp = timestampOf(entry);\n if (id === undefined || label === undefined || timestamp === undefined) return undefined;\n\n return { id, label, timestamp, content: stringProperty(entry, 'content') ?? '' };\n })\n .filter((version): version is Version => version !== undefined);\n}\n\n/**\n * Reads an entry's `timestamp`, accepting both the ISO string a `.play` screen writes and the epoch\n * number a serializer may produce, and rejecting anything that does not parse into a real date.\n */\nfunction timestampOf(entry: Record<string, unknown>): Date | undefined {\n const value = stringProperty(entry, 'timestamp') ?? numberProperty(entry, 'timestamp');\n if (value === undefined) return undefined;\n\n const timestamp = new Date(value);\n return Number.isNaN(timestamp.getTime()) ? undefined : timestamp;\n}\n"],"names":["timeMachineVersions","properties","entries","objectArrayProperty","map","entry","id","stringProperty","label","timestamp","timestampOf","undefined","content","filter","version","value","numberProperty","Date","Number","isNaN","getTime"],"mappings":";;AAAA;AACA;AAKA;;;;;;;;;;;IAYO,SAASA,mBAAAA,CAAoBC,UAAmC,EAAA;AACnE,IAAA,MAAMC,OAAAA,GAAUC,mBAAAA,CAAoBF,UAAAA,EAAY,UAAA,CAAA,IAAe,EAAE;IAEjE,OAAOC,OAAAA,CACFE,GAAG,CAAC,CAACC,KAAAA,GAAAA;QACF,MAAMC,EAAAA,GAAKC,eAAeF,KAAAA,EAAO,IAAA,CAAA;QACjC,MAAMG,KAAAA,GAAQD,eAAeF,KAAAA,EAAO,OAAA,CAAA;AACpC,QAAA,MAAMI,YAAYC,WAAAA,CAAYL,KAAAA,CAAAA;AAC9B,QAAA,IAAIC,OAAOK,SAAAA,IAAaH,KAAAA,KAAUG,SAAAA,IAAaF,SAAAA,KAAcE,WAAW,OAAOA,SAAAA;QAE/E,OAAO;AAAEL,YAAAA,EAAAA;AAAIE,YAAAA,KAAAA;AAAOC,YAAAA,SAAAA;YAAWG,OAAAA,EAASL,cAAAA,CAAeF,OAAO,SAAA,CAAA,IAAc;AAAG,SAAA;AACnF,IAAA,CAAA,CAAA,CACCQ,MAAM,CAAC,CAACC,OAAAA,GAAgCA,OAAAA,KAAYH,SAAAA,CAAAA;AAC7D;AAEA;;;IAIA,SAASD,YAAYL,KAA8B,EAAA;AAC/C,IAAA,MAAMU,KAAAA,GAAQR,cAAAA,CAAeF,KAAAA,EAAO,WAAA,CAAA,IAAgBW,eAAeX,KAAAA,EAAO,WAAA,CAAA;IAC1E,IAAIU,KAAAA,KAAUJ,WAAW,OAAOA,SAAAA;IAEhC,MAAMF,SAAAA,GAAY,IAAIQ,IAAAA,CAAKF,KAAAA,CAAAA;AAC3B,IAAA,OAAOG,OAAOC,KAAK,CAACV,SAAAA,CAAUW,OAAO,MAAMT,SAAAA,GAAYF,SAAAA;AAC3D;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEditableCopy.d.ts","sourceRoot":"","sources":["../../../editors/useEditableCopy.ts"],"names":[],"mappings":"AAoBA,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAWrE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
|
|
3
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
4
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
5
|
+
/**
|
|
6
|
+
* Keeps a locally editable copy of a value a screen declares, resetting it whenever the declared value
|
|
7
|
+
* itself changes.
|
|
8
|
+
*
|
|
9
|
+
* The editors in `@cratis/components` are controlled components: `ObjectContentEditor`, `SchemaEditor`
|
|
10
|
+
* and `TimeMachine` all render what they are given and report changes through a callback. A Scene screen
|
|
11
|
+
* can only *declare* the starting value - a property bag has no way to receive a callback - so without
|
|
12
|
+
* somewhere to put the result, every one of these would render as a dead surface that discards every
|
|
13
|
+
* keystroke. Local state is what makes them behave like the editors they are while a screen is being
|
|
14
|
+
* designed; a host that needs the edits for real reads them off its own model, not off the screen.
|
|
15
|
+
*
|
|
16
|
+
* The reset is deliberately done during render rather than in an effect: Studio rewrites an element's
|
|
17
|
+
* properties as the designer types, and an effect-based reset would show one frame of the previous
|
|
18
|
+
* value every time.
|
|
19
|
+
*/ function useEditableCopy(source) {
|
|
20
|
+
const [edited, setEdited] = useState(source);
|
|
21
|
+
const [lastSource, setLastSource] = useState(source);
|
|
22
|
+
if (lastSource !== source) {
|
|
23
|
+
setLastSource(source);
|
|
24
|
+
setEdited(source);
|
|
25
|
+
return [
|
|
26
|
+
source,
|
|
27
|
+
setEdited
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
return [
|
|
31
|
+
edited,
|
|
32
|
+
setEdited
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export { useEditableCopy };
|
|
37
|
+
//# sourceMappingURL=useEditableCopy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEditableCopy.js","sources":["../../../editors/useEditableCopy.ts"],"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 } from 'react';\n\n/**\n * Keeps a locally editable copy of a value a screen declares, resetting it whenever the declared value\n * itself changes.\n *\n * The editors in `@cratis/components` are controlled components: `ObjectContentEditor`, `SchemaEditor`\n * and `TimeMachine` all render what they are given and report changes through a callback. A Scene screen\n * can only *declare* the starting value - a property bag has no way to receive a callback - so without\n * somewhere to put the result, every one of these would render as a dead surface that discards every\n * keystroke. Local state is what makes them behave like the editors they are while a screen is being\n * designed; a host that needs the edits for real reads them off its own model, not off the screen.\n *\n * The reset is deliberately done during render rather than in an effect: Studio rewrites an element's\n * properties as the designer types, and an effect-based reset would show one frame of the previous\n * value every time.\n */\nexport function useEditableCopy<T>(source: T): [T, (value: T) => void] {\n const [edited, setEdited] = useState(source);\n const [lastSource, setLastSource] = useState(source);\n\n if (lastSource !== source) {\n setLastSource(source);\n setEdited(source);\n return [source, setEdited];\n }\n\n return [edited, setEdited];\n}\n"],"names":["useEditableCopy","source","edited","setEdited","useState","lastSource","setLastSource"],"mappings":";;AAAA;AACA;AAIA;;;;;;;;;;;;;;IAeO,SAASA,eAAAA,CAAmBC,MAAS,EAAA;AACxC,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAAA,CAAU,GAAGC,QAAAA,CAASH,MAAAA,CAAAA;AACrC,IAAA,MAAM,CAACI,UAAAA,EAAYC,aAAAA,CAAc,GAAGF,QAAAA,CAASH,MAAAA,CAAAA;AAE7C,IAAA,IAAII,eAAeJ,MAAAA,EAAQ;QACvBK,aAAAA,CAAcL,MAAAA,CAAAA;QACdE,SAAAA,CAAUF,MAAAA,CAAAA;QACV,OAAO;AAACA,YAAAA,MAAAA;AAAQE,YAAAA;AAAU,SAAA;AAC9B,IAAA;IAEA,OAAO;AAACD,QAAAA,MAAAA;AAAQC,QAAAA;AAAU,KAAA;AAC9B;;;;"}
|
package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_rendering_a_screen_through_the_real_renderer.d.ts","sourceRoot":"","sources":["../../../for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { expect } from 'chai';
|
|
3
|
+
import { render, screen } from '@testing-library/react';
|
|
4
|
+
import { SceneElementView } from '@cratis/scene.react';
|
|
5
|
+
import { externalComponent } from '../given';
|
|
6
|
+
import { cratisComponents } from '../cratisComponents';
|
|
7
|
+
import { clearBindings } from '../bindings';
|
|
8
|
+
function withContent(element, content) {
|
|
9
|
+
return { ...element, slots: { content } };
|
|
10
|
+
}
|
|
11
|
+
const invoices = withContent(externalComponent('Cratis.Components:page', { title: 'Invoices', showTitle: true }), [
|
|
12
|
+
externalComponent('Cratis.Components:toolbar', {}),
|
|
13
|
+
externalComponent('Cratis.Components:dataTable', { query: 'AllInvoices', emptyMessage: 'No invoices' }),
|
|
14
|
+
]);
|
|
15
|
+
describe('when rendering a screen through the real renderer', () => {
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
clearBindings();
|
|
18
|
+
render(_jsx(SceneElementView, { element: invoices, registry: cratisComponents, resolveBinding: () => undefined }));
|
|
19
|
+
});
|
|
20
|
+
afterEach(() => clearBindings());
|
|
21
|
+
it('should resolve every component name against this package registry', () => expect(screen.getByRole('heading', { name: 'Invoices' })).to.exist);
|
|
22
|
+
it('should render the unbound table as a placeholder', () => expect(screen.getByText("Unresolved query binding 'AllInvoices' on Cratis.Components:dataTable")).to.exist);
|
|
23
|
+
it('should render no unresolved-component fallback', () => (document.querySelector('[data-scene-unresolved-component]') === null).should.be.true);
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=when_rendering_a_screen_through_the_real_renderer.js.map
|
package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_rendering_a_screen_through_the_real_renderer.js","sourceRoot":"","sources":["../../../for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,SAAS,WAAW,CAAC,OAA0B,EAAE,OAA4B;IACzE,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,QAAQ,GAAG,WAAW,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;IAC9G,iBAAiB,CAAC,2BAA2B,EAAE,EAAE,CAAC;IAClD,iBAAiB,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;CAC1G,CAAC,CAAC;AAEH,QAAQ,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC/D,UAAU,CAAC,GAAG,EAAE;QACZ,aAAa,EAAE,CAAC;QAChB,MAAM,CAAC,KAAC,gBAAgB,IAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,SAAS,GAAI,CAAC,CAAC;IACjH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IAEjC,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE,CACzE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAExE,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE,CACxD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,uEAAuE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAEhH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE,CACtD,CAAC,QAAQ,CAAC,aAAa,CAAC,mCAAmC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC/F,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_a_profile_ranks_it_above_the_packages_it_layers_on.d.ts","sourceRoot":"","sources":["../../../for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { resolveComponentName } from '@cratis/scene.engine';
|
|
2
|
+
import { cratisComponentsPackageManifest } from '../cratisComponentsPackage';
|
|
3
|
+
const profile = { name: 'test', targetPlatform: 'web', packages: ['core', 'PrimeReact', 'Cratis.Components'] };
|
|
4
|
+
const catalog = {
|
|
5
|
+
core: ['text', 'button', 'card'],
|
|
6
|
+
PrimeReact: ['button', 'table', 'dialog'],
|
|
7
|
+
'Cratis.Components': cratisComponentsPackageManifest.components,
|
|
8
|
+
};
|
|
9
|
+
describe('when a profile ranks it above the packages it layers on', () => {
|
|
10
|
+
describe('and it declares a name PrimeReact also declares', () => {
|
|
11
|
+
const resolution = resolveComponentName('table', profile, catalog);
|
|
12
|
+
it('should resolve to this package', () => resolution.package.should.equal('Cratis.Components'));
|
|
13
|
+
it('should record PrimeReact as shadowed rather than discarding it', () => resolution.shadows.should.deep.equal(['PrimeReact']));
|
|
14
|
+
});
|
|
15
|
+
describe('and it declares the dialog name PrimeReact also declares', () => {
|
|
16
|
+
const resolution = resolveComponentName('dialog', profile, catalog);
|
|
17
|
+
it('should resolve to the Arc-aware dialog rather than the bare PrimeReact one', () => resolution.package.should.equal('Cratis.Components'));
|
|
18
|
+
it('should record PrimeReact as shadowed', () => resolution.shadows.should.deep.equal(['PrimeReact']));
|
|
19
|
+
});
|
|
20
|
+
describe('and it declares a name nothing else does', () => {
|
|
21
|
+
const resolution = resolveComponentName('dataPage', profile, catalog);
|
|
22
|
+
it('should resolve to this package', () => resolution.package.should.equal('Cratis.Components'));
|
|
23
|
+
it('should shadow nothing', () => resolution.shadows.should.deep.equal([]));
|
|
24
|
+
});
|
|
25
|
+
describe('and a name it does not declare is asked for', () => {
|
|
26
|
+
const resolution = resolveComponentName('card', profile, catalog);
|
|
27
|
+
it('should fall through to the highest-priority package that does', () => resolution.package.should.equal('core'));
|
|
28
|
+
});
|
|
29
|
+
describe('and a screen qualifies the name with the package explicitly', () => {
|
|
30
|
+
const resolution = resolveComponentName('PrimeReact.table', profile, catalog);
|
|
31
|
+
it('should resolve to the named package even though this one outranks it', () => resolution.package.should.equal('PrimeReact'));
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=when_a_profile_ranks_it_above_the_packages_it_layers_on.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_a_profile_ranks_it_above_the_packages_it_layers_on.js","sourceRoot":"","sources":["../../../for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAE7E,MAAM,OAAO,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE,CAAC;AAE1H,MAAM,OAAO,GAAmB;IAC5B,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;IAChC,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;IACzC,mBAAmB,EAAE,+BAA+B,CAAC,UAAU;CAClE,CAAC;AAEF,QAAQ,CAAC,yDAAyD,EAAE,GAAG,EAAE;IACrE,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC7D,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAE,CAAC;QAEpE,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACjG,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrI,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACtE,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAE,CAAC;QAErE,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7I,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACtD,MAAM,UAAU,GAAG,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAE,CAAC;QAEvE,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACjG,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACzD,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAE,CAAC;QAEnE,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACvH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACzE,MAAM,UAAU,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,OAAO,EAAE,OAAO,CAAE,CAAC;QAE/E,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IACpI,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_resolving_its_dependencies.d.ts","sourceRoot":"","sources":["../../../for_cratisComponentsPackage/when_resolving_its_dependencies.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { PackageKind } from '@cratis/scene.model';
|
|
2
|
+
import { isPackageSelectionValid, resolvePackageDependencies } from '@cratis/scene.engine';
|
|
3
|
+
import { cratisComponentsPackageManifest } from '../cratisComponentsPackage';
|
|
4
|
+
const tailwind = {
|
|
5
|
+
name: 'Tailwind',
|
|
6
|
+
version: '4.3.3',
|
|
7
|
+
kind: PackageKind.Styling,
|
|
8
|
+
dependencies: [],
|
|
9
|
+
components: [],
|
|
10
|
+
layouts: [],
|
|
11
|
+
screenTemplates: [],
|
|
12
|
+
dialogTemplates: [],
|
|
13
|
+
themes: [],
|
|
14
|
+
};
|
|
15
|
+
const primeReact = {
|
|
16
|
+
name: 'PrimeReact',
|
|
17
|
+
version: '10.9.8',
|
|
18
|
+
kind: PackageKind.ComponentLibrary,
|
|
19
|
+
dependencies: [{ name: 'Tailwind' }],
|
|
20
|
+
components: ['button', 'table', 'dialog'],
|
|
21
|
+
layouts: [],
|
|
22
|
+
screenTemplates: [],
|
|
23
|
+
dialogTemplates: [],
|
|
24
|
+
themes: ['lara-light-blue', 'lara-dark-blue'],
|
|
25
|
+
};
|
|
26
|
+
describe('when resolving its dependencies', () => {
|
|
27
|
+
const catalog = [tailwind, primeReact, cratisComponentsPackageManifest];
|
|
28
|
+
const selection = resolvePackageDependencies(['Cratis.Components'], catalog);
|
|
29
|
+
it('should order every package it depends on before it', () => selection.packages.should.deep.equal(['Tailwind', 'PrimeReact', 'Cratis.Components']));
|
|
30
|
+
it('should report the packages it pulls in on the caller behalf', () => selection.added.should.deep.equal(['Tailwind', 'PrimeReact']));
|
|
31
|
+
it('should report nothing missing', () => selection.missing.should.deep.equal([]));
|
|
32
|
+
it('should report no version conflict', () => selection.versionConflicts.should.deep.equal([]));
|
|
33
|
+
it('should report no cycle', () => selection.cycles.should.deep.equal([]));
|
|
34
|
+
it('should be a valid selection', () => isPackageSelectionValid(selection).should.be.true);
|
|
35
|
+
describe('and neither dependency is in the catalog', () => {
|
|
36
|
+
const withoutDependencies = resolvePackageDependencies(['Cratis.Components'], [cratisComponentsPackageManifest]);
|
|
37
|
+
it('should report both as missing rather than silently ordering around them', () => withoutDependencies.missing.should.deep.equal([
|
|
38
|
+
{ package: 'Cratis.Components', dependsOn: 'PrimeReact' },
|
|
39
|
+
{ package: 'Cratis.Components', dependsOn: 'Tailwind' },
|
|
40
|
+
]));
|
|
41
|
+
});
|
|
42
|
+
describe('and PrimeReact is older than the range the token layer needs', () => {
|
|
43
|
+
const older = resolvePackageDependencies(['Cratis.Components'], [tailwind, { ...primeReact, version: '10.8.0' }, cratisComponentsPackageManifest]);
|
|
44
|
+
it('should report the version conflict', () => older.versionConflicts.should.deep.equal([
|
|
45
|
+
{ package: 'Cratis.Components', dependsOn: 'PrimeReact', requiredRange: '>=10.9.0', actualVersion: '10.8.0' },
|
|
46
|
+
]));
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=when_resolving_its_dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_resolving_its_dependencies.js","sourceRoot":"","sources":["../../../for_cratisComponentsPackage/when_resolving_its_dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_validating_the_bundle.d.ts","sourceRoot":"","sources":["../../../for_cratisComponentsPackage/when_validating_the_bundle.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { componentRegistryKey, validatePackageBundle } from '@cratis/scene.react';
|
|
2
|
+
import { cratisComponentsPackage, cratisComponentsPackageManifest } from '../cratisComponentsPackage';
|
|
3
|
+
import { cratisComponentsPackageName } from '../cratisComponents';
|
|
4
|
+
describe('when validating the bundle', () => {
|
|
5
|
+
const problems = validatePackageBundle(cratisComponentsPackage);
|
|
6
|
+
it('should report no problems', () => problems.should.deep.equal([]));
|
|
7
|
+
it('should register an implementation for every declared component', () => {
|
|
8
|
+
const missing = cratisComponentsPackageManifest.components.filter(name => !(componentRegistryKey(cratisComponentsPackageName, name) in cratisComponentsPackage.components));
|
|
9
|
+
missing.should.deep.equal([]);
|
|
10
|
+
});
|
|
11
|
+
it('should key every registration under this package name', () => {
|
|
12
|
+
const foreign = Object.keys(cratisComponentsPackage.components).filter(key => !key.startsWith(`${cratisComponentsPackageName}:`));
|
|
13
|
+
foreign.should.deep.equal([]);
|
|
14
|
+
});
|
|
15
|
+
it('should declare every registered component', () => {
|
|
16
|
+
const declared = new Set(cratisComponentsPackageManifest.components);
|
|
17
|
+
const undeclared = Object.keys(cratisComponentsPackage.components).filter(key => !declared.has(key.slice(`${cratisComponentsPackageName}:`.length)));
|
|
18
|
+
undeclared.should.deep.equal([]);
|
|
19
|
+
});
|
|
20
|
+
it('should declare no layouts, screen templates, dialog templates or themes', () => {
|
|
21
|
+
cratisComponentsPackageManifest.layouts.should.deep.equal([]);
|
|
22
|
+
cratisComponentsPackageManifest.screenTemplates.should.deep.equal([]);
|
|
23
|
+
cratisComponentsPackageManifest.dialogTemplates.should.deep.equal([]);
|
|
24
|
+
cratisComponentsPackageManifest.themes.should.deep.equal([]);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=when_validating_the_bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_validating_the_bundle.js","sourceRoot":"","sources":["../../../for_cratisComponentsPackage/when_validating_the_bundle.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AACtG,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;IAEhE,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtE,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,OAAO,GAAG,+BAA+B,CAAC,UAAU,CAAC,MAAM,CAC7D,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,2BAA2B,EAAE,IAAI,CAAC,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAC3G,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,2BAA2B,GAAG,CAAC,CAAC,CAAC;QAClI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,MAAM,CACrE,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,2BAA2B,GAAG,CAAC,MAAM,CAAC,CAAC,CAC5E,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QAC/E,+BAA+B,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9D,+BAA+B,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtE,+BAA+B,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtE,+BAA+B,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_a_property_has_the_wrong_type.d.ts","sourceRoot":"","sources":["../../../for_properties/when_a_property_has_the_wrong_type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { arrayProperty, booleanProperty, numberProperty, objectArrayProperty, objectProperty, stringArrayProperty, stringProperty, unionProperty, } from '../properties';
|
|
2
|
+
describe('when a property has the wrong type', () => {
|
|
3
|
+
const properties = {
|
|
4
|
+
title: 42,
|
|
5
|
+
panel: 'yes',
|
|
6
|
+
rows: 'ten',
|
|
7
|
+
notANumber: Number.NaN,
|
|
8
|
+
options: 'first,second',
|
|
9
|
+
schema: ['not', 'an', 'object'],
|
|
10
|
+
orientation: 'diagonal',
|
|
11
|
+
fields: ['name', 7, 'number'],
|
|
12
|
+
entries: [{ key: 'a' }, 'not an object'],
|
|
13
|
+
};
|
|
14
|
+
it('should not read a number as a string', () => (stringProperty(properties, 'title') === undefined).should.be.true);
|
|
15
|
+
it('should not read a string as a boolean', () => (booleanProperty(properties, 'panel') === undefined).should.be.true);
|
|
16
|
+
it('should not read a string as a number', () => (numberProperty(properties, 'rows') === undefined).should.be.true);
|
|
17
|
+
it('should not read NaN as a number', () => (numberProperty(properties, 'notANumber') === undefined).should.be.true);
|
|
18
|
+
it('should not read a string as an array', () => (arrayProperty(properties, 'options') === undefined).should.be.true);
|
|
19
|
+
it('should not read an array as an object', () => (objectProperty(properties, 'schema') === undefined).should.be.true);
|
|
20
|
+
it('should reject a value outside the allowed union', () => (unionProperty(properties, 'orientation', ['vertical', 'horizontal']) === undefined).should.be.true);
|
|
21
|
+
it('should keep only the string elements of a string array', () => stringArrayProperty(properties, 'fields').should.deep.equal(['name', 'number']));
|
|
22
|
+
it('should keep only the object elements of an object array', () => objectArrayProperty(properties, 'entries').should.deep.equal([{ key: 'a' }]));
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=when_a_property_has_the_wrong_type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_a_property_has_the_wrong_type.js","sourceRoot":"","sources":["../../../for_properties/when_a_property_has_the_wrong_type.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,aAAa,GAChB,MAAM,eAAe,CAAC;AAEvB,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAChD,MAAM,UAAU,GAA4B;QACxC,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,MAAM,CAAC,GAAG;QACtB,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC;QAC/B,WAAW,EAAE,UAAU;QACvB,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC;QAC7B,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,eAAe,CAAC;KAC3C,CAAC;IAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACrH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACvH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACpH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,YAAY,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACrH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACtH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAEvH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE,CACvD,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAEzG,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAErJ,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACvJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_a_property_is_missing.d.ts","sourceRoot":"","sources":["../../../for_properties/when_a_property_is_missing.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { arrayProperty, booleanProperty, numberProperty, objectArrayProperty, objectProperty, stringArrayProperty, stringProperty, unionProperty, } from '../properties';
|
|
2
|
+
describe('when a property is missing', () => {
|
|
3
|
+
const properties = {};
|
|
4
|
+
it('should read no string', () => (stringProperty(properties, 'title') === undefined).should.be.true);
|
|
5
|
+
it('should read no boolean', () => (booleanProperty(properties, 'panel') === undefined).should.be.true);
|
|
6
|
+
it('should read no number', () => (numberProperty(properties, 'rows') === undefined).should.be.true);
|
|
7
|
+
it('should read no array', () => (arrayProperty(properties, 'options') === undefined).should.be.true);
|
|
8
|
+
it('should read no string array', () => (stringArrayProperty(properties, 'fields') === undefined).should.be.true);
|
|
9
|
+
it('should read no object array', () => (objectArrayProperty(properties, 'options') === undefined).should.be.true);
|
|
10
|
+
it('should read no object', () => (objectProperty(properties, 'schema') === undefined).should.be.true);
|
|
11
|
+
it('should read no union value', () => (unionProperty(properties, 'orientation', ['vertical', 'horizontal']) === undefined).should.be.true);
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=when_a_property_is_missing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_a_property_is_missing.js","sourceRoot":"","sources":["../../../for_properties/when_a_property_is_missing.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,aAAa,GAChB,MAAM,eAAe,CAAC;AAEvB,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,MAAM,UAAU,GAA4B,EAAE,CAAC;IAE/C,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACtG,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACxG,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACrG,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACtG,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC,CAAC,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACnH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACvG,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAChJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_a_property_is_present.d.ts","sourceRoot":"","sources":["../../../for_properties/when_a_property_is_present.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { arrayProperty, booleanProperty, numberProperty, objectArrayProperty, objectProperty, stringArrayProperty, stringProperty, unionProperty, } from '../properties';
|
|
2
|
+
describe('when a property is present', () => {
|
|
3
|
+
const properties = {
|
|
4
|
+
title: 'Invoices',
|
|
5
|
+
panel: false,
|
|
6
|
+
rows: 0,
|
|
7
|
+
options: [{ label: 'Draft', value: 'draft' }],
|
|
8
|
+
fields: ['number', 'customer'],
|
|
9
|
+
schema: { type: 'object' },
|
|
10
|
+
orientation: 'vertical',
|
|
11
|
+
};
|
|
12
|
+
it('should read the string', () => stringProperty(properties, 'title').should.equal('Invoices'));
|
|
13
|
+
it('should read a false boolean rather than treating it as absent', () => booleanProperty(properties, 'panel').should.equal(false));
|
|
14
|
+
it('should read a zero number rather than treating it as absent', () => numberProperty(properties, 'rows').should.equal(0));
|
|
15
|
+
it('should read the array', () => arrayProperty(properties, 'options').should.have.lengthOf(1));
|
|
16
|
+
it('should read the string array', () => stringArrayProperty(properties, 'fields').should.deep.equal(['number', 'customer']));
|
|
17
|
+
it('should read the object array', () => objectArrayProperty(properties, 'options').should.deep.equal([{ label: 'Draft', value: 'draft' }]));
|
|
18
|
+
it('should read the object', () => objectProperty(properties, 'schema').should.deep.equal({ type: 'object' }));
|
|
19
|
+
it('should read a value that is in the allowed union', () => unionProperty(properties, 'orientation', ['vertical', 'horizontal']).should.equal('vertical'));
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=when_a_property_is_present.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when_a_property_is_present.js","sourceRoot":"","sources":["../../../for_properties/when_a_property_is_present.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,aAAa,GAChB,MAAM,eAAe,CAAC;AAEvB,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,MAAM,UAAU,GAA4B;QACxC,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC7C,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;QAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,WAAW,EAAE,UAAU;KAC1B,CAAC;IAEF,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAClG,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACrI,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7H,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/H,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9I,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEhH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE,CACxD,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACxG,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SceneCommandForm.d.ts","sourceRoot":"","sources":["../../../forms/SceneCommandForm.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AA+B/D,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,wBAAwB,+BASrE"}
|