@abyss-project/commons-front-core 13.1.1 → 13.3.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/dist/{AbyssCloud-IuD91X6C.js → AbyssCloud-D_AbU9k7.js} +1 -1
- package/dist/AbyssCookieConsentProvider-Ds99df0E.js +4562 -0
- package/dist/{CookieConsentSettings.component-ZF6umBSH.js → CookieConsentSettings.component-DoWLHqw5.js} +10 -9
- package/dist/{Tabs-CYy30PTc.js → Tabs-C1qcQ2i5.js} +1 -1
- package/dist/{isSymbol-CubIld3H.js → clsx-D8ItxkrZ.js} +73 -73
- package/dist/components/CodeEditor/CodeEditor.component.d.ts +29 -0
- package/dist/components/CodeEditor/DataSourceBrowser/path-formatter.utils.d.ts +14 -0
- package/dist/components/CodeEditor/DataSourceBrowser/types.d.ts +17 -0
- package/dist/components/CodeEditor/ExpressionCodeEditor.component.d.ts +13 -0
- package/dist/components/CodeEditor/ExpressionCodeEditor.component.spec.d.ts +1 -0
- package/dist/components/CodeEditor/FullScreenMonacoEditor.component.d.ts +13 -0
- package/dist/components/CodeEditor/index.d.ts +7 -0
- package/dist/components/CodeEditor/monaco-types-generator.d.ts +40 -0
- package/dist/components/ScanStatus/InfectedDownloadWarningModal.d.ts +57 -0
- package/dist/components/ScanStatus/InfectedDownloadWarningModal.spec.d.ts +1 -0
- package/dist/components/ScanStatus/ScanStatusIndicator.d.ts +102 -0
- package/dist/components/ScanStatus/ScanStatusIndicator.spec.d.ts +1 -0
- package/dist/components/ScanStatus/index.d.ts +6 -0
- package/dist/components/ScanStatus/use-infected-download-guard.hook.d.ts +37 -0
- package/dist/components/ScanStatus/use-infected-download-guard.hook.spec.d.ts +1 -0
- package/dist/components/data/DataTable/data-table.types.d.ts +5 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/inputs/ExpressionSearch/expression-fade.d.ts +6 -0
- package/dist/cookie-consent.js +11 -10
- package/dist/{design-theme-jAV6pBoh.js → design-theme-CYGZ6mAh.js} +8406 -9136
- package/dist/{editors-Cs01hAfK.js → editors-CUsZNFfw.js} +15755 -15038
- package/dist/editors.d.ts +1 -0
- package/dist/editors.js +13 -4
- package/dist/hooks/use-rich-intl.hook.d.ts +46 -0
- package/dist/{index-BLWFMNK1.js → index-BQ4GXlMJ.js} +1 -1
- package/dist/{index-CQhfq-e2.js → index-Ba41aBBN.js} +2 -2
- package/dist/{index-Bw9dFzxv.js → index-BhFOCfCj.js} +2 -2
- package/dist/{index-CgdrkQAf.js → index-Bn4gTAno.js} +2 -2
- package/dist/{index-BB97MmlB.js → index-BzoBMWdL.js} +3 -3
- package/dist/{index-BQ-RHsS9.js → index-C7a2XXcz.js} +4 -4
- package/dist/{index-BSpED9Jn.js → index-CDpC4_po.js} +2 -2
- package/dist/{index-BYymsRFa.js → index-CM0x-TnE.js} +2 -2
- package/dist/{index-BG_7wul8.js → index-CYUixRIB.js} +2 -2
- package/dist/{index-Ce0hJGR7.js → index-CiDg4J7c.js} +4 -4
- package/dist/{index-BJ-WRVfA.js → index-CjV5ui_B.js} +2 -2
- package/dist/{index-CQIcz4k-.js → index-D1ro2oTw.js} +2 -2
- package/dist/{index-BOB-FVdo.js → index-DEBTvCWD.js} +3 -3
- package/dist/{index-DfzHovEF.js → index-DErJ9c2q.js} +2 -2
- package/dist/{index-CWzTvLyx.js → index-DobX4g2g.js} +2 -2
- package/dist/{index-C64fovtn.js → index-DuMzZrqc.js} +2 -2
- package/dist/{index-CHGLrOHZ.js → index-GTkZik4b.js} +3 -3
- package/dist/{index-B4BTrYji.js → index-Lyt4_W7a.js} +2 -2
- package/dist/{index-C918Bygt.js → index-TB7ekLl-.js} +2 -2
- package/dist/{index-BxEgyF6L.js → index-YzYX-H93.js} +3 -3
- package/dist/{index-YnJVcsc6.js → index-pnfk6VZ7.js} +4 -4
- package/dist/index.js +4826 -4268
- package/dist/legacy.js +13214 -13212
- package/dist/translations/en.d.ts +23 -0
- package/dist/translations/fr.d.ts +23 -0
- package/dist/{AbyssCookieConsentProvider-DJTKl58k.js → use-rich-intl.hook-BETUyCkW.js} +191 -4693
- package/dist/utils/billing-quota-error.utils.d.ts +11 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/quota-refusal-toast.utils.d.ts +12 -0
- package/dist/utils/quota-refusal-toast.utils.spec.d.ts +1 -0
- package/dist/utils/table-column-width.d.ts +58 -0
- package/dist/utils/table-column-width.spec.d.ts +1 -0
- package/package.json +8 -5
- package/scripts/check-external-react-toastify.cjs +104 -0
- package/vite.config.ts +3 -1
- package/dist/_commonjsHelpers-DaMA6jEr.js +0 -8
|
@@ -8,4 +8,14 @@ import { QuotaDialogPayload } from '../hooks/quota-dialog.store';
|
|
|
8
8
|
* returns the offending metric.
|
|
9
9
|
*/
|
|
10
10
|
export declare const parseQuotaError: (error: unknown) => QuotaDialogPayload | null;
|
|
11
|
-
export
|
|
11
|
+
export interface QuotaInterceptorOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Tells whether a location is a public route (a page a visitor opens without being the account
|
|
14
|
+
* owner). Evaluated when the request leaves, never when the response arrives: a request that left
|
|
15
|
+
* from a public route never opens the quota dialog, even if the route changed in between. A
|
|
16
|
+
* request that left from a private route keeps opening it, even when its response arrives on a
|
|
17
|
+
* public page, because the quota that was hit is the visitor's own.
|
|
18
|
+
*/
|
|
19
|
+
isPublicRoute?: (location: Pick<Location, 'pathname'>) => boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare const attachQuotaInterceptor: (instances: AxiosInstance[], options?: QuotaInterceptorOptions) => void;
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from './share-notification.utils';
|
|
|
8
8
|
export * from './space-display-name.utils';
|
|
9
9
|
export * from './cloud-space-url.utils';
|
|
10
10
|
export * from './billing-quota-error.utils';
|
|
11
|
+
export * from './quota-refusal-toast.utils';
|
|
11
12
|
export * from './cookie-storage.utils';
|
|
12
13
|
export * from './cookie-consent-reconcile.utils';
|
|
13
14
|
export * from './cookie-consent.types';
|
|
@@ -15,3 +16,4 @@ export * from './privacy-link.constant';
|
|
|
15
16
|
export * from './quota-offer-state.utils';
|
|
16
17
|
export * from './family';
|
|
17
18
|
export * from './file.utils';
|
|
19
|
+
export * from './table-column-width';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shows an error toast unless the error is a quota refusal: that one already opens the shared quota
|
|
3
|
+
* dialog (attachQuotaInterceptor), and a generic toast on top of it would contradict it and hide its
|
|
4
|
+
* call to action on a phone.
|
|
5
|
+
*/
|
|
6
|
+
export declare const toastErrorUnlessQuotaRefusal: (error: unknown, message: string) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Same as `toastErrorUnlessQuotaRefusal` for a batch of calls (an upload of many files, a bulk
|
|
9
|
+
* action): the quota dialog opens as soon as ONE of them is refused, so no toast follows when any
|
|
10
|
+
* error of the batch is a quota refusal, whatever the order in which the errors arrived.
|
|
11
|
+
*/
|
|
12
|
+
export declare const toastErrorUnlessAnyQuotaRefusal: (errors: readonly unknown[], message: string) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Theme } from '@mui/material/styles';
|
|
2
|
+
import { Locale } from 'date-fns';
|
|
3
|
+
/** The date and time of a row in the tool tables (« 15 oct. 2026 02:49 »). */
|
|
4
|
+
export declare const TABLE_DATE_TIME_PATTERN = "d MMM yyyy HH:mm";
|
|
5
|
+
/** The day of a row in the tool tables (« 15 oct. 2026 »). */
|
|
6
|
+
export declare const TABLE_DAY_PATTERN = "d MMM yyyy";
|
|
7
|
+
/** Side of a `fontSize="small"` MUI icon, in px. */
|
|
8
|
+
export declare const SMALL_ICON_PX = 20;
|
|
9
|
+
/** How the header of a column is drawn. */
|
|
10
|
+
export interface ColumnHeaderOptions {
|
|
11
|
+
/** The header is a sort button: once sorted, it shows its arrow after the label. */
|
|
12
|
+
sortable?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** Width of `text` in the mono family at the body size (cells marked `mono`). */
|
|
15
|
+
export declare const monoTextWidth: (theme: Theme, text: string) => number;
|
|
16
|
+
/** Upper bound of the width of `text` in the sans family at `size` (the body size by default). */
|
|
17
|
+
export declare const sansTextWidth: (theme: Theme, text: string, size?: number) => number;
|
|
18
|
+
/**
|
|
19
|
+
* Width of a core `StatusBadge` or `ScanBadge` showing `label`: its caption label, its side
|
|
20
|
+
* padding, its hairline border and, with `dot`, the leading dot and its gap.
|
|
21
|
+
*/
|
|
22
|
+
export declare const badgeWidth: (theme: Theme, label: string, dot?: boolean) => number;
|
|
23
|
+
/**
|
|
24
|
+
* The longest rendering of a date-fns `pattern` over the twelve months, in `locale`: the locale
|
|
25
|
+
* the cells of the column are formatted with (this package's date-fns copy ignores the host's
|
|
26
|
+
* default locale, so it is passed).
|
|
27
|
+
*/
|
|
28
|
+
export declare const longestDate: (pattern: string, locale: Locale) => string;
|
|
29
|
+
/** Width that shows a header label whole, in the header's small type, with its sort arrow. */
|
|
30
|
+
export declare const headerColumnWidth: (theme: Theme, header: string, options?: ColumnHeaderOptions) => number;
|
|
31
|
+
/**
|
|
32
|
+
* Width of a column whose cells are `contentWidths` px wide at most (an empty list for a column
|
|
33
|
+
* without rows yet), never narrower than its header.
|
|
34
|
+
*/
|
|
35
|
+
export declare const contentColumnWidth: (theme: Theme, contentWidths: number[], header: string, options?: ColumnHeaderOptions) => number;
|
|
36
|
+
/** Width of a mono column holding the longest of `texts`, never narrower than its header. */
|
|
37
|
+
export declare const monoColumnWidth: (theme: Theme, texts: string[], header: string, options?: ColumnHeaderOptions) => number;
|
|
38
|
+
/** Width of a sans column holding the longest of `texts`, never narrower than its header. */
|
|
39
|
+
export declare const textColumnWidth: (theme: Theme, texts: string[], header: string, options?: ColumnHeaderOptions) => number;
|
|
40
|
+
/**
|
|
41
|
+
* Width of a column of badges holding the longest of `labels` (every label the column can show),
|
|
42
|
+
* never narrower than its header.
|
|
43
|
+
*/
|
|
44
|
+
export declare const badgeColumnWidth: (theme: Theme, labels: string[], header: string, options?: ColumnHeaderOptions & {
|
|
45
|
+
dot?: boolean;
|
|
46
|
+
}) => number;
|
|
47
|
+
/**
|
|
48
|
+
* Width of a mono date column: the longest rendering of `pattern` over the twelve months, in
|
|
49
|
+
* `locale` (the date-fns locale the cells use), and never narrower than its header.
|
|
50
|
+
*/
|
|
51
|
+
export declare const dateColumnWidth: (theme: Theme, pattern: string, locale: Locale, header: string, options?: ColumnHeaderOptions) => number;
|
|
52
|
+
/** Width of a column that shows one small icon (a row's « open » chevron). */
|
|
53
|
+
export declare const iconColumnWidth: (theme: Theme) => number;
|
|
54
|
+
/**
|
|
55
|
+
* Width of a column of `count` icon buttons side by side, `gap` apart: each button at the larger
|
|
56
|
+
* control size of the two densities, so the column holds them whatever the density.
|
|
57
|
+
*/
|
|
58
|
+
export declare const iconActionsColumnWidth: (theme: Theme, count: number, gap: number) => number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abyss-project/commons-front-core",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.3.0",
|
|
4
4
|
"description": "Front Core package of AbyssProject",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -86,8 +86,9 @@
|
|
|
86
86
|
"react-intl": "^6.2.5",
|
|
87
87
|
"react-is": "^18.0.0 || ^19.0.0",
|
|
88
88
|
"react-router-dom": "^6.15.0",
|
|
89
|
+
"react-toastify": "^8.0.2 || ^10.0.0",
|
|
89
90
|
"zustand": "^5.0.0",
|
|
90
|
-
"@abyss-project/main": "27.
|
|
91
|
+
"@abyss-project/main": "27.7.0"
|
|
91
92
|
},
|
|
92
93
|
"peerDependenciesMeta": {
|
|
93
94
|
"@abyss-project/capacitor-auth": {
|
|
@@ -113,6 +114,7 @@
|
|
|
113
114
|
"@milkdown/plugin-listener": "7.15.3",
|
|
114
115
|
"@milkdown/react": "7.15.3",
|
|
115
116
|
"@milkdown/utils": "7.15.3",
|
|
117
|
+
"@monaco-editor/react": "^4.7.0",
|
|
116
118
|
"@nivo/bar": "^0.88.0",
|
|
117
119
|
"@nivo/core": "^0.88.0",
|
|
118
120
|
"@nivo/line": "^0.88.0",
|
|
@@ -127,17 +129,17 @@
|
|
|
127
129
|
"flat": "^5.0.2",
|
|
128
130
|
"formik": "^2.4.6",
|
|
129
131
|
"lodash": "^4.17.21",
|
|
132
|
+
"monaco-editor": "^0.55.1",
|
|
130
133
|
"pdf-lib": "^1.17.1",
|
|
131
134
|
"pdfjs-dist": "^4.10.38",
|
|
132
135
|
"qrcode": "^1.5.3",
|
|
133
136
|
"react-dropzone": "^14.3.8",
|
|
134
137
|
"react-error-boundary": "^6.1.1",
|
|
135
138
|
"react-router-dom": "^6.15.0",
|
|
136
|
-
"react-toastify": "^8.0.2",
|
|
137
139
|
"use-debounce": "^10.0.5",
|
|
138
140
|
"uuid": "^9.0.0",
|
|
139
141
|
"yup": "^0.32.11",
|
|
140
|
-
"@abyss-project/main": "27.
|
|
142
|
+
"@abyss-project/main": "27.7.0"
|
|
141
143
|
},
|
|
142
144
|
"devDependencies": {
|
|
143
145
|
"@abyss-project/cloud": "^2.4.0",
|
|
@@ -169,6 +171,7 @@
|
|
|
169
171
|
"eslint-plugin-react-hooks": "^4.6.2",
|
|
170
172
|
"jsdom": "^29.1.1",
|
|
171
173
|
"prettier": "^2.5.1",
|
|
174
|
+
"react-toastify": "^8.0.2",
|
|
172
175
|
"tsc-watch": "^4.6.2",
|
|
173
176
|
"typescript": "5.9.3",
|
|
174
177
|
"vite": "^6.3.5",
|
|
@@ -180,7 +183,7 @@
|
|
|
180
183
|
"lint": "eslint \"{src,apps,libs,test,core,catalog}/**/*.{ts,tsx}\" --fix",
|
|
181
184
|
"lint:check": "eslint \"{src,apps,libs,test,core,catalog}/**/*.{ts,tsx}\" --max-warnings 0",
|
|
182
185
|
"tsc": "tsc --noEmit && tsc --noEmit -p catalog/tsconfig.json",
|
|
183
|
-
"build": "vite build && node scripts/check-auth-entry-isolation.cjs",
|
|
186
|
+
"build": "vite build && node scripts/check-auth-entry-isolation.cjs && node scripts/check-external-react-toastify.cjs",
|
|
184
187
|
"dev": "vite build --watch",
|
|
185
188
|
"test": "vitest run --config vitest.config.ts",
|
|
186
189
|
"test:watch": "vitest --config vitest.config.ts",
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/* eslint-disable no-console */
|
|
3
|
+
'use strict';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* check-external-react-toastify.cjs - build guard for the `react-toastify` peer dependency (#766).
|
|
7
|
+
*
|
|
8
|
+
* `react-toastify` is a peerDependency of the package and is declared external in `vite.config.ts`.
|
|
9
|
+
* Bundled instead, the toasts emitted from the core (the quota helpers, the legacy DropZone,
|
|
10
|
+
* CloudImport, ProjectLinkSelector and SupportMessageThread) would go to a private copy of the
|
|
11
|
+
* library that no `ToastContainer` listens to, and be lost silently.
|
|
12
|
+
*
|
|
13
|
+
* This walks `dist/index.js` and `dist/legacy.js` plus every chunk they import by a relative path,
|
|
14
|
+
* and fails if, for either entry:
|
|
15
|
+
* - no reachable file imports the bare specifier "react-toastify";
|
|
16
|
+
* - any reachable file carries the internal code of the library (markers below).
|
|
17
|
+
*
|
|
18
|
+
* Exit 0: external. Exit 1: bundled or not imported. Exit 2: usage or tooling error (dist absent -
|
|
19
|
+
* build the package first). Run from the package's own `build` script, after `vite build`.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
const fs = require('fs');
|
|
23
|
+
const path = require('path');
|
|
24
|
+
|
|
25
|
+
const DIST_DIR = path.resolve(__dirname, '../dist');
|
|
26
|
+
const ENTRIES = ['index.js', 'legacy.js'];
|
|
27
|
+
|
|
28
|
+
// Internal symbols of react-toastify that only exist when its code is bundled.
|
|
29
|
+
const BUNDLED_MARKERS = ['useToastContainer', 'eventManager'];
|
|
30
|
+
|
|
31
|
+
const BARE_IMPORT = /(?:import|export)\s[^'"]*?from\s*["']react-toastify["']|import\s*["']react-toastify["']/;
|
|
32
|
+
|
|
33
|
+
class UsageError extends Error {}
|
|
34
|
+
|
|
35
|
+
function localImportSpecifiers(source) {
|
|
36
|
+
const specifiers = new Set();
|
|
37
|
+
const re = /(?:import|export)\s[^'"]*?from\s*["']([^"']+)["']|import\s*["']([^"']+)["']/g;
|
|
38
|
+
let match = re.exec(source);
|
|
39
|
+
while (match !== null) {
|
|
40
|
+
const specifier = match[1] || match[2];
|
|
41
|
+
if (specifier.startsWith('.')) {
|
|
42
|
+
specifiers.add(specifier);
|
|
43
|
+
}
|
|
44
|
+
match = re.exec(source);
|
|
45
|
+
}
|
|
46
|
+
return specifiers;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function walk(entry) {
|
|
50
|
+
const files = new Map();
|
|
51
|
+
const queue = [entry];
|
|
52
|
+
while (queue.length > 0) {
|
|
53
|
+
const file = queue.shift();
|
|
54
|
+
if (files.has(file)) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (!fs.existsSync(file)) {
|
|
58
|
+
throw new UsageError(`${file} is missing: build the package first (\`vite build\`).`);
|
|
59
|
+
}
|
|
60
|
+
const source = fs.readFileSync(file, 'utf8');
|
|
61
|
+
files.set(file, source);
|
|
62
|
+
for (const specifier of localImportSpecifiers(source)) {
|
|
63
|
+
queue.push(path.resolve(path.dirname(file), specifier));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return files;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function run() {
|
|
70
|
+
const failures = [];
|
|
71
|
+
for (const name of ENTRIES) {
|
|
72
|
+
const files = walk(path.join(DIST_DIR, name));
|
|
73
|
+
const sources = [...files.entries()];
|
|
74
|
+
if (!sources.some(([, source]) => BARE_IMPORT.test(source))) {
|
|
75
|
+
failures.push(`${name} does not import "react-toastify"`);
|
|
76
|
+
}
|
|
77
|
+
for (const [file, source] of sources) {
|
|
78
|
+
for (const marker of BUNDLED_MARKERS) {
|
|
79
|
+
if (source.includes(marker)) {
|
|
80
|
+
failures.push(
|
|
81
|
+
`${name}: ${path.relative(DIST_DIR, file)} embeds react-toastify code ("${marker}")`,
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (failures.length > 0) {
|
|
88
|
+
console.error('REACT-TOASTIFY EXTERNAL REFUSE :');
|
|
89
|
+
for (const failure of failures) console.error(` - ${failure}`);
|
|
90
|
+
return 1;
|
|
91
|
+
}
|
|
92
|
+
console.log('REACT-TOASTIFY EXTERNAL OK : imported by index.js and legacy.js, not bundled.');
|
|
93
|
+
return 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
try {
|
|
97
|
+
process.exit(run());
|
|
98
|
+
} catch (error) {
|
|
99
|
+
if (error instanceof UsageError) {
|
|
100
|
+
console.error(error.message);
|
|
101
|
+
process.exit(2);
|
|
102
|
+
}
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
package/vite.config.ts
CHANGED
|
@@ -93,8 +93,10 @@ export default defineConfig({
|
|
|
93
93
|
// 'react' silently externalizes 'react-is', 'react-fast-compare', etc.
|
|
94
94
|
external: (id) => {
|
|
95
95
|
const exactNames = [
|
|
96
|
-
'react', 'react-dom', 'react-intl', 'react-router-dom',
|
|
96
|
+
'react', 'react-dom', 'react-intl', 'react-router-dom', 'react-toastify',
|
|
97
97
|
'pdfjs-dist', 'pdf-lib',
|
|
98
|
+
// Monaco: one copy per app, resolved by the consumer (like pdf.js).
|
|
99
|
+
'@monaco-editor/react',
|
|
98
100
|
// A dependency, resolved by the consumer: one WebAuthn copy per app.
|
|
99
101
|
'@simplewebauthn/browser',
|
|
100
102
|
'osx-temperature-sensor', 'fs', 'path', 'os',
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
var o = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
|
|
2
|
-
function l(e) {
|
|
3
|
-
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
|
|
4
|
-
}
|
|
5
|
-
export {
|
|
6
|
-
o as c,
|
|
7
|
-
l as g
|
|
8
|
-
};
|