@jbrowse/core 5.0.0-beta.1 → 5.0.0-beta.10
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/README.md +1476 -265
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +3 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +34 -29
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +1 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +16 -9
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +15 -31
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +4 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +12 -25
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +5 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +6 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +7 -18
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +50 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +6 -29
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +7 -34
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +3 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +12 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +12 -5
- package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
- package/esm/BaseFeatureWidget/formatDetails.js +62 -83
- package/esm/BaseFeatureWidget/index.d.ts +2 -1
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
- package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
- package/esm/BaseFeatureWidget/types.d.ts +12 -6
- package/esm/BaseFeatureWidget/util.d.ts +0 -10
- package/esm/BaseFeatureWidget/util.js +0 -17
- package/esm/CorePlugin.js +2 -2
- package/esm/PluginLoader.d.ts +24 -13
- package/esm/PluginLoader.js +167 -51
- package/esm/PluginManager.d.ts +130 -24
- package/esm/PluginManager.js +180 -32
- package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
- package/esm/ReExports/MuiDataGridReExports.js +2 -2
- package/esm/ReExports/coreModules.generated.d.ts +2 -0
- package/esm/ReExports/coreModules.generated.js +528 -0
- package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/coreWorkerModules.generated.js +488 -0
- package/esm/ReExports/frameworkModules.d.ts +2 -0
- package/esm/ReExports/frameworkModules.js +68 -0
- package/esm/ReExports/frameworkShared.d.ts +12 -0
- package/esm/ReExports/frameworkShared.js +16 -0
- package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
- package/esm/ReExports/list.js +527 -79
- package/esm/ReExports/modules.d.ts +1 -1
- package/esm/ReExports/modules.js +10 -165
- package/esm/ReExports/registry.d.ts +1 -0
- package/esm/ReExports/registry.js +23 -5
- package/esm/ReExports/uiStub.d.ts +3 -0
- package/esm/ReExports/uiStub.js +33 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +11 -0
- package/esm/TextSearch/TextSearchManager.d.ts +27 -13
- package/esm/TextSearch/TextSearchManager.js +77 -36
- package/esm/TextSearch/places.d.ts +12 -0
- package/esm/TextSearch/places.js +94 -0
- package/esm/assemblyManager/assembly.d.ts +21 -19
- package/esm/assemblyManager/assembly.js +28 -26
- package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
- package/esm/assemblyManager/assemblyAdapters.js +8 -2
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
- package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
- package/esm/assemblyManager/assemblyManager.d.ts +35 -180
- package/esm/assemblyManager/assemblyManager.js +47 -51
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
- package/esm/assemblyManager/geneticCodes.js +2 -5
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
- package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
- package/esm/assemblyManager/indexAssemblyNames.js +22 -0
- package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
- package/esm/assemblyManager/loadRefNameMap.js +4 -9
- package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
- package/esm/assemblyManager/refNameMapKey.js +12 -0
- package/esm/checkPlugins.d.ts +2 -0
- package/esm/checkPlugins.js +38 -17
- package/esm/configuration/bamIndexFields.d.ts +49 -0
- package/esm/configuration/bamIndexFields.js +41 -0
- package/esm/configuration/configurationSchema.d.ts +101 -71
- package/esm/configuration/configurationSchema.js +207 -134
- package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
- package/esm/configuration/configurationSchemaUnion.js +56 -0
- package/esm/configuration/configurationSlot.d.ts +150 -60
- package/esm/configuration/configurationSlot.js +103 -75
- package/esm/configuration/fillLocations.d.ts +14 -0
- package/esm/configuration/fillLocations.js +14 -0
- package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
- package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
- package/esm/configuration/formatDetailsConfigSchema.js +10 -13
- package/esm/configuration/fullConfSnapshot.d.ts +4 -19
- package/esm/configuration/fullConfSnapshot.js +30 -52
- package/esm/configuration/getConf.d.ts +45 -41
- package/esm/configuration/getConf.js +111 -44
- package/esm/configuration/index.d.ts +24 -11
- package/esm/configuration/index.js +15 -7
- package/esm/configuration/indexType.d.ts +26 -0
- package/esm/configuration/indexType.js +38 -0
- package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
- package/esm/configuration/mergeFormatCallbacks.js +13 -10
- package/esm/configuration/readConfObject.d.ts +2 -24
- package/esm/configuration/readConfObject.js +20 -63
- package/esm/configuration/requirements.d.ts +37 -0
- package/esm/configuration/requirements.js +88 -0
- package/esm/configuration/schemaRegistry.d.ts +32 -15
- package/esm/configuration/schemaRegistry.js +33 -35
- package/esm/configuration/schemaTypes.d.ts +21 -5
- package/esm/configuration/schemaTypes.js +66 -55
- package/esm/configuration/slotFacade.d.ts +12 -29
- package/esm/configuration/slotFacade.js +44 -23
- package/esm/configuration/snapshotPreprocess.d.ts +43 -0
- package/esm/configuration/snapshotPreprocess.js +161 -0
- package/esm/configuration/tabixIndexFields.d.ts +30 -4
- package/esm/configuration/tabixIndexFields.js +21 -4
- package/esm/configuration/tabixShorthand.d.ts +34 -17
- package/esm/configuration/tabixShorthand.js +49 -22
- package/esm/configuration/types.d.ts +182 -43
- package/esm/configuration/uriShorthand.d.ts +9 -0
- package/esm/configuration/uriShorthand.js +16 -0
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
- package/esm/data_adapters/BaseAdapter/index.js +1 -0
- package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
- package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
- package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
- package/esm/data_adapters/BaseAdapter/stats.js +52 -13
- package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
- package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
- package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
- package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
- package/esm/data_adapters/dataAdapterCache.js +44 -10
- package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
- package/esm/data_adapters/getFeatureAdapter.js +8 -8
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
- package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
- package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
- package/esm/pluggableElementTypes/AdapterType.js +1 -1
- package/esm/pluggableElementTypes/DisplayType.d.ts +46 -16
- package/esm/pluggableElementTypes/DisplayType.js +22 -12
- package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
- package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
- package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
- package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
- package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
- package/esm/pluggableElementTypes/ViewType.js +32 -4
- package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
- package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
- package/esm/pluggableElementTypes/extendElementType.js +9 -5
- package/esm/pluggableElementTypes/index.d.ts +2 -1
- package/esm/pluggableElementTypes/index.js +1 -1
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +65 -27
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +72 -10
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +85 -16
- package/esm/pluggableElementTypes/models/BaseViewModel.js +53 -10
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
- package/esm/pluggableElementTypes/models/index.d.ts +2 -3
- package/esm/pluggableElementTypes/models/index.js +2 -3
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
- package/esm/pluginDefinitions.d.ts +34 -7
- package/esm/pluginDefinitions.js +54 -20
- package/esm/rpc/BaseRpcDriver.d.ts +2 -2
- package/esm/rpc/BaseRpcDriver.js +25 -30
- package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
- package/esm/rpc/MainThreadRpcDriver.js +13 -8
- package/esm/rpc/RpcClient.d.ts +18 -6
- package/esm/rpc/RpcClient.js +51 -16
- package/esm/rpc/RpcManager.d.ts +14 -10
- package/esm/rpc/RpcManager.js +11 -1
- package/esm/rpc/RpcRegistry.d.ts +40 -7
- package/esm/rpc/RpcServer.d.ts +3 -1
- package/esm/rpc/RpcServer.js +19 -12
- package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
- package/esm/rpc/WebWorkerRpcDriver.js +64 -68
- package/esm/rpc/byteBudget.d.ts +20 -5
- package/esm/rpc/byteBudget.js +16 -5
- package/esm/rpc/configSchema.d.ts +7 -21
- package/esm/rpc/coreRpcMethods.d.ts +4 -0
- package/esm/rpc/coreRpcMethods.js +4 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
- package/esm/rpc/methods/CoreGetExportData.js +3 -4
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.js +3 -5
- package/esm/rpc/methods/CoreGetRefNames.js +2 -12
- package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
- package/esm/rpc/methods/CoreGetSequence.js +2 -2
- package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
- package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
- package/esm/rpc/methods/layerFeatures.d.ts +33 -0
- package/esm/rpc/methods/layerFeatures.js +29 -0
- package/esm/svg/SvgExport.js +6 -7
- package/esm/svg/SvgThemeProviders.d.ts +12 -0
- package/esm/svg/SvgThemeProviders.js +15 -0
- package/esm/svg/exportViewSvg.d.ts +28 -0
- package/esm/svg/exportViewSvg.js +13 -0
- package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
- package/esm/svg/normalizeSvgMarkup.js +99 -0
- package/esm/svg/serializeSvg.d.ts +7 -0
- package/esm/svg/serializeSvg.js +11 -0
- package/esm/svg/svgId.d.ts +1 -1
- package/esm/svg/svgId.js +1 -1
- package/esm/svg/svgReady.d.ts +9 -7
- package/esm/svg/svgReady.js +8 -7
- package/esm/svg/trackNames.d.ts +7 -5
- package/esm/svg/trackNames.js +12 -9
- package/esm/svg/wrapSvgExport.js +6 -74
- package/esm/ui/AddCustomPluginDialog.js +3 -8
- package/esm/ui/AppReadyMarker.d.ts +45 -0
- package/esm/ui/AppReadyMarker.js +89 -0
- package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
- package/esm/ui/CascadingMenu.js +181 -104
- package/esm/ui/DropDownMenu.js +2 -1
- package/esm/ui/ErrorBanner.js +1 -1
- package/esm/ui/ErrorBoundary.d.ts +2 -2
- package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
- package/esm/ui/ExportSvgDialog.d.ts +1 -1
- package/esm/ui/FileDropZone.js +2 -1
- package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
- package/esm/ui/HoverMenu.d.ts +1 -2
- package/esm/ui/HoverMenu.js +6 -3
- package/esm/ui/JexlFilterDialog.d.ts +13 -10
- package/esm/ui/JexlFilterDialog.js +122 -49
- package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
- package/esm/ui/JexlFilterRowEditors.js +90 -0
- package/esm/ui/LazyBaseTooltip.d.ts +4 -0
- package/esm/ui/LazyBaseTooltip.js +9 -0
- package/esm/ui/LegendSwatchGlyph.js +26 -21
- package/esm/ui/LoadingOverlay.d.ts +14 -0
- package/esm/ui/LoadingOverlay.js +4 -2
- package/esm/ui/MenuTypes.d.ts +23 -53
- package/esm/ui/MenuTypes.js +3 -0
- package/esm/ui/MonospaceTextField.d.ts +2 -1
- package/esm/ui/MonospaceTextField.js +23 -20
- package/esm/ui/PaletteContext.d.ts +10 -5
- package/esm/ui/PaletteContext.js +44 -6
- package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
- package/esm/ui/RefNameAutocomplete/index.js +8 -2
- package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/util.js +42 -1
- package/esm/ui/ResizeHandle.d.ts +3 -1
- package/esm/ui/ResizeHandle.js +44 -11
- package/esm/ui/ScrollChrome.d.ts +13 -0
- package/esm/ui/ScrollChrome.js +11 -0
- package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
- package/esm/ui/ScrollEdgeShadow.js +14 -35
- package/esm/ui/ScrollZoomToggle.d.ts +4 -27
- package/esm/ui/ScrollZoomToggle.js +34 -51
- package/esm/ui/SessionJsonPanel.d.ts +3 -0
- package/esm/ui/SessionJsonPanel.js +14 -0
- package/esm/ui/SettingsChangesTable.d.ts +1 -0
- package/esm/ui/SettingsChangesTable.js +49 -11
- package/esm/ui/ShareLinkField.d.ts +1 -3
- package/esm/ui/ShareLinkField.js +13 -40
- package/esm/ui/SizeSliderRow.d.ts +1 -3
- package/esm/ui/SizeSliderRow.js +4 -6
- package/esm/ui/SnackbarModel.js +79 -67
- package/esm/ui/StatusProgressBar.js +2 -2
- package/esm/ui/SvgColorLegend.d.ts +9 -4
- package/esm/ui/SvgColorLegend.js +82 -41
- package/esm/ui/VerticalScrollbar.d.ts +13 -34
- package/esm/ui/VerticalScrollbar.js +29 -83
- package/esm/ui/ViewLoadingScreen.d.ts +5 -4
- package/esm/ui/ViewLoadingScreen.js +8 -32
- package/esm/ui/colorScale.d.ts +92 -0
- package/esm/ui/colorScale.js +72 -0
- package/esm/ui/colors.d.ts +64 -0
- package/esm/ui/colors.js +230 -1
- package/esm/ui/hoverBoxStyle.d.ts +14 -2
- package/esm/ui/hoverBoxStyle.js +17 -2
- package/esm/ui/index.d.ts +12 -12
- package/esm/ui/index.js +14 -22
- package/esm/ui/launchViewMenu.js +15 -5
- package/esm/ui/legendMenuItem.d.ts +10 -32
- package/esm/ui/legendMenuItem.js +9 -36
- package/esm/ui/legendSpec.d.ts +15 -8
- package/esm/ui/legendSpec.js +14 -23
- package/esm/ui/makeSizeMenu.d.ts +0 -6
- package/esm/ui/makeSizeMenu.js +6 -30
- package/esm/ui/measureLegendText.js +1 -1
- package/esm/ui/menuItemAdornment.d.ts +9 -20
- package/esm/ui/menuItemAdornment.js +10 -32
- package/esm/ui/menuItems.d.ts +2 -7
- package/esm/ui/menuItems.js +1 -6
- package/esm/ui/multiTrackMenuItems.d.ts +6 -0
- package/esm/ui/palette.d.ts +118 -116
- package/esm/ui/palette.js +114 -75
- package/esm/ui/replaceViewAction.d.ts +1 -1
- package/esm/ui/replaceViewAction.js +1 -1
- package/esm/ui/theme.d.ts +43 -119
- package/esm/ui/theme.js +62 -78
- package/esm/ui/toggleMenuItems.d.ts +1 -3
- package/esm/ui/toggleMenuItems.js +6 -5
- package/esm/ui/useAssemblySelection.d.ts +4 -4
- package/esm/ui/viewHeaderHeight.d.ts +1 -0
- package/esm/ui/viewHeaderHeight.js +1 -0
- package/esm/util/Base1DUtils.d.ts +5 -3
- package/esm/util/Base1DUtils.js +14 -6
- package/esm/util/Base1DViewModel.d.ts +2 -1
- package/esm/util/Base1DViewModel.js +3 -2
- package/esm/util/SvgCanvas.d.ts +15 -13
- package/esm/util/SvgCanvas.js +76 -56
- package/esm/util/aborting.d.ts +39 -0
- package/esm/util/aborting.js +88 -6
- package/esm/util/adapterMetadata.d.ts +1 -1
- package/esm/util/adapterMetadata.js +6 -5
- package/esm/util/addAndShowTrack.d.ts +2 -5
- package/esm/util/addAndShowTrack.js +5 -1
- package/esm/util/addRelativeUris.d.ts +17 -5
- package/esm/util/addRelativeUris.js +46 -10
- package/esm/util/addTrackFromWidget.d.ts +2 -5
- package/esm/util/addTrackFromWidget.js +5 -4
- package/esm/util/aggregateFieldName.d.ts +10 -0
- package/esm/util/aggregateFieldName.js +8 -0
- package/esm/util/analytics.js +46 -13
- package/esm/util/animationAllowed.d.ts +9 -0
- package/esm/util/animationAllowed.js +13 -0
- package/esm/util/applyRowResizeWheel.d.ts +10 -5
- package/esm/util/applyRowResizeWheel.js +10 -21
- package/esm/util/bandHeight.d.ts +10 -0
- package/esm/util/bandHeight.js +29 -0
- package/esm/util/bandLayout.d.ts +4 -4
- package/esm/util/bandLayout.js +4 -4
- package/esm/util/bezierConnector.d.ts +4 -3
- package/esm/util/bezierConnector.js +38 -45
- package/esm/util/bgzfWorkerPool.d.ts +20 -74
- package/esm/util/bgzfWorkerPool.js +20 -74
- package/esm/util/binnedAggregate.d.ts +17 -0
- package/esm/util/binnedAggregate.js +275 -0
- package/esm/util/cacheBudgets.d.ts +22 -19
- package/esm/util/cacheBudgets.js +22 -19
- package/esm/util/cachedSetup.d.ts +1 -1
- package/esm/util/cachedSetup.js +2 -2
- package/esm/util/categoricalField.d.ts +56 -0
- package/esm/util/categoricalField.js +73 -0
- package/esm/util/clampToContig.d.ts +17 -0
- package/esm/util/clampToContig.js +19 -0
- package/esm/util/coarseStripHTML.js +1 -2
- package/esm/util/color/cssColorsLevel4.d.ts +1 -0
- package/esm/util/color/cssColorsLevel4.js +1 -0
- package/esm/util/color/index.d.ts +5 -3
- package/esm/util/color/index.js +7 -4
- package/esm/util/colorBits.d.ts +3 -3
- package/esm/util/colorBits.js +19 -44
- package/esm/util/colorRamp.d.ts +49 -5
- package/esm/util/colorRamp.js +169 -18
- package/esm/util/colorScale.d.ts +156 -0
- package/esm/util/colorScale.js +243 -0
- package/esm/util/colorSchemes.d.ts +21 -0
- package/esm/util/colorSchemes.js +30 -0
- package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
- package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
- package/esm/util/createSvgRasterCanvas.d.ts +10 -0
- package/esm/util/cssColorParse.d.ts +15 -0
- package/esm/util/cssColorParse.js +53 -0
- package/esm/util/diagonalizeRegions.d.ts +2 -3
- package/esm/util/diagonalizeRegions.js +8 -13
- package/esm/util/expandLooseSearchIndex.d.ts +19 -0
- package/esm/util/expandLooseSearchIndex.js +29 -0
- package/esm/util/featureTable.d.ts +224 -0
- package/esm/util/featureTable.js +366 -0
- package/esm/util/featureTransforms.d.ts +80 -0
- package/esm/util/featureTransforms.js +1579 -0
- package/esm/util/featureTypes.d.ts +24 -0
- package/esm/util/featureTypes.js +35 -0
- package/esm/util/fetchAndMaybeUnzip.js +16 -9
- package/esm/util/fetchContext.d.ts +7 -8
- package/esm/util/fetchContext.js +3 -3
- package/esm/util/fetchHub.d.ts +4 -2
- package/esm/util/fetchHub.js +2 -2
- package/esm/util/fetchPhases.d.ts +10 -10
- package/esm/util/fetchSeq.d.ts +2 -3
- package/esm/util/fetchSeq.js +2 -2
- package/esm/util/fieldReader.d.ts +17 -0
- package/esm/util/fieldReader.js +62 -0
- package/esm/util/freezeDeep.d.ts +8 -10
- package/esm/util/freezeDeep.js +8 -10
- package/esm/util/groupKeys.d.ts +77 -0
- package/esm/util/groupKeys.js +155 -0
- package/esm/util/highlights.d.ts +10 -6
- package/esm/util/highlights.js +12 -25
- package/esm/util/hooks.d.ts +31 -2
- package/esm/util/hooks.js +72 -3
- package/esm/util/index.d.ts +11 -11
- package/esm/util/index.js +11 -10
- package/esm/util/indexCandidates.d.ts +1 -31
- package/esm/util/indexCandidates.js +5 -63
- package/esm/util/installFetch.d.ts +77 -37
- package/esm/util/installFetch.js +65 -38
- package/esm/util/installInitAutorun.d.ts +14 -13
- package/esm/util/installInitAutorun.js +17 -17
- package/esm/util/installPrerequisiteFetch.d.ts +115 -0
- package/esm/util/installPrerequisiteFetch.js +111 -0
- package/esm/util/io/index.js +19 -14
- package/esm/util/isDataCurrent.d.ts +7 -5
- package/esm/util/isDataCurrent.js +9 -6
- package/esm/util/isTextEntryFocused.d.ts +7 -0
- package/esm/util/isTextEntryFocused.js +16 -0
- package/esm/util/jexl.js +24 -21
- package/esm/util/jexlFilterRows.d.ts +89 -0
- package/esm/util/jexlFilterRows.js +252 -0
- package/esm/util/jexlFilters.d.ts +20 -27
- package/esm/util/jexlFilters.js +23 -11
- package/esm/util/jexlStrings.d.ts +3 -4
- package/esm/util/jexlStrings.js +2 -3
- package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
- package/esm/util/layouts/GranularRectLayout.js +25 -8
- package/esm/util/lazyAfterAttach.d.ts +13 -0
- package/esm/util/lazyAfterAttach.js +31 -0
- package/esm/util/lazyWithPreload.d.ts +19 -0
- package/esm/util/lazyWithPreload.js +27 -0
- package/esm/util/legendCandidates.d.ts +72 -0
- package/esm/util/legendCandidates.js +138 -0
- package/esm/util/localStorage.js +4 -4
- package/esm/util/markEncoding.d.ts +150 -0
- package/esm/util/markEncoding.js +845 -0
- package/esm/util/markEncodingTypes.d.ts +588 -0
- package/esm/util/markEncodingTypes.js +8 -0
- package/esm/util/mst-reflection.d.ts +2 -20
- package/esm/util/mst-reflection.js +3 -53
- package/esm/util/mstUtils.d.ts +31 -23
- package/esm/util/mstUtils.js +39 -24
- package/esm/util/numericUtils.d.ts +7 -0
- package/esm/util/numericUtils.js +16 -0
- package/esm/util/numericValue.d.ts +14 -0
- package/esm/util/numericValue.js +34 -0
- package/esm/util/openFeatureWidget.d.ts +5 -0
- package/esm/util/openFeatureWidget.js +2 -2
- package/esm/util/openViews.d.ts +17 -0
- package/esm/util/openViews.js +22 -0
- package/esm/util/parentWalk.d.ts +1 -1
- package/esm/util/parentWalk.js +1 -1
- package/esm/util/parseLineByLine.d.ts +4 -5
- package/esm/util/parseLineByLine.js +8 -14
- package/esm/util/pluginStore.d.ts +6 -8
- package/esm/util/pluginStore.js +17 -16
- package/esm/util/preloadComponent.d.ts +5 -0
- package/esm/util/preloadComponent.js +11 -0
- package/esm/util/progress.d.ts +22 -22
- package/esm/util/progress.js +27 -26
- package/esm/util/quantileExtent.d.ts +49 -0
- package/esm/util/quantileExtent.js +162 -0
- package/esm/util/range.d.ts +13 -9
- package/esm/util/range.js +17 -8
- package/esm/util/renameRegions.d.ts +26 -6
- package/esm/util/renameRegions.js +68 -54
- package/esm/util/renderToStaticMarkup.js +24 -14
- package/esm/util/rxjs.d.ts +23 -8
- package/esm/util/rxjs.js +61 -15
- package/esm/util/samplesTsv.d.ts +49 -0
- package/esm/util/samplesTsv.js +86 -0
- package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
- package/esm/util/scheduleDetachedDestroy.js +24 -0
- package/esm/util/scrollLatch.d.ts +1 -0
- package/esm/util/scrollLatch.js +8 -0
- package/esm/util/selectEncodedFeature.d.ts +16 -0
- package/esm/util/selectEncodedFeature.js +34 -0
- package/esm/util/sessionSharing.d.ts +7 -5
- package/esm/util/sessionSharing.js +23 -23
- package/esm/util/shapeNameList.d.ts +2 -0
- package/esm/util/shapeNameList.js +6 -0
- package/esm/util/shapeNames.d.ts +7 -0
- package/esm/util/shapeNames.js +11 -0
- package/esm/util/simpleFeature.d.ts +0 -1
- package/esm/util/starFusion.d.ts +26 -0
- package/esm/util/starFusion.js +37 -0
- package/esm/util/stepTables.d.ts +82 -0
- package/esm/util/stepTables.js +243 -0
- package/esm/util/svAlt.d.ts +145 -0
- package/esm/util/svAlt.js +364 -0
- package/esm/util/svgColorProps.d.ts +11 -0
- package/esm/util/svgColorProps.js +28 -1
- package/esm/util/systemColorScheme.d.ts +12 -0
- package/esm/util/systemColorScheme.js +27 -0
- package/esm/util/tabix.d.ts +13 -8
- package/esm/util/tabix.js +17 -12
- package/esm/util/thresholdScale.d.ts +91 -0
- package/esm/util/thresholdScale.js +166 -0
- package/esm/util/timeGate.d.ts +4 -5
- package/esm/util/timeGate.js +4 -5
- package/esm/util/trackConfigDelta.d.ts +26 -26
- package/esm/util/trackConfigDelta.js +63 -47
- package/esm/util/tracks.d.ts +121 -40
- package/esm/util/tracks.js +497 -112
- package/esm/util/translateTranscript.d.ts +44 -0
- package/esm/util/translateTranscript.js +102 -0
- package/esm/util/types/data.d.ts +0 -2
- package/esm/util/types/index.d.ts +121 -22
- package/esm/util/types/index.js +9 -0
- package/esm/util/types/mst.d.ts +3 -0
- package/esm/util/types/mst.js +4 -0
- package/esm/util/types/renameIds.d.ts +1 -0
- package/esm/util/types/renameIds.js +29 -0
- package/esm/util/types/services.d.ts +1 -1
- package/esm/util/unknownSnapshotKeys.d.ts +51 -0
- package/esm/util/unknownSnapshotKeys.js +82 -0
- package/esm/util/useFeatureSequence.js +5 -5
- package/esm/util/useFetch.d.ts +3 -4
- package/esm/util/useFetch.js +19 -10
- package/esm/util/useFetchPlugins.d.ts +6 -2
- package/esm/util/useFetchPlugins.js +7 -3
- package/esm/util/usePanelVirtualScroll.d.ts +7 -35
- package/esm/util/usePanelVirtualScroll.js +9 -36
- package/esm/util/useRowVirtualScroll.d.ts +6 -29
- package/esm/util/useRowVirtualScroll.js +8 -49
- package/esm/util/useVirtualScrollWheel.d.ts +20 -4
- package/esm/util/useVirtualScrollWheel.js +40 -74
- package/esm/util/viewHighlights.d.ts +3 -0
- package/esm/util/viewHighlights.js +5 -0
- package/esm/util/viewStatus.d.ts +47 -15
- package/esm/util/viewStatus.js +34 -0
- package/esm/util/wheelZoom.d.ts +7 -1
- package/esm/util/wheelZoom.js +85 -19
- package/esm/util/whenViewSettled.d.ts +55 -8
- package/esm/util/whenViewSettled.js +56 -7
- package/esm/util/withLaunchInput.d.ts +174 -0
- package/esm/util/withLaunchInput.js +274 -0
- package/package.json +70 -20
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
- package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
- package/esm/ReExports/BaseFeatureDetails.js +0 -10
- package/esm/ReExports/index.d.ts +0 -1
- package/esm/ReExports/index.js +0 -1
- package/esm/ReExports/publicUtil.d.ts +0 -1
- package/esm/ReExports/publicUtil.js +0 -28
- package/esm/configuration/promotableDefaults.d.ts +0 -199
- package/esm/configuration/promotableDefaults.js +0 -326
- package/esm/configuration/promotablePin.d.ts +0 -55
- package/esm/configuration/promotablePin.js +0 -1
- package/esm/configuration/promotableResolve.d.ts +0 -108
- package/esm/configuration/promotableResolve.js +0 -117
- package/esm/configuration/promotableSlots.d.ts +0 -12
- package/esm/configuration/promotableSlots.js +0 -45
- package/esm/configuration/slotShape.d.ts +0 -12
- package/esm/configuration/slotShape.js +0 -84
- package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
- package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
- package/esm/ui/PinAdornment.d.ts +0 -5
- package/esm/ui/PinAdornment.js +0 -79
- package/esm/ui/SvgGradientLegend.d.ts +0 -26
- package/esm/ui/SvgGradientLegend.js +0 -26
- package/esm/ui/highlightChipReveal.d.ts +0 -32
- package/esm/ui/highlightChipReveal.js +0 -39
- package/esm/ui/promotableMenuItems.d.ts +0 -19
- package/esm/ui/promotableMenuItems.js +0 -89
- package/esm/ui/promotablePinCoverage.d.ts +0 -44
- package/esm/ui/promotablePinCoverage.js +0 -87
- package/esm/util/applyInitSettings.d.ts +0 -79
- package/esm/util/applyInitSettings.js +0 -91
- package/esm/util/openDisplays.d.ts +0 -23
- package/esm/util/openDisplays.js +0 -79
- package/esm/util/stopToken.d.ts +0 -211
- package/esm/util/stopToken.js +0 -438
- /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
export { legacyInitMessage, unknownKeysMessage } from './unknownSnapshotKeys.ts';
|
|
2
|
+
import type { IAnyModelType, IModelType, SnapshotIn, SnapshotOut } from '@jbrowse/mobx-state-tree';
|
|
3
|
+
/**
|
|
4
|
+
* The slice of a PluginManager the partition reads: which view type a
|
|
5
|
+
* snapshot's `type` names, and that type's state model as REGISTERED — the
|
|
6
|
+
* one `extendViewType` may have composed more properties onto after the
|
|
7
|
+
* factory wrapped its own.
|
|
8
|
+
*/
|
|
9
|
+
export interface ViewTypeLookup {
|
|
10
|
+
viewTypes: {
|
|
11
|
+
has: (name: string) => boolean;
|
|
12
|
+
};
|
|
13
|
+
getViewType: (name: string) => {
|
|
14
|
+
isStateModelLoaded: boolean;
|
|
15
|
+
stateModel: IAnyModelType;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export interface LaunchInputOptions<M extends IAnyModelType> {
|
|
19
|
+
/** the PluginManager; without it the partition sees only the wrapped model */
|
|
20
|
+
registry?: ViewTypeLookup;
|
|
21
|
+
/**
|
|
22
|
+
* Whether a snapshot shows the launch applied — rows built, regions set. The
|
|
23
|
+
* blob persists only until then: a snapshot taken mid-load (an autosave
|
|
24
|
+
* firing before the launch autorun navigates) has to rebuild the view rather
|
|
25
|
+
* than drop it to the import form, and a materialized view has nothing left
|
|
26
|
+
* to rebuild. `installInitAutorun` keys its failure policy off the same line,
|
|
27
|
+
* read from the live node. `Partial` because a `stripDefault` property is
|
|
28
|
+
* absent from the snapshot when empty, whatever its declared type says.
|
|
29
|
+
*/
|
|
30
|
+
materialized: (snap: Partial<SnapshotOut<M>>) => boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* How a launch key's value is told apart from the state property of the same
|
|
34
|
+
* name. A key whose name collides with nothing is `launch`; the rest name the
|
|
35
|
+
* discriminator that splits one authored array into the recipe entries the
|
|
36
|
+
* launcher resolves and the built snapshots MST restores.
|
|
37
|
+
*
|
|
38
|
+
* `replay` is the one that is not remapped at all: the value lands on its
|
|
39
|
+
* property, and a copy rides in the blob so the launcher can run the ordered
|
|
40
|
+
* imperative step the property write alone does not produce.
|
|
41
|
+
*/
|
|
42
|
+
export type LaunchKeyKind = 'launch' | 'trackEntries' | 'rows' | 'replay';
|
|
43
|
+
export interface LaunchKeySpec {
|
|
44
|
+
kind: LaunchKeyKind;
|
|
45
|
+
}
|
|
46
|
+
export interface LaunchKeyRegistration<Commands, PassThrough extends string = never> {
|
|
47
|
+
keys: Record<string, LaunchKeySpec>;
|
|
48
|
+
passThrough: readonly PassThrough[];
|
|
49
|
+
/** never assigned; it carries `Commands` to `withLaunchInput`'s return type */
|
|
50
|
+
commands?: Commands;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The launch keys a view captured, plus what it has to report.
|
|
54
|
+
*
|
|
55
|
+
* `Commands` is not made partial: hand-authored JSON is what fills this, so a
|
|
56
|
+
* key the interface marks required is not a guarantee here either way, and the
|
|
57
|
+
* launcher already guards the ones it cannot proceed without.
|
|
58
|
+
*/
|
|
59
|
+
export type LaunchInput<Commands> = Commands & {
|
|
60
|
+
unknown?: Record<string, unknown>;
|
|
61
|
+
malformed?: Record<string, unknown>;
|
|
62
|
+
legacyInit?: boolean;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* The blob when it still holds something to apply, else undefined. A view's
|
|
66
|
+
* gates ask this rather than the raw property: a snapshot whose only launch
|
|
67
|
+
* content was a typo has nothing to launch, and a view that thinks otherwise
|
|
68
|
+
* waits on an assembly nobody named and never leaves the spinner.
|
|
69
|
+
*
|
|
70
|
+
* Returns the blob itself, never a copy — the launch autorun clears by
|
|
71
|
+
* identity, and a fresh object per read strands the init it just applied.
|
|
72
|
+
*/
|
|
73
|
+
export declare function pendingLaunch<C>(launch: LaunchInput<C> | undefined): LaunchInput<C> | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* A view's snapshot type, widened to the authored shape: every launch key is
|
|
76
|
+
* accepted beside the declared properties, and a key that is both takes either
|
|
77
|
+
* meaning. Excess-property checking then makes a misspelled key an error at
|
|
78
|
+
* every literal site — a `defaultSession` view, an `addView` call, a
|
|
79
|
+
* `createViewState` spec.
|
|
80
|
+
*/
|
|
81
|
+
export type LaunchSnapshotIn<M extends IAnyModelType, Commands, PassThrough extends string = never> = Omit<SnapshotIn<M>, keyof Commands> & {
|
|
82
|
+
[K in keyof Commands]?: K extends keyof SnapshotIn<M> ? Commands[K] | SnapshotIn<M>[K] : Commands[K];
|
|
83
|
+
} & {
|
|
84
|
+
[K in PassThrough]?: unknown;
|
|
85
|
+
} & {
|
|
86
|
+
/**
|
|
87
|
+
* @deprecated v4's nesting. Write every setting directly on the view object;
|
|
88
|
+
* this is unwrapped on the way in and warns.
|
|
89
|
+
*/
|
|
90
|
+
init?: Commands;
|
|
91
|
+
};
|
|
92
|
+
type ReservedKey = 'id' | 'type' | 'launch';
|
|
93
|
+
/**
|
|
94
|
+
* What a view can be launched with, derived: the keys its launcher interprets
|
|
95
|
+
* (`Commands`) plus every declared property of its state model, optional, in
|
|
96
|
+
* the property's own snapshot type. Nothing is restated, so a property is
|
|
97
|
+
* authorable — and TYPED — from the line that declares it.
|
|
98
|
+
*
|
|
99
|
+
* ```ts
|
|
100
|
+
* export type LinearSyntenyViewInit = ViewInit<
|
|
101
|
+
* LinearSyntenyViewStateModel,
|
|
102
|
+
* LinearSyntenyViewCommands
|
|
103
|
+
* >
|
|
104
|
+
* ```
|
|
105
|
+
*
|
|
106
|
+
* The twin of `LaunchSnapshotIn` above, from the other end: that one widens a
|
|
107
|
+
* snapshot type for a literal MST site, this one is what a caller BUILDING a
|
|
108
|
+
* spec annotates, so its commands stay required and its properties optional.
|
|
109
|
+
*/
|
|
110
|
+
export type ViewInit<M extends IAnyModelType, Commands> = Commands & Partial<Omit<SnapshotIn<M>, keyof Commands | ReservedKey>>;
|
|
111
|
+
export type LaunchInputModel<M extends IAnyModelType, Commands, PassThrough extends string = never> = M extends IModelType<infer P, infer O, any, infer S> ? IModelType<P, O, LaunchSnapshotIn<M, Commands, PassThrough>, S> : never;
|
|
112
|
+
/**
|
|
113
|
+
* Declare one view's launch keys. The argument is
|
|
114
|
+
* `Record<keyof Commands, LaunchKeySpec>`, so a command the view interprets and
|
|
115
|
+
* nobody registered is a compile error rather than a key that partitions as a
|
|
116
|
+
* typo and warns.
|
|
117
|
+
*
|
|
118
|
+
* `passThrough` names keys that are neither a launch key nor a declared
|
|
119
|
+
* property and still belong on the snapshot — a legacy spelling the view's own
|
|
120
|
+
* `preProcessSnapshot` converts.
|
|
121
|
+
*/
|
|
122
|
+
export declare function defineLaunchKeys<Commands>(): <const P extends readonly string[] = readonly never[]>(keys: Record<keyof Commands, LaunchKeySpec>, { passThrough }?: {
|
|
123
|
+
passThrough?: P;
|
|
124
|
+
}) => LaunchKeyRegistration<Commands, P[number]>;
|
|
125
|
+
/**
|
|
126
|
+
* The part of a launch spec that belongs on the snapshot: everything but the
|
|
127
|
+
* launch keys, and the identity and `launch` keys no spec may set. For a caller
|
|
128
|
+
* that applies the launch itself and builds the view from a snapshot — a
|
|
129
|
+
* synteny row, whose parent navigates it and opens its tracks — so what it
|
|
130
|
+
* hands MST is settings only, and the view's own partition sorts those into
|
|
131
|
+
* properties and reported typos.
|
|
132
|
+
*/
|
|
133
|
+
export declare function snapshotSettings(spec: Record<string, unknown>, registration: LaunchKeyRegistration<unknown, string> | undefined): {
|
|
134
|
+
[k: string]: unknown;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* A track recipe rather than a built track snapshot: a built one cannot carry
|
|
138
|
+
* `trackId`, which BaseTrackModel does not declare. `type` does not
|
|
139
|
+
* discriminate, because a spec writes display types inline.
|
|
140
|
+
*/
|
|
141
|
+
export declare function isTrackRecipe(entry: unknown): boolean;
|
|
142
|
+
/**
|
|
143
|
+
* Accept a view's settings written directly on the view object, and move the
|
|
144
|
+
* ones a launcher has to resolve into the internal `launch` property.
|
|
145
|
+
*
|
|
146
|
+
* The partition is a `preProcessSnapshot` and is PURE. A session's view type is
|
|
147
|
+
* a `types.union`, so MST runs every member's preprocessor against every
|
|
148
|
+
* candidate snapshot while deciding which one matches, and runs it about twice
|
|
149
|
+
* more per instantiation; a warning from in here fires against snapshots that
|
|
150
|
+
* are about to be rejected. `afterAttach` — reached only by a snapshot that won
|
|
151
|
+
* — reports what the partition captured.
|
|
152
|
+
*
|
|
153
|
+
* `registry` is the PluginManager. With it the partition classifies against
|
|
154
|
+
* the view type as registered, `extendViewType`'s added properties included;
|
|
155
|
+
* without it, against the model as wrapped here. `materialized` draws the line
|
|
156
|
+
* past which the blob is no longer persisted; see `LaunchInputOptions`.
|
|
157
|
+
*
|
|
158
|
+
* ORDER: MST runs preprocessors in the reverse of the order they were added, so
|
|
159
|
+
* this belongs on the chain BEFORE a view's own legacy-key preprocessor, where
|
|
160
|
+
* it partitions the snapshot MST finally consumes rather than a key that remap
|
|
161
|
+
* is about to convert.
|
|
162
|
+
*
|
|
163
|
+
* The widening cast is the LAST link that may change the creation type: it
|
|
164
|
+
* replaces `CustomC`, so a `.props()` added after it is invisible to
|
|
165
|
+
* `SnapshotIn`. Further `preProcessSnapshot`/`postProcessSnapshot` links are
|
|
166
|
+
* fine — both carry `CustomC` through.
|
|
167
|
+
*
|
|
168
|
+
* Not `types.snapshotProcessor`, which carries the same widened input and stops
|
|
169
|
+
* being a `ModelType`. `PluginManager.pluggableMstType` filters union members on
|
|
170
|
+
* `isModelType`, so a wrapped view is dropped from the session's view union
|
|
171
|
+
* without a word, and `ViewType.stateModel` and every `.properties`
|
|
172
|
+
* introspection site break with it.
|
|
173
|
+
*/
|
|
174
|
+
export declare function withLaunchInput<M extends IAnyModelType, Commands, PassThrough extends string>(model: M, registration: LaunchKeyRegistration<Commands, PassThrough>, { registry, materialized }: LaunchInputOptions<M>): LaunchInputModel<M, Commands, PassThrough>;
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { reportLegacyInit, reportMalformedRows, reportUnknownKeys, } from './unknownSnapshotKeys.js';
|
|
2
|
+
// re-exported here because the surfaces that classify their own keys — a
|
|
3
|
+
// session spec, which launches without ever building a snapshot — reach the
|
|
4
|
+
// partition's vocabulary through this module
|
|
5
|
+
export { legacyInitMessage, unknownKeysMessage } from './unknownSnapshotKeys.js';
|
|
6
|
+
// What afterAttach reports rather than applies. They live in the blob so the
|
|
7
|
+
// partition has one place to put everything, and `pendingLaunch` is what keeps
|
|
8
|
+
// them from reading as work to do.
|
|
9
|
+
const REPORTED = new Set(['unknown', 'malformed', 'legacyInit']);
|
|
10
|
+
/**
|
|
11
|
+
* The blob when it still holds something to apply, else undefined. A view's
|
|
12
|
+
* gates ask this rather than the raw property: a snapshot whose only launch
|
|
13
|
+
* content was a typo has nothing to launch, and a view that thinks otherwise
|
|
14
|
+
* waits on an assembly nobody named and never leaves the spinner.
|
|
15
|
+
*
|
|
16
|
+
* Returns the blob itself, never a copy — the launch autorun clears by
|
|
17
|
+
* identity, and a fresh object per read strands the init it just applied.
|
|
18
|
+
*/
|
|
19
|
+
export function pendingLaunch(launch) {
|
|
20
|
+
return launch && Object.keys(launch).some(k => !REPORTED.has(k))
|
|
21
|
+
? launch
|
|
22
|
+
: undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Declare one view's launch keys. The argument is
|
|
26
|
+
* `Record<keyof Commands, LaunchKeySpec>`, so a command the view interprets and
|
|
27
|
+
* nobody registered is a compile error rather than a key that partitions as a
|
|
28
|
+
* typo and warns.
|
|
29
|
+
*
|
|
30
|
+
* `passThrough` names keys that are neither a launch key nor a declared
|
|
31
|
+
* property and still belong on the snapshot — a legacy spelling the view's own
|
|
32
|
+
* `preProcessSnapshot` converts.
|
|
33
|
+
*/
|
|
34
|
+
export function defineLaunchKeys() {
|
|
35
|
+
return (keys, { passThrough } = {}) => ({
|
|
36
|
+
keys,
|
|
37
|
+
passThrough: passThrough ?? [],
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// `id` picks up MST's optional identifier and `type` picks the view, so neither
|
|
41
|
+
// is ever a setting and neither can be lifted off the snapshot.
|
|
42
|
+
const IDENTITY = new Set(['id', 'type']);
|
|
43
|
+
const LAUNCH = 'launch';
|
|
44
|
+
/**
|
|
45
|
+
* The part of a launch spec that belongs on the snapshot: everything but the
|
|
46
|
+
* launch keys, and the identity and `launch` keys no spec may set. For a caller
|
|
47
|
+
* that applies the launch itself and builds the view from a snapshot — a
|
|
48
|
+
* synteny row, whose parent navigates it and opens its tracks — so what it
|
|
49
|
+
* hands MST is settings only, and the view's own partition sorts those into
|
|
50
|
+
* properties and reported typos.
|
|
51
|
+
*/
|
|
52
|
+
export function snapshotSettings(spec, registration) {
|
|
53
|
+
const keys = registration?.keys ?? {};
|
|
54
|
+
return Object.fromEntries(Object.entries(spec).filter(([key]) => !(key in keys) && !IDENTITY.has(key) && key !== LAUNCH));
|
|
55
|
+
}
|
|
56
|
+
function isObject(value) {
|
|
57
|
+
return !!value && typeof value === 'object';
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A track recipe rather than a built track snapshot: a built one cannot carry
|
|
61
|
+
* `trackId`, which BaseTrackModel does not declare. `type` does not
|
|
62
|
+
* discriminate, because a spec writes display types inline.
|
|
63
|
+
*/
|
|
64
|
+
export function isTrackRecipe(entry) {
|
|
65
|
+
return typeof entry === 'string' || (isObject(entry) && 'trackId' in entry);
|
|
66
|
+
}
|
|
67
|
+
// Each per-entry kind says only which entries are an authored recipe. A recipe
|
|
68
|
+
// goes to the blob for the launcher to resolve; everything else is a built
|
|
69
|
+
// snapshot and stays on the property, so a mixed array splits rather than
|
|
70
|
+
// picking one meaning for the whole thing.
|
|
71
|
+
function isRecipeEntry(kind, entry) {
|
|
72
|
+
switch (kind) {
|
|
73
|
+
case 'trackEntries':
|
|
74
|
+
return isTrackRecipe(entry);
|
|
75
|
+
case 'rows':
|
|
76
|
+
// a built row is a view snapshot, and every view's `type` is a required
|
|
77
|
+
// literal
|
|
78
|
+
return !(isObject(entry) && 'type' in entry);
|
|
79
|
+
default:
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function splitEntries(kind, value) {
|
|
84
|
+
const entries = Array.isArray(value) ? value : [value];
|
|
85
|
+
const recipes = entries.filter(e => isRecipeEntry(kind, e));
|
|
86
|
+
const built = entries.filter(e => !isRecipeEntry(kind, e));
|
|
87
|
+
return {
|
|
88
|
+
launch: recipes.length
|
|
89
|
+
? Array.isArray(value)
|
|
90
|
+
? recipes
|
|
91
|
+
: value
|
|
92
|
+
: undefined,
|
|
93
|
+
state: built.length ? (Array.isArray(value) ? built : value) : undefined,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// The properties a snapshot's keys are classified against are the REGISTERED
|
|
97
|
+
// view type's, read at preprocess time: `extendViewType` composes onto the
|
|
98
|
+
// model after `withLaunchInput` wrapped it, and a set frozen at wrap time sent
|
|
99
|
+
// every added property to `unknown` — restored at its default, with a warning
|
|
100
|
+
// naming it a typo. The wrapped model's own properties are the answer when no
|
|
101
|
+
// registry is given, or the snapshot names a type it does not hold, which is
|
|
102
|
+
// how a factory-built model in a test behaves.
|
|
103
|
+
function knownPropsResolver(model, registry) {
|
|
104
|
+
let cachedProps;
|
|
105
|
+
let cachedKeys = new Set();
|
|
106
|
+
return (snap) => {
|
|
107
|
+
const name = snap.type;
|
|
108
|
+
const registered = registry && typeof name === 'string' && registry.viewTypes.has(name)
|
|
109
|
+
? registry.getViewType(name)
|
|
110
|
+
: undefined;
|
|
111
|
+
const props = registered?.isStateModelLoaded
|
|
112
|
+
? registered.stateModel.properties
|
|
113
|
+
: model.properties;
|
|
114
|
+
if (props !== cachedProps) {
|
|
115
|
+
cachedProps = props;
|
|
116
|
+
cachedKeys = new Set(Object.keys(props));
|
|
117
|
+
}
|
|
118
|
+
return cachedKeys;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function classify(snap, { keys, passThrough }, known, out) {
|
|
122
|
+
for (const [key, value] of Object.entries(snap)) {
|
|
123
|
+
const spec = keys[key];
|
|
124
|
+
if (IDENTITY.has(key)) {
|
|
125
|
+
out.state[key] = value;
|
|
126
|
+
}
|
|
127
|
+
else if (spec?.kind === 'launch') {
|
|
128
|
+
out.launch[key] = value;
|
|
129
|
+
}
|
|
130
|
+
else if (spec?.kind === 'replay') {
|
|
131
|
+
out.state[key] = value;
|
|
132
|
+
out.launch[key] = value;
|
|
133
|
+
}
|
|
134
|
+
else if (spec) {
|
|
135
|
+
const { launch, state } = splitEntries(spec.kind, value);
|
|
136
|
+
if (spec.kind === 'rows' && launch !== undefined && state !== undefined) {
|
|
137
|
+
// A row list indexes against `levels` and `tracks[i]`, so lifting half
|
|
138
|
+
// of it renumbers the other half. Nothing here can throw — a pure
|
|
139
|
+
// preprocessor runs against snapshots the union is about to reject — so
|
|
140
|
+
// the whole list goes to the bucket afterAttach reports and the view
|
|
141
|
+
// comes up on its import form rather than on a silently misaligned
|
|
142
|
+
// stack.
|
|
143
|
+
out.malformed[key] = value;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
if (launch !== undefined) {
|
|
147
|
+
out.launch[key] = launch;
|
|
148
|
+
}
|
|
149
|
+
if (state !== undefined) {
|
|
150
|
+
out.state[key] = state;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else if (known.has(key) || passThrough.includes(key)) {
|
|
155
|
+
out.state[key] = value;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
out.unknown[key] = value;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// BreakpointSplitView's v4 `init` was a bare array of panels rather than an
|
|
163
|
+
// object of settings. A positional list can only be the view's row list, and a
|
|
164
|
+
// view declares at most one, so it is read as that key rather than classified
|
|
165
|
+
// per index — which would name "0" and "1" as unknown keys.
|
|
166
|
+
function legacyInitSnapshot(init, { keys }) {
|
|
167
|
+
const rows = Object.entries(keys).find(([, spec]) => spec.kind === 'rows')?.[0];
|
|
168
|
+
return Array.isArray(init) && rows ? { [rows]: init } : init;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Accept a view's settings written directly on the view object, and move the
|
|
172
|
+
* ones a launcher has to resolve into the internal `launch` property.
|
|
173
|
+
*
|
|
174
|
+
* The partition is a `preProcessSnapshot` and is PURE. A session's view type is
|
|
175
|
+
* a `types.union`, so MST runs every member's preprocessor against every
|
|
176
|
+
* candidate snapshot while deciding which one matches, and runs it about twice
|
|
177
|
+
* more per instantiation; a warning from in here fires against snapshots that
|
|
178
|
+
* are about to be rejected. `afterAttach` — reached only by a snapshot that won
|
|
179
|
+
* — reports what the partition captured.
|
|
180
|
+
*
|
|
181
|
+
* `registry` is the PluginManager. With it the partition classifies against
|
|
182
|
+
* the view type as registered, `extendViewType`'s added properties included;
|
|
183
|
+
* without it, against the model as wrapped here. `materialized` draws the line
|
|
184
|
+
* past which the blob is no longer persisted; see `LaunchInputOptions`.
|
|
185
|
+
*
|
|
186
|
+
* ORDER: MST runs preprocessors in the reverse of the order they were added, so
|
|
187
|
+
* this belongs on the chain BEFORE a view's own legacy-key preprocessor, where
|
|
188
|
+
* it partitions the snapshot MST finally consumes rather than a key that remap
|
|
189
|
+
* is about to convert.
|
|
190
|
+
*
|
|
191
|
+
* The widening cast is the LAST link that may change the creation type: it
|
|
192
|
+
* replaces `CustomC`, so a `.props()` added after it is invisible to
|
|
193
|
+
* `SnapshotIn`. Further `preProcessSnapshot`/`postProcessSnapshot` links are
|
|
194
|
+
* fine — both carry `CustomC` through.
|
|
195
|
+
*
|
|
196
|
+
* Not `types.snapshotProcessor`, which carries the same widened input and stops
|
|
197
|
+
* being a `ModelType`. `PluginManager.pluggableMstType` filters union members on
|
|
198
|
+
* `isModelType`, so a wrapped view is dropped from the session's view union
|
|
199
|
+
* without a word, and `ViewType.stateModel` and every `.properties`
|
|
200
|
+
* introspection site break with it.
|
|
201
|
+
*/
|
|
202
|
+
export function withLaunchInput(model, registration, { registry, materialized }) {
|
|
203
|
+
const knownProps = knownPropsResolver(model, registry);
|
|
204
|
+
const partitioned = model
|
|
205
|
+
.preProcessSnapshot((snap) => {
|
|
206
|
+
if (!isObject(snap)) {
|
|
207
|
+
return snap;
|
|
208
|
+
}
|
|
209
|
+
const known = knownProps(snap);
|
|
210
|
+
const { init, ...rest } = snap;
|
|
211
|
+
const out = {
|
|
212
|
+
state: {},
|
|
213
|
+
launch: {},
|
|
214
|
+
unknown: {},
|
|
215
|
+
malformed: {},
|
|
216
|
+
};
|
|
217
|
+
if (isObject(init)) {
|
|
218
|
+
// v4's nesting, unwrapped rather than refused: a nested key sorts the
|
|
219
|
+
// same three ways a flat one does, so honoring it costs one more pass
|
|
220
|
+
// and a deprecation warning, where dropping it opens an admin's
|
|
221
|
+
// `defaultSession` on its defaults. First, so a snapshot spelling one
|
|
222
|
+
// key both ways resolves to the flat one the docs teach.
|
|
223
|
+
classify(legacyInitSnapshot(init, registration), registration, known, out);
|
|
224
|
+
out.launch.legacyInit = true;
|
|
225
|
+
}
|
|
226
|
+
classify(rest, registration, known, out);
|
|
227
|
+
if (Object.keys(out.unknown).length) {
|
|
228
|
+
out.launch.unknown = out.unknown;
|
|
229
|
+
}
|
|
230
|
+
if (Object.keys(out.malformed).length) {
|
|
231
|
+
out.launch.malformed = out.malformed;
|
|
232
|
+
}
|
|
233
|
+
const persisted = out.state[LAUNCH];
|
|
234
|
+
return Object.keys(out.launch).length
|
|
235
|
+
? {
|
|
236
|
+
...out.state,
|
|
237
|
+
[LAUNCH]: {
|
|
238
|
+
...(isObject(persisted) ? persisted : {}),
|
|
239
|
+
...out.launch,
|
|
240
|
+
},
|
|
241
|
+
}
|
|
242
|
+
: out.state;
|
|
243
|
+
})
|
|
244
|
+
.actions(self => ({
|
|
245
|
+
afterAttach() {
|
|
246
|
+
const { launch } = self;
|
|
247
|
+
if (launch?.legacyInit) {
|
|
248
|
+
reportLegacyInit(self);
|
|
249
|
+
}
|
|
250
|
+
reportUnknownKeys(self, Object.keys(launch?.unknown ?? {}));
|
|
251
|
+
reportMalformedRows(self, Object.keys(launch?.malformed ?? {}));
|
|
252
|
+
},
|
|
253
|
+
}))
|
|
254
|
+
// Whole while the view has yet to materialize, since the pending launch is
|
|
255
|
+
// then the only thing a reload can rebuild the view from, and gone once it
|
|
256
|
+
// has — the report keys with it, so a saved session never carries a
|
|
257
|
+
// typo report about content it no longer holds. `legacyInit` goes either
|
|
258
|
+
// way: it names the SPELLING of the snapshot this view was opened from,
|
|
259
|
+
// and the saved one does not use it, so persisting it would report nesting
|
|
260
|
+
// on every restore forever (`pendingLaunch` excludes the report keys, so
|
|
261
|
+
// no launch run ever clears it).
|
|
262
|
+
.postProcessSnapshot((snap) => {
|
|
263
|
+
const launch = snap[LAUNCH];
|
|
264
|
+
if (!isObject(launch)) {
|
|
265
|
+
return snap;
|
|
266
|
+
}
|
|
267
|
+
const { legacyInit, ...kept } = launch;
|
|
268
|
+
return Object.keys(kept).length &&
|
|
269
|
+
!materialized(snap)
|
|
270
|
+
? { ...snap, [LAUNCH]: kept }
|
|
271
|
+
: Object.fromEntries(Object.entries(snap).filter(([key]) => key !== LAUNCH));
|
|
272
|
+
});
|
|
273
|
+
return partitioned;
|
|
274
|
+
}
|