@riboseinc/paneron-registry-kit 2.0.0-dev9 → 2.0.1
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/LICENSE +21 -0
- package/README.adoc +35 -0
- package/compiled/common.d.ts +1 -0
- package/compiled/common.js +2 -0
- package/{common.js.map → compiled/common.js.map} +1 -1
- package/{index.d.ts → compiled/index.d.ts} +3 -3
- package/compiled/index.js +21 -0
- package/compiled/index.js.map +1 -0
- package/compiled/migrations/initial.js +8 -0
- package/compiled/types/cr.d.ts +216 -0
- package/compiled/types/cr.js +131 -0
- package/compiled/types/cr.js.map +1 -0
- package/{types → compiled/types}/index.d.ts +1 -0
- package/compiled/types/index.js +8 -0
- package/compiled/types/index.js.map +1 -0
- package/{types → compiled/types}/item.d.ts +13 -3
- package/compiled/types/item.js +22 -0
- package/compiled/types/item.js.map +1 -0
- package/compiled/types/proposal.d.ts +64 -0
- package/compiled/types/proposal.js +21 -0
- package/compiled/types/proposal.js.map +1 -0
- package/{types → compiled/types}/register.d.ts +6 -5
- package/compiled/types/register.js +25 -0
- package/compiled/types/register.js.map +1 -0
- package/compiled/types/registry.d.ts +15 -0
- package/compiled/types/registry.js +10 -0
- package/compiled/types/registry.js.map +1 -0
- package/compiled/types/stakeholder.d.ts +58 -0
- package/compiled/types/stakeholder.js +34 -0
- package/compiled/types/stakeholder.js.map +1 -0
- package/compiled/types/util.js +3 -0
- package/compiled/types/views.d.ts +157 -0
- package/compiled/types/views.js +2 -0
- package/compiled/types/views.js.map +1 -0
- package/compiled/views/AnnotatedChange.d.ts +7 -0
- package/compiled/views/AnnotatedChange.js +57 -0
- package/compiled/views/AnnotatedChange.js.map +1 -0
- package/compiled/views/BrowserCtx.d.ts +73 -0
- package/compiled/views/BrowserCtx.js +19 -0
- package/compiled/views/BrowserCtx.js.map +1 -0
- package/compiled/views/FilterCriteria/CRITERIA_CONFIGURATION.d.ts +17 -0
- package/compiled/views/FilterCriteria/CRITERIA_CONFIGURATION.js +110 -0
- package/compiled/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +1 -0
- package/{views → compiled/views}/FilterCriteria/criteriaGroupToQueryExpression.d.ts +4 -0
- package/compiled/views/FilterCriteria/criteriaGroupToQueryExpression.js +40 -0
- package/compiled/views/FilterCriteria/criteriaGroupToQueryExpression.js.map +1 -0
- package/compiled/views/FilterCriteria/criteriaGroupToSummary.js +47 -0
- package/compiled/views/FilterCriteria/criteriaGroupToSummary.js.map +1 -0
- package/{views → compiled/views}/FilterCriteria/criteriaToNodes.d.ts +9 -0
- package/compiled/views/FilterCriteria/criteriaToNodes.js +89 -0
- package/compiled/views/FilterCriteria/criteriaToNodes.js.map +1 -0
- package/{views → compiled/views}/FilterCriteria/index.d.ts +1 -0
- package/compiled/views/FilterCriteria/index.js +75 -0
- package/compiled/views/FilterCriteria/index.js.map +1 -0
- package/{views → compiled/views}/FilterCriteria/models.d.ts +29 -2
- package/compiled/views/FilterCriteria/models.js +28 -0
- package/compiled/views/FilterCriteria/models.js.map +1 -0
- package/{views → compiled/views}/FilterCriteria/mutateGroup.d.ts +4 -1
- package/compiled/views/FilterCriteria/mutateGroup.js +53 -0
- package/compiled/views/FilterCriteria/mutateGroup.js.map +1 -0
- package/{views → compiled/views}/GenericRelatedItemView.d.ts +1 -1
- package/compiled/views/GenericRelatedItemView.js +147 -0
- package/compiled/views/GenericRelatedItemView.js.map +1 -0
- package/compiled/views/RegisterStakeholder.d.ts +9 -0
- package/compiled/views/RegisterStakeholder.js +19 -0
- package/compiled/views/RegisterStakeholder.js.map +1 -0
- package/compiled/views/RegisterVersion.d.ts +9 -0
- package/compiled/views/RegisterVersion.js +20 -0
- package/compiled/views/RegisterVersion.js.map +1 -0
- package/compiled/views/SearchQuery.d.ts +13 -0
- package/compiled/views/SearchQuery.js +58 -0
- package/compiled/views/SearchQuery.js.map +1 -0
- package/compiled/views/change-request/ChangeRequestContext.d.ts +20 -0
- package/compiled/views/change-request/ChangeRequestContext.js +30 -0
- package/compiled/views/change-request/ChangeRequestContext.js.map +1 -0
- package/compiled/views/change-request/Proposals.d.ts +21 -0
- package/compiled/views/change-request/Proposals.js +185 -0
- package/compiled/views/change-request/Proposals.js.map +1 -0
- package/compiled/views/change-request/objectChangeset.d.ts +31 -0
- package/compiled/views/change-request/objectChangeset.js +189 -0
- package/compiled/views/change-request/objectChangeset.js.map +1 -0
- package/compiled/views/detail/ChangeRequest/Proposal.d.ts +0 -0
- package/compiled/views/detail/ChangeRequest/Proposal.js +144 -0
- package/compiled/views/detail/ChangeRequest/Proposal.js.map +1 -0
- package/compiled/views/detail/ChangeRequest/index.d.ts +13 -0
- package/compiled/views/detail/ChangeRequest/index.js +140 -0
- package/compiled/views/detail/ChangeRequest/index.js.map +1 -0
- package/compiled/views/detail/ChangeRequest/transitions.d.ts +28 -0
- package/compiled/views/detail/ChangeRequest/transitions.js +418 -0
- package/compiled/views/detail/ChangeRequest/transitions.js.map +1 -0
- package/compiled/views/detail/CustomView/index.d.ts +13 -0
- package/compiled/views/detail/CustomView/index.js +32 -0
- package/compiled/views/detail/CustomView/index.js.map +1 -0
- package/compiled/views/detail/RegisterHome/index.d.ts +5 -0
- package/compiled/views/detail/RegisterHome/index.js +70 -0
- package/compiled/views/detail/RegisterHome/index.js.map +1 -0
- package/compiled/views/detail/RegisterItem/RelatedItems.d.ts +14 -0
- package/compiled/views/detail/RegisterItem/RelatedItems.js +28 -0
- package/compiled/views/detail/RegisterItem/RelatedItems.js.map +1 -0
- package/compiled/views/detail/RegisterItem/SupersedingItemMenu.d.ts +13 -0
- package/compiled/views/detail/RegisterItem/SupersedingItemMenu.js +27 -0
- package/compiled/views/detail/RegisterItem/SupersedingItemMenu.js.map +1 -0
- package/compiled/views/detail/RegisterItem/index.d.ts +13 -0
- package/compiled/views/detail/RegisterItem/index.js +277 -0
- package/compiled/views/detail/RegisterItem/index.js.map +1 -0
- package/compiled/views/detail/RegisterMeta/RegisterMetaForm.d.ts +10 -0
- package/compiled/views/detail/RegisterMeta/RegisterMetaForm.js +135 -0
- package/compiled/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -0
- package/compiled/views/detail/RegisterMeta/index.d.ts +10 -0
- package/compiled/views/detail/RegisterMeta/index.js +61 -0
- package/compiled/views/detail/RegisterMeta/index.js.map +1 -0
- package/compiled/views/detail/index.d.ts +1 -0
- package/compiled/views/detail/index.js +11 -0
- package/compiled/views/detail/index.js.map +1 -0
- package/compiled/views/diffing/InlineDiff.d.ts +12 -0
- package/compiled/views/diffing/InlineDiff.js +20 -0
- package/compiled/views/diffing/InlineDiff.js.map +1 -0
- package/compiled/views/diffing/StructuredDiff.d.ts +11 -0
- package/compiled/views/diffing/StructuredDiff.js +38 -0
- package/compiled/views/diffing/StructuredDiff.js.map +1 -0
- package/compiled/views/hooks/useCustomView.d.ts +3 -0
- package/compiled/views/hooks/useCustomView.js +14 -0
- package/compiled/views/hooks/useCustomView.js.map +1 -0
- package/compiled/views/hooks/useItemClassConfig.d.ts +3 -0
- package/compiled/views/hooks/useItemClassConfig.js +14 -0
- package/compiled/views/hooks/useItemClassConfig.js.map +1 -0
- package/compiled/views/hooks/useItemRef.d.ts +3 -0
- package/compiled/views/hooks/useItemRef.js +26 -0
- package/compiled/views/hooks/useItemRef.js.map +1 -0
- package/compiled/views/hooks/useSingleRegisterItemData.d.ts +3 -0
- package/compiled/views/hooks/useSingleRegisterItemData.js +21 -0
- package/compiled/views/hooks/useSingleRegisterItemData.js.map +1 -0
- package/{views → compiled/views}/index.d.ts +2 -2
- package/compiled/views/index.js +142 -0
- package/compiled/views/index.js.map +1 -0
- package/compiled/views/itemPathUtils.d.ts +52 -0
- package/compiled/views/itemPathUtils.js +115 -0
- package/compiled/views/itemPathUtils.js.map +1 -0
- package/compiled/views/itemQueryUtils.d.ts +11 -0
- package/compiled/views/itemQueryUtils.js +42 -0
- package/compiled/views/itemQueryUtils.js.map +1 -0
- package/compiled/views/protocolRegistry.d.ts +12 -0
- package/compiled/views/protocolRegistry.js +24 -0
- package/compiled/views/protocolRegistry.js.map +1 -0
- package/compiled/views/sidebar/Browse/index.d.ts +11 -0
- package/compiled/views/sidebar/Browse/index.js +278 -0
- package/compiled/views/sidebar/Browse/index.js.map +1 -0
- package/compiled/views/sidebar/Export/index.d.ts +5 -0
- package/compiled/views/sidebar/Export/index.js +47 -0
- package/compiled/views/sidebar/Export/index.js.map +1 -0
- package/compiled/views/sidebar/ListItem.d.ts +10 -0
- package/compiled/views/sidebar/ListItem.js +23 -0
- package/compiled/views/sidebar/ListItem.js.map +1 -0
- package/compiled/views/sidebar/Registration/index.d.ts +5 -0
- package/compiled/views/sidebar/Registration/index.js +114 -0
- package/compiled/views/sidebar/Registration/index.js.map +1 -0
- package/compiled/views/sidebar/Search/index.d.ts +18 -0
- package/compiled/views/sidebar/Search/index.js +100 -0
- package/compiled/views/sidebar/Search/index.js.map +1 -0
- package/compiled/views/sidebar/index.d.ts +6 -0
- package/compiled/views/sidebar/index.js +73 -0
- package/compiled/views/sidebar/index.js.map +1 -0
- package/compiled/views/util.d.ts +36 -0
- package/compiled/views/util.js +63 -0
- package/compiled/views/util.js.map +1 -0
- package/dependencies-local/extension-kit/SettingsContext.d.ts +8 -0
- package/dependencies-local/extension-kit/SettingsContext.js +19 -0
- package/dependencies-local/extension-kit/SettingsContext.js.map +1 -0
- package/dependencies-local/extension-kit/context.d.ts +11 -0
- package/dependencies-local/extension-kit/context.js +133 -0
- package/dependencies-local/extension-kit/context.js.map +1 -0
- package/dependencies-local/extension-kit/i18n/ContextProvider.d.ts +9 -0
- package/dependencies-local/extension-kit/i18n/ContextProvider.js +33 -0
- package/dependencies-local/extension-kit/i18n/ContextProvider.js.map +1 -0
- package/dependencies-local/extension-kit/i18n/context.d.ts +9 -0
- package/dependencies-local/extension-kit/i18n/context.js +23 -0
- package/dependencies-local/extension-kit/i18n/context.js.map +1 -0
- package/dependencies-local/extension-kit/i18n/types.d.ts +10 -0
- package/dependencies-local/extension-kit/i18n/types.js.map +1 -0
- package/dependencies-local/extension-kit/i18n/widgets.d.ts +16 -0
- package/dependencies-local/extension-kit/i18n/widgets.js +56 -0
- package/dependencies-local/extension-kit/i18n/widgets.js.map +1 -0
- package/dependencies-local/extension-kit/index.d.ts +3 -0
- package/dependencies-local/extension-kit/index.js +78 -0
- package/dependencies-local/extension-kit/index.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/index.d.ts +2 -0
- package/dependencies-local/extension-kit/object-specs/index.js +22 -0
- package/dependencies-local/extension-kit/object-specs/index.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/paneron-object.d.ts +6 -0
- package/dependencies-local/extension-kit/object-specs/paneron-object.js +161 -0
- package/dependencies-local/extension-kit/object-specs/paneron-object.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/ser-des.d.ts +31 -0
- package/dependencies-local/extension-kit/object-specs/ser-des.js +187 -0
- package/dependencies-local/extension-kit/object-specs/ser-des.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-bool.d.ts +2 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-bool.js +42 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-bool.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-timestamp.d.ts +3 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-timestamp.js +110 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-timestamp.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/yaml/index.d.ts +9 -0
- package/dependencies-local/extension-kit/object-specs/yaml/index.js +36 -0
- package/dependencies-local/extension-kit/object-specs/yaml/index.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/yaml/schema.d.ts +3 -0
- package/{index.js → dependencies-local/extension-kit/object-specs/yaml/schema.js} +11 -30
- package/dependencies-local/extension-kit/object-specs/yaml/schema.js.map +1 -0
- package/dependencies-local/extension-kit/package.json +53 -0
- package/dependencies-local/extension-kit/settings.d.ts +6 -0
- package/dependencies-local/extension-kit/settings.js +11 -0
- package/dependencies-local/extension-kit/settings.js.map +1 -0
- package/dependencies-local/extension-kit/types/binary-invocation.d.ts +31 -0
- package/dependencies-local/extension-kit/types/binary-invocation.js.map +1 -0
- package/dependencies-local/extension-kit/types/buffers.d.ts +17 -0
- package/dependencies-local/extension-kit/types/buffers.js.map +1 -0
- package/dependencies-local/extension-kit/types/changes.d.ts +37 -0
- package/dependencies-local/extension-kit/types/changes.js +5 -0
- package/dependencies-local/extension-kit/types/changes.js.map +1 -0
- package/dependencies-local/extension-kit/types/data.d.ts +54 -0
- package/dependencies-local/extension-kit/types/data.js +5 -0
- package/dependencies-local/extension-kit/types/data.js.map +1 -0
- package/dependencies-local/extension-kit/types/dialogs.d.ts +15 -0
- package/dependencies-local/extension-kit/types/dialogs.js +5 -0
- package/dependencies-local/extension-kit/types/dialogs.js.map +1 -0
- package/dependencies-local/extension-kit/types/extension-maker.d.ts +17 -0
- package/dependencies-local/extension-kit/types/extension-maker.js +5 -0
- package/dependencies-local/extension-kit/types/extension-maker.js.map +1 -0
- package/dependencies-local/extension-kit/types/extension.d.ts +27 -0
- package/dependencies-local/extension-kit/types/extension.js +5 -0
- package/dependencies-local/extension-kit/types/extension.js.map +1 -0
- package/dependencies-local/extension-kit/types/index.d.ts +3 -0
- package/dependencies-local/extension-kit/types/index.js +41 -0
- package/dependencies-local/extension-kit/types/index.js.map +1 -0
- package/dependencies-local/extension-kit/types/indexes.d.ts +6 -0
- package/dependencies-local/extension-kit/types/indexes.js +15 -0
- package/dependencies-local/extension-kit/types/indexes.js.map +1 -0
- package/dependencies-local/extension-kit/types/migrations.d.ts +15 -0
- package/dependencies-local/extension-kit/types/migrations.js +5 -0
- package/dependencies-local/extension-kit/types/migrations.js.map +1 -0
- package/dependencies-local/extension-kit/types/object-spec.d.ts +108 -0
- package/dependencies-local/extension-kit/types/object-spec.js +23 -0
- package/dependencies-local/extension-kit/types/object-spec.js.map +1 -0
- package/dependencies-local/extension-kit/types/objects.d.ts +18 -0
- package/dependencies-local/extension-kit/types/objects.js +5 -0
- package/dependencies-local/extension-kit/types/objects.js.map +1 -0
- package/dependencies-local/extension-kit/types/progress.d.ts +5 -0
- package/dependencies-local/extension-kit/types/progress.js +5 -0
- package/dependencies-local/extension-kit/types/progress.js.map +1 -0
- package/dependencies-local/extension-kit/types/renderer.d.ts +495 -0
- package/dependencies-local/extension-kit/types/renderer.js +5 -0
- package/dependencies-local/extension-kit/types/renderer.js.map +1 -0
- package/dependencies-local/extension-kit/useDebounce.d.ts +2 -0
- package/dependencies-local/extension-kit/useDebounce.js +27 -0
- package/dependencies-local/extension-kit/useDebounce.js.map +1 -0
- package/dependencies-local/extension-kit/usePersistentStateReducer.d.ts +35 -0
- package/dependencies-local/extension-kit/usePersistentStateReducer.js +91 -0
- package/dependencies-local/extension-kit/usePersistentStateReducer.js.map +1 -0
- package/dependencies-local/extension-kit/useTimeTravelingPersistentStateReducer.d.ts +48 -0
- package/dependencies-local/extension-kit/useTimeTravelingPersistentStateReducer.js +116 -0
- package/dependencies-local/extension-kit/useTimeTravelingPersistentStateReducer.js.map +1 -0
- package/dependencies-local/extension-kit/util.d.ts +8 -0
- package/dependencies-local/extension-kit/util.js +21 -0
- package/dependencies-local/extension-kit/util.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/ErrorState.d.ts +8 -0
- package/dependencies-local/extension-kit/widgets/ErrorState.js +44 -0
- package/dependencies-local/extension-kit/widgets/ErrorState.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Grid.d.ts +41 -0
- package/dependencies-local/extension-kit/widgets/Grid.js +213 -0
- package/dependencies-local/extension-kit/widgets/Grid.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/HelpTooltip.d.ts +18 -0
- package/dependencies-local/extension-kit/widgets/HelpTooltip.js +84 -0
- package/dependencies-local/extension-kit/widgets/HelpTooltip.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/ItemCount.d.ts +19 -0
- package/dependencies-local/extension-kit/widgets/ItemCount.js +78 -0
- package/dependencies-local/extension-kit/widgets/ItemCount.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/List.d.ts +40 -0
- package/dependencies-local/extension-kit/widgets/List.js +191 -0
- package/dependencies-local/extension-kit/widgets/List.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Navbar.d.ts +20 -0
- package/dependencies-local/extension-kit/widgets/Navbar.js +75 -0
- package/dependencies-local/extension-kit/widgets/Navbar.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/SearchResultList.d.ts +24 -0
- package/dependencies-local/extension-kit/widgets/SearchResultList.js +201 -0
- package/dependencies-local/extension-kit/widgets/SearchResultList.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/Block.d.ts +21 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/Block.js +94 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/Block.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/BlockStateButtonGroup.d.ts +6 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/BlockStateButtonGroup.js +22 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/BlockStateButtonGroup.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/PropertyView.d.ts +28 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/PropertyView.js +148 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/PropertyView.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/index.d.ts +27 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/index.js +178 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/index.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/SuperSidebar.d.ts +13 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/SuperSidebar.js +82 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/SuperSidebar.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/context.d.ts +10 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/context.js +168 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/context.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/detail.d.ts +9 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/detail.js +66 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/detail.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/index.d.ts +33 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/index.js +204 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/index.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/types.d.ts +74 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/types.js +5 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/types.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/util.d.ts +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/util.js +14 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/util.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Workspace.d.ts +38 -0
- package/dependencies-local/extension-kit/widgets/Workspace.js +99 -0
- package/dependencies-local/extension-kit/widgets/Workspace.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/panels/PanelSeparator.d.ts +12 -0
- package/dependencies-local/extension-kit/widgets/panels/PanelSeparator.js +57 -0
- package/dependencies-local/extension-kit/widgets/panels/PanelSeparator.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/panels/index.d.ts +28 -0
- package/dependencies-local/extension-kit/widgets/panels/index.js +169 -0
- package/dependencies-local/extension-kit/widgets/panels/index.js.map +1 -0
- package/dist/common.d.ts +1 -0
- package/{common.js → dist/common.js} +1 -1
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations/initial.d.ts +3 -0
- package/dist/migrations/initial.js.map +1 -0
- package/dist/package.json +56 -0
- package/dist/types/cr.d.ts +216 -0
- package/dist/types/cr.js +175 -0
- package/dist/types/cr.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/{types → dist/types}/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/item.d.ts +59 -0
- package/dist/types/item.js +16 -0
- package/dist/types/item.js.map +1 -0
- package/dist/types/proposal.d.ts +64 -0
- package/{types → dist/types}/proposal.js +1 -1
- package/dist/types/proposal.js.map +1 -0
- package/dist/types/register.d.ts +18 -0
- package/dist/types/register.js +23 -0
- package/dist/types/register.js.map +1 -0
- package/dist/types/registry.d.ts +15 -0
- package/dist/types/registry.js +14 -0
- package/dist/types/registry.js.map +1 -0
- package/dist/types/stakeholder.d.ts +58 -0
- package/dist/types/stakeholder.js +53 -0
- package/dist/types/stakeholder.js.map +1 -0
- package/dist/types/util.d.ts +21 -0
- package/dist/types/util.js +5 -0
- package/dist/types/util.js.map +1 -0
- package/dist/types/views.d.ts +157 -0
- package/dist/types/views.js +5 -0
- package/dist/types/views.js.map +1 -0
- package/dist/views/AnnotatedChange.d.ts +7 -0
- package/dist/views/AnnotatedChange.js +91 -0
- package/dist/views/AnnotatedChange.js.map +1 -0
- package/dist/views/BrowserCtx.d.ts +73 -0
- package/dist/views/BrowserCtx.js +31 -0
- package/dist/views/BrowserCtx.js.map +1 -0
- package/dist/views/FilterCriteria/CRITERIA_CONFIGURATION.d.ts +17 -0
- package/dist/views/FilterCriteria/CRITERIA_CONFIGURATION.js +202 -0
- package/dist/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +1 -0
- package/dist/views/FilterCriteria/criteriaGroupToQueryExpression.d.ts +6 -0
- package/{views → dist/views}/FilterCriteria/criteriaGroupToQueryExpression.js +10 -3
- package/dist/views/FilterCriteria/criteriaGroupToQueryExpression.js.map +1 -0
- package/dist/views/FilterCriteria/criteriaGroupToSummary.d.ts +5 -0
- package/{views → dist/views}/FilterCriteria/criteriaGroupToSummary.js +7 -7
- package/dist/views/FilterCriteria/criteriaGroupToSummary.js.map +1 -0
- package/dist/views/FilterCriteria/criteriaToNodes.d.ts +24 -0
- package/{views → dist/views}/FilterCriteria/criteriaToNodes.js +42 -28
- package/dist/views/FilterCriteria/criteriaToNodes.js.map +1 -0
- package/dist/views/FilterCriteria/index.d.ts +23 -0
- package/{views → dist/views}/FilterCriteria/index.js +29 -21
- package/dist/views/FilterCriteria/index.js.map +1 -0
- package/dist/views/FilterCriteria/models.d.ts +68 -0
- package/dist/views/FilterCriteria/models.js +34 -0
- package/dist/views/FilterCriteria/models.js.map +1 -0
- package/dist/views/FilterCriteria/mutateGroup.d.ts +17 -0
- package/{views → dist/views}/FilterCriteria/mutateGroup.js +4 -3
- package/dist/views/FilterCriteria/mutateGroup.js.map +1 -0
- package/dist/views/GenericRelatedItemView.d.ts +6 -0
- package/dist/views/GenericRelatedItemView.js +242 -0
- package/dist/views/GenericRelatedItemView.js.map +1 -0
- package/dist/views/RegisterStakeholder.d.ts +9 -0
- package/dist/views/RegisterStakeholder.js +40 -0
- package/dist/views/RegisterStakeholder.js.map +1 -0
- package/dist/views/RegisterVersion.d.ts +9 -0
- package/dist/views/RegisterVersion.js +41 -0
- package/dist/views/RegisterVersion.js.map +1 -0
- package/dist/views/SearchQuery.d.ts +13 -0
- package/dist/views/SearchQuery.js +137 -0
- package/dist/views/SearchQuery.js.map +1 -0
- package/dist/views/change-request/ChangeRequestContext.d.ts +20 -0
- package/dist/views/change-request/ChangeRequestContext.js +56 -0
- package/dist/views/change-request/ChangeRequestContext.js.map +1 -0
- package/dist/views/change-request/Proposals.d.ts +21 -0
- package/dist/views/change-request/Proposals.js +331 -0
- package/dist/views/change-request/Proposals.js.map +1 -0
- package/dist/views/change-request/objectChangeset.d.ts +31 -0
- package/dist/views/change-request/objectChangeset.js +229 -0
- package/dist/views/change-request/objectChangeset.js.map +1 -0
- package/dist/views/detail/ChangeRequest/Proposal.d.ts +0 -0
- package/dist/views/detail/ChangeRequest/Proposal.js +142 -0
- package/dist/views/detail/ChangeRequest/Proposal.js.map +1 -0
- package/dist/views/detail/ChangeRequest/index.d.ts +13 -0
- package/dist/views/detail/ChangeRequest/index.js +207 -0
- package/dist/views/detail/ChangeRequest/index.js.map +1 -0
- package/dist/views/detail/ChangeRequest/transitions.d.ts +28 -0
- package/dist/views/detail/ChangeRequest/transitions.js +530 -0
- package/dist/views/detail/ChangeRequest/transitions.js.map +1 -0
- package/dist/views/detail/CustomView/index.d.ts +13 -0
- package/dist/views/detail/CustomView/index.js +68 -0
- package/dist/views/detail/CustomView/index.js.map +1 -0
- package/dist/views/detail/RegisterHome/index.d.ts +5 -0
- package/dist/views/detail/RegisterHome/index.js +128 -0
- package/dist/views/detail/RegisterHome/index.js.map +1 -0
- package/dist/views/detail/RegisterItem/RelatedItems.d.ts +14 -0
- package/dist/views/detail/RegisterItem/RelatedItems.js +61 -0
- package/dist/views/detail/RegisterItem/RelatedItems.js.map +1 -0
- package/dist/views/detail/RegisterItem/SupersedingItemMenu.d.ts +13 -0
- package/dist/views/detail/RegisterItem/SupersedingItemMenu.js +56 -0
- package/dist/views/detail/RegisterItem/SupersedingItemMenu.js.map +1 -0
- package/dist/views/detail/RegisterItem/index.d.ts +13 -0
- package/dist/views/detail/RegisterItem/index.js +357 -0
- package/dist/views/detail/RegisterItem/index.js.map +1 -0
- package/dist/views/detail/RegisterMeta/RegisterMetaForm.d.ts +10 -0
- package/dist/views/detail/RegisterMeta/RegisterMetaForm.js +331 -0
- package/dist/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -0
- package/dist/views/detail/RegisterMeta/index.d.ts +10 -0
- package/dist/views/detail/RegisterMeta/index.js +111 -0
- package/dist/views/detail/RegisterMeta/index.js.map +1 -0
- package/dist/views/detail/index.d.ts +1 -0
- package/dist/views/detail/index.js +24 -0
- package/dist/views/detail/index.js.map +1 -0
- package/dist/views/diffing/InlineDiff.d.ts +12 -0
- package/dist/views/diffing/InlineDiff.js +58 -0
- package/dist/views/diffing/InlineDiff.js.map +1 -0
- package/dist/views/diffing/StructuredDiff.d.ts +11 -0
- package/dist/views/diffing/StructuredDiff.js +65 -0
- package/dist/views/diffing/StructuredDiff.js.map +1 -0
- package/dist/views/hooks/useCustomView.d.ts +3 -0
- package/dist/views/hooks/useCustomView.js +24 -0
- package/dist/views/hooks/useCustomView.js.map +1 -0
- package/dist/views/hooks/useItemClassConfig.d.ts +3 -0
- package/dist/views/hooks/useItemClassConfig.js +24 -0
- package/dist/views/hooks/useItemClassConfig.js.map +1 -0
- package/dist/views/hooks/useItemRef.d.ts +3 -0
- package/dist/views/hooks/useItemRef.js +39 -0
- package/dist/views/hooks/useItemRef.js.map +1 -0
- package/dist/views/hooks/useSingleRegisterItemData.d.ts +3 -0
- package/dist/views/hooks/useSingleRegisterItemData.js +32 -0
- package/dist/views/hooks/useSingleRegisterItemData.js.map +1 -0
- package/dist/views/index.d.ts +7 -0
- package/dist/views/index.js +197 -0
- package/dist/views/index.js.map +1 -0
- package/dist/views/itemPathUtils.d.ts +52 -0
- package/dist/views/itemPathUtils.js +144 -0
- package/dist/views/itemPathUtils.js.map +1 -0
- package/dist/views/itemQueryUtils.d.ts +11 -0
- package/dist/views/itemQueryUtils.js +48 -0
- package/dist/views/itemQueryUtils.js.map +1 -0
- package/dist/views/protocolRegistry.d.ts +12 -0
- package/dist/views/protocolRegistry.js +42 -0
- package/dist/views/protocolRegistry.js.map +1 -0
- package/dist/views/sidebar/Browse/index.d.ts +11 -0
- package/dist/views/sidebar/Browse/index.js +453 -0
- package/dist/views/sidebar/Browse/index.js.map +1 -0
- package/dist/views/sidebar/Export/index.d.ts +5 -0
- package/dist/views/sidebar/Export/index.js +94 -0
- package/dist/views/sidebar/Export/index.js.map +1 -0
- package/dist/views/sidebar/ListItem.d.ts +10 -0
- package/dist/views/sidebar/ListItem.js +43 -0
- package/dist/views/sidebar/ListItem.js.map +1 -0
- package/dist/views/sidebar/Registration/index.d.ts +5 -0
- package/dist/views/sidebar/Registration/index.js +163 -0
- package/dist/views/sidebar/Registration/index.js.map +1 -0
- package/dist/views/sidebar/Search/index.d.ts +18 -0
- package/dist/views/sidebar/Search/index.js +177 -0
- package/dist/views/sidebar/Search/index.js.map +1 -0
- package/dist/views/sidebar/index.d.ts +6 -0
- package/dist/views/sidebar/index.js +104 -0
- package/dist/views/sidebar/index.js.map +1 -0
- package/dist/views/util.d.ts +36 -0
- package/dist/views/util.js +135 -0
- package/dist/views/util.js.map +1 -0
- package/package.json +27 -19
- package/react-visual-diff.d.ts +9 -0
- package/common.d.ts +0 -1
- package/index.js.map +0 -1
- package/types/index.js.map +0 -1
- package/types/item.js +0 -6
- package/types/item.js.map +0 -1
- package/types/proposal.d.ts +0 -47
- package/types/proposal.js.map +0 -1
- package/types/register.js.map +0 -1
- package/types/registry.d.ts +0 -10
- package/types/registry.js +0 -7
- package/types/registry.js.map +0 -1
- package/types/stakeholder.d.ts +0 -34
- package/types/stakeholder.js +0 -9
- package/types/stakeholder.js.map +0 -1
- package/types/views.d.ts +0 -83
- package/types/views.js.map +0 -1
- package/views/BrowserCtx.d.ts +0 -9
- package/views/BrowserCtx.js +0 -20
- package/views/BrowserCtx.js.map +0 -1
- package/views/ChangeRequest.d.ts +0 -12
- package/views/ChangeRequest.js +0 -689
- package/views/ChangeRequest.js.map +0 -1
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.d.ts +0 -5
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.js +0 -109
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +0 -1
- package/views/FilterCriteria/criteriaGroupToQueryExpression.js.map +0 -1
- package/views/FilterCriteria/criteriaGroupToSummary.js.map +0 -1
- package/views/FilterCriteria/criteriaToNodes.js.map +0 -1
- package/views/FilterCriteria/index.js.map +0 -1
- package/views/FilterCriteria/models.js +0 -27
- package/views/FilterCriteria/models.js.map +0 -1
- package/views/FilterCriteria/mutateGroup.js.map +0 -1
- package/views/GenericRelatedItemView.js +0 -202
- package/views/GenericRelatedItemView.js.map +0 -1
- package/views/ItemBrowser.d.ts +0 -12
- package/views/ItemBrowser.js +0 -258
- package/views/ItemBrowser.js.map +0 -1
- package/views/ItemDetails.d.ts +0 -14
- package/views/ItemDetails.js +0 -128
- package/views/ItemDetails.js.map +0 -1
- package/views/MainView.d.ts +0 -8
- package/views/MainView.js +0 -34
- package/views/MainView.js.map +0 -1
- package/views/RegisterInformation.d.ts +0 -7
- package/views/RegisterInformation.js +0 -264
- package/views/RegisterInformation.js.map +0 -1
- package/views/RegisterItemGrid.d.ts +0 -25
- package/views/RegisterItemGrid.js +0 -276
- package/views/RegisterItemGrid.js.map +0 -1
- package/views/index.js +0 -166
- package/views/index.js.map +0 -1
- package/views/itemPathUtils.d.ts +0 -9
- package/views/itemPathUtils.js +0 -57
- package/views/itemPathUtils.js.map +0 -1
- package/views/util.d.ts +0 -12
- package/views/util.js +0 -49
- package/views/util.js.map +0 -1
- /package/{migrations → compiled/migrations}/initial.d.ts +0 -0
- /package/{migrations → compiled/migrations}/initial.js.map +0 -0
- /package/{types → compiled/types}/util.d.ts +0 -0
- /package/{types → compiled/types}/util.js.map +0 -0
- /package/{views → compiled/views}/FilterCriteria/criteriaGroupToSummary.d.ts +0 -0
- /package/{types/register.js → dependencies-local/extension-kit/i18n/types.js} +0 -0
- /package/{types/util.js → dependencies-local/extension-kit/types/binary-invocation.js} +0 -0
- /package/{types/views.js → dependencies-local/extension-kit/types/buffers.js} +0 -0
- /package/{migrations → dist/migrations}/initial.js +0 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
/** @jsxFrag React.Fragment */
|
|
3
|
+
import React, { useContext, useEffect, useState } from 'react';
|
|
4
|
+
import { jsx, css } from '@emotion/react';
|
|
5
|
+
import styled from '@emotion/styled';
|
|
6
|
+
import { ControlGroup, ButtonGroup, Switch, Button, Classes, MenuItem, NonIdealState, } from '@blueprintjs/core';
|
|
7
|
+
import { Select2 as Select } from '@blueprintjs/select';
|
|
8
|
+
import HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';
|
|
9
|
+
import { Protocols } from '../protocolRegistry';
|
|
10
|
+
import { BrowserCtx } from '../BrowserCtx';
|
|
11
|
+
import { itemPathToItemRef, itemRefToItemPath } from '../itemPathUtils';
|
|
12
|
+
import StructuredDiff from '../diffing/StructuredDiff';
|
|
13
|
+
import registerItemDetailView from '../detail/RegisterItem';
|
|
14
|
+
const Proposals = function ({ proposals, className }) {
|
|
15
|
+
const [_selectedProposal, selectProposal] = useState(null);
|
|
16
|
+
const [showDiff, setShowDiff] = useState(false);
|
|
17
|
+
const [showOnlyChanged, setShowOnlyChanged] = useState(true);
|
|
18
|
+
const outerBrowserCtx = useContext(BrowserCtx);
|
|
19
|
+
const { jumpTo, subregisters, useRegisterItemData } = outerBrowserCtx;
|
|
20
|
+
const proposalBrowserCtx = {
|
|
21
|
+
...outerBrowserCtx,
|
|
22
|
+
jumpTo: handleCRJump,
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* When jumping to an item affected by current CR,
|
|
26
|
+
* jump in-CR instead of spawning tab.
|
|
27
|
+
*/
|
|
28
|
+
function handleCRJump(uri) {
|
|
29
|
+
if (uri.startsWith(Protocols.ITEM_DETAILS)) {
|
|
30
|
+
const itemPath = uri.split(':')[1];
|
|
31
|
+
if (proposals[itemPath]) {
|
|
32
|
+
selectProposal(itemPath);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
jumpTo?.(uri);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const firstProposal = Object.keys(proposals)[0];
|
|
40
|
+
// Effective selected proposal
|
|
41
|
+
const selectedProposal = ((_selectedProposal && proposals[_selectedProposal]) ? _selectedProposal : null)
|
|
42
|
+
?? firstProposal
|
|
43
|
+
?? undefined;
|
|
44
|
+
// Force select available proposal
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
if (firstProposal && (_selectedProposal === null || !proposals[_selectedProposal])) {
|
|
47
|
+
selectProposal(firstProposal);
|
|
48
|
+
}
|
|
49
|
+
}, [firstProposal, _selectedProposal, JSON.stringify(proposals)]);
|
|
50
|
+
const selectedItemRef = selectedProposal
|
|
51
|
+
? itemPathToItemRef(subregisters !== undefined, selectedProposal)
|
|
52
|
+
: null;
|
|
53
|
+
// Data for proposed items
|
|
54
|
+
const proposedItemPaths = Object.entries(proposals).map(([itemPath, proposal]) => {
|
|
55
|
+
if (proposal.type === 'clarification' || proposal.type === 'addition') {
|
|
56
|
+
return itemPath;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
}).filter(s => s !== undefined);
|
|
62
|
+
const proposedItemDataReq = useRegisterItemData({
|
|
63
|
+
itemPaths: proposedItemPaths,
|
|
64
|
+
});
|
|
65
|
+
// Data for pre-existing items
|
|
66
|
+
const currentItemDataReq = useRegisterItemData({
|
|
67
|
+
itemPaths: Object.keys(proposals),
|
|
68
|
+
ignoreActiveCR: true,
|
|
69
|
+
});
|
|
70
|
+
const getCurrentItemData = (itemPath) => currentItemDataReq.value[itemPath]?.data ?? null;
|
|
71
|
+
const getProposedItemData = (itemPath) => proposedItemDataReq.value[itemPath]?.data ?? null;
|
|
72
|
+
const selectedItemCurrentData = getCurrentItemData(selectedProposal);
|
|
73
|
+
const selectedItemProposedData = getProposedItemData(selectedProposal);
|
|
74
|
+
if (selectedProposal
|
|
75
|
+
&& selectedItemRef
|
|
76
|
+
&& proposals[selectedProposal]
|
|
77
|
+
&& !currentItemDataReq.isUpdating
|
|
78
|
+
&& !proposedItemDataReq.isUpdating) {
|
|
79
|
+
if (selectedItemCurrentData || selectedItemProposedData) {
|
|
80
|
+
const selectedItemSummary = jsx(ProposalSummary, { itemRef: selectedItemRef, itemData: (selectedItemProposedData ?? selectedItemCurrentData), itemDataBefore: selectedItemCurrentData ?? undefined, proposal: proposals[selectedProposal] });
|
|
81
|
+
return (jsx("div", { css: css `display: flex; flex-flow: column nowrap;`, className: className },
|
|
82
|
+
jsx("div", null,
|
|
83
|
+
jsx(ControlGroup, null,
|
|
84
|
+
jsx(Switch, { checked: showDiff, onChange: evt => setShowDiff(evt.currentTarget.checked), label: "View source", css: css `margin-right: 1em !important` }),
|
|
85
|
+
jsx(Switch, { checked: showDiff && showOnlyChanged, disabled: !showDiff, onChange: evt => setShowOnlyChanged(evt.currentTarget.checked), label: "Show clarified properties only" })),
|
|
86
|
+
jsx(ButtonGroup, null,
|
|
87
|
+
jsx(Button, { disabled: !jumpTo || proposals[selectedProposal]?.type === 'addition', icon: 'locate', onClick: () => jumpTo?.(`${Protocols.ITEM_DETAILS}:${selectedProposal}`), title: "Open selected item in a new tab (not applicable to proposed additions)" }, "Reveal in registry"),
|
|
88
|
+
Object.keys(proposals).length > 1
|
|
89
|
+
? jsx(Select, { filterable: false, itemsEqual: (i1, i2) => JSON.stringify(i1) === JSON.stringify(i2), activeItem: {
|
|
90
|
+
itemPath: selectedProposal,
|
|
91
|
+
proposal: proposals[selectedProposal],
|
|
92
|
+
itemData: (selectedItemProposedData ?? selectedItemCurrentData),
|
|
93
|
+
itemDataBefore: selectedItemCurrentData ?? undefined,
|
|
94
|
+
itemRef: itemPathToItemRef(subregisters !== undefined, selectedProposal),
|
|
95
|
+
}, items: Object.entries(proposals).map(([itemPath, proposal]) => ({
|
|
96
|
+
itemPath,
|
|
97
|
+
proposal,
|
|
98
|
+
itemData: (getProposedItemData(itemPath) ?? getCurrentItemData(itemPath)) ?? null,
|
|
99
|
+
itemDataBefore: undefined,
|
|
100
|
+
itemRef: itemPathToItemRef(subregisters !== undefined, itemPath),
|
|
101
|
+
})).filter(item => item.itemData !== null), popoverProps: { minimal: true }, fill: true, itemRenderer: ChangeProposalItemView, onItemSelect: (item) => selectProposal(item.itemPath) },
|
|
102
|
+
jsx(Button, { rightIcon: "chevron-down", icon: getProposalIcon(proposals[selectedProposal]) }, selectedItemSummary))
|
|
103
|
+
: jsx(Button, { fill: true, alignText: "left", icon: getProposalIcon(proposals[selectedProposal]), rightIcon: "chevron-down" }, selectedItemSummary))),
|
|
104
|
+
jsx("div", { css: css `position: relative; flex: 1;` },
|
|
105
|
+
jsx(BrowserCtx.Provider, { value: proposalBrowserCtx },
|
|
106
|
+
jsx(ProposalDetail, { itemRef: selectedItemRef, showDiff: showDiff, showOnlyChanged: showOnlyChanged, itemData: (selectedItemProposedData ?? selectedItemCurrentData), itemDataBefore: selectedItemCurrentData ?? undefined, proposal: proposals[selectedProposal] })))));
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
return jsx(NonIdealState, { icon: 'warning-sign', className: className, title: "Unable to retrieve proposed item data", description: jsx("div", { css: css `text-align: left;` },
|
|
110
|
+
"There appears to be a data integrity issue.",
|
|
111
|
+
jsx("br", null),
|
|
112
|
+
"This might be caused by a problem in the application, or repository contents having been edited outside of the application.",
|
|
113
|
+
jsx("br", null),
|
|
114
|
+
"The data should be recoverable by inspecting version control system commit history.") });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
return jsx(NonIdealState, { icon: 'clean', className: className, title: "Nothing is proposed here yet." });
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
const ChangeProposalItemView = (item, { handleClick, modifiers, query }) => {
|
|
122
|
+
const proposalConfig = item.proposal.type === 'amendment'
|
|
123
|
+
? PROPOSAL_VIEWS[item.proposal.amendmentType]
|
|
124
|
+
: PROPOSAL_VIEWS[item.proposal.type];
|
|
125
|
+
const ProposalTypeLabel = proposalConfig.summary;
|
|
126
|
+
return (jsx(MenuItem, { active: modifiers.active, disabled: modifiers.disabled, labelElement: jsx(React.Fragment, null,
|
|
127
|
+
jsx(ProposalTypeLabel, { ...item }),
|
|
128
|
+
" ",
|
|
129
|
+
jsx(HelpTooltip, { content: jsx(React.Fragment, null,
|
|
130
|
+
"Proposed to be ",
|
|
131
|
+
proposalConfig.hint) })), key: item.itemPath, onClick: handleClick, icon: getProposalIcon(item.proposal), text: jsx(ProposalSummary, { ...item }) }));
|
|
132
|
+
};
|
|
133
|
+
export const ProposalDetail = function ({ proposal, showDiff, showOnlyChanged, itemRef, itemData, itemDataBefore, onChange }) {
|
|
134
|
+
const ItemView = registerItemDetailView.main;
|
|
135
|
+
const view = showDiff
|
|
136
|
+
? jsx(MaximizedStructuredDiff, { item1: itemDataBefore ?? {}, item2: itemData, showUnchanged: !showOnlyChanged, css: css `background: white; border-radius: 2.5px; padding: 10px 0; margin: 10px 0;`, className: Classes.ELEVATION_2 })
|
|
137
|
+
: jsx(ItemView, { uri: itemRefToItemPath(itemRef), key: JSON.stringify(itemRef) });
|
|
138
|
+
return jsx("div", { css: css `position: absolute; inset: 0; display: flex; flex-flow: column;` }, view);
|
|
139
|
+
};
|
|
140
|
+
export const ProposalSummary = function ({ proposal, itemRef, itemData, itemDataBefore, onChange }) {
|
|
141
|
+
const { itemClasses } = useContext(BrowserCtx);
|
|
142
|
+
const { classID } = itemRef;
|
|
143
|
+
const ListItemView = itemClasses[classID].views.listItemView;
|
|
144
|
+
return jsx(ListItemView, { itemRef: itemRef, itemData: itemData });
|
|
145
|
+
};
|
|
146
|
+
const clarification = {
|
|
147
|
+
hint: jsx(React.Fragment, null, "altered to represent the same concept more clearly."),
|
|
148
|
+
summary: ({ proposal, itemData, itemRef }) => jsx(React.Fragment, null, "Clarification"),
|
|
149
|
+
};
|
|
150
|
+
const addition = {
|
|
151
|
+
hint: jsx(React.Fragment, null, "added to this register."),
|
|
152
|
+
summary: ({ proposal, itemData, itemRef }) => jsx(React.Fragment, null, "Addition"),
|
|
153
|
+
};
|
|
154
|
+
const retirement = {
|
|
155
|
+
hint: jsx(React.Fragment, null, "marked as no longer current. (Note that this register is append-only, so the item cannot be removed altogether.)"),
|
|
156
|
+
summary: ({ proposal, itemRef, itemData }) => jsx(React.Fragment, null, "Retirement"),
|
|
157
|
+
};
|
|
158
|
+
const supersession = {
|
|
159
|
+
hint: jsx(React.Fragment, null, "removed from the register with another item recommended for use in its place. A relation between the superseding and superseded item will be created, though the exact semantics of that relation depend on the register."),
|
|
160
|
+
summary: ({ proposal, itemRef, itemData }) => jsx(React.Fragment, null, "Supersession"),
|
|
161
|
+
};
|
|
162
|
+
const invalidation = {
|
|
163
|
+
hint: jsx(React.Fragment, null, "marked as invalid. The exact semantics of invalidation depend on the register."),
|
|
164
|
+
summary: ({ proposal, itemRef, itemData }) => jsx(React.Fragment, null, "Invalidation"),
|
|
165
|
+
};
|
|
166
|
+
const MaximizedStructuredDiff = styled(StructuredDiff) `
|
|
167
|
+
position: absolute;
|
|
168
|
+
inset: 0;
|
|
169
|
+
`;
|
|
170
|
+
const PROPOSAL_VIEWS = {
|
|
171
|
+
clarification,
|
|
172
|
+
addition,
|
|
173
|
+
retirement,
|
|
174
|
+
supersession,
|
|
175
|
+
invalidation,
|
|
176
|
+
};
|
|
177
|
+
function getProposalIcon(proposal) {
|
|
178
|
+
return proposal.type === 'addition'
|
|
179
|
+
? 'add'
|
|
180
|
+
: proposal.type === 'clarification'
|
|
181
|
+
? 'edit'
|
|
182
|
+
: 'ban-circle';
|
|
183
|
+
}
|
|
184
|
+
export default Proposals;
|
|
185
|
+
//# sourceMappingURL=Proposals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Proposals.js","sourceRoot":"","sources":["../../../src/views/change-request/Proposals.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext, useEffect, useState } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n ControlGroup,\n ButtonGroup,\n Switch,\n Button,\n Classes,\n MenuItem,\n NonIdealState,\n IconName,\n} from '@blueprintjs/core';\nimport { ItemRenderer, Select2 as Select } from '@blueprintjs/select';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\nimport type {\n Addition,\n ChangeProposal,\n Clarification,\n InternalItemReference,\n Retirement,\n Supersession,\n Invalidation,\n Payload,\n} from '../../types';\nimport type { Drafted } from '../../types/cr';\nimport { Protocols, type Protocol } from '../protocolRegistry';\nimport { PROPOSAL_TYPES, AMENDMENT_TYPES } from '../../types/proposal';\nimport { BrowserCtx, type BrowserCtx as BrowserCtxType } from '../BrowserCtx';\nimport { itemPathToItemRef, itemRefToItemPath } from '../itemPathUtils';\nimport StructuredDiff from '../diffing/StructuredDiff';\nimport registerItemDetailView from '../detail/RegisterItem';\n\n\ninterface ChangeProposalItem {\n itemPath: string\n itemRef: InternalItemReference\n proposal: ChangeProposal\n itemData: Payload\n itemDataBefore: Payload | undefined\n}\n\n\nconst Proposals: React.FC<{\n proposals: Drafted['items']\n className?: string\n}> = function ({ proposals, className }) {\n const [ _selectedProposal, selectProposal ] = useState<string | null>(null);\n const [ showDiff, setShowDiff ] = useState(false);\n const [ showOnlyChanged, setShowOnlyChanged ] = useState(true);\n\n const outerBrowserCtx = useContext(BrowserCtx);\n const { jumpTo, subregisters, useRegisterItemData } = outerBrowserCtx;\n const proposalBrowserCtx: BrowserCtxType = {\n ...outerBrowserCtx,\n jumpTo: handleCRJump,\n };\n\n /**\n * When jumping to an item affected by current CR,\n * jump in-CR instead of spawning tab.\n */\n function handleCRJump(uri: `${Protocol}:${string}`): void {\n if (uri.startsWith(Protocols.ITEM_DETAILS)) {\n const itemPath = uri.split(':')[1];\n if (proposals[itemPath]) {\n selectProposal(itemPath);\n } else {\n jumpTo?.(uri);\n }\n }\n }\n\n const firstProposal: string | undefined = Object.keys(proposals)[0];\n\n // Effective selected proposal\n const selectedProposal: string | undefined =\n ((_selectedProposal && proposals[_selectedProposal]) ? _selectedProposal : null)\n ?? firstProposal\n ?? undefined;\n\n // Force select available proposal\n useEffect(() => {\n if (firstProposal && (_selectedProposal === null || !proposals[_selectedProposal])) {\n selectProposal(firstProposal);\n }\n }, [firstProposal, _selectedProposal, JSON.stringify(proposals)]);\n\n const selectedItemRef = selectedProposal\n ? itemPathToItemRef(subregisters !== undefined, selectedProposal)\n : null;\n\n\n // Data for proposed items\n const proposedItemPaths = Object.entries(proposals).map(([itemPath, proposal]) => {\n if (proposal.type === 'clarification' || proposal.type === 'addition') {\n return itemPath;\n } else {\n return undefined;\n }\n }).filter(s => s !== undefined) as string[];\n const proposedItemDataReq = useRegisterItemData({\n itemPaths: proposedItemPaths,\n });\n\n // Data for pre-existing items\n const currentItemDataReq = useRegisterItemData({\n itemPaths: Object.keys(proposals),\n ignoreActiveCR: true,\n });\n\n const getCurrentItemData = (itemPath: string) => currentItemDataReq.value[itemPath]?.data ?? null;\n const getProposedItemData = (itemPath: string) => proposedItemDataReq.value[itemPath]?.data ?? null;\n\n const selectedItemCurrentData = getCurrentItemData(selectedProposal);\n const selectedItemProposedData = getProposedItemData(selectedProposal);\n\n if (\n selectedProposal\n && selectedItemRef\n && proposals[selectedProposal]\n && !currentItemDataReq.isUpdating\n && !proposedItemDataReq.isUpdating\n ) {\n if (selectedItemCurrentData || selectedItemProposedData) {\n const selectedItemSummary = <ProposalSummary\n itemRef={selectedItemRef}\n itemData={(selectedItemProposedData ?? selectedItemCurrentData)!}\n itemDataBefore={selectedItemCurrentData ?? undefined}\n proposal={proposals[selectedProposal]}\n />\n\n return (\n <div css={css`display: flex; flex-flow: column nowrap;`} className={className}>\n <div>\n <ControlGroup>\n <Switch\n checked={showDiff}\n onChange={evt => setShowDiff(evt.currentTarget.checked)}\n label=\"View source\"\n css={css`margin-right: 1em !important`}\n />\n <Switch\n checked={showDiff && showOnlyChanged}\n disabled={!showDiff}\n onChange={evt => setShowOnlyChanged(evt.currentTarget.checked)}\n label=\"Show clarified properties only\"\n />\n </ControlGroup>\n <ButtonGroup>\n <Button\n disabled={!jumpTo || proposals[selectedProposal]?.type === 'addition'}\n icon='locate'\n onClick={() => jumpTo?.(`${Protocols.ITEM_DETAILS}:${selectedProposal}`)}\n title=\"Open selected item in a new tab (not applicable to proposed additions)\">\n Reveal in registry\n </Button>\n {Object.keys(proposals).length > 1\n ? <Select<ChangeProposalItem>\n filterable={false}\n itemsEqual={(i1, i2) => JSON.stringify(i1) === JSON.stringify(i2)}\n activeItem={{\n itemPath: selectedProposal,\n proposal: proposals[selectedProposal],\n itemData: (selectedItemProposedData ?? selectedItemCurrentData)!,\n itemDataBefore: selectedItemCurrentData ?? undefined,\n itemRef: itemPathToItemRef(subregisters !== undefined, selectedProposal),\n }} // TODO: First time selection is broken\n items={\n Object.entries(proposals).map(([itemPath, proposal]) => ({\n itemPath,\n proposal,\n itemData: (getProposedItemData(itemPath) ?? getCurrentItemData(itemPath))! ?? null,\n itemDataBefore: undefined,\n itemRef: itemPathToItemRef(subregisters !== undefined, itemPath),\n })).filter(item => item.itemData !== null)}\n popoverProps={{ minimal: true }}\n fill\n itemRenderer={ChangeProposalItemView}\n onItemSelect={(item) => selectProposal(item.itemPath)}>\n <Button rightIcon=\"chevron-down\" icon={getProposalIcon(proposals[selectedProposal])}>\n {selectedItemSummary}\n </Button>\n </Select>\n : <Button\n fill\n alignText=\"left\"\n icon={getProposalIcon(proposals[selectedProposal])}\n rightIcon=\"chevron-down\">\n {selectedItemSummary}\n </Button>}\n </ButtonGroup>\n </div>\n <div css={css`position: relative; flex: 1;`}>\n <BrowserCtx.Provider value={proposalBrowserCtx}>\n <ProposalDetail\n itemRef={selectedItemRef}\n showDiff={showDiff}\n showOnlyChanged={showOnlyChanged}\n itemData={(selectedItemProposedData ?? selectedItemCurrentData)!}\n itemDataBefore={selectedItemCurrentData ?? undefined}\n proposal={proposals[selectedProposal]}\n />\n </BrowserCtx.Provider>\n </div>\n </div>\n );\n } else {\n return <NonIdealState\n icon='warning-sign'\n className={className}\n title=\"Unable to retrieve proposed item data\"\n description={<div css={css`text-align: left;`}>\n There appears to be a data integrity issue.\n <br />\n This might be caused by a problem in the application, or repository contents having been edited outside of the application.\n <br />\n The data should be recoverable by inspecting version control system commit history.\n </div>}\n />;\n }\n } else {\n return <NonIdealState\n icon='clean'\n className={className}\n title=\"Nothing is proposed here yet.\"\n />;\n }\n};\n\n\nconst ChangeProposalItemView: ItemRenderer<ChangeProposalItem> =\n(item, { handleClick, modifiers, query }) => {\n const proposalConfig = \n item.proposal.type === 'amendment'\n ? PROPOSAL_VIEWS[item.proposal.amendmentType]\n : PROPOSAL_VIEWS[item.proposal.type];\n const ProposalTypeLabel: React.FC<ProposalProps<any>> = proposalConfig.summary;\n return (\n <MenuItem\n active={modifiers.active}\n disabled={modifiers.disabled}\n labelElement={<>\n <ProposalTypeLabel {...item} />\n {\" \"}\n <HelpTooltip content={<>Proposed to be {proposalConfig.hint}</>} />\n </>}\n key={item.itemPath}\n onClick={handleClick}\n icon={getProposalIcon(item.proposal)}\n text={<ProposalSummary {...item} />} />\n );\n}\n\n\ninterface ProposalProps<P extends ChangeProposal> {\n proposal: P\n showDiff?: boolean\n showOnlyChanged?: boolean\n itemRef: InternalItemReference\n itemData: Payload\n itemDataBefore: P extends Clarification ? Payload : undefined\n onChange?: (newProposal: P) => void\n}\nexport const ProposalDetail: React.FC<ProposalProps<ChangeProposal>> =\nfunction ({ proposal, showDiff, showOnlyChanged, itemRef, itemData, itemDataBefore, onChange }) {\n const ItemView = registerItemDetailView.main;\n\n const view: JSX.Element = showDiff\n ? <MaximizedStructuredDiff\n item1={itemDataBefore ?? {}}\n item2={itemData}\n showUnchanged={!showOnlyChanged}\n css={css`background: white; border-radius: 2.5px; padding: 10px 0; margin: 10px 0;`}\n className={Classes.ELEVATION_2}\n />\n : <ItemView uri={itemRefToItemPath(itemRef)} key={JSON.stringify(itemRef)} />\n\n return <div css={css`position: absolute; inset: 0; display: flex; flex-flow: column;`}>\n {view}\n </div>;\n};\nexport const ProposalSummary: React.FC<ProposalProps<ChangeProposal>> =\nfunction ({ proposal, itemRef, itemData, itemDataBefore, onChange }) {\n const { itemClasses } = useContext(BrowserCtx);\n const { classID } = itemRef;\n const ListItemView = itemClasses[classID].views.listItemView;\n\n return <ListItemView\n itemRef={itemRef}\n itemData={itemData}\n />;\n};\n\n\ninterface ProposalViewConfig<P extends ChangeProposal> {\n summary: React.FC<ProposalProps<P>>\n hint: JSX.Element | string\n}\n\n\nconst clarification: ProposalViewConfig<Clarification> = {\n hint: <>\n altered to represent the same concept more clearly.\n </>,\n summary: ({ proposal, itemData, itemRef }) => <>Clarification</>,\n};\n\n\nconst addition: ProposalViewConfig<Addition> = {\n hint: <>added to this register.</>,\n summary: ({ proposal, itemData, itemRef }) => <>Addition</>,\n};\n\n\nconst retirement: ProposalViewConfig<Retirement> = {\n hint: <>\n marked as no longer current.\n (Note that this register is append-only, so the item cannot be removed altogether.)\n </>,\n summary: ({ proposal, itemRef, itemData }) => <>Retirement</>,\n};\n\n\nconst supersession: ProposalViewConfig<Supersession> = {\n hint: <>\n removed from the register with another item recommended for use in its place.\n A relation between the superseding and superseded item will be created,\n though the exact semantics of that relation depend on the register.\n </>,\n summary: ({ proposal, itemRef, itemData }) => <>Supersession</>,\n};\n\n\nconst invalidation: ProposalViewConfig<Invalidation> = {\n hint: <>\n marked as invalid. The exact semantics of invalidation depend on the register.\n </>,\n summary: ({ proposal, itemRef, itemData }) => <>Invalidation</>,\n}\n\n\nconst MaximizedStructuredDiff = styled(StructuredDiff)`\n position: absolute;\n inset: 0;\n`;\n\n\ntype ProposalOrAmendmentType =\n | Exclude<typeof PROPOSAL_TYPES[number], 'amendment'>\n | typeof AMENDMENT_TYPES[number];\n\n\nconst PROPOSAL_VIEWS: { [type in ProposalOrAmendmentType]: ProposalViewConfig<any> } = {\n clarification,\n addition,\n retirement,\n supersession,\n invalidation,\n};\n\n\nfunction getProposalIcon(proposal: ChangeProposal): IconName {\n return proposal.type === 'addition'\n ? 'add'\n : proposal.type === 'clarification'\n ? 'edit'\n : 'ban-circle'\n}\n\n\nexport default Proposals;\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ObjectChangeset } from '@riboseinc/paneron-extension-kit/types/objects';
|
|
2
|
+
import type { RegisterItem, ChangeRequest, ChangeProposal } from '../../types';
|
|
3
|
+
import type { Version as RegisterVersion } from '../../types/register';
|
|
4
|
+
import { type Drafted, type ReturnedForClarificationByManager, type ReturnedForClarificationByControlBody } from '../../types/cr';
|
|
5
|
+
/** Takes a justification and ID, returns an object changeset. */
|
|
6
|
+
export declare function newCRObjectChangeset(id: string, justification: string, registerVersion: RegisterVersion, stakeholderGitServerUsername: string): ObjectChangeset;
|
|
7
|
+
/**
|
|
8
|
+
* Returns an object changeset to update CR with new given proposal items.
|
|
9
|
+
* Only applicable to CR at draft edit stage.
|
|
10
|
+
*/
|
|
11
|
+
export declare function updateCRObjectChangeset(
|
|
12
|
+
/**
|
|
13
|
+
* Change request data.
|
|
14
|
+
*/
|
|
15
|
+
cr: Drafted | ReturnedForClarificationByManager | ReturnedForClarificationByControlBody,
|
|
16
|
+
/**
|
|
17
|
+
* Proposals by item path.
|
|
18
|
+
* Will be merged with those already existing in `cr`.
|
|
19
|
+
* If a proposal is undefined, it will be removed.
|
|
20
|
+
*/
|
|
21
|
+
proposalItems: Record<string, ChangeProposal | null>,
|
|
22
|
+
/**
|
|
23
|
+
* New item data must be provided for additions and clarifications,
|
|
24
|
+
* keyed by item path.
|
|
25
|
+
*/
|
|
26
|
+
itemData?: Record<string, RegisterItem<any>>): ObjectChangeset;
|
|
27
|
+
/**
|
|
28
|
+
* Given change proposals, returns applicable changes
|
|
29
|
+
* to objects in the dataset.
|
|
30
|
+
*/
|
|
31
|
+
export declare function proposalsToObjectChangeset(crID: string, hasSubregisters: boolean, proposals: ChangeRequest["proposals"], itemData: Record<string, RegisterItem<any> | null>, newItemData: Record<string, RegisterItem<any> | null>): Promise<ObjectChangeset>;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { isRegisterItem } from '../../types';
|
|
2
|
+
import { State, } from '../../types/cr';
|
|
3
|
+
import { crIDToCRPath, itemPathInCR, itemPathToItemRef, itemRefToItemPath } from '../itemPathUtils';
|
|
4
|
+
/** Takes a justification and ID, returns an object changeset. */
|
|
5
|
+
export function newCRObjectChangeset(id, justification, registerVersion, stakeholderGitServerUsername) {
|
|
6
|
+
const timeStarted = new Date();
|
|
7
|
+
const cr = {
|
|
8
|
+
id,
|
|
9
|
+
timeStarted,
|
|
10
|
+
timeEdited: timeStarted,
|
|
11
|
+
justification,
|
|
12
|
+
submittingStakeholderGitServerUsername: stakeholderGitServerUsername,
|
|
13
|
+
items: {},
|
|
14
|
+
state: State.DRAFT,
|
|
15
|
+
registerVersion: registerVersion.id,
|
|
16
|
+
};
|
|
17
|
+
const crObjectPath = crIDToCRPath(id);
|
|
18
|
+
return {
|
|
19
|
+
[crObjectPath]: {
|
|
20
|
+
oldValue: null,
|
|
21
|
+
newValue: cr,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns an object changeset to update CR with new given proposal items.
|
|
27
|
+
* Only applicable to CR at draft edit stage.
|
|
28
|
+
*/
|
|
29
|
+
export function updateCRObjectChangeset(
|
|
30
|
+
/**
|
|
31
|
+
* Change request data.
|
|
32
|
+
*/
|
|
33
|
+
cr,
|
|
34
|
+
/**
|
|
35
|
+
* Proposals by item path.
|
|
36
|
+
* Will be merged with those already existing in `cr`.
|
|
37
|
+
* If a proposal is undefined, it will be removed.
|
|
38
|
+
*/
|
|
39
|
+
proposalItems,
|
|
40
|
+
/**
|
|
41
|
+
* New item data must be provided for additions and clarifications,
|
|
42
|
+
* keyed by item path.
|
|
43
|
+
*/
|
|
44
|
+
itemData = {}) {
|
|
45
|
+
const changeset = {};
|
|
46
|
+
const newItems = { ...cr.items };
|
|
47
|
+
for (const [itemPath, proposal] of Object.entries(proposalItems)) {
|
|
48
|
+
// Update proposals on CR
|
|
49
|
+
if (proposal !== null) {
|
|
50
|
+
newItems[itemPath] = proposal;
|
|
51
|
+
}
|
|
52
|
+
else if (newItems[itemPath]) {
|
|
53
|
+
delete newItems[itemPath];
|
|
54
|
+
}
|
|
55
|
+
// Add/remove item data
|
|
56
|
+
if (proposal?.type === 'addition' || proposal?.type === 'clarification') {
|
|
57
|
+
const proposedItemData = itemData[itemPath];
|
|
58
|
+
if (proposedItemData === null || !isRegisterItem(proposedItemData)) {
|
|
59
|
+
console.error("Unable to convert proposals to object changeset: original item data is missing", itemPath);
|
|
60
|
+
throw new Error("Unable to convert proposals to object changeset: original item data is missing");
|
|
61
|
+
}
|
|
62
|
+
changeset[itemPathInCR(itemPath, cr.id)] = {
|
|
63
|
+
// When editing a draft, we don’t care
|
|
64
|
+
// about overwriting proposed item data so we omit oldValue.
|
|
65
|
+
newValue: proposedItemData,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
changeset[itemPathInCR(itemPath, cr.id)] = {
|
|
70
|
+
// When editing a draft, we don’t care
|
|
71
|
+
// about overwriting proposed item data so we omit oldValue.
|
|
72
|
+
newValue: null,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Update main CR data
|
|
77
|
+
const crPath = crIDToCRPath(cr.id);
|
|
78
|
+
changeset[crPath] = {
|
|
79
|
+
oldValue: cr,
|
|
80
|
+
newValue: { ...cr, items: newItems, timeEdited: new Date() },
|
|
81
|
+
};
|
|
82
|
+
return changeset;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Given change proposals, returns applicable changes
|
|
86
|
+
* to objects in the dataset.
|
|
87
|
+
*/
|
|
88
|
+
export async function proposalsToObjectChangeset(crID, hasSubregisters, proposals, itemData, newItemData) {
|
|
89
|
+
const cs = {};
|
|
90
|
+
for (const [itemPath, proposal] of Object.entries(proposals)) {
|
|
91
|
+
//const originalItem: RegisterItem<any> | undefined = (itemData[itemPath] ?? undefined);
|
|
92
|
+
const itemRef = itemPathToItemRef(hasSubregisters, itemPath);
|
|
93
|
+
if (proposal.type !== 'addition') {
|
|
94
|
+
if (itemData[itemPath] === undefined) {
|
|
95
|
+
console.error("Unable to convert proposals to object changeset: original item data is missing", itemPath);
|
|
96
|
+
throw new Error("Unable to convert proposals to object changeset: original item data is missing");
|
|
97
|
+
}
|
|
98
|
+
if (proposal.type === 'amendment' && proposal.amendmentType === 'supersession') {
|
|
99
|
+
Object.assign(cs, await proposalToObjectChangeset(crID, proposal, itemRef, itemPath, itemData, newItemData));
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
Object.assign(cs, await proposalToObjectChangeset(crID, proposal, itemRef, itemPath, itemData, newItemData));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
Object.assign(cs, await proposalToObjectChangeset(crID, proposal, itemRef, itemPath, itemData, newItemData));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return cs;
|
|
110
|
+
}
|
|
111
|
+
// TODO: Refactor out the business logic of proposal approval.
|
|
112
|
+
/**
|
|
113
|
+
* Given a change proposal, returns applicable changes
|
|
114
|
+
* to objects in the dataset.
|
|
115
|
+
* Core logic of approving a proposal.
|
|
116
|
+
* Takes a proposal and extra options (depending on proposal type).
|
|
117
|
+
* Returns a Changeset containing register items at appropriate paths.
|
|
118
|
+
*/
|
|
119
|
+
async function proposalToObjectChangeset(crID, proposal, itemRef, itemPath, itemData, newItemData) {
|
|
120
|
+
let updatedItem;
|
|
121
|
+
const changeset = {};
|
|
122
|
+
const origItem = itemData[itemPath] ?? null;
|
|
123
|
+
const newItem = newItemData[itemPathInCR(itemPath, crID)] ?? null;
|
|
124
|
+
if (proposal.type !== 'addition') {
|
|
125
|
+
if (origItem === null) {
|
|
126
|
+
throw new Error("proposalToObjectChangeset() requires original item data for non-additions");
|
|
127
|
+
}
|
|
128
|
+
updatedItem = { ...origItem };
|
|
129
|
+
switch (proposal.type) {
|
|
130
|
+
case 'clarification':
|
|
131
|
+
if (newItem === null) {
|
|
132
|
+
throw new Error("proposalToObjectChangeset() requires new item data for clarifications");
|
|
133
|
+
}
|
|
134
|
+
//const clarification = proposal as Clarification;
|
|
135
|
+
updatedItem.data = newItem.data; //clarification.payload;
|
|
136
|
+
break;
|
|
137
|
+
case 'amendment':
|
|
138
|
+
const amendment = proposal;
|
|
139
|
+
updatedItem.amendedInCR = crID;
|
|
140
|
+
switch (amendment.amendmentType) {
|
|
141
|
+
case 'retirement':
|
|
142
|
+
updatedItem.status = 'retired';
|
|
143
|
+
break;
|
|
144
|
+
case 'invalidation':
|
|
145
|
+
updatedItem.status = 'invalid';
|
|
146
|
+
break;
|
|
147
|
+
case 'supersession':
|
|
148
|
+
const supersession = proposal;
|
|
149
|
+
updatedItem.status = 'superseded';
|
|
150
|
+
updatedItem.supersededBy = supersession.supersedingItemIDs.map(itemID => ({
|
|
151
|
+
itemID,
|
|
152
|
+
classID: itemRef.classID,
|
|
153
|
+
subregisterID: itemRef.subregisterID,
|
|
154
|
+
}));
|
|
155
|
+
for (const supersedingItemPath of updatedItem.supersededBy.map(ip => itemRefToItemPath(ip))) {
|
|
156
|
+
const supersedingItemData = itemData[supersedingItemPath];
|
|
157
|
+
if (supersedingItemData) {
|
|
158
|
+
changeset[supersedingItemPath] = {
|
|
159
|
+
oldValue: supersedingItemData,
|
|
160
|
+
newValue: {
|
|
161
|
+
...supersedingItemData,
|
|
162
|
+
supersedes: [...(supersedingItemData.supersedes ?? []), itemRef],
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
if (newItem === null) {
|
|
174
|
+
throw new Error("proposalToObjectChangeset() requires new item data for additions");
|
|
175
|
+
}
|
|
176
|
+
updatedItem = {
|
|
177
|
+
id: itemRef.itemID,
|
|
178
|
+
data: newItem.data,
|
|
179
|
+
status: 'valid',
|
|
180
|
+
dateAccepted: new Date(),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
changeset[itemPath] = {
|
|
184
|
+
oldValue: origItem,
|
|
185
|
+
newValue: updatedItem,
|
|
186
|
+
};
|
|
187
|
+
return changeset;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=objectChangeset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objectChangeset.js","sourceRoot":"","sources":["../../../src/views/change-request/objectChangeset.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EACL,KAAK,GAIN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGpG,iEAAiE;AACjE,MAAM,UAAU,oBAAoB,CAClC,EAAU,EACV,aAAqB,EACrB,eAAgC,EAChC,4BAAoC;IAGpC,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;IAC/B,MAAM,EAAE,GAAY;QAClB,EAAE;QACF,WAAW;QACX,UAAU,EAAE,WAAW;QACvB,aAAa;QACb,sCAAsC,EAAE,4BAA4B;QACpE,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,eAAe,EAAE,eAAgB,CAAC,EAAE;KACrC,CAAC;IACF,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO;QACL,CAAC,YAAY,CAAC,EAAE;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,EAAE;SACb;KACF,CAAA;AACH,CAAC;AAGD;;;GAGG;AACH,MAAM,UAAU,uBAAuB;AACrC;;GAEG;AACH,EAAuF;AAEvF;;;;GAIG;AACH,aAAoD;AAEpD;;;GAGG;AACH,WAA8C,EAAE;IAEhD,MAAM,SAAS,GAAoB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QAChE,yBAAyB;QACzB,IAAI,QAAQ,KAAK,IAAI,EAAE;YACrB,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;SAC/B;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC7B,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAC3B;QACD,uBAAuB;QACvB,IAAI,QAAQ,EAAE,IAAI,KAAK,UAAU,IAAI,QAAQ,EAAE,IAAI,KAAK,eAAe,EAAE;YACvE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,gBAAgB,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE;gBAClE,OAAO,CAAC,KAAK,CAAC,gFAAgF,EAAE,QAAQ,CAAC,CAAC;gBAC1G,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;aACnG;YACD,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;gBACzC,sCAAsC;gBACtC,4DAA4D;gBAC5D,QAAQ,EAAE,gBAAgB;aAC3B,CAAC;SACH;aAAM;YACL,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;gBACzC,sCAAsC;gBACtC,4DAA4D;gBAC5D,QAAQ,EAAE,IAAI;aACf,CAAC;SACH;KACF;IACD,sBAAsB;IACtB,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC,SAAS,CAAC,MAAM,CAAC,GAAG;QAClB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE;KAC7D,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC;AAGD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAAY,EACZ,eAAwB,EACxB,SAAqC,EACrC,QAAkD,EAClD,WAAqD;IAErD,MAAM,EAAE,GAAoB,EAAE,CAAC;IAE/B,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QAC5D,wFAAwF;QACxF,MAAM,OAAO,GAAG,iBAAiB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAE7D,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;YAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE;gBACpC,OAAO,CAAC,KAAK,CAAC,gFAAgF,EAAE,QAAQ,CAAC,CAAC;gBAC1G,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;aACnG;YACD,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,aAAa,KAAK,cAAc,EAAE;gBAC9E,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,yBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;aAC9G;iBAAM;gBACL,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,yBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;aAC9G;SACF;aAAM;YACL,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,yBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;SAC9G;KACF;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,8DAA8D;AAC9D;;;;;;GAMG;AACH,KAAK,UAAU,yBAAyB,CACtC,IAAY,EACZ,QAAwB,EACxB,OAA8B,EAC9B,QAAgB,EAChB,QAAkD,EAClD,WAAqD;IAErD,IAAI,WAA8B,CAAC;IACnC,MAAM,SAAS,GAAyC,EAAE,CAAC;IAE3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;IAElE,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;QAChC,IAAI,QAAQ,KAAK,IAAI,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;SAC9F;QAED,WAAW,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAE9B,QAAQ,QAAQ,CAAC,IAAI,EAAE;YACrB,KAAK,eAAe;gBAClB,IAAI,OAAO,KAAK,IAAI,EAAE;oBACpB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;iBAC1F;gBACD,kDAAkD;gBAClD,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA,CAAC,wBAAwB;gBACxD,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,SAAS,GAAG,QAAqB,CAAC;gBACxC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;gBAE/B,QAAQ,SAAS,CAAC,aAAa,EAAE;oBAC/B,KAAK,YAAY;wBACf,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC;wBAC/B,MAAM;oBACR,KAAK,cAAc;wBACjB,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC;wBAC/B,MAAM;oBACR,KAAK,cAAc;wBACjB,MAAM,YAAY,GAAG,QAAwB,CAAC;wBAC9C,WAAW,CAAC,MAAM,GAAG,YAAY,CAAC;wBAClC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;4BACxE,MAAM;4BACN,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,aAAa,EAAE,OAAO,CAAC,aAAa;yBACrC,CAAC,CAAC,CAAC;wBACJ,KAAK,MAAM,mBAAmB,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE;4BAC3F,MAAM,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;4BAC1D,IAAI,mBAAmB,EAAE;gCACvB,SAAS,CAAC,mBAAmB,CAAC,GAAG;oCAC/B,QAAQ,EAAE,mBAAmB;oCAC7B,QAAQ,EAAE;wCACR,GAAG,mBAAmB;wCACtB,UAAU,EAAE,CAAE,GAAG,CAAC,mBAAmB,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,OAAO,CAAE;qCACnE;iCACF,CAAC;6BACH;yBACF;wBACD,MAAM;iBACT;gBACD,MAAM;SACT;KACF;SAAM;QACL,IAAI,OAAO,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;SACrF;QACD,WAAW,GAAG;YACZ,EAAE,EAAE,OAAO,CAAC,MAAM;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,IAAI,IAAI,EAAE;SACzB,CAAC;KACH;IAED,SAAS,CAAC,QAAQ,CAAC,GAAG;QACpB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,WAAW;KACtB,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import type { Change, Changeset } from '@riboseinc/paneron-extension-kit/types/changes';\nimport type { ObjectChangeset } from '@riboseinc/paneron-extension-kit/types/objects';\nimport type {\n InternalItemReference,\n RegisterItem,\n ChangeRequest,\n ChangeProposal,\n Amendment,\n Supersession,\n} from '../../types';\nimport { isRegisterItem } from '../../types';\nimport type { Version as RegisterVersion } from '../../types/register';\nimport {\n State,\n type Drafted,\n type ReturnedForClarificationByManager,\n type ReturnedForClarificationByControlBody,\n} from '../../types/cr';\nimport { crIDToCRPath, itemPathInCR, itemPathToItemRef, itemRefToItemPath } from '../itemPathUtils';\n\n\n/** Takes a justification and ID, returns an object changeset. */\nexport function newCRObjectChangeset(\n id: string,\n justification: string,\n registerVersion: RegisterVersion,\n stakeholderGitServerUsername: string,\n): ObjectChangeset {\n\n const timeStarted = new Date();\n const cr: Drafted = {\n id,\n timeStarted,\n timeEdited: timeStarted,\n justification,\n submittingStakeholderGitServerUsername: stakeholderGitServerUsername,\n items: {},\n state: State.DRAFT,\n registerVersion: registerVersion!.id,\n };\n const crObjectPath = crIDToCRPath(id);\n return {\n [crObjectPath]: {\n oldValue: null,\n newValue: cr,\n },\n }\n}\n\n\n/**\n * Returns an object changeset to update CR with new given proposal items.\n * Only applicable to CR at draft edit stage.\n */\nexport function updateCRObjectChangeset(\n /**\n * Change request data.\n */\n cr: Drafted | ReturnedForClarificationByManager | ReturnedForClarificationByControlBody,\n\n /**\n * Proposals by item path.\n * Will be merged with those already existing in `cr`.\n * If a proposal is undefined, it will be removed.\n */\n proposalItems: Record<string, ChangeProposal | null>,\n\n /**\n * New item data must be provided for additions and clarifications,\n * keyed by item path.\n */\n itemData: Record<string, RegisterItem<any>> = {},\n): ObjectChangeset {\n const changeset: ObjectChangeset = {};\n const newItems = { ...cr.items };\n for (const [itemPath, proposal] of Object.entries(proposalItems)) {\n // Update proposals on CR\n if (proposal !== null) {\n newItems[itemPath] = proposal;\n } else if (newItems[itemPath]) {\n delete newItems[itemPath];\n }\n // Add/remove item data\n if (proposal?.type === 'addition' || proposal?.type === 'clarification') {\n const proposedItemData = itemData[itemPath];\n if (proposedItemData === null || !isRegisterItem(proposedItemData)) {\n console.error(\"Unable to convert proposals to object changeset: original item data is missing\", itemPath);\n throw new Error(\"Unable to convert proposals to object changeset: original item data is missing\");\n }\n changeset[itemPathInCR(itemPath, cr.id)] = {\n // When editing a draft, we don’t care\n // about overwriting proposed item data so we omit oldValue.\n newValue: proposedItemData,\n };\n } else {\n changeset[itemPathInCR(itemPath, cr.id)] = {\n // When editing a draft, we don’t care\n // about overwriting proposed item data so we omit oldValue.\n newValue: null,\n };\n }\n }\n // Update main CR data\n const crPath = crIDToCRPath(cr.id);\n changeset[crPath] = {\n oldValue: cr,\n newValue: { ...cr, items: newItems, timeEdited: new Date() },\n };\n return changeset;\n}\n\n\n/**\n * Given change proposals, returns applicable changes\n * to objects in the dataset.\n */\nexport async function proposalsToObjectChangeset(\n crID: string,\n hasSubregisters: boolean,\n proposals: ChangeRequest[\"proposals\"],\n itemData: Record<string, RegisterItem<any> | null>,\n newItemData: Record<string, RegisterItem<any> | null>,\n): Promise<ObjectChangeset> {\n const cs: ObjectChangeset = {};\n\n for (const [itemPath, proposal] of Object.entries(proposals)) {\n //const originalItem: RegisterItem<any> | undefined = (itemData[itemPath] ?? undefined);\n const itemRef = itemPathToItemRef(hasSubregisters, itemPath);\n\n if (proposal.type !== 'addition') {\n if (itemData[itemPath] === undefined) {\n console.error(\"Unable to convert proposals to object changeset: original item data is missing\", itemPath);\n throw new Error(\"Unable to convert proposals to object changeset: original item data is missing\");\n }\n if (proposal.type === 'amendment' && proposal.amendmentType === 'supersession') {\n Object.assign(cs, await proposalToObjectChangeset(crID, proposal, itemRef, itemPath, itemData, newItemData));\n } else {\n Object.assign(cs, await proposalToObjectChangeset(crID, proposal, itemRef, itemPath, itemData, newItemData));\n }\n } else {\n Object.assign(cs, await proposalToObjectChangeset(crID, proposal, itemRef, itemPath, itemData, newItemData));\n }\n }\n\n return cs;\n}\n\n// TODO: Refactor out the business logic of proposal approval.\n/**\n * Given a change proposal, returns applicable changes\n * to objects in the dataset.\n * Core logic of approving a proposal.\n * Takes a proposal and extra options (depending on proposal type).\n * Returns a Changeset containing register items at appropriate paths.\n */\nasync function proposalToObjectChangeset(\n crID: string,\n proposal: ChangeProposal,\n itemRef: InternalItemReference,\n itemPath: string,\n itemData: Record<string, RegisterItem<any> | null>,\n newItemData: Record<string, RegisterItem<any> | null>,\n): Promise<Changeset<Change<RegisterItem<any>>>> {\n let updatedItem: RegisterItem<any>;\n const changeset: Changeset<Change<RegisterItem<any>>> = {};\n\n const origItem = itemData[itemPath] ?? null;\n const newItem = newItemData[itemPathInCR(itemPath, crID)] ?? null;\n\n if (proposal.type !== 'addition') {\n if (origItem === null) {\n throw new Error(\"proposalToObjectChangeset() requires original item data for non-additions\");\n }\n\n updatedItem = { ...origItem };\n\n switch (proposal.type) {\n case 'clarification':\n if (newItem === null) {\n throw new Error(\"proposalToObjectChangeset() requires new item data for clarifications\");\n }\n //const clarification = proposal as Clarification;\n updatedItem.data = newItem.data //clarification.payload;\n break;\n case 'amendment':\n const amendment = proposal as Amendment;\n updatedItem.amendedInCR = crID;\n\n switch (amendment.amendmentType) {\n case 'retirement':\n updatedItem.status = 'retired';\n break;\n case 'invalidation':\n updatedItem.status = 'invalid';\n break;\n case 'supersession':\n const supersession = proposal as Supersession;\n updatedItem.status = 'superseded';\n updatedItem.supersededBy = supersession.supersedingItemIDs.map(itemID => ({\n itemID,\n classID: itemRef.classID,\n subregisterID: itemRef.subregisterID,\n }));\n for (const supersedingItemPath of updatedItem.supersededBy.map(ip => itemRefToItemPath(ip))) {\n const supersedingItemData = itemData[supersedingItemPath];\n if (supersedingItemData) {\n changeset[supersedingItemPath] = {\n oldValue: supersedingItemData,\n newValue: {\n ...supersedingItemData,\n supersedes: [ ...(supersedingItemData.supersedes ?? []), itemRef ],\n },\n };\n }\n }\n break;\n }\n break;\n }\n } else {\n if (newItem === null) {\n throw new Error(\"proposalToObjectChangeset() requires new item data for additions\");\n }\n updatedItem = {\n id: itemRef.itemID,\n data: newItem.data,\n status: 'valid',\n dateAccepted: new Date(),\n };\n }\n\n changeset[itemPath] = {\n oldValue: origItem,\n newValue: updatedItem,\n };\n\n return changeset;\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// /** @jsx jsx */
|
|
3
|
+
// /** @jsxFrag React.Fragment */
|
|
4
|
+
//
|
|
5
|
+
//
|
|
6
|
+
// import React from 'react';
|
|
7
|
+
//
|
|
8
|
+
// import { jsx, css } from '@emotion/react';
|
|
9
|
+
//
|
|
10
|
+
// import {
|
|
11
|
+
// FormGroup,
|
|
12
|
+
// InputGroup,
|
|
13
|
+
// NonIdealState,
|
|
14
|
+
// HTMLSelect,
|
|
15
|
+
// H4,
|
|
16
|
+
// } from '@blueprintjs/core';
|
|
17
|
+
//
|
|
18
|
+
// import useItemClassConfig from '../../hooks/useItemClassConfig';
|
|
19
|
+
//
|
|
20
|
+
// import type {
|
|
21
|
+
// ChangeProposal,
|
|
22
|
+
// Payload,
|
|
23
|
+
// InternalItemReference,
|
|
24
|
+
// } from '../../../types';
|
|
25
|
+
//
|
|
26
|
+
// import { PROPOSAL_TYPES } from '../../../types';
|
|
27
|
+
//
|
|
28
|
+
//
|
|
29
|
+
// const ProposalDetails: React.FC<{
|
|
30
|
+
// itemRef: InternalItemReference
|
|
31
|
+
// proposal: ChangeProposal
|
|
32
|
+
//
|
|
33
|
+
// existingItemData?: Payload
|
|
34
|
+
//
|
|
35
|
+
// onAccept?: (itemID: string, clsID: string) => void
|
|
36
|
+
// onChange?: (val: ChangeProposal) => void
|
|
37
|
+
// onDelete?: () => void
|
|
38
|
+
// }> = function ({
|
|
39
|
+
// itemRef,
|
|
40
|
+
// proposal,
|
|
41
|
+
// onChange,
|
|
42
|
+
// existingItemData,
|
|
43
|
+
// }) {
|
|
44
|
+
// const { value: classConfig } = useItemClassConfig(itemRef.classID ?? 'NONEXISTENT_CLASS_ID');
|
|
45
|
+
// const itemClass = classConfig;
|
|
46
|
+
//
|
|
47
|
+
// let itemView: JSX.Element;
|
|
48
|
+
// let proposalProperties: JSX.Element | null;
|
|
49
|
+
//
|
|
50
|
+
// if (proposal.type === 'amendment') {
|
|
51
|
+
// proposalProperties = (
|
|
52
|
+
// <FormGroup inline label="Supersede with:">
|
|
53
|
+
// <InputGroup
|
|
54
|
+
// value={proposal.amendmentType === 'supersession' ? proposal.supersedingItemID : ''}
|
|
55
|
+
// disabled={!onChange}
|
|
56
|
+
// placeholder="Item ID"
|
|
57
|
+
// onChange={onChange
|
|
58
|
+
// ? (evt: React.FormEvent<HTMLInputElement>) => {
|
|
59
|
+
// if (!onChange) { return; }
|
|
60
|
+
// const itemID = evt.currentTarget.value;
|
|
61
|
+
// if (itemID.trim() === '') {
|
|
62
|
+
// const newVal = update(proposal, { $unset: ['supersedingItemID'] });
|
|
63
|
+
// onChange({ ...newVal, amendmentType: 'retirement' });
|
|
64
|
+
// } else {
|
|
65
|
+
// onChange({ ...proposal, amendmentType: 'supersession', supersedingItemID: itemID });
|
|
66
|
+
// }
|
|
67
|
+
// }
|
|
68
|
+
// : undefined}/>
|
|
69
|
+
// </FormGroup>
|
|
70
|
+
// );
|
|
71
|
+
// } else {
|
|
72
|
+
// proposalProperties = null;
|
|
73
|
+
// }
|
|
74
|
+
//
|
|
75
|
+
// const itemData: Payload | undefined = proposal.type === 'addition'
|
|
76
|
+
// ? proposal.payload
|
|
77
|
+
// : existingItemData;
|
|
78
|
+
//
|
|
79
|
+
// if (itemData === undefined || !itemClass) {
|
|
80
|
+
// itemView = <NonIdealState icon="heart-broken" title="Unable to display this item" />;
|
|
81
|
+
// } else if (onChange && proposal.type !== 'amendment') {
|
|
82
|
+
// const EditView = itemClass.views.editView;// as ItemEditView<any>;
|
|
83
|
+
// itemView = <EditView
|
|
84
|
+
// itemRef={itemRef}
|
|
85
|
+
// itemData={itemData}
|
|
86
|
+
// onChange={onChange
|
|
87
|
+
// ? (payload) => onChange ? onChange({ ...proposal, payload }) : void 0
|
|
88
|
+
// : undefined} />;
|
|
89
|
+
// } else {
|
|
90
|
+
// const DetailView = itemClass.views.detailView ?? itemClass!.views.editView;// as ItemDetailView<any>;
|
|
91
|
+
// itemView = <DetailView
|
|
92
|
+
// itemRef={itemRef}
|
|
93
|
+
// itemData={itemData} />;
|
|
94
|
+
// }
|
|
95
|
+
//
|
|
96
|
+
// const canChangeProposalType = proposal.type !== 'addition';
|
|
97
|
+
//
|
|
98
|
+
// function handleTypeChange(type: string) {
|
|
99
|
+
// const pt = type as typeof PROPOSAL_TYPES[number];
|
|
100
|
+
//
|
|
101
|
+
// if (PROPOSAL_TYPES.indexOf(pt) < 0) { return; }
|
|
102
|
+
// if (!onChange || !canChangeProposalType || pt === 'addition' || existingItemData === undefined) { return; }
|
|
103
|
+
//
|
|
104
|
+
// if (pt === 'amendment') {
|
|
105
|
+
// onChange(update(proposal, {
|
|
106
|
+
// type: { $set: pt },
|
|
107
|
+
// amendmentType: { $set: 'retirement' },
|
|
108
|
+
// $unset: ['payload'],
|
|
109
|
+
// }));
|
|
110
|
+
// } else {
|
|
111
|
+
// onChange(update(proposal, {
|
|
112
|
+
// type: { $set: pt },
|
|
113
|
+
// payload: existingItemData,
|
|
114
|
+
// }));
|
|
115
|
+
// }
|
|
116
|
+
// }
|
|
117
|
+
//
|
|
118
|
+
// return (
|
|
119
|
+
// <div css={css`flex: 1; display: flex; flex-flow: column nowrap;`}>
|
|
120
|
+
// <div css={css`flex-shrink: 0; display: flex; flex-flow: row nowrap; align-items: center; margin-bottom: 1rem;`}>
|
|
121
|
+
// <HTMLSelect
|
|
122
|
+
// options={PROPOSAL_TYPES.map(pt => ({ value: pt, label: pt }))}
|
|
123
|
+
// //iconProps={{ icon: PROPOSAL_ICON[proposal.type] }}
|
|
124
|
+
// value={proposal.type}
|
|
125
|
+
// disabled={!onChange || !canChangeProposalType || existingItemData === undefined}
|
|
126
|
+
// onChange={(onChange && canChangeProposalType && existingItemData !== undefined)
|
|
127
|
+
// ? (evt) => handleTypeChange(evt.currentTarget.value)
|
|
128
|
+
// : undefined} />
|
|
129
|
+
//  
|
|
130
|
+
// of a
|
|
131
|
+
//  
|
|
132
|
+
// <H4 css={css`margin: 0;`}>{classConfig?.meta.title ?? 'unknown class'}</H4>
|
|
133
|
+
// {proposalProperties}
|
|
134
|
+
// </div>
|
|
135
|
+
//
|
|
136
|
+
// <div css={css`flex: 1; overflow-y: auto;`}>
|
|
137
|
+
// {itemView}
|
|
138
|
+
// </div>
|
|
139
|
+
// </div>
|
|
140
|
+
// );
|
|
141
|
+
// };
|
|
142
|
+
//
|
|
143
|
+
// export default ProposalDetails;
|
|
144
|
+
//# sourceMappingURL=Proposal.js.map
|