@cratis/scene.engine 4.2.0 → 4.3.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/dist/cjs/editing/DescriptorCatalog.js +42 -0
- package/dist/cjs/editing/DescriptorCatalog.js.map +1 -0
- package/dist/cjs/editing/EditSession.js +44 -0
- package/dist/cjs/editing/EditSession.js.map +1 -0
- package/dist/cjs/editing/applyEdit.js +83 -0
- package/dist/cjs/editing/applyEdit.js.map +1 -0
- package/dist/cjs/editing/applyEffectiveConfiguration.js +62 -0
- package/dist/cjs/editing/applyEffectiveConfiguration.js.map +1 -0
- package/dist/cjs/editing/collectComponents.js +34 -0
- package/dist/cjs/editing/collectComponents.js.map +1 -0
- package/dist/cjs/editing/describeNode.js +63 -0
- package/dist/cjs/editing/describeNode.js.map +1 -0
- package/dist/cjs/editing/diagnostics.js +36 -0
- package/dist/cjs/editing/diagnostics.js.map +1 -0
- package/dist/cjs/editing/documentPaths.js +45 -0
- package/dist/cjs/editing/documentPaths.js.map +1 -0
- package/dist/cjs/editing/exposureEdits.js +106 -0
- package/dist/cjs/editing/exposureEdits.js.map +1 -0
- package/dist/cjs/editing/exposureGrants.js +115 -0
- package/dist/cjs/editing/exposureGrants.js.map +1 -0
- package/dist/cjs/editing/indexDocument.js +400 -0
- package/dist/cjs/editing/indexDocument.js.map +1 -0
- package/dist/cjs/editing/inspect.js +127 -0
- package/dist/cjs/editing/inspect.js.map +1 -0
- package/dist/cjs/editing/instanceEdits.js +255 -0
- package/dist/cjs/editing/instanceEdits.js.map +1 -0
- package/dist/cjs/editing/layoutTypeDescriptors.js +425 -0
- package/dist/cjs/editing/layoutTypeDescriptors.js.map +1 -0
- package/dist/cjs/editing/layoutTypeEdits.js +141 -0
- package/dist/cjs/editing/layoutTypeEdits.js.map +1 -0
- package/dist/cjs/editing/nodeIds.js +115 -0
- package/dist/cjs/editing/nodeIds.js.map +1 -0
- package/dist/cjs/editing/pathAccess.js +53 -0
- package/dist/cjs/editing/pathAccess.js.map +1 -0
- package/dist/cjs/editing/propertyEdits.js +118 -0
- package/dist/cjs/editing/propertyEdits.js.map +1 -0
- package/dist/cjs/editing/resolveEffectiveConfiguration.js +200 -0
- package/dist/cjs/editing/resolveEffectiveConfiguration.js.map +1 -0
- package/dist/cjs/editing/resolveTemplateChain.js +100 -0
- package/dist/cjs/editing/resolveTemplateChain.js.map +1 -0
- package/dist/cjs/editing/structureEdits.js +231 -0
- package/dist/cjs/editing/structureEdits.js.map +1 -0
- package/dist/cjs/editing/validateBinding.js +111 -0
- package/dist/cjs/editing/validateBinding.js.map +1 -0
- package/dist/cjs/editing/validateValue.js +114 -0
- package/dist/cjs/editing/validateValue.js.map +1 -0
- package/dist/cjs/index.js +51 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/editing/DescriptorCatalog.d.ts +9 -0
- package/dist/esm/editing/DescriptorCatalog.d.ts.map +1 -0
- package/dist/esm/editing/DescriptorCatalog.js +38 -0
- package/dist/esm/editing/DescriptorCatalog.js.map +1 -0
- package/dist/esm/editing/DocumentIndex.d.ts +31 -0
- package/dist/esm/editing/DocumentIndex.d.ts.map +1 -0
- package/dist/esm/editing/DocumentIndex.js +2 -0
- package/dist/esm/editing/DocumentIndex.js.map +1 -0
- package/dist/esm/editing/EditOutcome.d.ts +7 -0
- package/dist/esm/editing/EditOutcome.d.ts.map +1 -0
- package/dist/esm/editing/EditOutcome.js +2 -0
- package/dist/esm/editing/EditOutcome.js.map +1 -0
- package/dist/esm/editing/EditSession.d.ts +20 -0
- package/dist/esm/editing/EditSession.d.ts.map +1 -0
- package/dist/esm/editing/EditSession.js +42 -0
- package/dist/esm/editing/EditSession.js.map +1 -0
- package/dist/esm/editing/EditingContext.d.ts +8 -0
- package/dist/esm/editing/EditingContext.d.ts.map +1 -0
- package/dist/esm/editing/EditingContext.js +2 -0
- package/dist/esm/editing/EditingContext.js.map +1 -0
- package/dist/esm/editing/TemplateChain.d.ts +13 -0
- package/dist/esm/editing/TemplateChain.d.ts.map +1 -0
- package/dist/esm/editing/TemplateChain.js +2 -0
- package/dist/esm/editing/TemplateChain.js.map +1 -0
- package/dist/esm/editing/applyEdit.d.ts +5 -0
- package/dist/esm/editing/applyEdit.d.ts.map +1 -0
- package/dist/esm/editing/applyEdit.js +81 -0
- package/dist/esm/editing/applyEdit.js.map +1 -0
- package/dist/esm/editing/applyEffectiveConfiguration.d.ts +3 -0
- package/dist/esm/editing/applyEffectiveConfiguration.d.ts.map +1 -0
- package/dist/esm/editing/applyEffectiveConfiguration.js +60 -0
- package/dist/esm/editing/applyEffectiveConfiguration.js.map +1 -0
- package/dist/esm/editing/collectComponents.d.ts +3 -0
- package/dist/esm/editing/collectComponents.d.ts.map +1 -0
- package/dist/esm/editing/collectComponents.js +32 -0
- package/dist/esm/editing/collectComponents.js.map +1 -0
- package/dist/esm/editing/describeNode.d.ts +11 -0
- package/dist/esm/editing/describeNode.d.ts.map +1 -0
- package/dist/esm/editing/describeNode.js +60 -0
- package/dist/esm/editing/describeNode.js.map +1 -0
- package/dist/esm/editing/diagnostics.d.ts +6 -0
- package/dist/esm/editing/diagnostics.d.ts.map +1 -0
- package/dist/esm/editing/diagnostics.js +32 -0
- package/dist/esm/editing/diagnostics.js.map +1 -0
- package/dist/esm/editing/documentPaths.d.ts +8 -0
- package/dist/esm/editing/documentPaths.d.ts.map +1 -0
- package/dist/esm/editing/documentPaths.js +41 -0
- package/dist/esm/editing/documentPaths.js.map +1 -0
- package/dist/esm/editing/exposureEdits.d.ts +5 -0
- package/dist/esm/editing/exposureEdits.d.ts.map +1 -0
- package/dist/esm/editing/exposureEdits.js +103 -0
- package/dist/esm/editing/exposureEdits.js.map +1 -0
- package/dist/esm/editing/exposureGrants.d.ts +21 -0
- package/dist/esm/editing/exposureGrants.d.ts.map +1 -0
- package/dist/esm/editing/exposureGrants.js +112 -0
- package/dist/esm/editing/exposureGrants.js.map +1 -0
- package/dist/esm/editing/given/a_layout_document.d.ts +14 -0
- package/dist/esm/editing/given/a_layout_document.d.ts.map +1 -0
- package/dist/esm/editing/given/a_layout_document.js +67 -0
- package/dist/esm/editing/given/a_layout_document.js.map +1 -0
- package/dist/esm/editing/given/a_scene_document.d.ts +20 -0
- package/dist/esm/editing/given/a_scene_document.d.ts.map +1 -0
- package/dist/esm/editing/given/a_scene_document.js +110 -0
- package/dist/esm/editing/given/a_scene_document.js.map +1 -0
- package/dist/esm/editing/index.d.ts +19 -0
- package/dist/esm/editing/index.d.ts.map +1 -0
- package/dist/esm/editing/index.js +19 -0
- package/dist/esm/editing/index.js.map +1 -0
- package/dist/esm/editing/indexDocument.d.ts +6 -0
- package/dist/esm/editing/indexDocument.d.ts.map +1 -0
- package/dist/esm/editing/indexDocument.js +396 -0
- package/dist/esm/editing/indexDocument.js.map +1 -0
- package/dist/esm/editing/inspect.d.ts +8 -0
- package/dist/esm/editing/inspect.d.ts.map +1 -0
- package/dist/esm/editing/inspect.js +124 -0
- package/dist/esm/editing/inspect.js.map +1 -0
- package/dist/esm/editing/instanceEdits.d.ts +9 -0
- package/dist/esm/editing/instanceEdits.d.ts.map +1 -0
- package/dist/esm/editing/instanceEdits.js +248 -0
- package/dist/esm/editing/instanceEdits.js.map +1 -0
- package/dist/esm/editing/layoutTypeDescriptors.d.ts +5 -0
- package/dist/esm/editing/layoutTypeDescriptors.d.ts.map +1 -0
- package/dist/esm/editing/layoutTypeDescriptors.js +421 -0
- package/dist/esm/editing/layoutTypeDescriptors.js.map +1 -0
- package/dist/esm/editing/layoutTypeEdits.d.ts +4 -0
- package/dist/esm/editing/layoutTypeEdits.d.ts.map +1 -0
- package/dist/esm/editing/layoutTypeEdits.js +139 -0
- package/dist/esm/editing/layoutTypeEdits.js.map +1 -0
- package/dist/esm/editing/nodeIds.d.ts +14 -0
- package/dist/esm/editing/nodeIds.d.ts.map +1 -0
- package/dist/esm/editing/nodeIds.js +102 -0
- package/dist/esm/editing/nodeIds.js.map +1 -0
- package/dist/esm/editing/pathAccess.d.ts +7 -0
- package/dist/esm/editing/pathAccess.d.ts.map +1 -0
- package/dist/esm/editing/pathAccess.js +48 -0
- package/dist/esm/editing/pathAccess.js.map +1 -0
- package/dist/esm/editing/propertyEdits.d.ts +15 -0
- package/dist/esm/editing/propertyEdits.d.ts.map +1 -0
- package/dist/esm/editing/propertyEdits.js +113 -0
- package/dist/esm/editing/propertyEdits.js.map +1 -0
- package/dist/esm/editing/resolveEffectiveConfiguration.d.ts +5 -0
- package/dist/esm/editing/resolveEffectiveConfiguration.d.ts.map +1 -0
- package/dist/esm/editing/resolveEffectiveConfiguration.js +198 -0
- package/dist/esm/editing/resolveEffectiveConfiguration.js.map +1 -0
- package/dist/esm/editing/resolveTemplateChain.d.ts +4 -0
- package/dist/esm/editing/resolveTemplateChain.d.ts.map +1 -0
- package/dist/esm/editing/resolveTemplateChain.js +98 -0
- package/dist/esm/editing/resolveTemplateChain.js.map +1 -0
- package/dist/esm/editing/structureEdits.d.ts +6 -0
- package/dist/esm/editing/structureEdits.d.ts.map +1 -0
- package/dist/esm/editing/structureEdits.js +227 -0
- package/dist/esm/editing/structureEdits.js.map +1 -0
- package/dist/esm/editing/validateBinding.d.ts +7 -0
- package/dist/esm/editing/validateBinding.d.ts.map +1 -0
- package/dist/esm/editing/validateBinding.js +108 -0
- package/dist/esm/editing/validateBinding.js.map +1 -0
- package/dist/esm/editing/validateValue.d.ts +8 -0
- package/dist/esm/editing/validateValue.d.ts.map +1 -0
- package/dist/esm/editing/validateValue.js +111 -0
- package/dist/esm/editing/validateValue.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +14 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/editing/DescriptorCatalog.ts +51 -0
- package/editing/DocumentIndex.ts +73 -0
- package/editing/EditOutcome.ts +21 -0
- package/editing/EditSession.ts +50 -0
- package/editing/EditingContext.ts +23 -0
- package/editing/TemplateChain.ts +36 -0
- package/editing/applyEdit.ts +69 -0
- package/editing/applyEffectiveConfiguration.ts +53 -0
- package/editing/collectComponents.ts +36 -0
- package/editing/describeNode.ts +61 -0
- package/editing/diagnostics.ts +30 -0
- package/editing/documentPaths.ts +40 -0
- package/editing/exposureEdits.ts +119 -0
- package/editing/exposureGrants.ts +159 -0
- package/editing/given/a_layout_document.ts +88 -0
- package/editing/given/a_scene_document.ts +135 -0
- package/editing/index.ts +21 -0
- package/editing/indexDocument.ts +237 -0
- package/editing/inspect.ts +142 -0
- package/editing/instanceEdits.ts +243 -0
- package/editing/layoutTypeDescriptors.ts +191 -0
- package/editing/layoutTypeEdits.ts +135 -0
- package/editing/nodeIds.ts +111 -0
- package/editing/pathAccess.ts +81 -0
- package/editing/propertyEdits.ts +119 -0
- package/editing/resolveEffectiveConfiguration.ts +202 -0
- package/editing/resolveTemplateChain.ts +109 -0
- package/editing/structureEdits.ts +234 -0
- package/editing/validateBinding.ts +103 -0
- package/editing/validateValue.ts +130 -0
- package/index.ts +1 -0
- package/package.json +5 -4
- package/dist/esm/for_aggregateContributions/when_aggregating_by_contribution_point.d.ts +0 -2
- package/dist/esm/for_aggregateContributions/when_aggregating_by_contribution_point.d.ts.map +0 -1
- package/dist/esm/for_aggregateContributions/when_aggregating_by_contribution_point.js +0 -23
- package/dist/esm/for_aggregateContributions/when_aggregating_by_contribution_point.js.map +0 -1
- package/dist/esm/for_buildStarterProfile/when_checking_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_buildStarterProfile/when_checking_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_buildStarterProfile/when_checking_against_the_shared_fixture_corpus.js +0 -16
- package/dist/esm/for_buildStarterProfile/when_checking_against_the_shared_fixture_corpus.js.map +0 -1
- package/dist/esm/for_computeSizeClass/when_computing_the_size_class.d.ts +0 -2
- package/dist/esm/for_computeSizeClass/when_computing_the_size_class.d.ts.map +0 -1
- package/dist/esm/for_computeSizeClass/when_computing_the_size_class.js +0 -17
- package/dist/esm/for_computeSizeClass/when_computing_the_size_class.js.map +0 -1
- package/dist/esm/for_evaluateFlowArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_evaluateFlowArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_evaluateFlowArrangement/when_evaluating_against_the_shared_fixture_corpus.js +0 -43
- package/dist/esm/for_evaluateFlowArrangement/when_evaluating_against_the_shared_fixture_corpus.js.map +0 -1
- package/dist/esm/for_evaluateFreeformArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_evaluateFreeformArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_evaluateFreeformArrangement/when_evaluating_against_the_shared_fixture_corpus.js +0 -46
- package/dist/esm/for_evaluateFreeformArrangement/when_evaluating_against_the_shared_fixture_corpus.js.map +0 -1
- package/dist/esm/for_evaluateFreeformSlotArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_evaluateFreeformSlotArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_evaluateFreeformSlotArrangement/when_evaluating_against_the_shared_fixture_corpus.js +0 -25
- package/dist/esm/for_evaluateFreeformSlotArrangement/when_evaluating_against_the_shared_fixture_corpus.js.map +0 -1
- package/dist/esm/for_incompatibleStarterThemes/when_checking_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_incompatibleStarterThemes/when_checking_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_incompatibleStarterThemes/when_checking_against_the_shared_fixture_corpus.js +0 -17
- package/dist/esm/for_incompatibleStarterThemes/when_checking_against_the_shared_fixture_corpus.js.map +0 -1
- package/dist/esm/for_packageCatalog/when_querying_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_packageCatalog/when_querying_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_packageCatalog/when_querying_against_the_shared_fixture_corpus.js +0 -22
- package/dist/esm/for_packageCatalog/when_querying_against_the_shared_fixture_corpus.js.map +0 -1
- package/dist/esm/for_packageDependencies/fixtures.d.ts +0 -38
- package/dist/esm/for_packageDependencies/fixtures.d.ts.map +0 -1
- package/dist/esm/for_packageDependencies/fixtures.js +0 -5
- package/dist/esm/for_packageDependencies/fixtures.js.map +0 -1
- package/dist/esm/for_packageDependencies/when_resolving_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_packageDependencies/when_resolving_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_packageDependencies/when_resolving_against_the_shared_fixture_corpus.js +0 -29
- package/dist/esm/for_packageDependencies/when_resolving_against_the_shared_fixture_corpus.js.map +0 -1
- package/dist/esm/for_packageVersionRange/when_checking_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_packageVersionRange/when_checking_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_packageVersionRange/when_checking_against_the_shared_fixture_corpus.js +0 -10
- package/dist/esm/for_packageVersionRange/when_checking_against_the_shared_fixture_corpus.js.map +0 -1
- package/dist/esm/for_panelKind/when_telling_the_panels_apart.d.ts +0 -2
- package/dist/esm/for_panelKind/when_telling_the_panels_apart.d.ts.map +0 -1
- package/dist/esm/for_panelKind/when_telling_the_panels_apart.js +0 -38
- package/dist/esm/for_panelKind/when_telling_the_panels_apart.js.map +0 -1
- package/dist/esm/for_renderElement/when_rendering_a_mixed_tree.d.ts +0 -2
- package/dist/esm/for_renderElement/when_rendering_a_mixed_tree.d.ts.map +0 -1
- package/dist/esm/for_renderElement/when_rendering_a_mixed_tree.js +0 -46
- package/dist/esm/for_renderElement/when_rendering_a_mixed_tree.js.map +0 -1
- package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.d.ts +0 -2
- package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.d.ts.map +0 -1
- package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.js +0 -68
- package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.js.map +0 -1
- package/dist/esm/for_resolveComponentName/when_resolving_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_resolveComponentName/when_resolving_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_resolveComponentName/when_resolving_against_the_shared_fixture_corpus.js +0 -20
- package/dist/esm/for_resolveComponentName/when_resolving_against_the_shared_fixture_corpus.js.map +0 -1
- package/dist/esm/for_resolveScreenTemplates/when_resolving_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_resolveScreenTemplates/when_resolving_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_resolveScreenTemplates/when_resolving_against_the_shared_fixture_corpus.js +0 -30
- package/dist/esm/for_resolveScreenTemplates/when_resolving_against_the_shared_fixture_corpus.js.map +0 -1
- package/dist/esm/for_resolveStrings/when_resolving_a_strings_reference.d.ts +0 -2
- package/dist/esm/for_resolveStrings/when_resolving_a_strings_reference.d.ts.map +0 -1
- package/dist/esm/for_resolveStrings/when_resolving_a_strings_reference.js +0 -69
- package/dist/esm/for_resolveStrings/when_resolving_a_strings_reference.js.map +0 -1
- package/dist/esm/for_runActions/given/a_recording_dispatcher.d.ts +0 -21
- package/dist/esm/for_runActions/given/a_recording_dispatcher.d.ts.map +0 -1
- package/dist/esm/for_runActions/given/a_recording_dispatcher.js +0 -45
- package/dist/esm/for_runActions/given/a_recording_dispatcher.js.map +0 -1
- package/dist/esm/for_runActions/when_running_a_sequence_of_actions.d.ts +0 -2
- package/dist/esm/for_runActions/when_running_a_sequence_of_actions.d.ts.map +0 -1
- package/dist/esm/for_runActions/when_running_a_sequence_of_actions.js +0 -126
- package/dist/esm/for_runActions/when_running_a_sequence_of_actions.js.map +0 -1
- package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.js +0 -61
- package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.js.map +0 -1
- package/dist/esm/for_themeCompatibility/when_checking_against_the_shared_fixture_corpus.d.ts +0 -2
- package/dist/esm/for_themeCompatibility/when_checking_against_the_shared_fixture_corpus.d.ts.map +0 -1
- package/dist/esm/for_themeCompatibility/when_checking_against_the_shared_fixture_corpus.js +0 -18
- package/dist/esm/for_themeCompatibility/when_checking_against_the_shared_fixture_corpus.js.map +0 -1
- package/for_aggregateContributions/when_aggregating_by_contribution_point.ts +0 -31
- package/for_buildStarterProfile/when_checking_against_the_shared_fixture_corpus.ts +0 -32
- package/for_computeSizeClass/when_computing_the_size_class.ts +0 -23
- package/for_evaluateFlowArrangement/when_evaluating_against_the_shared_fixture_corpus.ts +0 -67
- package/for_evaluateFreeformArrangement/when_evaluating_against_the_shared_fixture_corpus.ts +0 -68
- package/for_evaluateFreeformSlotArrangement/when_evaluating_against_the_shared_fixture_corpus.ts +0 -47
- package/for_incompatibleStarterThemes/when_checking_against_the_shared_fixture_corpus.ts +0 -34
- package/for_packageCatalog/when_querying_against_the_shared_fixture_corpus.ts +0 -26
- package/for_packageDependencies/fixtures.ts +0 -44
- package/for_packageDependencies/when_resolving_against_the_shared_fixture_corpus.ts +0 -39
- package/for_packageVersionRange/when_checking_against_the_shared_fixture_corpus.ts +0 -13
- package/for_panelKind/when_telling_the_panels_apart.ts +0 -47
- package/for_renderElement/when_rendering_a_mixed_tree.ts +0 -58
- package/for_resolveBehaviors/when_resolving_additive_attachments.ts +0 -100
- package/for_resolveComponentName/when_resolving_against_the_shared_fixture_corpus.ts +0 -36
- package/for_resolveScreenTemplates/when_resolving_against_the_shared_fixture_corpus.ts +0 -49
- package/for_resolveStrings/when_resolving_a_strings_reference.ts +0 -85
- package/for_runActions/given/a_recording_dispatcher.ts +0 -72
- package/for_runActions/when_running_a_sequence_of_actions.ts +0 -226
- package/for_runActions/when_running_against_the_shared_fixture_corpus.ts +0 -124
- package/for_themeCompatibility/when_checking_against_the_shared_fixture_corpus.ts +0 -37
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var scene_model = require('@cratis/scene.model');
|
|
4
|
+
|
|
5
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
6
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
7
|
+
function choices(enumObject) {
|
|
8
|
+
return Object.values(enumObject).map((value)=>({
|
|
9
|
+
value,
|
|
10
|
+
label: value
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
const spacing = (path, label, group)=>({
|
|
14
|
+
path,
|
|
15
|
+
label,
|
|
16
|
+
group,
|
|
17
|
+
valueType: scene_model.PropertyValueType.Number,
|
|
18
|
+
default: 0,
|
|
19
|
+
constraints: {
|
|
20
|
+
minimum: 0
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const flowNodeProperties = [
|
|
24
|
+
{
|
|
25
|
+
path: 'grow',
|
|
26
|
+
label: 'Grow',
|
|
27
|
+
group: 'Layout',
|
|
28
|
+
valueType: scene_model.PropertyValueType.Number,
|
|
29
|
+
description: 'How much of the free space in its container this node takes, relative to its siblings.',
|
|
30
|
+
constraints: {
|
|
31
|
+
minimum: 0
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
path: 'span',
|
|
36
|
+
label: 'Span',
|
|
37
|
+
group: 'Layout',
|
|
38
|
+
valueType: scene_model.PropertyValueType.Number,
|
|
39
|
+
description: 'How many grid columns this node spans. Only meaningful inside a grid.',
|
|
40
|
+
constraints: {
|
|
41
|
+
minimum: 1,
|
|
42
|
+
integer: true
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
];
|
|
46
|
+
const flowContainerProperties = [
|
|
47
|
+
spacing('gap', 'Gap', 'Layout'),
|
|
48
|
+
...flowNodeProperties
|
|
49
|
+
];
|
|
50
|
+
const panelProperties = [
|
|
51
|
+
{
|
|
52
|
+
path: 'name',
|
|
53
|
+
label: 'Name',
|
|
54
|
+
group: 'General',
|
|
55
|
+
valueType: scene_model.PropertyValueType.String
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
path: 'visibility',
|
|
59
|
+
label: 'Visibility',
|
|
60
|
+
group: 'General',
|
|
61
|
+
valueType: scene_model.PropertyValueType.Enum,
|
|
62
|
+
choices: choices(scene_model.Visibility),
|
|
63
|
+
default: scene_model.Visibility.Visible
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
path: 'isEnabled',
|
|
67
|
+
label: 'Enabled',
|
|
68
|
+
group: 'General',
|
|
69
|
+
valueType: scene_model.PropertyValueType.Boolean,
|
|
70
|
+
default: true
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
path: 'opacity',
|
|
74
|
+
label: 'Opacity',
|
|
75
|
+
group: 'General',
|
|
76
|
+
valueType: scene_model.PropertyValueType.Number,
|
|
77
|
+
default: 1,
|
|
78
|
+
constraints: {
|
|
79
|
+
minimum: 0,
|
|
80
|
+
maximum: 1
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
path: 'horizontalAlignment',
|
|
85
|
+
label: 'Horizontal alignment',
|
|
86
|
+
group: 'Layout',
|
|
87
|
+
valueType: scene_model.PropertyValueType.Enum,
|
|
88
|
+
choices: choices(scene_model.HorizontalAlignment)
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
path: 'verticalAlignment',
|
|
92
|
+
label: 'Vertical alignment',
|
|
93
|
+
group: 'Layout',
|
|
94
|
+
valueType: scene_model.PropertyValueType.Enum,
|
|
95
|
+
choices: choices(scene_model.VerticalAlignment)
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
path: 'zIndex',
|
|
99
|
+
label: 'Stacking order',
|
|
100
|
+
group: 'Layout',
|
|
101
|
+
valueType: scene_model.PropertyValueType.Number,
|
|
102
|
+
default: 0,
|
|
103
|
+
constraints: {
|
|
104
|
+
integer: true
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
];
|
|
108
|
+
const orientation = {
|
|
109
|
+
path: 'orientation',
|
|
110
|
+
label: 'Orientation',
|
|
111
|
+
group: 'Layout',
|
|
112
|
+
valueType: scene_model.PropertyValueType.Enum,
|
|
113
|
+
choices: choices(scene_model.Orientation)
|
|
114
|
+
};
|
|
115
|
+
const panelChildren = {
|
|
116
|
+
acceptsChildren: true,
|
|
117
|
+
childPlacement: scene_model.LayoutChildPlacement.Ordered,
|
|
118
|
+
supportsSizeClassVariants: false
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* The layout type -> capability matrix, as data. Every {@link LayoutType} has exactly one entry; the
|
|
122
|
+
* documentation's matrix is this table.
|
|
123
|
+
*/ const layoutTypeDescriptors = [
|
|
124
|
+
{
|
|
125
|
+
type: scene_model.LayoutType.FlowRow,
|
|
126
|
+
label: 'Row',
|
|
127
|
+
description: 'Reflows its children horizontally.',
|
|
128
|
+
capabilities: {
|
|
129
|
+
acceptsChildren: true,
|
|
130
|
+
childPlacement: scene_model.LayoutChildPlacement.Ordered,
|
|
131
|
+
supportsGridSpan: false,
|
|
132
|
+
supportsSizeClassVariants: true,
|
|
133
|
+
convertibleTo: [
|
|
134
|
+
scene_model.LayoutType.FlowColumn,
|
|
135
|
+
scene_model.LayoutType.FlowGrid
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
properties: flowContainerProperties
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: scene_model.LayoutType.FlowColumn,
|
|
142
|
+
label: 'Column',
|
|
143
|
+
description: 'Reflows its children vertically.',
|
|
144
|
+
capabilities: {
|
|
145
|
+
acceptsChildren: true,
|
|
146
|
+
childPlacement: scene_model.LayoutChildPlacement.Ordered,
|
|
147
|
+
supportsGridSpan: false,
|
|
148
|
+
supportsSizeClassVariants: true,
|
|
149
|
+
convertibleTo: [
|
|
150
|
+
scene_model.LayoutType.FlowRow,
|
|
151
|
+
scene_model.LayoutType.FlowGrid
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
properties: flowContainerProperties
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: scene_model.LayoutType.FlowGrid,
|
|
158
|
+
label: 'Grid',
|
|
159
|
+
description: 'Arranges its children in a grid; children can span columns.',
|
|
160
|
+
capabilities: {
|
|
161
|
+
acceptsChildren: true,
|
|
162
|
+
childPlacement: scene_model.LayoutChildPlacement.Ordered,
|
|
163
|
+
supportsGridSpan: true,
|
|
164
|
+
supportsSizeClassVariants: true,
|
|
165
|
+
convertibleTo: [
|
|
166
|
+
scene_model.LayoutType.FlowRow,
|
|
167
|
+
scene_model.LayoutType.FlowColumn
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
properties: [
|
|
171
|
+
...flowContainerProperties,
|
|
172
|
+
{
|
|
173
|
+
path: 'columns',
|
|
174
|
+
label: 'Columns',
|
|
175
|
+
group: 'Layout',
|
|
176
|
+
valueType: scene_model.PropertyValueType.Number,
|
|
177
|
+
constraints: {
|
|
178
|
+
minimum: 1,
|
|
179
|
+
integer: true
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
path: 'rows',
|
|
184
|
+
label: 'Rows',
|
|
185
|
+
group: 'Layout',
|
|
186
|
+
valueType: scene_model.PropertyValueType.Number,
|
|
187
|
+
constraints: {
|
|
188
|
+
minimum: 1,
|
|
189
|
+
integer: true
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: scene_model.LayoutType.FlowLeaf,
|
|
196
|
+
label: 'Content',
|
|
197
|
+
description: 'Positions one element within a flow.',
|
|
198
|
+
capabilities: {
|
|
199
|
+
acceptsChildren: false,
|
|
200
|
+
maximumChildren: 1,
|
|
201
|
+
childPlacement: scene_model.LayoutChildPlacement.None,
|
|
202
|
+
supportsGridSpan: true,
|
|
203
|
+
supportsSizeClassVariants: false,
|
|
204
|
+
convertibleTo: []
|
|
205
|
+
},
|
|
206
|
+
properties: flowNodeProperties
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
type: scene_model.LayoutType.FlowSlotLeaf,
|
|
210
|
+
label: 'Slot',
|
|
211
|
+
description: 'Positions one of the layout\'s own named slots within its arrangement.',
|
|
212
|
+
capabilities: {
|
|
213
|
+
acceptsChildren: false,
|
|
214
|
+
childPlacement: scene_model.LayoutChildPlacement.None,
|
|
215
|
+
supportsGridSpan: true,
|
|
216
|
+
supportsSizeClassVariants: false,
|
|
217
|
+
convertibleTo: []
|
|
218
|
+
},
|
|
219
|
+
properties: [
|
|
220
|
+
{
|
|
221
|
+
path: 'slotName',
|
|
222
|
+
label: 'Slot',
|
|
223
|
+
group: 'Layout',
|
|
224
|
+
valueType: scene_model.PropertyValueType.String,
|
|
225
|
+
constraints: {
|
|
226
|
+
required: true
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
...flowNodeProperties
|
|
230
|
+
]
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
type: scene_model.LayoutType.Freeform,
|
|
234
|
+
label: 'Freeform',
|
|
235
|
+
description: 'Places each child at its own position and size, one variant per size class.',
|
|
236
|
+
capabilities: {
|
|
237
|
+
acceptsChildren: true,
|
|
238
|
+
childPlacement: scene_model.LayoutChildPlacement.Positioned,
|
|
239
|
+
supportsGridSpan: false,
|
|
240
|
+
supportsSizeClassVariants: true,
|
|
241
|
+
convertibleTo: []
|
|
242
|
+
},
|
|
243
|
+
properties: []
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
type: scene_model.LayoutType.StackPanel,
|
|
247
|
+
label: 'Stack panel',
|
|
248
|
+
description: 'Stacks its children in one direction with a fixed spacing.',
|
|
249
|
+
capabilities: {
|
|
250
|
+
...panelChildren,
|
|
251
|
+
supportsGridSpan: false,
|
|
252
|
+
convertibleTo: [
|
|
253
|
+
scene_model.LayoutType.WrapPanel,
|
|
254
|
+
scene_model.LayoutType.DockPanel
|
|
255
|
+
]
|
|
256
|
+
},
|
|
257
|
+
properties: [
|
|
258
|
+
...panelProperties,
|
|
259
|
+
orientation,
|
|
260
|
+
spacing('spacing', 'Spacing', 'Layout')
|
|
261
|
+
]
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
type: scene_model.LayoutType.WrapPanel,
|
|
265
|
+
label: 'Wrap panel',
|
|
266
|
+
description: 'Lays children out along a line and wraps to the next when it is full.',
|
|
267
|
+
capabilities: {
|
|
268
|
+
...panelChildren,
|
|
269
|
+
supportsGridSpan: false,
|
|
270
|
+
convertibleTo: [
|
|
271
|
+
scene_model.LayoutType.StackPanel,
|
|
272
|
+
scene_model.LayoutType.DockPanel
|
|
273
|
+
]
|
|
274
|
+
},
|
|
275
|
+
properties: [
|
|
276
|
+
...panelProperties,
|
|
277
|
+
orientation,
|
|
278
|
+
{
|
|
279
|
+
path: 'itemWidth',
|
|
280
|
+
label: 'Item width',
|
|
281
|
+
group: 'Layout',
|
|
282
|
+
valueType: scene_model.PropertyValueType.Number,
|
|
283
|
+
constraints: {
|
|
284
|
+
minimum: 0
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
path: 'itemHeight',
|
|
289
|
+
label: 'Item height',
|
|
290
|
+
group: 'Layout',
|
|
291
|
+
valueType: scene_model.PropertyValueType.Number,
|
|
292
|
+
constraints: {
|
|
293
|
+
minimum: 0
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
]
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
type: scene_model.LayoutType.DockPanel,
|
|
300
|
+
label: 'Dock panel',
|
|
301
|
+
description: 'Docks each child against an edge; the last child can fill what remains.',
|
|
302
|
+
capabilities: {
|
|
303
|
+
...panelChildren,
|
|
304
|
+
supportsGridSpan: false,
|
|
305
|
+
convertibleTo: [
|
|
306
|
+
scene_model.LayoutType.StackPanel,
|
|
307
|
+
scene_model.LayoutType.WrapPanel
|
|
308
|
+
]
|
|
309
|
+
},
|
|
310
|
+
properties: [
|
|
311
|
+
...panelProperties,
|
|
312
|
+
{
|
|
313
|
+
path: 'lastChildFill',
|
|
314
|
+
label: 'Last child fills',
|
|
315
|
+
group: 'Layout',
|
|
316
|
+
valueType: scene_model.PropertyValueType.Boolean,
|
|
317
|
+
default: true
|
|
318
|
+
}
|
|
319
|
+
]
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
type: scene_model.LayoutType.GridPanel,
|
|
323
|
+
label: 'Grid panel',
|
|
324
|
+
description: 'Positions children in rows and columns defined by the panel.',
|
|
325
|
+
capabilities: {
|
|
326
|
+
...panelChildren,
|
|
327
|
+
supportsGridSpan: true,
|
|
328
|
+
convertibleTo: []
|
|
329
|
+
},
|
|
330
|
+
properties: [
|
|
331
|
+
...panelProperties,
|
|
332
|
+
{
|
|
333
|
+
path: 'rows',
|
|
334
|
+
label: 'Rows',
|
|
335
|
+
group: 'Layout',
|
|
336
|
+
valueType: scene_model.PropertyValueType.Object,
|
|
337
|
+
editorKind: 'gridDefinitions'
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
path: 'columns',
|
|
341
|
+
label: 'Columns',
|
|
342
|
+
group: 'Layout',
|
|
343
|
+
valueType: scene_model.PropertyValueType.Object,
|
|
344
|
+
editorKind: 'gridDefinitions'
|
|
345
|
+
}
|
|
346
|
+
]
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
type: scene_model.LayoutType.Canvas,
|
|
350
|
+
label: 'Canvas',
|
|
351
|
+
description: 'Places each child at an absolute position.',
|
|
352
|
+
capabilities: {
|
|
353
|
+
acceptsChildren: true,
|
|
354
|
+
childPlacement: scene_model.LayoutChildPlacement.Positioned,
|
|
355
|
+
supportsGridSpan: false,
|
|
356
|
+
supportsSizeClassVariants: false,
|
|
357
|
+
convertibleTo: []
|
|
358
|
+
},
|
|
359
|
+
properties: [
|
|
360
|
+
...panelProperties,
|
|
361
|
+
{
|
|
362
|
+
path: 'extent',
|
|
363
|
+
label: 'Extent',
|
|
364
|
+
group: 'Layout',
|
|
365
|
+
valueType: scene_model.PropertyValueType.Object,
|
|
366
|
+
editorKind: 'size'
|
|
367
|
+
}
|
|
368
|
+
]
|
|
369
|
+
}
|
|
370
|
+
];
|
|
371
|
+
/**
|
|
372
|
+
* The editable properties of a placement within a freeform variant - an element's or a slot's position and size.
|
|
373
|
+
*/ const placementProperties = [
|
|
374
|
+
{
|
|
375
|
+
path: 'x',
|
|
376
|
+
label: 'Left',
|
|
377
|
+
group: 'Placement',
|
|
378
|
+
valueType: scene_model.PropertyValueType.Number
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
path: 'y',
|
|
382
|
+
label: 'Top',
|
|
383
|
+
group: 'Placement',
|
|
384
|
+
valueType: scene_model.PropertyValueType.Number
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
path: 'width',
|
|
388
|
+
label: 'Width',
|
|
389
|
+
group: 'Placement',
|
|
390
|
+
valueType: scene_model.PropertyValueType.Number,
|
|
391
|
+
constraints: {
|
|
392
|
+
minimum: 0
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
path: 'height',
|
|
397
|
+
label: 'Height',
|
|
398
|
+
group: 'Placement',
|
|
399
|
+
valueType: scene_model.PropertyValueType.Number,
|
|
400
|
+
constraints: {
|
|
401
|
+
minimum: 0
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
];
|
|
405
|
+
/**
|
|
406
|
+
* The editable properties of a screen template or dialog template itself.
|
|
407
|
+
*/ const templateProperties = [
|
|
408
|
+
{
|
|
409
|
+
path: 'displayName',
|
|
410
|
+
label: 'Display name',
|
|
411
|
+
group: 'General',
|
|
412
|
+
valueType: scene_model.PropertyValueType.String
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
path: 'description',
|
|
416
|
+
label: 'Description',
|
|
417
|
+
group: 'General',
|
|
418
|
+
valueType: scene_model.PropertyValueType.String
|
|
419
|
+
}
|
|
420
|
+
];
|
|
421
|
+
|
|
422
|
+
exports.layoutTypeDescriptors = layoutTypeDescriptors;
|
|
423
|
+
exports.placementProperties = placementProperties;
|
|
424
|
+
exports.templateProperties = templateProperties;
|
|
425
|
+
//# sourceMappingURL=layoutTypeDescriptors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layoutTypeDescriptors.js","sources":["../../../editing/layoutTypeDescriptors.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 {\n HorizontalAlignment, LayoutChildPlacement, LayoutType, LayoutTypeDescriptor, Orientation, PropertyChoice,\n PropertyDescriptor, PropertyValueType, VerticalAlignment, Visibility,\n} from '@cratis/scene.model';\n\nfunction choices(enumObject: Record<string, string>): PropertyChoice[] {\n return Object.values(enumObject).map(value => ({ value, label: value }));\n}\n\nconst spacing = (path: string, label: string, group: string): PropertyDescriptor => ({\n path, label, group, valueType: PropertyValueType.Number, default: 0, constraints: { minimum: 0 },\n});\n\nconst flowNodeProperties: PropertyDescriptor[] = [\n {\n path: 'grow', label: 'Grow', group: 'Layout', valueType: PropertyValueType.Number,\n description: 'How much of the free space in its container this node takes, relative to its siblings.',\n constraints: { minimum: 0 },\n },\n {\n path: 'span', label: 'Span', group: 'Layout', valueType: PropertyValueType.Number,\n description: 'How many grid columns this node spans. Only meaningful inside a grid.',\n constraints: { minimum: 1, integer: true },\n },\n];\n\nconst flowContainerProperties: PropertyDescriptor[] = [spacing('gap', 'Gap', 'Layout'), ...flowNodeProperties];\n\nconst panelProperties: PropertyDescriptor[] = [\n { path: 'name', label: 'Name', group: 'General', valueType: PropertyValueType.String },\n { path: 'visibility', label: 'Visibility', group: 'General', valueType: PropertyValueType.Enum, choices: choices(Visibility), default: Visibility.Visible },\n { path: 'isEnabled', label: 'Enabled', group: 'General', valueType: PropertyValueType.Boolean, default: true },\n { path: 'opacity', label: 'Opacity', group: 'General', valueType: PropertyValueType.Number, default: 1, constraints: { minimum: 0, maximum: 1 } },\n { path: 'horizontalAlignment', label: 'Horizontal alignment', group: 'Layout', valueType: PropertyValueType.Enum, choices: choices(HorizontalAlignment) },\n { path: 'verticalAlignment', label: 'Vertical alignment', group: 'Layout', valueType: PropertyValueType.Enum, choices: choices(VerticalAlignment) },\n { path: 'zIndex', label: 'Stacking order', group: 'Layout', valueType: PropertyValueType.Number, default: 0, constraints: { integer: true } },\n];\n\nconst orientation: PropertyDescriptor = {\n path: 'orientation', label: 'Orientation', group: 'Layout', valueType: PropertyValueType.Enum, choices: choices(Orientation),\n};\n\nconst panelChildren = { acceptsChildren: true, childPlacement: LayoutChildPlacement.Ordered, supportsSizeClassVariants: false };\n\n/**\n * The layout type -> capability matrix, as data. Every {@link LayoutType} has exactly one entry; the\n * documentation's matrix is this table.\n */\nexport const layoutTypeDescriptors: LayoutTypeDescriptor[] = [\n {\n type: LayoutType.FlowRow,\n label: 'Row',\n description: 'Reflows its children horizontally.',\n capabilities: {\n acceptsChildren: true, childPlacement: LayoutChildPlacement.Ordered, supportsGridSpan: false,\n supportsSizeClassVariants: true, convertibleTo: [LayoutType.FlowColumn, LayoutType.FlowGrid],\n },\n properties: flowContainerProperties,\n },\n {\n type: LayoutType.FlowColumn,\n label: 'Column',\n description: 'Reflows its children vertically.',\n capabilities: {\n acceptsChildren: true, childPlacement: LayoutChildPlacement.Ordered, supportsGridSpan: false,\n supportsSizeClassVariants: true, convertibleTo: [LayoutType.FlowRow, LayoutType.FlowGrid],\n },\n properties: flowContainerProperties,\n },\n {\n type: LayoutType.FlowGrid,\n label: 'Grid',\n description: 'Arranges its children in a grid; children can span columns.',\n capabilities: {\n acceptsChildren: true, childPlacement: LayoutChildPlacement.Ordered, supportsGridSpan: true,\n supportsSizeClassVariants: true, convertibleTo: [LayoutType.FlowRow, LayoutType.FlowColumn],\n },\n properties: [\n ...flowContainerProperties,\n { path: 'columns', label: 'Columns', group: 'Layout', valueType: PropertyValueType.Number, constraints: { minimum: 1, integer: true } },\n { path: 'rows', label: 'Rows', group: 'Layout', valueType: PropertyValueType.Number, constraints: { minimum: 1, integer: true } },\n ],\n },\n {\n type: LayoutType.FlowLeaf,\n label: 'Content',\n description: 'Positions one element within a flow.',\n capabilities: {\n acceptsChildren: false, maximumChildren: 1, childPlacement: LayoutChildPlacement.None, supportsGridSpan: true,\n supportsSizeClassVariants: false, convertibleTo: [],\n },\n properties: flowNodeProperties,\n },\n {\n type: LayoutType.FlowSlotLeaf,\n label: 'Slot',\n description: 'Positions one of the layout\\'s own named slots within its arrangement.',\n capabilities: {\n acceptsChildren: false, childPlacement: LayoutChildPlacement.None, supportsGridSpan: true,\n supportsSizeClassVariants: false, convertibleTo: [],\n },\n properties: [\n { path: 'slotName', label: 'Slot', group: 'Layout', valueType: PropertyValueType.String, constraints: { required: true } },\n ...flowNodeProperties,\n ],\n },\n {\n type: LayoutType.Freeform,\n label: 'Freeform',\n description: 'Places each child at its own position and size, one variant per size class.',\n capabilities: {\n acceptsChildren: true, childPlacement: LayoutChildPlacement.Positioned, supportsGridSpan: false,\n supportsSizeClassVariants: true, convertibleTo: [],\n },\n properties: [],\n },\n {\n type: LayoutType.StackPanel,\n label: 'Stack panel',\n description: 'Stacks its children in one direction with a fixed spacing.',\n capabilities: { ...panelChildren, supportsGridSpan: false, convertibleTo: [LayoutType.WrapPanel, LayoutType.DockPanel] },\n properties: [...panelProperties, orientation, spacing('spacing', 'Spacing', 'Layout')],\n },\n {\n type: LayoutType.WrapPanel,\n label: 'Wrap panel',\n description: 'Lays children out along a line and wraps to the next when it is full.',\n capabilities: { ...panelChildren, supportsGridSpan: false, convertibleTo: [LayoutType.StackPanel, LayoutType.DockPanel] },\n properties: [\n ...panelProperties,\n orientation,\n { path: 'itemWidth', label: 'Item width', group: 'Layout', valueType: PropertyValueType.Number, constraints: { minimum: 0 } },\n { path: 'itemHeight', label: 'Item height', group: 'Layout', valueType: PropertyValueType.Number, constraints: { minimum: 0 } },\n ],\n },\n {\n type: LayoutType.DockPanel,\n label: 'Dock panel',\n description: 'Docks each child against an edge; the last child can fill what remains.',\n capabilities: { ...panelChildren, supportsGridSpan: false, convertibleTo: [LayoutType.StackPanel, LayoutType.WrapPanel] },\n properties: [\n ...panelProperties,\n { path: 'lastChildFill', label: 'Last child fills', group: 'Layout', valueType: PropertyValueType.Boolean, default: true },\n ],\n },\n {\n type: LayoutType.GridPanel,\n label: 'Grid panel',\n description: 'Positions children in rows and columns defined by the panel.',\n capabilities: { ...panelChildren, supportsGridSpan: true, convertibleTo: [] },\n properties: [\n ...panelProperties,\n { path: 'rows', label: 'Rows', group: 'Layout', valueType: PropertyValueType.Object, editorKind: 'gridDefinitions' },\n { path: 'columns', label: 'Columns', group: 'Layout', valueType: PropertyValueType.Object, editorKind: 'gridDefinitions' },\n ],\n },\n {\n type: LayoutType.Canvas,\n label: 'Canvas',\n description: 'Places each child at an absolute position.',\n capabilities: {\n acceptsChildren: true, childPlacement: LayoutChildPlacement.Positioned, supportsGridSpan: false,\n supportsSizeClassVariants: false, convertibleTo: [],\n },\n properties: [\n ...panelProperties,\n { path: 'extent', label: 'Extent', group: 'Layout', valueType: PropertyValueType.Object, editorKind: 'size' },\n ],\n },\n];\n\n/**\n * The editable properties of a placement within a freeform variant - an element's or a slot's position and size.\n */\nexport const placementProperties: PropertyDescriptor[] = [\n { path: 'x', label: 'Left', group: 'Placement', valueType: PropertyValueType.Number },\n { path: 'y', label: 'Top', group: 'Placement', valueType: PropertyValueType.Number },\n { path: 'width', label: 'Width', group: 'Placement', valueType: PropertyValueType.Number, constraints: { minimum: 0 } },\n { path: 'height', label: 'Height', group: 'Placement', valueType: PropertyValueType.Number, constraints: { minimum: 0 } },\n];\n\n/**\n * The editable properties of a screen template or dialog template itself.\n */\nexport const templateProperties: PropertyDescriptor[] = [\n { path: 'displayName', label: 'Display name', group: 'General', valueType: PropertyValueType.String },\n { path: 'description', label: 'Description', group: 'General', valueType: PropertyValueType.String },\n];\n"],"names":["choices","enumObject","Object","values","map","value","label","spacing","path","group","valueType","PropertyValueType","Number","default","constraints","minimum","flowNodeProperties","description","integer","flowContainerProperties","panelProperties","String","Enum","Visibility","Visible","Boolean","maximum","HorizontalAlignment","VerticalAlignment","orientation","Orientation","panelChildren","acceptsChildren","childPlacement","LayoutChildPlacement","Ordered","supportsSizeClassVariants","layoutTypeDescriptors","type","LayoutType","FlowRow","capabilities","supportsGridSpan","convertibleTo","FlowColumn","FlowGrid","properties","FlowLeaf","maximumChildren","None","FlowSlotLeaf","required","Freeform","Positioned","StackPanel","WrapPanel","DockPanel","GridPanel","editorKind","Canvas","placementProperties","templateProperties"],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var scene_model = require('@cratis/scene.model');
|
|
4
|
+
var diagnostics = require('./diagnostics.js');
|
|
5
|
+
var DescriptorCatalog = require('./DescriptorCatalog.js');
|
|
6
|
+
var documentPaths = require('./documentPaths.js');
|
|
7
|
+
var pathAccess = require('./pathAccess.js');
|
|
8
|
+
|
|
9
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
10
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
11
|
+
const flowKinds = {
|
|
12
|
+
[scene_model.LayoutType.FlowRow]: scene_model.FlowContainerKind.Row,
|
|
13
|
+
[scene_model.LayoutType.FlowColumn]: scene_model.FlowContainerKind.Column,
|
|
14
|
+
[scene_model.LayoutType.FlowGrid]: scene_model.FlowContainerKind.Grid
|
|
15
|
+
};
|
|
16
|
+
const panelOwnProperties = {
|
|
17
|
+
[scene_model.LayoutType.StackPanel]: [
|
|
18
|
+
'orientation',
|
|
19
|
+
'spacing'
|
|
20
|
+
],
|
|
21
|
+
[scene_model.LayoutType.WrapPanel]: [
|
|
22
|
+
'orientation',
|
|
23
|
+
'itemWidth',
|
|
24
|
+
'itemHeight'
|
|
25
|
+
],
|
|
26
|
+
[scene_model.LayoutType.DockPanel]: [
|
|
27
|
+
'lastChildFill'
|
|
28
|
+
]
|
|
29
|
+
};
|
|
30
|
+
const allPanelOwn = [
|
|
31
|
+
'orientation',
|
|
32
|
+
'spacing',
|
|
33
|
+
'itemWidth',
|
|
34
|
+
'itemHeight',
|
|
35
|
+
'lastChildFill'
|
|
36
|
+
];
|
|
37
|
+
function isSet(node, property) {
|
|
38
|
+
return node[property] !== undefined && !(property === 'spacing' && node[property] === 0);
|
|
39
|
+
}
|
|
40
|
+
function convertFlow(source, to) {
|
|
41
|
+
const result = pathAccess.cloneData(source);
|
|
42
|
+
const lost = [];
|
|
43
|
+
const target = flowKinds[to];
|
|
44
|
+
if (source.kind === scene_model.FlowContainerKind.Grid && target !== scene_model.FlowContainerKind.Grid) {
|
|
45
|
+
for (const property of [
|
|
46
|
+
'columns',
|
|
47
|
+
'rows'
|
|
48
|
+
]){
|
|
49
|
+
if (source[property] !== undefined) lost.push(property);
|
|
50
|
+
delete result[property];
|
|
51
|
+
}
|
|
52
|
+
const spans = result.children.filter((child)=>child.span !== undefined);
|
|
53
|
+
if (spans.length > 0) lost.push('span (on children)');
|
|
54
|
+
for (const child of spans)delete child.span;
|
|
55
|
+
}
|
|
56
|
+
result.kind = target;
|
|
57
|
+
return {
|
|
58
|
+
result,
|
|
59
|
+
lost
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function convertPanel(source, to) {
|
|
63
|
+
const result = pathAccess.cloneData(source);
|
|
64
|
+
const keep = panelOwnProperties[to] ?? [];
|
|
65
|
+
const lost = allPanelOwn.filter((property)=>!keep.includes(property) && isSet(source, property));
|
|
66
|
+
for (const property of allPanelOwn.filter((candidate)=>!keep.includes(candidate)))delete result[property];
|
|
67
|
+
if (to === scene_model.LayoutType.StackPanel) {
|
|
68
|
+
result.orientation ??= scene_model.Orientation.Vertical;
|
|
69
|
+
result.spacing ??= 0;
|
|
70
|
+
} else if (to === scene_model.LayoutType.WrapPanel) {
|
|
71
|
+
result.orientation ??= scene_model.Orientation.Horizontal;
|
|
72
|
+
} else {
|
|
73
|
+
result.lastChildFill ??= true;
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
result,
|
|
77
|
+
lost
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Applies a layout type change to a copy of the document.
|
|
82
|
+
*
|
|
83
|
+
* A change must be one the layout type allows. Changes that keep everything - row to column, a dock panel to a
|
|
84
|
+
* stack panel - go ahead. Changes that would drop real values, such as a grid's columns and spans when it becomes a
|
|
85
|
+
* row, are refused with the list of what would be lost unless the edit accepts the loss, and then go ahead with a
|
|
86
|
+
* warning that lists the same.
|
|
87
|
+
*/ function applyChangeLayoutType(session, edit, clone, diagnostics$1) {
|
|
88
|
+
const record = session.index.nodes.get(edit.nodeId);
|
|
89
|
+
if (!record) {
|
|
90
|
+
diagnostics$1.push(diagnostics.errorDiagnostic(scene_model.DiagnosticCode.UnknownNode, `There is no node '${edit.nodeId}'.`, {
|
|
91
|
+
nodeId: edit.nodeId
|
|
92
|
+
}));
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (record.kind !== scene_model.SceneNodeKind.FlowNode && record.kind !== scene_model.SceneNodeKind.Element) {
|
|
96
|
+
diagnostics$1.push(diagnostics.errorDiagnostic(scene_model.DiagnosticCode.NotALayoutNode, `'${record.label}' is not a layout node.`, {
|
|
97
|
+
nodeId: edit.nodeId
|
|
98
|
+
}));
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (!session.isLocal(record)) {
|
|
102
|
+
diagnostics$1.push(diagnostics.errorDiagnostic(scene_model.DiagnosticCode.NodeNotEditable, `'${edit.nodeId}' is inherited from '${session.sourceOf(record)}' and cannot be changed here.`, {
|
|
103
|
+
nodeId: edit.nodeId
|
|
104
|
+
}));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const descriptor = DescriptorCatalog.findLayoutTypeDescriptor(session.context.catalog, record.typeId);
|
|
108
|
+
if (!descriptor) {
|
|
109
|
+
diagnostics$1.push(diagnostics.errorDiagnostic(scene_model.DiagnosticCode.NotALayoutNode, `'${record.label}' is not a layout node.`, {
|
|
110
|
+
nodeId: edit.nodeId
|
|
111
|
+
}));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (!descriptor.capabilities.convertibleTo.includes(edit.to)) {
|
|
115
|
+
diagnostics$1.push(diagnostics.errorDiagnostic(scene_model.DiagnosticCode.LayoutTypeNotConvertible, `A ${descriptor.label.toLowerCase()} cannot be changed into '${edit.to}'.`, {
|
|
116
|
+
nodeId: edit.nodeId
|
|
117
|
+
}));
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const isFlow = record.kind === scene_model.SceneNodeKind.FlowNode;
|
|
121
|
+
const conversion = isFlow ? convertFlow(record.value, edit.to) : convertPanel(record.value, edit.to);
|
|
122
|
+
if (conversion.lost.length > 0) {
|
|
123
|
+
const lost = conversion.lost.join(', ');
|
|
124
|
+
if (!edit.acceptLoss) {
|
|
125
|
+
diagnostics$1.push(diagnostics.errorDiagnostic(scene_model.DiagnosticCode.LossyConversionNotAccepted, `Changing to '${edit.to}' would drop ${lost}. Accept the loss to go ahead.`, {
|
|
126
|
+
nodeId: edit.nodeId
|
|
127
|
+
}));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
diagnostics$1.push(diagnostics.warningDiagnostic(scene_model.DiagnosticCode.LossyConversion, `Changed to '${edit.to}'; dropped ${lost}.`, {
|
|
131
|
+
nodeId: edit.nodeId
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
for (const path of documentPaths.mirroredPaths(record.mirror, record.path)){
|
|
135
|
+
const holder = documentPaths.getAtPath(clone, path.slice(0, -1));
|
|
136
|
+
holder[path[path.length - 1]] = pathAccess.cloneData(conversion.result);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
exports.applyChangeLayoutType = applyChangeLayoutType;
|
|
141
|
+
//# sourceMappingURL=layoutTypeEdits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layoutTypeEdits.js","sources":["../../../editing/layoutTypeEdits.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 {\n ChangeLayoutTypeEdit, DiagnosticCode, FlowContainerKind, LayoutType, Orientation, SceneDiagnostic, SceneDocument,\n SceneNodeKind,\n} from '@cratis/scene.model';\nimport { errorDiagnostic, warningDiagnostic } from './diagnostics';\nimport { findLayoutTypeDescriptor } from './DescriptorCatalog';\nimport { getAtPath, mirroredPaths } from './documentPaths';\nimport { EditSession } from './EditSession';\nimport { cloneData } from './pathAccess';\n\ntype Node = Record<string, unknown>;\n\ninterface Conversion {\n result: Node;\n\n /** Properties that held a real value and are gone after the conversion. */\n lost: string[];\n}\n\nconst flowKinds: Partial<Record<LayoutType, FlowContainerKind>> = {\n [LayoutType.FlowRow]: FlowContainerKind.Row,\n [LayoutType.FlowColumn]: FlowContainerKind.Column,\n [LayoutType.FlowGrid]: FlowContainerKind.Grid,\n};\n\nconst panelOwnProperties: Partial<Record<LayoutType, string[]>> = {\n [LayoutType.StackPanel]: ['orientation', 'spacing'],\n [LayoutType.WrapPanel]: ['orientation', 'itemWidth', 'itemHeight'],\n [LayoutType.DockPanel]: ['lastChildFill'],\n};\n\nconst allPanelOwn = ['orientation', 'spacing', 'itemWidth', 'itemHeight', 'lastChildFill'];\n\nfunction isSet(node: Node, property: string): boolean {\n return node[property] !== undefined && !(property === 'spacing' && node[property] === 0);\n}\n\nfunction convertFlow(source: Node, to: LayoutType): Conversion {\n const result = cloneData(source);\n const lost: string[] = [];\n const target = flowKinds[to]!;\n\n if (source.kind === FlowContainerKind.Grid && target !== FlowContainerKind.Grid) {\n for (const property of ['columns', 'rows']) {\n if (source[property] !== undefined) lost.push(property);\n delete result[property];\n }\n\n const spans = (result.children as Node[]).filter(child => child.span !== undefined);\n if (spans.length > 0) lost.push('span (on children)');\n for (const child of spans) delete child.span;\n }\n\n result.kind = target;\n return { result, lost };\n}\n\nfunction convertPanel(source: Node, to: LayoutType): Conversion {\n const result = cloneData(source);\n const keep = panelOwnProperties[to] ?? [];\n const lost = allPanelOwn.filter(property => !keep.includes(property) && isSet(source, property));\n for (const property of allPanelOwn.filter(candidate => !keep.includes(candidate))) delete result[property];\n\n if (to === LayoutType.StackPanel) {\n result.orientation ??= Orientation.Vertical;\n result.spacing ??= 0;\n } else if (to === LayoutType.WrapPanel) {\n result.orientation ??= Orientation.Horizontal;\n } else {\n result.lastChildFill ??= true;\n }\n\n return { result, lost };\n}\n\n/**\n * Applies a layout type change to a copy of the document.\n *\n * A change must be one the layout type allows. Changes that keep everything - row to column, a dock panel to a\n * stack panel - go ahead. Changes that would drop real values, such as a grid's columns and spans when it becomes a\n * row, are refused with the list of what would be lost unless the edit accepts the loss, and then go ahead with a\n * warning that lists the same.\n */\nexport function applyChangeLayoutType(session: EditSession, edit: ChangeLayoutTypeEdit, clone: SceneDocument, diagnostics: SceneDiagnostic[]): void {\n const record = session.index.nodes.get(edit.nodeId);\n if (!record) {\n diagnostics.push(errorDiagnostic(DiagnosticCode.UnknownNode, `There is no node '${edit.nodeId}'.`, { nodeId: edit.nodeId }));\n return;\n }\n\n if (record.kind !== SceneNodeKind.FlowNode && record.kind !== SceneNodeKind.Element) {\n diagnostics.push(errorDiagnostic(DiagnosticCode.NotALayoutNode, `'${record.label}' is not a layout node.`, { nodeId: edit.nodeId }));\n return;\n }\n\n if (!session.isLocal(record)) {\n diagnostics.push(errorDiagnostic(DiagnosticCode.NodeNotEditable, `'${edit.nodeId}' is inherited from '${session.sourceOf(record)}' and cannot be changed here.`, { nodeId: edit.nodeId }));\n return;\n }\n\n const descriptor = findLayoutTypeDescriptor(session.context.catalog, record.typeId);\n if (!descriptor) {\n diagnostics.push(errorDiagnostic(DiagnosticCode.NotALayoutNode, `'${record.label}' is not a layout node.`, { nodeId: edit.nodeId }));\n return;\n }\n\n if (!descriptor.capabilities.convertibleTo.includes(edit.to as LayoutType)) {\n diagnostics.push(errorDiagnostic(DiagnosticCode.LayoutTypeNotConvertible, `A ${descriptor.label.toLowerCase()} cannot be changed into '${edit.to}'.`, { nodeId: edit.nodeId }));\n return;\n }\n\n const isFlow = record.kind === SceneNodeKind.FlowNode;\n const conversion = isFlow ? convertFlow(record.value as Node, edit.to as LayoutType) : convertPanel(record.value as Node, edit.to as LayoutType);\n\n if (conversion.lost.length > 0) {\n const lost = conversion.lost.join(', ');\n if (!edit.acceptLoss) {\n diagnostics.push(errorDiagnostic(\n DiagnosticCode.LossyConversionNotAccepted,\n `Changing to '${edit.to}' would drop ${lost}. Accept the loss to go ahead.`,\n { nodeId: edit.nodeId }));\n return;\n }\n\n diagnostics.push(warningDiagnostic(DiagnosticCode.LossyConversion, `Changed to '${edit.to}'; dropped ${lost}.`, { nodeId: edit.nodeId }));\n }\n\n for (const path of mirroredPaths(record.mirror, record.path)) {\n const holder = getAtPath(clone, path.slice(0, -1)) as Record<string | number, unknown>;\n holder[path[path.length - 1]] = cloneData(conversion.result);\n }\n}\n"],"names":["flowKinds","LayoutType","FlowRow","FlowContainerKind","Row","FlowColumn","Column","FlowGrid","Grid","panelOwnProperties","StackPanel","WrapPanel","DockPanel","allPanelOwn","isSet","node","property","undefined","convertFlow","source","to","result","cloneData","lost","target","kind","push","spans","children","filter","child","span","length","convertPanel","keep","includes","candidate","orientation","Orientation","Vertical","spacing","Horizontal","lastChildFill","applyChangeLayoutType","session","edit","clone","diagnostics","record","index","nodes","get","nodeId","errorDiagnostic","DiagnosticCode","UnknownNode","SceneNodeKind","FlowNode","Element","NotALayoutNode","label","isLocal","NodeNotEditable","sourceOf","descriptor","findLayoutTypeDescriptor","context","catalog","typeId","capabilities","convertibleTo","LayoutTypeNotConvertible","toLowerCase","isFlow","conversion","value","join","acceptLoss","LossyConversionNotAccepted","warningDiagnostic","LossyConversion","path","mirroredPaths","mirror","holder","getAtPath","slice"],"mappings":"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"}
|