@jbrowse/app-core 4.3.0 → 5.0.0-beta.2

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.
Files changed (158) hide show
  1. package/esm/AppSession/AppRootModel.d.ts +30 -0
  2. package/esm/AppSession/AppRootModel.js +1 -0
  3. package/esm/AppSession/AppSessionMixin.d.ts +1598 -0
  4. package/esm/AppSession/AppSessionMixin.js +62 -0
  5. package/esm/AppSession/index.d.ts +2 -0
  6. package/esm/AppSession/index.js +1 -0
  7. package/esm/Assemblies/AssembliesMixin.d.ts +225 -0
  8. package/esm/Assemblies/AssembliesMixin.js +149 -0
  9. package/esm/Assemblies/index.d.ts +1 -2
  10. package/esm/Assemblies/index.js +1 -2
  11. package/esm/HistoryManagement/index.d.ts +19 -0
  12. package/esm/HistoryManagement/index.js +42 -5
  13. package/esm/JBrowseConfig/RootConfiguration.d.ts +171 -78
  14. package/esm/JBrowseConfig/RootConfiguration.js +85 -7
  15. package/esm/JBrowseConfig/index.d.ts +173 -84
  16. package/esm/JBrowseConfig/index.js +62 -2
  17. package/esm/JBrowseModel/index.d.ts +180 -95
  18. package/esm/JBrowseModel/index.js +122 -21
  19. package/esm/JbApi/index.d.ts +2 -0
  20. package/esm/JbApi/index.js +1 -0
  21. package/esm/JbApi/jbApi.d.ts +325 -0
  22. package/esm/JbApi/jbApi.js +748 -0
  23. package/esm/RootMenu/index.d.ts +69 -3
  24. package/esm/RootMenu/index.js +96 -61
  25. package/esm/SessionSpec/index.d.ts +6 -0
  26. package/esm/SessionSpec/index.js +3 -0
  27. package/esm/SessionSpec/lgvUrlInit.d.ts +79 -0
  28. package/esm/SessionSpec/lgvUrlInit.js +158 -0
  29. package/esm/SessionSpec/loadSessionSpec.d.ts +21 -0
  30. package/esm/SessionSpec/loadSessionSpec.js +392 -0
  31. package/esm/SessionSpec/parseSessionSpecUrl.d.ts +13 -0
  32. package/esm/SessionSpec/parseSessionSpecUrl.js +196 -0
  33. package/esm/SessionSpec/types.d.ts +31 -0
  34. package/esm/SessionSpec/types.js +1 -0
  35. package/esm/WorkspaceLayout/LayoutRenderer.d.ts +24 -0
  36. package/esm/WorkspaceLayout/LayoutRenderer.js +185 -0
  37. package/esm/WorkspaceLayout/PanelView.d.ts +13 -0
  38. package/esm/WorkspaceLayout/PanelView.js +99 -0
  39. package/esm/WorkspaceLayout/TabStrip.d.ts +14 -0
  40. package/esm/WorkspaceLayout/TabStrip.js +226 -0
  41. package/esm/WorkspaceLayout/WorkspaceContainer.d.ts +16 -0
  42. package/esm/WorkspaceLayout/WorkspaceContainer.js +105 -0
  43. package/esm/WorkspaceLayout/WorkspacePanelActions.d.ts +24 -0
  44. package/esm/WorkspaceLayout/WorkspacePanelActions.js +120 -0
  45. package/esm/WorkspaceLayout/WorkspaceTab.d.ts +27 -0
  46. package/esm/WorkspaceLayout/WorkspaceTab.js +109 -0
  47. package/esm/WorkspaceLayout/dockviewTheme.d.ts +69 -0
  48. package/esm/WorkspaceLayout/dockviewTheme.js +82 -0
  49. package/esm/WorkspaceLayout/dropZone.d.ts +105 -0
  50. package/esm/WorkspaceLayout/dropZone.js +113 -0
  51. package/esm/WorkspaceLayout/index.d.ts +8 -0
  52. package/esm/WorkspaceLayout/index.js +4 -0
  53. package/esm/WorkspaceLayout/model.d.ts +248 -0
  54. package/esm/WorkspaceLayout/model.js +562 -0
  55. package/esm/WorkspaceLayout/panelChrome.d.ts +19 -0
  56. package/esm/WorkspaceLayout/panelChrome.js +4 -0
  57. package/esm/WorkspaceLayout/spec.d.ts +88 -0
  58. package/esm/WorkspaceLayout/spec.js +226 -0
  59. package/esm/WorkspaceLayout/splitter.d.ts +25 -0
  60. package/esm/WorkspaceLayout/splitter.js +37 -0
  61. package/esm/WorkspaceLayout/tree.d.ts +158 -0
  62. package/esm/WorkspaceLayout/tree.js +379 -0
  63. package/esm/WorkspaceLayout/useLayoutDrag.d.ts +34 -0
  64. package/esm/WorkspaceLayout/useLayoutDrag.js +232 -0
  65. package/esm/index.d.ts +18 -9
  66. package/esm/index.js +16 -9
  67. package/esm/menus.d.ts +55 -68
  68. package/esm/menus.js +117 -86
  69. package/esm/queryParams.d.ts +9 -0
  70. package/esm/queryParams.js +92 -0
  71. package/esm/sessionModelFactory.d.ts +18 -0
  72. package/esm/sessionModelFactory.js +1 -0
  73. package/esm/ui/App/App.d.ts +3 -14
  74. package/esm/ui/App/App.js +30 -17
  75. package/esm/ui/App/AppFab.d.ts +12 -3
  76. package/esm/ui/App/AppFab.js +15 -8
  77. package/esm/ui/App/AppReadyMarker.d.ts +43 -0
  78. package/esm/ui/App/AppReadyMarker.js +56 -0
  79. package/esm/ui/App/AppToolbar.d.ts +2 -14
  80. package/esm/ui/App/AppToolbar.js +23 -24
  81. package/esm/ui/App/ClassicViewsContainer.d.ts +3 -9
  82. package/esm/ui/App/ClassicViewsContainer.js +9 -8
  83. package/esm/ui/App/DialogQueue.d.ts +17 -1
  84. package/esm/ui/App/DialogQueue.js +30 -1
  85. package/esm/ui/App/Drawer.d.ts +1 -1
  86. package/esm/ui/App/Drawer.js +10 -39
  87. package/esm/ui/App/DrawerControls.d.ts +1 -5
  88. package/esm/ui/App/DrawerControls.js +1 -25
  89. package/esm/ui/App/DrawerHeader.d.ts +2 -3
  90. package/esm/ui/App/DrawerHeader.js +24 -10
  91. package/esm/ui/App/DrawerHeaderHelpButton.d.ts +1 -1
  92. package/esm/ui/App/DrawerHeaderHelpButton.js +3 -3
  93. package/esm/ui/App/DrawerHeaderHelpDialog.d.ts +2 -2
  94. package/esm/ui/App/DrawerHeaderHelpDialog.js +3 -4
  95. package/esm/ui/App/DrawerWidget.d.ts +1 -1
  96. package/esm/ui/App/DrawerWidget.js +9 -21
  97. package/esm/ui/App/JBrowseTabMenu.d.ts +2 -3
  98. package/esm/ui/App/JBrowseTabMenu.js +24 -5
  99. package/esm/ui/App/ViewButtons.d.ts +2 -4
  100. package/esm/ui/App/ViewButtons.js +15 -3
  101. package/esm/ui/App/ViewContainer.d.ts +3 -2
  102. package/esm/ui/App/ViewContainer.js +144 -24
  103. package/esm/ui/App/ViewContainerTitle.d.ts +1 -1
  104. package/esm/ui/App/ViewContainerTitle.js +9 -2
  105. package/esm/ui/App/ViewErrorFallback.d.ts +18 -0
  106. package/esm/ui/App/ViewErrorFallback.js +42 -0
  107. package/esm/ui/App/ViewHeader.d.ts +3 -4
  108. package/esm/ui/App/ViewHeader.js +28 -17
  109. package/esm/ui/App/ViewLauncher.d.ts +2 -8
  110. package/esm/ui/App/ViewLauncher.js +7 -5
  111. package/esm/ui/App/ViewMenu.d.ts +3 -5
  112. package/esm/ui/App/ViewMenu.js +87 -92
  113. package/esm/ui/App/ViewStack.d.ts +7 -0
  114. package/esm/ui/App/ViewStack.js +42 -0
  115. package/esm/ui/App/ViewWrapper.d.ts +15 -1
  116. package/esm/ui/App/ViewWrapper.js +26 -10
  117. package/esm/ui/App/ViewsContainer.d.ts +3 -8
  118. package/esm/ui/App/ViewsContainer.js +9 -6
  119. package/esm/ui/App/copyView.js +1 -1
  120. package/esm/ui/App/index.d.ts +2 -1
  121. package/esm/ui/App/index.js +3 -2
  122. package/esm/ui/App/lazyChunk.d.ts +13 -0
  123. package/esm/ui/App/lazyChunk.js +91 -0
  124. package/esm/ui/App/types.d.ts +12 -3
  125. package/esm/ui/App/types.js +1 -1
  126. package/esm/ui/App/useViewVisibility.d.ts +34 -0
  127. package/esm/ui/App/useViewVisibility.js +87 -0
  128. package/esm/ui/App/viewTitle.d.ts +5 -0
  129. package/esm/ui/App/viewTitle.js +9 -0
  130. package/esm/ui/index.d.ts +1 -1
  131. package/esm/ui/index.js +1 -1
  132. package/package.json +12 -17
  133. package/esm/AppFocus/index.d.ts +0 -5
  134. package/esm/AppFocus/index.js +0 -12
  135. package/esm/Assemblies/SessionAssembliesMixin.d.ts +0 -92
  136. package/esm/Assemblies/SessionAssembliesMixin.js +0 -53
  137. package/esm/Assemblies/TemporaryAssembliesMixin.d.ts +0 -10
  138. package/esm/Assemblies/TemporaryAssembliesMixin.js +0 -37
  139. package/esm/DockviewLayout/index.d.ts +0 -35
  140. package/esm/DockviewLayout/index.js +0 -111
  141. package/esm/ui/App/DockviewContext.d.ts +0 -22
  142. package/esm/ui/App/DockviewContext.js +0 -29
  143. package/esm/ui/App/DockviewLeftHeaderActions.d.ts +0 -2
  144. package/esm/ui/App/DockviewLeftHeaderActions.js +0 -58
  145. package/esm/ui/App/DockviewRightHeaderActions.d.ts +0 -2
  146. package/esm/ui/App/DockviewRightHeaderActions.js +0 -100
  147. package/esm/ui/App/DrawerWidgetSelector.d.ts +0 -5
  148. package/esm/ui/App/DrawerWidgetSelector.js +0 -47
  149. package/esm/ui/App/JBrowseViewPanel.d.ts +0 -8
  150. package/esm/ui/App/JBrowseViewPanel.js +0 -40
  151. package/esm/ui/App/JBrowseViewTab.d.ts +0 -8
  152. package/esm/ui/App/JBrowseViewTab.js +0 -97
  153. package/esm/ui/App/ModalWidget.d.ts +0 -6
  154. package/esm/ui/App/ModalWidget.js +0 -48
  155. package/esm/ui/App/TiledViewsContainer.d.ts +0 -6
  156. package/esm/ui/App/TiledViewsContainer.js +0 -366
  157. package/esm/ui/App/dockviewUtils.d.ts +0 -46
  158. package/esm/ui/App/dockviewUtils.js +0 -55
@@ -1,107 +1,200 @@
1
1
  import type PluginManager from '@jbrowse/core/PluginManager';
2
- export default function RootConfiguration({ pluginManager, }: {
2
+ import type { ConfigurationSchemaDefinition } from '@jbrowse/core/configuration';
3
+ export declare const DEFAULT_SHARE_URL = "https://share.jbrowse.org/api/v1/";
4
+ /**
5
+ * #config JBrowseConfiguration
6
+ * #category root
7
+ * this is the entry under the `configuration` key
8
+ * e.g.
9
+ * ```json
10
+ * {
11
+ * assemblies,
12
+ * tracks,
13
+ * configuration: { these entries here }
14
+ * }
15
+ * ```
16
+ */
17
+ export default function RootConfiguration({ pluginManager, extraConfigSlots, }: {
3
18
  pluginManager: PluginManager;
19
+ extraConfigSlots?: ConfigurationSchemaDefinition;
4
20
  }): import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
5
- rpc: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
6
- defaultDriver: {
7
- type: string;
8
- description: string;
9
- defaultValue: string;
21
+ /**
22
+ * #slot configuration.rpc
23
+ * configuration for the RPC system that runs data adapters in web workers,
24
+ * see RpcOptions
25
+ */
26
+ readonly rpc: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
27
+ readonly defaultDriver: {
28
+ readonly type: "string";
29
+ readonly description: "the RPC driver to run data fetching on: MainThreadRpcDriver or WebWorkerRpcDriver. Leave empty to use the default for this application";
30
+ readonly defaultValue: "";
31
+ readonly advanced: true;
32
+ };
33
+ readonly workerCount: {
34
+ readonly type: "number";
35
+ readonly description: "The number of workers to use. If 0 (the default) JBrowse will decide how many workers to use.";
36
+ readonly defaultValue: 0;
37
+ readonly advanced: true;
10
38
  };
11
- drivers: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").ITypeUnion<import("@jbrowse/mobx-state-tree").ModelCreationType<import("@jbrowse/mobx-state-tree/dist/internal").ExtractCFromProps<Record<string, any>>> | undefined, import("@jbrowse/mobx-state-tree").ModelSnapshotType<Record<string, any>>, ({} & Partial<import("@jbrowse/mobx-state-tree/dist/internal").ExtractCFromProps<Record<string, any>>> & import("@jbrowse/mobx-state-tree/dist/internal").NonEmptyObject) | undefined>>, [undefined]>;
12
39
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
13
- highResolutionScaling: {
14
- type: string;
15
- defaultValue: number;
16
- };
17
- formatDetails: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
18
- feature: {
19
- type: string;
20
- description: string;
21
- defaultValue: {};
22
- contextVariable: string[];
40
+ /**
41
+ * #slot configuration.formatDetails
42
+ * jexl callbacks that add, rewrite or hide fields in the feature-details
43
+ * panel of every track at once. Four slots, listed at
44
+ * [FormatDetails](/docs/config/formatdetails); a track can set the same
45
+ * ones on its own `formatDetails` and override individual keys.
46
+ */
47
+ readonly formatDetails: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
48
+ readonly feature: {
49
+ readonly type: "frozen";
50
+ readonly description: "adds extra fields to the feature details";
51
+ readonly defaultValue: {};
52
+ readonly contextVariable: ["feature"];
23
53
  };
24
- subfeatures: {
25
- type: string;
26
- description: string;
27
- defaultValue: {};
28
- contextVariable: string[];
54
+ readonly subfeatures: {
55
+ readonly type: "frozen";
56
+ readonly description: "adds extra fields to the subfeatures of a feature";
57
+ readonly defaultValue: {};
58
+ readonly contextVariable: ["feature"];
29
59
  };
30
- depth: {
31
- type: string;
32
- defaultValue: number;
33
- description: string;
60
+ readonly depth: {
61
+ readonly type: "maybeNumber";
62
+ readonly description: "levels of subfeature the formatDetails.subfeatures callback runs on, default 2";
34
63
  };
35
- maxDepth: {
36
- type: string;
37
- defaultValue: number;
38
- description: string;
64
+ readonly maxDepth: {
65
+ readonly type: "maybeNumber";
66
+ readonly description: "hide subfeatures nested deeper than this, default no limit";
39
67
  };
40
68
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
41
- formatAbout: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
42
- config: {
43
- type: string;
44
- description: string;
45
- defaultValue: {};
46
- contextVariable: string[];
69
+ /**
70
+ * #slot configuration.formatAbout
71
+ * jexl callbacks that add, rewrite or hide fields in the About dialog of
72
+ * every track at once. Two slots, listed at
73
+ * [FormatAbout](/docs/config/formatabout); a track can set the same ones on
74
+ * its own `formatAbout` and override individual keys.
75
+ */
76
+ readonly formatAbout: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
77
+ readonly config: {
78
+ readonly type: "frozen";
79
+ readonly description: "formats configuration object in about dialog";
80
+ readonly defaultValue: {};
81
+ readonly contextVariable: ["config"];
47
82
  };
48
- hideUris: {
49
- type: string;
50
- defaultValue: boolean;
83
+ readonly hideUris: {
84
+ readonly type: "boolean";
85
+ readonly defaultValue: false;
51
86
  };
52
87
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
53
- shareURL: {
54
- type: string;
55
- defaultValue: string;
88
+ /**
89
+ * #slot configuration.shareURL
90
+ * URL of the session-sharing backend used by the Share button, a
91
+ * JBrowse-hosted service by default
92
+ */
93
+ readonly shareURL: {
94
+ readonly type: "string";
95
+ readonly defaultValue: "https://share.jbrowse.org/api/v1/";
96
+ readonly advanced: true;
56
97
  };
57
- disableAnalytics: {
58
- type: string;
59
- defaultValue: boolean;
98
+ /**
99
+ * #slot configuration.disableAnalytics
100
+ * disables collection of anonymous usage analytics
101
+ */
102
+ readonly disableAnalytics: {
103
+ readonly type: "boolean";
104
+ readonly defaultValue: false;
105
+ readonly advanced: true;
60
106
  };
61
- hierarchical: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
62
- sort: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
63
- trackNames: {
64
- type: string;
65
- defaultValue: boolean;
107
+ /**
108
+ * #slot configuration.hierarchical
109
+ * configuration for the hierarchical track selector, controlling sorting
110
+ * and default categories, see HierarchicalConfigSchema
111
+ */
112
+ readonly hierarchical: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
113
+ readonly sort: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
114
+ readonly trackNames: {
115
+ readonly type: "boolean";
116
+ readonly defaultValue: false;
66
117
  };
67
- categories: {
68
- type: string;
69
- defaultValue: boolean;
118
+ readonly categories: {
119
+ readonly type: "boolean";
120
+ readonly defaultValue: false;
70
121
  };
71
122
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
72
- defaultFolderCategories: {
73
- type: string;
74
- description: string;
75
- defaultValue: never[];
123
+ readonly defaultFolderCategories: {
124
+ readonly type: "stringArray";
125
+ readonly description: "list of category names to display as folders by default";
126
+ readonly defaultValue: readonly [];
76
127
  };
77
- defaultCollapsed: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
78
- categoryNames: {
79
- type: string;
80
- defaultValue: never[];
128
+ readonly defaultCollapsed: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
129
+ readonly categoryNames: {
130
+ readonly type: "stringArray";
131
+ readonly defaultValue: readonly [];
81
132
  };
82
- topLevelCategories: {
83
- type: string;
84
- defaultValue: boolean;
133
+ readonly topLevelCategories: {
134
+ readonly type: "boolean";
135
+ readonly defaultValue: false;
85
136
  };
86
- subCategories: {
87
- type: string;
88
- defaultValue: boolean;
137
+ readonly subCategories: {
138
+ readonly type: "boolean";
139
+ readonly defaultValue: false;
89
140
  };
90
141
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
91
142
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
92
- theme: {
93
- type: string;
94
- defaultValue: {};
143
+ /**
144
+ * #slot configuration.preferences
145
+ * user preferences such as scroll-to-zoom and animation behavior, see
146
+ * PreferencesConfigSchema
147
+ */
148
+ readonly preferences: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
149
+ readonly animationMode: {
150
+ readonly model: import("@jbrowse/mobx-state-tree").ISimpleType<"disabled" | "enabled" | "system">;
151
+ readonly type: "stringEnum";
152
+ readonly defaultValue: "enabled";
153
+ };
154
+ readonly scrollZoom: {
155
+ readonly type: "boolean";
156
+ readonly defaultValue: false;
157
+ };
158
+ readonly numberGrouping: {
159
+ readonly type: "boolean";
160
+ readonly defaultValue: true;
161
+ };
162
+ readonly useWorkspaces: {
163
+ readonly type: "boolean";
164
+ readonly defaultValue: false;
165
+ };
166
+ readonly developerMode: {
167
+ readonly type: "boolean";
168
+ readonly defaultValue: false;
169
+ };
170
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
171
+ /**
172
+ * #slot configuration.theme
173
+ */
174
+ readonly theme: {
175
+ readonly type: "frozen";
176
+ readonly description: "Material UI theme overrides applied to the JBrowse UI";
177
+ readonly defaultValue: {};
95
178
  };
96
- extraThemes: {
97
- type: string;
98
- defaultValue: {};
179
+ /**
180
+ * #slot configuration.extraThemes
181
+ */
182
+ readonly extraThemes: {
183
+ readonly type: "frozen";
184
+ readonly description: "additional named themes the user can switch between";
185
+ readonly defaultValue: {};
186
+ readonly advanced: true;
99
187
  };
100
- logoPath: {
101
- type: string;
102
- defaultValue: {
103
- uri: string;
104
- locationType: string;
188
+ /**
189
+ * #slot configuration.logoPath
190
+ */
191
+ readonly logoPath: {
192
+ readonly type: "fileLocation";
193
+ readonly description: "path to a custom logo image displayed in the app header";
194
+ readonly defaultValue: {
195
+ readonly uri: "";
196
+ readonly locationType: "UriLocation";
105
197
  };
198
+ readonly advanced: true;
106
199
  };
107
200
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
@@ -1,40 +1,118 @@
1
1
  import { ConfigurationSchema } from '@jbrowse/core/configuration';
2
2
  import RpcManager from '@jbrowse/core/rpc/RpcManager';
3
- import { FormatAboutConfigSchemaFactory, FormatDetailsConfigSchemaFactory, HierarchicalConfigSchemaFactory, } from '@jbrowse/product-core';
4
- export default function RootConfiguration({ pluginManager, }) {
3
+ import { FormatAboutConfigSchemaFactory, FormatDetailsConfigSchemaFactory, HierarchicalConfigSchemaFactory, PreferencesConfigSchemaFactory, } from '@jbrowse/product-core';
4
+ // The JBrowse-hosted session-sharing backend. Single source of truth for both
5
+ // the write path (this slot's default, read via getConf) and the SessionLoader
6
+ // read path (which reads the raw config snapshot before config is initialized),
7
+ // so the two can't drift onto different endpoints.
8
+ export const DEFAULT_SHARE_URL = 'https://share.jbrowse.org/api/v1/';
9
+ /**
10
+ * #config JBrowseConfiguration
11
+ * #category root
12
+ * this is the entry under the `configuration` key
13
+ * e.g.
14
+ * ```json
15
+ * {
16
+ * assemblies,
17
+ * tracks,
18
+ * configuration: { these entries here }
19
+ * }
20
+ * ```
21
+ */
22
+ export default function RootConfiguration({ pluginManager, extraConfigSlots = {}, }) {
5
23
  return ConfigurationSchema('Root', {
24
+ ...extraConfigSlots,
25
+ /**
26
+ * #slot configuration.rpc
27
+ * configuration for the RPC system that runs data adapters in web workers,
28
+ * see RpcOptions
29
+ */
6
30
  rpc: RpcManager.configSchema,
7
- highResolutionScaling: {
8
- type: 'number',
9
- defaultValue: 2,
10
- },
31
+ /**
32
+ * #slot configuration.formatDetails
33
+ * jexl callbacks that add, rewrite or hide fields in the feature-details
34
+ * panel of every track at once. Four slots, listed at
35
+ * [FormatDetails](/docs/config/formatdetails); a track can set the same
36
+ * ones on its own `formatDetails` and override individual keys.
37
+ */
11
38
  formatDetails: FormatDetailsConfigSchemaFactory(),
39
+ /**
40
+ * #slot configuration.formatAbout
41
+ * jexl callbacks that add, rewrite or hide fields in the About dialog of
42
+ * every track at once. Two slots, listed at
43
+ * [FormatAbout](/docs/config/formatabout); a track can set the same ones on
44
+ * its own `formatAbout` and override individual keys.
45
+ */
12
46
  formatAbout: FormatAboutConfigSchemaFactory(),
47
+ /**
48
+ * #slot configuration.shareURL
49
+ * URL of the session-sharing backend used by the Share button, a
50
+ * JBrowse-hosted service by default
51
+ */
13
52
  shareURL: {
14
53
  type: 'string',
15
- defaultValue: 'https://share.jbrowse.org/api/v1/',
54
+ defaultValue: DEFAULT_SHARE_URL,
55
+ advanced: true,
16
56
  },
57
+ /**
58
+ * #slot configuration.disableAnalytics
59
+ * disables collection of anonymous usage analytics
60
+ */
17
61
  disableAnalytics: {
18
62
  type: 'boolean',
19
63
  defaultValue: false,
64
+ advanced: true,
20
65
  },
66
+ /**
67
+ * #slot configuration.hierarchical
68
+ * configuration for the hierarchical track selector, controlling sorting
69
+ * and default categories, see HierarchicalConfigSchema
70
+ */
21
71
  hierarchical: HierarchicalConfigSchemaFactory(),
72
+ /**
73
+ * #slot configuration.preferences
74
+ * user preferences such as scroll-to-zoom and animation behavior, see
75
+ * PreferencesConfigSchema
76
+ */
77
+ preferences: PreferencesConfigSchemaFactory(),
78
+ /**
79
+ * #slot configuration.theme
80
+ */
22
81
  theme: {
23
82
  type: 'frozen',
83
+ description: 'Material UI theme overrides applied to the JBrowse UI',
24
84
  defaultValue: {},
25
85
  },
86
+ /**
87
+ * #slot configuration.extraThemes
88
+ */
26
89
  extraThemes: {
27
90
  type: 'frozen',
91
+ description: 'additional named themes the user can switch between',
28
92
  defaultValue: {},
93
+ advanced: true,
29
94
  },
95
+ /**
96
+ * #slot configuration.logoPath
97
+ */
30
98
  logoPath: {
31
99
  type: 'fileLocation',
100
+ description: 'path to a custom logo image displayed in the app header',
32
101
  defaultValue: {
33
102
  uri: '',
34
103
  locationType: 'UriLocation',
35
104
  },
105
+ advanced: true,
36
106
  },
107
+ /**
108
+ * #slotAnnot
109
+ * this is a collection of 'namespaced' configs e.g. configuration.YourPlugin.slot
110
+ */
37
111
  ...pluginManager.pluginConfigurationNamespacedSchemas(),
112
+ /**
113
+ * #slotAnnot
114
+ * this is a collection of 'unnamespaced' configs e.g. configuration.slot
115
+ */
38
116
  ...pluginManager.pluginConfigurationUnnamespacedSchemas(),
39
117
  });
40
118
  }