@entur/utils 0.5.0-RC.1 → 0.5.0-RC.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.5.0-RC.2](https://bitbucket.org/enturas/design-system/compare/@entur/utils@0.5.0-RC.1...@entur/utils@0.5.0-RC.2) (2022-11-22)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **useOnEscape:** commit for force updating utils-packages for publishing ([4c1082c](https://bitbucket.org/enturas/design-system/commits/4c1082c872a546c6c848aed2e2ae80e2d4599d11))
11
+
6
12
  # [0.5.0-RC.1](https://bitbucket.org/enturas/design-system/compare/@entur/utils@0.5.0-RC.0...@entur/utils@0.5.0-RC.1) (2022-11-21)
7
13
 
8
14
  **Note:** Version bump only for package @entur/utils
@@ -1,4 +1,4 @@
1
- declare type ConditionalWrapperType = {
1
+ type ConditionalWrapperType = {
2
2
  condition: boolean;
3
3
  wrapper: any;
4
4
  children: any;
@@ -1,2 +1,2 @@
1
1
  import React from 'react';
2
- export declare const useOnEscape: (ref: React.RefObject<HTMLDivElement>, handler: () => void) => void;
2
+ export declare const useOnEscape: (ref: React.RefObject<HTMLElement>, handler: () => void) => void;
@@ -1 +1 @@
1
- export declare const useRandomId: (prefix?: string | undefined) => string;
1
+ export declare const useRandomId: (prefix?: string) => string;
@@ -16,7 +16,6 @@ function debounce(fn, delay) {
16
16
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
17
17
  args[_key] = arguments[_key];
18
18
  }
19
-
20
19
  clearTimeout(id);
21
20
  id = setTimeout(function () {
22
21
  return fn.apply(void 0, args);
@@ -47,19 +46,14 @@ function _unsupportedIterableToArray(o, minLen) {
47
46
  if (n === "Map" || n === "Set") return Array.from(o);
48
47
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
49
48
  }
50
-
51
49
  function _arrayLikeToArray(arr, len) {
52
50
  if (len == null || len > arr.length) len = arr.length;
53
-
54
51
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
55
-
56
52
  return arr2;
57
53
  }
58
-
59
54
  function _createForOfIteratorHelperLoose(o, allowArrayLike) {
60
55
  var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
61
56
  if (it) return (it = it.call(o)).next.bind(it);
62
-
63
57
  if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
64
58
  if (it) o = it;
65
59
  var i = 0;
@@ -73,7 +67,6 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
73
67
  };
74
68
  };
75
69
  }
76
-
77
70
  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
78
71
  }
79
72
 
@@ -81,11 +74,9 @@ var mergeRefs = function mergeRefs() {
81
74
  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
82
75
  refs[_key] = arguments[_key];
83
76
  }
84
-
85
77
  return function (node) {
86
78
  for (var _iterator = _createForOfIteratorHelperLoose(refs), _step; !(_step = _iterator()).done;) {
87
79
  var ref = _step.value;
88
-
89
80
  if (typeof ref === 'function') {
90
81
  ref(node);
91
82
  } else if (ref) ref.current = node;
@@ -102,10 +93,8 @@ var useOnClickOutside = function useOnClickOutside(refs, handler) {
102
93
  })) {
103
94
  return;
104
95
  }
105
-
106
96
  handler();
107
97
  };
108
-
109
98
  document.addEventListener('mousedown', listener);
110
99
  document.addEventListener('touchstart', listener);
111
100
  return function () {
@@ -114,70 +103,58 @@ var useOnClickOutside = function useOnClickOutside(refs, handler) {
114
103
  };
115
104
  }, [refs, handler]);
116
105
  };
117
-
118
106
  var elementContainsEventTarget = function elementContainsEventTarget(element, event) {
119
107
  if (!element) {
120
108
  return false;
121
109
  }
122
-
123
110
  if (element.contains(event.target)) {
124
111
  return true;
125
- } // For elements inside a Shadow DOM we need to check the composedPath
126
-
127
-
112
+ }
113
+ // For elements inside a Shadow DOM we need to check the composedPath
128
114
  if (event.composed && event.composedPath) {
129
115
  var contains = event.composedPath().find(function (target) {
130
116
  if (target === window) {
131
117
  return false;
132
118
  }
133
-
134
119
  return element.contains(target);
135
120
  });
136
121
  return contains ? true : false;
137
122
  }
138
-
139
123
  return false;
140
124
  };
141
125
 
142
126
  var useOnEscape = function useOnEscape(ref, handler) {
143
127
  React.useEffect(function () {
144
128
  var _ref$current;
145
-
146
129
  var runIfKeyIsEscape = function runIfKeyIsEscape(event) {
147
130
  if (event.key === 'Escape') handler();
148
131
  };
149
-
150
132
  (_ref$current = ref.current) == null ? void 0 : _ref$current.addEventListener('keydown', runIfKeyIsEscape);
151
133
  return function () {
152
134
  var _ref$current2;
153
-
154
135
  return (_ref$current2 = ref.current) == null ? void 0 : _ref$current2.removeEventListener('keydown', runIfKeyIsEscape);
155
136
  };
156
137
  }, [ref, handler]);
157
138
  };
158
139
 
159
140
  // from https://stackoverflow.com/questions/36862334/get-viewport-window-height-in-reactjs
160
-
161
141
  var getWindowDimensions = function getWindowDimensions() {
162
142
  var _window = window,
163
- width = _window.innerWidth,
164
- height = _window.innerHeight;
143
+ width = _window.innerWidth,
144
+ height = _window.innerHeight;
165
145
  return {
166
146
  width: width,
167
147
  height: height
168
148
  };
169
149
  };
170
-
171
150
  var useWindowDimensions = function useWindowDimensions() {
172
151
  var _useState = React.useState(getWindowDimensions()),
173
- windowDimensions = _useState[0],
174
- setWindowDimensions = _useState[1];
175
-
152
+ windowDimensions = _useState[0],
153
+ setWindowDimensions = _useState[1];
176
154
  React.useEffect(function () {
177
155
  function handleResize() {
178
156
  setWindowDimensions(getWindowDimensions());
179
157
  }
180
-
181
158
  window.addEventListener('resize', handleResize);
182
159
  return function () {
183
160
  return window.removeEventListener('resize', handleResize);
@@ -188,44 +165,39 @@ var useWindowDimensions = function useWindowDimensions() {
188
165
 
189
166
  var ConditionalWrapper = function ConditionalWrapper(_ref) {
190
167
  var condition = _ref.condition,
191
- wrapper = _ref.wrapper,
192
- children = _ref.children;
168
+ wrapper = _ref.wrapper,
169
+ children = _ref.children;
193
170
  return condition ? wrapper(children) : React__default["default"].createElement(React__default["default"].Fragment, null, children);
194
171
  };
195
172
 
196
173
  var packagesToCheck = /*#__PURE__*/new Set();
197
174
  var checkTimeoutId;
198
-
199
175
  function checkAndWarn() {
200
176
  var missingImports = Array.from(packagesToCheck).filter(function (namespace) {
201
177
  return parseInt(window.getComputedStyle(document.documentElement).getPropertyValue("--eds-" + namespace)) !== 1;
202
- }).sort(); // Finally, we warn about those pesky imports
203
-
178
+ }).sort();
179
+ // Finally, we warn about those pesky imports
204
180
  var singleMissingImport = missingImports.length === 1;
205
181
  warning__default["default"](missingImports.length === 0, "You are missing " + (singleMissingImport ? 'a CSS import' : missingImports.length + " CSS imports") + "!\n\nPlease add the following CSS import" + (singleMissingImport ? '' : 's') + " somewhere in your app:\n\n" + missingImports.map(function (namespace) {
206
182
  return "\t@import '~@entur/" + namespace + "/dist/styles.css';";
207
183
  }).join('\n') + "\n") ;
208
184
  }
209
185
  /** Warns the developer if they have forgotten to include styles */
210
-
211
-
212
186
  function warnAboutMissingStyles() {
213
187
  // We skip this check in production, and when we build static sites
214
188
  if (typeof window === 'undefined') {
215
189
  return;
216
- } // First, let's clear earlier calls to setTimeout
217
-
218
-
219
- window.clearTimeout(checkTimeoutId); // Next, let's add all namespaces to the set of packages to check
220
-
190
+ }
191
+ // First, let's clear earlier calls to setTimeout
192
+ window.clearTimeout(checkTimeoutId);
193
+ // Next, let's add all namespaces to the set of packages to check
221
194
  for (var _len = arguments.length, namespaces = new Array(_len), _key = 0; _key < _len; _key++) {
222
195
  namespaces[_key] = arguments[_key];
223
196
  }
224
-
225
197
  namespaces.forEach(function (namespace) {
226
198
  return packagesToCheck.add(namespace);
227
- }); // Finally. let's trigger a run of the checker.
228
-
199
+ });
200
+ // Finally. let's trigger a run of the checker.
229
201
  checkTimeoutId = window.setTimeout(checkAndWarn, 1000);
230
202
  }
231
203
 
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs.development.js","sources":["../src/debounce.ts","../src/useRandomId.ts","../src/useOnMount.ts","../src/mergeRefs.ts","../src/useOnClickOutside.ts","../src/useOnEscape.ts","../src/useWindowDimensions.ts","../src/ConditionalWrapper.tsx","../src/warnAboutMissingStyles.ts"],"sourcesContent":["export function debounce<T extends (...args: any[]) => any>(\n fn: T,\n delay: number,\n): (...args: Parameters<T>) => void {\n let id: any;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => fn(...args), delay);\n };\n}\n","import React from 'react';\n\nexport const useRandomId = (prefix?: string): string => {\n const ref = React.useRef(String(Math.random()).substring(2));\n return `${prefix}-${ref.current}`;\n};\n","import React from 'react';\n\nexport function useOnMount(callback: () => void): void {\n const hasRun = React.useRef<boolean>(false);\n\n React.useEffect(() => {\n if (!hasRun.current) {\n hasRun.current = true;\n callback();\n }\n }, [callback]);\n}\n","export const mergeRefs = <T extends HTMLElement>(\n ...refs: React.MutableRefObject<T>[] | React.ForwardedRef<T>[]\n) => {\n return (node: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) ref.current = node;\n }\n };\n};\n","import React, { useEffect } from 'react';\n\nexport const useOnClickOutside = (\n refs: React.RefObject<HTMLDivElement>[],\n handler: () => void,\n) => {\n useEffect(() => {\n const listener = (event: Event) => {\n // If the ref contains the clicked element, then the click is not outside\n if (refs.some(ref => elementContainsEventTarget(ref.current, event))) {\n return;\n }\n\n handler();\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [refs, handler]);\n};\n\nconst elementContainsEventTarget = (\n element: HTMLElement | null,\n event: Event,\n) => {\n if (!element) {\n return false;\n }\n\n if (element.contains(event.target as Node)) {\n return true;\n }\n\n // For elements inside a Shadow DOM we need to check the composedPath\n if (event.composed && event.composedPath) {\n const contains = event.composedPath().find(target => {\n if (target === window) {\n return false;\n }\n return element.contains(target as Node);\n });\n return contains ? true : false;\n }\n\n return false;\n};\n","import React, { useEffect } from 'react';\n\nexport const useOnEscape = (\n ref: React.RefObject<HTMLDivElement>,\n handler: () => void,\n) => {\n useEffect(() => {\n const runIfKeyIsEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') handler();\n };\n\n ref.current?.addEventListener('keydown', runIfKeyIsEscape);\n\n return () => ref.current?.removeEventListener('keydown', runIfKeyIsEscape);\n }, [ref, handler]);\n};\n","// from https://stackoverflow.com/questions/36862334/get-viewport-window-height-in-reactjs\nimport { useState, useEffect } from 'react';\n\nconst getWindowDimensions = () => {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height,\n };\n};\n\nexport const useWindowDimensions = () => {\n const [windowDimensions, setWindowDimensions] = useState(\n getWindowDimensions(),\n );\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n};\n","import React from 'react';\n\ntype ConditionalWrapperType = {\n condition: boolean;\n wrapper: any;\n children: any;\n};\n\nexport const ConditionalWrapper = ({\n condition,\n wrapper,\n children,\n}: ConditionalWrapperType) => (condition ? wrapper(children) : <>{children}</>);\n","import warning from 'tiny-warning';\n\nconst packagesToCheck: Set<string> = new Set();\nlet checkTimeoutId: number;\n\nfunction checkAndWarn() {\n const missingImports = Array.from(packagesToCheck)\n .filter(\n namespace =>\n parseInt(\n window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(`--eds-${namespace}`),\n ) !== 1,\n )\n .sort();\n\n // Finally, we warn about those pesky imports\n const singleMissingImport = missingImports.length === 1;\n warning(\n missingImports.length === 0,\n `You are missing ${\n singleMissingImport\n ? 'a CSS import'\n : `${missingImports.length} CSS imports`\n }!\n\nPlease add the following CSS import${\n singleMissingImport ? '' : 's'\n } somewhere in your app:\n\n${missingImports\n .map(namespace => `\\t@import '~@entur/${namespace}/dist/styles.css';`)\n .join('\\n')}\n`,\n );\n}\n\n/** Warns the developer if they have forgotten to include styles */\nexport function warnAboutMissingStyles(...namespaces: string[]): void {\n // We skip this check in production, and when we build static sites\n if (!__DEV__ || typeof window === 'undefined') {\n return;\n }\n // First, let's clear earlier calls to setTimeout\n window.clearTimeout(checkTimeoutId);\n\n // Next, let's add all namespaces to the set of packages to check\n namespaces.forEach(namespace => packagesToCheck.add(namespace));\n\n // Finally. let's trigger a run of the checker.\n checkTimeoutId = window.setTimeout(checkAndWarn, 1000);\n}\n"],"names":["debounce","fn","delay","id","args","clearTimeout","setTimeout","useRandomId","prefix","ref","React","useRef","String","Math","random","substring","current","useOnMount","callback","hasRun","useEffect","mergeRefs","refs","node","useOnClickOutside","handler","listener","event","some","elementContainsEventTarget","document","addEventListener","removeEventListener","element","contains","target","composed","composedPath","find","window","useOnEscape","runIfKeyIsEscape","key","getWindowDimensions","width","innerWidth","height","innerHeight","useWindowDimensions","useState","windowDimensions","setWindowDimensions","handleResize","ConditionalWrapper","condition","wrapper","children","packagesToCheck","Set","checkTimeoutId","checkAndWarn","missingImports","Array","from","filter","namespace","parseInt","getComputedStyle","documentElement","getPropertyValue","sort","singleMissingImport","length","warning","map","join","warnAboutMissingStyles","namespaces","forEach","add"],"mappings":"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"}
1
+ {"version":3,"file":"utils.cjs.development.js","sources":["../src/debounce.ts","../src/useRandomId.ts","../src/useOnMount.ts","../src/mergeRefs.ts","../src/useOnClickOutside.ts","../src/useOnEscape.ts","../src/useWindowDimensions.ts","../src/ConditionalWrapper.tsx","../src/warnAboutMissingStyles.ts"],"sourcesContent":["export function debounce<T extends (...args: any[]) => any>(\n fn: T,\n delay: number,\n): (...args: Parameters<T>) => void {\n let id: any;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => fn(...args), delay);\n };\n}\n","import React from 'react';\n\nexport const useRandomId = (prefix?: string): string => {\n const ref = React.useRef(String(Math.random()).substring(2));\n return `${prefix}-${ref.current}`;\n};\n","import React from 'react';\n\nexport function useOnMount(callback: () => void): void {\n const hasRun = React.useRef<boolean>(false);\n\n React.useEffect(() => {\n if (!hasRun.current) {\n hasRun.current = true;\n callback();\n }\n }, [callback]);\n}\n","export const mergeRefs = <T extends HTMLElement>(\n ...refs: React.MutableRefObject<T>[] | React.ForwardedRef<T>[]\n) => {\n return (node: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) ref.current = node;\n }\n };\n};\n","import React, { useEffect } from 'react';\n\nexport const useOnClickOutside = (\n refs: React.RefObject<HTMLDivElement>[],\n handler: () => void,\n) => {\n useEffect(() => {\n const listener = (event: Event) => {\n // If the ref contains the clicked element, then the click is not outside\n if (refs.some(ref => elementContainsEventTarget(ref.current, event))) {\n return;\n }\n\n handler();\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [refs, handler]);\n};\n\nconst elementContainsEventTarget = (\n element: HTMLElement | null,\n event: Event,\n) => {\n if (!element) {\n return false;\n }\n\n if (element.contains(event.target as Node)) {\n return true;\n }\n\n // For elements inside a Shadow DOM we need to check the composedPath\n if (event.composed && event.composedPath) {\n const contains = event.composedPath().find(target => {\n if (target === window) {\n return false;\n }\n return element.contains(target as Node);\n });\n return contains ? true : false;\n }\n\n return false;\n};\n","import React, { useEffect } from 'react';\n\nexport const useOnEscape = (\n ref: React.RefObject<HTMLElement>,\n handler: () => void,\n) => {\n useEffect(() => {\n const runIfKeyIsEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') handler();\n };\n\n ref.current?.addEventListener('keydown', runIfKeyIsEscape);\n\n return () => ref.current?.removeEventListener('keydown', runIfKeyIsEscape);\n }, [ref, handler]);\n};\n","// from https://stackoverflow.com/questions/36862334/get-viewport-window-height-in-reactjs\nimport { useState, useEffect } from 'react';\n\nconst getWindowDimensions = () => {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height,\n };\n};\n\nexport const useWindowDimensions = () => {\n const [windowDimensions, setWindowDimensions] = useState(\n getWindowDimensions(),\n );\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n};\n","import React from 'react';\n\ntype ConditionalWrapperType = {\n condition: boolean;\n wrapper: any;\n children: any;\n};\n\nexport const ConditionalWrapper = ({\n condition,\n wrapper,\n children,\n}: ConditionalWrapperType) => (condition ? wrapper(children) : <>{children}</>);\n","import warning from 'tiny-warning';\n\nconst packagesToCheck: Set<string> = new Set();\nlet checkTimeoutId: number;\n\nfunction checkAndWarn() {\n const missingImports = Array.from(packagesToCheck)\n .filter(\n namespace =>\n parseInt(\n window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(`--eds-${namespace}`),\n ) !== 1,\n )\n .sort();\n\n // Finally, we warn about those pesky imports\n const singleMissingImport = missingImports.length === 1;\n warning(\n missingImports.length === 0,\n `You are missing ${\n singleMissingImport\n ? 'a CSS import'\n : `${missingImports.length} CSS imports`\n }!\n\nPlease add the following CSS import${\n singleMissingImport ? '' : 's'\n } somewhere in your app:\n\n${missingImports\n .map(namespace => `\\t@import '~@entur/${namespace}/dist/styles.css';`)\n .join('\\n')}\n`,\n );\n}\n\n/** Warns the developer if they have forgotten to include styles */\nexport function warnAboutMissingStyles(...namespaces: string[]): void {\n // We skip this check in production, and when we build static sites\n if (!__DEV__ || typeof window === 'undefined') {\n return;\n }\n // First, let's clear earlier calls to setTimeout\n window.clearTimeout(checkTimeoutId);\n\n // Next, let's add all namespaces to the set of packages to check\n namespaces.forEach(namespace => packagesToCheck.add(namespace));\n\n // Finally. let's trigger a run of the checker.\n checkTimeoutId = window.setTimeout(checkAndWarn, 1000);\n}\n"],"names":["debounce","fn","delay","id","args","clearTimeout","setTimeout","useRandomId","prefix","ref","React","useRef","String","Math","random","substring","current","useOnMount","callback","hasRun","useEffect","mergeRefs","refs","node","useOnClickOutside","handler","listener","event","some","elementContainsEventTarget","document","addEventListener","removeEventListener","element","contains","target","composed","composedPath","find","window","useOnEscape","runIfKeyIsEscape","key","getWindowDimensions","width","innerWidth","height","innerHeight","useWindowDimensions","useState","windowDimensions","setWindowDimensions","handleResize","ConditionalWrapper","condition","wrapper","children","createElement","Fragment","packagesToCheck","Set","checkTimeoutId","checkAndWarn","missingImports","Array","from","filter","namespace","parseInt","getComputedStyle","documentElement","getPropertyValue","sort","singleMissingImport","length","warning","map","join","warnAboutMissingStyles","namespaces","forEach","add"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs.production.min.js","sources":["../src/useWindowDimensions.ts","../src/ConditionalWrapper.tsx","../src/debounce.ts","../src/mergeRefs.ts","../src/useOnClickOutside.ts","../src/useOnEscape.ts","../src/useOnMount.ts","../src/useRandomId.ts"],"sourcesContent":["// from https://stackoverflow.com/questions/36862334/get-viewport-window-height-in-reactjs\nimport { useState, useEffect } from 'react';\n\nconst getWindowDimensions = () => {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height,\n };\n};\n\nexport const useWindowDimensions = () => {\n const [windowDimensions, setWindowDimensions] = useState(\n getWindowDimensions(),\n );\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n};\n","import React from 'react';\n\ntype ConditionalWrapperType = {\n condition: boolean;\n wrapper: any;\n children: any;\n};\n\nexport const ConditionalWrapper = ({\n condition,\n wrapper,\n children,\n}: ConditionalWrapperType) => (condition ? wrapper(children) : <>{children}</>);\n","export function debounce<T extends (...args: any[]) => any>(\n fn: T,\n delay: number,\n): (...args: Parameters<T>) => void {\n let id: any;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => fn(...args), delay);\n };\n}\n","export const mergeRefs = <T extends HTMLElement>(\n ...refs: React.MutableRefObject<T>[] | React.ForwardedRef<T>[]\n) => {\n return (node: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) ref.current = node;\n }\n };\n};\n","import React, { useEffect } from 'react';\n\nexport const useOnClickOutside = (\n refs: React.RefObject<HTMLDivElement>[],\n handler: () => void,\n) => {\n useEffect(() => {\n const listener = (event: Event) => {\n // If the ref contains the clicked element, then the click is not outside\n if (refs.some(ref => elementContainsEventTarget(ref.current, event))) {\n return;\n }\n\n handler();\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [refs, handler]);\n};\n\nconst elementContainsEventTarget = (\n element: HTMLElement | null,\n event: Event,\n) => {\n if (!element) {\n return false;\n }\n\n if (element.contains(event.target as Node)) {\n return true;\n }\n\n // For elements inside a Shadow DOM we need to check the composedPath\n if (event.composed && event.composedPath) {\n const contains = event.composedPath().find(target => {\n if (target === window) {\n return false;\n }\n return element.contains(target as Node);\n });\n return contains ? true : false;\n }\n\n return false;\n};\n","import React, { useEffect } from 'react';\n\nexport const useOnEscape = (\n ref: React.RefObject<HTMLDivElement>,\n handler: () => void,\n) => {\n useEffect(() => {\n const runIfKeyIsEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') handler();\n };\n\n ref.current?.addEventListener('keydown', runIfKeyIsEscape);\n\n return () => ref.current?.removeEventListener('keydown', runIfKeyIsEscape);\n }, [ref, handler]);\n};\n","import React from 'react';\n\nexport function useOnMount(callback: () => void): void {\n const hasRun = React.useRef<boolean>(false);\n\n React.useEffect(() => {\n if (!hasRun.current) {\n hasRun.current = true;\n callback();\n }\n }, [callback]);\n}\n","import React from 'react';\n\nexport const useRandomId = (prefix?: string): string => {\n const ref = React.useRef(String(Math.random()).substring(2));\n return `${prefix}-${ref.current}`;\n};\n"],"names":["getWindowDimensions","window","width","innerWidth","height","innerHeight","children","condition","wrapper","React","fn","delay","id","args","clearTimeout","setTimeout","refs","node","ref","current","handler","useEffect","listener","event","some","element","contains","target","composed","composedPath","find","elementContainsEventTarget","document","addEventListener","removeEventListener","runIfKeyIsEscape","key","_ref$current2","callback","hasRun","useRef","prefix","String","Math","random","substring","useState","windowDimensions","setWindowDimensions","handleResize"],"mappings":"ggCAGMA,EAAsB,iBACyBC,aAC5C,CACLC,QAFMC,WAGNC,SAHyBC,yCCIK,gBAGhCC,IAAAA,kBAFAC,WAGyCC,IAFzCA,SAEiDF,GAAYG,gDAAGH,8BCXhEI,EACAC,OAEIC,SACG,sCAAIC,2BAAAA,kBACTC,aAAaF,GACbA,EAAKG,YAAW,kBAAML,eAAMG,KAAOF,uBCPd,sCACpBK,2BAAAA,yBAEI,SAACC,iBACYD,kBAAM,KAAbE,UACU,mBAARA,EACTA,EAAID,GACKC,IAAKA,EAAIC,QAAUF,gCCLH,SAC/BD,EACAI,GAEAC,aAAU,eACFC,EAAW,SAACC,GAEZP,EAAKQ,MAAK,SAAAN,UAiBe,SACjCO,EACAF,YAEKE,KAIDA,EAAQC,SAASH,EAAMI,SAKvBJ,EAAMK,UAAYL,EAAMM,cACTN,EAAMM,eAAeC,MAAK,SAAAH,UACrCA,IAAW1B,QAGRwB,EAAQC,SAASC,QAnCHI,CAA2Bb,EAAIC,QAASI,OAI7DH,YAGFY,SAASC,iBAAiB,YAAaX,GACvCU,SAASC,iBAAiB,aAAcX,GAEjC,WACLU,SAASE,oBAAoB,YAAaZ,GAC1CU,SAASE,oBAAoB,aAAcZ,MAE5C,CAACN,EAAMI,yBCrBe,SACzBF,EACAE,GAEAC,aAAU,iBACFc,EAAmB,SAACZ,GACN,WAAdA,EAAMa,KAAkBhB,qBAG9BF,EAAIC,YAASc,iBAAiB,UAAWE,GAElC,iCAAMjB,EAAIC,gBAAJkB,EAAaH,oBAAoB,UAAWC,MACxD,CAACjB,EAAKE,iCCZgBkB,OACnBC,EAAS9B,UAAM+B,QAAgB,GAErC/B,UAAMY,WAAU,WACTkB,EAAOpB,UACVoB,EAAOpB,SAAU,EACjBmB,OAED,CAACA,yBCRqB,SAACG,UAEhBA,MADEhC,UAAM+B,OAAOE,OAAOC,KAAKC,UAAUC,UAAU,IACjC1B,qCPOS,iBACe2B,WAC9C9C,KADK+C,OAAkBC,cAIzB3B,aAAU,oBACC4B,IACPD,EAAoBhD,YAGtBC,OAAOgC,iBAAiB,SAAUgB,GAC3B,kBAAMhD,OAAOiC,oBAAoB,SAAUe,MACjD,IAEIF"}
1
+ {"version":3,"file":"utils.cjs.production.min.js","sources":["../src/mergeRefs.ts","../src/useWindowDimensions.ts","../src/ConditionalWrapper.tsx","../src/debounce.ts","../src/useOnClickOutside.ts","../src/useOnEscape.ts","../src/useOnMount.ts","../src/useRandomId.ts","../src/warnAboutMissingStyles.ts"],"sourcesContent":["export const mergeRefs = <T extends HTMLElement>(\n ...refs: React.MutableRefObject<T>[] | React.ForwardedRef<T>[]\n) => {\n return (node: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) ref.current = node;\n }\n };\n};\n","// from https://stackoverflow.com/questions/36862334/get-viewport-window-height-in-reactjs\nimport { useState, useEffect } from 'react';\n\nconst getWindowDimensions = () => {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height,\n };\n};\n\nexport const useWindowDimensions = () => {\n const [windowDimensions, setWindowDimensions] = useState(\n getWindowDimensions(),\n );\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n};\n","import React from 'react';\n\ntype ConditionalWrapperType = {\n condition: boolean;\n wrapper: any;\n children: any;\n};\n\nexport const ConditionalWrapper = ({\n condition,\n wrapper,\n children,\n}: ConditionalWrapperType) => (condition ? wrapper(children) : <>{children}</>);\n","export function debounce<T extends (...args: any[]) => any>(\n fn: T,\n delay: number,\n): (...args: Parameters<T>) => void {\n let id: any;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => fn(...args), delay);\n };\n}\n","import React, { useEffect } from 'react';\n\nexport const useOnClickOutside = (\n refs: React.RefObject<HTMLDivElement>[],\n handler: () => void,\n) => {\n useEffect(() => {\n const listener = (event: Event) => {\n // If the ref contains the clicked element, then the click is not outside\n if (refs.some(ref => elementContainsEventTarget(ref.current, event))) {\n return;\n }\n\n handler();\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [refs, handler]);\n};\n\nconst elementContainsEventTarget = (\n element: HTMLElement | null,\n event: Event,\n) => {\n if (!element) {\n return false;\n }\n\n if (element.contains(event.target as Node)) {\n return true;\n }\n\n // For elements inside a Shadow DOM we need to check the composedPath\n if (event.composed && event.composedPath) {\n const contains = event.composedPath().find(target => {\n if (target === window) {\n return false;\n }\n return element.contains(target as Node);\n });\n return contains ? true : false;\n }\n\n return false;\n};\n","import React, { useEffect } from 'react';\n\nexport const useOnEscape = (\n ref: React.RefObject<HTMLElement>,\n handler: () => void,\n) => {\n useEffect(() => {\n const runIfKeyIsEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') handler();\n };\n\n ref.current?.addEventListener('keydown', runIfKeyIsEscape);\n\n return () => ref.current?.removeEventListener('keydown', runIfKeyIsEscape);\n }, [ref, handler]);\n};\n","import React from 'react';\n\nexport function useOnMount(callback: () => void): void {\n const hasRun = React.useRef<boolean>(false);\n\n React.useEffect(() => {\n if (!hasRun.current) {\n hasRun.current = true;\n callback();\n }\n }, [callback]);\n}\n","import React from 'react';\n\nexport const useRandomId = (prefix?: string): string => {\n const ref = React.useRef(String(Math.random()).substring(2));\n return `${prefix}-${ref.current}`;\n};\n","import warning from 'tiny-warning';\n\nconst packagesToCheck: Set<string> = new Set();\nlet checkTimeoutId: number;\n\nfunction checkAndWarn() {\n const missingImports = Array.from(packagesToCheck)\n .filter(\n namespace =>\n parseInt(\n window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(`--eds-${namespace}`),\n ) !== 1,\n )\n .sort();\n\n // Finally, we warn about those pesky imports\n const singleMissingImport = missingImports.length === 1;\n warning(\n missingImports.length === 0,\n `You are missing ${\n singleMissingImport\n ? 'a CSS import'\n : `${missingImports.length} CSS imports`\n }!\n\nPlease add the following CSS import${\n singleMissingImport ? '' : 's'\n } somewhere in your app:\n\n${missingImports\n .map(namespace => `\\t@import '~@entur/${namespace}/dist/styles.css';`)\n .join('\\n')}\n`,\n );\n}\n\n/** Warns the developer if they have forgotten to include styles */\nexport function warnAboutMissingStyles(...namespaces: string[]): void {\n // We skip this check in production, and when we build static sites\n if (!__DEV__ || typeof window === 'undefined') {\n return;\n }\n // First, let's clear earlier calls to setTimeout\n window.clearTimeout(checkTimeoutId);\n\n // Next, let's add all namespaces to the set of packages to check\n namespaces.forEach(namespace => packagesToCheck.add(namespace));\n\n // Finally. let's trigger a run of the checker.\n checkTimeoutId = window.setTimeout(checkAndWarn, 1000);\n}\n"],"names":["mergeRefs","getWindowDimensions","_window","window","width","innerWidth","height","innerHeight","_ref","children","condition","wrapper","React","createElement","Fragment","fn","delay","id","_len","arguments","length","args","Array","_key","clearTimeout","setTimeout","refs","node","_step","_iterator","_createForOfIteratorHelperLoose","done","ref","value","current","handler","useEffect","listener","event","some","element","contains","target","composed","composedPath","find","elementContainsEventTarget","document","addEventListener","removeEventListener","_ref$current","runIfKeyIsEscape","key","_ref$current2","callback","hasRun","useRef","prefix","String","Math","random","substring","_useState","useState","windowDimensions","setWindowDimensions","handleResize"],"mappings":"4/BAAaA,ICGPC,EAAsB,WAC1B,IAAAC,EAAmDC,OACnD,MAAO,CACLC,QAFMC,WAGNC,SAHyBC,YAK7B,6BCDkC,SAAHC,GAAA,IAG7BC,IAAAA,SAAQ,SAFRC,WAGyCC,IAFzCA,SAEiDF,GAAYG,EAAA,QAAAC,cAAAD,EAAAA,QAAAE,SAAA,KAAGL,EAAY,mBCZ9D,SACdM,EACAC,GAEA,IAAIC,EACJ,OAAO,WAAY,IAAA,IAAAC,EAAAC,UAAAC,OAARC,EAAI,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,GAAAJ,UAAAI,GACbC,aAAaP,GACbA,EAAKQ,YAAW,WAAA,OAAMV,EAAMM,WAAAA,EAAAA,EAAK,GAAEL,GAEvC,oBHTyB,WAErB,IAAA,IAAAE,EAAAC,UAAAC,OADCM,EAA2D,IAAAJ,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAA3DG,EAA2DH,GAAAJ,UAAAI,GAE9D,OAAO,SAACI,GACN,IAAA,IAAwBC,EAAxBC,EAAAC,EAAkBJ,KAAME,EAAAC,KAAAE,MAAA,CAAA,IAAbC,EAAGJ,EAAAK,MACO,mBAARD,EACTA,EAAIL,GACKK,IAAKA,EAAIE,QAAUP,EAC/B,EAEL,4BIRiC,SAC/BD,EACAS,GAEAC,EAAAA,WAAU,WACR,IAAMC,EAAW,SAACC,GAEZZ,EAAKa,MAAK,SAAAP,GAAG,OAiBY,SACjCQ,EACAF,GAEA,SAAKE,KAIDA,EAAQC,SAASH,EAAMI,SAKvBJ,EAAMK,UAAYL,EAAMM,cACTN,EAAMM,eAAeC,MAAK,SAAAH,GACzC,OAAIA,IAAWvC,QAGRqC,EAAQC,SAASC,EAC1B,KAKJ,CAzC2BI,CAA2Bd,EAAIE,QAASI,EAAM,KAInEH,KAMF,OAHAY,SAASC,iBAAiB,YAAaX,GACvCU,SAASC,iBAAiB,aAAcX,GAEjC,WACLU,SAASE,oBAAoB,YAAaZ,GAC1CU,SAASE,oBAAoB,aAAcZ,GAE/C,GAAG,CAACX,EAAMS,GACZ,sBCtB2B,SACzBH,EACAG,GAEAC,EAAAA,WAAU,WAAK,IAAAc,EACPC,EAAmB,SAACb,GACN,WAAdA,EAAMc,KAAkBjB,KAK9B,OAFA,OAAAH,EAAAA,EAAIE,UAAJgB,EAAaF,iBAAiB,UAAWG,GAElC,WAAA,IAAAE,EAAA,OAAM,OAAArB,EAAAA,EAAIE,cAAJ,EAAAmB,EAAaJ,oBAAoB,UAAWE,EAAiB,CAC5E,GAAG,CAACnB,EAAKG,GACX,qBCbM,SAAqBmB,GACzB,IAAMC,EAAS3C,EAAAA,QAAM4C,QAAgB,GAErC5C,EAAK,QAACwB,WAAU,WACTmB,EAAOrB,UACVqB,EAAOrB,SAAU,EACjBoB,IAEJ,GAAG,CAACA,GACN,sBCT2B,SAACG,GAE1B,OAAUA,EAAM,IADJ7C,EAAAA,QAAM4C,OAAOE,OAAOC,KAAKC,UAAUC,UAAU,IACjC3B,OAC1B,8BNMmC,WACjC,IAAA4B,EAAgDC,WAC9C9D,KADK+D,EAAgBF,EAAA,GAAEG,EAAmBH,EAAA,GAa5C,OATA1B,EAAAA,WAAU,WACR,SAAS8B,IACPD,EAAoBhE,IACtB,CAGA,OADAE,OAAO6C,iBAAiB,SAAUkB,GAC3B,WAAA,OAAM/D,OAAO8C,oBAAoB,SAAUiB,EAAa,CAChE,GAAE,IAEIF,CACT,iCOagB,WAahB"}
package/dist/utils.esm.js CHANGED
@@ -7,7 +7,6 @@ function debounce(fn, delay) {
7
7
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
8
8
  args[_key] = arguments[_key];
9
9
  }
10
-
11
10
  clearTimeout(id);
12
11
  id = setTimeout(function () {
13
12
  return fn.apply(void 0, args);
@@ -38,19 +37,14 @@ function _unsupportedIterableToArray(o, minLen) {
38
37
  if (n === "Map" || n === "Set") return Array.from(o);
39
38
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
40
39
  }
41
-
42
40
  function _arrayLikeToArray(arr, len) {
43
41
  if (len == null || len > arr.length) len = arr.length;
44
-
45
42
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
46
-
47
43
  return arr2;
48
44
  }
49
-
50
45
  function _createForOfIteratorHelperLoose(o, allowArrayLike) {
51
46
  var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
52
47
  if (it) return (it = it.call(o)).next.bind(it);
53
-
54
48
  if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
55
49
  if (it) o = it;
56
50
  var i = 0;
@@ -64,7 +58,6 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
64
58
  };
65
59
  };
66
60
  }
67
-
68
61
  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
69
62
  }
70
63
 
@@ -72,11 +65,9 @@ var mergeRefs = function mergeRefs() {
72
65
  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
73
66
  refs[_key] = arguments[_key];
74
67
  }
75
-
76
68
  return function (node) {
77
69
  for (var _iterator = _createForOfIteratorHelperLoose(refs), _step; !(_step = _iterator()).done;) {
78
70
  var ref = _step.value;
79
-
80
71
  if (typeof ref === 'function') {
81
72
  ref(node);
82
73
  } else if (ref) ref.current = node;
@@ -93,10 +84,8 @@ var useOnClickOutside = function useOnClickOutside(refs, handler) {
93
84
  })) {
94
85
  return;
95
86
  }
96
-
97
87
  handler();
98
88
  };
99
-
100
89
  document.addEventListener('mousedown', listener);
101
90
  document.addEventListener('touchstart', listener);
102
91
  return function () {
@@ -105,70 +94,58 @@ var useOnClickOutside = function useOnClickOutside(refs, handler) {
105
94
  };
106
95
  }, [refs, handler]);
107
96
  };
108
-
109
97
  var elementContainsEventTarget = function elementContainsEventTarget(element, event) {
110
98
  if (!element) {
111
99
  return false;
112
100
  }
113
-
114
101
  if (element.contains(event.target)) {
115
102
  return true;
116
- } // For elements inside a Shadow DOM we need to check the composedPath
117
-
118
-
103
+ }
104
+ // For elements inside a Shadow DOM we need to check the composedPath
119
105
  if (event.composed && event.composedPath) {
120
106
  var contains = event.composedPath().find(function (target) {
121
107
  if (target === window) {
122
108
  return false;
123
109
  }
124
-
125
110
  return element.contains(target);
126
111
  });
127
112
  return contains ? true : false;
128
113
  }
129
-
130
114
  return false;
131
115
  };
132
116
 
133
117
  var useOnEscape = function useOnEscape(ref, handler) {
134
118
  useEffect(function () {
135
119
  var _ref$current;
136
-
137
120
  var runIfKeyIsEscape = function runIfKeyIsEscape(event) {
138
121
  if (event.key === 'Escape') handler();
139
122
  };
140
-
141
123
  (_ref$current = ref.current) == null ? void 0 : _ref$current.addEventListener('keydown', runIfKeyIsEscape);
142
124
  return function () {
143
125
  var _ref$current2;
144
-
145
126
  return (_ref$current2 = ref.current) == null ? void 0 : _ref$current2.removeEventListener('keydown', runIfKeyIsEscape);
146
127
  };
147
128
  }, [ref, handler]);
148
129
  };
149
130
 
150
131
  // from https://stackoverflow.com/questions/36862334/get-viewport-window-height-in-reactjs
151
-
152
132
  var getWindowDimensions = function getWindowDimensions() {
153
133
  var _window = window,
154
- width = _window.innerWidth,
155
- height = _window.innerHeight;
134
+ width = _window.innerWidth,
135
+ height = _window.innerHeight;
156
136
  return {
157
137
  width: width,
158
138
  height: height
159
139
  };
160
140
  };
161
-
162
141
  var useWindowDimensions = function useWindowDimensions() {
163
142
  var _useState = useState(getWindowDimensions()),
164
- windowDimensions = _useState[0],
165
- setWindowDimensions = _useState[1];
166
-
143
+ windowDimensions = _useState[0],
144
+ setWindowDimensions = _useState[1];
167
145
  useEffect(function () {
168
146
  function handleResize() {
169
147
  setWindowDimensions(getWindowDimensions());
170
148
  }
171
-
172
149
  window.addEventListener('resize', handleResize);
173
150
  return function () {
174
151
  return window.removeEventListener('resize', handleResize);
@@ -179,44 +156,39 @@ var useWindowDimensions = function useWindowDimensions() {
179
156
 
180
157
  var ConditionalWrapper = function ConditionalWrapper(_ref) {
181
158
  var condition = _ref.condition,
182
- wrapper = _ref.wrapper,
183
- children = _ref.children;
159
+ wrapper = _ref.wrapper,
160
+ children = _ref.children;
184
161
  return condition ? wrapper(children) : React.createElement(React.Fragment, null, children);
185
162
  };
186
163
 
187
164
  var packagesToCheck = /*#__PURE__*/new Set();
188
165
  var checkTimeoutId;
189
-
190
166
  function checkAndWarn() {
191
167
  var missingImports = Array.from(packagesToCheck).filter(function (namespace) {
192
168
  return parseInt(window.getComputedStyle(document.documentElement).getPropertyValue("--eds-" + namespace)) !== 1;
193
- }).sort(); // Finally, we warn about those pesky imports
194
-
169
+ }).sort();
170
+ // Finally, we warn about those pesky imports
195
171
  var singleMissingImport = missingImports.length === 1;
196
172
  process.env.NODE_ENV !== "production" ? warning(missingImports.length === 0, "You are missing " + (singleMissingImport ? 'a CSS import' : missingImports.length + " CSS imports") + "!\n\nPlease add the following CSS import" + (singleMissingImport ? '' : 's') + " somewhere in your app:\n\n" + missingImports.map(function (namespace) {
197
173
  return "\t@import '~@entur/" + namespace + "/dist/styles.css';";
198
174
  }).join('\n') + "\n") : void 0;
199
175
  }
200
176
  /** Warns the developer if they have forgotten to include styles */
201
-
202
-
203
177
  function warnAboutMissingStyles() {
204
178
  // We skip this check in production, and when we build static sites
205
179
  if (!(process.env.NODE_ENV !== "production") || typeof window === 'undefined') {
206
180
  return;
207
- } // First, let's clear earlier calls to setTimeout
208
-
209
-
210
- window.clearTimeout(checkTimeoutId); // Next, let's add all namespaces to the set of packages to check
211
-
181
+ }
182
+ // First, let's clear earlier calls to setTimeout
183
+ window.clearTimeout(checkTimeoutId);
184
+ // Next, let's add all namespaces to the set of packages to check
212
185
  for (var _len = arguments.length, namespaces = new Array(_len), _key = 0; _key < _len; _key++) {
213
186
  namespaces[_key] = arguments[_key];
214
187
  }
215
-
216
188
  namespaces.forEach(function (namespace) {
217
189
  return packagesToCheck.add(namespace);
218
- }); // Finally. let's trigger a run of the checker.
219
-
190
+ });
191
+ // Finally. let's trigger a run of the checker.
220
192
  checkTimeoutId = window.setTimeout(checkAndWarn, 1000);
221
193
  }
222
194
 
@@ -1 +1 @@
1
- {"version":3,"file":"utils.esm.js","sources":["../src/debounce.ts","../src/useRandomId.ts","../src/useOnMount.ts","../src/mergeRefs.ts","../src/useOnClickOutside.ts","../src/useOnEscape.ts","../src/useWindowDimensions.ts","../src/ConditionalWrapper.tsx","../src/warnAboutMissingStyles.ts"],"sourcesContent":["export function debounce<T extends (...args: any[]) => any>(\n fn: T,\n delay: number,\n): (...args: Parameters<T>) => void {\n let id: any;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => fn(...args), delay);\n };\n}\n","import React from 'react';\n\nexport const useRandomId = (prefix?: string): string => {\n const ref = React.useRef(String(Math.random()).substring(2));\n return `${prefix}-${ref.current}`;\n};\n","import React from 'react';\n\nexport function useOnMount(callback: () => void): void {\n const hasRun = React.useRef<boolean>(false);\n\n React.useEffect(() => {\n if (!hasRun.current) {\n hasRun.current = true;\n callback();\n }\n }, [callback]);\n}\n","export const mergeRefs = <T extends HTMLElement>(\n ...refs: React.MutableRefObject<T>[] | React.ForwardedRef<T>[]\n) => {\n return (node: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) ref.current = node;\n }\n };\n};\n","import React, { useEffect } from 'react';\n\nexport const useOnClickOutside = (\n refs: React.RefObject<HTMLDivElement>[],\n handler: () => void,\n) => {\n useEffect(() => {\n const listener = (event: Event) => {\n // If the ref contains the clicked element, then the click is not outside\n if (refs.some(ref => elementContainsEventTarget(ref.current, event))) {\n return;\n }\n\n handler();\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [refs, handler]);\n};\n\nconst elementContainsEventTarget = (\n element: HTMLElement | null,\n event: Event,\n) => {\n if (!element) {\n return false;\n }\n\n if (element.contains(event.target as Node)) {\n return true;\n }\n\n // For elements inside a Shadow DOM we need to check the composedPath\n if (event.composed && event.composedPath) {\n const contains = event.composedPath().find(target => {\n if (target === window) {\n return false;\n }\n return element.contains(target as Node);\n });\n return contains ? true : false;\n }\n\n return false;\n};\n","import React, { useEffect } from 'react';\n\nexport const useOnEscape = (\n ref: React.RefObject<HTMLDivElement>,\n handler: () => void,\n) => {\n useEffect(() => {\n const runIfKeyIsEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') handler();\n };\n\n ref.current?.addEventListener('keydown', runIfKeyIsEscape);\n\n return () => ref.current?.removeEventListener('keydown', runIfKeyIsEscape);\n }, [ref, handler]);\n};\n","// from https://stackoverflow.com/questions/36862334/get-viewport-window-height-in-reactjs\nimport { useState, useEffect } from 'react';\n\nconst getWindowDimensions = () => {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height,\n };\n};\n\nexport const useWindowDimensions = () => {\n const [windowDimensions, setWindowDimensions] = useState(\n getWindowDimensions(),\n );\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n};\n","import React from 'react';\n\ntype ConditionalWrapperType = {\n condition: boolean;\n wrapper: any;\n children: any;\n};\n\nexport const ConditionalWrapper = ({\n condition,\n wrapper,\n children,\n}: ConditionalWrapperType) => (condition ? wrapper(children) : <>{children}</>);\n","import warning from 'tiny-warning';\n\nconst packagesToCheck: Set<string> = new Set();\nlet checkTimeoutId: number;\n\nfunction checkAndWarn() {\n const missingImports = Array.from(packagesToCheck)\n .filter(\n namespace =>\n parseInt(\n window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(`--eds-${namespace}`),\n ) !== 1,\n )\n .sort();\n\n // Finally, we warn about those pesky imports\n const singleMissingImport = missingImports.length === 1;\n warning(\n missingImports.length === 0,\n `You are missing ${\n singleMissingImport\n ? 'a CSS import'\n : `${missingImports.length} CSS imports`\n }!\n\nPlease add the following CSS import${\n singleMissingImport ? '' : 's'\n } somewhere in your app:\n\n${missingImports\n .map(namespace => `\\t@import '~@entur/${namespace}/dist/styles.css';`)\n .join('\\n')}\n`,\n );\n}\n\n/** Warns the developer if they have forgotten to include styles */\nexport function warnAboutMissingStyles(...namespaces: string[]): void {\n // We skip this check in production, and when we build static sites\n if (!__DEV__ || typeof window === 'undefined') {\n return;\n }\n // First, let's clear earlier calls to setTimeout\n window.clearTimeout(checkTimeoutId);\n\n // Next, let's add all namespaces to the set of packages to check\n namespaces.forEach(namespace => packagesToCheck.add(namespace));\n\n // Finally. let's trigger a run of the checker.\n checkTimeoutId = window.setTimeout(checkAndWarn, 1000);\n}\n"],"names":["debounce","fn","delay","id","args","clearTimeout","setTimeout","useRandomId","prefix","ref","React","useRef","String","Math","random","substring","current","useOnMount","callback","hasRun","useEffect","mergeRefs","refs","node","useOnClickOutside","handler","listener","event","some","elementContainsEventTarget","document","addEventListener","removeEventListener","element","contains","target","composed","composedPath","find","window","useOnEscape","runIfKeyIsEscape","key","getWindowDimensions","width","innerWidth","height","innerHeight","useWindowDimensions","useState","windowDimensions","setWindowDimensions","handleResize","ConditionalWrapper","condition","wrapper","children","packagesToCheck","Set","checkTimeoutId","checkAndWarn","missingImports","Array","from","filter","namespace","parseInt","getComputedStyle","documentElement","getPropertyValue","sort","singleMissingImport","length","warning","map","join","warnAboutMissingStyles","namespaces","forEach","add"],"mappings":"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"}
1
+ {"version":3,"file":"utils.esm.js","sources":["../src/debounce.ts","../src/useRandomId.ts","../src/useOnMount.ts","../src/mergeRefs.ts","../src/useOnClickOutside.ts","../src/useOnEscape.ts","../src/useWindowDimensions.ts","../src/ConditionalWrapper.tsx","../src/warnAboutMissingStyles.ts"],"sourcesContent":["export function debounce<T extends (...args: any[]) => any>(\n fn: T,\n delay: number,\n): (...args: Parameters<T>) => void {\n let id: any;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => fn(...args), delay);\n };\n}\n","import React from 'react';\n\nexport const useRandomId = (prefix?: string): string => {\n const ref = React.useRef(String(Math.random()).substring(2));\n return `${prefix}-${ref.current}`;\n};\n","import React from 'react';\n\nexport function useOnMount(callback: () => void): void {\n const hasRun = React.useRef<boolean>(false);\n\n React.useEffect(() => {\n if (!hasRun.current) {\n hasRun.current = true;\n callback();\n }\n }, [callback]);\n}\n","export const mergeRefs = <T extends HTMLElement>(\n ...refs: React.MutableRefObject<T>[] | React.ForwardedRef<T>[]\n) => {\n return (node: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) ref.current = node;\n }\n };\n};\n","import React, { useEffect } from 'react';\n\nexport const useOnClickOutside = (\n refs: React.RefObject<HTMLDivElement>[],\n handler: () => void,\n) => {\n useEffect(() => {\n const listener = (event: Event) => {\n // If the ref contains the clicked element, then the click is not outside\n if (refs.some(ref => elementContainsEventTarget(ref.current, event))) {\n return;\n }\n\n handler();\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [refs, handler]);\n};\n\nconst elementContainsEventTarget = (\n element: HTMLElement | null,\n event: Event,\n) => {\n if (!element) {\n return false;\n }\n\n if (element.contains(event.target as Node)) {\n return true;\n }\n\n // For elements inside a Shadow DOM we need to check the composedPath\n if (event.composed && event.composedPath) {\n const contains = event.composedPath().find(target => {\n if (target === window) {\n return false;\n }\n return element.contains(target as Node);\n });\n return contains ? true : false;\n }\n\n return false;\n};\n","import React, { useEffect } from 'react';\n\nexport const useOnEscape = (\n ref: React.RefObject<HTMLElement>,\n handler: () => void,\n) => {\n useEffect(() => {\n const runIfKeyIsEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') handler();\n };\n\n ref.current?.addEventListener('keydown', runIfKeyIsEscape);\n\n return () => ref.current?.removeEventListener('keydown', runIfKeyIsEscape);\n }, [ref, handler]);\n};\n","// from https://stackoverflow.com/questions/36862334/get-viewport-window-height-in-reactjs\nimport { useState, useEffect } from 'react';\n\nconst getWindowDimensions = () => {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height,\n };\n};\n\nexport const useWindowDimensions = () => {\n const [windowDimensions, setWindowDimensions] = useState(\n getWindowDimensions(),\n );\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n};\n","import React from 'react';\n\ntype ConditionalWrapperType = {\n condition: boolean;\n wrapper: any;\n children: any;\n};\n\nexport const ConditionalWrapper = ({\n condition,\n wrapper,\n children,\n}: ConditionalWrapperType) => (condition ? wrapper(children) : <>{children}</>);\n","import warning from 'tiny-warning';\n\nconst packagesToCheck: Set<string> = new Set();\nlet checkTimeoutId: number;\n\nfunction checkAndWarn() {\n const missingImports = Array.from(packagesToCheck)\n .filter(\n namespace =>\n parseInt(\n window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(`--eds-${namespace}`),\n ) !== 1,\n )\n .sort();\n\n // Finally, we warn about those pesky imports\n const singleMissingImport = missingImports.length === 1;\n warning(\n missingImports.length === 0,\n `You are missing ${\n singleMissingImport\n ? 'a CSS import'\n : `${missingImports.length} CSS imports`\n }!\n\nPlease add the following CSS import${\n singleMissingImport ? '' : 's'\n } somewhere in your app:\n\n${missingImports\n .map(namespace => `\\t@import '~@entur/${namespace}/dist/styles.css';`)\n .join('\\n')}\n`,\n );\n}\n\n/** Warns the developer if they have forgotten to include styles */\nexport function warnAboutMissingStyles(...namespaces: string[]): void {\n // We skip this check in production, and when we build static sites\n if (!__DEV__ || typeof window === 'undefined') {\n return;\n }\n // First, let's clear earlier calls to setTimeout\n window.clearTimeout(checkTimeoutId);\n\n // Next, let's add all namespaces to the set of packages to check\n namespaces.forEach(namespace => packagesToCheck.add(namespace));\n\n // Finally. let's trigger a run of the checker.\n checkTimeoutId = window.setTimeout(checkAndWarn, 1000);\n}\n"],"names":["debounce","fn","delay","id","args","clearTimeout","setTimeout","useRandomId","prefix","ref","React","useRef","String","Math","random","substring","current","useOnMount","callback","hasRun","useEffect","mergeRefs","refs","node","useOnClickOutside","handler","listener","event","some","elementContainsEventTarget","document","addEventListener","removeEventListener","element","contains","target","composed","composedPath","find","window","useOnEscape","runIfKeyIsEscape","key","getWindowDimensions","width","innerWidth","height","innerHeight","useWindowDimensions","useState","windowDimensions","setWindowDimensions","handleResize","ConditionalWrapper","condition","wrapper","children","createElement","Fragment","packagesToCheck","Set","checkTimeoutId","checkAndWarn","missingImports","Array","from","filter","namespace","parseInt","getComputedStyle","documentElement","getPropertyValue","sort","singleMissingImport","length","warning","map","join","warnAboutMissingStyles","namespaces","forEach","add"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entur/utils",
3
- "version": "0.5.0-RC.1",
3
+ "version": "0.5.0-RC.2",
4
4
  "license": "EUPL-1.2",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/utils.esm.js",
@@ -30,5 +30,5 @@
30
30
  "react-polymorphic-types": "^1.1.0",
31
31
  "tiny-warning": "^1.0.3"
32
32
  },
33
- "gitHead": "f961e0f1cc0c331a09e7e561c14c0870871bf875"
33
+ "gitHead": "c994dd720e55fc4652ef5f05d7235d61b6bbfbf9"
34
34
  }