@koine/browser 2.0.0-beta.21 → 2.0.0-beta.211

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +1 -0
  2. package/createStorage.cjs.default.js +1 -0
  3. package/createStorage.cjs.js +12 -0
  4. package/createStorage.cjs.mjs +2 -0
  5. package/createStorage.d.ts +54 -7
  6. package/createStorage.esm.js +7 -0
  7. package/getZonedDate.cjs.default.js +1 -0
  8. package/getZonedDate.cjs.js +11 -0
  9. package/getZonedDate.cjs.mjs +2 -0
  10. package/getZonedDate.d.ts +15 -1
  11. package/getZonedDate.esm.js +6 -0
  12. package/gtag.cjs.default.js +1 -0
  13. package/gtag.cjs.js +10 -0
  14. package/gtag.cjs.mjs +2 -0
  15. package/gtag.d.ts +13 -0
  16. package/gtag.esm.js +5 -0
  17. package/gtagPageview.cjs.default.js +1 -0
  18. package/gtagPageview.cjs.js +10 -0
  19. package/gtagPageview.cjs.mjs +2 -0
  20. package/gtagPageview.d.ts +4 -1
  21. package/gtagPageview.esm.js +5 -0
  22. package/index.cjs.default.js +1 -0
  23. package/index.cjs.js +43 -0
  24. package/index.cjs.mjs +2 -0
  25. package/index.d.ts +19 -17
  26. package/index.esm.js +19 -0
  27. package/isIE.cjs.default.js +1 -0
  28. package/isIE.cjs.js +10 -0
  29. package/isIE.cjs.mjs +2 -0
  30. package/isIE.d.ts +6 -1
  31. package/isIE.esm.js +5 -0
  32. package/isMobile.cjs.default.js +1 -0
  33. package/isMobile.cjs.js +10 -0
  34. package/isMobile.cjs.mjs +2 -0
  35. package/isMobile.d.ts +6 -1
  36. package/isMobile.esm.js +5 -0
  37. package/isWindowInsideIframe.cjs.default.js +1 -0
  38. package/isWindowInsideIframe.cjs.js +8 -0
  39. package/isWindowInsideIframe.cjs.mjs +2 -0
  40. package/isWindowInsideIframe.d.ts +5 -0
  41. package/isWindowInsideIframe.esm.js +3 -0
  42. package/listenUrlSearch.cjs.default.js +1 -0
  43. package/listenUrlSearch.cjs.js +11 -0
  44. package/listenUrlSearch.cjs.mjs +2 -0
  45. package/listenUrlSearch.d.ts +28 -1
  46. package/listenUrlSearch.esm.js +6 -0
  47. package/listenUrlSearchParams.cjs.default.js +1 -0
  48. package/listenUrlSearchParams.cjs.js +10 -0
  49. package/listenUrlSearchParams.cjs.mjs +2 -0
  50. package/listenUrlSearchParams.d.ts +6 -1
  51. package/listenUrlSearchParams.esm.js +5 -0
  52. package/navigateToHash.cjs.default.js +1 -0
  53. package/navigateToHash.cjs.js +10 -0
  54. package/navigateToHash.cjs.mjs +2 -0
  55. package/navigateToHash.d.ts +7 -1
  56. package/navigateToHash.esm.js +5 -0
  57. package/navigateToHashParams.cjs.default.js +1 -0
  58. package/navigateToHashParams.cjs.js +10 -0
  59. package/navigateToHashParams.cjs.mjs +2 -0
  60. package/navigateToHashParams.d.ts +7 -1
  61. package/navigateToHashParams.esm.js +5 -0
  62. package/navigateToMergedHashParams.cjs.default.js +1 -0
  63. package/navigateToMergedHashParams.cjs.js +11 -0
  64. package/navigateToMergedHashParams.cjs.mjs +2 -0
  65. package/navigateToMergedHashParams.d.ts +6 -1
  66. package/navigateToMergedHashParams.esm.js +6 -0
  67. package/navigateToMergedParams.cjs.default.js +1 -0
  68. package/navigateToMergedParams.cjs.js +11 -0
  69. package/navigateToMergedParams.cjs.mjs +2 -0
  70. package/navigateToMergedParams.d.ts +7 -1
  71. package/navigateToMergedParams.esm.js +6 -0
  72. package/navigateToParams.cjs.default.js +1 -0
  73. package/navigateToParams.cjs.js +11 -0
  74. package/navigateToParams.cjs.mjs +2 -0
  75. package/navigateToParams.d.ts +8 -1
  76. package/navigateToParams.esm.js +6 -0
  77. package/navigateToUrl.cjs.default.js +1 -0
  78. package/navigateToUrl.cjs.js +8 -0
  79. package/navigateToUrl.cjs.mjs +2 -0
  80. package/navigateToUrl.d.ts +6 -1
  81. package/navigateToUrl.esm.js +3 -0
  82. package/navigateWithoutUrlParam.cjs.default.js +1 -0
  83. package/navigateWithoutUrlParam.cjs.js +11 -0
  84. package/navigateWithoutUrlParam.cjs.mjs +2 -0
  85. package/navigateWithoutUrlParam.d.ts +7 -1
  86. package/navigateWithoutUrlParam.esm.js +6 -0
  87. package/package.json +97 -25
  88. package/redirectTo.cjs.default.js +1 -0
  89. package/redirectTo.cjs.js +10 -0
  90. package/redirectTo.cjs.mjs +2 -0
  91. package/redirectTo.d.ts +7 -1
  92. package/redirectTo.esm.js +5 -0
  93. package/storage.cjs.default.js +1 -0
  94. package/storage.cjs.js +10 -0
  95. package/storage.cjs.mjs +2 -0
  96. package/storage.d.ts +12 -7
  97. package/storage.esm.js +5 -0
  98. package/storageClient.cjs.default.js +1 -0
  99. package/storageClient.cjs.js +10 -0
  100. package/storageClient.cjs.mjs +2 -0
  101. package/storageClient.d.ts +13 -5
  102. package/storageClient.esm.js +5 -0
  103. package/vite.config.d.ts +2 -0
  104. package/createStorage.js +0 -97
  105. package/getZonedDate.js +0 -21
  106. package/gtagPageview.js +0 -15
  107. package/index.js +0 -17
  108. package/isIE.js +0 -13
  109. package/isMobile.js +0 -9
  110. package/listenUrlSearch.js +0 -55
  111. package/listenUrlSearchParams.js +0 -12
  112. package/navigateToHash.js +0 -7
  113. package/navigateToHashParams.js +0 -15
  114. package/navigateToMergedHashParams.js +0 -8
  115. package/navigateToMergedParams.js +0 -7
  116. package/navigateToParams.js +0 -11
  117. package/navigateToUrl.js +0 -7
  118. package/navigateWithoutUrlParam.js +0 -13
  119. package/redirectTo.js +0 -8
  120. package/storage.js +0 -6
  121. package/storageClient.js +0 -94
  122. package/typings.d.ts +0 -12
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # @koine/i18n
@@ -0,0 +1 @@
1
+ exports._default = require('./createStorage.cjs.js').default;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+ var dom = require('@koine/dom');
7
+ var storage = require('./storage.cjs.js');
8
+
9
+ let createStorage=(a,n)=>{let c=n?storage.storage.s:storage.storage.l,m=Object.keys(a).reduce((e,o)=>({...e,[o]:utils.encode(o)}),{});return {get:(t,o)=>c.get(m[t],utils.decode,o),getAll(e){if(!utils.isBrowser)return "development"===process.env.NODE_ENV&&console.log("[@koine/utils:createStorage] attempt to use 'getAll' outside of browser."),{};let t={};for(let o in m){let s=this.get(o),l=e?.[o];utils.isNullOrUndefined(s)?l&&(t[o]=l):t[o]=s;}return t},set(e,o){c.set(m[e],o,utils.encode);},setMany(e){if("development"!==process.env.NODE_ENV||utils.isBrowser||console.log("[@koine/utils:createStorage] attempt to use 'setMany' outside of browser."),utils.isBrowser)for(let t in e){let o=e[t];utils.isNullOrUndefined(o)?this.remove(t):this.set(t,o);}},has:e=>c.has(m[e]),remove(e){c.remove(m[e]);},clear(){if("development"!==process.env.NODE_ENV||utils.isBrowser||console.log("[@koine/utils:createStorage] attempt to use 'clear' outside of browser."),utils.isBrowser)for(let e in m)c.remove(m[e]);},watch:(e,t,r)=>utils.isBrowser?dom.on(window,"storage",o=>{let{key:s,oldValue:l,newValue:i}=o;s===m[e]&&(l&&!i?t?.():!l&&i&&r?.());}):("development"===process.env.NODE_ENV&&console.log("[@koine/utils:createStorage] attempt to use 'watch' outside of browser."),utils.noop)}};
10
+
11
+ exports.createStorage = createStorage;
12
+ exports.default = createStorage;
@@ -0,0 +1,2 @@
1
+ export * from './createStorage.cjs.js';
2
+ export { _default as default } from './createStorage.cjs.default.js';
@@ -1,12 +1,59 @@
1
+ /**
2
+ * @category storage
3
+ */
1
4
  export type CreateStorageConfig = Record<string, any>;
2
- export declare const createStorage: <T extends CreateStorageConfig>(config: Partial<T>, useSessionStorage?: boolean) => {
3
- get<TKey extends Extract<keyof T, string>>(key: TKey, defaultValue?: T[TKey] | null | undefined): T[TKey] | null;
4
- getAll(defaultValues?: Partial<T> | undefined): T;
5
- set<TKey_1 extends Extract<keyof T, string>>(key: TKey_1, value?: T[TKey_1] | undefined): void;
5
+ /**
6
+ * Utility to create a storage instance to interact with `localStorage` using
7
+ * encrypted (encoded) key/values.
8
+ *
9
+ * @category storage
10
+ */
11
+ export declare let createStorage: <T extends CreateStorageConfig>(config: Partial<T>, useSessionStorage?: boolean) => {
12
+ /**
13
+ * Get all storage value (it uses `localStorage.get()`).
14
+ *
15
+ * Unparseable values with `JSON.parse()` return their value as it is.
16
+ * On ssr or if the given `key` argument is not found `defaultValue` is
17
+ * returned, otherwise `null`.
18
+ */
19
+ get<TKey extends Extract<keyof T, string>>(key: TKey, defaultValue?: null | T[TKey]): T[TKey] | null;
20
+ /**
21
+ * Get all storage values (it uses `localStorage.get()`).
22
+ *
23
+ * `undefined` and `null` values are not returned.
24
+ */
25
+ getAll(defaultValues?: Partial<T>): T;
26
+ /**
27
+ * Set a storage value (it uses `localStorage.set()`).
28
+ *
29
+ * Non-string values are stringified with `JSON.stringify()`
30
+ */
31
+ set<TKey extends Extract<keyof T, string>>(key: TKey, value?: T[TKey]): void;
32
+ /**
33
+ * Set all given storage values (it uses `localStorage.set()`).
34
+ *
35
+ * Non-string values are stringified with `JSON.stringify()`, `undefined`
36
+ * and `null` values are removed from the storage
37
+ */
6
38
  setMany(newValues: Partial<T>): void;
7
- has<TKey_2 extends Extract<keyof T, string>>(key: TKey_2): any;
8
- remove<TKey_3 extends Extract<keyof T, string>>(key: TKey_3): void;
39
+ /**
40
+ * Check if a storage value is _truthy_ (it uses `localStorage.get()`).
41
+ */
42
+ has<TKey extends Extract<keyof T, string>>(key: TKey): any;
43
+ /**
44
+ * Remove a storage value (it uses `localStorage.remove()`).
45
+ */
46
+ remove<TKey extends Extract<keyof T, string>>(key: TKey): void;
47
+ /**
48
+ * Clear all storage values (it uses `localStorage.remove()`).
49
+ */
9
50
  clear(): void;
10
- watch: <TKey_4 extends keyof T>(keyToWatch: TKey_4, onRemoved?: () => void, onAdded?: () => void) => () => void | undefined;
51
+ /**
52
+ * Watch a storage value changes, this needs to be executed only in browser
53
+ * context (it uses `window.addEventListener("storage")`).
54
+ *
55
+ * Inspiration from [Multi Tab Logout in React — Redux](https://medium.com/front-end-weekly/multi-tab-logout-in-react-redux-4715f071c7fa)
56
+ */
57
+ watch: <TKey extends keyof T>(keyToWatch: TKey, onRemoved?: () => void, onAdded?: () => void) => () => void | undefined;
11
58
  };
12
59
  export default createStorage;
@@ -0,0 +1,7 @@
1
+ import { encode, noop, isBrowser, isNullOrUndefined, decode } from '@koine/utils';
2
+ import { on } from '@koine/dom';
3
+ import { storage } from './storage.esm.js';
4
+
5
+ let createStorage=(a,n)=>{let c=n?storage.s:storage.l,m=Object.keys(a).reduce((e,o)=>({...e,[o]:encode(o)}),{});return {get:(t,o)=>c.get(m[t],decode,o),getAll(e){if(!isBrowser)return "development"===process.env.NODE_ENV&&console.log("[@koine/utils:createStorage] attempt to use 'getAll' outside of browser."),{};let t={};for(let o in m){let s=this.get(o),l=e?.[o];isNullOrUndefined(s)?l&&(t[o]=l):t[o]=s;}return t},set(e,o){c.set(m[e],o,encode);},setMany(e){if("development"!==process.env.NODE_ENV||isBrowser||console.log("[@koine/utils:createStorage] attempt to use 'setMany' outside of browser."),isBrowser)for(let t in e){let o=e[t];isNullOrUndefined(o)?this.remove(t):this.set(t,o);}},has:e=>c.has(m[e]),remove(e){c.remove(m[e]);},clear(){if("development"!==process.env.NODE_ENV||isBrowser||console.log("[@koine/utils:createStorage] attempt to use 'clear' outside of browser."),isBrowser)for(let e in m)c.remove(m[e]);},watch:(e,t,r)=>isBrowser?on(window,"storage",o=>{let{key:s,oldValue:l,newValue:i}=o;s===m[e]&&(l&&!i?t?.():!l&&i&&r?.());}):("development"===process.env.NODE_ENV&&console.log("[@koine/utils:createStorage] attempt to use 'watch' outside of browser."),noop)}};
6
+
7
+ export { createStorage, createStorage as default };
@@ -0,0 +1 @@
1
+ exports._default = require('./getZonedDate.cjs.js').default;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var dateFnsTz = require('date-fns-tz');
6
+ var utils = require('@koine/utils');
7
+
8
+ let getZonedDate=(o="",n)=>{if(o.endsWith("Z")||(o+="Z"),!n&&utils.isBrowser)try{n=Intl.DateTimeFormat().resolvedOptions().timeZone;}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/browser:getZonedDate] failed reading timeZone, error",e);}return n?dateFnsTz.toZonedTime(new Date(o),n):new Date(o)};
9
+
10
+ exports.default = getZonedDate;
11
+ exports.getZonedDate = getZonedDate;
@@ -0,0 +1,2 @@
1
+ export * from './getZonedDate.cjs.js';
2
+ export { _default as default } from './getZonedDate.cjs.default.js';
package/getZonedDate.d.ts CHANGED
@@ -1,2 +1,16 @@
1
- export declare function getZonedDate(dateString?: string, timeZone?: string): Date;
1
+ /**
2
+ * It returns a `Date` object from a date `string` adjusted on the user timeZone,
3
+ * if a timeZone is not provided we try getting it from the `Intl` browwser native
4
+ * API. It gracefully falls back returning a _non-timezone-based_ `Date`.
5
+ *
6
+ * @category date
7
+ *
8
+ * @resources
9
+ * - to get the timeZone client side see [this article](https://attacomsian.com/blog/javascript-current-timezone)
10
+ * - for converting the date based on the time zone [date-fns docs](https://date-fns.org/v2.27.0/docs/Time-Zones) and [date-fns-tz docs](https://github.com/marnusw/date-fns-tz)
11
+ *
12
+ * @param dateString A parseable date as string, `Z` is automatically suffixed if not present to correctly get time zone based time from a UTC date.
13
+ * @param timeZone Optionally pass a timeZone (e.g. from user preference or from the server), it falls back trying to read it from the `Intl` browwser native API.
14
+ */
15
+ export declare let getZonedDate: (dateString?: string, timeZone?: string) => Date;
2
16
  export default getZonedDate;
@@ -0,0 +1,6 @@
1
+ import { toZonedTime } from 'date-fns-tz';
2
+ import { isBrowser } from '@koine/utils';
3
+
4
+ let getZonedDate=(o="",n)=>{if(o.endsWith("Z")||(o+="Z"),!n&&isBrowser)try{n=Intl.DateTimeFormat().resolvedOptions().timeZone;}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/browser:getZonedDate] failed reading timeZone, error",e);}return n?toZonedTime(new Date(o),n):new Date(o)};
5
+
6
+ export { getZonedDate as default, getZonedDate };
@@ -0,0 +1 @@
1
+ exports._default = require('./gtag.cjs.js').default;
package/gtag.cjs.js ADDED
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+
7
+ let gtag=(...o)=>{utils.isUndefined(window)||utils.isUndefined(window.gtag)?utils.noop():window.gtag(...o);};
8
+
9
+ exports.default = gtag;
10
+ exports.gtag = gtag;
package/gtag.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './gtag.cjs.js';
2
+ export { _default as default } from './gtag.cjs.default.js';
package/gtag.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @category analytics-google
3
+ *
4
+ * If you like you could add to your globals `.d.ts` types:
5
+ *
6
+ * ```ts
7
+ * declare interface Window {
8
+ * gtag: <T extends unknown[]>(...args: T) => void;
9
+ * }
10
+ * ```
11
+ */
12
+ export declare let gtag: <T extends unknown[]>(...args: T) => void;
13
+ export default gtag;
package/gtag.esm.js ADDED
@@ -0,0 +1,5 @@
1
+ import { isUndefined, noop } from '@koine/utils';
2
+
3
+ let gtag=(...o)=>{isUndefined(window)||isUndefined(window.gtag)?noop():window.gtag(...o);};
4
+
5
+ export { gtag as default, gtag };
@@ -0,0 +1 @@
1
+ exports._default = require('./gtagPageview.cjs.js').default;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var gtag = require('./gtag.cjs.js');
6
+
7
+ let gtagPageview=(...t)=>gtag.gtag("event","page_view",{page_path:t[0]||location.pathname,page_title:t[1]||document.title,page_location:t[2]||location.href});
8
+
9
+ exports.default = gtagPageview;
10
+ exports.gtagPageview = gtagPageview;
@@ -0,0 +1,2 @@
1
+ export * from './gtagPageview.cjs.js';
2
+ export { _default as default } from './gtagPageview.cjs.default.js';
package/gtagPageview.d.ts CHANGED
@@ -3,5 +3,8 @@ export type GtmPageviewArgs = [
3
3
  page_title?: string,
4
4
  page_location?: string
5
5
  ];
6
- export declare const gtagPageview: (page_path?: string | undefined, page_title?: string | undefined, page_location?: string | undefined) => void;
6
+ /**
7
+ * @category analytics-google
8
+ */
9
+ export declare let gtagPageview: (...args: GtmPageviewArgs) => void;
7
10
  export default gtagPageview;
@@ -0,0 +1,5 @@
1
+ import { gtag } from './gtag.esm.js';
2
+
3
+ let gtagPageview=(...t)=>gtag("event","page_view",{page_path:t[0]||location.pathname,page_title:t[1]||document.title,page_location:t[2]||location.href});
4
+
5
+ export { gtagPageview as default, gtagPageview };
@@ -0,0 +1 @@
1
+ exports._default = require('./index.cjs.js').default;
package/index.cjs.js ADDED
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ var createStorage = require('./createStorage.cjs.js');
4
+ var getZonedDate = require('./getZonedDate.cjs.js');
5
+ var gtag = require('./gtag.cjs.js');
6
+ var gtagPageview = require('./gtagPageview.cjs.js');
7
+ var isIE = require('./isIE.cjs.js');
8
+ var isMobile = require('./isMobile.cjs.js');
9
+ var isWindowInsideIframe = require('./isWindowInsideIframe.cjs.js');
10
+ var listenUrlSearch = require('./listenUrlSearch.cjs.js');
11
+ var listenUrlSearchParams = require('./listenUrlSearchParams.cjs.js');
12
+ var navigateToHash = require('./navigateToHash.cjs.js');
13
+ var navigateToHashParams = require('./navigateToHashParams.cjs.js');
14
+ var navigateToMergedHashParams = require('./navigateToMergedHashParams.cjs.js');
15
+ var navigateToMergedParams = require('./navigateToMergedParams.cjs.js');
16
+ var navigateToParams = require('./navigateToParams.cjs.js');
17
+ var navigateToUrl = require('./navigateToUrl.cjs.js');
18
+ var navigateWithoutUrlParam = require('./navigateWithoutUrlParam.cjs.js');
19
+ var storage = require('./storage.cjs.js');
20
+ var redirectTo = require('./redirectTo.cjs.js');
21
+ var storageClient = require('./storageClient.cjs.js');
22
+
23
+
24
+
25
+ exports.createStorage = createStorage.createStorage;
26
+ exports.getZonedDate = getZonedDate.getZonedDate;
27
+ exports.gtag = gtag.gtag;
28
+ exports.gtagPageview = gtagPageview.gtagPageview;
29
+ exports.isIE = isIE.isIE;
30
+ exports.isMobile = isMobile.isMobile;
31
+ exports.isWindowInsideIframe = isWindowInsideIframe.isWindowInsideIframe;
32
+ exports.listenUrlSearch = listenUrlSearch.listenUrlSearch;
33
+ exports.listenUrlSearchParams = listenUrlSearchParams.listenUrlSearchParams;
34
+ exports.navigateToHash = navigateToHash.navigateToHash;
35
+ exports.navigateToHashParams = navigateToHashParams.navigateToHashParams;
36
+ exports.navigateToMergedHashParams = navigateToMergedHashParams.navigateToMergedHashParams;
37
+ exports.navigateToMergedParams = navigateToMergedParams.navigateToMergedParams;
38
+ exports.navigateToParams = navigateToParams.navigateToParams;
39
+ exports.navigateToUrl = navigateToUrl.navigateToUrl;
40
+ exports.navigateWithoutUrlParam = navigateWithoutUrlParam.navigateWithoutUrlParam;
41
+ exports.storage = storage.storage;
42
+ exports.redirectTo = redirectTo.redirectTo;
43
+ exports.storageClient = storageClient.storageClient;
package/index.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './index.cjs.js';
2
+ export { _default as default } from './index.cjs.default.js';
package/index.d.ts CHANGED
@@ -1,17 +1,19 @@
1
- export { createStorage, type CreateStorageConfig } from "./createStorage.js";
2
- export { getZonedDate } from "./getZonedDate.js";
3
- export { gtagPageview, type GtmPageviewArgs } from "./gtagPageview.js";
4
- export { isIE } from "./isIE.js";
5
- export { isMobile } from "./isMobile.js";
6
- export { listenUrlSearch } from "./listenUrlSearch.js";
7
- export { listenUrlSearchParams } from "./listenUrlSearchParams.js";
8
- export { navigateToHash } from "./navigateToHash.js";
9
- export { navigateToHashParams } from "./navigateToHashParams.js";
10
- export { navigateToMergedHashParams } from "./navigateToMergedHashParams.js";
11
- export { navigateToMergedParams } from "./navigateToMergedParams.js";
12
- export { navigateToParams } from "./navigateToParams.js";
13
- export { navigateToUrl } from "./navigateToUrl.js";
14
- export { navigateWithoutUrlParam } from "./navigateWithoutUrlParam.js";
15
- export { redirectTo } from "./redirectTo.js";
16
- export { storage } from "./storage.js";
17
- export { storageClient, type StorageClientConfig } from "./storageClient.js";
1
+ export { createStorage, type CreateStorageConfig } from "./createStorage";
2
+ export { getZonedDate } from "./getZonedDate";
3
+ export { gtag } from "./gtag";
4
+ export { gtagPageview, type GtmPageviewArgs } from "./gtagPageview";
5
+ export { isIE } from "./isIE";
6
+ export { isMobile } from "./isMobile";
7
+ export { isWindowInsideIframe } from "./isWindowInsideIframe";
8
+ export { listenUrlSearch } from "./listenUrlSearch";
9
+ export { listenUrlSearchParams } from "./listenUrlSearchParams";
10
+ export { navigateToHash } from "./navigateToHash";
11
+ export { navigateToHashParams } from "./navigateToHashParams";
12
+ export { navigateToMergedHashParams } from "./navigateToMergedHashParams";
13
+ export { navigateToMergedParams } from "./navigateToMergedParams";
14
+ export { navigateToParams } from "./navigateToParams";
15
+ export { navigateToUrl } from "./navigateToUrl";
16
+ export { navigateWithoutUrlParam } from "./navigateWithoutUrlParam";
17
+ export { storage } from "./storage";
18
+ export { redirectTo } from "./redirectTo";
19
+ export { storageClient, type StorageClientConfig } from "./storageClient";
package/index.esm.js ADDED
@@ -0,0 +1,19 @@
1
+ export { createStorage } from './createStorage.esm.js';
2
+ export { getZonedDate } from './getZonedDate.esm.js';
3
+ export { gtag } from './gtag.esm.js';
4
+ export { gtagPageview } from './gtagPageview.esm.js';
5
+ export { isIE } from './isIE.esm.js';
6
+ export { isMobile } from './isMobile.esm.js';
7
+ export { isWindowInsideIframe } from './isWindowInsideIframe.esm.js';
8
+ export { listenUrlSearch } from './listenUrlSearch.esm.js';
9
+ export { listenUrlSearchParams } from './listenUrlSearchParams.esm.js';
10
+ export { navigateToHash } from './navigateToHash.esm.js';
11
+ export { navigateToHashParams } from './navigateToHashParams.esm.js';
12
+ export { navigateToMergedHashParams } from './navigateToMergedHashParams.esm.js';
13
+ export { navigateToMergedParams } from './navigateToMergedParams.esm.js';
14
+ export { navigateToParams } from './navigateToParams.esm.js';
15
+ export { navigateToUrl } from './navigateToUrl.esm.js';
16
+ export { navigateWithoutUrlParam } from './navigateWithoutUrlParam.esm.js';
17
+ export { storage } from './storage.esm.js';
18
+ export { redirectTo } from './redirectTo.esm.js';
19
+ export { storageClient } from './storageClient.esm.js';
@@ -0,0 +1 @@
1
+ exports._default = require('./isIE.cjs.js').default;
package/isIE.cjs.js ADDED
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+
7
+ let isIE=(t=true)=>{if(utils.isServer)return t;let i=window.navigator.userAgent;return !!(i.indexOf("MSIE ")>0||i.indexOf("Trident/")>0)};
8
+
9
+ exports.default = isIE;
10
+ exports.isIE = isIE;
package/isIE.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './isIE.cjs.js';
2
+ export { _default as default } from './isIE.cjs.default.js';
package/isIE.d.ts CHANGED
@@ -1,2 +1,7 @@
1
- export declare function isIE(ssrValue?: boolean): boolean;
1
+ /**
2
+ * @category detect
3
+ * @category is
4
+ * @see https://stackoverflow.com/a/21712356/12285349
5
+ */
6
+ export declare let isIE: (ssrValue?: boolean) => boolean;
2
7
  export default isIE;
package/isIE.esm.js ADDED
@@ -0,0 +1,5 @@
1
+ import { isServer } from '@koine/utils';
2
+
3
+ let isIE=(t=true)=>{if(isServer)return t;let i=window.navigator.userAgent;return !!(i.indexOf("MSIE ")>0||i.indexOf("Trident/")>0)};
4
+
5
+ export { isIE as default, isIE };
@@ -0,0 +1 @@
1
+ exports._default = require('./isMobile.cjs.js').default;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+
7
+ let isMobile=(e=true)=>utils.isServer?e:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent);
8
+
9
+ exports.default = isMobile;
10
+ exports.isMobile = isMobile;
@@ -0,0 +1,2 @@
1
+ export * from './isMobile.cjs.js';
2
+ export { _default as default } from './isMobile.cjs.default.js';
package/isMobile.d.ts CHANGED
@@ -1,2 +1,7 @@
1
- export declare function isMobile(ssrValue?: boolean): boolean;
1
+ /**
2
+ * @category detect
3
+ * @category is
4
+ * @see https://stackoverflow.com/a/3540295
5
+ */
6
+ export declare let isMobile: (ssrValue?: boolean) => boolean;
2
7
  export default isMobile;
@@ -0,0 +1,5 @@
1
+ import { isServer } from '@koine/utils';
2
+
3
+ let isMobile=(e=true)=>isServer?e:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent);
4
+
5
+ export { isMobile as default, isMobile };
@@ -0,0 +1 @@
1
+ exports._default = require('./isWindowInsideIframe.cjs.js').default;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const isWindowInsideIframe=()=>window.self!==window.top;
6
+
7
+ exports.default = isWindowInsideIframe;
8
+ exports.isWindowInsideIframe = isWindowInsideIframe;
@@ -0,0 +1,2 @@
1
+ export * from './isWindowInsideIframe.cjs.js';
2
+ export { _default as default } from './isWindowInsideIframe.cjs.default.js';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @borrows [SO's asnwer](https://stackoverflow.com/a/326076)
3
+ */
4
+ export declare const isWindowInsideIframe: () => boolean;
5
+ export default isWindowInsideIframe;
@@ -0,0 +1,3 @@
1
+ const isWindowInsideIframe=()=>window.self!==window.top;
2
+
3
+ export { isWindowInsideIframe as default, isWindowInsideIframe };
@@ -0,0 +1 @@
1
+ exports._default = require('./listenUrlSearch.cjs.js').default;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+ var dom = require('@koine/dom');
7
+
8
+ let r=(t,e,r)=>function(...o){let i=t.apply(this,o);return e(),i},o=utils.isBrowser?location.search:"",i=()=>{let t=location.search;if(t!==o)for(let e of history.__.h.values())e(o,t);o=t;};let listenUrlSearch=t=>(history.__||(history.pushState=r(history.pushState,i),history.replaceState=r(history.replaceState,i),dom.on(window,"popstate",i),history.__={h:new Set}),history.__.h.has(t)||history.__.h.add(t),()=>{history.__.h.delete(t);});
9
+
10
+ exports.default = listenUrlSearch;
11
+ exports.listenUrlSearch = listenUrlSearch;
@@ -0,0 +1,2 @@
1
+ export * from './listenUrlSearch.cjs.js';
2
+ export { _default as default } from './listenUrlSearch.cjs.default.js';
@@ -1,3 +1,30 @@
1
+ type Extension = {
2
+ /**
3
+ * Flag that tells if `history` methods have been replaced
4
+ */
5
+ r?: boolean;
6
+ h: Set<Handler>;
7
+ };
8
+ /**
9
+ * @param prevLocationSearch The previous URL search query e.g. `?myparam=mvalue`
10
+ * @param newLocationSearch The previous URL search query e.g. `?myparam=mvalue`
11
+ */
1
12
  type Handler = (prevLocationSearch: string, newLocationSearch: string) => void;
2
- export declare function listenUrlSearch(handler: Handler): () => void;
13
+ export type HistoryExtended = History & {
14
+ __: Extension;
15
+ };
16
+ /**
17
+ * Here we extend and mutate the native `window.history` object so that multiple
18
+ * scripts can add url change handlers without interfering each other and using
19
+ * the same single listener.
20
+ *
21
+ * @borrows [SO answer](https://stackoverflow.com/a/42727249/1938970)
22
+ *
23
+ * @category location
24
+ * @category navigation
25
+ * @category events
26
+ *
27
+ * @returns A de-register function to remove the handler
28
+ */
29
+ export declare let listenUrlSearch: (handler: Handler) => () => void;
3
30
  export default listenUrlSearch;
@@ -0,0 +1,6 @@
1
+ import { isBrowser } from '@koine/utils';
2
+ import { on } from '@koine/dom';
3
+
4
+ let r=(t,e,r)=>function(...o){let i=t.apply(this,o);return e(),i},o=isBrowser?location.search:"",i=()=>{let t=location.search;if(t!==o)for(let e of history.__.h.values())e(o,t);o=t;};let listenUrlSearch=t=>(history.__||(history.pushState=r(history.pushState,i),history.replaceState=r(history.replaceState,i),on(window,"popstate",i),history.__={h:new Set}),history.__.h.has(t)||history.__.h.add(t),()=>{history.__.h.delete(t);});
5
+
6
+ export { listenUrlSearch as default, listenUrlSearch };
@@ -0,0 +1 @@
1
+ exports._default = require('./listenUrlSearchParams.cjs.js').default;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var listenUrlSearch = require('./listenUrlSearch.cjs.js');
6
+
7
+ let listenUrlSearchParams=(r,a)=>listenUrlSearch.listenUrlSearch((e,t)=>{let l=new URLSearchParams(e),s=new URLSearchParams(t).get(r);l.get(r)!==s&&a(s);});
8
+
9
+ exports.default = listenUrlSearchParams;
10
+ exports.listenUrlSearchParams = listenUrlSearchParams;
@@ -0,0 +1,2 @@
1
+ export * from './listenUrlSearchParams.cjs.js';
2
+ export { _default as default } from './listenUrlSearchParams.cjs.default.js';
@@ -1,2 +1,7 @@
1
- export declare const listenUrlSearchParams: (paramName: string, handler: (paramNewValue: string | null) => void) => () => void;
1
+ /**
2
+ * @category events
3
+ * @category navigation
4
+ * @category events
5
+ */
6
+ export declare let listenUrlSearchParams: (paramName: string, handler: (paramNewValue: string | null) => void) => () => void;
2
7
  export default listenUrlSearchParams;
@@ -0,0 +1,5 @@
1
+ import { listenUrlSearch } from './listenUrlSearch.esm.js';
2
+
3
+ let listenUrlSearchParams=(r,a)=>listenUrlSearch((e,t)=>{let l=new URLSearchParams(e),s=new URLSearchParams(t).get(r);l.get(r)!==s&&a(s);});
4
+
5
+ export { listenUrlSearchParams as default, listenUrlSearchParams };
@@ -0,0 +1 @@
1
+ exports._default = require('./navigateToHash.cjs.js').default;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var navigateToUrl = require('./navigateToUrl.cjs.js');
6
+
7
+ let navigateToHash=(t="")=>{let{pathname:o,search:e}=location;navigateToUrl.navigateToUrl(o+(e?"?"+e:"")+(t?"#"+t:""),true);};
8
+
9
+ exports.default = navigateToHash;
10
+ exports.navigateToHash = navigateToHash;
@@ -0,0 +1,2 @@
1
+ export * from './navigateToHash.cjs.js';
2
+ export { _default as default } from './navigateToHash.cjs.default.js';
@@ -1,2 +1,8 @@
1
- export declare function navigateToHash(hash?: string): void;
1
+ /**
2
+ * It updates the browser's location hash by replacing the history state.
3
+ * The non-silent standard way would simply be `location.hash = "#new-hash"`
4
+ *
5
+ * @category location
6
+ */
7
+ export declare let navigateToHash: (hash?: string) => void;
2
8
  export default navigateToHash;
@@ -0,0 +1,5 @@
1
+ import { navigateToUrl } from './navigateToUrl.esm.js';
2
+
3
+ let navigateToHash=(t="")=>{let{pathname:o,search:e}=location;navigateToUrl(o+(e?"?"+e:"")+(t?"#"+t:""),true);};
4
+
5
+ export { navigateToHash as default, navigateToHash };
@@ -0,0 +1 @@
1
+ exports._default = require('./navigateToHashParams.cjs.js').default;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+
7
+ let navigateToHashParams=(o={},e="")=>{let r=!e,i="#/"+utils.getUrlHashPathname(e=e||location.hash)+("string"==typeof o?o:utils.buildUrlQueryString(o));return r&&(location.hash=i),i};
8
+
9
+ exports.default = navigateToHashParams;
10
+ exports.navigateToHashParams = navigateToHashParams;
@@ -0,0 +1,2 @@
1
+ export * from './navigateToHashParams.cjs.js';
2
+ export { _default as default } from './navigateToHashParams.cjs.default.js';
@@ -1,3 +1,9 @@
1
1
  import { type AnyQueryParams } from "@koine/utils";
2
- export declare function navigateToHashParams(params?: string | AnyQueryParams, hash?: string): string;
2
+ /**
3
+ * It updates the `location.hash` with the given query params, it uses `location.hash`
4
+ * if a second argument `hash` is not provded
5
+ *
6
+ * @category location
7
+ */
8
+ export declare let navigateToHashParams: (params?: string | AnyQueryParams, hash?: string) => string;
3
9
  export default navigateToHashParams;
@@ -0,0 +1,5 @@
1
+ import { getUrlHashPathname, buildUrlQueryString } from '@koine/utils';
2
+
3
+ let navigateToHashParams=(o={},e="")=>{let r=!e,i="#/"+getUrlHashPathname(e=e||location.hash)+("string"==typeof o?o:buildUrlQueryString(o));return r&&(location.hash=i),i};
4
+
5
+ export { navigateToHashParams as default, navigateToHashParams };