@entur/utils 0.5.0-alpha.0 → 0.5.0-beta.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.
- package/CHANGELOG.md +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/useOnEscape.d.ts +2 -0
- package/dist/utils.cjs.development.js +19 -0
- package/dist/utils.cjs.development.js.map +1 -1
- package/dist/utils.cjs.production.min.js +1 -1
- package/dist/utils.cjs.production.min.js.map +1 -1
- package/dist/utils.esm.js +19 -1
- package/dist/utils.esm.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
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-beta.0](https://bitbucket.org/enturas/design-system/compare/@entur/utils@0.5.0-alpha.0...@entur/utils@0.5.0-beta.0) (2022-11-21)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @entur/utils
|
|
9
|
+
|
|
6
10
|
# [0.5.0-alpha.0](https://bitbucket.org/enturas/design-system/compare/@entur/utils@0.4.6-alpha.0...@entur/utils@0.5.0-alpha.0) (2022-10-26)
|
|
7
11
|
|
|
8
12
|
### Features
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './useRandomId';
|
|
|
4
4
|
export * from './useOnMount';
|
|
5
5
|
export * from './mergeRefs';
|
|
6
6
|
export * from './useOnClickOutside';
|
|
7
|
+
export * from './useOnEscape';
|
|
7
8
|
export * from './useWindowDimensions';
|
|
8
9
|
export * from './ConditionalWrapper';
|
|
9
10
|
export * from './warnAboutMissingStyles';
|
|
@@ -139,6 +139,24 @@ var elementContainsEventTarget = function elementContainsEventTarget(element, ev
|
|
|
139
139
|
return false;
|
|
140
140
|
};
|
|
141
141
|
|
|
142
|
+
var useOnEscape = function useOnEscape(ref, handler) {
|
|
143
|
+
React.useEffect(function () {
|
|
144
|
+
var _ref$current;
|
|
145
|
+
|
|
146
|
+
var runIfKeyIsEscape = function runIfKeyIsEscape(event) {
|
|
147
|
+
console.log('lol');
|
|
148
|
+
if (event.key === 'Escape') handler();
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
(_ref$current = ref.current) == null ? void 0 : _ref$current.addEventListener('keydown', runIfKeyIsEscape);
|
|
152
|
+
return function () {
|
|
153
|
+
var _ref$current2;
|
|
154
|
+
|
|
155
|
+
return (_ref$current2 = ref.current) == null ? void 0 : _ref$current2.removeEventListener('keydown', runIfKeyIsEscape);
|
|
156
|
+
};
|
|
157
|
+
}, [ref, handler]);
|
|
158
|
+
};
|
|
159
|
+
|
|
142
160
|
// from https://stackoverflow.com/questions/36862334/get-viewport-window-height-in-reactjs
|
|
143
161
|
|
|
144
162
|
var getWindowDimensions = function getWindowDimensions() {
|
|
@@ -216,6 +234,7 @@ exports.ConditionalWrapper = ConditionalWrapper;
|
|
|
216
234
|
exports.debounce = debounce;
|
|
217
235
|
exports.mergeRefs = mergeRefs;
|
|
218
236
|
exports.useOnClickOutside = useOnClickOutside;
|
|
237
|
+
exports.useOnEscape = useOnEscape;
|
|
219
238
|
exports.useOnMount = useOnMount;
|
|
220
239
|
exports.useRandomId = useRandomId;
|
|
221
240
|
exports.useWindowDimensions = useWindowDimensions;
|
|
@@ -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/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","// 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","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<HTMLDivElement>,\n handler: () => void,\n) => {\n useEffect(() => {\n const runIfKeyIsEscape = (event: KeyboardEvent) => {\n console.log('lol');\n\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","console","log","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,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("tiny-warning");var t=n(e);function r(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function o(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,n){if(e){if("string"==typeof e)return r(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?r(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u=function(){var e=window;return{width:e.innerWidth,height:e.innerHeight}};exports.ConditionalWrapper=function(e){var n=e.children;return e.condition?(0,e.wrapper)(n):t.default.createElement(t.default.Fragment,null,n)},exports.debounce=function(e,n){var t;return function(){for(var r=arguments.length,o=new Array(r),u=0;u<r;u++)o[u]=arguments[u];clearTimeout(t),t=setTimeout((function(){return e.apply(void 0,o)}),n)}},exports.mergeRefs=function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return function(e){for(var t,r=o(n);!(t=r()).done;){var u=t.value;"function"==typeof u?u(e):u&&(u.current=e)}}},exports.useOnClickOutside=function(n,t){e.useEffect((function(){var e=function(e){n.some((function(n){return function(e,n){return!(!e||!(e.contains(n.target)||n.composed&&n.composedPath&&n.composedPath().find((function(n){return n!==window&&e.contains(n)}))))}(n.current,e)}))||t()};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[n,t])},exports.useOnEscape=function(n,t){e.useEffect((function(){var e,r=function(e){console.log("lol"),"Escape"===e.key&&t()};return null==(e=n.current)||e.addEventListener("keydown",r),function(){var e;return null==(e=n.current)?void 0:e.removeEventListener("keydown",r)}}),[n,t])},exports.useOnMount=function(e){var n=t.default.useRef(!1);t.default.useEffect((function(){n.current||(n.current=!0,e())}),[e])},exports.useRandomId=function(e){return e+"-"+t.default.useRef(String(Math.random()).substring(2)).current},exports.useWindowDimensions=function(){var n=e.useState(u()),t=n[0],r=n[1];return e.useEffect((function(){function e(){r(u())}return window.addEventListener("resize",e),function(){return window.removeEventListener("resize",e)}}),[]),t},exports.warnAboutMissingStyles=function(){};
|
|
2
2
|
//# sourceMappingURL=utils.cjs.production.min.js.map
|
|
@@ -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/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 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","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,
|
|
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 console.log('lol');\n\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","console","log","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,GACxBa,QAAQC,IAAI,OAEM,WAAdd,EAAMe,KAAkBlB,qBAG9BF,EAAIC,YAASc,iBAAiB,UAAWE,GAElC,iCAAMjB,EAAIC,gBAAJoB,EAAaL,oBAAoB,UAAWC,MACxD,CAACjB,EAAKE,iCCdgBoB,OACnBC,EAAShC,UAAMiC,QAAgB,GAErCjC,UAAMY,WAAU,WACToB,EAAOtB,UACVsB,EAAOtB,SAAU,EACjBqB,OAED,CAACA,yBCRqB,SAACG,UAEhBA,MADElC,UAAMiC,OAAOE,OAAOC,KAAKC,UAAUC,UAAU,IACjC5B,qCPOS,iBACe6B,WAC9ChD,KADKiD,OAAkBC,cAIzB7B,aAAU,oBACC8B,IACPD,EAAoBlD,YAGtBC,OAAOgC,iBAAiB,SAAUkB,GAC3B,kBAAMlD,OAAOiC,oBAAoB,SAAUiB,MACjD,IAEIF"}
|
package/dist/utils.esm.js
CHANGED
|
@@ -130,6 +130,24 @@ var elementContainsEventTarget = function elementContainsEventTarget(element, ev
|
|
|
130
130
|
return false;
|
|
131
131
|
};
|
|
132
132
|
|
|
133
|
+
var useOnEscape = function useOnEscape(ref, handler) {
|
|
134
|
+
useEffect(function () {
|
|
135
|
+
var _ref$current;
|
|
136
|
+
|
|
137
|
+
var runIfKeyIsEscape = function runIfKeyIsEscape(event) {
|
|
138
|
+
console.log('lol');
|
|
139
|
+
if (event.key === 'Escape') handler();
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
(_ref$current = ref.current) == null ? void 0 : _ref$current.addEventListener('keydown', runIfKeyIsEscape);
|
|
143
|
+
return function () {
|
|
144
|
+
var _ref$current2;
|
|
145
|
+
|
|
146
|
+
return (_ref$current2 = ref.current) == null ? void 0 : _ref$current2.removeEventListener('keydown', runIfKeyIsEscape);
|
|
147
|
+
};
|
|
148
|
+
}, [ref, handler]);
|
|
149
|
+
};
|
|
150
|
+
|
|
133
151
|
// from https://stackoverflow.com/questions/36862334/get-viewport-window-height-in-reactjs
|
|
134
152
|
|
|
135
153
|
var getWindowDimensions = function getWindowDimensions() {
|
|
@@ -203,5 +221,5 @@ function warnAboutMissingStyles() {
|
|
|
203
221
|
checkTimeoutId = window.setTimeout(checkAndWarn, 1000);
|
|
204
222
|
}
|
|
205
223
|
|
|
206
|
-
export { ConditionalWrapper, debounce, mergeRefs, useOnClickOutside, useOnMount, useRandomId, useWindowDimensions, warnAboutMissingStyles };
|
|
224
|
+
export { ConditionalWrapper, debounce, mergeRefs, useOnClickOutside, useOnEscape, useOnMount, useRandomId, useWindowDimensions, warnAboutMissingStyles };
|
|
207
225
|
//# sourceMappingURL=utils.esm.js.map
|
package/dist/utils.esm.js.map
CHANGED
|
@@ -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/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","// 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","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<HTMLDivElement>,\n handler: () => void,\n) => {\n useEffect(() => {\n const runIfKeyIsEscape = (event: KeyboardEvent) => {\n console.log('lol');\n\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","console","log","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":";;;SAAgBA,SACdC,IACAC;AAEA,MAAIC,EAAJ;AACA,SAAO;sCAAIC;AAAAA,MAAAA;;;AACTC,IAAAA,YAAY,CAACF,EAAD,CAAZ;AACAA,IAAAA,EAAE,GAAGG,UAAU,CAAC;AAAA,aAAML,EAAE,MAAF,SAAMG,IAAN,CAAN;AAAA,KAAD,EAAoBF,KAApB,CAAf;AACD,GAHD;AAID;;ICPYK,WAAW,GAAG,SAAdA,WAAc,CAACC,MAAD;AACzB,MAAMC,GAAG,GAAGC,KAAK,CAACC,MAAN,CAAaC,MAAM,CAACC,IAAI,CAACC,MAAL,EAAD,CAAN,CAAsBC,SAAtB,CAAgC,CAAhC,CAAb,CAAZ;AACA,SAAUP,MAAV,SAAoBC,GAAG,CAACO,OAAxB;AACD;;SCHeC,WAAWC;AACzB,MAAMC,MAAM,GAAGT,KAAK,CAACC,MAAN,CAAsB,KAAtB,CAAf;AAEAD,EAAAA,KAAK,CAACU,SAAN,CAAgB;AACd,QAAI,CAACD,MAAM,CAACH,OAAZ,EAAqB;AACnBG,MAAAA,MAAM,CAACH,OAAP,GAAiB,IAAjB;AACAE,MAAAA,QAAQ;AACT;AACF,GALD,EAKG,CAACA,QAAD,CALH;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICXYG,SAAS,GAAG,SAAZA,SAAY;oCACpBC;AAAAA,IAAAA;;;AAEH,SAAO,UAACC,IAAD;AACL,yDAAkBD,IAAlB,wCAAwB;AAAA,UAAbb,GAAa;;AACtB,UAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC7BA,QAAAA,GAAG,CAACc,IAAD,CAAH;AACD,OAFD,MAEO,IAAId,GAAJ,EAASA,GAAG,CAACO,OAAJ,GAAcO,IAAd;AACjB;AACF,GAND;AAOD;;ICRYC,iBAAiB,GAAG,SAApBA,iBAAoB,CAC/BF,IAD+B,EAE/BG,OAF+B;AAI/BL,EAAAA,SAAS,CAAC;AACR,QAAMM,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD;AACf;AACA,UAAIL,IAAI,CAACM,IAAL,CAAU,UAAAnB,GAAG;AAAA,eAAIoB,0BAA0B,CAACpB,GAAG,CAACO,OAAL,EAAcW,KAAd,CAA9B;AAAA,OAAb,CAAJ,EAAsE;AACpE;AACD;;AAEDF,MAAAA,OAAO;AACR,KAPD;;AASAK,IAAAA,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,EAAuCL,QAAvC;AACAI,IAAAA,QAAQ,CAACC,gBAAT,CAA0B,YAA1B,EAAwCL,QAAxC;AAEA,WAAO;AACLI,MAAAA,QAAQ,CAACE,mBAAT,CAA6B,WAA7B,EAA0CN,QAA1C;AACAI,MAAAA,QAAQ,CAACE,mBAAT,CAA6B,YAA7B,EAA2CN,QAA3C;AACD,KAHD;AAID,GAjBQ,EAiBN,CAACJ,IAAD,EAAOG,OAAP,CAjBM,CAAT;AAkBD;;AAED,IAAMI,0BAA0B,GAAG,SAA7BA,0BAA6B,CACjCI,OADiC,EAEjCN,KAFiC;AAIjC,MAAI,CAACM,OAAL,EAAc;AACZ,WAAO,KAAP;AACD;;AAED,MAAIA,OAAO,CAACC,QAAR,CAAiBP,KAAK,CAACQ,MAAvB,CAAJ,EAA4C;AAC1C,WAAO,IAAP;AACD;;;AAGD,MAAIR,KAAK,CAACS,QAAN,IAAkBT,KAAK,CAACU,YAA5B,EAA0C;AACxC,QAAMH,QAAQ,GAAGP,KAAK,CAACU,YAAN,GAAqBC,IAArB,CAA0B,UAAAH,MAAM;AAC/C,UAAIA,MAAM,KAAKI,MAAf,EAAuB;AACrB,eAAO,KAAP;AACD;;AACD,aAAON,OAAO,CAACC,QAAR,CAAiBC,MAAjB,CAAP;AACD,KALgB,CAAjB;AAMA,WAAOD,QAAQ,GAAG,IAAH,GAAU,KAAzB;AACD;;AAED,SAAO,KAAP;AACD,CAxBD;;ICxBaM,WAAW,GAAG,SAAdA,WAAc,CACzB/B,GADyB,EAEzBgB,OAFyB;AAIzBL,EAAAA,SAAS,CAAC;;;AACR,QAAMqB,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACd,KAAD;AACvBe,MAAAA,OAAO,CAACC,GAAR,CAAY,KAAZ;AAEA,UAAIhB,KAAK,CAACiB,GAAN,KAAc,QAAlB,EAA4BnB,OAAO;AACpC,KAJD;;AAMA,oBAAAhB,GAAG,CAACO,OAAJ,kCAAae,gBAAb,CAA8B,SAA9B,EAAyCU,gBAAzC;AAEA,WAAO;AAAA;;AAAA,8BAAMhC,GAAG,CAACO,OAAV,qBAAM,cAAagB,mBAAb,CAAiC,SAAjC,EAA4CS,gBAA5C,CAAN;AAAA,KAAP;AACD,GAVQ,EAUN,CAAChC,GAAD,EAAMgB,OAAN,CAVM,CAAT;AAWD;;ACjBD;;AAGA,IAAMoB,mBAAmB,GAAG,SAAtBA,mBAAsB;AAC1B,gBAAmDN,MAAnD;AAAA,MAAoBO,KAApB,WAAQC,UAAR;AAAA,MAAwCC,MAAxC,WAA2BC,WAA3B;AACA,SAAO;AACLH,IAAAA,KAAK,EAALA,KADK;AAELE,IAAAA,MAAM,EAANA;AAFK,GAAP;AAID,CAND;;IAQaE,mBAAmB,GAAG,SAAtBA,mBAAsB;AACjC,kBAAgDC,QAAQ,CACtDN,mBAAmB,EADmC,CAAxD;AAAA,MAAOO,gBAAP;AAAA,MAAyBC,mBAAzB;;AAIAjC,EAAAA,SAAS,CAAC;AACR,aAASkC,YAAT;AACED,MAAAA,mBAAmB,CAACR,mBAAmB,EAApB,CAAnB;AACD;;AAEDN,IAAAA,MAAM,CAACR,gBAAP,CAAwB,QAAxB,EAAkCuB,YAAlC;AACA,WAAO;AAAA,aAAMf,MAAM,CAACP,mBAAP,CAA2B,QAA3B,EAAqCsB,YAArC,CAAN;AAAA,KAAP;AACD,GAPQ,EAON,EAPM,CAAT;AASA,SAAOF,gBAAP;AACD;;IClBYG,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,MAChCC,SADgC,QAChCA,SADgC;AAAA,MAEhCC,OAFgC,QAEhCA,OAFgC;AAAA,MAGhCC,QAHgC,QAGhCA,QAHgC;AAAA,SAIHF,SAAS,GAAGC,OAAO,CAACC,QAAD,CAAV,GAAuBhD,mBAAA,eAAA,MAAA,EAAGgD,QAAH,CAJ7B;AAAA;;ACNlC,IAAMC,eAAe,gBAAgB,IAAIC,GAAJ,EAArC;AACA,IAAIC,cAAJ;;AAEA,SAASC,YAAT;AACE,MAAMC,cAAc,GAAGC,KAAK,CAACC,IAAN,CAAWN,eAAX,EACpBO,MADoB,CAEnB,UAAAC,SAAS;AAAA,WACPC,QAAQ,CACN7B,MAAM,CACH8B,gBADH,CACoBvC,QAAQ,CAACwC,eAD7B,EAEGC,gBAFH,YAE6BJ,SAF7B,CADM,CAAR,KAIM,CALC;AAAA,GAFU,EASpBK,IAToB,EAAvB;;AAYA,MAAMC,mBAAmB,GAAGV,cAAc,CAACW,MAAf,KAA0B,CAAtD;AACA,0CAAAC,OAAO,CACLZ,cAAc,CAACW,MAAf,KAA0B,CADrB,wBAGHD,mBAAmB,GACf,cADe,GAEZV,cAAc,CAACW,MAFH,iBAHhB,kDASHD,mBAAmB,GAAG,EAAH,GAAQ,GATxB,oCAYPV,cAAc,CACba,GADD,CACK,UAAAT,SAAS;AAAA,mCAA0BA,SAA1B;AAAA,GADd,EAECU,IAFD,CAEM,IAFN,CAZO,QAAP;AAiBD;AAED;;;SACgBC;AACd;AACA,MAAI,4CAAY,OAAOvC,MAAP,KAAkB,WAAlC,EAA+C;AAC7C;AACD;;;AAEDA,EAAAA,MAAM,CAAClC,YAAP,CAAoBwD,cAApB;;oCANwCkB;AAAAA,IAAAA;;;AASxCA,EAAAA,UAAU,CAACC,OAAX,CAAmB,UAAAb,SAAS;AAAA,WAAIR,eAAe,CAACsB,GAAhB,CAAoBd,SAApB,CAAJ;AAAA,GAA5B;;AAGAN,EAAAA,cAAc,GAAGtB,MAAM,CAACjC,UAAP,CAAkBwD,YAAlB,EAAgC,IAAhC,CAAjB;AACD;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entur/utils",
|
|
3
|
-
"version": "0.5.0-
|
|
3
|
+
"version": "0.5.0-beta.0",
|
|
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": "
|
|
33
|
+
"gitHead": "9ee9c4ee58756a1101f2cb8b3647c29e98f1e017"
|
|
34
34
|
}
|