@geoinsight/react-components 1.0.7 → 1.1.0

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 (218) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/dist/cjs/components/button/index.d.ts +9 -0
  3. package/dist/cjs/components/button/index.stories.d.ts +19 -0
  4. package/dist/cjs/components/button/index.types.d.ts +50 -0
  5. package/dist/cjs/components/form/form-input.d.ts +4 -0
  6. package/dist/cjs/components/form/form-select.d.ts +4 -0
  7. package/dist/cjs/components/form/form-text-area.d.ts +4 -0
  8. package/dist/cjs/components/form/index.d.ts +4 -0
  9. package/dist/cjs/components/form/index.stories.d.ts +10 -0
  10. package/dist/cjs/components/form/index.types.d.ts +72 -0
  11. package/dist/cjs/components/input/index.d.ts +4 -0
  12. package/dist/cjs/components/input/index.stories.d.ts +12 -0
  13. package/dist/cjs/components/input/index.types.d.ts +56 -0
  14. package/dist/cjs/components/loading/index.d.ts +4 -0
  15. package/dist/cjs/components/loading/index.stories.d.ts +6 -0
  16. package/dist/cjs/components/loading/index.types.d.ts +11 -0
  17. package/dist/cjs/components/menu/index.d.ts +11 -0
  18. package/dist/cjs/components/menu/index.stories.d.ts +7 -0
  19. package/dist/cjs/components/menu/menu-button.d.ts +21 -0
  20. package/dist/cjs/components/menu/menu-content.d.ts +8 -0
  21. package/dist/cjs/components/menu/menu-item.d.ts +10 -0
  22. package/dist/cjs/components/menu/menu-root.d.ts +21 -0
  23. package/dist/cjs/components/menu/menu-utils.d.ts +1 -0
  24. package/dist/cjs/components/menu/menu-wrapper.d.ts +10 -0
  25. package/dist/cjs/components/modal/index.d.ts +4 -0
  26. package/dist/cjs/components/modal/index.stories.d.ts +11 -0
  27. package/dist/cjs/components/modal/index.types.d.ts +39 -0
  28. package/dist/cjs/components/range/hooks.d.ts +34 -0
  29. package/dist/cjs/components/range/index.d.ts +4 -0
  30. package/dist/cjs/components/range/index.stories.d.ts +9 -0
  31. package/dist/cjs/components/range/index.types.d.ts +18 -0
  32. package/dist/cjs/components/range/range-content.d.ts +16 -0
  33. package/dist/cjs/components/range/range-controls.d.ts +13 -0
  34. package/dist/cjs/components/range/range-thumb.d.ts +12 -0
  35. package/dist/cjs/components/range/values.d.ts +1 -0
  36. package/dist/cjs/components/select/index.d.ts +4 -0
  37. package/dist/cjs/components/select/index.stories.d.ts +10 -0
  38. package/dist/cjs/components/select/index.types.d.ts +53 -0
  39. package/dist/cjs/components/text-area/index.d.ts +5 -0
  40. package/dist/cjs/components/text-area/index.stories.d.ts +10 -0
  41. package/dist/cjs/components/text-area/index.types.d.ts +50 -0
  42. package/dist/cjs/context/loading/index.d.ts +24 -0
  43. package/dist/cjs/context/loading/index.stories.d.ts +8 -0
  44. package/dist/cjs/context/map/index.d.ts +20 -0
  45. package/dist/cjs/context/modal/index.d.ts +29 -0
  46. package/dist/cjs/context/modal/index.stories.d.ts +6 -0
  47. package/dist/cjs/context/theme/index.d.ts +18 -0
  48. package/dist/cjs/decorators/withColorScheme.d.ts +7 -0
  49. package/dist/cjs/decorators/withLoading.d.ts +2 -0
  50. package/dist/cjs/decorators/withMap.d.ts +2 -0
  51. package/dist/cjs/decorators/withModal.d.ts +2 -0
  52. package/dist/cjs/decorators/withWrapper.d.ts +2 -0
  53. package/dist/cjs/index.css +0 -164
  54. package/dist/cjs/index.d.ts +15 -0
  55. package/dist/cjs/index.js +83 -248
  56. package/dist/cjs/index.js.map +1 -1
  57. package/dist/cjs/utils/html.d.ts +10 -0
  58. package/dist/cjs/utils/palette.d.ts +1 -0
  59. package/dist/esm/components/button/index.d.ts +9 -0
  60. package/dist/esm/components/button/index.stories.d.ts +19 -0
  61. package/dist/esm/components/button/index.types.d.ts +50 -0
  62. package/dist/esm/components/form/form-input.d.ts +4 -0
  63. package/dist/esm/components/form/form-select.d.ts +4 -0
  64. package/dist/esm/components/form/form-text-area.d.ts +4 -0
  65. package/dist/esm/components/form/index.d.ts +4 -0
  66. package/dist/esm/components/form/index.stories.d.ts +10 -0
  67. package/dist/esm/components/form/index.types.d.ts +72 -0
  68. package/dist/esm/components/input/index.d.ts +4 -0
  69. package/dist/esm/components/input/index.stories.d.ts +12 -0
  70. package/dist/esm/components/input/index.types.d.ts +56 -0
  71. package/dist/esm/components/loading/index.d.ts +4 -0
  72. package/dist/esm/components/loading/index.stories.d.ts +6 -0
  73. package/dist/esm/components/loading/index.types.d.ts +11 -0
  74. package/dist/esm/components/menu/index.d.ts +11 -0
  75. package/dist/esm/components/menu/index.stories.d.ts +7 -0
  76. package/dist/esm/components/menu/menu-button.d.ts +21 -0
  77. package/dist/esm/components/menu/menu-content.d.ts +8 -0
  78. package/dist/esm/components/menu/menu-item.d.ts +10 -0
  79. package/dist/esm/components/menu/menu-root.d.ts +21 -0
  80. package/dist/esm/components/menu/menu-utils.d.ts +1 -0
  81. package/dist/esm/components/menu/menu-wrapper.d.ts +10 -0
  82. package/dist/esm/components/modal/index.d.ts +4 -0
  83. package/dist/esm/components/modal/index.stories.d.ts +11 -0
  84. package/dist/esm/components/modal/index.types.d.ts +39 -0
  85. package/dist/esm/components/range/hooks.d.ts +34 -0
  86. package/dist/esm/components/range/index.d.ts +4 -0
  87. package/dist/esm/components/range/index.stories.d.ts +9 -0
  88. package/dist/esm/components/range/index.types.d.ts +18 -0
  89. package/dist/esm/components/range/range-content.d.ts +16 -0
  90. package/dist/esm/components/range/range-controls.d.ts +13 -0
  91. package/dist/esm/components/range/range-thumb.d.ts +12 -0
  92. package/dist/esm/components/range/values.d.ts +1 -0
  93. package/dist/esm/components/select/index.d.ts +4 -0
  94. package/dist/esm/components/select/index.stories.d.ts +10 -0
  95. package/dist/esm/components/select/index.types.d.ts +53 -0
  96. package/dist/esm/components/text-area/index.d.ts +5 -0
  97. package/dist/esm/components/text-area/index.stories.d.ts +10 -0
  98. package/dist/esm/components/text-area/index.types.d.ts +50 -0
  99. package/dist/esm/context/loading/index.d.ts +24 -0
  100. package/dist/esm/context/loading/index.stories.d.ts +8 -0
  101. package/dist/esm/context/map/index.d.ts +20 -0
  102. package/dist/esm/context/modal/index.d.ts +29 -0
  103. package/dist/esm/context/modal/index.stories.d.ts +6 -0
  104. package/dist/esm/context/theme/index.d.ts +18 -0
  105. package/dist/esm/decorators/withColorScheme.d.ts +7 -0
  106. package/dist/esm/decorators/withLoading.d.ts +2 -0
  107. package/dist/esm/decorators/withMap.d.ts +2 -0
  108. package/dist/esm/decorators/withModal.d.ts +2 -0
  109. package/dist/esm/decorators/withWrapper.d.ts +2 -0
  110. package/dist/esm/index.css +0 -164
  111. package/dist/esm/index.d.ts +15 -0
  112. package/dist/esm/index.js +89 -231
  113. package/dist/esm/index.js.map +1 -1
  114. package/dist/esm/utils/html.d.ts +10 -0
  115. package/dist/esm/utils/palette.d.ts +1 -0
  116. package/package.json +1 -5
  117. package/yarn-error.log +12301 -0
  118. package/storybook-static/152.8abc3852.iframe.bundle.js +0 -2
  119. package/storybook-static/152.8abc3852.iframe.bundle.js.LICENSE.txt +0 -1
  120. package/storybook-static/208.291d21a5.iframe.bundle.js +0 -1
  121. package/storybook-static/220.4dc42c27.iframe.bundle.js +0 -2
  122. package/storybook-static/220.4dc42c27.iframe.bundle.js.LICENSE.txt +0 -9
  123. package/storybook-static/264.98d49cd2.iframe.bundle.js +0 -1
  124. package/storybook-static/312.2f98f4ec.iframe.bundle.js +0 -1
  125. package/storybook-static/396.990f5560.iframe.bundle.js +0 -44
  126. package/storybook-static/396.990f5560.iframe.bundle.js.map +0 -1
  127. package/storybook-static/469.cb6076e5.iframe.bundle.js +0 -1
  128. package/storybook-static/552.45824652.iframe.bundle.js +0 -2
  129. package/storybook-static/552.45824652.iframe.bundle.js.LICENSE.txt +0 -9
  130. package/storybook-static/555.3fb6fb46.iframe.bundle.js +0 -1
  131. package/storybook-static/56.9c067d9e.iframe.bundle.js +0 -1
  132. package/storybook-static/640.fb22d04d.iframe.bundle.js +0 -1
  133. package/storybook-static/724.476611a3.iframe.bundle.js +0 -1
  134. package/storybook-static/844.5fbe92f6.iframe.bundle.js +0 -1
  135. package/storybook-static/848.c8cbb771.iframe.bundle.js +0 -1
  136. package/storybook-static/880.b3bec938.iframe.bundle.js +0 -411
  137. package/storybook-static/880.b3bec938.iframe.bundle.js.LICENSE.txt +0 -53
  138. package/storybook-static/880.b3bec938.iframe.bundle.js.map +0 -1
  139. package/storybook-static/896.23340cff.iframe.bundle.js +0 -134
  140. package/storybook-static/896.23340cff.iframe.bundle.js.LICENSE.txt +0 -16
  141. package/storybook-static/896.23340cff.iframe.bundle.js.map +0 -1
  142. package/storybook-static/912.7731826c.iframe.bundle.js +0 -1
  143. package/storybook-static/936.074caa83.iframe.bundle.js +0 -2
  144. package/storybook-static/936.074caa83.iframe.bundle.js.LICENSE.txt +0 -5
  145. package/storybook-static/components-button-index-stories.8947be63.iframe.bundle.js +0 -1
  146. package/storybook-static/components-form-index-stories.539cf993.iframe.bundle.js +0 -1
  147. package/storybook-static/components-input-index-stories.2c44b5fd.iframe.bundle.js +0 -2
  148. package/storybook-static/components-input-index-stories.2c44b5fd.iframe.bundle.js.LICENSE.txt +0 -9
  149. package/storybook-static/components-loading-index-stories.1cd8adfc.iframe.bundle.js +0 -2
  150. package/storybook-static/components-loading-index-stories.1cd8adfc.iframe.bundle.js.LICENSE.txt +0 -9
  151. package/storybook-static/components-map-index-stories.60981082.iframe.bundle.js +0 -1
  152. package/storybook-static/components-menu-index-stories.cf33511f.iframe.bundle.js +0 -1
  153. package/storybook-static/components-modal-index-stories.5e137e54.iframe.bundle.js +0 -2
  154. package/storybook-static/components-modal-index-stories.5e137e54.iframe.bundle.js.LICENSE.txt +0 -9
  155. package/storybook-static/components-select-index-stories.935a9985.iframe.bundle.js +0 -1
  156. package/storybook-static/components-text-area-index-stories.5507a19e.iframe.bundle.js +0 -2
  157. package/storybook-static/components-text-area-index-stories.5507a19e.iframe.bundle.js.LICENSE.txt +0 -9
  158. package/storybook-static/context-loading-index-stories.fa3f7a89.iframe.bundle.js +0 -2
  159. package/storybook-static/context-loading-index-stories.fa3f7a89.iframe.bundle.js.LICENSE.txt +0 -9
  160. package/storybook-static/context-modal-index-stories.9161ad78.iframe.bundle.js +0 -2
  161. package/storybook-static/context-modal-index-stories.9161ad78.iframe.bundle.js.LICENSE.txt +0 -9
  162. package/storybook-static/favicon.svg +0 -7
  163. package/storybook-static/iframe.html +0 -355
  164. package/storybook-static/index.html +0 -127
  165. package/storybook-static/index.json +0 -1
  166. package/storybook-static/main.d84ed3e5.iframe.bundle.js +0 -1
  167. package/storybook-static/project.json +0 -1
  168. package/storybook-static/runtime~main.508d9d16.iframe.bundle.js +0 -1
  169. package/storybook-static/sb-addons/essentials-actions-2/manager-bundle.js +0 -3
  170. package/storybook-static/sb-addons/essentials-actions-2/manager-bundle.js.LEGAL.txt +0 -0
  171. package/storybook-static/sb-addons/essentials-backgrounds-3/manager-bundle.js +0 -12
  172. package/storybook-static/sb-addons/essentials-backgrounds-3/manager-bundle.js.LEGAL.txt +0 -0
  173. package/storybook-static/sb-addons/essentials-controls-1/manager-bundle.js +0 -63
  174. package/storybook-static/sb-addons/essentials-controls-1/manager-bundle.js.LEGAL.txt +0 -18
  175. package/storybook-static/sb-addons/essentials-measure-6/manager-bundle.js +0 -3
  176. package/storybook-static/sb-addons/essentials-measure-6/manager-bundle.js.LEGAL.txt +0 -0
  177. package/storybook-static/sb-addons/essentials-outline-7/manager-bundle.js +0 -3
  178. package/storybook-static/sb-addons/essentials-outline-7/manager-bundle.js.LEGAL.txt +0 -0
  179. package/storybook-static/sb-addons/essentials-toolbars-5/manager-bundle.js +0 -3
  180. package/storybook-static/sb-addons/essentials-toolbars-5/manager-bundle.js.LEGAL.txt +0 -0
  181. package/storybook-static/sb-addons/essentials-viewport-4/manager-bundle.js +0 -3
  182. package/storybook-static/sb-addons/essentials-viewport-4/manager-bundle.js.LEGAL.txt +0 -0
  183. package/storybook-static/sb-addons/interactions-8/manager-bundle.js +0 -12
  184. package/storybook-static/sb-addons/interactions-8/manager-bundle.js.LEGAL.txt +0 -0
  185. package/storybook-static/sb-addons/links-0/manager-bundle.js +0 -3
  186. package/storybook-static/sb-addons/links-0/manager-bundle.js.LEGAL.txt +0 -0
  187. package/storybook-static/sb-common-assets/fonts.css +0 -31
  188. package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  189. package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  190. package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  191. package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  192. package/storybook-static/sb-manager/WithTooltip-V3YHNWJZ-LVYLGZW2.js +0 -1
  193. package/storybook-static/sb-manager/chunk-2IXBUOFS.js +0 -7
  194. package/storybook-static/sb-manager/chunk-INSKDKQB.js +0 -348
  195. package/storybook-static/sb-manager/chunk-NGTUFCUO.js +0 -9
  196. package/storybook-static/sb-manager/chunk-NMB3SATH.js +0 -406
  197. package/storybook-static/sb-manager/chunk-ZEU7PDD3.js +0 -1
  198. package/storybook-static/sb-manager/formatter-SWP5E3XI-7BGIK6BL.js +0 -156
  199. package/storybook-static/sb-manager/globals-module-info.js +0 -1
  200. package/storybook-static/sb-manager/globals.js +0 -1
  201. package/storybook-static/sb-manager/index.js +0 -1
  202. package/storybook-static/sb-manager/runtime.js +0 -1
  203. package/storybook-static/sb-manager/syntaxhighlighter-V7JZZA35-DXZCI2WR.js +0 -1
  204. package/storybook-static/sb-preview/globals.js +0 -1
  205. package/storybook-static/sb-preview/runtime.js +0 -112
  206. package/storybook-static/static/media/code-brackets.2e1112d7.svg +0 -1
  207. package/storybook-static/static/media/colors.a4bd0486.svg +0 -1
  208. package/storybook-static/static/media/comments.a3859089.svg +0 -1
  209. package/storybook-static/static/media/direction.b770f9af.svg +0 -1
  210. package/storybook-static/static/media/flow.edad2ac1.svg +0 -1
  211. package/storybook-static/static/media/loading.cbc96c95.gif +0 -0
  212. package/storybook-static/static/media/plugin.d494b228.svg +0 -1
  213. package/storybook-static/static/media/repo.6d496322.svg +0 -1
  214. package/storybook-static/static/media/spinner_2.6f37ee56.png +0 -0
  215. package/storybook-static/static/media/stackalt.dba9fbb3.svg +0 -1
  216. package/storybook-static/stories-Introduction-stories-mdx.21cb2fa7.iframe.bundle.js +0 -2
  217. package/storybook-static/stories-Introduction-stories-mdx.21cb2fa7.iframe.bundle.js.LICENSE.txt +0 -9
  218. package/storybook-static/stories.json +0 -1
package/dist/cjs/index.js CHANGED
@@ -8,39 +8,53 @@ var bs = require('react-icons/bs');
8
8
  var reactHookForm = require('react-hook-form');
9
9
  var tb = require('react-icons/tb');
10
10
  var io5 = require('react-icons/io5');
11
- var DeckGL = require('@deck.gl/react/typed');
12
- var Layers = require('@deck.gl/layers');
13
- var reactMapGl = require('react-map-gl');
14
- var maplibregl = require('maplibre-gl');
15
- var fi = require('react-icons/fi');
16
11
 
17
- function _interopNamespaceDefault(e) {
18
- var n = Object.create(null);
19
- if (e) {
20
- Object.keys(e).forEach(function (k) {
21
- if (k !== 'default') {
22
- var d = Object.getOwnPropertyDescriptor(e, k);
23
- Object.defineProperty(n, k, d.get ? d : {
24
- enumerable: true,
25
- get: function () { return e[k]; }
26
- });
27
- }
28
- });
29
- }
30
- n.default = e;
31
- return Object.freeze(n);
12
+ const generateId = () => {
13
+ return `id-${Math.random().toString(36).slice(2, 11)}`;
14
+ };
15
+
16
+ function MenuContent({ children, ...props }) {
17
+ const { items } = react.useContext(useMenu());
18
+ const menuId = react.useMemo(() => props["data-menu-id"], [props]);
19
+ const isExpanded = react.useMemo(() => {
20
+ return items[menuId]?.isExpanded;
21
+ }, [items, menuId]);
22
+ if (!isExpanded)
23
+ return;
24
+ return jsxRuntime.jsx("div", { ...props, children: children });
32
25
  }
33
26
 
34
- var Layers__namespace = /*#__PURE__*/_interopNamespaceDefault(Layers);
27
+ const ALLOWED_CHILD_COMPONENT$1 = [MenuButton.name, MenuContent.name];
28
+ function MenuItem({ children, ...props }) {
29
+ const { addItem } = react.useContext(useMenu());
30
+ const menuId = react.useRef("");
31
+ react.useEffect(() => {
32
+ menuId.current = generateId();
33
+ addItem({
34
+ id: menuId.current,
35
+ isExpanded: true,
36
+ });
37
+ }, []);
38
+ return (jsxRuntime.jsx("div", { "data-menu-id": menuId.current, ...props, children: react.Children.map(children, (child) => {
39
+ if (!react.isValidElement(child))
40
+ return;
41
+ const childComponent = child.type;
42
+ if (!ALLOWED_CHILD_COMPONENT$1.includes(childComponent.name))
43
+ return;
44
+ return react.cloneElement(child, {
45
+ "data-menu-id": menuId.current,
46
+ });
47
+ }) }));
48
+ }
35
49
 
36
- const ALLOWED_CHILD_COMPONENT$1 = ["MenuItem", "Item"];
50
+ const ALLOWED_CHILD_COMPONENT = [MenuItem.name];
37
51
  function MenuWrapper({ children }) {
38
52
  const menuItemComponents = react.useMemo(() => {
39
53
  return react.Children.map(children, (child) => {
40
54
  if (!react.isValidElement(child))
41
55
  return;
42
56
  const childComponent = child.type;
43
- if (!ALLOWED_CHILD_COMPONENT$1.includes(childComponent.name))
57
+ if (!ALLOWED_CHILD_COMPONENT.includes(childComponent.name))
44
58
  return;
45
59
  return react.cloneElement(child);
46
60
  });
@@ -110,44 +124,6 @@ function MenuButton({ anchor, children, buttonClassName, nested, subnested, drop
110
124
  }, buttonClassName), onClick: handleClick, ...props, children: [children, dropdown ? (isToggled ? (jsxRuntime.jsx(tfi.TfiAngleDown, { size: "1rem" })) : (jsxRuntime.jsx(tfi.TfiAngleUp, { size: "1rem" }))) : null] }));
111
125
  }
112
126
 
113
- function MenuContent({ children, ...props }) {
114
- const { items } = react.useContext(useMenu());
115
- const menuId = react.useMemo(() => props["data-menu-id"], [props]);
116
- const isExpanded = react.useMemo(() => {
117
- return items[menuId]?.isExpanded;
118
- }, [items, menuId]);
119
- if (!isExpanded)
120
- return;
121
- return jsxRuntime.jsx("div", { ...props, children: children });
122
- }
123
-
124
- const generateId = () => {
125
- return `id-${Math.random().toString(36).slice(2, 11)}`;
126
- };
127
-
128
- const ALLOWED_CHILD_COMPONENT = ["MenuButton", "MenuContent", "Button", "Content"];
129
- function MenuItem({ children, ...props }) {
130
- const { addItem } = react.useContext(useMenu());
131
- const menuId = react.useRef("");
132
- react.useEffect(() => {
133
- menuId.current = generateId();
134
- addItem({
135
- id: menuId.current,
136
- isExpanded: true,
137
- });
138
- }, []);
139
- return (jsxRuntime.jsx("div", { "data-menu-id": menuId.current, ...props, children: react.Children.map(children, (child) => {
140
- if (!react.isValidElement(child))
141
- return;
142
- const childComponent = child.type;
143
- if (!ALLOWED_CHILD_COMPONENT.includes(childComponent.name))
144
- return;
145
- return react.cloneElement(child, {
146
- "data-menu-id": menuId.current,
147
- });
148
- }) }));
149
- }
150
-
151
127
  const Menu = {
152
128
  Root: MenuRoot,
153
129
  Item: MenuItem,
@@ -316,189 +292,6 @@ function Modal({ className, modalref, children, title, subtitle, footer, hasOver
316
292
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [hasOverlay && jsxRuntime.jsx("div", { className: "modal-overlay" }), jsxRuntime.jsxs("div", { ref: modalref, className: clsx("modal", className), ...rest, children: [hasCloseButton && (jsxRuntime.jsx(Button, { mode: "secondary", className: "modal__close", size: "small", onClick: handleClose, children: jsxRuntime.jsx(io5.IoClose, {}) })), jsxRuntime.jsxs("div", { className: "modal__content", children: [title && (jsxRuntime.jsxs("div", { className: "modal__header", children: [jsxRuntime.jsx("h3", { children: title }), jsxRuntime.jsx("h6", { children: subtitle })] })), jsxRuntime.jsx("div", { className: "modal__children", children: children }), footer && jsxRuntime.jsx("div", { className: "modal__footer", children: footer })] })] })] }));
317
293
  }
318
294
 
319
- const ThemeContext = react.createContext(undefined);
320
- function ThemeProvider({ children, dataTheme: dataThemeProp, dataPalette: dataPaletteProp = "water", }) {
321
- const [dataTheme, setDataTheme] = react.useState();
322
- const [dataPalette, setDataPalette] = react.useState();
323
- react.useEffect(() => {
324
- if (dataPaletteProp) {
325
- switchDataPalette(dataPaletteProp);
326
- }
327
- }, [dataPaletteProp]);
328
- react.useEffect(() => {
329
- if (dataThemeProp) {
330
- switchDataTheme(dataThemeProp);
331
- }
332
- }, [dataThemeProp]);
333
- react.useEffect(() => {
334
- if (window.matchMedia) {
335
- if (localStorage.getItem("data-theme")) {
336
- document.documentElement.setAttribute("data-theme", localStorage.getItem("data-theme"));
337
- setDataTheme(localStorage.getItem("data-theme"));
338
- }
339
- else if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
340
- document.documentElement.setAttribute("data-theme", "dark");
341
- setDataTheme("dark");
342
- }
343
- }
344
- }, []);
345
- const switchDataTheme = (mode) => {
346
- document.documentElement.setAttribute("data-theme", mode);
347
- setDataTheme(mode);
348
- localStorage.setItem("data-theme", mode);
349
- };
350
- const switchDataPalette = (mode) => {
351
- document.documentElement.setAttribute("data-palette", mode);
352
- setDataPalette(mode);
353
- localStorage.setItem("palette-theme", mode);
354
- };
355
- return (jsxRuntime.jsx(ThemeContext.Provider, { value: { dataTheme, switchDataTheme, dataPalette, switchDataPalette }, children: children }));
356
- }
357
- function useTheme() {
358
- const context = react.useContext(ThemeContext);
359
- if (context === undefined) {
360
- throw new Error("useTheme must be used within a ThemeProvider");
361
- }
362
- return context;
363
- }
364
-
365
- function MapControl({ children, position = "top-right", ...rest }) {
366
- return (jsxRuntime.jsx("div", { className: `control control--${position}`, ...rest, children: children }));
367
- }
368
-
369
- function MapToc({ items, selected, setSelected }) {
370
- return (jsxRuntime.jsx(Menu.Root, { children: Object.entries(items).map(([parentId, parent], index) => (jsxRuntime.jsxs(Menu.Item, { children: [jsxRuntime.jsx(Menu.Button, { dropdown: true, children: parent.title }), jsxRuntime.jsx(Menu.Content, { children: Object.entries(parent.children).map(([childId, child], index) => (jsxRuntime.jsx(Menu.Item, { children: jsxRuntime.jsx(Menu.Button, { isSelected: childId === selected.id, nested: true, handleCallbackClick: () => setSelected({ id: childId, ...child }), children: child.label }) }))) })] }, `first-level-${index}`))) }));
371
- }
372
-
373
- /** Context */
374
- const MapContext = react.createContext(undefined);
375
- function MapProvider({ children }) {
376
- const [currentLayer, setCurrentLayer] = react.useState(undefined);
377
- return (jsxRuntime.jsx(MapContext.Provider, { value: { state: { currentLayer }, setCurrentLayer }, children: children }));
378
- }
379
- function useMap({ defaultLayer }) {
380
- const context = react.useContext(MapContext);
381
- react.useEffect(() => {
382
- if (context) {
383
- context.setCurrentLayer(defaultLayer);
384
- }
385
- }, []);
386
- if (context === undefined) {
387
- throw new Error("useMap must be used within a MapProvider");
388
- }
389
- return context;
390
- }
391
-
392
- const DefaultPopup = ({ popup }) => {
393
- const { isDefault, data, render } = popup.model;
394
- return isDefault || true ? (jsxRuntime.jsxs("div", { className: "map__popup-content", children: [jsxRuntime.jsx("div", { className: "map__popup-list", children: data.fields.map((field) => (jsxRuntime.jsxs("h5", { children: [field, ":"] }))) }), jsxRuntime.jsx("div", { className: "map__popup-list", children: data.values.map((value) => (jsxRuntime.jsx("span", { children: typeof value === "string"
395
- ? new Function("v", `return (${value})(${JSON.stringify(popup.info)})`)()
396
- : value(popup.info) }))) })] })) : (render);
397
- };
398
- const MapPopup = ({ popup, framework = "deck.gl", setPopupData, longitude, latitude, }) => {
399
- return framework === "deck.gl" ? (jsxRuntime.jsx("div", { className: "map__popup", style: { left: longitude, top: latitude }, children: jsxRuntime.jsx(DefaultPopup, { popup: popup }) })) : (jsxRuntime.jsx(reactMapGl.Popup, { anchor: "top", longitude: Number(longitude), latitude: Number(latitude), onClose: () => setPopupData && setPopupData(undefined), children: jsxRuntime.jsx(DefaultPopup, { popup: popup }) }));
400
- };
401
-
402
- const INITIAL_VIEW_STATE = {
403
- longitude: -122.41669,
404
- latitude: 37.7853,
405
- zoom: 13,
406
- pitch: 0,
407
- bearing: 0,
408
- };
409
- function MapDeckgl({ attribution, basemap, basemapToken, initialViewState, hasSwitchBasemap = true, layers, mapProps, renderControls = {}, toc, }) {
410
- // @ts-ignore
411
- const { onClick, ...restMapProps } = mapProps;
412
- const theme = useTheme();
413
- const [lngLat, setLngLat] = react.useState();
414
- const [popupData, setPopupData] = react.useState();
415
- const _layers = layers &&
416
- react.useMemo(() => layers.map(({ type, layer }) => new Layers__namespace[type](layer)), []);
417
- const { "bottom-left": bottomLeft, "center-left": centerLeft, ..._controls } = renderControls;
418
- const mapContext = toc &&
419
- useMap({
420
- defaultLayer: {
421
- id: toc.defaultIds[1],
422
- ...toc?.parents[toc.defaultIds[0]].children[toc.defaultIds[1]],
423
- },
424
- });
425
- const handleToggle = () => {
426
- theme.switchDataTheme(theme.dataTheme === "dark" ? "light" : "dark");
427
- };
428
- const handeSelectedLayer = (layer) => {
429
- mapContext.setCurrentLayer(layer);
430
- };
431
- const handleClick = (event) => {
432
- if (event.object) {
433
- if (event.layer?.props?.popup) {
434
- setPopupData({ model: event.layer?.props.popup, info: event.object });
435
- }
436
- setLngLat([event.pixel[0], event.pixel[1]]);
437
- }
438
- else {
439
- setLngLat(undefined);
440
- }
441
- if (onClick) {
442
- onClick(event);
443
- }
444
- };
445
- return (jsxRuntime.jsxs("div", { className: "map", children: [jsxRuntime.jsxs(DeckGL, { initialViewState: initialViewState || INITIAL_VIEW_STATE, controller: true, layers: _layers, onClick: handleClick, ...restMapProps, children: [jsxRuntime.jsx(reactMapGl.Map, { attributionControl: false, mapLib: maplibregl, mapStyle: basemap || theme.dataTheme === "dark"
446
- ? `https://api.maptiler.com/maps/darkmatter/style.json?key=${basemapToken || process.env.STORYBOOK_OPEN_TILES_TOKEN}`
447
- : `https://api.maptiler.com/maps/positron/style.json?key=${basemapToken || process.env.STORYBOOK_OPEN_TILES_TOKEN}` }), Object.keys(_controls).map((key) => {
448
- // @ts-ignore
449
- return jsxRuntime.jsx(MapControl, { position: key, children: _controls[key] });
450
- }), jsxRuntime.jsxs(MapControl, { position: "center-left", children: [centerLeft, mapContext?.state.currentLayer && (jsxRuntime.jsx(MapToc, { items: toc.parents, selected: mapContext.state.currentLayer, setSelected: handeSelectedLayer }))] }), jsxRuntime.jsx(MapControl, { position: "bottom-left", children: hasSwitchBasemap ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [bottomLeft, jsxRuntime.jsx(Button, { mode: "icon", size: "small", onClick: handleToggle, children: theme.dataTheme === "dark" ? (jsxRuntime.jsx(fi.FiSun, { size: "1.25rem" })) : (jsxRuntime.jsx(fi.FiMoon, { size: "1.25rem", color: "var(--color-black)" })) })] })) : (bottomLeft) }), jsxRuntime.jsx("div", { className: "map__attribution", children: attribution || (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Button, { as: "link", href: "https://www.maptiler.com/copyright/", target: "_blank", children: "\u00A9 MapTiler" }), jsxRuntime.jsx(Button, { as: "link", href: "https://www.openstreetmap.org/copyright", target: "_blank", children: "\u00A9 OpenStreetMap contributors" })] })) })] }), popupData && lngLat && (jsxRuntime.jsx(MapPopup, { longitude: lngLat[0], latitude: lngLat[1],
451
- // framework="deck.gl"
452
- popup: popupData }))] }));
453
- }
454
-
455
- function MapMapbox({ basemap, mapProps, hasSwitchBasemap, hasSwitchProjection, renderControls, sources, toc, }) {
456
- // @ts-ignore
457
- const { onClick, ...restMapProps } = mapProps;
458
- const { dataTheme, switchDataTheme } = useTheme();
459
- const [projection, setProjection] = react.useState("globe");
460
- const { "bottom-left": bottomLeft, "center-left": centerLeft, ..._controls } = renderControls;
461
- const [popupData, setPopupData] = react.useState();
462
- const [lngLat, setLngLat] = react.useState();
463
- const mapContext = toc &&
464
- useMap({
465
- defaultLayer: {
466
- id: toc.defaultIds[1],
467
- ...toc?.parents[toc.defaultIds[0]].children[toc.defaultIds[1]],
468
- },
469
- });
470
- const handeSelectedLayer = (layer) => {
471
- mapContext.setCurrentLayer(layer);
472
- };
473
- const handleClick = (event) => {
474
- const { features, point: { x, y }, lngLat: { lng, lat }, } = event;
475
- const hoveredFeature = features && features[0];
476
- if (hoveredFeature) {
477
- setPopupData({
478
- model: hoveredFeature.layer.metadata["mapbox:popup"],
479
- info: hoveredFeature,
480
- });
481
- setLngLat([lng, lat]);
482
- }
483
- if (onClick) {
484
- onClick(event);
485
- }
486
- };
487
- return mapProps?.mapboxAccessToken ? (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(reactMapGl.Map, { mapboxAccessToken: mapProps.mapboxAccessToken, projection: projection, mapStyle: basemap ||
488
- `mapbox://styles/mapbox/${dataTheme === "dark" ? "light" : "dark"}-v11`, ...((mapProps.interactiveLayerIds && { onClick: handleClick }) ||
489
- (onClick && { onClick })), ...restMapProps, children: [sources &&
490
- sources.map(({ id, layers, ...restSource }) => (
491
- // @ts-ignore
492
- jsxRuntime.jsx(reactMapGl.Source, { id: id, ...restSource, children: layers && layers.map((layer) => jsxRuntime.jsx(reactMapGl.Layer, { ...layer })) }))), Object.keys(_controls).map((key) => {
493
- // @ts-ignore
494
- return jsxRuntime.jsx(MapControl, { position: key, children: _controls[key] });
495
- }), jsxRuntime.jsxs(MapControl, { position: "center-left", children: [centerLeft, mapContext?.state.currentLayer && (jsxRuntime.jsx(MapToc, { items: toc.parents, selected: mapContext.state.currentLayer, setSelected: handeSelectedLayer }))] }), jsxRuntime.jsxs(MapControl, { position: "bottom-left", children: [bottomLeft, hasSwitchBasemap && (jsxRuntime.jsx(Button, { className: "map__button", mode: "icon", onClick: () => switchDataTheme(dataTheme === "dark" ? "light" : "dark"), children: dataTheme === "dark" ? jsxRuntime.jsx(bs.BsFillMoonFill, {}) : jsxRuntime.jsx(bs.BsFillSunFill, {}) })), hasSwitchProjection && (jsxRuntime.jsx(Button, { className: "map__button", mode: "icon", onClick: () => setProjection((prev) => prev === "globe" ? "mercator" : "globe"), children: projection === "globe" ? "2D" : "3D" }))] }), popupData && lngLat && (jsxRuntime.jsx(MapPopup, { longitude: lngLat[0], latitude: lngLat[1], framework: "mapboxgl", setPopupData: setPopupData, popup: popupData }))] }) })) : (jsxRuntime.jsx(Modal, { hasCloseButton: false, children: jsxRuntime.jsx("p", { className: "map__mapbox-error", children: "You need to add the mapbox token to the prop mapboxAccessToken." }) }));
496
- }
497
-
498
- function MapComponent({ attribution, basemap, basemapToken, framework = "deck.gl", mapProps, hasSwitchBasemap = true, hasSwitchProjection = true, layers, renderControls = {}, sources, toc, }) {
499
- return framework === "deck.gl" ? (jsxRuntime.jsx(MapDeckgl, { attribution: attribution, basemap: basemap, basemapToken: basemapToken, hasSwitchBasemap: hasSwitchBasemap, layers: layers, mapProps: mapProps, renderControls: renderControls, toc: toc })) : framework === "mapboxgl" ? (jsxRuntime.jsx(MapMapbox, { basemap: basemap, hasSwitchBasemap: hasSwitchBasemap, hasSwitchProjection: hasSwitchProjection, mapProps: mapProps, renderControls: renderControls, sources: sources, toc: toc })) : (jsxRuntime.jsx("div", { children: "The component needs a framework" }));
500
- }
501
-
502
295
  const LoadingContext = react.createContext(undefined);
503
296
  function loadingReducer(state, action) {
504
297
  switch (action.type) {
@@ -630,6 +423,52 @@ function useModal({} = {}) {
630
423
  return context;
631
424
  }
632
425
 
426
+ const ThemeContext = react.createContext(undefined);
427
+ function ThemeProvider({ children, dataTheme: dataThemeProp, dataPalette: dataPaletteProp = "water", }) {
428
+ const [dataTheme, setDataTheme] = react.useState();
429
+ const [dataPalette, setDataPalette] = react.useState();
430
+ react.useEffect(() => {
431
+ if (dataPaletteProp) {
432
+ switchDataPalette(dataPaletteProp);
433
+ }
434
+ }, [dataPaletteProp]);
435
+ react.useEffect(() => {
436
+ if (dataThemeProp) {
437
+ switchDataTheme(dataThemeProp);
438
+ }
439
+ }, [dataThemeProp]);
440
+ react.useEffect(() => {
441
+ if (window.matchMedia) {
442
+ if (localStorage.getItem("data-theme")) {
443
+ document.documentElement.setAttribute("data-theme", localStorage.getItem("data-theme"));
444
+ setDataTheme(localStorage.getItem("data-theme"));
445
+ }
446
+ else if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
447
+ document.documentElement.setAttribute("data-theme", "dark");
448
+ setDataTheme("dark");
449
+ }
450
+ }
451
+ }, []);
452
+ const switchDataTheme = (mode) => {
453
+ document.documentElement.setAttribute("data-theme", mode);
454
+ setDataTheme(mode);
455
+ localStorage.setItem("data-theme", mode);
456
+ };
457
+ const switchDataPalette = (mode) => {
458
+ document.documentElement.setAttribute("data-palette", mode);
459
+ setDataPalette(mode);
460
+ localStorage.setItem("palette-theme", mode);
461
+ };
462
+ return (jsxRuntime.jsx(ThemeContext.Provider, { value: { dataTheme, switchDataTheme, dataPalette, switchDataPalette }, children: children }));
463
+ }
464
+ function useTheme() {
465
+ const context = react.useContext(ThemeContext);
466
+ if (context === undefined) {
467
+ throw new Error("useTheme must be used within a ThemeProvider");
468
+ }
469
+ return context;
470
+ }
471
+
633
472
  exports.Button = Button;
634
473
  exports.Form = Form;
635
474
  exports.FormInput = FormInput;
@@ -639,9 +478,6 @@ exports.Input = Input;
639
478
  exports.Loading = Loading;
640
479
  exports.LoadingContext = LoadingContext;
641
480
  exports.LoadingProvider = LoadingProvider;
642
- exports.MapComponent = MapComponent;
643
- exports.MapControl = MapControl;
644
- exports.MapProvider = MapProvider;
645
481
  exports.Menu = Menu;
646
482
  exports.Modal = Modal;
647
483
  exports.ModalContext = ModalContext;
@@ -651,7 +487,6 @@ exports.TextArea = TextArea;
651
487
  exports.ThemeContext = ThemeContext;
652
488
  exports.ThemeProvider = ThemeProvider;
653
489
  exports.useLoading = useLoading;
654
- exports.useMap = useMap;
655
490
  exports.useModal = useModal;
656
491
  exports.useTheme = useTheme;
657
492
  //# sourceMappingURL=index.js.map