@kanaries/graphic-walker 0.2.14 → 0.2.15

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 (52) hide show
  1. package/dist/App.d.ts +3 -2
  2. package/dist/components/callout.d.ts +2 -0
  3. package/dist/components/toolbar/components.d.ts +4 -1
  4. package/dist/components/toolbar/index.d.ts +2 -0
  5. package/dist/components/toolbar/toolbar-item.d.ts +3 -0
  6. package/dist/components/tooltip.d.ts +2 -0
  7. package/dist/fields/components.d.ts +0 -1
  8. package/dist/fields/filterField/filterEditDialog.d.ts +1 -1
  9. package/dist/graphic-walker.es.js +15103 -14997
  10. package/dist/graphic-walker.es.js.map +1 -1
  11. package/dist/graphic-walker.umd.js +134 -264
  12. package/dist/graphic-walker.umd.js.map +1 -1
  13. package/dist/interfaces.d.ts +2 -0
  14. package/dist/renderer/index.d.ts +6 -4
  15. package/dist/utils/media.d.ts +2 -1
  16. package/dist/vis/react-vega.d.ts +4 -2
  17. package/dist/vis/theme.d.ts +36 -20
  18. package/dist/visualSettings/index.d.ts +2 -1
  19. package/package.json +1 -1
  20. package/src/App.tsx +19 -14
  21. package/src/components/callout.tsx +9 -7
  22. package/src/components/clickMenu.tsx +1 -7
  23. package/src/components/modal.tsx +1 -15
  24. package/src/components/sizeSetting.tsx +2 -2
  25. package/src/components/tabs/editableTab.tsx +2 -2
  26. package/src/components/toolbar/components.tsx +8 -23
  27. package/src/components/toolbar/index.tsx +11 -4
  28. package/src/components/toolbar/toolbar-button.tsx +2 -1
  29. package/src/components/toolbar/toolbar-item.tsx +17 -12
  30. package/src/components/toolbar/toolbar-select-button.tsx +9 -13
  31. package/src/components/toolbar/toolbar-toggle-button.tsx +2 -1
  32. package/src/components/tooltip.tsx +10 -6
  33. package/src/dataSource/dataSelection/csvData.tsx +1 -1
  34. package/src/dataSource/index.tsx +2 -3
  35. package/src/fields/components.tsx +13 -50
  36. package/src/fields/datasetFields/index.tsx +3 -4
  37. package/src/fields/encodeFields/singleEncodeEditor.tsx +1 -1
  38. package/src/fields/filterField/filterEditDialog.tsx +63 -99
  39. package/src/fields/filterField/slider.tsx +1 -1
  40. package/src/insightBoard/mainBoard.tsx +9 -2
  41. package/src/interfaces.ts +4 -1
  42. package/src/locales/en-US.json +5 -2
  43. package/src/locales/i18n.ts +7 -0
  44. package/src/locales/ja-JP.json +195 -0
  45. package/src/locales/zh-CN.json +5 -2
  46. package/src/renderer/index.tsx +96 -71
  47. package/src/utils/media.ts +16 -11
  48. package/src/vis/react-vega.tsx +18 -3
  49. package/src/vis/theme.ts +23 -25
  50. package/src/visualSettings/index.tsx +12 -32
  51. package/dist/components/container.d.ts +0 -2
  52. package/src/components/container.tsx +0 -25
@@ -29,38 +29,14 @@ import { useTranslation } from 'react-i18next';
29
29
  import { ResizeDialog } from '../components/sizeSetting';
30
30
  import { GEMO_TYPES, STACK_MODE, CHART_LAYOUT_TYPE } from '../config';
31
31
  import { useGlobalStore } from '../store';
32
- import { IStackMode, EXPLORATION_TYPES, IBrushDirection, BRUSH_DIRECTIONS } from '../interfaces';
32
+ import { IStackMode, EXPLORATION_TYPES, IBrushDirection, BRUSH_DIRECTIONS, IDarkMode } from '../interfaces';
33
33
  import { IReactVegaHandler } from '../vis/react-vega';
34
34
  import Toolbar, { ToolbarItemProps } from '../components/toolbar';
35
35
  import { ButtonWithShortcut } from './menubar';
36
+ import { useCurrentMediaTheme } from '../utils/media';
36
37
  import throttle from '../utils/throttle';
37
38
 
38
39
 
39
- export const LiteContainer = styled.div`
40
- margin: 0.2em;
41
- border: 1px solid #e5e7eb;
42
- padding: 1em;
43
- background-color: #fff;
44
- @media (prefers-color-scheme: dark) {
45
- background-color: #000;
46
- border: 1px solid #4b5563;
47
- }
48
- .menu-root {
49
- position: relative;
50
- & > *:not(.trigger) {
51
- display: flex;
52
- flex-direction: column;
53
- position: absolute;
54
- right: 0;
55
- top: 100%;
56
- border: 1px solid #8884;
57
- }
58
- &:not(:hover) > *:not(.trigger):not(:hover) {
59
- display: none;
60
- }
61
- }
62
- `;
63
-
64
40
  const Invisible = styled.div`
65
41
  clip: rect(1px, 1px, 1px, 1px);
66
42
  clip-path: inset(50%);
@@ -79,16 +55,17 @@ const FormContainer = styled.div`
79
55
  display: flex;
80
56
  flex-direction: column;
81
57
  color: #444;
82
- @media (prefers-color-scheme: dark) {
58
+ .dark {
83
59
  color: #aaa;
84
60
  }
85
61
  `;
86
62
 
87
63
  interface IVisualSettings {
64
+ darkModePreference: IDarkMode;
88
65
  rendererHandler?: React.RefObject<IReactVegaHandler>;
89
66
  }
90
67
 
91
- const VisualSettings: React.FC<IVisualSettings> = ({ rendererHandler }) => {
68
+ const VisualSettings: React.FC<IVisualSettings> = ({ rendererHandler, darkModePreference }) => {
92
69
  const { vizStore } = useGlobalStore();
93
70
  const { visualConfig, canUndo, canRedo } = vizStore;
94
71
  const { t: tGlobal } = useTranslation();
@@ -107,6 +84,8 @@ const VisualSettings: React.FC<IVisualSettings> = ({ rendererHandler }) => {
107
84
  rendererHandler?.current?.downloadSVG();
108
85
  }, 200), [rendererHandler]);
109
86
 
87
+ const dark = useCurrentMediaTheme(darkModePreference) === 'dark';
88
+
110
89
  const items = useMemo<ToolbarItemProps[]>(() => {
111
90
  return [
112
91
  {
@@ -338,16 +317,16 @@ const VisualSettings: React.FC<IVisualSettings> = ({ rendererHandler }) => {
338
317
  label: t('button.export_chart'),
339
318
  icon: PhotoIcon,
340
319
  form: (
341
- <FormContainer>
320
+ <FormContainer className={dark ? 'dark' : ''}>
342
321
  <button
343
- className="text-xs pt-1 pb-1 pl-6 pr-6 bg-white dark:bg-zinc-900 hover:bg-gray-200 text-gray-800 dark:text-gray-100 dark:hover:bg-gray-700"
322
+ className={`text-xs pt-1 pb-1 pl-6 pr-6 ${dark ? 'dark bg-zinc-900 text-gray-100 hover:bg-gray-700' : 'bg-white hover:bg-gray-200 text-gray-800'}`}
344
323
  aria-label={t('button.export_chart_as', { type: 'png' })}
345
324
  onClick={() => downloadPNG()}
346
325
  >
347
326
  {t('button.export_chart_as', { type: 'png' })}
348
327
  </button>
349
328
  <button
350
- className="text-xs pt-1 pb-1 pl-6 pr-6 bg-white dark:bg-zinc-900 hover:bg-gray-200 text-gray-800 dark:text-gray-100 dark:hover:bg-gray-700"
329
+ className={`text-xs pt-1 pb-1 pl-6 pr-6 ${dark ? 'dark bg-zinc-900 text-gray-100 hover:bg-gray-700' : 'bg-white hover:bg-gray-200 text-gray-800'}`}
351
330
  aria-label={t('button.export_chart_as', { type: 'svg' })}
352
331
  onClick={() => downloadSVG()}
353
332
  >
@@ -357,10 +336,11 @@ const VisualSettings: React.FC<IVisualSettings> = ({ rendererHandler }) => {
357
336
  ),
358
337
  },
359
338
  ] as ToolbarItemProps[];
360
- }, [vizStore, canUndo, canRedo, defaultAggregated, markType, stack, interactiveScale, sizeMode, width, height, explorationMode, brushDirection, showActions, downloadPNG, downloadSVG]);
339
+ }, [vizStore, canUndo, canRedo, defaultAggregated, markType, stack, interactiveScale, sizeMode, width, height, explorationMode, brushDirection, showActions, downloadPNG, downloadSVG, dark]);
361
340
 
362
341
  return <div style={{ margin: '0.38em 0.28em 0.2em 0.18em' }}>
363
342
  <Toolbar
343
+ darkModePreference={darkModePreference}
364
344
  items={items}
365
345
  styles={{
366
346
  root: {
@@ -1,2 +0,0 @@
1
- export declare const Container: import("styled-components").StyledComponent<"div", any, {}, never>;
2
- export declare const NestContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -1,25 +0,0 @@
1
- import styled from "styled-components";
2
-
3
- export const Container = styled.div`
4
- border: 1px solid #e5e7eb;
5
- padding: 1em;
6
- margin: 1em;
7
- background-color: #fff;
8
- // dark theme
9
- @media (prefers-color-scheme: dark) {
10
- background-color: #000;
11
- border: 1px solid #4b5563;
12
- }
13
- `;
14
-
15
- export const NestContainer = styled.div`
16
- border: 1px solid #e5e7eb;
17
- padding: 0.4em;
18
- font-size: 12px;
19
- margin: 0.2em;
20
- background-color: #fff;
21
- @media (prefers-color-scheme: dark) {
22
- background-color: #000;
23
- border: 1px solid #4b5563;
24
- }
25
- `;