@wix/bex-core 2.325.0 → 2.327.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/cjs/hooks/useImport.js +4 -0
  2. package/dist/cjs/hooks/useImport.js.map +1 -1
  3. package/dist/cjs/hooks/useImportConfig.js.map +1 -1
  4. package/dist/cjs/state/ImportState/ImportState.js +181 -10
  5. package/dist/cjs/state/ImportState/ImportState.js.map +1 -1
  6. package/dist/cjs/state/ImportState/detectFieldType.js +140 -0
  7. package/dist/cjs/state/ImportState/detectFieldType.js.map +1 -0
  8. package/dist/cjs/state/ImportState/index.js +6 -0
  9. package/dist/cjs/state/ImportState/index.js.map +1 -1
  10. package/dist/esm/hooks/useImport.js +4 -2
  11. package/dist/esm/hooks/useImport.js.map +1 -1
  12. package/dist/esm/hooks/useImportConfig.js.map +1 -1
  13. package/dist/esm/state/ImportState/ImportState.js +146 -10
  14. package/dist/esm/state/ImportState/ImportState.js.map +1 -1
  15. package/dist/esm/state/ImportState/detectFieldType.js +125 -0
  16. package/dist/esm/state/ImportState/detectFieldType.js.map +1 -0
  17. package/dist/esm/state/ImportState/index.js +1 -0
  18. package/dist/esm/state/ImportState/index.js.map +1 -1
  19. package/dist/types/hooks/useImport.d.ts +3 -1
  20. package/dist/types/hooks/useImport.d.ts.map +1 -1
  21. package/dist/types/hooks/useImportConfig.d.ts +2 -1
  22. package/dist/types/hooks/useImportConfig.d.ts.map +1 -1
  23. package/dist/types/state/ImportState/ImportState.d.ts +57 -2
  24. package/dist/types/state/ImportState/ImportState.d.ts.map +1 -1
  25. package/dist/types/state/ImportState/detectFieldType.d.ts +21 -0
  26. package/dist/types/state/ImportState/detectFieldType.d.ts.map +1 -0
  27. package/dist/types/state/ImportState/index.d.ts +1 -0
  28. package/dist/types/state/ImportState/index.d.ts.map +1 -1
  29. package/package.json +4 -4
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.TYPE_SAMPLE_SIZE = void 0;
5
+ exports.detectColumnType = detectColumnType;
6
+ exports.detectValueType = detectValueType;
7
+ // Field-type detection for new fields created during CSV import (CAIRO-4131).
8
+ //
9
+ // Ported from cm-import (`wix-data-client/cm-import`):
10
+ // - per-cell rules from `src/field-configuration/detectFieldConfig.js`
11
+ // (`detectPrimitiveType`) and `src/types/validators/{number,url}.js`
12
+ // - the column-level majority vote from
13
+ // `src/field-configuration/guessFieldConfigFromSamples.js`
14
+ //
15
+ // This module owns the shared `NewFieldType` vocabulary and the primitive
16
+ // detector (number / date / boolean / url, else text). Media detection (image /
17
+ // video / document / audio) lives in `@wix/patterns-fields` — it needs the media
18
+ // URI parser, which core must not depend on — and is injected into `ImportState`
19
+ // via `detectColumnType` (see `ImportStateProps`). `detectColumnType` here takes
20
+ // the per-value detector as a parameter so the fields detector reuses this
21
+ // sampling/majority logic instead of re-implementing it.
22
+
23
+ // All field types a new column can be detected as. The primitive detector below
24
+ // only ever returns the first five; image/video/document/audio come from the
25
+ // injected fields detector.
26
+
27
+ // Infers a column's field type from its values. Injected into `ImportState`.
28
+
29
+ // Infers a single cell's field type.
30
+
31
+ // Column-detection sampling: look at the first `TYPE_SAMPLE_SIZE` values and
32
+ // require a >= `MAJORITY` share to agree on a non-text type. We use the same 2/3
33
+ // vote as cm-import but a **larger sample** — cm-import's `constants.sampleSize`
34
+ // is 6; we deliberately sample more so the inference is steadier on messy
35
+ // columns. Exported so callers pass only the head of a column to
36
+ // `detectColumnType` instead of copying it whole.
37
+ const TYPE_SAMPLE_SIZE = exports.TYPE_SAMPLE_SIZE = 50;
38
+ const MAJORITY = 2 / 3;
39
+
40
+ // cm-import `validators/number.js` `validateString`.
41
+ const NUMBER_RE = /^[+-]?(?:\d+\.?\d*)?$/;
42
+
43
+ // cm-import `detectFieldConfig.js` date patterns.
44
+ const SLASH_DATE_RE = /^\d{1,2}\/\d{1,2}\/\d{4}(?: \d{1,2}:\d{1,2})?$/;
45
+ const ISO_DATE_RE = /\d{4}-\d{2}-\d{2}/;
46
+
47
+ // Approximates cm-import `validators/url.js` (website / email / phone / relative
48
+ // links). cm-import delegates structural validation to `@wix/santa-core-utils`
49
+ // `isValidUrl`/`isValidEmail`, which aren't available here — so website URLs are
50
+ // validated with the platform `URL` parser instead (rejects empty/whitespace/
51
+ // malformed authorities). It's still an approximation: `URL` accepts some
52
+ // odd-but-parseable hosts santa would reject.
53
+ const WEBSITE_PROTOCOLS = ['http:', 'https:', 'ftp:'];
54
+ const EMAIL_PROTOCOL = 'mailto:';
55
+ const PHONE_PROTOCOLS = ['sms:', 'tel:'];
56
+ const RELATIVE_PREFIXES = ['/', '#', '?'];
57
+ const PHONE_RE = /^[\s\d()+\-/_]+$/;
58
+ const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
59
+ const startsWithAny = (value, prefixes) => prefixes.some(prefix => value.startsWith(prefix));
60
+ const isValidWebsiteUrl = value => {
61
+ let parsed;
62
+ try {
63
+ parsed = new URL(value);
64
+ } catch {
65
+ return false;
66
+ }
67
+ return WEBSITE_PROTOCOLS.includes(parsed.protocol);
68
+ };
69
+ const isEmailUrl = value => value.startsWith(EMAIL_PROTOCOL) && EMAIL_RE.test(value.slice(EMAIL_PROTOCOL.length));
70
+ const isPhoneUrl = value => PHONE_PROTOCOLS.some(protocol => value.startsWith(protocol) && PHONE_RE.test(value.slice(protocol.length)));
71
+ const isUrl = value => isValidWebsiteUrl(value) || isEmailUrl(value) || isPhoneUrl(value) || startsWithAny(value, RELATIVE_PREFIXES);
72
+ const isDate = value => {
73
+ if (SLASH_DATE_RE.test(value)) {
74
+ if (!Number.isNaN(new Date(value).getTime())) {
75
+ return true;
76
+ }
77
+ // cm-import also accepts dd/mm/yyyy by swapping day and month.
78
+ const swapped = value.replace(/(\d{1,2})\/(\d{1,2})\/(\d{4})/, '$2/$1/$3');
79
+ if (!Number.isNaN(new Date(swapped).getTime())) {
80
+ return true;
81
+ }
82
+ }
83
+ return ISO_DATE_RE.test(value) && !Number.isNaN(new Date(value).getTime());
84
+ };
85
+
86
+ /**
87
+ * Infer the field type of a single CSV cell, in cm-import's order:
88
+ * empty → number → boolean → date → url, else text.
89
+ */
90
+ function detectValueType(value) {
91
+ if (value === '') {
92
+ return 'text';
93
+ }
94
+ if (NUMBER_RE.test(value)) {
95
+ return 'number';
96
+ }
97
+ const lower = value.toLowerCase();
98
+ if (lower === 'true' || lower === 'false') {
99
+ return 'boolean';
100
+ }
101
+ if (isDate(value)) {
102
+ return 'date';
103
+ }
104
+ if (isUrl(value)) {
105
+ return 'url';
106
+ }
107
+ return 'text';
108
+ }
109
+
110
+ /**
111
+ * Infer a column's field type from its first values: the most common detected
112
+ * type, but only when it covers at least two-thirds of the samples (otherwise
113
+ * `text`). Same majority-vote algorithm as cm-import
114
+ * `guessFieldConfigFromSamples`, with a larger sample (see `TYPE_SAMPLE_SIZE`).
115
+ *
116
+ * `detectValue` defaults to the primitive {@link detectValueType}; the fields
117
+ * detector passes a media-aware variant so it reuses this sampling/majority
118
+ * logic.
119
+ */
120
+ function detectColumnType(values, detectValue = detectValueType) {
121
+ const samples = values.slice(0, TYPE_SAMPLE_SIZE);
122
+ if (samples.length === 0) {
123
+ return 'text';
124
+ }
125
+ const counts = new Map();
126
+ samples.forEach(value => {
127
+ const type = detectValue(value);
128
+ counts.set(type, (counts.get(type) ?? 0) + 1);
129
+ });
130
+ let best = 'text';
131
+ let bestCount = 0;
132
+ counts.forEach((count, type) => {
133
+ if (count > bestCount) {
134
+ best = type;
135
+ bestCount = count;
136
+ }
137
+ });
138
+ return bestCount >= samples.length * MAJORITY ? best : 'text';
139
+ }
140
+ //# sourceMappingURL=detectFieldType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TYPE_SAMPLE_SIZE","exports","MAJORITY","NUMBER_RE","SLASH_DATE_RE","ISO_DATE_RE","WEBSITE_PROTOCOLS","EMAIL_PROTOCOL","PHONE_PROTOCOLS","RELATIVE_PREFIXES","PHONE_RE","EMAIL_RE","startsWithAny","value","prefixes","some","prefix","startsWith","isValidWebsiteUrl","parsed","URL","includes","protocol","isEmailUrl","test","slice","length","isPhoneUrl","isUrl","isDate","Number","isNaN","Date","getTime","swapped","replace","detectValueType","lower","toLowerCase","detectColumnType","values","detectValue","samples","counts","Map","forEach","type","set","get","best","bestCount","count"],"sources":["../../../../src/state/ImportState/detectFieldType.ts"],"sourcesContent":["// Field-type detection for new fields created during CSV import (CAIRO-4131).\n//\n// Ported from cm-import (`wix-data-client/cm-import`):\n// - per-cell rules from `src/field-configuration/detectFieldConfig.js`\n// (`detectPrimitiveType`) and `src/types/validators/{number,url}.js`\n// - the column-level majority vote from\n// `src/field-configuration/guessFieldConfigFromSamples.js`\n//\n// This module owns the shared `NewFieldType` vocabulary and the primitive\n// detector (number / date / boolean / url, else text). Media detection (image /\n// video / document / audio) lives in `@wix/patterns-fields` — it needs the media\n// URI parser, which core must not depend on — and is injected into `ImportState`\n// via `detectColumnType` (see `ImportStateProps`). `detectColumnType` here takes\n// the per-value detector as a parameter so the fields detector reuses this\n// sampling/majority logic instead of re-implementing it.\n\n// All field types a new column can be detected as. The primitive detector below\n// only ever returns the first five; image/video/document/audio come from the\n// injected fields detector.\nexport type NewFieldType =\n | 'text'\n | 'number'\n | 'date'\n | 'boolean'\n | 'url'\n | 'image'\n | 'video'\n | 'document'\n | 'audio';\n\n// Infers a column's field type from its values. Injected into `ImportState`.\nexport type DetectColumnType = (values: string[]) => NewFieldType;\n\n// Infers a single cell's field type.\nexport type DetectValueType = (value: string) => NewFieldType;\n\n// Column-detection sampling: look at the first `TYPE_SAMPLE_SIZE` values and\n// require a >= `MAJORITY` share to agree on a non-text type. We use the same 2/3\n// vote as cm-import but a **larger sample** — cm-import's `constants.sampleSize`\n// is 6; we deliberately sample more so the inference is steadier on messy\n// columns. Exported so callers pass only the head of a column to\n// `detectColumnType` instead of copying it whole.\nexport const TYPE_SAMPLE_SIZE = 50;\nconst MAJORITY = 2 / 3;\n\n// cm-import `validators/number.js` `validateString`.\nconst NUMBER_RE = /^[+-]?(?:\\d+\\.?\\d*)?$/;\n\n// cm-import `detectFieldConfig.js` date patterns.\nconst SLASH_DATE_RE = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}(?: \\d{1,2}:\\d{1,2})?$/;\nconst ISO_DATE_RE = /\\d{4}-\\d{2}-\\d{2}/;\n\n// Approximates cm-import `validators/url.js` (website / email / phone / relative\n// links). cm-import delegates structural validation to `@wix/santa-core-utils`\n// `isValidUrl`/`isValidEmail`, which aren't available here — so website URLs are\n// validated with the platform `URL` parser instead (rejects empty/whitespace/\n// malformed authorities). It's still an approximation: `URL` accepts some\n// odd-but-parseable hosts santa would reject.\nconst WEBSITE_PROTOCOLS = ['http:', 'https:', 'ftp:'];\nconst EMAIL_PROTOCOL = 'mailto:';\nconst PHONE_PROTOCOLS = ['sms:', 'tel:'];\nconst RELATIVE_PREFIXES = ['/', '#', '?'];\nconst PHONE_RE = /^[\\s\\d()+\\-/_]+$/;\nconst EMAIL_RE = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nconst startsWithAny = (value: string, prefixes: readonly string[]): boolean =>\n prefixes.some((prefix) => value.startsWith(prefix));\n\nconst isValidWebsiteUrl = (value: string): boolean => {\n let parsed: URL;\n try {\n parsed = new URL(value);\n } catch {\n return false;\n }\n return WEBSITE_PROTOCOLS.includes(parsed.protocol);\n};\n\nconst isEmailUrl = (value: string): boolean =>\n value.startsWith(EMAIL_PROTOCOL) &&\n EMAIL_RE.test(value.slice(EMAIL_PROTOCOL.length));\n\nconst isPhoneUrl = (value: string): boolean =>\n PHONE_PROTOCOLS.some(\n (protocol) =>\n value.startsWith(protocol) && PHONE_RE.test(value.slice(protocol.length)),\n );\n\nconst isUrl = (value: string): boolean =>\n isValidWebsiteUrl(value) ||\n isEmailUrl(value) ||\n isPhoneUrl(value) ||\n startsWithAny(value, RELATIVE_PREFIXES);\n\nconst isDate = (value: string): boolean => {\n if (SLASH_DATE_RE.test(value)) {\n if (!Number.isNaN(new Date(value).getTime())) {\n return true;\n }\n // cm-import also accepts dd/mm/yyyy by swapping day and month.\n const swapped = value.replace(/(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})/, '$2/$1/$3');\n if (!Number.isNaN(new Date(swapped).getTime())) {\n return true;\n }\n }\n return ISO_DATE_RE.test(value) && !Number.isNaN(new Date(value).getTime());\n};\n\n/**\n * Infer the field type of a single CSV cell, in cm-import's order:\n * empty → number → boolean → date → url, else text.\n */\nexport function detectValueType(value: string): NewFieldType {\n if (value === '') {\n return 'text';\n }\n if (NUMBER_RE.test(value)) {\n return 'number';\n }\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return 'boolean';\n }\n if (isDate(value)) {\n return 'date';\n }\n if (isUrl(value)) {\n return 'url';\n }\n return 'text';\n}\n\n/**\n * Infer a column's field type from its first values: the most common detected\n * type, but only when it covers at least two-thirds of the samples (otherwise\n * `text`). Same majority-vote algorithm as cm-import\n * `guessFieldConfigFromSamples`, with a larger sample (see `TYPE_SAMPLE_SIZE`).\n *\n * `detectValue` defaults to the primitive {@link detectValueType}; the fields\n * detector passes a media-aware variant so it reuses this sampling/majority\n * logic.\n */\nexport function detectColumnType(\n values: string[],\n detectValue: DetectValueType = detectValueType,\n): NewFieldType {\n const samples = values.slice(0, TYPE_SAMPLE_SIZE);\n if (samples.length === 0) {\n return 'text';\n }\n\n const counts = new Map<NewFieldType, number>();\n samples.forEach((value) => {\n const type = detectValue(value);\n counts.set(type, (counts.get(type) ?? 0) + 1);\n });\n\n let best: NewFieldType = 'text';\n let bestCount = 0;\n counts.forEach((count, type) => {\n if (count > bestCount) {\n best = type;\n bestCount = count;\n }\n });\n\n return bestCount >= samples.length * MAJORITY ? best : 'text';\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,4 +13,10 @@ Object.keys(_parseCsv).forEach(function (key) {
13
13
  if (key in exports && exports[key] === _parseCsv[key]) return;
14
14
  exports[key] = _parseCsv[key];
15
15
  });
16
+ var _detectFieldType = require("./detectFieldType");
17
+ Object.keys(_detectFieldType).forEach(function (key) {
18
+ if (key === "default" || key === "__esModule") return;
19
+ if (key in exports && exports[key] === _detectFieldType[key]) return;
20
+ exports[key] = _detectFieldType[key];
21
+ });
16
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_ImportState","require","Object","keys","forEach","key","exports","_parseCsv"],"sources":["../../../../src/state/ImportState/index.ts"],"sourcesContent":["export * from './ImportState';\nexport * from './parseCsv';\n"],"mappings":";;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,YAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,YAAA,CAAAK,GAAA;EAAAC,OAAA,CAAAD,GAAA,IAAAL,YAAA,CAAAK,GAAA;AAAA;AACA,IAAAE,SAAA,GAAAN,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAI,SAAA,EAAAH,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAE,SAAA,CAAAF,GAAA;EAAAC,OAAA,CAAAD,GAAA,IAAAE,SAAA,CAAAF,GAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_ImportState","require","Object","keys","forEach","key","exports","_parseCsv","_detectFieldType"],"sources":["../../../../src/state/ImportState/index.ts"],"sourcesContent":["export * from './ImportState';\nexport * from './parseCsv';\nexport * from './detectFieldType';\n"],"mappings":";;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,YAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,YAAA,CAAAK,GAAA;EAAAC,OAAA,CAAAD,GAAA,IAAAL,YAAA,CAAAK,GAAA;AAAA;AACA,IAAAE,SAAA,GAAAN,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAI,SAAA,EAAAH,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAE,SAAA,CAAAF,GAAA;EAAAC,OAAA,CAAAD,GAAA,IAAAE,SAAA,CAAAF,GAAA;AAAA;AACA,IAAAG,gBAAA,GAAAP,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAK,gBAAA,EAAAJ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAG,gBAAA,CAAAH,GAAA;EAAAC,OAAA,CAAAD,GAAA,IAAAG,gBAAA,CAAAH,GAAA;AAAA","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  import { useCallback } from 'react';
2
2
  import { useWixPatternsContainer, useCollectionContext } from '../providers';
3
- import { ImportState } from '../state';
3
+ import { ImportState, } from '../state';
4
4
  export function useCreateImport(params) {
5
- const { fields, bulkUploadItems, backup, importModalState, batchSize } = params;
5
+ const { fields, bulkUploadItems, backup, updateSchema, detectColumnType, importModalState, batchSize, } = params;
6
6
  const { showToast, translate, errorHandler, window } = useWixPatternsContainer();
7
7
  const collection = useCollectionContext();
8
8
  return useCallback(() => {
@@ -10,6 +10,8 @@ export function useCreateImport(params) {
10
10
  fields,
11
11
  bulkUploadItems,
12
12
  backup,
13
+ updateSchema,
14
+ detectColumnType,
13
15
  collection,
14
16
  importModalState,
15
17
  batchSize,
@@ -1 +1 @@
1
- {"version":3,"file":"useImport.js","sourceRoot":"","sources":["../../../src/hooks/useImport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAc,WAAW,EAA+B,MAAM,UAAU,CAAC;AAYhF,MAAM,UAAU,eAAe,CAAiD,MAAuB;IACrG,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAChF,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,GAClD,uBAAuB,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,oBAAoB,EAAQ,CAAC;IAEhD,OAAO,WAAW,CAAC,GAAG,EAAE;QACtB,OAAO,IAAI,WAAW,CAAC;YACrB,MAAM;YACN,eAAe;YACf,MAAM;YACN,UAAU;YACV,gBAAgB;YAChB,SAAS;YACT,SAAS;YACT,SAAS;YACT,YAAY;YACZ,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBACjC,MAAM,CAAC,QAAQ,CACb,+BAA+B,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAC5D,QAAQ,CACT,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"useImport.js","sourceRoot":"","sources":["../../../src/hooks/useImport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAEL,WAAW,GAKZ,MAAM,UAAU,CAAC;AAclB,MAAM,UAAU,eAAe,CAC7B,MAAuB;IAEvB,MAAM,EACJ,MAAM,EACN,eAAe,EACf,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,GACV,GAAG,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,GAClD,uBAAuB,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,oBAAoB,EAAQ,CAAC;IAEhD,OAAO,WAAW,CAAC,GAAG,EAAE;QACtB,OAAO,IAAI,WAAW,CAAC;YACrB,MAAM;YACN,eAAe;YACf,MAAM;YACN,YAAY;YACZ,gBAAgB;YAChB,UAAU;YACV,gBAAgB;YAChB,SAAS;YACT,SAAS;YACT,SAAS;YACT,YAAY;YACZ,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBACjC,MAAM,CAAC,QAAQ,CACb,+BAA+B,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAC5D,QAAQ,CACT,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useImportConfig.js","sourceRoot":"","sources":["../../../src/hooks/useImportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAWjC,MAAM,UAAU,eAAe,CAAC,MAA6B;IAC3D,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IAExC,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"useImportConfig.js","sourceRoot":"","sources":["../../../src/hooks/useImportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAYjC,MAAM,UAAU,eAAe,CAAC,MAA6B;IAC3D,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IAExC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -2,6 +2,7 @@ import { action, computed, makeObservable, observable, runInAction, } from 'mobx
2
2
  import { queryStatus, } from '../../model';
3
3
  import { ConditionalModalState } from '../ConditionalModalState';
4
4
  import { parseCsv, unparseCsv } from './parseCsv';
5
+ import { detectColumnType, TYPE_SAMPLE_SIZE, } from './detectFieldType';
5
6
  import set from 'lodash/set';
6
7
  const DEFAULT_BATCH_SIZE = 100;
7
8
  // How long to keep the completed progress bar (100%) on screen before closing
@@ -12,6 +13,37 @@ const COMPLETION_LINGER_MS = 600;
12
13
  function normalize(value) {
13
14
  return value.trim().toLowerCase();
14
15
  }
16
+ // camelCase key for a field created from a column header
17
+ // (e.g. "Product Name" -> "productName").
18
+ function toFieldKey(header) {
19
+ const words = header.trim().split(/[^a-zA-Z0-9]+/).filter(Boolean);
20
+ if (words.length === 0) {
21
+ return 'field';
22
+ }
23
+ return words
24
+ .map((word, index) => index === 0
25
+ ? word.charAt(0).toLowerCase() + word.slice(1)
26
+ : word.charAt(0).toUpperCase() + word.slice(1))
27
+ .join('');
28
+ }
29
+ // A display name + key for a field created from a column header, unique against
30
+ // both `usedNames` (existing field display names + names already assigned to
31
+ // earlier new columns) and `usedKeys` (existing field ids + keys already
32
+ // assigned). Mirrors cm-import `generateFieldNameAndKey`: when the name or its
33
+ // derived key collides, suffix the *display name* as `"<header>-<n>"` and
34
+ // re-derive the key from it — so the created field's name and key are both
35
+ // unique (otherwise two columns with the same header would create fields showing
36
+ // the same name).
37
+ function uniqueFieldNameAndKey(header, usedNames, usedKeys) {
38
+ let displayName = header;
39
+ for (let suffix = 1;; suffix++) {
40
+ const key = toFieldKey(displayName);
41
+ if (!usedNames.has(displayName) && !usedKeys.has(key)) {
42
+ return { displayName, key };
43
+ }
44
+ displayName = `${header}-${suffix}`;
45
+ }
46
+ }
15
47
  function toMappedRows(rows, headers, mappingByHeader) {
16
48
  return rows.map((row) => {
17
49
  const mapped = {};
@@ -56,6 +88,7 @@ export class ImportState {
56
88
  this.fields = (props.fields ?? []);
57
89
  this.bulkUploadItems = props.bulkUploadItems;
58
90
  this.backup = props.backup;
91
+ this.updateSchema = props.updateSchema;
59
92
  this.collection = props.collection;
60
93
  this.importModalState = props.importModalState;
61
94
  this.translate = props.translate;
@@ -63,6 +96,7 @@ export class ImportState {
63
96
  this.showToast = props.showToast;
64
97
  this.downloadCsv = props.downloadCsv;
65
98
  this.batchSize = props.batchSize ?? DEFAULT_BATCH_SIZE;
99
+ this._detectColumnType = props.detectColumnType ?? detectColumnType;
66
100
  makeObservable(this, {
67
101
  currentStep: observable.ref,
68
102
  importStatus: observable.ref,
@@ -79,10 +113,10 @@ export class ImportState {
79
113
  hasMappings: computed,
80
114
  hasNoMappedData: computed,
81
115
  selectedFieldIds: computed,
82
- mappedRows: computed,
83
116
  onUploadContinue: action.bound,
84
117
  goToUpload: action.bound,
85
118
  setMapping: action.bound,
119
+ setNewFieldMapping: action.bound,
86
120
  close: action.bound,
87
121
  onFileSelected: action.bound,
88
122
  startImport: action.bound,
@@ -118,10 +152,18 @@ export class ImportState {
118
152
  return !this.csvRows.some((row) => mappedIndices.some((index) => (row[index] ?? '').trim() !== ''));
119
153
  }
120
154
  get selectedFieldIds() {
121
- return new Set(Object.values(this.mappingByHeader).filter((v) => v != null));
155
+ return new Set(Object.values(this.mappingByHeader)
156
+ .filter((m) => m?.kind === 'existing')
157
+ .map((m) => m.fieldId));
122
158
  }
123
- get mappedRows() {
124
- return toMappedRows(this.csvRows, this.csvHeaders, this.mappingByHeader);
159
+ /**
160
+ * Whether columns may be mapped to a brand-new field created during import.
161
+ * Driven purely by the presence of the `updateSchema` callback — providing the
162
+ * capability is the opt-in (see `getDefaultMapping`). Never changes after
163
+ * construction, so it isn't an observable.
164
+ */
165
+ get canCreateNewField() {
166
+ return this.updateSchema != null;
125
167
  }
126
168
  reset() {
127
169
  this._abortController?.abort();
@@ -207,14 +249,35 @@ export class ImportState {
207
249
  id: field.id ?? '',
208
250
  header: field.header ?? '',
209
251
  }));
210
- headers.forEach((header) => {
252
+ headers.forEach((header, index) => {
211
253
  const normalizedHeader = normalize(header);
212
254
  const matched = fields.find((field) => normalize(field.id) === normalizedHeader ||
213
255
  normalize(field.header) === normalizedHeader);
214
- mapping[header] = matched?.id || null;
256
+ if (matched?.id) {
257
+ mapping[header] = { kind: 'existing', fieldId: matched.id };
258
+ }
259
+ else {
260
+ // Unmatched columns default to creating a new field (type inferred from
261
+ // the column's data) when the consumer supplied `updateSchema`;
262
+ // otherwise they default to skip.
263
+ mapping[header] = this.canCreateNewField
264
+ ? {
265
+ kind: 'new',
266
+ fieldType: this._detectColumnType(this._columnValues(index)),
267
+ }
268
+ : null;
269
+ }
215
270
  });
216
271
  return mapping;
217
272
  }
273
+ // The column's values, capped at the detection sample size — detection only
274
+ // looks at the first `TYPE_SAMPLE_SIZE` values, so avoid copying the whole
275
+ // column (a wide CSV would otherwise allocate rows × columns strings).
276
+ _columnValues(columnIndex) {
277
+ return this.csvRows
278
+ .slice(0, TYPE_SAMPLE_SIZE)
279
+ .map((row) => row[columnIndex] ?? '');
280
+ }
218
281
  applyParsedCsv(fileName, parsedCsv) {
219
282
  this.fileName = fileName;
220
283
  this.csvHeaders = parsedCsv.headers;
@@ -313,7 +376,15 @@ export class ImportState {
313
376
  setMapping(header, fieldId) {
314
377
  this.mappingByHeader = {
315
378
  ...this.mappingByHeader,
316
- [header]: fieldId,
379
+ [header]: fieldId == null ? null : { kind: 'existing', fieldId },
380
+ };
381
+ }
382
+ setNewFieldMapping(header) {
383
+ const index = this.csvHeaders.indexOf(header);
384
+ const fieldType = index >= 0 ? this._detectColumnType(this._columnValues(index)) : 'text';
385
+ this.mappingByHeader = {
386
+ ...this.mappingByHeader,
387
+ [header]: { kind: 'new', fieldType },
317
388
  };
318
389
  }
319
390
  async _uploadBatches(batches) {
@@ -398,6 +469,47 @@ export class ImportState {
398
469
  _lingerOnCompletion() {
399
470
  return new Promise((resolve) => setTimeout(resolve, COMPLETION_LINGER_MS));
400
471
  }
472
+ /**
473
+ * Resolves every column to the final destination key used in the upload
474
+ * payload: an existing field id, a new field's (Cairo-decided) key, or `null`
475
+ * to skip. All new fields are added to the schema in a single `updateSchema`
476
+ * call before the rows upload — mirroring the cm-import `beforeImport` flow.
477
+ * `updateSchema` may throw — `startImport` surfaces that as the error state.
478
+ */
479
+ async _resolveFieldMapping() {
480
+ const resolved = {};
481
+ const newFields = [];
482
+ // Seed with existing field ids/display names so derived keys and names never
483
+ // collide with them or with each other.
484
+ const usedKeys = new Set(this.fields.map((field) => field.id).filter((id) => !!id));
485
+ const usedNames = new Set(this.fields
486
+ .map((field) => field.header)
487
+ .filter((header) => !!header));
488
+ for (const header of this.csvHeaders) {
489
+ const mapping = this.mappingByHeader[header];
490
+ if (mapping == null) {
491
+ resolved[header] = null;
492
+ }
493
+ else if (mapping.kind === 'existing') {
494
+ resolved[header] = mapping.fieldId;
495
+ }
496
+ else if (this.updateSchema) {
497
+ const { displayName, key } = uniqueFieldNameAndKey(header, usedNames, usedKeys);
498
+ usedKeys.add(key);
499
+ usedNames.add(displayName);
500
+ newFields.push({ key, type: mapping.fieldType, displayName });
501
+ resolved[header] = key;
502
+ }
503
+ else {
504
+ // "new" mapping without an `updateSchema` callback — nothing to map into.
505
+ resolved[header] = null;
506
+ }
507
+ }
508
+ if (newFields.length > 0 && this.updateSchema) {
509
+ await this.updateSchema(newFields);
510
+ }
511
+ return resolved;
512
+ }
401
513
  _createRowsBatches(rows) {
402
514
  return rows.reduce((acc, row, index) => {
403
515
  if (index % this.batchSize === 0) {
@@ -413,9 +525,9 @@ export class ImportState {
413
525
  }
414
526
  this._cancelled = false;
415
527
  this._abortController = new AbortController();
416
- const rows = this.mappedRows;
417
- const totalCount = rows.length;
418
- const batches = this._createRowsBatches(rows);
528
+ // One mapped row is produced per CSV row, so the total is known up front and
529
+ // doesn't depend on field creation below.
530
+ const totalCount = this.csvRows.length;
419
531
  runInAction(() => {
420
532
  this.currentStep = 'progress';
421
533
  this.totalCount = totalCount;
@@ -435,6 +547,30 @@ export class ImportState {
435
547
  if (backupFailed) {
436
548
  return;
437
549
  }
550
+ if (this._cancelled) {
551
+ return;
552
+ }
553
+ // Create any new fields and resolve every column to its destination key
554
+ // before building the payload. A creation failure surfaces as the error
555
+ // state with a "Try again" CTA, like a first-batch upload failure.
556
+ let resolvedMapping;
557
+ try {
558
+ resolvedMapping = await this._resolveFieldMapping();
559
+ }
560
+ catch (error) {
561
+ runInAction(() => {
562
+ this.importStatus = {
563
+ ...queryStatus.error,
564
+ error,
565
+ };
566
+ });
567
+ return;
568
+ }
569
+ if (this._cancelled) {
570
+ return;
571
+ }
572
+ const rows = toMappedRows(this.csvRows, this.csvHeaders, resolvedMapping);
573
+ const batches = this._createRowsBatches(rows);
438
574
  const promise = this._uploadBatches(batches);
439
575
  this.importStatus = {
440
576
  ...queryStatus.loading,
@@ -1 +1 @@
1
- {"version":3,"file":"ImportState.js","sourceRoot":"","sources":["../../../../src/state/ImportState/ImportState.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,QAAQ,EACR,cAAc,EACd,UAAU,EACV,WAAW,GACZ,MAAM,MAAM,CAAC;AACd,OAAO,EACL,WAAW,GAIZ,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAkB,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,GAAG,MAAM,YAAY,CAAC;AAkD7B,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,uBAAuB;AACvB,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,YAAY,CACnB,IAAgB,EAChB,OAAiB,EACjB,eAA0D;IAE1D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,MAAM,GAA4B,EAAE,CAAC;QAE3C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAChC,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,WAAW,IAAI,IAAI,EAAE;gBACvB,OAAO;aACR;YAED,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,WAAW;IAyCtB,YAAY,KAAuB;QA9B1B,wBAAmB,GAAG,IAAI,qBAAqB,EAErD,CAAC;QAEJ,gBAAW,GAAe,QAAQ,CAAC;QACnC,iBAAY,GAA2C;YACrD,GAAG,WAAW,CAAC,IAAI;SACpB,CAAC;QACF,aAAQ,GAAG,EAAE,CAAC;QACd,eAAU,GAAa,EAAE,CAAC;QAC1B,YAAO,GAAe,EAAE,CAAC;QACzB,oBAAe,GAAkC,EAAE,CAAC;QACpD,mBAAc,GAAG,CAAC,CAAC;QACnB,eAAU,GAAG,CAAC,CAAC;QACf,WAAM,GAAsB;YAC1B,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,EAAE;SACX,CAAC;QACF,gBAAW,GAAG,KAAK,CAAC;QACpB,gBAAW,GAAG,KAAK,CAAC;QACZ,cAAS,GAAoD,IAAI,CAAC;QAClE,eAAU,GAAG,KAAK,CAAC;QACnB,qBAAgB,GAA2B,IAAI,CAAC;QACxD,2EAA2E;QAC3E,2EAA2E;QAC3E,6EAA6E;QAC7E,yEAAyE;QACjE,sBAAiB,GAAa,EAAE,CAAC;QAGvC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAkB,CAAC;QACpD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,kBAAkB,CAAC;QAEvD,cAAc,CAAC,IAAI,EAAE;YACnB,WAAW,EAAE,UAAU,CAAC,GAAG;YAC3B,YAAY,EAAE,UAAU,CAAC,GAAG;YAC5B,QAAQ,EAAE,UAAU,CAAC,GAAG;YACxB,UAAU,EAAE,UAAU,CAAC,GAAG;YAC1B,OAAO,EAAE,UAAU,CAAC,GAAG;YACvB,eAAe,EAAE,UAAU,CAAC,GAAG;YAC/B,cAAc,EAAE,UAAU,CAAC,GAAG;YAC9B,UAAU,EAAE,UAAU,CAAC,GAAG;YAC1B,MAAM,EAAE,UAAU,CAAC,GAAG;YACtB,WAAW,EAAE,UAAU,CAAC,GAAG;YAC3B,WAAW,EAAE,UAAU,CAAC,GAAG;YAC3B,aAAa,EAAE,QAAQ;YACvB,WAAW,EAAE,QAAQ;YACrB,eAAe,EAAE,QAAQ;YACzB,gBAAgB,EAAE,QAAQ;YAC1B,UAAU,EAAE,QAAQ;YACpB,gBAAgB,EAAE,MAAM,CAAC,KAAK;YAC9B,UAAU,EAAE,MAAM,CAAC,KAAK;YACxB,UAAU,EAAE,MAAM,CAAC,KAAK;YACxB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,cAAc,EAAE,MAAM,CAAC,KAAK;YAC5B,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IACzB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,WAAW;QACb,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;OAMG;IACH,IAAI,eAAe;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO,KAAK,CAAC;SACd;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAC1C,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;YACzB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;gBACxC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACrB;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,EACD,EAAE,CACH,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAChC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,GAAG,CACZ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAC1E,CAAC;IACJ,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK;QACH,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,WAAW,CAAC,IAAI;SACpB,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,EAAE;SACX,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;YACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC;YAE/B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;aAC7B;YAED,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC;gBACxC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QAED,MAAM,iBAAiB,GAAG,IAAI,eAAe,EAAE,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC;QAE1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI;YACF,MAAM,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;SAC3C;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;SACxC;QACD,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClE,IAAI,MAAM,KAAK,WAAW,EAAE;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClE,IAAI,MAAM,KAAK,WAAW,EAAE;YAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC;SACpC;IACH,CAAC;IAEO,iBAAiB,CAAC,OAAiB;QACzC,MAAM,OAAO,GAAkC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzC,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;SAC3B,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CACzB,CAAC,KAAK,EAAE,EAAE,CACR,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,gBAAgB;gBACxC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAC/C,CAAC;YAEF,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,EAAE,IAAI,IAAI,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,cAAc,CAAC,QAAgB,EAAE,SAAyB;QAChE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAiB;QACpC,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,OAAO;SACR;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YACnC,OAAO;SACR;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;YACtD,OAAO;SACR;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,MAAM,IAAI,SAAS,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;YACrD,OAAO;SACR;QAED,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,IAAU;QACrC,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;SACjC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAEO,WAAW,CAAC,KAAkB;QACpC,IAAI;YACF,oEAAoE;YACpE,mEAAmE;YACnE,2DAA2D;YAC3D,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAChE;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAEO,WAAW,CAAC,IAAU,EAAE,UAA4B;QAC1D,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAEO,uBAAuB,CAAC,IAAU;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC;YACtD,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC;gBAC7C,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBACxC,kBAAkB,EAAE,IAAI;aACzB;SACF,CAAC,CAAC;IACL,CAAC;IAEO,wBAAwB;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,kCAAkC,EAAE;gBAC1D,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;gBACtB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;aAC3C,CAAC;YACF,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,iCAAiC,CAAC;gBACvD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACzC,kBAAkB,EAAE,IAAI;aACzB;SACF,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAC/B,CAAC;QACF,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,IAAI,CAAC,QAAQ,IAAI,YAAY,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,OAAsB;QAC/C,IAAI,CAAC,eAAe,GAAG;YACrB,GAAG,IAAI,CAAC,eAAe;YACvB,CAAC,MAAM,CAAC,EAAE,OAAO;SAClB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAAoC;QAC/D,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,MAAM,gBAAgB,GAAa,EAAE,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;YAC3B,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,MAAM;aACP;YAED,MAAM,UAAU,GAAG,aAAa,CAAC;YAEjC,IAAI;gBACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBACtD,kBAAkB,GAAG,IAAI,CAAC;gBAE1B,IAAI,CAAC,MAAM,GAAG;oBACZ,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS;oBACxD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;oBAC/C,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;iBACvD,CAAC;gBAEF,uEAAuE;gBACvE,sEAAsE;gBACtE,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE;oBAC7C,gBAAgB,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;iBAC9C;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,sEAAsE;gBACtE,sEAAsE;gBACtE,+DAA+D;gBAC/D,IAAI,CAAC,kBAAkB,EAAE;oBACvB,MAAM,KAAK,CAAC;iBACb;gBAED,sEAAsE;gBACtE,qEAAqE;gBACrE,qEAAqE;gBACrE,6BAA6B;gBAC7B,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;oBAC7D,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC9B;gBAED,MAAM;aACP;YAED,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC;YAE9B,WAAW,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAE1C,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,KAAK,CAAC;SACd;QAED,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAiB,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO,IAAI,CAAC;aACb;YACD,IAAI,MAAM,EAAE,OAAO,EAAE;gBACnB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;aACjC;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO,IAAI,CAAC;aACb;YACD,WAAW,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,YAAY,GAAG;oBAClB,GAAG,WAAW,CAAC,KAAK;oBACpB,KAAK;iBACN,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;SACb;QAED,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,mBAAmB;QACzB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CACnC,UAAU,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAC1C,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,IAA+B;QACxD,OAAO,IAAI,CAAC,MAAM,CAA8B,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YAClE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;gBAChC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACd;YACD,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;QAE9C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE9C,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACjC,uEAAuE;YACvE,oDAAoD;YACpD,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,GAAG;gBACZ,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,EAAE;aACX,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,IAAI,YAAY,EAAE;YAChB,OAAO;SACR;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,WAAW,CAAC,OAAO;YACtB,OAAO;SACR,CAAC;QAEF,IAAI;YACF,MAAM,OAAO,CAAC;YACd,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO;aACR;YAED,WAAW,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,YAAY,GAAG;oBAClB,GAAG,WAAW,CAAC,OAAO;oBACtB,IAAI,EAAE,IAAI,CAAC,MAAM;iBAClB,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,sEAAsE;YACtE,wEAAwE;YACxE,wEAAwE;YACxE,iBAAiB;YACjB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,UAAU,EAAE;oBACnB,OAAO;iBACR;aACF;YAED,WAAW,CAAC,GAAG,EAAE;gBACf,mEAAmE;gBACnE,gEAAgE;gBAChE,+DAA+D;gBAC/D,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;oBACrC,IAAI,CAAC,wBAAwB,EAAE,CAAC;iBACjC;gBAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;SACJ;QAAC,OAAO,KAAK,EAAE;YACd,WAAW,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,YAAY,GAAG;oBAClB,GAAG,WAAW,CAAC,KAAK;oBACpB,KAAK;iBACN,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"ImportState.js","sourceRoot":"","sources":["../../../../src/state/ImportState/ImportState.ts"],"names":[],"mappings":"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"}