@datalayer/jupyter-react 1.1.5 → 1.1.7

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 (46) hide show
  1. package/lib/components/notebook/Notebook.d.ts +2 -1
  2. package/lib/components/notebook/Notebook.js +5 -0
  3. package/lib/components/notebook/Notebook.js.map +1 -1
  4. package/lib/components/notebook/Notebook2.d.ts +1 -1
  5. package/lib/components/notebook/Notebook2.js +1 -1
  6. package/lib/components/notebook/Notebook2.js.map +1 -1
  7. package/lib/components/notebook/Notebook2Adapter.d.ts +62 -0
  8. package/lib/components/notebook/Notebook2Adapter.js +122 -0
  9. package/lib/components/notebook/Notebook2Adapter.js.map +1 -0
  10. package/lib/components/notebook/Notebook2Base.js +41 -1
  11. package/lib/components/notebook/Notebook2Base.js.map +1 -1
  12. package/lib/components/notebook/Notebook2State.d.ts +30 -0
  13. package/lib/components/notebook/Notebook2State.js +65 -0
  14. package/lib/components/notebook/Notebook2State.js.map +1 -0
  15. package/lib/components/notebook/NotebookAdapter.d.ts +1 -0
  16. package/lib/components/notebook/NotebookAdapter.js +88 -0
  17. package/lib/components/notebook/NotebookAdapter.js.map +1 -1
  18. package/lib/components/notebook/cell/sidebar/CellSidebarExtension.js +3 -5
  19. package/lib/components/notebook/cell/sidebar/CellSidebarExtension.js.map +1 -1
  20. package/lib/components/notebook/index.d.ts +2 -0
  21. package/lib/components/notebook/index.js +2 -0
  22. package/lib/components/notebook/index.js.map +1 -1
  23. package/lib/components/notebook/toolbar/NotebookToolbar.js +2 -1
  24. package/lib/components/notebook/toolbar/NotebookToolbar.js.map +1 -1
  25. package/lib/examples/Notebook2Actions.d.ts +1 -0
  26. package/lib/examples/Notebook2Actions.js +31 -0
  27. package/lib/examples/Notebook2Actions.js.map +1 -0
  28. package/lib/examples/NotebookThemeColormode.js +2 -2
  29. package/lib/examples/NotebookThemeColormode.js.map +1 -1
  30. package/lib/examples/extensions/celltoolbar/CellToolbarComponent.js +2 -1
  31. package/lib/examples/extensions/celltoolbar/CellToolbarComponent.js.map +1 -1
  32. package/lib/examples/toolbars/NotebookToolbarAutoSave.js +2 -1
  33. package/lib/examples/toolbars/NotebookToolbarAutoSave.js.map +1 -1
  34. package/lib/state/JupyterReactState.d.ts +9 -0
  35. package/lib/state/JupyterReactState.js +6 -0
  36. package/lib/state/JupyterReactState.js.map +1 -1
  37. package/lib/theme/JupyterPalette.d.ts +1 -0
  38. package/lib/theme/JupyterPalette.js +22 -0
  39. package/lib/theme/JupyterPalette.js.map +1 -0
  40. package/lib/theme/JupyterReactTheme.d.ts +9 -1
  41. package/lib/theme/JupyterReactTheme.js +62 -10
  42. package/lib/theme/JupyterReactTheme.js.map +1 -1
  43. package/lib/theme/index.d.ts +1 -0
  44. package/lib/theme/index.js +4 -1
  45. package/lib/theme/index.js.map +1 -1
  46. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { CSSProperties } from 'react';
2
2
  import { Colormode } from '../theme';
3
3
  import '@primer/primitives/dist/css/functional/themes/light.css';
4
4
  import '@primer/primitives/dist/css/functional/themes/dark.css';
@@ -15,6 +15,14 @@ type IJupyterLabThemeProps = {
15
15
  colormode?: Colormode;
16
16
  loadJupyterLabCss?: boolean;
17
17
  theme?: Record<string, any>;
18
+ /**
19
+ * Base styles
20
+ */
21
+ baseStyles?: CSSProperties;
18
22
  };
23
+ /**
24
+ * ThemeProvider component changing color mode with JupyterLab theme
25
+ * if embedded in Jupyter or with the browser color scheme preference.
26
+ */
19
27
  export declare function JupyterReactTheme(props: React.PropsWithChildren<IJupyterLabThemeProps>): JSX.Element;
20
28
  export default JupyterReactTheme;
@@ -1,12 +1,14 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  /*
3
3
  * Copyright (c) 2021-2023 Datalayer, Inc.
4
4
  *
5
5
  * MIT License
6
6
  */
7
- import { createContext, useContext, useEffect, useState } from 'react';
7
+ import { createContext, useContext, useEffect, useState, } from 'react';
8
8
  import { BaseStyles, ThemeProvider } from '@primer/react';
9
+ import { setupPrimerPortals } from '@datalayer/primer-addons';
9
10
  import { JupyterLabCss, jupyterLabTheme } from '../theme';
11
+ import { loadJupyterConfig } from '../jupyter';
10
12
  import { useJupyterReactStore } from '../state';
11
13
  import '@primer/primitives/dist/css/functional/themes/light.css';
12
14
  import '@primer/primitives/dist/css/functional/themes/dark.css';
@@ -28,21 +30,71 @@ export function useJupyterReactColormode() {
28
30
  }
29
31
  return colormode;
30
32
  }
33
+ /**
34
+ * ThemeProvider component changing color mode with JupyterLab theme
35
+ * if embedded in Jupyter or with the browser color scheme preference.
36
+ */
31
37
  export function JupyterReactTheme(props) {
32
- const { children, colormode: colormodeProps = 'light', loadJupyterLabCss = true, theme = jupyterLabTheme, } = props;
38
+ const { children, colormode: colormodeProps = 'light', loadJupyterLabCss = true, theme = jupyterLabTheme, ...rest } = props;
39
+ const { colormode: colormodeFromStore, jupyterLabAdapter } = useJupyterReactStore();
33
40
  const [colormode, setColormode] = useState(colormodeProps);
34
- const { colormode: colormodeFromStore } = useJupyterReactStore();
41
+ const [inJupyterLab, setInJupterLab] = useState(undefined);
42
+ useEffect(() => {
43
+ const { insideJupyterLab } = loadJupyterConfig();
44
+ setInJupterLab(insideJupyterLab);
45
+ }, []);
35
46
  useEffect(() => {
36
- setColormode(colormodeProps);
37
- }, [colormodeProps]);
47
+ if (colormodeFromStore !== colormode) {
48
+ setColormode(colormodeFromStore);
49
+ }
50
+ }, [colormodeFromStore, inJupyterLab]);
38
51
  useEffect(() => {
39
- setColormode(colormodeFromStore);
40
- }, [colormodeFromStore]);
41
- return (_jsxs(JupyterReactColormodeContext.Provider, { value: colormode, children: [loadJupyterLabCss && _jsx(JupyterLabCss, { colormode: colormode }), _jsx(ThemeProvider, { theme: theme, colorMode: colormode === 'light' ? 'day' : 'night', dayScheme: "light", nightScheme: "dark", children: _jsx(BaseStyles, { style: {
52
+ if (inJupyterLab !== undefined) {
53
+ function colorSchemeFromMedia({ matches }) {
54
+ /*
55
+ // TODO manage the case where user change the colormode
56
+ const colormode = matches ? 'dark' : 'light';
57
+ setColormode(colormode);
58
+ setupPrimerPortals(colormode);
59
+ */
60
+ }
61
+ function updateColorMode(themeManager) {
62
+ const colormode = themeManager.theme && !themeManager.isLight(themeManager.theme)
63
+ ? 'dark'
64
+ : 'light';
65
+ setColormode(colormode);
66
+ setupPrimerPortals(colormode);
67
+ }
68
+ if (inJupyterLab) {
69
+ const themeManager = jupyterLabAdapter?.service('@jupyterlab/apputils-extension:themes');
70
+ if (themeManager) {
71
+ updateColorMode(themeManager);
72
+ themeManager.themeChanged.connect(updateColorMode);
73
+ return () => {
74
+ themeManager.themeChanged.disconnect(updateColorMode);
75
+ };
76
+ }
77
+ }
78
+ else {
79
+ colorSchemeFromMedia({
80
+ matches: window.matchMedia('(prefers-color-scheme: dark)').matches,
81
+ });
82
+ window
83
+ .matchMedia('(prefers-color-scheme: dark)')
84
+ .addEventListener('change', colorSchemeFromMedia);
85
+ return () => {
86
+ window
87
+ .matchMedia('(prefers-color-scheme: dark)')
88
+ .removeEventListener('change', colorSchemeFromMedia);
89
+ };
90
+ }
91
+ }
92
+ }, [inJupyterLab, jupyterLabAdapter]);
93
+ return inJupyterLab !== undefined ? (_jsxs(JupyterReactColormodeContext.Provider, { value: colormode, children: [loadJupyterLabCss && _jsx(JupyterLabCss, { colormode: colormode }), _jsx(ThemeProvider, { colorMode: colormode, theme: theme, dayScheme: "light", nightScheme: "dark", children: _jsx(BaseStyles, { style: {
42
94
  backgroundColor: 'var(--bgColor-default)',
43
95
  color: 'var(--fgColor-default)',
44
96
  fontSize: 'var(--text-body-size-medium)',
45
- }, children: children }) })] }));
97
+ }, ...rest, children: children }) })] })) : (_jsx(_Fragment, {}));
46
98
  }
47
99
  export default JupyterReactTheme;
48
100
  //# sourceMappingURL=JupyterReactTheme.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JupyterReactTheme.js","sourceRoot":"","sources":["../../src/theme/JupyterReactTheme.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAa,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,yDAAyD,CAAC;AACjE,OAAO,wDAAwD,CAAC;AAEhE,OAAO,4DAA4D,CAAC;AACpE,OAAO,wDAAwD,CAAC;AAChE,OAAO,6DAA6D,CAAC;AACrE,OAAO,6DAA6D,CAAC;AACrE,OAAO,2DAA2D,CAAC;AACnE,OAAO,sDAAsD,CAAC;AAC9D,OAAO,0DAA0D,CAAC;AAClE,OAAO,kEAAkE,CAAC;AAE1E,+BAA+B;AAC/B,MAAM,4BAA4B,GAAG,aAAa,CAChD,SAAS,CACV,CAAC;AAEF,gDAAgD;AAChD,MAAM,UAAU,wBAAwB;IACtC,MAAM,SAAS,GAAG,UAAU,CAAC,4BAA4B,CAAC,CAAC;IAC3D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAQD,MAAM,UAAU,iBAAiB,CAC/B,KAAqD;IAErD,MAAM,EACJ,QAAQ,EACR,SAAS,EAAE,cAAc,GAAG,OAAO,EACnC,iBAAiB,GAAG,IAAI,EACxB,KAAK,GAAG,eAAe,GACxB,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAY,cAAc,CAAC,CAAC;IACtE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACjE,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,cAAc,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACrB,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACzB,OAAO,CACL,MAAC,4BAA4B,CAAC,QAAQ,IAAC,KAAK,EAAE,SAAS,aACpD,iBAAiB,IAAI,KAAC,aAAa,IAAC,SAAS,EAAE,SAAS,GAAI,EAC7D,KAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAClD,SAAS,EAAC,OAAO,EACjB,WAAW,EAAC,MAAM,YAElB,KAAC,UAAU,IACT,KAAK,EAAE;wBACL,eAAe,EAAE,wBAAwB;wBACzC,KAAK,EAAE,wBAAwB;wBAC/B,QAAQ,EAAE,8BAA8B;qBACzC,YAEA,QAAQ,GACE,GACC,IACsB,CACzC,CAAC;AACJ,CAAC;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"JupyterReactTheme.js","sourceRoot":"","sources":["../../src/theme/JupyterReactTheme.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from './themes';
2
2
  export * from './JupyterLabColormode';
3
3
  export * from './JupyterLabCss';
4
+ export * from './JupyterPalette';
4
5
  export * from './JupyterReactTheme';
@@ -4,8 +4,11 @@
4
4
  * MIT License
5
5
  */
6
6
  export * from './themes';
7
- // export * from './JupyterLabCssImports'; // Leave this commented otherwise webpack may break in consumers.
8
7
  export * from './JupyterLabColormode';
9
8
  export * from './JupyterLabCss';
9
+ export * from './JupyterPalette';
10
10
  export * from './JupyterReactTheme';
11
+ // Do NOT export JupyterLabCssImports here...
12
+ // !!! Leave this export commented otherwise webpack may break in consumers
13
+ // export * from './JupyterLabCssImports';
11
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AACzB,4GAA4G;AAC5G,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AAEzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAEpC,6CAA6C;AAC7C,2EAA2E;AAC3E,0CAA0C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datalayer/jupyter-react",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "Jupyter React - React.js components 100% compatible with Jupyter.",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",
@@ -29,7 +29,7 @@
29
29
  "access": "public"
30
30
  },
31
31
  "scripts": {
32
- "build": "gulp resources-to-lib && tsc && webpack",
32
+ "build": "gulp resources-to-lib && tsc && node scripts/patch-vscode-highlighting.js && webpack",
33
33
  "build:lib": "tsc",
34
34
  "build:prod": "gulp resources-to-lib && tsc && npm run clean && npm run build:lib",
35
35
  "build:tsc:watch:res": "gulp resources-to-lib-watch",
@@ -69,7 +69,7 @@
69
69
  "@codemirror/lang-python": "^6.0.1",
70
70
  "@codemirror/state": "^6.2.0",
71
71
  "@codemirror/view": "^6.7.0",
72
- "@datalayer/primer-addons": "^1.0.3",
72
+ "@datalayer/primer-addons": "^1.0.4",
73
73
  "@jupyter-widgets/base": "^6.0.0",
74
74
  "@jupyter-widgets/controls": "^5.0.0",
75
75
  "@jupyter-widgets/html-manager": "^1.0.0",
@@ -162,7 +162,7 @@
162
162
  "utf-8-validate": "^6.0.3",
163
163
  "wildcard-match": "^5.1.2",
164
164
  "y-protocols": "^1.0.5",
165
- "y-websocket": "^3.0.0",
165
+ "y-websocket": "3.0.0",
166
166
  "yjs": "^13.6.24",
167
167
  "zustand": "^4.4.1"
168
168
  },