@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,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.initialHook = exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* An (abstract) hook that wraps React’s useReducer hook and handles storing and loading reducer state
|
|
12
|
+
* using provided functions.
|
|
13
|
+
*/
|
|
14
|
+
const DEFAULT_DEBOUNCE_DELAY = 200;
|
|
15
|
+
const LOAD_STATE_ACTION_TYPE = 'loadedState';
|
|
16
|
+
/**
|
|
17
|
+
* Creates a reducer that handles a special `loadedState` action,
|
|
18
|
+
* relevant to persistent state reducer, in addition to any other
|
|
19
|
+
* action handled by component-specific reducer function passed in.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
function reducerFactory(reducer) {
|
|
23
|
+
return (prevState, action) => {
|
|
24
|
+
switch (action.type) {
|
|
25
|
+
case LOAD_STATE_ACTION_TYPE:
|
|
26
|
+
return action.payload;
|
|
27
|
+
|
|
28
|
+
default:
|
|
29
|
+
return reducer(prevState, action);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A reducer that persists each new state,
|
|
35
|
+
* and attempts to load persisted state when component is mounted.
|
|
36
|
+
*
|
|
37
|
+
* During the initial load, `initialized` is set to false.
|
|
38
|
+
*
|
|
39
|
+
* `storeState` is called on each change of state but debounced.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
function usePersistentStateReducer(storeState, loadState, ...args) {
|
|
44
|
+
const [storageKey, storageDebounceMS, validator, reducer, initialState, initializer] = args;
|
|
45
|
+
const debounceDelay = storageDebounceMS !== null && storageDebounceMS !== void 0 ? storageDebounceMS : DEFAULT_DEBOUNCE_DELAY;
|
|
46
|
+
const effectiveReducer = reducerFactory(reducer);
|
|
47
|
+
const [initialized, setInitialized] = (0, _react.useState)(false);
|
|
48
|
+
const [state, dispatch] = initializer ? (0, _react.useReducer)(effectiveReducer, initialState, initializer) : (0, _react.useReducer)(effectiveReducer, initialState);
|
|
49
|
+
(0, _react.useEffect)(() => {
|
|
50
|
+
setInitialized(false);
|
|
51
|
+
|
|
52
|
+
(async () => {
|
|
53
|
+
const loadedState = await loadState(storageKey);
|
|
54
|
+
let effectiveState;
|
|
55
|
+
|
|
56
|
+
if (loadedState && validator) {
|
|
57
|
+
if (validator(loadedState)) {
|
|
58
|
+
effectiveState = loadedState;
|
|
59
|
+
} else {
|
|
60
|
+
effectiveState = initialState;
|
|
61
|
+
}
|
|
62
|
+
} else {
|
|
63
|
+
effectiveState = loadedState !== null && loadedState !== void 0 ? loadedState : initialState;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
dispatch({
|
|
67
|
+
type: LOAD_STATE_ACTION_TYPE,
|
|
68
|
+
payload: effectiveState
|
|
69
|
+
});
|
|
70
|
+
setInitialized(true);
|
|
71
|
+
})();
|
|
72
|
+
}, [storageKey]);
|
|
73
|
+
(0, _react.useEffect)(() => {
|
|
74
|
+
if (initialized === true) {
|
|
75
|
+
let timeout = setTimeout(() => {
|
|
76
|
+
storeState(storageKey, state);
|
|
77
|
+
}, debounceDelay);
|
|
78
|
+
return () => clearTimeout(timeout);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return () => void 0;
|
|
82
|
+
}, [storageKey, state]);
|
|
83
|
+
return [state, dispatch, initialized];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
var _default = usePersistentStateReducer;
|
|
87
|
+
exports.default = _default;
|
|
88
|
+
|
|
89
|
+
const initialHook = () => [{}, () => ({}), false];
|
|
90
|
+
|
|
91
|
+
exports.initialHook = initialHook;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePersistentStateReducer.js","sourceRoot":"","sources":["../src/usePersistentStateReducer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIxD,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,MAAM,sBAAsB,GAAG,aAAsB,CAAC;AAwCtD;;;;GAIG;AACH,SAAS,cAAc,CACrB,OAAsB;IAEtB,OAAO,CAAC,SAAY,EAAE,MAA8B,EAAE,EAAE;QACtD,QAAQ,MAAM,CAAC,IAAI,EAAE;YACnB,KAAK,sBAAsB;gBACzB,OAAO,MAAM,CAAC,OAAO,CAAC;YACxB;gBACE,OAAO,OAAO,CAAC,SAAS,EAAE,MAAW,CAAC,CAAC;SAC1C;IACH,CAAC,CAAA;AACH,CAAC;AAGD;;;;;;;GAOG;AACH,SAAS,yBAAyB,CAChC,UAA8C,EAC9C,SAAkD,EAClD,GAAG,IAAkD;IAErD,MAAM,CAAC,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC;IAE5F,MAAM,aAAa,GAAG,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,sBAAsB,CAAC;IAElE,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEjD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,WAAW;QACnC,CAAC,CAAC,UAAU,CAAC,gBAAgB,EAAE,YAAY,EAAE,WAAW,CAAC;QACzD,CAAC,CAAC,UAAU,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,cAA6B,CAAC;YAClC,IAAI,WAAW,IAAI,SAAS,EAAE;gBAC5B,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE;oBAC1B,cAAc,GAAG,WAAW,CAAC;iBAC9B;qBAAM;oBACL,cAAc,GAAG,YAAY,CAAC;iBAC/B;aACF;iBAAM;gBACL,cAAc,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,YAAY,CAAC;aAC9C;YACD,QAAQ,CAAC;gBACP,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC;YACH,cAAc,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC,EAAE,aAAa,CAAC,CAAC;YAClB,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SACpC;QACD,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAExB,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC;AAGD,eAAe,yBAAyB,CAAC;AAGzC,MAAM,CAAC,MAAM,WAAW,GAAyC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC","sourcesContent":["/**\n * An (abstract) hook that wraps React’s useReducer hook and handles storing and loading reducer state\n * using provided functions.\n */\n\nimport { useReducer, useEffect, useState } from 'react';\nimport type { Reducer, Dispatch } from 'react';\n\n\nconst DEFAULT_DEBOUNCE_DELAY = 200;\n\nconst LOAD_STATE_ACTION_TYPE = 'loadedState' as const;\n\n\nexport interface BaseAction {\n type: string\n payload?: any\n}\n\n\n/** Action issued when previously stored state is loaded. */\nexport interface LoadStateAction<S> extends BaseAction {\n type: typeof LOAD_STATE_ACTION_TYPE\n payload?: S\n}\n\n\nexport type StateReducerHook<S, A extends BaseAction> =\n (\n reducer: Reducer<S, A>,\n initialState: S,\n initializer: ((initialState: S) => S) | null,\n ) => [state: S, dispatch: Dispatch<A>];\n\nexport type PersistentStateReducerHook<S, A extends BaseAction> =\n (\n /** Each component should specify a unique storage key. */\n storageKey: string,\n\n /**\n * Calls to store state will be debounced according to this delay\n * in case state change too often.\n */\n storageDebounceMS?: number,\n\n validateLoadedState?: (loadedValue: Partial<S> & any) => loadedValue is S,\n\n ...args: Parameters<StateReducerHook<S, A>>\n ) => [state: S, dispatch: Dispatch<A>, stateRecalled: boolean];\n\n\n/**\n * Creates a reducer that handles a special `loadedState` action,\n * relevant to persistent state reducer, in addition to any other\n * action handled by component-specific reducer function passed in.\n */\nfunction reducerFactory<S, A extends BaseAction>(\n reducer: Reducer<S, A>,\n): Reducer<S, A | LoadStateAction<S>> {\n return (prevState: S, action: A | LoadStateAction<S>) => {\n switch (action.type) {\n case LOAD_STATE_ACTION_TYPE:\n return action.payload;\n default:\n return reducer(prevState, action as A);\n }\n }\n}\n\n\n/**\n * A reducer that persists each new state,\n * and attempts to load persisted state when component is mounted.\n *\n * During the initial load, `initialized` is set to false.\n *\n * `storeState` is called on each change of state but debounced.\n */\nfunction usePersistentStateReducer<S, A extends BaseAction>(\n storeState: (key: string, newState: S) => void,\n loadState: (key: string) => Promise<S | undefined>,\n ...args: Parameters<PersistentStateReducerHook<S, A>>\n): [state: S, dispatch: Dispatch<A>, initialized: boolean] {\n const [storageKey, storageDebounceMS, validator, reducer, initialState, initializer] = args;\n\n const debounceDelay = storageDebounceMS ?? DEFAULT_DEBOUNCE_DELAY;\n\n const effectiveReducer = reducerFactory(reducer);\n\n const [initialized, setInitialized] = useState(false);\n const [state, dispatch] = initializer\n ? useReducer(effectiveReducer, initialState, initializer)\n : useReducer(effectiveReducer, initialState);\n\n useEffect(() => {\n setInitialized(false);\n (async () => {\n const loadedState = await loadState(storageKey);\n let effectiveState: S | undefined;\n if (loadedState && validator) {\n if (validator(loadedState)) {\n effectiveState = loadedState;\n } else {\n effectiveState = initialState;\n }\n } else {\n effectiveState = loadedState ?? initialState;\n }\n dispatch({\n type: LOAD_STATE_ACTION_TYPE,\n payload: effectiveState,\n });\n setInitialized(true);\n })();\n }, [storageKey]);\n\n useEffect(() => {\n if (initialized === true) {\n let timeout = setTimeout(() => {\n storeState(storageKey, state);\n }, debounceDelay);\n return () => clearTimeout(timeout);\n }\n return () => void 0;\n }, [storageKey, state]);\n\n return [state, dispatch, initialized];\n}\n\n\nexport default usePersistentStateReducer;\n\n\nexport const initialHook: PersistentStateReducerHook<any, any> = () => [{}, () => ({}), false];\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Dispatch } from 'react';
|
|
2
|
+
import { BaseAction, PersistentStateReducerHook, StateReducerHook } from './usePersistentStateReducer';
|
|
3
|
+
declare const UNDO_ACTION_TYPE: "undo";
|
|
4
|
+
declare const REDO_ACTION_TYPE: "redo";
|
|
5
|
+
declare const RESET_ACTION_TYPE: "reset";
|
|
6
|
+
export interface UndoAction extends BaseAction {
|
|
7
|
+
type: typeof UNDO_ACTION_TYPE;
|
|
8
|
+
}
|
|
9
|
+
export interface RedoAction extends BaseAction {
|
|
10
|
+
type: typeof REDO_ACTION_TYPE;
|
|
11
|
+
}
|
|
12
|
+
export interface ResetAction extends BaseAction {
|
|
13
|
+
type: typeof RESET_ACTION_TYPE;
|
|
14
|
+
}
|
|
15
|
+
export declare type TimeTravelAction = UndoAction | RedoAction | ResetAction;
|
|
16
|
+
interface Timeline<S> {
|
|
17
|
+
present: S;
|
|
18
|
+
past: S[];
|
|
19
|
+
future: S[];
|
|
20
|
+
}
|
|
21
|
+
declare type TimeTravelingPersistentStateReducerHookParams<S, A extends BaseAction> = [
|
|
22
|
+
/** How far back to allow the state to be rewound. */
|
|
23
|
+
maxHistorySteps: number,
|
|
24
|
+
/** Persistent reducer hook iplementation to delegate to. */
|
|
25
|
+
usePersistentReducer: PersistentStateReducerHook<Timeline<S>, A | TimeTravelAction>,
|
|
26
|
+
/** Each component should specify a unique storage key. */
|
|
27
|
+
storageKey: string,
|
|
28
|
+
/**
|
|
29
|
+
* Calls to store state will be debounced according to this delay
|
|
30
|
+
* in case state change too often.
|
|
31
|
+
*/
|
|
32
|
+
storageDebounceMS?: number,
|
|
33
|
+
validateLoadedState?: (loadedValue: any) => loadedValue is S,
|
|
34
|
+
...stateReducerHookArgs: Parameters<StateReducerHook<S, A>>
|
|
35
|
+
];
|
|
36
|
+
export declare type TimeTravelingPersistentStateReducerHook<S, A extends BaseAction> = (...args: TimeTravelingPersistentStateReducerHookParams<S, A>) => TimeTravelingPersistentStateReducerInterface<S, A>;
|
|
37
|
+
interface TimeTravelingPersistentStateReducerInterface<S, A extends BaseAction> {
|
|
38
|
+
timeline: Timeline<S>;
|
|
39
|
+
state: S;
|
|
40
|
+
dispatch: Dispatch<A>;
|
|
41
|
+
undo: () => void;
|
|
42
|
+
redo: () => void;
|
|
43
|
+
reset: () => void;
|
|
44
|
+
initialized: boolean;
|
|
45
|
+
}
|
|
46
|
+
export declare function useTimeTravelingPersistentStateReducer<S, A extends BaseAction>(...args: TimeTravelingPersistentStateReducerHookParams<S, A>): TimeTravelingPersistentStateReducerInterface<S, A>;
|
|
47
|
+
export default useTimeTravelingPersistentStateReducer;
|
|
48
|
+
export declare const initialHook: TimeTravelingPersistentStateReducerHook<any, any>;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useTimeTravelingPersistentStateReducer = useTimeTravelingPersistentStateReducer;
|
|
7
|
+
exports.initialHook = exports.default = void 0;
|
|
8
|
+
|
|
9
|
+
var _immer = _interopRequireDefault(require("immer"));
|
|
10
|
+
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
|
|
13
|
+
const UNDO_ACTION_TYPE = 'undo';
|
|
14
|
+
const REDO_ACTION_TYPE = 'redo';
|
|
15
|
+
const RESET_ACTION_TYPE = 'reset';
|
|
16
|
+
/* Supports persistent state reducer features, but also offers time travel through undo/redo/reset actions. */
|
|
17
|
+
|
|
18
|
+
function useTimeTravelingPersistentStateReducer(...args) {
|
|
19
|
+
const [maxHistorySteps, usePersistentReducer, storageKey, storageDebounceMS,, reducer, initialState] = args;
|
|
20
|
+
const timeline = {
|
|
21
|
+
past: [],
|
|
22
|
+
present: initialState,
|
|
23
|
+
future: []
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const proxiedReducer = (tl, action) => {
|
|
27
|
+
switch (action.type) {
|
|
28
|
+
case UNDO_ACTION_TYPE:
|
|
29
|
+
return _doUndo(tl);
|
|
30
|
+
|
|
31
|
+
case REDO_ACTION_TYPE:
|
|
32
|
+
return _doRedo(tl);
|
|
33
|
+
|
|
34
|
+
case RESET_ACTION_TYPE:
|
|
35
|
+
return _doReset(tl);
|
|
36
|
+
|
|
37
|
+
default:
|
|
38
|
+
const newState = (0, _immer.default)(tl.present, draft => reducer(draft, action));
|
|
39
|
+
return _addNewPresent(tl, newState, maxHistorySteps);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const [_timeline, _dispatch, _initialized] = usePersistentReducer(storageKey, storageDebounceMS, undefined, proxiedReducer, timeline, null);
|
|
44
|
+
return {
|
|
45
|
+
state: _timeline.present,
|
|
46
|
+
timeline: _timeline,
|
|
47
|
+
dispatch: _dispatch,
|
|
48
|
+
undo: () => _dispatch({
|
|
49
|
+
type: UNDO_ACTION_TYPE
|
|
50
|
+
}),
|
|
51
|
+
redo: () => _dispatch({
|
|
52
|
+
type: REDO_ACTION_TYPE
|
|
53
|
+
}),
|
|
54
|
+
reset: () => _dispatch({
|
|
55
|
+
type: RESET_ACTION_TYPE
|
|
56
|
+
}),
|
|
57
|
+
initialized: _initialized
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function _addNewPresent(timeline, newPresent, maxHistoryEntries) {
|
|
62
|
+
return (0, _immer.default)(timeline, draft => {
|
|
63
|
+
draft.past.push(draft.present); // TODO: apply maxHistoryEntries constraint here
|
|
64
|
+
|
|
65
|
+
draft.present = newPresent;
|
|
66
|
+
draft.future = [];
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function _doUndo(timeline) {
|
|
71
|
+
return (0, _immer.default)(timeline, draft => {
|
|
72
|
+
if (!draft.past.length) return;
|
|
73
|
+
const newPresent = draft.past.pop(); // TODO: validate restored past; abort and wipe further past if invalid.
|
|
74
|
+
|
|
75
|
+
draft.future.unshift(draft.present);
|
|
76
|
+
draft.present = newPresent;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function _doRedo(timeline) {
|
|
81
|
+
return (0, _immer.default)(timeline, draft => {
|
|
82
|
+
if (!draft.future.length) return;
|
|
83
|
+
const newPresent = draft.future.shift();
|
|
84
|
+
draft.past.push(draft.present);
|
|
85
|
+
draft.present = newPresent;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function _doReset(timeline) {
|
|
90
|
+
return (0, _immer.default)(timeline, draft => {
|
|
91
|
+
if (!draft.past.length) return;
|
|
92
|
+
const newPresent = draft.past.shift();
|
|
93
|
+
draft.future = [...draft.past, draft.present, ...draft.future];
|
|
94
|
+
draft.present = newPresent;
|
|
95
|
+
draft.past = [];
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
var _default = useTimeTravelingPersistentStateReducer;
|
|
100
|
+
exports.default = _default;
|
|
101
|
+
|
|
102
|
+
const initialHook = () => ({
|
|
103
|
+
timeline: {
|
|
104
|
+
present: {},
|
|
105
|
+
future: [],
|
|
106
|
+
past: []
|
|
107
|
+
},
|
|
108
|
+
state: {},
|
|
109
|
+
dispatch: () => ({}),
|
|
110
|
+
undo: () => void 0,
|
|
111
|
+
redo: () => void 0,
|
|
112
|
+
reset: () => void 0,
|
|
113
|
+
initialized: false
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
exports.initialHook = initialHook;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTimeTravelingPersistentStateReducer.js","sourceRoot":"","sources":["../src/useTimeTravelingPersistentStateReducer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAkB,MAAM,OAAO,CAAC;AAIvC,MAAM,gBAAgB,GAAG,MAAe,CAAC;AACzC,MAAM,gBAAgB,GAAG,MAAe,CAAC;AACzC,MAAM,iBAAiB,GAAG,OAAgB,CAAC;AAwD3C,8GAA8G;AAC9G,MAAM,UAAU,sCAAsC,CACpD,GAAG,IAAyD;IAE5D,MAAM,CAAC,eAAe,EAAE,oBAAoB,EAAE,UAAU,EAAE,iBAAiB,EAAE,AAAD,EAAG,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE9G,MAAM,QAAQ,GAAgB;QAC5B,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,EAAe,EAAE,MAA4B,EAAe,EAAE;QACpF,QAAQ,MAAM,CAAC,IAAI,EAAE;YACnB,KAAK,gBAAgB;gBACnB,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;YACrB,KAAK,gBAAgB;gBACnB,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;YACrB,KAAK,iBAAiB;gBACpB,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtB;gBACE,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAU,EAAE,MAAW,CAAa,CAAC,CAAC;gBAC9F,OAAO,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;SACxD;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,oBAAoB,CAC/D,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE5E,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,OAAO;QACxB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;QACjD,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;QACjD,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QACnD,WAAW,EAAE,YAAY;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAI,QAAqB,EAAE,UAAa,EAAE,iBAAyB;IACxF,OAAO,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;QAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,gDAAgD;QAChD,KAAK,CAAC,OAAO,GAAG,UAAsB,CAAC;QACvC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAI,QAAqB;IACvC,OAAO,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;YACpB,OAAO;QACT,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAc,CAAC;QAChD,wEAAwE;QACxE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAI,QAAqB;IACvC,OAAO,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;YACtB,OAAO;QACT,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,UAAsB,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAI,QAAqB;IACxC,OAAO,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;YACpB,OAAO;QACT,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/D,KAAK,CAAC,OAAO,GAAG,UAAsB,CAAC;QACvC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,eAAe,sCAAsC,CAAC;AAGtD,MAAM,CAAC,MAAM,WAAW,GAAsD,GAAG,EAAE,CAAC,CAAC;IACnF,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IAC/C,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACpB,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;IAClB,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;IAClB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;IACnB,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC","sourcesContent":["import produce, { Draft } from 'immer';\nimport { Dispatch } from 'react';\nimport { BaseAction, PersistentStateReducerHook, StateReducerHook } from './usePersistentStateReducer';\n\nconst UNDO_ACTION_TYPE = 'undo' as const;\nconst REDO_ACTION_TYPE = 'redo' as const;\nconst RESET_ACTION_TYPE = 'reset' as const;\n\nexport interface UndoAction extends BaseAction {\n type: typeof UNDO_ACTION_TYPE;\n}\n\nexport interface RedoAction extends BaseAction {\n type: typeof REDO_ACTION_TYPE;\n}\n\nexport interface ResetAction extends BaseAction {\n type: typeof RESET_ACTION_TYPE;\n}\n\nexport type TimeTravelAction = UndoAction | RedoAction | ResetAction;\ninterface Timeline<S> {\n present: S;\n past: S[];\n future: S[];\n}\ntype TimeTravelingPersistentStateReducerHookParams<S, A extends BaseAction> = [\n\n /** How far back to allow the state to be rewound. */\n maxHistorySteps: number,\n\n /** Persistent reducer hook iplementation to delegate to. */\n usePersistentReducer: PersistentStateReducerHook<Timeline<S>, A | TimeTravelAction>,\n\n /** Each component should specify a unique storage key. */\n storageKey: string,\n\n /**\n * Calls to store state will be debounced according to this delay\n * in case state change too often.\n */\n storageDebounceMS?: number,\n\n validateLoadedState?: (loadedValue: any) => loadedValue is S,\n\n ...stateReducerHookArgs: Parameters<StateReducerHook<S, A>>\n];\n\nexport type TimeTravelingPersistentStateReducerHook<S, A extends BaseAction> =\n (...args: TimeTravelingPersistentStateReducerHookParams<S, A>) =>\n TimeTravelingPersistentStateReducerInterface<S, A>;\n\ninterface TimeTravelingPersistentStateReducerInterface<S, A extends BaseAction> {\n timeline: Timeline<S>;\n state: S;\n dispatch: Dispatch<A>;\n undo: () => void;\n redo: () => void;\n reset: () => void;\n initialized: boolean;\n}\n\n/* Supports persistent state reducer features, but also offers time travel through undo/redo/reset actions. */\nexport function useTimeTravelingPersistentStateReducer<S, A extends BaseAction>(\n ...args: TimeTravelingPersistentStateReducerHookParams<S, A>\n): TimeTravelingPersistentStateReducerInterface<S, A> {\n const [maxHistorySteps, usePersistentReducer, storageKey, storageDebounceMS, , reducer, initialState,] = args;\n\n const timeline: Timeline<S> = {\n past: [],\n present: initialState,\n future: [],\n };\n\n const proxiedReducer = (tl: Timeline<S>, action: A | TimeTravelAction): Timeline<S> => {\n switch (action.type) {\n case UNDO_ACTION_TYPE:\n return _doUndo(tl);\n case REDO_ACTION_TYPE:\n return _doRedo(tl);\n case RESET_ACTION_TYPE:\n return _doReset(tl);\n default:\n const newState = produce(tl.present, (draft) => reducer(draft as S, action as A) as Draft<S>);\n return _addNewPresent(tl, newState, maxHistorySteps);\n }\n };\n\n const [_timeline, _dispatch, _initialized] = usePersistentReducer(\n storageKey, storageDebounceMS, undefined, proxiedReducer, timeline, null);\n\n return {\n state: _timeline.present,\n timeline: _timeline,\n dispatch: _dispatch,\n undo: () => _dispatch({ type: UNDO_ACTION_TYPE }),\n redo: () => _dispatch({ type: REDO_ACTION_TYPE }),\n reset: () => _dispatch({ type: RESET_ACTION_TYPE }),\n initialized: _initialized,\n };\n}\n\nfunction _addNewPresent<S>(timeline: Timeline<S>, newPresent: S, maxHistoryEntries: number) {\n return produce(timeline, draft => {\n draft.past.push(draft.present);\n // TODO: apply maxHistoryEntries constraint here\n draft.present = newPresent as Draft<S>;\n draft.future = [];\n });\n}\n\nfunction _doUndo<S>(timeline: Timeline<S>) {\n return produce(timeline, draft => {\n if (!draft.past.length)\n return;\n const newPresent = draft.past.pop() as Draft<S>;\n // TODO: validate restored past; abort and wipe further past if invalid.\n draft.future.unshift(draft.present);\n draft.present = newPresent;\n });\n}\n\nfunction _doRedo<S>(timeline: Timeline<S>) {\n return produce(timeline, draft => {\n if (!draft.future.length)\n return;\n const newPresent = draft.future.shift();\n draft.past.push(draft.present);\n draft.present = newPresent as Draft<S>;\n });\n}\n\nfunction _doReset<S>(timeline: Timeline<S>) {\n return produce(timeline, draft => {\n if (!draft.past.length)\n return;\n const newPresent = draft.past.shift();\n draft.future = [...draft.past, draft.present, ...draft.future];\n draft.present = newPresent as Draft<S>;\n draft.past = [];\n });\n}\n\nexport default useTimeTravelingPersistentStateReducer;\n\n\nexport const initialHook: TimeTravelingPersistentStateReducerHook<any, any> = () => ({\n timeline: { present: {}, future: [], past: [] },\n state: {},\n dispatch: () => ({}),\n undo: () => void 0,\n redo: () => void 0,\n reset: () => void 0,\n initialized: false,\n});\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Progress } from './types/progress';
|
|
2
|
+
export declare function stripLeadingSlash(fp: string): string;
|
|
3
|
+
export declare function progressToValue(progress: Progress): number;
|
|
4
|
+
export declare const encoder: TextEncoder;
|
|
5
|
+
export declare const decoder: TextDecoder;
|
|
6
|
+
export declare type OnlyJSON<T> = T extends string | number | boolean | null ? T : T extends Function ? never : T extends object ? {
|
|
7
|
+
[K in keyof T]: OnlyJSON<T[K]>;
|
|
8
|
+
} : never;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.stripLeadingSlash = stripLeadingSlash;
|
|
7
|
+
exports.progressToValue = progressToValue;
|
|
8
|
+
exports.decoder = exports.encoder = void 0;
|
|
9
|
+
|
|
10
|
+
function stripLeadingSlash(fp) {
|
|
11
|
+
return fp.replace(/^\//, '');
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function progressToValue(progress) {
|
|
15
|
+
return 1 / progress.total * progress.loaded;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const encoder = new TextEncoder();
|
|
19
|
+
exports.encoder = encoder;
|
|
20
|
+
const decoder = new TextDecoder('utf-8');
|
|
21
|
+
exports.decoder = decoder;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAkB;IAChD,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAEzC,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC","sourcesContent":["import type { Progress } from './types/progress';\n\n\nexport function stripLeadingSlash(fp: string): string {\n return fp.replace(/^\\//, '');\n}\n\nexport function progressToValue(progress: Progress): number {\n return 1 / progress.total * progress.loaded;\n}\n\nexport const encoder = new TextEncoder();\n\nexport const decoder = new TextDecoder('utf-8');\n\nexport type OnlyJSON<T> =\n T extends string | number | boolean | null\n ? T\n : T extends Function\n ? never\n : T extends object\n ? { [K in keyof T]: OnlyJSON<T[K]> }\n : never;\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.ErrorState = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _core = require("@blueprintjs/core");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
const ErrorState = function ({
|
|
15
|
+
technicalDetails,
|
|
16
|
+
error,
|
|
17
|
+
viewName
|
|
18
|
+
}) {
|
|
19
|
+
return _react.default.createElement(_core.NonIdealState, {
|
|
20
|
+
icon: "heart-broken",
|
|
21
|
+
title: "Ouch",
|
|
22
|
+
description: _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_core.Callout, {
|
|
23
|
+
style: {
|
|
24
|
+
textAlign: 'left'
|
|
25
|
+
},
|
|
26
|
+
intent: "primary"
|
|
27
|
+
}, _react.default.createElement("p", null, "We encountered an error in ", viewName || 'a', " view.", _react.default.createElement("br", null), "In some cases reloading or reopening Paneron should address this, but please let us know if this repeats.", _react.default.createElement("br", null), "A likely cause is an engineering oversight where a component of an extension or Paneron host application could enter a state that was not accounted for.")), technicalDetails || error ? _react.default.createElement(_core.Callout, {
|
|
28
|
+
style: {
|
|
29
|
+
textAlign: 'left',
|
|
30
|
+
transform: 'scale(0.9)'
|
|
31
|
+
},
|
|
32
|
+
title: "Technical details"
|
|
33
|
+
}, technicalDetails, error ? _react.default.createElement("pre", {
|
|
34
|
+
style: {
|
|
35
|
+
overflow: 'auto',
|
|
36
|
+
paddingBottom: '1em'
|
|
37
|
+
}
|
|
38
|
+
}, error || 'error information is unavailable') : null) : null)
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
exports.ErrorState = ErrorState;
|
|
43
|
+
var _default = ErrorState;
|
|
44
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorState.js","sourceRoot":"","sources":["../../src/widgets/ErrorState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAU3D,MAAM,CAAC,MAAM,UAAU,GAA8B,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAClG,OAAO,CACL,oBAAC,aAAa,IACZ,IAAI,EAAC,cAAc,EACnB,KAAK,EAAC,MAAM,EACZ,WAAW,EAAE;YACX,oBAAC,OAAO,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,EAAC,SAAS;gBACrD;;oBAC8B,QAAQ,IAAI,GAAG;;oBAC3C,+BAAM;;oBAGN,+BAAM;+KAIJ,CACI;YACT,gBAAgB,IAAI,KAAK;gBACxB,CAAC,CAAC,oBAAC,OAAO,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,KAAK,EAAC,mBAAmB;oBACxF,gBAAgB;oBAChB,KAAK;wBACJ,CAAC,CAAC,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,IACrD,KAAK,IAAI,kCAAkC,CACxC;wBACN,CAAC,CAAC,IAAI,CACA;gBACV,CAAC,CAAC,IAAI,CACP,GAAI,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import React from 'react';\nimport { Callout, NonIdealState } from '@blueprintjs/core';\n\n\n// TODO: Give suggestions to resolve (move from dataset view)\nexport interface ErrorStateProps {\n technicalDetails?: string | JSX.Element;\n error?: string;\n viewName?: string;\n}\n\nexport const ErrorState: React.FC<ErrorStateProps> = function ({ technicalDetails, error, viewName }) {\n return (\n <NonIdealState\n icon=\"heart-broken\"\n title=\"Ouch\"\n description={<>\n <Callout style={{ textAlign: 'left' }} intent=\"primary\">\n <p>\n We encountered an error in {viewName || 'a'} view.\n <br />\n In some cases reloading or reopening Paneron should address this,\n but please let us know if this repeats.\n <br />\n A likely cause is an engineering oversight\n where a component of an extension or Paneron host application\n could enter a state that was not accounted for.\n </p>\n </Callout>\n {technicalDetails || error\n ? <Callout style={{ textAlign: 'left', transform: 'scale(0.9)' }} title=\"Technical details\">\n {technicalDetails}\n {error\n ? <pre style={{ overflow: 'auto', paddingBottom: '1em' }}>\n {error || 'error information is unavailable'}\n </pre>\n : null}\n </Callout>\n : null}\n </>} />\n );\n};\n\nexport default ErrorState;\n"]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
/** @jsxFrag React.Fragment */
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { IconProps } from '@blueprintjs/core';
|
|
5
|
+
export interface GridData<P extends Record<string, any> = Record<never, never>> {
|
|
6
|
+
items: string[][];
|
|
7
|
+
selectedItem: string | null;
|
|
8
|
+
selectItem: (ref: string | null, extraData?: unknown) => void;
|
|
9
|
+
openItem?: (ref: string) => void;
|
|
10
|
+
cellWidth: number;
|
|
11
|
+
cellHeight: number;
|
|
12
|
+
padding: number;
|
|
13
|
+
extraData: P;
|
|
14
|
+
}
|
|
15
|
+
declare type ItemDataGetter<P extends Record<string, any> = Record<never, never>> = (width: number) => GridData<P> | null;
|
|
16
|
+
export interface CellProps<P extends Record<string, any> = Record<never, never>> {
|
|
17
|
+
itemRef: string;
|
|
18
|
+
isSelected: boolean;
|
|
19
|
+
onSelect?: (extraData?: unknown) => void;
|
|
20
|
+
onOpen?: () => void;
|
|
21
|
+
padding: number;
|
|
22
|
+
extraData: P;
|
|
23
|
+
}
|
|
24
|
+
declare function makeGrid<P extends Record<string, any> = Record<never, never>>(CellContents: React.FC<CellProps<P>>): React.FC<{
|
|
25
|
+
getGridData: ItemDataGetter<P>;
|
|
26
|
+
className?: string;
|
|
27
|
+
}>;
|
|
28
|
+
interface LabelledGridIconProps {
|
|
29
|
+
isSelected: boolean;
|
|
30
|
+
onSelect?: () => void;
|
|
31
|
+
onOpen?: () => void;
|
|
32
|
+
contentClassName?: string;
|
|
33
|
+
entityType?: {
|
|
34
|
+
iconProps?: IconProps;
|
|
35
|
+
name: string;
|
|
36
|
+
};
|
|
37
|
+
padding: number;
|
|
38
|
+
className?: string;
|
|
39
|
+
}
|
|
40
|
+
export declare const LabelledGridIcon: React.FC<LabelledGridIconProps>;
|
|
41
|
+
export default makeGrid;
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.LabelledGridIcon = void 0;
|
|
7
|
+
|
|
8
|
+
var _electronLog = _interopRequireDefault(require("electron-log"));
|
|
9
|
+
|
|
10
|
+
var _throttleDebounce = require("throttle-debounce");
|
|
11
|
+
|
|
12
|
+
var _react = require("@emotion/react");
|
|
13
|
+
|
|
14
|
+
var _react2 = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _reactWindow = require("react-window");
|
|
17
|
+
|
|
18
|
+
var _reactVirtualizedAutoSizer = _interopRequireDefault(require("react-virtualized-auto-sizer"));
|
|
19
|
+
|
|
20
|
+
var _core = require("@blueprintjs/core");
|
|
21
|
+
|
|
22
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
23
|
+
|
|
24
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
+
|
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
+
|
|
28
|
+
/** @jsx jsx */
|
|
29
|
+
|
|
30
|
+
/** @jsxFrag React.Fragment */
|
|
31
|
+
const COMPACT = false;
|
|
32
|
+
|
|
33
|
+
function makeGrid(CellContents) {
|
|
34
|
+
function getGridIndex(items, ref) {
|
|
35
|
+
const rowIndex = items.findIndex(row => row.indexOf(ref) >= 0);
|
|
36
|
+
|
|
37
|
+
if (rowIndex >= 0) {
|
|
38
|
+
const row = items[rowIndex];
|
|
39
|
+
const columnIndex = row.indexOf(ref);
|
|
40
|
+
|
|
41
|
+
if (columnIndex >= 0) {
|
|
42
|
+
return {
|
|
43
|
+
rowIndex,
|
|
44
|
+
columnIndex
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const Cell = _react2.default.memo(function ({
|
|
53
|
+
columnIndex,
|
|
54
|
+
rowIndex,
|
|
55
|
+
data,
|
|
56
|
+
style
|
|
57
|
+
}) {
|
|
58
|
+
var _a;
|
|
59
|
+
|
|
60
|
+
const _data = data;
|
|
61
|
+
const ref = (_a = _data.items[rowIndex]) === null || _a === void 0 ? void 0 : _a[columnIndex];
|
|
62
|
+
const isSelected = _data.selectedItem === ref;
|
|
63
|
+
|
|
64
|
+
if (ref) {
|
|
65
|
+
return (0, _react.jsx)("div", {
|
|
66
|
+
css: (0, _react.css)`
|
|
67
|
+
position: relative;
|
|
68
|
+
transition: box-shadow .25s linear;
|
|
69
|
+
${!COMPACT ? 'border: 1px solid transparent' : ''};
|
|
70
|
+
${isSelected ? COMPACT ? 'box-shadow: 2px 2px 14px rgba(0, 0, 0, 0.4); z-index: 3;' : 'border-color: silver; border-style: dotted;' : ''};
|
|
71
|
+
`,
|
|
72
|
+
style: style
|
|
73
|
+
}, (0, _react.jsx)(CellContents, {
|
|
74
|
+
isSelected: isSelected,
|
|
75
|
+
onSelect: extraData => _data.selectItem(ref, extraData),
|
|
76
|
+
onOpen: _data.openItem ? () => _data.openItem(ref) : undefined,
|
|
77
|
+
padding: _data.padding,
|
|
78
|
+
extraData: _data.extraData,
|
|
79
|
+
itemRef: ref
|
|
80
|
+
}));
|
|
81
|
+
} else {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}, _reactWindow.areEqual);
|
|
85
|
+
|
|
86
|
+
let gridDataCache = null;
|
|
87
|
+
|
|
88
|
+
function maybeScrollToItem(gridEl) {
|
|
89
|
+
if (gridDataCache !== null) {
|
|
90
|
+
const {
|
|
91
|
+
selectedItem,
|
|
92
|
+
items
|
|
93
|
+
} = gridDataCache;
|
|
94
|
+
|
|
95
|
+
if (selectedItem !== null) {
|
|
96
|
+
const idx = getGridIndex(items, selectedItem);
|
|
97
|
+
|
|
98
|
+
if (idx) {
|
|
99
|
+
gridEl.scrollToItem(Object.assign({
|
|
100
|
+
align: 'smart'
|
|
101
|
+
}, idx));
|
|
102
|
+
} else {
|
|
103
|
+
_electronLog.default.warn("Grid: couldn’t find row/column index of the selected item to jump to it", selectedItem);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const maybeScrollToItemDebounced = (0, _throttleDebounce.debounce)(100, maybeScrollToItem);
|
|
110
|
+
return ({
|
|
111
|
+
getGridData,
|
|
112
|
+
className
|
|
113
|
+
}) => {
|
|
114
|
+
const gridRef = (0, _react2.useRef)(null);
|
|
115
|
+
(0, _react2.useEffect)(() => {
|
|
116
|
+
const updateListHeight = () => gridRef.current ? maybeScrollToItemDebounced(gridRef.current) : void 0;
|
|
117
|
+
|
|
118
|
+
window.addEventListener('resize', updateListHeight);
|
|
119
|
+
updateListHeight();
|
|
120
|
+
return function cleanup() {
|
|
121
|
+
window.removeEventListener('resize', updateListHeight);
|
|
122
|
+
};
|
|
123
|
+
}, [getGridData, gridRef.current]);
|
|
124
|
+
return (0, _react.jsx)(_reactVirtualizedAutoSizer.default, {
|
|
125
|
+
className: className
|
|
126
|
+
}, ({
|
|
127
|
+
width,
|
|
128
|
+
height
|
|
129
|
+
}) => {
|
|
130
|
+
var _a;
|
|
131
|
+
|
|
132
|
+
const gridData = getGridData(width);
|
|
133
|
+
gridDataCache = gridData;
|
|
134
|
+
|
|
135
|
+
if (gridData) {
|
|
136
|
+
const columnCount = ((_a = gridData.items[0]) !== null && _a !== void 0 ? _a : []).length;
|
|
137
|
+
const rowCount = gridData.items.length;
|
|
138
|
+
return (0, _react.jsx)(_reactWindow.FixedSizeGrid, {
|
|
139
|
+
ref: gridRef,
|
|
140
|
+
width: width,
|
|
141
|
+
height: height,
|
|
142
|
+
columnCount: columnCount,
|
|
143
|
+
columnWidth: gridData.cellWidth,
|
|
144
|
+
rowCount: rowCount,
|
|
145
|
+
rowHeight: gridData.cellHeight,
|
|
146
|
+
itemKey: ({
|
|
147
|
+
columnIndex,
|
|
148
|
+
rowIndex
|
|
149
|
+
}) => {
|
|
150
|
+
var _a;
|
|
151
|
+
|
|
152
|
+
const itemRef = (_a = gridData.items[rowIndex]) === null || _a === void 0 ? void 0 : _a[columnIndex];
|
|
153
|
+
return itemRef !== null && itemRef !== void 0 ? itemRef : `${columnIndex}-${rowIndex}`;
|
|
154
|
+
},
|
|
155
|
+
itemData: gridData
|
|
156
|
+
}, Cell);
|
|
157
|
+
} else {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const LabelledGridIcon = function ({
|
|
165
|
+
isSelected,
|
|
166
|
+
onSelect,
|
|
167
|
+
onOpen,
|
|
168
|
+
padding,
|
|
169
|
+
contentClassName,
|
|
170
|
+
entityType,
|
|
171
|
+
className,
|
|
172
|
+
children
|
|
173
|
+
}) {
|
|
174
|
+
const hPad = Math.floor(padding / 2);
|
|
175
|
+
const qPad = Math.floor(padding / 4);
|
|
176
|
+
return (0, _react.jsx)("div", {
|
|
177
|
+
onClick: onSelect,
|
|
178
|
+
onDoubleClick: onOpen,
|
|
179
|
+
className: className,
|
|
180
|
+
css: (0, _react.css)`
|
|
181
|
+
position: absolute;
|
|
182
|
+
${COMPACT ? 'inset: 0' : 'inset: 5px'};
|
|
183
|
+
${!COMPACT ? 'border-radius: 5px' : ''};
|
|
184
|
+
${!isSelected || !COMPACT ? `box-shadow: 1px 1px 0 ${_core.Colors.LIGHT_GRAY5} inset, -1px -1px 0 ${_core.Colors.LIGHT_GRAY1} inset;` : ''}
|
|
185
|
+
overflow: hidden;
|
|
186
|
+
cursor: default;
|
|
187
|
+
z-index: ${isSelected ? 2 : 1};
|
|
188
|
+
display: flex; flex-flow: column nowrap; align-items: stretch; justify-content: flex-start;
|
|
189
|
+
background: ${isSelected ? `linear-gradient(345deg, ${_core.Colors.LIGHT_GRAY3}, white)` : _core.Colors.LIGHT_GRAY5};`
|
|
190
|
+
}, entityType ? (0, _react.jsx)("div", {
|
|
191
|
+
css: (0, _react.css)`
|
|
192
|
+
z-index: 3; font-size: 85%; line-height: 1.4; margin: 1px 1px 0 1px;
|
|
193
|
+
padding: ${qPad - 1}px ${padding}px ${qPad}px ${padding}px;
|
|
194
|
+
background: ${isSelected ? _core.Colors.BLUE2 : _core.Colors.LIGHT_GRAY3};
|
|
195
|
+
${!COMPACT ? 'border-radius: 5px 5px 0 0' : ''}
|
|
196
|
+
letter-spacing: -0.03em;
|
|
197
|
+
white-space: nowrap;
|
|
198
|
+
${isSelected ? 'font-variation-settings: \'GRAD\' 600;' : ''};
|
|
199
|
+
color: ${isSelected ? _core.Colors.LIGHT_GRAY4 : _core.Colors.GRAY1};`
|
|
200
|
+
}, entityType.iconProps ? (0, _react.jsx)(_core.Icon, Object.assign({
|
|
201
|
+
iconSize: 10,
|
|
202
|
+
css: (0, _react.css)`margin-right: ${hPad}px; position: relative; top: -2px;`,
|
|
203
|
+
color: isSelected ? 'white' : _core.Colors.GRAY2,
|
|
204
|
+
intent: isSelected ? 'primary' : undefined
|
|
205
|
+
}, entityType.iconProps)) : null, entityType.name) : null, (0, _react.jsx)("div", {
|
|
206
|
+
css: (0, _react.css)`z-index: 2; flex: 1; font-size: 90%; padding: ${hPad}px ${padding}px;`,
|
|
207
|
+
className: contentClassName
|
|
208
|
+
}, children));
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
exports.LabelledGridIcon = LabelledGridIcon;
|
|
212
|
+
var _default = makeGrid;
|
|
213
|
+
exports.default = _default;
|