@jbrowse/core 5.0.0-beta.8 → 5.0.0-beta.9
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 +427 -130
- 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 +8 -9
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +8 -13
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +3 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -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 +1 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +1 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +53 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +0 -16
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +7 -34
- package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
- package/esm/BaseFeatureWidget/formatDetails.js +46 -79
- package/esm/BaseFeatureWidget/index.d.ts +1 -0
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +35 -28
- package/esm/BaseFeatureWidget/stateModelFactory.js +94 -102
- package/esm/BaseFeatureWidget/types.d.ts +3 -0
- package/esm/BaseFeatureWidget/util.d.ts +0 -3
- package/esm/BaseFeatureWidget/util.js +0 -17
- package/esm/PluginLoader.d.ts +14 -9
- package/esm/PluginLoader.js +34 -26
- package/esm/PluginManager.d.ts +4 -4
- package/esm/PluginManager.js +1 -1
- package/esm/ReExports/coreModules.generated.d.ts +2 -0
- package/esm/ReExports/coreModules.generated.js +492 -0
- package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/coreWorkerModules.generated.js +453 -0
- package/esm/ReExports/frameworkModules.d.ts +2 -0
- package/esm/ReExports/frameworkModules.js +67 -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 +493 -79
- package/esm/ReExports/modules.d.ts +1 -1
- package/esm/ReExports/modules.js +10 -87
- package/esm/ReExports/registry.d.ts +1 -0
- package/esm/ReExports/registry.js +23 -5
- package/esm/ReExports/uiStub.d.ts +2 -1
- package/esm/ReExports/uiStub.js +24 -2
- package/esm/ReExports/workerModules.js +8 -12
- package/esm/TextSearch/TextSearchManager.d.ts +3 -12
- package/esm/TextSearch/TextSearchManager.js +22 -10
- package/esm/assemblyManager/assembly.d.ts +10 -14
- package/esm/assemblyManager/assembly.js +10 -14
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +23 -81
- package/esm/assemblyManager/assemblyManager.d.ts +10 -16
- package/esm/assemblyManager/assemblyManager.js +7 -10
- package/esm/assemblyManager/loadRefNameMap.js +3 -3
- package/esm/configuration/configurationSchema.d.ts +75 -31
- package/esm/configuration/configurationSchema.js +74 -40
- package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
- package/esm/configuration/configurationSchemaUnion.js +59 -0
- package/esm/configuration/configurationSlot.d.ts +37 -12
- package/esm/configuration/configurationSlot.js +83 -22
- 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/getConf.d.ts +17 -9
- package/esm/configuration/getConf.js +52 -7
- package/esm/configuration/index.d.ts +11 -4
- package/esm/configuration/index.js +7 -4
- package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
- package/esm/configuration/mergeFormatCallbacks.js +13 -10
- package/esm/configuration/readConfObject.d.ts +2 -22
- package/esm/configuration/readConfObject.js +15 -49
- package/esm/configuration/requirements.d.ts +37 -0
- package/esm/configuration/requirements.js +88 -0
- package/esm/configuration/schemaRegistry.d.ts +21 -1
- package/esm/configuration/schemaRegistry.js +11 -0
- package/esm/configuration/schemaTypes.d.ts +3 -0
- package/esm/configuration/schemaTypes.js +10 -0
- package/esm/configuration/slotFacade.d.ts +35 -4
- package/esm/configuration/slotFacade.js +96 -9
- package/esm/configuration/snapshotPreprocess.d.ts +27 -0
- package/esm/configuration/snapshotPreprocess.js +102 -0
- package/esm/configuration/types.d.ts +161 -22
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +2 -2
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +11 -2
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +12 -1
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +2 -3
- package/esm/data_adapters/BaseAdapter/featureDensity.js +2 -3
- package/esm/data_adapters/BaseAdapter/index.d.ts +22 -3
- package/esm/data_adapters/BaseAdapter/types.d.ts +3 -4
- package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
- package/esm/data_adapters/BaseAdapter/zoomRange.js +1 -0
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +9 -11
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +1 -3
- package/esm/data_adapters/getSequenceSubAdapter.js +1 -3
- package/esm/pluggableElementTypes/AdapterType.d.ts +7 -7
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +1 -1
- package/esm/pluggableElementTypes/RpcMethodType.js +3 -8
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
- package/esm/pluggableElementTypes/index.d.ts +1 -1
- package/esm/pluggableElementTypes/index.js +1 -1
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +17 -7
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +45 -48
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +40 -36
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +10 -13
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +6 -6
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +37 -17
- package/esm/pluggableElementTypes/models/BaseViewModel.js +25 -10
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +1 -1
- 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 +57 -141
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +22 -26
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +2 -2
- 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 +15 -7
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +38 -29
- package/esm/pluggableElementTypes/models/index.d.ts +1 -2
- package/esm/pluggableElementTypes/models/index.js +1 -2
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +3 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +4 -4
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
- package/esm/rpc/BaseRpcDriver.d.ts +1 -2
- package/esm/rpc/BaseRpcDriver.js +23 -30
- package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
- package/esm/rpc/MainThreadRpcDriver.js +13 -8
- package/esm/rpc/RpcClient.d.ts +17 -6
- package/esm/rpc/RpcClient.js +42 -12
- package/esm/rpc/RpcManager.d.ts +8 -10
- package/esm/rpc/RpcManager.js +1 -1
- package/esm/rpc/RpcRegistry.d.ts +8 -2
- package/esm/rpc/RpcServer.d.ts +3 -1
- package/esm/rpc/RpcServer.js +19 -12
- package/esm/rpc/WebWorkerRpcDriver.d.ts +3 -3
- package/esm/rpc/WebWorkerRpcDriver.js +9 -47
- package/esm/rpc/byteBudget.d.ts +3 -5
- package/esm/rpc/byteBudget.js +4 -4
- package/esm/rpc/configSchema.d.ts +7 -21
- package/esm/rpc/coreRpcMethods.d.ts +1 -0
- package/esm/rpc/coreRpcMethods.js +1 -0
- package/esm/rpc/methods/CoreEncodeFeatures.d.ts +6 -5
- package/esm/rpc/methods/CoreEncodeFeatures.js +26 -31
- package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.js +31 -0
- package/esm/rpc/methods/CoreGetExportData.js +2 -2
- package/esm/rpc/methods/CoreGetFeatureDensity.js +2 -2
- package/esm/rpc/methods/CoreGetFeatures.js +2 -2
- package/esm/rpc/methods/CoreGetSequence.js +2 -2
- package/esm/rpc/methods/layerFeatures.d.ts +26 -0
- package/esm/rpc/methods/layerFeatures.js +40 -0
- package/esm/svg/SvgExport.js +3 -4
- package/esm/svg/SvgThemeProviders.d.ts +12 -0
- package/esm/svg/SvgThemeProviders.js +15 -0
- package/esm/svg/exportViewSvg.d.ts +32 -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/svgReady.d.ts +8 -7
- package/esm/svg/svgReady.js +8 -7
- package/esm/svg/trackNames.d.ts +5 -5
- package/esm/svg/trackNames.js +6 -6
- package/esm/svg/wrapSvgExport.js +6 -74
- package/esm/ui/CascadingMenu.js +83 -86
- package/esm/ui/ErrorMessageStackTraceDialog.js +0 -5
- 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/LoadingOverlay.js +3 -1
- package/esm/ui/MonospaceTextField.d.ts +2 -1
- package/esm/ui/MonospaceTextField.js +21 -19
- package/esm/ui/PaletteContext.d.ts +7 -9
- package/esm/ui/PaletteContext.js +24 -10
- package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
- package/esm/ui/RefNameAutocomplete/index.js +1 -1
- package/esm/ui/ScrollChrome.d.ts +6 -9
- package/esm/ui/ScrollChrome.js +5 -6
- package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
- package/esm/ui/ScrollEdgeShadow.js +9 -24
- package/esm/ui/SettingsChangesTable.js +3 -3
- package/esm/ui/VerticalScrollbar.d.ts +13 -34
- package/esm/ui/VerticalScrollbar.js +29 -83
- package/esm/ui/ViewLoadingScreen.d.ts +2 -2
- package/esm/ui/ViewLoadingScreen.js +3 -3
- package/esm/ui/colorScale.d.ts +26 -1
- package/esm/ui/colorScale.js +28 -5
- package/esm/ui/colors.d.ts +49 -1
- package/esm/ui/colors.js +139 -4
- package/esm/ui/hoverBoxStyle.d.ts +14 -2
- package/esm/ui/hoverBoxStyle.js +17 -2
- package/esm/ui/index.d.ts +5 -3
- package/esm/ui/index.js +9 -7
- package/esm/ui/launchViewMenu.js +3 -3
- package/esm/ui/legendSpec.d.ts +2 -0
- package/esm/ui/legendSpec.js +3 -0
- package/esm/ui/palette.d.ts +0 -1
- package/esm/ui/palette.js +3 -27
- package/esm/ui/replaceViewAction.d.ts +1 -1
- package/esm/ui/replaceViewAction.js +1 -1
- package/esm/ui/theme.d.ts +1 -1
- package/esm/ui/theme.js +6 -40
- package/esm/ui/viewHeaderHeight.d.ts +1 -0
- package/esm/ui/viewHeaderHeight.js +1 -0
- package/esm/util/Base1DUtils.d.ts +1 -1
- package/esm/util/Base1DUtils.js +2 -2
- package/esm/util/SvgCanvas.d.ts +15 -13
- package/esm/util/SvgCanvas.js +72 -53
- package/esm/util/aborting.d.ts +39 -0
- package/esm/util/aborting.js +84 -0
- package/esm/util/adapterMetadata.d.ts +1 -1
- package/esm/util/adapterMetadata.js +6 -6
- package/esm/util/addAndShowTrack.d.ts +1 -4
- package/esm/util/addRelativeUris.d.ts +10 -2
- package/esm/util/addRelativeUris.js +22 -7
- package/esm/util/addTrackFromWidget.d.ts +2 -5
- 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/bandLayout.d.ts +4 -4
- package/esm/util/bandLayout.js +4 -4
- package/esm/util/bezierConnector.js +5 -4
- package/esm/util/bgzfWorkerPool.d.ts +20 -74
- package/esm/util/bgzfWorkerPool.js +20 -74
- package/esm/util/cachedSetup.d.ts +1 -1
- package/esm/util/cachedSetup.js +2 -2
- package/esm/util/categoricalField.d.ts +37 -0
- package/esm/util/categoricalField.js +52 -0
- 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 +1 -2
- package/esm/util/colorBits.js +17 -39
- package/esm/util/colorRamp.d.ts +27 -1
- package/esm/util/colorRamp.js +56 -2
- package/esm/util/colorSchemes.d.ts +9 -0
- package/esm/util/colorSchemes.js +7 -0
- package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +11 -14
- package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +14 -26
- 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 +7 -12
- package/esm/util/expandLooseSearchIndex.d.ts +7 -0
- package/esm/util/expandLooseSearchIndex.js +25 -0
- package/esm/util/featureTransforms.d.ts +30 -3
- package/esm/util/featureTransforms.js +233 -36
- package/esm/util/fetchAndMaybeUnzip.js +5 -6
- package/esm/util/fetchContext.d.ts +5 -6
- package/esm/util/fetchContext.js +1 -1
- package/esm/util/fetchHub.d.ts +3 -1
- package/esm/util/fetchHub.js +2 -2
- 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/groupKeys.d.ts +75 -0
- package/esm/util/groupKeys.js +152 -0
- package/esm/util/highlights.d.ts +6 -4
- package/esm/util/highlights.js +12 -25
- package/esm/util/hooks.d.ts +1 -2
- package/esm/util/hooks.js +1 -2
- package/esm/util/index.d.ts +3 -3
- package/esm/util/index.js +4 -3
- package/esm/util/indexCandidates.js +1 -1
- package/esm/util/installFetch.d.ts +13 -10
- package/esm/util/installFetch.js +11 -10
- package/esm/util/installPrerequisiteFetch.d.ts +5 -3
- package/esm/util/installPrerequisiteFetch.js +3 -4
- package/esm/util/io/index.js +12 -12
- package/esm/util/isDataCurrent.d.ts +7 -5
- package/esm/util/isDataCurrent.js +9 -6
- 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 +7 -5
- package/esm/util/jexlStrings.d.ts +3 -4
- package/esm/util/jexlStrings.js +2 -3
- package/esm/util/legendCandidates.d.ts +31 -27
- package/esm/util/legendCandidates.js +79 -53
- package/esm/util/localStorage.js +4 -4
- package/esm/util/markEncoding.d.ts +32 -16
- package/esm/util/markEncoding.js +177 -150
- package/esm/util/markEncodingTypes.d.ts +137 -66
- package/esm/util/mstUtils.d.ts +19 -22
- package/esm/util/mstUtils.js +19 -22
- 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.js +1 -2
- package/esm/util/openViews.d.ts +1 -0
- package/esm/util/openViews.js +3 -3
- package/esm/util/parseLineByLine.d.ts +3 -4
- package/esm/util/parseLineByLine.js +7 -13
- package/esm/util/progress.d.ts +21 -21
- package/esm/util/progress.js +27 -26
- package/esm/util/renameRegions.d.ts +1 -2
- package/esm/util/renderToStaticMarkup.js +16 -16
- package/esm/util/rxjs.d.ts +7 -8
- package/esm/util/rxjs.js +12 -15
- package/esm/util/simpleFeature.d.ts +0 -1
- package/esm/util/svgColorProps.d.ts +11 -0
- package/esm/util/svgColorProps.js +28 -1
- package/esm/util/tabix.d.ts +3 -4
- package/esm/util/tabix.js +6 -7
- package/esm/util/thresholdScale.d.ts +54 -0
- package/esm/util/thresholdScale.js +112 -0
- package/esm/util/timeGate.d.ts +4 -5
- package/esm/util/timeGate.js +4 -5
- package/esm/util/trackConfigDelta.d.ts +22 -18
- package/esm/util/trackConfigDelta.js +40 -38
- package/esm/util/tracks.d.ts +27 -4
- package/esm/util/tracks.js +116 -43
- package/esm/util/translateTranscript.d.ts +44 -0
- package/esm/util/translateTranscript.js +102 -0
- package/esm/util/types/index.d.ts +19 -7
- package/esm/util/types/services.d.ts +1 -1
- package/esm/util/unknownSnapshotKeys.d.ts +15 -0
- package/esm/util/unknownSnapshotKeys.js +13 -0
- package/esm/util/useFeatureSequence.js +4 -4
- package/esm/util/useFetch.d.ts +3 -4
- package/esm/util/useFetch.js +5 -6
- package/esm/util/usePanelVirtualScroll.d.ts +7 -39
- package/esm/util/usePanelVirtualScroll.js +9 -40
- 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 -84
- package/esm/util/viewHighlights.d.ts +3 -0
- package/esm/util/viewHighlights.js +5 -0
- package/esm/util/viewStatus.d.ts +24 -15
- package/esm/util/viewStatus.js +17 -0
- package/esm/util/withLaunchInput.d.ts +1 -1
- package/esm/util/withLaunchInput.js +0 -4
- package/package.json +26 -12
- 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/barrelOnlyNames.d.ts +0 -5
- package/esm/ReExports/barrelOnlyNames.js +0 -63
- package/esm/ReExports/index.d.ts +0 -1
- package/esm/ReExports/index.js +0 -1
- package/esm/ReExports/publicTracks.d.ts +0 -1
- package/esm/ReExports/publicTracks.js +0 -14
- package/esm/ReExports/publicUi.d.ts +0 -4
- package/esm/ReExports/publicUi.js +0 -33
- package/esm/ReExports/publicUtil.d.ts +0 -1
- package/esm/ReExports/publicUtil.js +0 -32
- package/esm/ReExports/sharedModules.d.ts +0 -96
- package/esm/ReExports/sharedModules.js +0 -66
- package/esm/ReExports/workerNamespaceNames.d.ts +0 -11
- package/esm/ReExports/workerNamespaceNames.js +0 -275
- package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
- package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
- package/esm/ui/highlightChipReveal.d.ts +0 -32
- package/esm/ui/highlightChipReveal.js +0 -39
- package/esm/util/adapterConfigKey.d.ts +0 -12
- package/esm/util/adapterConfigKey.js +0 -14
- package/esm/util/stopToken.d.ts +0 -212
- package/esm/util/stopToken.js +0 -438
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
/** What every view's `exportSvg` accepts. A view with more extends it. */
|
|
3
|
+
export interface ViewExportSvgOptions {
|
|
4
|
+
rasterizeLayers?: boolean;
|
|
5
|
+
format?: 'svg' | 'png';
|
|
6
|
+
filename?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Whether to hand the result to the browser's download path. Default true,
|
|
9
|
+
* which is the dialog. False returns the markup and writes nothing — the
|
|
10
|
+
* caller has somewhere of its own to put it, and a download it did not ask
|
|
11
|
+
* for would land beside that under a name it did not choose.
|
|
12
|
+
*/
|
|
13
|
+
save?: boolean;
|
|
14
|
+
Wrapper?: React.FC<{
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
}>;
|
|
17
|
+
/** a named theme; the session's active one when absent */
|
|
18
|
+
themeName?: string;
|
|
19
|
+
fontFamily?: string;
|
|
20
|
+
/**
|
|
21
|
+
* headless canvas factory for `rasterizeLayers` (jbrowse-img passes
|
|
22
|
+
* node-canvas); without it the raster path needs a DOM canvas
|
|
23
|
+
*/
|
|
24
|
+
createCanvas?: (width: number, height: number) => HTMLCanvasElement;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The body of every view's `exportSvg` action: load the view's lazy
|
|
28
|
+
* `renderToSvg`, render, save unless `save: false`, and return the markup.
|
|
29
|
+
*/
|
|
30
|
+
export declare function exportViewSvg<V, O extends ViewExportSvgOptions>(view: V, opts: O, load: () => Promise<{
|
|
31
|
+
renderToSvg: (view: V, opts: O) => Promise<string>;
|
|
32
|
+
}>): Promise<string>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The body of every view's `exportSvg` action: load the view's lazy
|
|
3
|
+
* `renderToSvg`, render, save unless `save: false`, and return the markup.
|
|
4
|
+
*/
|
|
5
|
+
export async function exportViewSvg(view, opts, load) {
|
|
6
|
+
const { renderToSvg } = await load();
|
|
7
|
+
const html = await renderToSvg(view, opts);
|
|
8
|
+
if (opts.save !== false) {
|
|
9
|
+
const { saveSvgAsImage } = await import('./saveSvgAsImage.js');
|
|
10
|
+
await saveSvgAsImage(html, opts);
|
|
11
|
+
}
|
|
12
|
+
return html;
|
|
13
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The markup rules an SVG file has to meet that a React render into an HTML
|
|
3
|
+
* container does not: XML entities only (HTML serialization writes U+00A0 as
|
|
4
|
+
* ` `, which XML does not define, so one no-break space in a feature label
|
|
5
|
+
* made the whole file unparsable), SVG 1.1 colors, and rounded numbers.
|
|
6
|
+
*/
|
|
7
|
+
export declare function normalizeSvgMarkup(html: string): string;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { splitPaintAlpha } from '../util/svgColorProps.js';
|
|
2
|
+
// Coordinates computed as bp/bpPerPx land in attributes as long floats
|
|
3
|
+
// (`-32.4816`) or floating-point noise (`242.23839999999998`), bloating exports
|
|
4
|
+
// with sub-pixel precision no renderer needs. Round numbers inside a fixed
|
|
5
|
+
// whitelist of numeric attributes, so a track label or id that happens to look
|
|
6
|
+
// numeric is never a candidate for rewriting. Geometry gets 2 decimals
|
|
7
|
+
// (sub-pixel); opacity keeps 3 so a faint 0.01 mark can't collapse to 0.
|
|
8
|
+
const COORD_ATTRS = [
|
|
9
|
+
'x',
|
|
10
|
+
'y',
|
|
11
|
+
'x1',
|
|
12
|
+
'y1',
|
|
13
|
+
'x2',
|
|
14
|
+
'y2',
|
|
15
|
+
'cx',
|
|
16
|
+
'cy',
|
|
17
|
+
'r',
|
|
18
|
+
'rx',
|
|
19
|
+
'ry',
|
|
20
|
+
'dx',
|
|
21
|
+
'dy',
|
|
22
|
+
'width',
|
|
23
|
+
'height',
|
|
24
|
+
'd',
|
|
25
|
+
'points',
|
|
26
|
+
'transform',
|
|
27
|
+
'gradientTransform',
|
|
28
|
+
'offset',
|
|
29
|
+
'viewBox',
|
|
30
|
+
'font-size',
|
|
31
|
+
'stroke-width',
|
|
32
|
+
'stroke-dashoffset',
|
|
33
|
+
'stroke-dasharray',
|
|
34
|
+
];
|
|
35
|
+
const OPACITY_ATTRS = [
|
|
36
|
+
'opacity',
|
|
37
|
+
'fill-opacity',
|
|
38
|
+
'stroke-opacity',
|
|
39
|
+
'stop-opacity',
|
|
40
|
+
'flood-opacity',
|
|
41
|
+
];
|
|
42
|
+
function makeRounder(attrs, digits) {
|
|
43
|
+
const re = new RegExp(`\\b(${attrs.join('|')})="([^"]*)"`, 'g');
|
|
44
|
+
return (svg) => svg.replaceAll(re, (_, name, value) => {
|
|
45
|
+
const rounded = value.replaceAll(/-?\d+\.\d{3,}(?:e-?\d+)?/gi, n => String(Number.parseFloat(Number(n).toFixed(digits))));
|
|
46
|
+
return `${name}="${rounded}"`;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const roundCoords = makeRounder(COORD_ATTRS, 2);
|
|
50
|
+
const roundOpacity = makeRounder(OPACITY_ATTRS, 3);
|
|
51
|
+
const OPACITY_OF = {
|
|
52
|
+
fill: 'fill-opacity',
|
|
53
|
+
stroke: 'stroke-opacity',
|
|
54
|
+
'stop-color': 'stop-opacity',
|
|
55
|
+
'flood-color': 'flood-opacity',
|
|
56
|
+
};
|
|
57
|
+
// a start tag, attribute by attribute, so a `>` inside a quoted value (which
|
|
58
|
+
// HTML serialization leaves unescaped) cannot end it early
|
|
59
|
+
const START_TAG = /<[a-zA-Z][^\s/>]*(?:\s+[^\s"'/=>]+="[^"]*")*\s*\/?>/g;
|
|
60
|
+
const PAINT_ATTR = /\s(fill|stroke|stop-color|flood-color)="([^"]*)"/g;
|
|
61
|
+
const MAY_NEED_SPLIT = /(?:fill|stroke|stop-color|flood-color)="(?:rgba|hsl|#[\da-f]{4}"|#[\da-f]{8}"|transparent)/i;
|
|
62
|
+
// A JSX color reaches the file as React wrote it, and theme palette entries are
|
|
63
|
+
// routinely `rgba()` (`divider`, `text.secondary`) — see `splitPaintAlpha` for
|
|
64
|
+
// why that can't stay. Scoped to one start tag so an alpha folds into an
|
|
65
|
+
// opacity attribute the element already carries instead of duplicating it,
|
|
66
|
+
// which would not parse as XML.
|
|
67
|
+
function splitTagPaintAlpha(tag) {
|
|
68
|
+
const alphas = [];
|
|
69
|
+
let out = tag.replaceAll(PAINT_ATTR, (whole, name, value) => {
|
|
70
|
+
const split = splitPaintAlpha(value);
|
|
71
|
+
if (!split) {
|
|
72
|
+
return whole;
|
|
73
|
+
}
|
|
74
|
+
if (split.opacity < 1) {
|
|
75
|
+
alphas.push([OPACITY_OF[name], split.opacity]);
|
|
76
|
+
}
|
|
77
|
+
return ` ${name}="${split.color}"`;
|
|
78
|
+
});
|
|
79
|
+
for (const [opacityName, alpha] of alphas) {
|
|
80
|
+
const existing = new RegExp(`\\s${opacityName}="([^"]*)"`);
|
|
81
|
+
out = existing.test(out)
|
|
82
|
+
? out.replace(existing, (_, v) => ` ${opacityName}="${Number(v) * alpha}"`)
|
|
83
|
+
: out.replace(/\s*(\/?>)$/, ` ${opacityName}="${alpha}"$1`);
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The markup rules an SVG file has to meet that a React render into an HTML
|
|
89
|
+
* container does not: XML entities only (HTML serialization writes U+00A0 as
|
|
90
|
+
* ` `, which XML does not define, so one no-break space in a feature label
|
|
91
|
+
* made the whole file unparsable), SVG 1.1 colors, and rounded numbers.
|
|
92
|
+
*/
|
|
93
|
+
export function normalizeSvgMarkup(html) {
|
|
94
|
+
const xml = html.replaceAll(' ', ' ');
|
|
95
|
+
const split = MAY_NEED_SPLIT.test(xml)
|
|
96
|
+
? xml.replaceAll(START_TAG, splitTagPaintAlpha)
|
|
97
|
+
: xml;
|
|
98
|
+
return roundOpacity(roundCoords(split));
|
|
99
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
export { normalizeSvgMarkup } from './normalizeSvgMarkup.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Serialize one standalone SVG document: its own clip-id numbering run (see
|
|
5
|
+
* `withFreshSvgClipIds`) and the file rules in `normalizeSvgMarkup`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function serializeSvg(node: React.ReactElement): string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { withFreshSvgClipIds } from '../util/SvgCanvas.js';
|
|
2
|
+
import { renderToStaticMarkup } from '../util/renderToStaticMarkup.js';
|
|
3
|
+
import { normalizeSvgMarkup } from './normalizeSvgMarkup.js';
|
|
4
|
+
export { normalizeSvgMarkup } from './normalizeSvgMarkup.js';
|
|
5
|
+
/**
|
|
6
|
+
* Serialize one standalone SVG document: its own clip-id numbering run (see
|
|
7
|
+
* `withFreshSvgClipIds`) and the file rules in `normalizeSvgMarkup`.
|
|
8
|
+
*/
|
|
9
|
+
export function serializeSvg(node) {
|
|
10
|
+
return normalizeSvgMarkup(withFreshSvgClipIds(() => renderToStaticMarkup(node)));
|
|
11
|
+
}
|
package/esm/svg/svgReady.d.ts
CHANGED
|
@@ -37,9 +37,9 @@ export interface SvgReadyTerminals {
|
|
|
37
37
|
* data is current for what is on screen, or the fetch reached a terminal state.
|
|
38
38
|
*
|
|
39
39
|
* Single-sourced for the same reason as `computeDisplayPhase`: every display
|
|
40
|
-
* family expresses freshness differently — spatial coverage (per-region),
|
|
41
|
-
*
|
|
42
|
-
*
|
|
40
|
+
* family expresses freshness differently — spatial coverage (per-region), a
|
|
41
|
+
* signature compare (global, dotplot, synteny) — but the *policy* wrapping it
|
|
42
|
+
* is identical, and each of the five
|
|
43
43
|
* hand-written copies this replaced was one place to forget a terminal and hang
|
|
44
44
|
* the export, or to forget freshness and capture a stale viewport (both have
|
|
45
45
|
* shipped; see agent-docs/reference/SVG_EXPORT.md).
|
|
@@ -55,10 +55,11 @@ export declare function computeSvgReady({ error, regionTooLarge, extraTerminal,
|
|
|
55
55
|
* Off-screen renderers (SVG export, headless jbrowse-img) must wait until the
|
|
56
56
|
* display reaches a terminal state before reading its data. That whole policy
|
|
57
57
|
* lives in `svgReady`; this is the one shared way to await it, so renderers
|
|
58
|
-
* never re-inline `data != null || error || …`.
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* that
|
|
58
|
+
* never re-inline `data != null || error || …`. `svgReady` is a terminal state
|
|
59
|
+
* (data loaded, or error / too-large / canceled), so it resolves once the fetch
|
|
60
|
+
* it observes settles; the half-hour `timeoutMs` is only a backstop for a gate
|
|
61
|
+
* that cannot converge. If a throwing `svgReady` getter rejects the wait, that
|
|
62
|
+
* error propagates faithfully rather than being masked.
|
|
62
63
|
*
|
|
63
64
|
* It then fails the export if the terminal it settled on was the error
|
|
64
65
|
* (`throwOnExportErrors`, below, for why that is fatal), making this the exact
|
package/esm/svg/svgReady.js
CHANGED
|
@@ -17,9 +17,9 @@ const SVG_READY_TIMEOUT_MS = 1_800_000;
|
|
|
17
17
|
* data is current for what is on screen, or the fetch reached a terminal state.
|
|
18
18
|
*
|
|
19
19
|
* Single-sourced for the same reason as `computeDisplayPhase`: every display
|
|
20
|
-
* family expresses freshness differently — spatial coverage (per-region),
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* family expresses freshness differently — spatial coverage (per-region), a
|
|
21
|
+
* signature compare (global, dotplot, synteny) — but the *policy* wrapping it
|
|
22
|
+
* is identical, and each of the five
|
|
23
23
|
* hand-written copies this replaced was one place to forget a terminal and hang
|
|
24
24
|
* the export, or to forget freshness and capture a stale viewport (both have
|
|
25
25
|
* shipped; see agent-docs/reference/SVG_EXPORT.md).
|
|
@@ -37,10 +37,11 @@ export function computeSvgReady({ error, regionTooLarge, extraTerminal, fetchCan
|
|
|
37
37
|
* Off-screen renderers (SVG export, headless jbrowse-img) must wait until the
|
|
38
38
|
* display reaches a terminal state before reading its data. That whole policy
|
|
39
39
|
* lives in `svgReady`; this is the one shared way to await it, so renderers
|
|
40
|
-
* never re-inline `data != null || error || …`.
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* that
|
|
40
|
+
* never re-inline `data != null || error || …`. `svgReady` is a terminal state
|
|
41
|
+
* (data loaded, or error / too-large / canceled), so it resolves once the fetch
|
|
42
|
+
* it observes settles; the half-hour `timeoutMs` is only a backstop for a gate
|
|
43
|
+
* that cannot converge. If a throwing `svgReady` getter rejects the wait, that
|
|
44
|
+
* error propagates faithfully rather than being masked.
|
|
44
45
|
*
|
|
45
46
|
* It then fails the export if the terminal it settled on was the error
|
|
46
47
|
* (`throwOnExportErrors`, below, for why that is fatal), making this the exact
|
package/esm/svg/trackNames.d.ts
CHANGED
|
@@ -12,10 +12,10 @@ export declare function svgTrackName(track: {
|
|
|
12
12
|
configuration: AnyConfigurationModel;
|
|
13
13
|
}, session: TrackCatalog): string;
|
|
14
14
|
/**
|
|
15
|
-
* Tell the user which visible tracks the export left out
|
|
16
|
-
* type implements no `renderSvg`. Called once per
|
|
17
|
-
* the stacked views flatten every row's
|
|
18
|
-
* than notifying per row.
|
|
15
|
+
* Tell the user which visible tracks the export left out, by default because
|
|
16
|
+
* their display type implements no `renderSvg`. Called once per reason per
|
|
17
|
+
* export, after the renders — the stacked views flatten every row's
|
|
18
|
+
* `skippedTracks` into one call rather than notifying per row.
|
|
19
19
|
*
|
|
20
20
|
* Skipping is deliberate (see `SvgExportTrack.renderSvg`), so this is
|
|
21
21
|
* informational rather than an error. But it is not silent: a figure that is
|
|
@@ -24,4 +24,4 @@ export declare function svgTrackName(track: {
|
|
|
24
24
|
*/
|
|
25
25
|
export declare function notifySkippedSvgTracks(session: NotificationSink & TrackCatalog, skipped: {
|
|
26
26
|
configuration: AnyConfigurationModel;
|
|
27
|
-
}[]): void;
|
|
27
|
+
}[], reason?: string): void;
|
package/esm/svg/trackNames.js
CHANGED
|
@@ -12,20 +12,20 @@ export function svgTrackName(track, session) {
|
|
|
12
12
|
return coarseStripHTML(getTrackName(track.configuration, session));
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
* Tell the user which visible tracks the export left out
|
|
16
|
-
* type implements no `renderSvg`. Called once per
|
|
17
|
-
* the stacked views flatten every row's
|
|
18
|
-
* than notifying per row.
|
|
15
|
+
* Tell the user which visible tracks the export left out, by default because
|
|
16
|
+
* their display type implements no `renderSvg`. Called once per reason per
|
|
17
|
+
* export, after the renders — the stacked views flatten every row's
|
|
18
|
+
* `skippedTracks` into one call rather than notifying per row.
|
|
19
19
|
*
|
|
20
20
|
* Skipping is deliberate (see `SvgExportTrack.renderSvg`), so this is
|
|
21
21
|
* informational rather than an error. But it is not silent: a figure that is
|
|
22
22
|
* quietly short a track is worse than one whose author was told why, and the
|
|
23
23
|
* reader of the file has no way to tell the difference afterwards.
|
|
24
24
|
*/
|
|
25
|
-
export function notifySkippedSvgTracks(session, skipped) {
|
|
25
|
+
export function notifySkippedSvgTracks(session, skipped, reason = `${skipped.length === 1 ? 'Its display type does' : 'Their display types do'} not support SVG export.`) {
|
|
26
26
|
if (skipped.length === 0) {
|
|
27
27
|
return;
|
|
28
28
|
}
|
|
29
29
|
const names = skipped.map(t => svgTrackName(t, session)).join(', ');
|
|
30
|
-
session.notify(`Not included in the SVG: ${names}. ${
|
|
30
|
+
session.notify(`Not included in the SVG: ${names}. ${reason}`, 'info');
|
|
31
31
|
}
|
package/esm/svg/wrapSvgExport.js
CHANGED
|
@@ -1,78 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { ThemeProvider } from '@mui/material';
|
|
3
|
-
import { StyleThemeProvider } from '../ui/PaletteContext.js';
|
|
4
|
-
import { resolveStyleTheme } from '../ui/styleTheme.js';
|
|
5
|
-
import { createJBrowseTheme } from '../ui/theme.js';
|
|
6
|
-
import { resetSvgClipIds } from '../util/SvgCanvas.js';
|
|
7
|
-
import { renderToStaticMarkup } from '../util/renderToStaticMarkup.js';
|
|
8
2
|
import { SVGExportRoot } from './SvgExport.js';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
// (sub-pixel); opacity keeps 3 so a faint 0.01 mark can't collapse to 0.
|
|
15
|
-
const COORD_ATTRS = [
|
|
16
|
-
'x',
|
|
17
|
-
'y',
|
|
18
|
-
'x1',
|
|
19
|
-
'y1',
|
|
20
|
-
'x2',
|
|
21
|
-
'y2',
|
|
22
|
-
'cx',
|
|
23
|
-
'cy',
|
|
24
|
-
'r',
|
|
25
|
-
'rx',
|
|
26
|
-
'ry',
|
|
27
|
-
'dx',
|
|
28
|
-
'dy',
|
|
29
|
-
'width',
|
|
30
|
-
'height',
|
|
31
|
-
'd',
|
|
32
|
-
'points',
|
|
33
|
-
'transform',
|
|
34
|
-
'gradientTransform',
|
|
35
|
-
'offset',
|
|
36
|
-
'viewBox',
|
|
37
|
-
'font-size',
|
|
38
|
-
'stroke-width',
|
|
39
|
-
'stroke-dashoffset',
|
|
40
|
-
'stroke-dasharray',
|
|
41
|
-
];
|
|
42
|
-
const OPACITY_ATTRS = [
|
|
43
|
-
'opacity',
|
|
44
|
-
'fill-opacity',
|
|
45
|
-
'stroke-opacity',
|
|
46
|
-
'stop-opacity',
|
|
47
|
-
'flood-opacity',
|
|
48
|
-
];
|
|
49
|
-
function makeRounder(attrs, digits) {
|
|
50
|
-
const re = new RegExp(`\\b(${attrs.join('|')})="([^"]*)"`, 'g');
|
|
51
|
-
return (svg) => svg.replaceAll(re, (_, name, value) => {
|
|
52
|
-
const rounded = value.replaceAll(/-?\d+\.\d{3,}(?:e-?\d+)?/gi, n => String(Number.parseFloat(Number(n).toFixed(digits))));
|
|
53
|
-
return `${name}="${rounded}"`;
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
const roundCoords = makeRounder(COORD_ATTRS, 2);
|
|
57
|
-
const roundOpacity = makeRounder(OPACITY_ATTRS, 3);
|
|
58
|
-
function roundSvgNumbers(svg) {
|
|
59
|
-
return roundOpacity(roundCoords(svg));
|
|
60
|
-
}
|
|
61
|
-
// The identical tail every view's `renderToSvg` ends in: resolve the export
|
|
62
|
-
// theme into a provider, apply the caller-supplied Wrapper, wrap the content in
|
|
63
|
-
// the root <svg>, and serialize to a markup string. Callers keep their own
|
|
64
|
-
// layout math and children — only this boilerplate lives here.
|
|
3
|
+
import { SvgThemeProviders } from './SvgThemeProviders.js';
|
|
4
|
+
import { serializeSvg } from './serializeSvg.js';
|
|
5
|
+
// The identical tail every view's `renderToSvg` ends in: the export theme's
|
|
6
|
+
// providers, the caller-supplied Wrapper, the root <svg>, and serialization to
|
|
7
|
+
// a file's markup. Callers keep their own layout math and children.
|
|
65
8
|
export function wrapSvgExport({ theme, width, height, margin, fontFamily, Wrapper = ({ children }) => children, children, }) {
|
|
66
|
-
|
|
67
|
-
// document-global because SVG ids are, so left alone it also spans documents
|
|
68
|
-
// and numbers each export from wherever the last one stopped — see
|
|
69
|
-
// resetSvgClipIds. This is the only place that can reset it: the render below
|
|
70
|
-
// is synchronous, so it is the one moment a whole document's ids are minted
|
|
71
|
-
// with no other export able to interleave.
|
|
72
|
-
resetSvgClipIds();
|
|
73
|
-
// Both providers, from the same options — the export renders outside every
|
|
74
|
-
// React tree the app mounted, so a `makeStyles` component here would
|
|
75
|
-
// otherwise style itself from the *default* style theme and quietly ignore
|
|
76
|
-
// the theme the user picked in the export dialog.
|
|
77
|
-
return roundSvgNumbers(renderToStaticMarkup(_jsx(ThemeProvider, { theme: createJBrowseTheme(theme), children: _jsx(StyleThemeProvider, { theme: resolveStyleTheme({ configTheme: theme }), children: _jsx(Wrapper, { children: _jsx(SVGExportRoot, { width: width, height: height, margin: margin, fontFamily: fontFamily, children: children }) }) }) })));
|
|
9
|
+
return serializeSvg(_jsx(SvgThemeProviders, { theme: theme, children: _jsx(Wrapper, { children: _jsx(SVGExportRoot, { width: width, height: height, margin: margin, fontFamily: fontFamily, children: children }) }) }));
|
|
78
10
|
}
|