@baishuyun/ai-feat-utils 2.0.31 → 2.0.33

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.
@@ -39,10 +39,10 @@ const d = (e) => {
39
39
  if ((t == null ? void 0 : t.type) === "file")
40
40
  return !0;
41
41
  return !1;
42
- }, we = (e) => {
42
+ }, ye = (e) => {
43
43
  const t = d(e);
44
44
  return (t == null ? void 0 : t.type) === "agent-loading";
45
- }, ye = (e) => {
45
+ }, we = (e) => {
46
46
  const t = d(e);
47
47
  return (t == null ? void 0 : t.type) !== "agent-loading" ? "" : (t == null ? void 0 : t.label) || "加载中";
48
48
  }, he = (e) => {
@@ -87,12 +87,12 @@ const Ae = (e) => N(e) ? e.join(", ") : M(e) ? e.map((r) => r.value).join(", ")
87
87
  "combocheck",
88
88
  "checkboxgroup",
89
89
  "number"
90
- ]), ke = (e) => Array.isArray(e) ? e.filter((t) => t.widget ? q.has(t.widget.type) : !1) : [], F = (e) => (t) => {
90
+ ]), ke = (e) => Array.isArray(e) ? e.filter((t) => t.widget ? q.has(t.widget.type) : !1) : [], x = (e) => (t) => {
91
91
  const r = d(t);
92
92
  return (r == null ? void 0 : r.type) === e;
93
93
  }, _e = (e) => (t) => {
94
94
  const r = t, n = r == null ? void 0 : r.part;
95
- return F(e)(n);
95
+ return x(e)(n);
96
96
  }, Ce = (e) => (t) => {
97
97
  const r = d(t);
98
98
  return (r == null ? void 0 : r.type) !== e ? null : (r == null ? void 0 : r.field) || null;
@@ -104,14 +104,14 @@ const Ae = (e) => N(e) ? e.join(", ") : M(e) ? e.map((r) => r.value).join(", ")
104
104
  } catch (t) {
105
105
  return console.info("[safeParseJson] Failed to parse JSON:", t), null;
106
106
  }
107
- }, w = (e) => !!(e && typeof e == "object" && e.qnKey), qe = (e) => {
107
+ }, y = (e) => !!(e && typeof e == "object" && e.qnKey), qe = (e) => {
108
108
  var n, a;
109
109
  const t = (n = e == null ? void 0 : e.widget) == null ? void 0 : n.value, r = (a = e == null ? void 0 : e.widget) == null ? void 0 : a.type;
110
- return t == null || t === "" || Array.isArray(t) && t.length === 0 || typeof t == "number" && Number.isNaN(t) || typeof t == "object" && !Array.isArray(t) && Object.keys(t).length === 0 ? !1 : r === "signature" ? w(t) : r === "upload" || r === "image" ? Array.isArray(t) && t.length > 0 && t.every(w) : !0;
111
- }, x = (e = "_widget_") => {
110
+ return t == null || t === "" || Array.isArray(t) && t.length === 0 || typeof t == "number" && Number.isNaN(t) || typeof t == "object" && !Array.isArray(t) && Object.keys(t).length === 0 ? !1 : r === "signature" ? y(t) : r === "upload" || r === "image" ? Array.isArray(t) && t.length > 0 && t.every(y) : !0;
111
+ }, F = (e = "_widget_") => {
112
112
  const t = Date.now(), r = String(t), n = r.length, a = r.slice(0, n - 5), l = String(Math.floor(Math.random() * 1e5)).padStart(5, "0");
113
113
  return `${e}${a}${l}`;
114
- }, Fe = (e, t) => ({
114
+ }, xe = (e, t) => ({
115
115
  field: e,
116
116
  onLoaded: () => {
117
117
  t.fillWidget({
@@ -128,7 +128,7 @@ const Ae = (e) => N(e) ? e.join(", ") : M(e) ? e.map((r) => r.value).join(", ")
128
128
  };
129
129
  t.fillWidget(i);
130
130
  }
131
- }), xe = 10, Ee = (e, t = "image/png") => new Promise((r) => {
131
+ }), Fe = 10, Ee = (e, t = "image/png") => new Promise((r) => {
132
132
  const n = new Image();
133
133
  n.crossOrigin = "anonymous", n.onload = () => {
134
134
  const a = document.createElement("canvas");
@@ -145,20 +145,22 @@ const Ae = (e) => N(e) ? e.join(", ") : M(e) ? e.map((r) => r.value).join(", ")
145
145
  not_contains: "不包含",
146
146
  in: "等于任意",
147
147
  nin: "不等于任意",
148
- all: "包含所有",
148
+ all: "同时包含",
149
149
  empty: "为空",
150
150
  not_empty: "不为空",
151
- range: "范围"
151
+ range: "选择范围",
152
+ like: "模糊匹配",
153
+ unlike: "模糊不匹配"
152
154
  }, E = {
153
155
  // Text-like: equality, fuzzy, empty checks
154
156
  text: ["eq", "neq", "in", "nin", "contains", "not_contains", "empty", "not_empty"],
155
157
  password: ["eq", "neq", "contains", "not_contains", "empty", "not_empty"],
156
158
  radiogroup: ["eq", "neq", "in", "nin", "empty", "not_empty"],
157
159
  radio: ["eq", "neq", "empty", "not_empty"],
158
- combo: ["eq", "neq", "in", "nin", "empty", "not_empty"],
160
+ combo: ["eq", "neq", "in", "nin", "like", "unlike", "empty", "not_empty"],
159
161
  sn: ["eq", "neq", "in", "nin", "contains", "not_contains", "empty", "not_empty"],
160
162
  // Textarea: fuzzy matching
161
- textarea: ["contains", "not_contains", "empty", "not_empty"],
163
+ textarea: ["eq", "neq", "contains", "not_contains", "empty", "not_empty"],
162
164
  // Number: comparison operators
163
165
  number: ["eq", "neq", "gt", "gte", "lt", "lte", "range", "empty", "not_empty"],
164
166
  // DateTime: comparison operators
@@ -183,9 +185,9 @@ const Ae = (e) => N(e) ? e.join(", ") : M(e) ? e.map((r) => r.value).join(", ")
183
185
  flowState: ["eq", "neq", "empty"],
184
186
  flowstate: ["eq", "neq", "empty"],
185
187
  // Link data: combo-like
186
- linkdata: ["eq", "neq", "in", "nin", "empty", "not_empty"],
187
- linkquery: ["eq", "neq", "in", "nin", "empty", "not_empty"],
188
- dataload: ["eq", "neq", "in", "nin", "empty", "not_empty"],
188
+ linkdata: ["eq", "neq", "in", "nin", "like", "unlike", "empty", "not_empty"],
189
+ linkquery: ["eq", "neq", "in", "nin", "like", "unlike", "empty", "not_empty"],
190
+ dataload: ["eq", "neq", "in", "nin", "like", "unlike", "empty", "not_empty"],
189
191
  // Formula
190
192
  formula: ["eq", "neq", "empty", "not_empty"],
191
193
  // Display-only: no meaningful operators
@@ -235,7 +237,7 @@ function m(e) {
235
237
  function k(e) {
236
238
  return m(e) ? e : null;
237
239
  }
238
- function y(e) {
240
+ function w(e) {
239
241
  return !!(e == null || e === "" || Array.isArray(e) && e.length === 0);
240
242
  }
241
243
  function h(e, t) {
@@ -277,16 +279,18 @@ function W(e, t) {
277
279
  const n = t[r], { operator: a, value: l } = e;
278
280
  switch (a) {
279
281
  case "empty":
280
- return y(n);
282
+ return w(n);
281
283
  case "not_empty":
282
- return !y(n);
284
+ return !w(n);
283
285
  case "eq":
284
286
  return h(n, l);
285
287
  case "neq":
286
288
  return !h(n, l);
287
289
  case "contains":
290
+ case "like":
288
291
  return String(n).includes(String(l));
289
292
  case "not_contains":
293
+ case "unlike":
290
294
  return !String(n).includes(String(l));
291
295
  case "gt":
292
296
  return Number(n) > Number(l);
@@ -327,6 +331,8 @@ const Be = (e, t) => e === null || t === null ? !1 : e.formId ? t.type === "form
327
331
  lte: "lte",
328
332
  contains: "like",
329
333
  not_contains: "unlike",
334
+ like: "like",
335
+ unlike: "unlike",
330
336
  in: "in",
331
337
  nin: "nin",
332
338
  all: "all",
@@ -340,8 +346,10 @@ const Be = (e, t) => e === null || t === null ? !1 : e.formId ? t.type === "form
340
346
  gte: "gte",
341
347
  lt: "lt",
342
348
  lte: "lte",
343
- like: "contains",
344
- unlike: "not_contains",
349
+ like: "like",
350
+ unlike: "unlike",
351
+ contains: "like",
352
+ not_contains: "unlike",
345
353
  in: "in",
346
354
  nin: "nin",
347
355
  all: "all",
@@ -748,15 +756,28 @@ const $ = {
748
756
  Onlinemap: "ea67",
749
757
  Maptile: "ea68",
750
758
  Dataexport: "ea69",
751
- Word: "ea6a",
752
- Excel: "ea6b",
753
- PPT: "ea6c",
754
- PDF: "ea6d",
755
- Video1: "ea6e",
756
- Audio: "ea6f",
757
- Txt: "ea70",
758
- Zip: "ea71",
759
- file: "ea72",
759
+ // 文件类型图标(码位对齐 baishu font-icon.less 的 icon-bsy-* 文件图标,
760
+ // 渲染时需使用 icon-bsy-form 字体类,见 ai-design/font-icon.tsx 的 fontCls)
761
+ "bsy-ppt": "e8c8",
762
+ "bsy-pptx": "e8cf",
763
+ "bsy-doc": "e8ca",
764
+ "bsy-docx": "e8c7",
765
+ "bsy-xls": "e8d0",
766
+ "bsy-xlsx": "e8c5",
767
+ "bsy-zip": "e8cb",
768
+ "bsy-rar": "e8d3",
769
+ "bsy-csv": "e8cc",
770
+ "bsy-txt": "e8cd",
771
+ "bsy-pdf": "e8ce",
772
+ "bsy-mp4": "e8c6",
773
+ "bsy-webm": "e8d1",
774
+ "bsy-ogg": "e8d2",
775
+ "bsy-mov": "e983",
776
+ "bsy-gif": "e8fd",
777
+ "bsy-jpg": "e8fe",
778
+ "bsy-jpeg": "e8ff",
779
+ "bsy-png": "e900",
780
+ "bsy-other": "e8c9",
760
781
  richtext: "ea73",
761
782
  Onlinemap1: "ea74",
762
783
  Maptile1: "ea75",
@@ -798,7 +819,7 @@ function Le(e) {
798
819
  const t = $[e];
799
820
  return t ? `&#x${t};` : void 0;
800
821
  }
801
- const Ge = (e, t, r) => {
822
+ const je = (e, t, r) => {
802
823
  if (!r)
803
824
  return {
804
825
  translated: ""
@@ -1028,7 +1049,7 @@ const Ge = (e, t, r) => {
1028
1049
  ...n,
1029
1050
  labelStyle: r
1030
1051
  };
1031
- }, G = (e) => {
1052
+ }, j = (e) => {
1032
1053
  const { widget: t, label: r, ...n } = e || {};
1033
1054
  return {
1034
1055
  widget: {
@@ -1095,7 +1116,7 @@ const Ge = (e, t, r) => {
1095
1116
  tab: null,
1096
1117
  ...n
1097
1118
  };
1098
- }, g = (e) => e, U = (e) => {
1119
+ }, g = (e) => e, G = (e) => {
1099
1120
  const { widget: t, label: r, ...n } = e || {};
1100
1121
  return {
1101
1122
  widget: {
@@ -1129,7 +1150,7 @@ const Ge = (e, t, r) => {
1129
1150
  tab: null,
1130
1151
  ...n
1131
1152
  };
1132
- }, j = (e) => {
1153
+ }, U = (e) => {
1133
1154
  const { widget: t, label: r, ...n } = e || {};
1134
1155
  return {
1135
1156
  widget: {
@@ -1265,7 +1286,7 @@ const Ge = (e, t, r) => {
1265
1286
  tab: null,
1266
1287
  ...n
1267
1288
  };
1268
- }, Z = (e) => !e || !e.length ? e : e.map((t, r) => ({
1289
+ }, X = (e) => !e || !e.length ? e : e.map((t, r) => ({
1269
1290
  id: r,
1270
1291
  // name: "_widget_1761976674767",
1271
1292
  // form: "a2f34ef882158a3e97da4ef7",
@@ -1277,10 +1298,10 @@ const Ge = (e, t, r) => {
1277
1298
  isEditable: !0,
1278
1299
  group: "dimension,filter,select",
1279
1300
  formula: ""
1280
- })), X = (e) => !e || !e.length ? e : e.map((t) => ({
1301
+ })), Y = (e) => !e || !e.length ? e : e.map((t) => ({
1281
1302
  mode: "depend",
1282
1303
  ...t
1283
- })), Y = (e) => {
1304
+ })), Z = (e) => {
1284
1305
  var a, l, i;
1285
1306
  const { widget: t, label: r, ...n } = e || {};
1286
1307
  return {
@@ -1322,8 +1343,8 @@ const Ge = (e, t, r) => {
1322
1343
  forms: (a = t == null ? void 0 : t.loaddataconfig) == null ? void 0 : a.forms,
1323
1344
  selectArg: [],
1324
1345
  selectRel: "and",
1325
- fields: Z((l = t == null ? void 0 : t.loaddataconfig) == null ? void 0 : l.mapFields),
1326
- mapFields: X((i = t == null ? void 0 : t.loaddataconfig) == null ? void 0 : i.mapFields)
1346
+ fields: X((l = t == null ? void 0 : t.loaddataconfig) == null ? void 0 : l.mapFields),
1347
+ mapFields: Y((i = t == null ? void 0 : t.loaddataconfig) == null ? void 0 : i.mapFields)
1327
1348
  },
1328
1349
  labelStyle: r
1329
1350
  },
@@ -1868,7 +1889,7 @@ const Ge = (e, t, r) => {
1868
1889
  address: oe,
1869
1890
  button: ie,
1870
1891
  textarea: le,
1871
- datetime: G,
1892
+ datetime: j,
1872
1893
  text: S,
1873
1894
  password: S,
1874
1895
  location: ae,
@@ -1883,14 +1904,14 @@ const Ge = (e, t, r) => {
1883
1904
  image: J,
1884
1905
  signature: V,
1885
1906
  user: K,
1886
- dataload: Y,
1907
+ dataload: Z,
1887
1908
  linkdata: z,
1888
1909
  linkquery: ue,
1889
1910
  usergroup: Q,
1890
1911
  subform: se,
1891
1912
  dept: H,
1892
- sn: j,
1893
- deptgroup: U,
1913
+ sn: U,
1914
+ deptgroup: G,
1894
1915
  flowState: g,
1895
1916
  flowstate: g,
1896
1917
  formula: g,
@@ -1900,15 +1921,15 @@ const Ge = (e, t, r) => {
1900
1921
  if (!e || !e.widget || !e.widget.type)
1901
1922
  return e;
1902
1923
  const r = e.widget.type || "unknown";
1903
- return t && r === "subform" ? g(e) : (((i = (l = e == null ? void 0 : e.widget) == null ? void 0 : l.widgetName) != null ? i : "").startsWith("_widget_") || (e.widget.widgetName = x()), (de[r] || g)(e));
1904
- }, Ue = (e) => {
1924
+ return t && r === "subform" ? g(e) : (((i = (l = e == null ? void 0 : e.widget) == null ? void 0 : l.widgetName) != null ? i : "").startsWith("_widget_") || (e.widget.widgetName = F()), (de[r] || g)(e));
1925
+ }, Ge = (e) => {
1905
1926
  var t, r, n, a, l, i, s, u;
1906
1927
  return !e || !((t = e.corp) != null && t.name) || !((r = e.user) != null && r.nickname) ? "" : `${(n = e.corp) == null ? void 0 : n.name} ${(a = e.user) == null ? void 0 : a.nickname}(${(l = e.user) == null ? void 0 : l.username}) ${(i = e.appName) != null ? i : ""} ${(s = e.entryName) != null ? s : ""} ${(u = e.agentName) != null ? u : ""}`;
1907
1928
  };
1908
1929
  export {
1909
- xe as DATA_COUNT_PER_BATCH,
1930
+ Fe as DATA_COUNT_PER_BATCH,
1910
1931
  E as FIELD_TYPE_OPERATOR_MAP,
1911
- ye as GetLoadingMsg,
1932
+ we as GetLoadingMsg,
1912
1933
  he as GetPartErrMsg,
1913
1934
  fe as GetQueryResult,
1914
1935
  ke as GetSafeFormStructure,
@@ -1916,7 +1937,7 @@ export {
1916
1937
  ge as IsFakeMsgPart,
1917
1938
  be as IsFileGroupPart,
1918
1939
  me as IsFilePart,
1919
- we as IsLoadingPart,
1940
+ ye as IsLoadingPart,
1920
1941
  pe as IsQueryResultPart,
1921
1942
  De as OPERATOR_LABEL_MAP,
1922
1943
  q as WHITE_LIST_FIELDS_SET,
@@ -1924,14 +1945,14 @@ export {
1924
1945
  Te as conditionStringify2bsCondition,
1925
1946
  Ne as createFieldPartsExtractor,
1926
1947
  Ce as createGetFieldJsonInfo,
1927
- F as createPartTypeChecker,
1948
+ x as createPartTypeChecker,
1928
1949
  _e as createPayloadTypeChecker,
1929
1950
  d as extractTextPartMeta,
1930
- Fe as field2config,
1951
+ xe as field2config,
1931
1952
  _ as flatArr,
1932
1953
  Oe as formatLocalDate,
1933
1954
  Re as getAvailableOperators,
1934
- Ue as getChatCtxForHuman,
1955
+ Ge as getChatCtxForHuman,
1935
1956
  Pe as getDefaultOperator,
1936
1957
  Le as getIconUnicode,
1937
1958
  ve as getMetaErrorMsg,
@@ -1941,7 +1962,7 @@ export {
1941
1962
  Be as isCtxMatch,
1942
1963
  We as isHelperCondMet,
1943
1964
  Ie as mergeConsecutiveTargets,
1944
- Ge as promptParser,
1965
+ je as promptParser,
1945
1966
  ce as rebuildFieldsJsonStructure,
1946
1967
  Me as safeParseJson,
1947
1968
  Ae as valueNormalizer
@@ -1 +1 @@
1
- {"version":3,"file":"ai-feat-utils.js","sources":["../src/text-part.ts","../src/part.ts","../src/dom.ts","../src/value-normalizer.ts","../src/form-structure.ts","../src/field-json.ts","../src/constants.ts","../src/attachment.ts","../src/condition.ts","../src/date.ts","../src/array.ts","../src/iconfont.ts","../src/prompt-parser.ts","../src/fields-json-rebuild/rebuild-text.ts","../src/fields-json-rebuild/build-widget-name.ts","../src/fields-json-rebuild/rebuild-number.ts","../src/fields-json-rebuild/rebuild-select.ts","../src/fields-json-rebuild/rebuild-radio-group.ts","../src/fields-json-rebuild/rebuild-date-time.ts","../src/fields-json-rebuild/default-builder.ts","../src/fields-json-rebuild/rebuild-dept-group.ts","../src/fields-json-rebuild/rebuild-sn.ts","../src/fields-json-rebuild/rebuild-dept.ts","../src/fields-json-rebuild/rebuild-user-group.ts","../src/fields-json-rebuild/rebuild-data-linker.ts","../src/fields-json-rebuild/rebuild-data-loader.ts","../src/fields-json-rebuild/rebuild-user.ts","../src/fields-json-rebuild/rebuild-signature.ts","../src/fields-json-rebuild/rebuild-image.ts","../src/fields-json-rebuild/rebuild-upload.ts","../src/fields-json-rebuild/rebuild-checkbox-group.ts","../src/fields-json-rebuild/rebuild-line.ts","../src/fields-json-rebuild/rebuild-combo-checker.ts","../src/fields-json-rebuild/rebuild-location.ts","../src/fields-json-rebuild/rebuild-textarea.ts","../src/fields-json-rebuild/rebuild-button.ts","../src/fields-json-rebuild/rebuild-address.ts","../src/fields-json-rebuild/rebuild-subform.ts","../src/fields-json-rebuild/rebuild-data-query.ts","../src/fields-json-rebuild/index.ts","../src/chat.ts"],"sourcesContent":["export const extractTextPartMeta = (part: any) => {\n if (part?.type !== 'text') {\n return null;\n }\n\n if (!part.providerMetadata) {\n return null;\n }\n\n if (!part.providerMetadata.raw || !part.providerMetadata.raw.data) {\n return null;\n }\n\n if (typeof part.providerMetadata.raw.data !== 'string') {\n return part.providerMetadata.raw.data;\n }\n\n let payload;\n try {\n payload = JSON.parse(part.providerMetadata.raw.data);\n } catch (e) {\n console.error('invalid raw data');\n }\n\n return payload || part.providerMetadata.raw.data;\n};\n","import { IQueryResult } from '@baishuyun/types';\nimport { extractTextPartMeta } from './text-part';\n\nexport const IsErrorPart = (part: any): boolean => {\n if (part?.type === 'error') {\n return true;\n }\n\n const payload = extractTextPartMeta(part);\n return payload?.type === 'agent-error';\n};\n\nexport const IsFakeMsgPart = (part: any): boolean => {\n const payload = extractTextPartMeta(part);\n return payload?.type === 'agent-fake-msg';\n};\n\nexport const IsFilePart = (part: any): boolean => {\n return part?.type === 'file';\n};\n\nexport const IsQueryResultPart = (part: any): boolean => {\n const payload = extractTextPartMeta(part);\n return payload?.type === 'query-stream-parsed-info';\n};\n\nexport const GetQueryResult = (part: any): IQueryResult | null => {\n const payload = extractTextPartMeta(part);\n if (payload?.type !== 'query-stream-parsed-info') {\n return null;\n }\n\n const result = payload.result;\n console.log('query result raw data:', result);\n try {\n return JSON.parse(result);\n } catch (e) {\n console.error('invalid query result data');\n return null;\n }\n};\n\nexport const IsFileGroupPart = (part: any) => {\n if (!Array.isArray(part)) {\n return false;\n }\n\n // any one is file part\n for (const p of part) {\n if (p?.type === 'file') {\n return true;\n }\n }\n\n return false;\n};\n\nexport const IsLoadingPart = (part: any): boolean => {\n const payload = extractTextPartMeta(part);\n return payload?.type === 'agent-loading';\n};\n\nexport const GetLoadingMsg = (part: any): string => {\n const payload = extractTextPartMeta(part);\n if (payload?.type !== 'agent-loading') {\n return '';\n }\n\n return payload?.label || '加载中';\n};\n\nexport const GetPartErrMsg = (part: any): string => {\n if (!IsErrorPart(part)) {\n return '';\n }\n\n if (part?.errorText) {\n return part.errorText;\n }\n\n const payload = extractTextPartMeta(part);\n return payload?.error || '未知错误';\n};\n\nexport const getMetaErrorMsg = (part: any): string => {\n if (part?.errorText) {\n return part.errorText;\n }\n\n const payload = extractTextPartMeta(part);\n return payload?.error || '未知错误';\n};\n","const STYLE_INJECTED_ATTR = 'data-shadow-slot-injected';\n\nexport const injectHostStylesIntoShadow = (shadowRoot: ShadowRoot, hostElement: HTMLElement) => {\n if (shadowRoot.querySelector(`[${STYLE_INJECTED_ATTR}]`)) return;\n\n const cloneAndMark = (el: Element) => {\n const cloned = el.cloneNode(true) as HTMLElement;\n cloned.setAttribute(STYLE_INJECTED_ATTR, '');\n shadowRoot.appendChild(cloned);\n };\n\n // Copy <style> and <link rel=\"stylesheet\"> from document.head\n document.head.querySelectorAll('style').forEach(cloneAndMark);\n document.head.querySelectorAll('link[rel=\"stylesheet\"]').forEach(cloneAndMark);\n\n // Walk up through ancestor shadow roots and copy their <style> and <link> elements\n let node: Node | null = hostElement.parentNode;\n while (node) {\n if (node instanceof ShadowRoot) {\n node.querySelectorAll('style').forEach(cloneAndMark);\n node.querySelectorAll('link[rel=\"stylesheet\"]').forEach(cloneAndMark);\n }\n node = node.parentNode;\n }\n};\n","function isStringArray(value: unknown): value is string[] {\n if (!Array.isArray(value)) {\n return false;\n }\n\n return value.every((item) => typeof item === 'string');\n}\n\nfunction isOptionArray(value: unknown): value is Array<{ label: string; value: string }> {\n if (!Array.isArray(value)) {\n return false;\n }\n\n return value.every(\n (item) =>\n typeof item === 'object' &&\n item !== null &&\n 'label' in item &&\n 'value' in item &&\n typeof (item as any).label === 'string' &&\n typeof (item as any).value === 'string'\n );\n}\n\nexport const valueNormalizer = (value: string | string[]): string => {\n if (isStringArray(value)) {\n return value.join(', ');\n }\n\n if (isOptionArray(value)) {\n const values = value.map((item) => item.value);\n return values.join(', ');\n }\n\n return value;\n};\n","import { FieldType, IField } from '@baishuyun/types';\n\nexport const WHITE_LIST_FIELDS_SET = new Set<FieldType>([\n 'password',\n 'textarea',\n 'datetime',\n 'text',\n 'radiogroup',\n 'radio',\n 'combo',\n 'combocheck',\n 'checkboxgroup',\n 'number',\n]);\n\nexport const GetSafeFormStructure = (formStructure: Array<IField>) => {\n if (!Array.isArray(formStructure)) {\n return [];\n }\n\n return formStructure.filter((f) => {\n if (!f.widget) {\n return false;\n }\n\n return WHITE_LIST_FIELDS_SET.has(f.widget.type);\n });\n};\n","import {\n IBsUIAutomationService,\n IField,\n IFilledField,\n IFormAttachment,\n MsgPartCompProps,\n} from '@baishuyun/types';\nimport { extractTextPartMeta } from './text-part';\n\nexport const createPartTypeChecker =\n (type: string) =>\n (part: any): boolean => {\n const payload = extractTextPartMeta(part);\n return payload?.type === type;\n };\n\nexport const createPayloadTypeChecker = (type: string) => (payload: unknown) => {\n const specialPayload = payload as MsgPartCompProps;\n const part = specialPayload?.part;\n const checker = createPartTypeChecker(type);\n\n return checker(part);\n};\n\nexport const createGetFieldJsonInfo =\n (type: string) =>\n (part: any): IFilledField | null => {\n const payload = extractTextPartMeta(part);\n if (payload?.type !== type) {\n return null;\n }\n return payload?.field || null;\n };\n\nexport const createFieldPartsExtractor =\n (isTarget: (part: any) => boolean) =>\n (part: any): any[] => {\n if (Array.isArray(part) && part.length > 0) return part.filter(isTarget);\n if (isTarget(part)) return [part];\n return [];\n };\n\nexport const safeParseJson = (jsonString: string): any | null => {\n if (typeof jsonString !== 'string') {\n return jsonString;\n }\n\n try {\n return JSON.parse(jsonString);\n } catch (e) {\n console.info('[safeParseJson] Failed to parse JSON:', e);\n return null;\n }\n};\n\n/** 附件记录(IFormAttachment)基础校验:有 qnKey 才是平台真实记录 */\nconst isAttachmentRecord = (value: unknown): boolean =>\n Boolean(value && typeof value === 'object' && (value as IFormAttachment).qnKey);\n\n/**\n * 判断字段的填写值是否合法(用于过滤模型输出的无效填写项):\n * - null / undefined / 空字符串 / 空数组 / 空对象一律不合法;\n * - 数字 NaN 不合法;\n * - 附件类字段(upload / image)必须是平台附件记录数组(防模型编造);\n * - signature 为单条附件记录。\n */\nexport const hasValidFieldValue = (field: IField): boolean => {\n const value = field?.widget?.value;\n const type = field?.widget?.type;\n\n if (value === undefined || value === null || value === '') {\n return false;\n }\n\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n\n if (typeof value === 'number' && Number.isNaN(value)) {\n return false;\n }\n\n if (typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length === 0) {\n return false;\n }\n\n if (type === 'signature') {\n return isAttachmentRecord(value);\n }\n\n if (type === 'upload' || type === 'image') {\n return Array.isArray(value) && value.length > 0 && value.every(isAttachmentRecord);\n }\n\n return true;\n};\n\nexport const generateWidgetName = (prefix = '_widget_') => {\n const now = Date.now();\n const timeStr = String(now);\n const totalLen = timeStr.length; // 通常为 13\n const fixedPart = timeStr.slice(0, totalLen - 5); // 保留前 N-5 位\n const randomPart = String(Math.floor(Math.random() * 100000)).padStart(5, '0');\n return `${prefix}${fixedPart}${randomPart}`;\n};\n\nexport const field2config = (field: IField, autoService: IBsUIAutomationService) => {\n return {\n field,\n onLoaded: () => {\n autoService.fillWidget({\n checked: true,\n field,\n });\n },\n onChange: (checked: boolean, instance: IField, parentFieldName: string, rowIndex: number) => {\n const detail = {\n field: instance,\n checked,\n parentFieldName,\n rowIndex,\n };\n\n autoService.fillWidget(detail);\n },\n };\n};\n","export const DATA_COUNT_PER_BATCH = 10;\n","export const imageUrlToBase64 = (url: string, mediaType = 'image/png'): Promise<string> =>\n new Promise((resolve) => {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n const canvas = document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n canvas.getContext('2d')!.drawImage(img, 0, 0);\n resolve(canvas.toDataURL(mediaType));\n };\n img.onerror = () => resolve(url);\n img.src = url;\n });\n","import type {\n FieldType,\n IAgentHelper,\n IFormValues,\n IConditionItem,\n relationalOperator,\n ICondition,\n IBsCondition,\n IBsCondItem,\n ICtxDetail,\n} from '@baishuyun/types';\n\nexport const OPERATOR_LABEL_MAP: Record<relationalOperator, string> = {\n eq: '等于',\n neq: '不等于',\n gt: '大于',\n lt: '小于',\n gte: '大于等于',\n lte: '小于等于',\n contains: '包含',\n not_contains: '不包含',\n in: '等于任意',\n nin: '不等于任意',\n all: '包含所有',\n empty: '为空',\n not_empty: '不为空',\n range: '范围',\n};\n\nexport const FIELD_TYPE_OPERATOR_MAP: Record<FieldType, relationalOperator[]> = {\n // Text-like: equality, fuzzy, empty checks\n text: ['eq', 'neq', 'in', 'nin', 'contains', 'not_contains', 'empty', 'not_empty'],\n password: ['eq', 'neq', 'contains', 'not_contains', 'empty', 'not_empty'],\n radiogroup: ['eq', 'neq', 'in', 'nin', 'empty', 'not_empty'],\n radio: ['eq', 'neq', 'empty', 'not_empty'],\n combo: ['eq', 'neq', 'in', 'nin', 'empty', 'not_empty'],\n sn: ['eq', 'neq', 'in', 'nin', 'contains', 'not_contains', 'empty', 'not_empty'],\n\n // Textarea: fuzzy matching\n textarea: ['contains', 'not_contains', 'empty', 'not_empty'],\n\n // Number: comparison operators\n number: ['eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'range', 'empty', 'not_empty'],\n\n // DateTime: comparison operators\n datetime: ['eq', 'neq', 'gte', 'lte', 'range', 'empty', 'not_empty'],\n\n // Multi-select: membership, intersection\n checkboxgroup: ['in', 'all', 'eq', 'empty', 'not_empty'],\n combocheck: ['in', 'all', 'eq', 'empty', 'not_empty'],\n\n // User/Dept: equality and membership\n user: ['eq', 'neq', 'in', 'nin', 'empty', 'not_empty'],\n dept: ['eq', 'neq', 'in', 'nin', 'empty', 'not_empty'],\n\n // Groups: membership, intersection, empty\n usergroup: ['in', 'all', 'eq', 'empty', 'not_empty'],\n deptgroup: ['in', 'all', 'eq', 'empty', 'not_empty'],\n\n // Address/Location: intersection\n address: ['in', 'nin', 'empty', 'not_empty'],\n location: ['in', 'nin', 'empty', 'not_empty'],\n\n // Files: empty checks\n upload: ['empty', 'not_empty'],\n image: ['empty', 'not_empty'],\n signature: ['empty', 'not_empty'],\n\n // Flow state\n flowState: ['eq', 'neq', 'empty'],\n flowstate: ['eq', 'neq', 'empty'],\n\n // Link data: combo-like\n linkdata: ['eq', 'neq', 'in', 'nin', 'empty', 'not_empty'],\n linkquery: ['eq', 'neq', 'in', 'nin', 'empty', 'not_empty'],\n dataload: ['eq', 'neq', 'in', 'nin', 'empty', 'not_empty'],\n\n // Formula\n formula: ['eq', 'neq', 'empty', 'not_empty'],\n\n // Display-only: no meaningful operators\n separator: [],\n button: [],\n subform: [],\n unknown: [],\n};\n\nconst DEFAULT_OPERATOR_MAP: Partial<Record<FieldType, relationalOperator>> = {\n text: 'eq',\n password: 'eq',\n radiogroup: 'eq',\n radio: 'eq',\n combo: 'eq',\n sn: 'eq',\n textarea: 'contains',\n number: 'range',\n datetime: 'range',\n checkboxgroup: 'all',\n combocheck: 'all',\n user: 'eq',\n dept: 'eq',\n usergroup: 'all',\n deptgroup: 'all',\n address: 'all',\n location: 'all',\n upload: 'not_empty',\n image: 'not_empty',\n signature: 'not_empty',\n flowState: 'eq',\n flowstate: 'eq',\n linkdata: 'eq',\n linkquery: 'eq',\n dataload: 'eq',\n formula: 'eq',\n};\n\nexport function getAvailableOperators(fieldType?: FieldType): relationalOperator[] {\n if (!fieldType) return [];\n return FIELD_TYPE_OPERATOR_MAP[fieldType] ?? [];\n}\n\nexport function getDefaultOperator(fieldType?: FieldType): relationalOperator {\n if (!fieldType) return 'eq';\n return DEFAULT_OPERATOR_MAP[fieldType] ?? 'eq';\n}\n\n// ── Helpers ────────────────────────────────────────────────────────────────\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return isRecord(value) ? value : null;\n}\n\nfunction isEmpty(value: unknown): boolean {\n if (value === null || value === undefined) return true;\n if (value === '') return true;\n if (Array.isArray(value) && value.length === 0) return true;\n return false;\n}\n\nfunction isEqual(a: unknown, b: unknown): boolean {\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n const sa = a.map(String).sort();\n const sb = b.map(String).sort();\n return sa.every((v, i) => v === sb[i]);\n }\n if (isRecord(a) && isRecord(b)) {\n const ka = Object.keys(a);\n const kb = Object.keys(b);\n if (ka.length !== kb.length) return false;\n return ka.every((k) => String(a[k]) === String(b[k]));\n }\n return String(a) === String(b);\n}\n\nfunction evaluateIn(formValue: unknown, condValue: unknown): boolean {\n if (isRecord(condValue)) {\n const fv = asRecord(formValue);\n if (!fv) return false;\n if (condValue.province !== undefined && String(fv.province) !== String(condValue.province))\n return false;\n if (condValue.city !== undefined && String(fv.city) !== String(condValue.city)) return false;\n if (condValue.district !== undefined && String(fv.district) !== String(condValue.district))\n return false;\n return true;\n }\n const cv = Array.isArray(condValue) ? condValue.map(String) : [];\n if (Array.isArray(formValue)) {\n return formValue.some((v) => cv.includes(String(v)));\n }\n return cv.includes(String(formValue));\n}\n\nfunction evaluateAll(formValue: unknown, condValue: unknown): boolean {\n const cv = Array.isArray(condValue) ? condValue.map(String) : [];\n if (cv.length === 0) return false;\n const fv = Array.isArray(formValue) ? formValue.map(String) : [];\n return cv.every((v) => fv.includes(v));\n}\n\nfunction evaluateRange(formValue: unknown, condValue: unknown): boolean {\n const range = asRecord(condValue);\n if (!range) return false;\n const fv = Number(formValue);\n if (isNaN(fv)) return false;\n if (range.min !== undefined && range.min !== null && fv < Number(range.min)) return false;\n if (range.max !== undefined && range.max !== null && fv > Number(range.max)) return false;\n return true;\n}\n\n// ── Item evaluator ─────────────────────────────────────────────────────────\n\nfunction evaluateConditionItem(item: IConditionItem, formValues: IFormValues): boolean {\n const widgetName = item.field.widget?.widgetName;\n if (!widgetName) return false;\n\n const formValue = formValues[widgetName];\n const { operator, value: condValue } = item;\n\n switch (operator) {\n case 'empty':\n return isEmpty(formValue);\n case 'not_empty':\n return !isEmpty(formValue);\n case 'eq':\n return isEqual(formValue, condValue);\n case 'neq':\n return !isEqual(formValue, condValue);\n case 'contains':\n return String(formValue).includes(String(condValue));\n case 'not_contains':\n return !String(formValue).includes(String(condValue));\n case 'gt':\n return Number(formValue) > Number(condValue);\n case 'gte':\n return Number(formValue) >= Number(condValue);\n case 'lt':\n return Number(formValue) < Number(condValue);\n case 'lte':\n return Number(formValue) <= Number(condValue);\n case 'in':\n return evaluateIn(formValue, condValue);\n case 'nin':\n return !evaluateIn(formValue, condValue);\n case 'all':\n return evaluateAll(formValue, condValue);\n case 'range':\n return evaluateRange(formValue, condValue);\n default:\n return false;\n }\n}\n\n// ── Public API ─────────────────────────────────────────────────────────────\n\nexport function isHelperCondMet(helper: IAgentHelper, formValues: IFormValues): boolean {\n if (!helper.enabled) {\n return false;\n }\n\n const condition = helper.triggerCondition;\n if (!condition) return true;\n\n const { items, quantifier } = condition;\n if (!items || items.length === 0) return true;\n\n const results = items.map((item) => evaluateConditionItem(item, formValues));\n\n return quantifier === 'any' ? results.some((r) => r) : results.every((r) => r);\n}\n\nexport const isCtxMatch = (helper: IAgentHelper | null, ctx: ICtxDetail | null): boolean => {\n if (helper === null) {\n return false;\n }\n\n if (ctx === null) {\n return false;\n }\n\n if (helper.formId) {\n return ctx.type === 'form' && ctx.params.formId === helper.formId;\n }\n\n if (helper.appId) {\n return (ctx.type === 'app' || ctx.type === 'form') && ctx.params.appId === helper.appId;\n }\n\n // 没有表单 id、应用 id 视为通用,即任意上下文可用\n\n return ctx.type === 'global' || ctx.type === 'app' || ctx.type === 'form';\n};\n\n// ── Operator ↔ Bsy method maps ──────────────────────────────────────────────\n\nconst OPERATOR_TO_BS_METHOD: Record<string, string> = {\n eq: 'eq',\n neq: 'ne',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n contains: 'like',\n not_contains: 'unlike',\n in: 'in',\n nin: 'nin',\n all: 'all',\n empty: 'empty',\n not_empty: 'not_empty',\n range: 'range',\n};\n\nconst BS_METHOD_TO_OPERATOR: Record<string, relationalOperator> = {\n eq: 'eq',\n ne: 'neq',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n like: 'contains',\n unlike: 'not_contains',\n in: 'in',\n nin: 'nin',\n all: 'all',\n empty: 'empty',\n not_empty: 'not_empty',\n range: 'range',\n};\n\n// ── Public serialization API ────────────────────────────────────────────────\n\nexport function conditionStringify2bsCondition(cond: ICondition): string {\n const rel = cond.quantifier === 'any' ? 'or' : 'and';\n const bsCondItems: IBsCondItem[] = cond.items.map((item) => {\n const method = OPERATOR_TO_BS_METHOD[item.operator] ?? 'eq';\n let value: unknown[];\n if (item.operator === 'range' && isRecord(item.value)) {\n value = [item.value.min, item.value.max];\n } else if (Array.isArray(item.value)) {\n value = item.value;\n } else {\n value = [item.value];\n }\n return {\n field: item.field?.widget?.widgetName ?? '',\n method,\n value,\n type: item.field?.widget?.type,\n };\n });\n return JSON.stringify({ rel, cond: bsCondItems });\n}\n\nexport function bsConditionParse2Condition(str: string): ICondition {\n const bsCond: IBsCondition = JSON.parse(str);\n const quantifier: ICondition['quantifier'] = bsCond.rel === 'or' ? 'any' : 'all';\n const items: IConditionItem[] = bsCond.cond.map((bsItem, index) => {\n const operator = BS_METHOD_TO_OPERATOR[bsItem.method] ?? 'eq';\n let value: unknown = bsItem.value;\n if (operator === 'range') {\n value = { min: bsItem.value[0], max: bsItem.value[1] };\n } else if (\n ['eq', 'neq', 'contains', 'not_contains', 'gt', 'gte', 'lt', 'lte'].includes(operator)\n ) {\n value = bsItem.value[0];\n }\n return {\n id: `${bsItem.field}_${index}`,\n field: {\n label: bsItem.field,\n widget: {\n widgetName: bsItem.field,\n type: (bsItem.type as FieldType) ?? 'unknown',\n value: undefined,\n },\n },\n operator,\n value,\n };\n });\n return { targetName: '', quantifier, items };\n}\n","export function formatLocalDate(date: Date) {\n const pad = (n: string | number) => String(n).padStart(2, '0');\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;\n}\n","export function mergeConsecutiveTargets<T>(\n arr: T[],\n isTarget: (item: T) => boolean,\n minWidth = 1\n): (T | T[])[] {\n // 存储最终结果\n const result: (T | T[])[] = [];\n // 临时收集连续的目标元素\n const temp: T[] = [];\n\n // 遍历原始数组\n for (const item of arr) {\n if (isTarget(item)) {\n // 是目标元素,加入临时数组\n temp.push(item);\n } else {\n // 不是目标元素:先处理临时数组(内联原辅助函数逻辑)\n if (temp.length > 0) {\n // 连续≥ minWidth 个目标元素 → 合并为子数组\n result.push(temp.length >= minWidth ? [...temp] : temp[0]);\n temp.length = 0; // 清空临时数组\n }\n // 将当前非目标元素加入结果\n result.push(item);\n }\n }\n\n // 处理遍历结束后剩余的临时数组(末尾可能全是目标元素)\n if (temp.length > 0) {\n result.push(temp.length >= 2 ? [...temp] : temp[0]);\n }\n\n return result;\n}\n\nexport function flatArr(arr: Array<unknown>): Array<unknown> {\n const result: Array<unknown> = [];\n for (const item of arr) {\n if (Array.isArray(item)) {\n // 递归展开子数组,并把展开后的元素合并到结果中\n result.push(...flatArr(item));\n } else {\n result.push(item);\n }\n }\n return result;\n}\n","/**\n * Mapping from icon font_class name to unicode hex string.\n * Generated from apps/web/public/iconfont.json\n */\nconst ICON_UNICODE_MAP: Record<string, string> = {\n projectdevelopment: 'e914',\n resourcelibrary: 'e915',\n Plugin2: 'e90e',\n Plugin: 'e90f',\n JSON: 'e910',\n Dropdown: 'e911',\n Batchprocessing: 'e912',\n 'Image-text': 'e916',\n Newaddition: 'e917',\n reportforms: 'e918',\n AddFola: 'e919',\n delete: 'e91a',\n AddImage: 'e91b',\n Send: 'e91c',\n text: 'e91d',\n image: 'e91e',\n Star1: 'e91f',\n Ellipse: 'e920',\n 'Ellipse-Copy': 'e921',\n Shape: 'e922',\n 'Shape-Copy': 'e923',\n 'right-line': 'e924',\n 'right-arrow': 'e925',\n 'double-right-arrow': 'e926',\n ellipse: 'e927',\n Rectangle: 'e928',\n 'Rectangle-Copy': 'e929',\n 'Rectangle-Copy-2': 'e92a',\n CombinedShape: 'e92b',\n Line: 'e92c',\n time: 'e92d',\n calendar: 'e92e',\n richsinglelinetext: 'e92f',\n singlelinetext: 'e930',\n multilinetext: 'e931',\n number: 'e932',\n RichText: 'e933',\n image1: 'e934',\n Attachment: 'e935',\n Phone: 'e936',\n Email: 'e937',\n date: 'e938',\n 'Multiple-choice': 'e939',\n Checkbox: 'e93a',\n 'Drop-down': 'e93b',\n positioning: 'e93c',\n Description: 'e93d',\n AutoNumber: 'e93e',\n Address: 'e93f',\n Staff: 'e940',\n Department: 'e941',\n Switch: 'e942',\n Slider: 'e943',\n Currentdate: 'e944',\n Grade: 'e945',\n Barcode: 'e946',\n Subtable: 'e947',\n associatedtable: 'e948',\n Associatedapplication: 'e949',\n Referencefield: 'e94a',\n Uppercasing: 'e94b',\n nodata: 'e94c',\n 'X-mark': 'e94d',\n Copy: 'e94e',\n Correct: 'e94f',\n Save: 'e950',\n Printer: 'e951',\n search: 'e952',\n filter: 'e953',\n Export: 'e954',\n Import: 'e955',\n Customprint: 'e956',\n refresh: 'e957',\n Helpcenter: 'e958',\n Tutorial: 'e959',\n Release: 'e95a',\n more: 'e95b',\n Setup: 'e95c',\n sort: 'e95d',\n Back: 'e95e',\n show: 'e95f',\n hide: 'e960',\n Preview: 'e961',\n Click: 'e962',\n Allcheck: 'e963',\n Cancelcheck: 'e964',\n Likespot: 'e965',\n Favoritespot: 'e966',\n Followspot: 'e967',\n Commentspot: 'e968',\n At: 'e969',\n Pin: 'e96a',\n edit: 'e96b',\n Top: 'e96c',\n Movein: 'e96d',\n Moveout: 'e96e',\n Forward: 'e96f',\n Revoke: 'e970',\n Return: 'e971',\n Link: 'e972',\n Unlink: 'e973',\n Download: 'e974',\n Upload: 'e975',\n Download2: 'e976',\n Upload2: 'e977',\n Comment: 'e978',\n Remind: 'e979',\n Notice: 'e97a',\n Permission: 'e97b',\n SMS: 'e97c',\n QRcode: 'e97d',\n Website: 'e97e',\n Monitoring: 'e97f',\n Api: 'e980',\n Webhook: 'e981',\n Synchronous: 'e982',\n Automation: 'e983',\n Trigger: 'e984',\n Condition: 'e985',\n Success: 'e986',\n Failure: 'e987',\n countdown: 'e988',\n Waiting: 'e989',\n Flow: 'e98a',\n Connection: 'e98b',\n Dashboard: 'e98c',\n chart: 'e98d',\n Piechart: 'e98e',\n BarChart: 'e98f',\n DoubleBarChart: 'e991',\n StackedBarChart: 'e992',\n PercentageStackedBarChart: 'e993',\n LineChart: 'e994',\n areachart: 'e990',\n combinationchart: 'e995',\n Scatterplot: 'e996',\n FunnelChart: 'e997',\n wordcloud: 'e998',\n RadarChart: 'e999',\n PivotTable: 'e99a',\n NumberChart: 'e99b',\n map: 'e99c',\n Timeline: 'e99d',\n Album: 'e99e',\n Kanban: 'e99f',\n Ganttchart: 'e9a0',\n Circle: 'e9a8',\n linesurface: 'e9a1',\n IconStyle: 'e9a2',\n Backgroundcolor: 'e9a3',\n DeleteDe: 'e9a4',\n AlignLeft: 'e9a5',\n AlignCenter: 'e9a6',\n AlignRight: 'e9a7',\n Column: 'e9a9',\n Component: 'e9aa',\n Customcomponent: 'e9ab',\n Title: 'e9ac',\n RichText1: 'e9ad',\n Carousel: 'e9ae',\n PageTab: 'e9af',\n Buriedpoint: 'e9b0',\n Container: 'e9b1',\n QuickStart: 'e9b2',\n Group: 'e9b3',\n Ungroup: 'e9b4',\n Front: 'e9b5',\n Back1: 'e9b6',\n Lock: 'e9b7',\n Unlock: 'e9b8',\n Association: 'e9b9',\n CancelAssociation: 'e9ba',\n Quotation: 'e9bb',\n ViewSet: 'e9bc',\n AutoScale: 'e9bd',\n waterfall: 'e9be',\n watermark: 'e9bf',\n history: 'e9c0',\n Setting: 'e9c1',\n Draftbox: 'e9c2',\n SQL: 'e9c3',\n Workflow: 'e9c4',\n Workflow2: 'e9c5',\n Addone: 'e9c6',\n Formula: 'e9c7',\n Dictionary: 'e9c8',\n statistical: 'e9c9',\n Recycle: 'e9ca',\n Mistake: 'e9cb',\n Tag: 'e9cc',\n Pendingapproval: 'e9cd',\n MyApplication: 'e9ce',\n ApplicationApproval: 'e9cf',\n Initiatedbyme: 'e9d0',\n Copiedtome: 'e9d1',\n Approvalnode: 'e9d2',\n Fillnode: 'e9d3',\n cc: 'e9d4',\n Image1: 'e9d5',\n Open: 'e9d6',\n Color: 'e9d7',\n Right: 'e9d8',\n Backward: 'e9d9',\n dataanalysis: 'e9da',\n Filter2: 'e9db',\n Freefilter: 'e9dc',\n Conditionfilter: 'e9dd',\n Quickfilter: 'e9de',\n Export1: 'e9df',\n Attachmentpreview: 'e9e0',\n BulkEdit: 'e9e1',\n Calculationrows: 'e9e2',\n SingleSelect: 'e9e3',\n dataview: 'e9e4',\n Dataid: 'e9e5',\n Divide: 'e9e6',\n Progress: 'e9e7',\n Star: 'e9e8',\n Contacts: 'e9e9',\n Activity: 'e9ea',\n Minus: 'e9eb',\n Plussign: 'e9ec',\n 'Plussign-Copy': 'e9ed',\n Increased: 'e9ee',\n Decline: 'e9ef',\n indeterminate: 'e9f0',\n Decline1: 'e9f1',\n personal: 'e9f2',\n Warning: 'e9f3',\n Warning2: 'e9f4',\n Prompt: 'e9f5',\n info: 'e9f6',\n Cancel: 'e9f7',\n question1: 'e9f8',\n Question: 'e9f9',\n exclamation: 'e9fa',\n Warning1: 'e9fb',\n True: 'e9fc',\n Suspended: 'e9fd',\n Suspended1: 'e9fe',\n Suspended2: 'e9ff',\n Error: 'ea00',\n CombinedShape2: 'ea01',\n Delete1: 'ea02',\n Circle1: 'ea03',\n Decline2: 'ea04',\n Decline3: 'ea05',\n add: 'ea06',\n Addto: 'ea07',\n Reduce: 'ea08',\n Subtract: 'ea09',\n Addition: 'ea0a',\n Multiplication: 'ea0b',\n Division: 'ea0c',\n Bracket: 'ea0d',\n Reduce1: 'ea0e',\n Search: 'ea0f',\n Favorites: 'ea10',\n Annotation: 'ea11',\n Application: 'ea12',\n Application2: 'ea13',\n Applicationsview: 'ea14',\n Publish: 'ea15',\n Deploy: 'ea16',\n Sidetoplowerside: 'ea17',\n Narrow: 'ea18',\n Backtothenavigation: 'ea19',\n Forwardtothenavigation: 'ea1a',\n Return1: 'ea1b',\n Transfer: 'ea1c',\n Log: 'ea1d',\n table: 'ea1e',\n Form: 'ea1f',\n Openfield: 'ea20',\n Closefield: 'ea21',\n Receive: 'ea22',\n Fill: 'ea23',\n Fill1: 'ea24',\n fillet: 'ea25',\n rightangle: 'ea26',\n round: 'ea27',\n Send1: 'ea28',\n Map: 'ea29',\n Upward: 'ea2a',\n Move: 'ea2b',\n Downward: 'ea2c',\n drag: 'ea2d',\n TextIcon: 'ea2e',\n Narrow1: 'ea2f',\n Enlarge: 'ea30',\n Enlarge2: 'ea31',\n Cancel1: 'ea32',\n Retract: 'ea33',\n Expand: 'ea34',\n Retract1: 'ea35',\n Expand1: 'ea36',\n Retract2: 'ea37',\n Expand2: 'ea38',\n Switch1: 'ea39',\n Fullscreen: 'ea3a',\n Offscreen: 'ea3b',\n Notvisible: 'ea3c',\n Visible: 'ea3d',\n Adjust: 'ea3e',\n PC: 'ea3f',\n Mobile: 'ea40',\n Pad: 'ea41',\n Scanthecode: 'ea42',\n Scan: 'ea43',\n Screenshot: 'ea44',\n Rotation: 'ea45',\n voice: 'ea46',\n Video: 'ea47',\n Location: 'ea48',\n Clock: 'ea49',\n Print: 'ea4a',\n Member: 'ea4b',\n WorkWeChat: 'ea4c',\n DingTalk: 'ea4d',\n EnterpriseWeChat2: 'ea4e',\n Groupmanagement: 'ea4f',\n Feishu: 'ea50',\n Stationletter: 'ea51',\n Email1: 'ea52',\n WeChat: 'ea53',\n ServiceAccount: 'ea54',\n Subscribed: 'ea55',\n Dingtalk: 'ea56',\n Information: 'ea57',\n Assistant: 'ea58',\n ai: 'ea59',\n Inquireabout: 'ea5a',\n IFrame: 'ea5b',\n Integratio: 'ea5c',\n close: 'ea5d',\n Close: 'ea5e',\n Addgroup: 'ea5f',\n deletegroup: 'ea60',\n Relateddata: 'ea61',\n Enlarge1: 'ea62',\n Narrow2: 'ea63',\n 'map-search': 'ea64',\n Corner: 'ea65',\n text1: 'ea66',\n Onlinemap: 'ea67',\n Maptile: 'ea68',\n Dataexport: 'ea69',\n Word: 'ea6a',\n Excel: 'ea6b',\n PPT: 'ea6c',\n PDF: 'ea6d',\n Video1: 'ea6e',\n Audio: 'ea6f',\n Txt: 'ea70',\n Zip: 'ea71',\n file: 'ea72',\n richtext: 'ea73',\n Onlinemap1: 'ea74',\n Maptile1: 'ea75',\n Ai2: 'ea76',\n Guide: 'ea77',\n Button: 'ea78',\n Menus: 'ea79',\n 'richtext-Copy': 'ea7a',\n 'richtext-Copy-2': 'ea7b',\n 'richtext-Copy-3': 'ea7c',\n 'richtext-Copy-4': 'ea7d',\n Split: 'ea7e',\n AI: 'ea7f',\n Form1: 'ea80',\n Fields: 'ea81',\n Project: 'ea82',\n More1: 'ea83',\n Notstarted: 'ea84',\n Inprocess: 'ea85',\n Completed: 'ea86',\n Completed1: 'ea87',\n More2: 'ea88',\n AIoffice: 'ea89',\n statistics: 'ea8a',\n Expand3: 'ea8b',\n list: 'ea8c',\n 'list-Copy': 'ea8d',\n Grid: 'ea8e',\n Calendar: 'ea8f',\n Schedule: 'ea90',\n tableview: 'ea91',\n Gallery: 'ea92',\n Copy1: 'ea93',\n Mailbox: 'ea94',\n Automation1: 'ea95',\n Avatar: 'ea96',\n};\n\n/**\n * Look up the unicode hex string for an icon by its font_class name.\n * Returns undefined if the icon name is not found.\n *\n * @param name - The icon font_class name (e.g. \"search\", \"edit\", \"ai\")\n * @returns The unicode hex string (e.g. \"e952\"), or undefined\n *\n * @example\n * getIconUnicode(\"search\") // \"e952\"\n * getIconUnicode(\"ai\") // \"ea59\"\n */\nexport function getIconUnicode(name: string): string | undefined {\n const code = ICON_UNICODE_MAP[name];\n return code ? `&#x${code};` : undefined;\n}\n","import { IField, IValueFormHuman } from '@baishuyun/types';\nimport { flatArr } from './array';\n\n// input eg: '${_widget_1782471976291} ${_widget_1782471978145} ahahah'\n// output: '供应商名称 备注 ahahah'\nexport const promptParser = (\n originStrWithFieldNameTpl: string,\n formStructure: Array<IField>,\n widgetValueGetter: (name: string) => IValueFormHuman\n): IValueFormHuman => {\n if (!widgetValueGetter) {\n return {\n translated: '',\n };\n }\n\n const widgetMap = new Map(formStructure.map((f) => [f.widget.widgetName, f.label]));\n\n for (const field of formStructure) {\n if (field.widget.type === 'subform' && field.widget.items) {\n for (const item of field.widget.items) {\n if ('widget' in item && !('options' in item)) {\n const key = `${field.widget.widgetName}.${item.widget.widgetName}`;\n widgetMap.set(key, item.label);\n }\n }\n }\n }\n\n const metaPart: Array<unknown> = [];\n\n const stringPart = originStrWithFieldNameTpl.replace(\n /\\$\\{(_widget_\\d+(?:\\._widget_\\d+)?)\\}/g,\n (_, widgetName) => {\n const { translated, meta } = widgetValueGetter(widgetName);\n\n if (meta) {\n metaPart.push(meta);\n }\n\n return translated;\n }\n );\n\n return {\n meta: metaPart.length ? flatArr(metaPart) : null,\n translated: (stringPart ?? '').trim(),\n };\n};\n","const REG_EX_MAP: Record<string, string> = {\n 手机号码: \"^((\\\\(\\\\d{2,3}\\\\))|(\\\\d{3}\\\\-))?1\\\\d{10}$\",\n 电话号码: \"^(0[0-9]{2,3}\\\\-)?([2-9][0-9]{6,7})+(\\\\-[0-9]{1,4})?$\",\n 邮政编码: \"^\\\\d{6}$\",\n 身份证号码: \"(^\\\\d{15}$)|(^\\\\d{18}$)|(^\\\\d{17}(\\\\d|X|x)$)\",\n 邮箱: \"^([a-zA-Z0-9_\\\\.\\\\-])+\\\\@(([a-zA-Z0-9\\\\-])+\\\\.)+([a-zA-Z0-9]{2,4})+$\",\n 时分: \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 时分秒:\n \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 图片链接: \"imageurl\",\n 二维码图片: \"qrcode\",\n 条形码图片: \"barcode\",\n 自定义: \"custom\",\n};\n\nexport const rebuildText = (truncatedJson: unknown) => {\n const { widget, labelStyle, label, ...rest } = (truncatedJson as any) || {};\n\n const regex = REG_EX_MAP[labelStyle] || \"\";\n return {\n widget: {\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n // triggerEvent: 0,\n customCls: null,\n height: 34,\n width: 350,\n text: null,\n value: \"\", //默认值 没有默认值的话 整个value不存在\n enable: true,\n visible: true,\n // hint: placeholder,\n allowBlank: true,\n rely: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex, //格式 ^((\\(\\d{2,3}\\))|(\\d{3}\\-))?1\\d{10}$ 手机号码 ^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$ 电话号码 ^\\d{6}$ 邮政编码 (^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$) 身份证号码 ^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$ 邮箱 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分秒 imageurl 图片链接 qrcode 二维码图片 barcode 条形码图片 custom 自定义\n noRepeat: true,\n scan: null,\n // textMode,\n generateQR: false,\n eventAlert: true,\n alertinfo: {\n icon: \"error\",\n // tip: placeholder,\n // msg: placeholder,\n },\n enterClearText: true,\n ...widget,\n regex,\n type: \"text\",\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const buildWidgetName: (prefix?: string, index?: number) => string = (\n prefix: string = \"_widget\",\n index?: number,\n) => {\n const baseName = `${prefix}_${Date.now()}`;\n\n if (index === undefined) {\n return baseName;\n }\n\n const idxLength = index.toString().length;\n const slicedBaseName = baseName.slice(0, -idxLength);\n\n return `${slicedBaseName}${index}`;\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildNumber = (value: unknown): unknown => {\n const { widget, label, ...rest } = (value as any) || {};\n return {\n widget: {\n type: \"number\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex,\n // hint: placeholder,\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n allowDecimals: true, //允许小数,默认值 true,已废弃\n allowNegative: true, //允许负数,默认值 true ,已废弃\n // maxNumber: max, //限定数值范围 最大值\n // minNumber: min, //限定数值范围 最小值\n displayMode: \"percent\", // 新的格式, percent 百分比 number 数值\n precision: null, //保留小数位数\n thousandsSeparator: false, //显示千分符\n notround: true, //不四舍五入\n format: \"\", //旧的格式,新的由多个属性来控制,前端代码会用其他几个参数拼接出正确的这个值。 其中结尾有% 代表百分比 ,没有%代表数字 ,然后小数点后面的0的个数代表 保留的小数位数,如果小数点后面没有0代表(如0.%),代表没有设置 保留小数位数,保留用户输入的所有小数\n afterSuffix: {\n //单位\n zh_cn: \"\", //中文的\n en_us: \"\", //英文的\n zh_tw: \"\", //繁体的\n },\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildSelect = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combo\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n mode: 1,\n allowAddLinkData: false,\n // items: options,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildRadioGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n // items: options,\n layout: \"vertical\",\n stopCancel: false,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n value: null,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n type: \"radiogroup\",\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n labelStyle: label,\n };\n};\n","export const rebuildDatetime = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"datetime\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n widgetName: `_widget_${Date.now()}`,\n\n widgetNameAlias: \"\",\n customCls: null,\n value: \"today\", //默认值, today 填写当前时间 ,如果是数字,如 1762957800000 ,是自定义的时间,为所选时间的时间戳的毫秒级,\n rely: null,\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n hint: \"\",\n dateLimit: {\n //日期范围\n week: {\n //可选择星期\n enable: false, //是否开启可选择星期\n value: [\n //星期 星期一到天,用1-7代表\n 1, 2, 6,\n ],\n },\n start: {\n //最早可选时间\n enable: false, //是否开启最早可选时间\n mode: \"dynamic\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: \"yesterday\", //限定的值: today 今天 yesterday 昨天 tomorrow 明天 7day_before 七天前 7day_after 七天后 30day_before 30天前 30day_after 30天后\n },\n end: {\n //最晚可选时间\n enable: false, //是否开启最晚可选时间\n mode: \"static\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: 1762093800000, //限定的值:这种数字的为 选择的固定值,时间的时间戳,毫秒级别 ,如果为 _widget_1762154537014 这种,为字段的值,这个字段需要也是日期字段,和当前这个字段是同一个 format的\n },\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const defaultBuilder = (truncatedJson: unknown) => {\n return truncatedJson;\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildDeptGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"deptgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildSn = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: 'sn',\n widgetName: buildWidgetName(),\n widgetNameAlias: '',\n triggerEvent: 0,\n customCls: null,\n width: 350,\n enable: true,\n visible: true,\n // rules: rules,\n importMode: 1, //导入模式 1 excel末尾递增 2 excel最大值递增 3 excel/表单最大值比较递增\n ...widget,\n rules: [\n {\n chars: 'sn-',\n type: 'fixedChars',\n },\n {\n digitsNum: 5,\n fixedLength: true,\n resetDuration: 'none',\n startValue: 1,\n type: 'incNumber',\n },\n ],\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildDept = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dept\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildUserGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"usergroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildDataLinker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: {\n widgets: [],\n },\n linkFilter: {},\n allowAdd: true, //允许新增关联表数据\n refType: \"form\", //关联表的类型,只能是form\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkdata\",\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nconst tmpMapFields2Fields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any, index: number) => {\n return {\n id: index,\n\n // name: \"_widget_1761976674767\",\n // form: \"a2f34ef882158a3e97da4ef7\",\n // tag: buildWidgetName(\"f_\", index),\n\n title: mf.field,\n text: mf.field,\n icon: `icon-widget-${mf.type}`,\n type: mf.type,\n isEditable: true,\n group: \"dimension,filter,select\",\n formula: \"\",\n };\n });\n};\n\nconst tmpMapFields2MapFields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any) => {\n return {\n mode: \"depend\",\n ...mf,\n };\n });\n};\n\nexport const rebuildDataLoader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dataload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 350,\n text: label,\n enable: true,\n visible: true,\n allowBlank: true,\n allowAddData: true, // 允许新增数据源数据\n ...widget,\n mode: \"list\", //一直是 list 应该是废弃的\n loaddataconfig: {\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n dataloadmode: [\"add\", \"cover\"],\n filter: {\n cond: [],\n rel: \"and\",\n },\n defaultSort: [],\n treeFields: {},\n mode: \"list\",\n selectFields: [],\n triggerControl: null,\n triggerWidget: null,\n triggerFieldMode: \"none\",\n triggerField: null,\n forms: widget?.loaddataconfig?.forms,\n selectArg: [],\n selectRel: \"and\",\n fields: tmpMapFields2Fields(widget?.loaddataconfig?.mapFields),\n mapFields: tmpMapFields2MapFields(widget?.loaddataconfig?.mapFields),\n },\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildUser = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"user\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildSignature = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"signature\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: null,\n ...widget,\n labelStyle: label,\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildImage = (truncatedJson: unknown) => {\n const { widget, label, ...rest }: any = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"image\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 100,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: false,\n online_edit_record: false,\n fileType: [\n //支持上传的类型,默认,不可以设置\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"gif\",\n \"bmp\",\n \"tif\",\n ],\n compressed: true, //三方图片压缩\n wxOriginalComponent: true, //微信/企业微信原生拍照模式\n onlyCamera: false, //仅允许拍照上传\n preview: true, //是否可以预览 默认 不可以设置\n watermarkSwitch: true, //水印属性\n watermarkPosition: \"center\", //水印位置\n watermarkFieldTitle: true, //是否显示水印字段标题\n watermarkSize: \"14\", //水印字体大小 不可以设置\n watermarkFixedField: {},\n previewWidth: 450, //预览的宽 默认 不可以设置\n previewHeight: 450, //预览的高 默认 不可以设置\n browserCompress: true, //浏览器图片压缩\n quality: 0.7, //压缩图片比例,开启 浏览器图片压缩 后才能设置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildUploader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"upload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n maxFileCount: 50, //允许多文件上传 1为不可以 50为可以\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: true, //允许文档在线编辑\n online_edit_record: true, //是否查看协作记录\n fileSizeLimit: 10485760, //设置单个文件大小上限,单位是字节,范围 1M-20M\n // fileType,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildCheckboxGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"checkboxgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n layout: \"vertical\",\n allowAddOptions: false, //允许成员填写时添加新选项\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildLine = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"separator\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 12,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildComboChecker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combocheck\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n mode: \"\",\n allowAddOptions: false, //允许成员填写时添加新选项\n allowAddLinkData: false,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildLocation = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"location\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n adjustable: true, //允许移动端微调\n lnglatVisible: true, //显示经纬度坐标\n autoLocation: true, //移动端自动触发定位\n enablePcLocation: true, //允许PC端定位并选择位置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildTextarea = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"textarea\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 140,\n width: 734,\n value: \"\",\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n autoHeight: true, //根据内容自适应高度\n maxLength: 5000, //限制输入最大字符数 不限制的话,整个maxLength不存在\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildButton = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"button\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: 0,\n customCls: null,\n height: 36,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: false,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n funMode: \"popupreport\",\n },\n background: {\n //颜色\n mode: \"color\",\n position: \"center\",\n },\n mode: \"all\", //模式 all 扩展 popupreport 弹出报表 popupform 弹出表单 print 页面打印 popuppage 弹出外部网页\n theme: \"default\", //风格 default 默认,有边框有底色 style1 有边框无底色 none 无边框无底色\n eventAlert: false, //是否显示提醒框\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildAddress = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"address\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 720,\n enable: true,\n visible: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n needDetail: true,\n eventMode: 1, //公式联动触发模式 1 默认,省市县/详细地址内容改变都触发 2 只有省市县改变才触发 3 只有详细地址改变才触发\n seleceMapAddress: true, //开启经纬度定位\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { rebuildFieldsJsonStructure } from \".\";\nimport { buildWidgetName } from './build-widget-name';\n\nexport const rebuildSubform = (originObj: unknown = {}) => {\n const { widget, label, ...rest } = originObj as any;\n return {\n widget: {\n type: \"subform\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n labelStyle: label,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n items: (widget.items || []).map((item: any, index: number) => {\n const result = rebuildFieldsJsonStructure(item, true);\n\n result.widget.widgetName = buildWidgetName(\"_widget\", index);\n\n return result;\n }),\n sortable: true, //启用子表单数据排序\n allowImportV2: false, //从excel导入数据\n sticky_column: {\n //PC端冻结前 n 列\n limit: 2, //多少列 范围 1-3\n enable: true, //是否开启\n },\n sticky_column_mobile: {\n //移动端冻结前 n 列\n limit: 1, //多少列 范围 1-3\n enable: true, //是否开启\n },\n mobileStyle: \"table\", //移动端显示样式 list 纵向展开 table 横向表格\n subform_create: true, //可新增记录\n subform_insert: true, //可插入记录\n subform_edit: true, //可编辑已有记录\n subform_delete: true, //可删除已有记录\n subform_fill: true, //允许填报数据\n subform_import: true, //允许导入数据\n subform_dataload: true, //允许数据加载\n loaddataconfig: {\n //数据加载设置\n mode: \"tree\",\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n },\n allowLoadData: false, //是否开启数据加载\n allowAddData: true, //允许新增数据源数据\n subformloaddataTitle: \"数据加载\", //数据加载显示的标题\n subFieldShowRules: [], //子字段显隐规则\n quick_fill: true, //从excel填报数据\n },\n description: null,\n label,\n lineWidth: 12,\n tab: null,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildDataQuery = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n linkFilter: {},\n rely: {\n widgets: [],\n },\n showMode: \"one\", //显示数据条数 one 一条 many 多条\n allowAdd: true, //允许新增关联表数据,只有 refType 为 form才可以选择true\n refType: \"form\", //关联表的类型,根据 linkForm 表的类型决定的。 form 表单 etl_table 视图 aggregate_table 聚合表\n showType: \"none\", //数据显示模式 none 默认 label 标题\n addExtendSet: [],\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkquery\",\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { IField, type FieldType } from '@baishuyun/types';\nimport { rebuildText } from './rebuild-text';\nimport { rebuildNumber } from './rebuild-number';\nimport { rebuildSelect } from './rebuild-select';\nimport { rebuildRadioGroup } from './rebuild-radio-group';\nimport { rebuildDatetime } from './rebuild-date-time';\nimport { defaultBuilder } from './default-builder';\nimport { rebuildDeptGroup } from './rebuild-dept-group';\nimport { rebuildSn } from './rebuild-sn';\nimport { rebuildDept } from './rebuild-dept';\nimport { rebuildUserGroup } from './rebuild-user-group';\nimport { rebuildDataLinker } from './rebuild-data-linker';\nimport { rebuildDataLoader } from './rebuild-data-loader';\nimport { rebuildUser } from './rebuild-user';\nimport { rebuildSignature } from './rebuild-signature';\nimport { rebuildImage } from './rebuild-image';\nimport { rebuildUploader } from './rebuild-upload';\nimport { rebuildCheckboxGroup } from './rebuild-checkbox-group';\nimport { rebuildLine } from './rebuild-line';\nimport { rebuildComboChecker } from './rebuild-combo-checker';\nimport { rebuildLocation } from './rebuild-location';\nimport { rebuildTextarea } from './rebuild-textarea';\nimport { rebuildButton } from './rebuild-button';\nimport { rebuildAddress } from './rebuild-address';\nimport { rebuildSubform } from './rebuild-subform';\nimport { rebuildDataQuery } from './rebuild-data-query';\nimport { generateWidgetName } from '../field-json';\n\n/**\n * 字段类型重建工具映射\n */\nconst RebuilderMap: Record<FieldType, (origin: unknown) => unknown> = {\n address: rebuildAddress,\n button: rebuildButton,\n textarea: rebuildTextarea,\n datetime: rebuildDatetime,\n text: rebuildText,\n password: rebuildText,\n location: rebuildLocation,\n radiogroup: rebuildRadioGroup,\n radio: rebuildRadioGroup,\n combo: rebuildSelect,\n combocheck: rebuildComboChecker,\n separator: rebuildLine,\n checkboxgroup: rebuildCheckboxGroup,\n upload: rebuildUploader,\n number: rebuildNumber,\n image: rebuildImage,\n signature: rebuildSignature,\n user: rebuildUser,\n dataload: rebuildDataLoader,\n linkdata: rebuildDataLinker,\n linkquery: rebuildDataQuery,\n usergroup: rebuildUserGroup,\n subform: rebuildSubform,\n dept: rebuildDept,\n sn: rebuildSn,\n deptgroup: rebuildDeptGroup,\n flowState: defaultBuilder,\n flowstate: defaultBuilder,\n formula: defaultBuilder,\n unknown: defaultBuilder,\n};\n\n/**\n * 补全字段表示的 json 结构\n */\nexport const rebuildFieldsJsonStructure = (\n truncatedJson: Partial<IField>,\n subItemsOnly = false\n) => {\n // 校验基础结构\n if (!truncatedJson || !truncatedJson.widget || !truncatedJson.widget.type) {\n return truncatedJson;\n }\n\n // 根据字段类型选择对应的重建器\n const fieldType = (truncatedJson.widget.type as FieldType) || 'unknown';\n\n // 防止子表单内出现子表单字段,导致无限递归\n if (subItemsOnly && fieldType === 'subform') {\n return defaultBuilder(truncatedJson);\n }\n\n // 名称校验\n const isValidWidgetName = (truncatedJson?.widget?.widgetName ?? '').startsWith('_widget_');\n if (!isValidWidgetName) {\n // truncatedJson.widget.widgetName = `_widget_${Date.now()}`;\n truncatedJson.widget.widgetName = generateWidgetName();\n }\n\n const rebuilder = RebuilderMap[fieldType] || defaultBuilder;\n\n // 执行重建\n return rebuilder(truncatedJson);\n};\n","import { IChatCtx } from \"@baishuyun/types\";\n\nexport const getChatCtxForHuman = (ctx: IChatCtx) => {\n if (!ctx) {\n return '';\n }\n\n if (!ctx.corp?.name) {\n return '';\n }\n\n if (!ctx.user?.nickname) {\n return '';\n }\n\n return `${ctx.corp?.name} ${ctx.user?.nickname}(${ctx.user?.username}) ${ctx.appName ?? \"\"} ${ctx.entryName ?? \"\"} ${ctx.agentName ?? \"\"}`;\n}"],"names":["extractTextPartMeta","part","payload","e","IsErrorPart","IsFakeMsgPart","IsFilePart","IsQueryResultPart","GetQueryResult","result","IsFileGroupPart","p","IsLoadingPart","GetLoadingMsg","GetPartErrMsg","getMetaErrorMsg","STYLE_INJECTED_ATTR","injectHostStylesIntoShadow","shadowRoot","hostElement","cloneAndMark","el","cloned","node","isStringArray","value","item","isOptionArray","valueNormalizer","WHITE_LIST_FIELDS_SET","GetSafeFormStructure","formStructure","f","createPartTypeChecker","type","createPayloadTypeChecker","specialPayload","createGetFieldJsonInfo","createFieldPartsExtractor","isTarget","safeParseJson","jsonString","isAttachmentRecord","hasValidFieldValue","field","_a","_b","generateWidgetName","prefix","now","timeStr","totalLen","fixedPart","randomPart","field2config","autoService","checked","instance","parentFieldName","rowIndex","detail","DATA_COUNT_PER_BATCH","imageUrlToBase64","url","mediaType","resolve","img","canvas","OPERATOR_LABEL_MAP","FIELD_TYPE_OPERATOR_MAP","DEFAULT_OPERATOR_MAP","getAvailableOperators","fieldType","getDefaultOperator","isRecord","asRecord","isEmpty","isEqual","a","b","sa","sb","v","i","ka","kb","k","evaluateIn","formValue","condValue","fv","cv","evaluateAll","evaluateRange","range","evaluateConditionItem","formValues","widgetName","operator","isHelperCondMet","helper","condition","items","quantifier","results","r","isCtxMatch","ctx","OPERATOR_TO_BS_METHOD","BS_METHOD_TO_OPERATOR","conditionStringify2bsCondition","cond","rel","bsCondItems","_c","_d","_e","_f","method","bsConditionParse2Condition","str","bsCond","bsItem","index","formatLocalDate","date","pad","n","mergeConsecutiveTargets","arr","minWidth","temp","flatArr","ICON_UNICODE_MAP","getIconUnicode","name","code","promptParser","originStrWithFieldNameTpl","widgetValueGetter","widgetMap","key","metaPart","stringPart","_","translated","meta","REG_EX_MAP","rebuildText","truncatedJson","widget","labelStyle","label","rest","regex","buildWidgetName","baseName","idxLength","rebuildNumber","rebuildSelect","rebuildRadioGroup","rebuildDatetime","defaultBuilder","rebuildDeptGroup","rebuildSn","rebuildDept","rebuildUserGroup","rebuildDataLinker","tmpMapFields2Fields","mapFieldsFromTruncatedJson","mf","tmpMapFields2MapFields","rebuildDataLoader","rebuildUser","rebuildSignature","rebuildImage","rebuildUploader","rebuildCheckboxGroup","rebuildLine","rebuildComboChecker","rebuildLocation","rebuildTextarea","rebuildButton","rebuildAddress","rebuildSubform","originObj","rebuildFieldsJsonStructure","rebuildDataQuery","RebuilderMap","subItemsOnly","getChatCtxForHuman","_g","_h"],"mappings":"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"}
1
+ {"version":3,"file":"ai-feat-utils.js","sources":["../src/text-part.ts","../src/part.ts","../src/dom.ts","../src/value-normalizer.ts","../src/form-structure.ts","../src/field-json.ts","../src/constants.ts","../src/attachment.ts","../src/condition.ts","../src/date.ts","../src/array.ts","../src/iconfont.ts","../src/prompt-parser.ts","../src/fields-json-rebuild/rebuild-text.ts","../src/fields-json-rebuild/build-widget-name.ts","../src/fields-json-rebuild/rebuild-number.ts","../src/fields-json-rebuild/rebuild-select.ts","../src/fields-json-rebuild/rebuild-radio-group.ts","../src/fields-json-rebuild/rebuild-date-time.ts","../src/fields-json-rebuild/default-builder.ts","../src/fields-json-rebuild/rebuild-dept-group.ts","../src/fields-json-rebuild/rebuild-sn.ts","../src/fields-json-rebuild/rebuild-dept.ts","../src/fields-json-rebuild/rebuild-user-group.ts","../src/fields-json-rebuild/rebuild-data-linker.ts","../src/fields-json-rebuild/rebuild-data-loader.ts","../src/fields-json-rebuild/rebuild-user.ts","../src/fields-json-rebuild/rebuild-signature.ts","../src/fields-json-rebuild/rebuild-image.ts","../src/fields-json-rebuild/rebuild-upload.ts","../src/fields-json-rebuild/rebuild-checkbox-group.ts","../src/fields-json-rebuild/rebuild-line.ts","../src/fields-json-rebuild/rebuild-combo-checker.ts","../src/fields-json-rebuild/rebuild-location.ts","../src/fields-json-rebuild/rebuild-textarea.ts","../src/fields-json-rebuild/rebuild-button.ts","../src/fields-json-rebuild/rebuild-address.ts","../src/fields-json-rebuild/rebuild-subform.ts","../src/fields-json-rebuild/rebuild-data-query.ts","../src/fields-json-rebuild/index.ts","../src/chat.ts"],"sourcesContent":["export const extractTextPartMeta = (part: any) => {\n if (part?.type !== 'text') {\n return null;\n }\n\n if (!part.providerMetadata) {\n return null;\n }\n\n if (!part.providerMetadata.raw || !part.providerMetadata.raw.data) {\n return null;\n }\n\n if (typeof part.providerMetadata.raw.data !== 'string') {\n return part.providerMetadata.raw.data;\n }\n\n let payload;\n try {\n payload = JSON.parse(part.providerMetadata.raw.data);\n } catch (e) {\n console.error('invalid raw data');\n }\n\n return payload || part.providerMetadata.raw.data;\n};\n","import { IQueryResult } from '@baishuyun/types';\nimport { extractTextPartMeta } from './text-part';\n\nexport const IsErrorPart = (part: any): boolean => {\n if (part?.type === 'error') {\n return true;\n }\n\n const payload = extractTextPartMeta(part);\n return payload?.type === 'agent-error';\n};\n\nexport const IsFakeMsgPart = (part: any): boolean => {\n const payload = extractTextPartMeta(part);\n return payload?.type === 'agent-fake-msg';\n};\n\nexport const IsFilePart = (part: any): boolean => {\n return part?.type === 'file';\n};\n\nexport const IsQueryResultPart = (part: any): boolean => {\n const payload = extractTextPartMeta(part);\n return payload?.type === 'query-stream-parsed-info';\n};\n\nexport const GetQueryResult = (part: any): IQueryResult | null => {\n const payload = extractTextPartMeta(part);\n if (payload?.type !== 'query-stream-parsed-info') {\n return null;\n }\n\n const result = payload.result;\n console.log('query result raw data:', result);\n try {\n return JSON.parse(result);\n } catch (e) {\n console.error('invalid query result data');\n return null;\n }\n};\n\nexport const IsFileGroupPart = (part: any) => {\n if (!Array.isArray(part)) {\n return false;\n }\n\n // any one is file part\n for (const p of part) {\n if (p?.type === 'file') {\n return true;\n }\n }\n\n return false;\n};\n\nexport const IsLoadingPart = (part: any): boolean => {\n const payload = extractTextPartMeta(part);\n return payload?.type === 'agent-loading';\n};\n\nexport const GetLoadingMsg = (part: any): string => {\n const payload = extractTextPartMeta(part);\n if (payload?.type !== 'agent-loading') {\n return '';\n }\n\n return payload?.label || '加载中';\n};\n\nexport const GetPartErrMsg = (part: any): string => {\n if (!IsErrorPart(part)) {\n return '';\n }\n\n if (part?.errorText) {\n return part.errorText;\n }\n\n const payload = extractTextPartMeta(part);\n return payload?.error || '未知错误';\n};\n\nexport const getMetaErrorMsg = (part: any): string => {\n if (part?.errorText) {\n return part.errorText;\n }\n\n const payload = extractTextPartMeta(part);\n return payload?.error || '未知错误';\n};\n","const STYLE_INJECTED_ATTR = 'data-shadow-slot-injected';\n\nexport const injectHostStylesIntoShadow = (shadowRoot: ShadowRoot, hostElement: HTMLElement) => {\n if (shadowRoot.querySelector(`[${STYLE_INJECTED_ATTR}]`)) return;\n\n const cloneAndMark = (el: Element) => {\n const cloned = el.cloneNode(true) as HTMLElement;\n cloned.setAttribute(STYLE_INJECTED_ATTR, '');\n shadowRoot.appendChild(cloned);\n };\n\n // Copy <style> and <link rel=\"stylesheet\"> from document.head\n document.head.querySelectorAll('style').forEach(cloneAndMark);\n document.head.querySelectorAll('link[rel=\"stylesheet\"]').forEach(cloneAndMark);\n\n // Walk up through ancestor shadow roots and copy their <style> and <link> elements\n let node: Node | null = hostElement.parentNode;\n while (node) {\n if (node instanceof ShadowRoot) {\n node.querySelectorAll('style').forEach(cloneAndMark);\n node.querySelectorAll('link[rel=\"stylesheet\"]').forEach(cloneAndMark);\n }\n node = node.parentNode;\n }\n};\n","function isStringArray(value: unknown): value is string[] {\n if (!Array.isArray(value)) {\n return false;\n }\n\n return value.every((item) => typeof item === 'string');\n}\n\nfunction isOptionArray(value: unknown): value is Array<{ label: string; value: string }> {\n if (!Array.isArray(value)) {\n return false;\n }\n\n return value.every(\n (item) =>\n typeof item === 'object' &&\n item !== null &&\n 'label' in item &&\n 'value' in item &&\n typeof (item as any).label === 'string' &&\n typeof (item as any).value === 'string'\n );\n}\n\nexport const valueNormalizer = (value: string | string[]): string => {\n if (isStringArray(value)) {\n return value.join(', ');\n }\n\n if (isOptionArray(value)) {\n const values = value.map((item) => item.value);\n return values.join(', ');\n }\n\n return value;\n};\n","import { FieldType, IField } from '@baishuyun/types';\n\nexport const WHITE_LIST_FIELDS_SET = new Set<FieldType>([\n 'password',\n 'textarea',\n 'datetime',\n 'text',\n 'radiogroup',\n 'radio',\n 'combo',\n 'combocheck',\n 'checkboxgroup',\n 'number',\n]);\n\nexport const GetSafeFormStructure = (formStructure: Array<IField>) => {\n if (!Array.isArray(formStructure)) {\n return [];\n }\n\n return formStructure.filter((f) => {\n if (!f.widget) {\n return false;\n }\n\n return WHITE_LIST_FIELDS_SET.has(f.widget.type);\n });\n};\n","import {\n IBsUIAutomationService,\n IField,\n IFilledField,\n IFormAttachment,\n MsgPartCompProps,\n} from '@baishuyun/types';\nimport { extractTextPartMeta } from './text-part';\n\nexport const createPartTypeChecker =\n (type: string) =>\n (part: any): boolean => {\n const payload = extractTextPartMeta(part);\n return payload?.type === type;\n };\n\nexport const createPayloadTypeChecker = (type: string) => (payload: unknown) => {\n const specialPayload = payload as MsgPartCompProps;\n const part = specialPayload?.part;\n const checker = createPartTypeChecker(type);\n\n return checker(part);\n};\n\nexport const createGetFieldJsonInfo =\n (type: string) =>\n (part: any): IFilledField | null => {\n const payload = extractTextPartMeta(part);\n if (payload?.type !== type) {\n return null;\n }\n return payload?.field || null;\n };\n\nexport const createFieldPartsExtractor =\n (isTarget: (part: any) => boolean) =>\n (part: any): any[] => {\n if (Array.isArray(part) && part.length > 0) return part.filter(isTarget);\n if (isTarget(part)) return [part];\n return [];\n };\n\nexport const safeParseJson = (jsonString: string): any | null => {\n if (typeof jsonString !== 'string') {\n return jsonString;\n }\n\n try {\n return JSON.parse(jsonString);\n } catch (e) {\n console.info('[safeParseJson] Failed to parse JSON:', e);\n return null;\n }\n};\n\n/** 附件记录(IFormAttachment)基础校验:有 qnKey 才是平台真实记录 */\nconst isAttachmentRecord = (value: unknown): boolean =>\n Boolean(value && typeof value === 'object' && (value as IFormAttachment).qnKey);\n\n/**\n * 判断字段的填写值是否合法(用于过滤模型输出的无效填写项):\n * - null / undefined / 空字符串 / 空数组 / 空对象一律不合法;\n * - 数字 NaN 不合法;\n * - 附件类字段(upload / image)必须是平台附件记录数组(防模型编造);\n * - signature 为单条附件记录。\n */\nexport const hasValidFieldValue = (field: IField): boolean => {\n const value = field?.widget?.value;\n const type = field?.widget?.type;\n\n if (value === undefined || value === null || value === '') {\n return false;\n }\n\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n\n if (typeof value === 'number' && Number.isNaN(value)) {\n return false;\n }\n\n if (typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length === 0) {\n return false;\n }\n\n if (type === 'signature') {\n return isAttachmentRecord(value);\n }\n\n if (type === 'upload' || type === 'image') {\n return Array.isArray(value) && value.length > 0 && value.every(isAttachmentRecord);\n }\n\n return true;\n};\n\nexport const generateWidgetName = (prefix = '_widget_') => {\n const now = Date.now();\n const timeStr = String(now);\n const totalLen = timeStr.length; // 通常为 13\n const fixedPart = timeStr.slice(0, totalLen - 5); // 保留前 N-5 位\n const randomPart = String(Math.floor(Math.random() * 100000)).padStart(5, '0');\n return `${prefix}${fixedPart}${randomPart}`;\n};\n\nexport const field2config = (field: IField, autoService: IBsUIAutomationService) => {\n return {\n field,\n onLoaded: () => {\n autoService.fillWidget({\n checked: true,\n field,\n });\n },\n onChange: (checked: boolean, instance: IField, parentFieldName: string, rowIndex: number) => {\n const detail = {\n field: instance,\n checked,\n parentFieldName,\n rowIndex,\n };\n\n autoService.fillWidget(detail);\n },\n };\n};\n","export const DATA_COUNT_PER_BATCH = 10;\n","export const imageUrlToBase64 = (url: string, mediaType = 'image/png'): Promise<string> =>\n new Promise((resolve) => {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n const canvas = document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n canvas.getContext('2d')!.drawImage(img, 0, 0);\n resolve(canvas.toDataURL(mediaType));\n };\n img.onerror = () => resolve(url);\n img.src = url;\n });\n","import type {\n FieldType,\n IAgentHelper,\n IFormValues,\n IConditionItem,\n relationalOperator,\n ICondition,\n IBsCondition,\n IBsCondItem,\n ICtxDetail,\n} from '@baishuyun/types';\n\nexport const OPERATOR_LABEL_MAP: Record<relationalOperator, string> = {\n eq: '等于',\n neq: '不等于',\n gt: '大于',\n lt: '小于',\n gte: '大于等于',\n lte: '小于等于',\n contains: '包含',\n not_contains: '不包含',\n in: '等于任意',\n nin: '不等于任意',\n all: '同时包含',\n empty: '为空',\n not_empty: '不为空',\n range: '选择范围',\n like: '模糊匹配',\n unlike: '模糊不匹配',\n};\n\nexport const FIELD_TYPE_OPERATOR_MAP: Record<FieldType, relationalOperator[]> = {\n // Text-like: equality, fuzzy, empty checks\n text: ['eq', 'neq', 'in', 'nin', 'contains', 'not_contains', 'empty', 'not_empty'],\n password: ['eq', 'neq', 'contains', 'not_contains', 'empty', 'not_empty'],\n radiogroup: ['eq', 'neq', 'in', 'nin', 'empty', 'not_empty'],\n radio: ['eq', 'neq', 'empty', 'not_empty'],\n combo: ['eq', 'neq', 'in', 'nin', 'like', 'unlike', 'empty', 'not_empty'],\n sn: ['eq', 'neq', 'in', 'nin', 'contains', 'not_contains', 'empty', 'not_empty'],\n\n // Textarea: fuzzy matching\n textarea: ['eq', 'neq', 'contains', 'not_contains', 'empty', 'not_empty'],\n\n // Number: comparison operators\n number: ['eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'range', 'empty', 'not_empty'],\n\n // DateTime: comparison operators\n datetime: ['eq', 'neq', 'gte', 'lte', 'range', 'empty', 'not_empty'],\n\n // Multi-select: membership, intersection\n checkboxgroup: ['in', 'all', 'eq', 'empty', 'not_empty'],\n combocheck: ['in', 'all', 'eq', 'empty', 'not_empty'],\n\n // User/Dept: equality and membership\n user: ['eq', 'neq', 'in', 'nin', 'empty', 'not_empty'],\n dept: ['eq', 'neq', 'in', 'nin', 'empty', 'not_empty'],\n\n // Groups: membership, intersection, empty\n usergroup: ['in', 'all', 'eq', 'empty', 'not_empty'],\n deptgroup: ['in', 'all', 'eq', 'empty', 'not_empty'],\n\n // Address/Location: intersection\n address: ['in', 'nin', 'empty', 'not_empty'],\n location: ['in', 'nin', 'empty', 'not_empty'],\n\n // Files: empty checks\n upload: ['empty', 'not_empty'],\n image: ['empty', 'not_empty'],\n signature: ['empty', 'not_empty'],\n\n // Flow state\n flowState: ['eq', 'neq', 'empty'],\n flowstate: ['eq', 'neq', 'empty'],\n\n // Link data: combo-like\n linkdata: ['eq', 'neq', 'in', 'nin', 'like', 'unlike', 'empty', 'not_empty'],\n linkquery: ['eq', 'neq', 'in', 'nin', 'like', 'unlike', 'empty', 'not_empty'],\n dataload: ['eq', 'neq', 'in', 'nin', 'like', 'unlike', 'empty', 'not_empty'],\n\n // Formula\n formula: ['eq', 'neq', 'empty', 'not_empty'],\n\n // Display-only: no meaningful operators\n separator: [],\n button: [],\n subform: [],\n unknown: [],\n};\n\nconst DEFAULT_OPERATOR_MAP: Partial<Record<FieldType, relationalOperator>> = {\n text: 'eq',\n password: 'eq',\n radiogroup: 'eq',\n radio: 'eq',\n combo: 'eq',\n sn: 'eq',\n textarea: 'contains',\n number: 'range',\n datetime: 'range',\n checkboxgroup: 'all',\n combocheck: 'all',\n user: 'eq',\n dept: 'eq',\n usergroup: 'all',\n deptgroup: 'all',\n address: 'all',\n location: 'all',\n upload: 'not_empty',\n image: 'not_empty',\n signature: 'not_empty',\n flowState: 'eq',\n flowstate: 'eq',\n linkdata: 'eq',\n linkquery: 'eq',\n dataload: 'eq',\n formula: 'eq',\n};\n\nexport function getAvailableOperators(fieldType?: FieldType): relationalOperator[] {\n if (!fieldType) return [];\n return FIELD_TYPE_OPERATOR_MAP[fieldType] ?? [];\n}\n\nexport function getDefaultOperator(fieldType?: FieldType): relationalOperator {\n if (!fieldType) return 'eq';\n return DEFAULT_OPERATOR_MAP[fieldType] ?? 'eq';\n}\n\n// ── Helpers ────────────────────────────────────────────────────────────────\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return isRecord(value) ? value : null;\n}\n\nfunction isEmpty(value: unknown): boolean {\n if (value === null || value === undefined) return true;\n if (value === '') return true;\n if (Array.isArray(value) && value.length === 0) return true;\n return false;\n}\n\nfunction isEqual(a: unknown, b: unknown): boolean {\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n const sa = a.map(String).sort();\n const sb = b.map(String).sort();\n return sa.every((v, i) => v === sb[i]);\n }\n if (isRecord(a) && isRecord(b)) {\n const ka = Object.keys(a);\n const kb = Object.keys(b);\n if (ka.length !== kb.length) return false;\n return ka.every((k) => String(a[k]) === String(b[k]));\n }\n return String(a) === String(b);\n}\n\nfunction evaluateIn(formValue: unknown, condValue: unknown): boolean {\n if (isRecord(condValue)) {\n const fv = asRecord(formValue);\n if (!fv) return false;\n if (condValue.province !== undefined && String(fv.province) !== String(condValue.province))\n return false;\n if (condValue.city !== undefined && String(fv.city) !== String(condValue.city)) return false;\n if (condValue.district !== undefined && String(fv.district) !== String(condValue.district))\n return false;\n return true;\n }\n const cv = Array.isArray(condValue) ? condValue.map(String) : [];\n if (Array.isArray(formValue)) {\n return formValue.some((v) => cv.includes(String(v)));\n }\n return cv.includes(String(formValue));\n}\n\nfunction evaluateAll(formValue: unknown, condValue: unknown): boolean {\n const cv = Array.isArray(condValue) ? condValue.map(String) : [];\n if (cv.length === 0) return false;\n const fv = Array.isArray(formValue) ? formValue.map(String) : [];\n return cv.every((v) => fv.includes(v));\n}\n\nfunction evaluateRange(formValue: unknown, condValue: unknown): boolean {\n const range = asRecord(condValue);\n if (!range) return false;\n const fv = Number(formValue);\n if (isNaN(fv)) return false;\n if (range.min !== undefined && range.min !== null && fv < Number(range.min)) return false;\n if (range.max !== undefined && range.max !== null && fv > Number(range.max)) return false;\n return true;\n}\n\n// ── Item evaluator ─────────────────────────────────────────────────────────\n\nfunction evaluateConditionItem(item: IConditionItem, formValues: IFormValues): boolean {\n const widgetName = item.field.widget?.widgetName;\n if (!widgetName) return false;\n\n const formValue = formValues[widgetName];\n const { operator, value: condValue } = item;\n\n switch (operator) {\n case 'empty':\n return isEmpty(formValue);\n case 'not_empty':\n return !isEmpty(formValue);\n case 'eq':\n return isEqual(formValue, condValue);\n case 'neq':\n return !isEqual(formValue, condValue);\n case 'contains':\n case 'like':\n return String(formValue).includes(String(condValue));\n case 'not_contains':\n case 'unlike':\n return !String(formValue).includes(String(condValue));\n case 'gt':\n return Number(formValue) > Number(condValue);\n case 'gte':\n return Number(formValue) >= Number(condValue);\n case 'lt':\n return Number(formValue) < Number(condValue);\n case 'lte':\n return Number(formValue) <= Number(condValue);\n case 'in':\n return evaluateIn(formValue, condValue);\n case 'nin':\n return !evaluateIn(formValue, condValue);\n case 'all':\n return evaluateAll(formValue, condValue);\n case 'range':\n return evaluateRange(formValue, condValue);\n default:\n return false;\n }\n}\n\n// ── Public API ─────────────────────────────────────────────────────────────\n\nexport function isHelperCondMet(helper: IAgentHelper, formValues: IFormValues): boolean {\n if (!helper.enabled) {\n return false;\n }\n\n const condition = helper.triggerCondition;\n if (!condition) return true;\n\n const { items, quantifier } = condition;\n if (!items || items.length === 0) return true;\n\n const results = items.map((item) => evaluateConditionItem(item, formValues));\n\n return quantifier === 'any' ? results.some((r) => r) : results.every((r) => r);\n}\n\nexport const isCtxMatch = (helper: IAgentHelper | null, ctx: ICtxDetail | null): boolean => {\n if (helper === null) {\n return false;\n }\n\n if (ctx === null) {\n return false;\n }\n\n if (helper.formId) {\n return ctx.type === 'form' && ctx.params.formId === helper.formId;\n }\n\n if (helper.appId) {\n return (ctx.type === 'app' || ctx.type === 'form') && ctx.params.appId === helper.appId;\n }\n\n // 没有表单 id、应用 id 视为通用,即任意上下文可用\n\n return ctx.type === 'global' || ctx.type === 'app' || ctx.type === 'form';\n};\n\n// ── Operator ↔ Bsy method maps ──────────────────────────────────────────────\n\nconst OPERATOR_TO_BS_METHOD: Record<string, string> = {\n eq: 'eq',\n neq: 'ne',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n contains: 'like',\n not_contains: 'unlike',\n like: 'like',\n unlike: 'unlike',\n in: 'in',\n nin: 'nin',\n all: 'all',\n empty: 'empty',\n not_empty: 'not_empty',\n range: 'range',\n};\n\nconst BS_METHOD_TO_OPERATOR: Record<string, relationalOperator> = {\n eq: 'eq',\n ne: 'neq',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n like: 'like',\n unlike: 'unlike',\n contains: 'like',\n not_contains: 'unlike',\n in: 'in',\n nin: 'nin',\n all: 'all',\n empty: 'empty',\n not_empty: 'not_empty',\n range: 'range',\n};\n\n// ── Public serialization API ────────────────────────────────────────────────\n\nexport function conditionStringify2bsCondition(cond: ICondition): string {\n const rel = cond.quantifier === 'any' ? 'or' : 'and';\n const bsCondItems: IBsCondItem[] = cond.items.map((item) => {\n const method = OPERATOR_TO_BS_METHOD[item.operator] ?? 'eq';\n let value: unknown[];\n if (item.operator === 'range' && isRecord(item.value)) {\n value = [item.value.min, item.value.max];\n } else if (Array.isArray(item.value)) {\n value = item.value;\n } else {\n value = [item.value];\n }\n return {\n field: item.field?.widget?.widgetName ?? '',\n method,\n value,\n type: item.field?.widget?.type,\n };\n });\n return JSON.stringify({ rel, cond: bsCondItems });\n}\n\nexport function bsConditionParse2Condition(str: string): ICondition {\n const bsCond: IBsCondition = JSON.parse(str);\n const quantifier: ICondition['quantifier'] = bsCond.rel === 'or' ? 'any' : 'all';\n const items: IConditionItem[] = bsCond.cond.map((bsItem, index) => {\n const operator = BS_METHOD_TO_OPERATOR[bsItem.method] ?? 'eq';\n let value: unknown = bsItem.value;\n if (operator === 'range') {\n value = { min: bsItem.value[0], max: bsItem.value[1] };\n } else if (\n ['eq', 'neq', 'contains', 'not_contains', 'gt', 'gte', 'lt', 'lte'].includes(operator)\n ) {\n value = bsItem.value[0];\n }\n return {\n id: `${bsItem.field}_${index}`,\n field: {\n label: bsItem.field,\n widget: {\n widgetName: bsItem.field,\n type: (bsItem.type as FieldType) ?? 'unknown',\n value: undefined,\n },\n },\n operator,\n value,\n };\n });\n return { targetName: '', quantifier, items };\n}\n","export function formatLocalDate(date: Date) {\n const pad = (n: string | number) => String(n).padStart(2, '0');\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;\n}\n","export function mergeConsecutiveTargets<T>(\n arr: T[],\n isTarget: (item: T) => boolean,\n minWidth = 1\n): (T | T[])[] {\n // 存储最终结果\n const result: (T | T[])[] = [];\n // 临时收集连续的目标元素\n const temp: T[] = [];\n\n // 遍历原始数组\n for (const item of arr) {\n if (isTarget(item)) {\n // 是目标元素,加入临时数组\n temp.push(item);\n } else {\n // 不是目标元素:先处理临时数组(内联原辅助函数逻辑)\n if (temp.length > 0) {\n // 连续≥ minWidth 个目标元素 → 合并为子数组\n result.push(temp.length >= minWidth ? [...temp] : temp[0]);\n temp.length = 0; // 清空临时数组\n }\n // 将当前非目标元素加入结果\n result.push(item);\n }\n }\n\n // 处理遍历结束后剩余的临时数组(末尾可能全是目标元素)\n if (temp.length > 0) {\n result.push(temp.length >= 2 ? [...temp] : temp[0]);\n }\n\n return result;\n}\n\nexport function flatArr(arr: Array<unknown>): Array<unknown> {\n const result: Array<unknown> = [];\n for (const item of arr) {\n if (Array.isArray(item)) {\n // 递归展开子数组,并把展开后的元素合并到结果中\n result.push(...flatArr(item));\n } else {\n result.push(item);\n }\n }\n return result;\n}\n","/**\n * Mapping from icon font_class name to unicode hex string.\n * Generated from apps/web/public/iconfont.json\n */\nconst ICON_UNICODE_MAP: Record<string, string> = {\n projectdevelopment: 'e914',\n resourcelibrary: 'e915',\n Plugin2: 'e90e',\n Plugin: 'e90f',\n JSON: 'e910',\n Dropdown: 'e911',\n Batchprocessing: 'e912',\n 'Image-text': 'e916',\n Newaddition: 'e917',\n reportforms: 'e918',\n AddFola: 'e919',\n delete: 'e91a',\n AddImage: 'e91b',\n Send: 'e91c',\n text: 'e91d',\n image: 'e91e',\n Star1: 'e91f',\n Ellipse: 'e920',\n 'Ellipse-Copy': 'e921',\n Shape: 'e922',\n 'Shape-Copy': 'e923',\n 'right-line': 'e924',\n 'right-arrow': 'e925',\n 'double-right-arrow': 'e926',\n ellipse: 'e927',\n Rectangle: 'e928',\n 'Rectangle-Copy': 'e929',\n 'Rectangle-Copy-2': 'e92a',\n CombinedShape: 'e92b',\n Line: 'e92c',\n time: 'e92d',\n calendar: 'e92e',\n richsinglelinetext: 'e92f',\n singlelinetext: 'e930',\n multilinetext: 'e931',\n number: 'e932',\n RichText: 'e933',\n image1: 'e934',\n Attachment: 'e935',\n Phone: 'e936',\n Email: 'e937',\n date: 'e938',\n 'Multiple-choice': 'e939',\n Checkbox: 'e93a',\n 'Drop-down': 'e93b',\n positioning: 'e93c',\n Description: 'e93d',\n AutoNumber: 'e93e',\n Address: 'e93f',\n Staff: 'e940',\n Department: 'e941',\n Switch: 'e942',\n Slider: 'e943',\n Currentdate: 'e944',\n Grade: 'e945',\n Barcode: 'e946',\n Subtable: 'e947',\n associatedtable: 'e948',\n Associatedapplication: 'e949',\n Referencefield: 'e94a',\n Uppercasing: 'e94b',\n nodata: 'e94c',\n 'X-mark': 'e94d',\n Copy: 'e94e',\n Correct: 'e94f',\n Save: 'e950',\n Printer: 'e951',\n search: 'e952',\n filter: 'e953',\n Export: 'e954',\n Import: 'e955',\n Customprint: 'e956',\n refresh: 'e957',\n Helpcenter: 'e958',\n Tutorial: 'e959',\n Release: 'e95a',\n more: 'e95b',\n Setup: 'e95c',\n sort: 'e95d',\n Back: 'e95e',\n show: 'e95f',\n hide: 'e960',\n Preview: 'e961',\n Click: 'e962',\n Allcheck: 'e963',\n Cancelcheck: 'e964',\n Likespot: 'e965',\n Favoritespot: 'e966',\n Followspot: 'e967',\n Commentspot: 'e968',\n At: 'e969',\n Pin: 'e96a',\n edit: 'e96b',\n Top: 'e96c',\n Movein: 'e96d',\n Moveout: 'e96e',\n Forward: 'e96f',\n Revoke: 'e970',\n Return: 'e971',\n Link: 'e972',\n Unlink: 'e973',\n Download: 'e974',\n Upload: 'e975',\n Download2: 'e976',\n Upload2: 'e977',\n Comment: 'e978',\n Remind: 'e979',\n Notice: 'e97a',\n Permission: 'e97b',\n SMS: 'e97c',\n QRcode: 'e97d',\n Website: 'e97e',\n Monitoring: 'e97f',\n Api: 'e980',\n Webhook: 'e981',\n Synchronous: 'e982',\n Automation: 'e983',\n Trigger: 'e984',\n Condition: 'e985',\n Success: 'e986',\n Failure: 'e987',\n countdown: 'e988',\n Waiting: 'e989',\n Flow: 'e98a',\n Connection: 'e98b',\n Dashboard: 'e98c',\n chart: 'e98d',\n Piechart: 'e98e',\n BarChart: 'e98f',\n DoubleBarChart: 'e991',\n StackedBarChart: 'e992',\n PercentageStackedBarChart: 'e993',\n LineChart: 'e994',\n areachart: 'e990',\n combinationchart: 'e995',\n Scatterplot: 'e996',\n FunnelChart: 'e997',\n wordcloud: 'e998',\n RadarChart: 'e999',\n PivotTable: 'e99a',\n NumberChart: 'e99b',\n map: 'e99c',\n Timeline: 'e99d',\n Album: 'e99e',\n Kanban: 'e99f',\n Ganttchart: 'e9a0',\n Circle: 'e9a8',\n linesurface: 'e9a1',\n IconStyle: 'e9a2',\n Backgroundcolor: 'e9a3',\n DeleteDe: 'e9a4',\n AlignLeft: 'e9a5',\n AlignCenter: 'e9a6',\n AlignRight: 'e9a7',\n Column: 'e9a9',\n Component: 'e9aa',\n Customcomponent: 'e9ab',\n Title: 'e9ac',\n RichText1: 'e9ad',\n Carousel: 'e9ae',\n PageTab: 'e9af',\n Buriedpoint: 'e9b0',\n Container: 'e9b1',\n QuickStart: 'e9b2',\n Group: 'e9b3',\n Ungroup: 'e9b4',\n Front: 'e9b5',\n Back1: 'e9b6',\n Lock: 'e9b7',\n Unlock: 'e9b8',\n Association: 'e9b9',\n CancelAssociation: 'e9ba',\n Quotation: 'e9bb',\n ViewSet: 'e9bc',\n AutoScale: 'e9bd',\n waterfall: 'e9be',\n watermark: 'e9bf',\n history: 'e9c0',\n Setting: 'e9c1',\n Draftbox: 'e9c2',\n SQL: 'e9c3',\n Workflow: 'e9c4',\n Workflow2: 'e9c5',\n Addone: 'e9c6',\n Formula: 'e9c7',\n Dictionary: 'e9c8',\n statistical: 'e9c9',\n Recycle: 'e9ca',\n Mistake: 'e9cb',\n Tag: 'e9cc',\n Pendingapproval: 'e9cd',\n MyApplication: 'e9ce',\n ApplicationApproval: 'e9cf',\n Initiatedbyme: 'e9d0',\n Copiedtome: 'e9d1',\n Approvalnode: 'e9d2',\n Fillnode: 'e9d3',\n cc: 'e9d4',\n Image1: 'e9d5',\n Open: 'e9d6',\n Color: 'e9d7',\n Right: 'e9d8',\n Backward: 'e9d9',\n dataanalysis: 'e9da',\n Filter2: 'e9db',\n Freefilter: 'e9dc',\n Conditionfilter: 'e9dd',\n Quickfilter: 'e9de',\n Export1: 'e9df',\n Attachmentpreview: 'e9e0',\n BulkEdit: 'e9e1',\n Calculationrows: 'e9e2',\n SingleSelect: 'e9e3',\n dataview: 'e9e4',\n Dataid: 'e9e5',\n Divide: 'e9e6',\n Progress: 'e9e7',\n Star: 'e9e8',\n Contacts: 'e9e9',\n Activity: 'e9ea',\n Minus: 'e9eb',\n Plussign: 'e9ec',\n 'Plussign-Copy': 'e9ed',\n Increased: 'e9ee',\n Decline: 'e9ef',\n indeterminate: 'e9f0',\n Decline1: 'e9f1',\n personal: 'e9f2',\n Warning: 'e9f3',\n Warning2: 'e9f4',\n Prompt: 'e9f5',\n info: 'e9f6',\n Cancel: 'e9f7',\n question1: 'e9f8',\n Question: 'e9f9',\n exclamation: 'e9fa',\n Warning1: 'e9fb',\n True: 'e9fc',\n Suspended: 'e9fd',\n Suspended1: 'e9fe',\n Suspended2: 'e9ff',\n Error: 'ea00',\n CombinedShape2: 'ea01',\n Delete1: 'ea02',\n Circle1: 'ea03',\n Decline2: 'ea04',\n Decline3: 'ea05',\n add: 'ea06',\n Addto: 'ea07',\n Reduce: 'ea08',\n Subtract: 'ea09',\n Addition: 'ea0a',\n Multiplication: 'ea0b',\n Division: 'ea0c',\n Bracket: 'ea0d',\n Reduce1: 'ea0e',\n Search: 'ea0f',\n Favorites: 'ea10',\n Annotation: 'ea11',\n Application: 'ea12',\n Application2: 'ea13',\n Applicationsview: 'ea14',\n Publish: 'ea15',\n Deploy: 'ea16',\n Sidetoplowerside: 'ea17',\n Narrow: 'ea18',\n Backtothenavigation: 'ea19',\n Forwardtothenavigation: 'ea1a',\n Return1: 'ea1b',\n Transfer: 'ea1c',\n Log: 'ea1d',\n table: 'ea1e',\n Form: 'ea1f',\n Openfield: 'ea20',\n Closefield: 'ea21',\n Receive: 'ea22',\n Fill: 'ea23',\n Fill1: 'ea24',\n fillet: 'ea25',\n rightangle: 'ea26',\n round: 'ea27',\n Send1: 'ea28',\n Map: 'ea29',\n Upward: 'ea2a',\n Move: 'ea2b',\n Downward: 'ea2c',\n drag: 'ea2d',\n TextIcon: 'ea2e',\n Narrow1: 'ea2f',\n Enlarge: 'ea30',\n Enlarge2: 'ea31',\n Cancel1: 'ea32',\n Retract: 'ea33',\n Expand: 'ea34',\n Retract1: 'ea35',\n Expand1: 'ea36',\n Retract2: 'ea37',\n Expand2: 'ea38',\n Switch1: 'ea39',\n Fullscreen: 'ea3a',\n Offscreen: 'ea3b',\n Notvisible: 'ea3c',\n Visible: 'ea3d',\n Adjust: 'ea3e',\n PC: 'ea3f',\n Mobile: 'ea40',\n Pad: 'ea41',\n Scanthecode: 'ea42',\n Scan: 'ea43',\n Screenshot: 'ea44',\n Rotation: 'ea45',\n voice: 'ea46',\n Video: 'ea47',\n Location: 'ea48',\n Clock: 'ea49',\n Print: 'ea4a',\n Member: 'ea4b',\n WorkWeChat: 'ea4c',\n DingTalk: 'ea4d',\n EnterpriseWeChat2: 'ea4e',\n Groupmanagement: 'ea4f',\n Feishu: 'ea50',\n Stationletter: 'ea51',\n Email1: 'ea52',\n WeChat: 'ea53',\n ServiceAccount: 'ea54',\n Subscribed: 'ea55',\n Dingtalk: 'ea56',\n Information: 'ea57',\n Assistant: 'ea58',\n ai: 'ea59',\n Inquireabout: 'ea5a',\n IFrame: 'ea5b',\n Integratio: 'ea5c',\n close: 'ea5d',\n Close: 'ea5e',\n Addgroup: 'ea5f',\n deletegroup: 'ea60',\n Relateddata: 'ea61',\n Enlarge1: 'ea62',\n Narrow2: 'ea63',\n 'map-search': 'ea64',\n Corner: 'ea65',\n text1: 'ea66',\n Onlinemap: 'ea67',\n Maptile: 'ea68',\n Dataexport: 'ea69',\n // 文件类型图标(码位对齐 baishu font-icon.less 的 icon-bsy-* 文件图标,\n // 渲染时需使用 icon-bsy-form 字体类,见 ai-design/font-icon.tsx 的 fontCls)\n 'bsy-ppt': 'e8c8',\n 'bsy-pptx': 'e8cf',\n 'bsy-doc': 'e8ca',\n 'bsy-docx': 'e8c7',\n 'bsy-xls': 'e8d0',\n 'bsy-xlsx': 'e8c5',\n 'bsy-zip': 'e8cb',\n 'bsy-rar': 'e8d3',\n 'bsy-csv': 'e8cc',\n 'bsy-txt': 'e8cd',\n 'bsy-pdf': 'e8ce',\n 'bsy-mp4': 'e8c6',\n 'bsy-webm': 'e8d1',\n 'bsy-ogg': 'e8d2',\n 'bsy-mov': 'e983',\n 'bsy-gif': 'e8fd',\n 'bsy-jpg': 'e8fe',\n 'bsy-jpeg': 'e8ff',\n 'bsy-png': 'e900',\n 'bsy-other': 'e8c9',\n richtext: 'ea73',\n Onlinemap1: 'ea74',\n Maptile1: 'ea75',\n Ai2: 'ea76',\n Guide: 'ea77',\n Button: 'ea78',\n Menus: 'ea79',\n 'richtext-Copy': 'ea7a',\n 'richtext-Copy-2': 'ea7b',\n 'richtext-Copy-3': 'ea7c',\n 'richtext-Copy-4': 'ea7d',\n Split: 'ea7e',\n AI: 'ea7f',\n Form1: 'ea80',\n Fields: 'ea81',\n Project: 'ea82',\n More1: 'ea83',\n Notstarted: 'ea84',\n Inprocess: 'ea85',\n Completed: 'ea86',\n Completed1: 'ea87',\n More2: 'ea88',\n AIoffice: 'ea89',\n statistics: 'ea8a',\n Expand3: 'ea8b',\n list: 'ea8c',\n 'list-Copy': 'ea8d',\n Grid: 'ea8e',\n Calendar: 'ea8f',\n Schedule: 'ea90',\n tableview: 'ea91',\n Gallery: 'ea92',\n Copy1: 'ea93',\n Mailbox: 'ea94',\n Automation1: 'ea95',\n Avatar: 'ea96',\n};\n\n/**\n * Look up the unicode hex string for an icon by its font_class name.\n * Returns undefined if the icon name is not found.\n *\n * @param name - The icon font_class name (e.g. \"search\", \"edit\", \"ai\")\n * @returns The unicode hex string (e.g. \"e952\"), or undefined\n *\n * @example\n * getIconUnicode(\"search\") // \"e952\"\n * getIconUnicode(\"ai\") // \"ea59\"\n */\nexport function getIconUnicode(name: string): string | undefined {\n const code = ICON_UNICODE_MAP[name];\n return code ? `&#x${code};` : undefined;\n}\n","import { IField, IValueFormHuman } from '@baishuyun/types';\nimport { flatArr } from './array';\n\n// input eg: '${_widget_1782471976291} ${_widget_1782471978145} ahahah'\n// output: '供应商名称 备注 ahahah'\nexport const promptParser = (\n originStrWithFieldNameTpl: string,\n formStructure: Array<IField>,\n widgetValueGetter: (name: string) => IValueFormHuman\n): IValueFormHuman => {\n if (!widgetValueGetter) {\n return {\n translated: '',\n };\n }\n\n const widgetMap = new Map(formStructure.map((f) => [f.widget.widgetName, f.label]));\n\n for (const field of formStructure) {\n if (field.widget.type === 'subform' && field.widget.items) {\n for (const item of field.widget.items) {\n if ('widget' in item && !('options' in item)) {\n const key = `${field.widget.widgetName}.${item.widget.widgetName}`;\n widgetMap.set(key, item.label);\n }\n }\n }\n }\n\n const metaPart: Array<unknown> = [];\n\n const stringPart = originStrWithFieldNameTpl.replace(\n /\\$\\{(_widget_\\d+(?:\\._widget_\\d+)?)\\}/g,\n (_, widgetName) => {\n const { translated, meta } = widgetValueGetter(widgetName);\n\n if (meta) {\n metaPart.push(meta);\n }\n\n return translated;\n }\n );\n\n return {\n meta: metaPart.length ? flatArr(metaPart) : null,\n translated: (stringPart ?? '').trim(),\n };\n};\n","const REG_EX_MAP: Record<string, string> = {\n 手机号码: \"^((\\\\(\\\\d{2,3}\\\\))|(\\\\d{3}\\\\-))?1\\\\d{10}$\",\n 电话号码: \"^(0[0-9]{2,3}\\\\-)?([2-9][0-9]{6,7})+(\\\\-[0-9]{1,4})?$\",\n 邮政编码: \"^\\\\d{6}$\",\n 身份证号码: \"(^\\\\d{15}$)|(^\\\\d{18}$)|(^\\\\d{17}(\\\\d|X|x)$)\",\n 邮箱: \"^([a-zA-Z0-9_\\\\.\\\\-])+\\\\@(([a-zA-Z0-9\\\\-])+\\\\.)+([a-zA-Z0-9]{2,4})+$\",\n 时分: \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 时分秒:\n \"(^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$)\",\n 图片链接: \"imageurl\",\n 二维码图片: \"qrcode\",\n 条形码图片: \"barcode\",\n 自定义: \"custom\",\n};\n\nexport const rebuildText = (truncatedJson: unknown) => {\n const { widget, labelStyle, label, ...rest } = (truncatedJson as any) || {};\n\n const regex = REG_EX_MAP[labelStyle] || \"\";\n return {\n widget: {\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n // triggerEvent: 0,\n customCls: null,\n height: 34,\n width: 350,\n text: null,\n value: \"\", //默认值 没有默认值的话 整个value不存在\n enable: true,\n visible: true,\n // hint: placeholder,\n allowBlank: true,\n rely: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex, //格式 ^((\\(\\d{2,3}\\))|(\\d{3}\\-))?1\\d{10}$ 手机号码 ^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$ 电话号码 ^\\d{6}$ 邮政编码 (^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$) 身份证号码 ^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$ 邮箱 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分 (^[0-1]{1}[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[2]{1}[0-3]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$|^[0-9]{1}:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$) 时分秒 imageurl 图片链接 qrcode 二维码图片 barcode 条形码图片 custom 自定义\n noRepeat: true,\n scan: null,\n // textMode,\n generateQR: false,\n eventAlert: true,\n alertinfo: {\n icon: \"error\",\n // tip: placeholder,\n // msg: placeholder,\n },\n enterClearText: true,\n ...widget,\n regex,\n type: \"text\",\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const buildWidgetName: (prefix?: string, index?: number) => string = (\n prefix: string = \"_widget\",\n index?: number,\n) => {\n const baseName = `${prefix}_${Date.now()}`;\n\n if (index === undefined) {\n return baseName;\n }\n\n const idxLength = index.toString().length;\n const slicedBaseName = baseName.slice(0, -idxLength);\n\n return `${slicedBaseName}${index}`;\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildNumber = (value: unknown): unknown => {\n const { widget, label, ...rest } = (value as any) || {};\n return {\n widget: {\n type: \"number\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n // regex,\n // hint: placeholder,\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n allowDecimals: true, //允许小数,默认值 true,已废弃\n allowNegative: true, //允许负数,默认值 true ,已废弃\n // maxNumber: max, //限定数值范围 最大值\n // minNumber: min, //限定数值范围 最小值\n displayMode: \"percent\", // 新的格式, percent 百分比 number 数值\n precision: null, //保留小数位数\n thousandsSeparator: false, //显示千分符\n notround: true, //不四舍五入\n format: \"\", //旧的格式,新的由多个属性来控制,前端代码会用其他几个参数拼接出正确的这个值。 其中结尾有% 代表百分比 ,没有%代表数字 ,然后小数点后面的0的个数代表 保留的小数位数,如果小数点后面没有0代表(如0.%),代表没有设置 保留小数位数,保留用户输入的所有小数\n afterSuffix: {\n //单位\n zh_cn: \"\", //中文的\n en_us: \"\", //英文的\n zh_tw: \"\", //繁体的\n },\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildSelect = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combo\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n mode: 1,\n allowAddLinkData: false,\n // items: options,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const rebuildRadioGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n // items: options,\n layout: \"vertical\",\n stopCancel: false,\n widgetName: `_widget_${Date.now()}`,\n widgetNameAlias: \"\",\n customCls: null,\n value: null,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n ...widget,\n type: \"radiogroup\",\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n labelStyle: label,\n };\n};\n","export const rebuildDatetime = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"datetime\",\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n widgetName: `_widget_${Date.now()}`,\n\n widgetNameAlias: \"\",\n customCls: null,\n value: \"today\", //默认值, today 填写当前时间 ,如果是数字,如 1762957800000 ,是自定义的时间,为所选时间的时间戳的毫秒级,\n rely: null,\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n hint: \"\",\n dateLimit: {\n //日期范围\n week: {\n //可选择星期\n enable: false, //是否开启可选择星期\n value: [\n //星期 星期一到天,用1-7代表\n 1, 2, 6,\n ],\n },\n start: {\n //最早可选时间\n enable: false, //是否开启最早可选时间\n mode: \"dynamic\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: \"yesterday\", //限定的值: today 今天 yesterday 昨天 tomorrow 明天 7day_before 七天前 7day_after 七天后 30day_before 30天前 30day_after 30天后\n },\n end: {\n //最晚可选时间\n enable: false, //是否开启最晚可选时间\n mode: \"static\", //模式: dynamic 动态 static 固定值 fieldValue 字段值\n value: 1762093800000, //限定的值:这种数字的为 选择的固定值,时间的时间戳,毫秒级别 ,如果为 _widget_1762154537014 这种,为字段的值,这个字段需要也是日期字段,和当前这个字段是同一个 format的\n },\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","export const defaultBuilder = (truncatedJson: unknown) => {\n return truncatedJson;\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildDeptGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"deptgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildSn = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: 'sn',\n widgetName: buildWidgetName(),\n widgetNameAlias: '',\n triggerEvent: 0,\n customCls: null,\n width: 350,\n enable: true,\n visible: true,\n // rules: rules,\n importMode: 1, //导入模式 1 excel末尾递增 2 excel最大值递增 3 excel/表单最大值比较递增\n ...widget,\n rules: [\n {\n chars: 'sn-',\n type: 'fixedChars',\n },\n {\n digitsNum: 5,\n fixedLength: true,\n resetDuration: 'none',\n startValue: 1,\n type: 'incNumber',\n },\n ],\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildDept = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dept\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildUserGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"usergroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildDataLinker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: {\n widgets: [],\n },\n linkFilter: {},\n allowAdd: true, //允许新增关联表数据\n refType: \"form\", //关联表的类型,只能是form\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkdata\",\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nconst tmpMapFields2Fields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any, index: number) => {\n return {\n id: index,\n\n // name: \"_widget_1761976674767\",\n // form: \"a2f34ef882158a3e97da4ef7\",\n // tag: buildWidgetName(\"f_\", index),\n\n title: mf.field,\n text: mf.field,\n icon: `icon-widget-${mf.type}`,\n type: mf.type,\n isEditable: true,\n group: \"dimension,filter,select\",\n formula: \"\",\n };\n });\n};\n\nconst tmpMapFields2MapFields = (mapFieldsFromTruncatedJson: unknown[]) => {\n if (!mapFieldsFromTruncatedJson || !mapFieldsFromTruncatedJson.length) {\n return mapFieldsFromTruncatedJson;\n }\n\n return mapFieldsFromTruncatedJson.map((mf: any) => {\n return {\n mode: \"depend\",\n ...mf,\n };\n });\n};\n\nexport const rebuildDataLoader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"dataload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 350,\n text: label,\n enable: true,\n visible: true,\n allowBlank: true,\n allowAddData: true, // 允许新增数据源数据\n ...widget,\n mode: \"list\", //一直是 list 应该是废弃的\n loaddataconfig: {\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n dataloadmode: [\"add\", \"cover\"],\n filter: {\n cond: [],\n rel: \"and\",\n },\n defaultSort: [],\n treeFields: {},\n mode: \"list\",\n selectFields: [],\n triggerControl: null,\n triggerWidget: null,\n triggerFieldMode: \"none\",\n triggerField: null,\n forms: widget?.loaddataconfig?.forms,\n selectArg: [],\n selectRel: \"and\",\n fields: tmpMapFields2Fields(widget?.loaddataconfig?.mapFields),\n mapFields: tmpMapFields2MapFields(widget?.loaddataconfig?.mapFields),\n },\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildUser = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"user\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: \"34\",\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n limit: {},\n limitWidget: null, //可选范围 由部门字段确定,如果有值 是 _widget_1762226067008 这种,另一个部门字段的id。和limit互斥,limit将为[]\n valueOption: 0,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildSignature = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"signature\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n rely: null,\n ...widget,\n labelStyle: label,\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildImage = (truncatedJson: unknown) => {\n const { widget, label, ...rest }: any = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"image\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 100,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: false,\n online_edit_record: false,\n fileType: [\n //支持上传的类型,默认,不可以设置\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"gif\",\n \"bmp\",\n \"tif\",\n ],\n compressed: true, //三方图片压缩\n wxOriginalComponent: true, //微信/企业微信原生拍照模式\n onlyCamera: false, //仅允许拍照上传\n preview: true, //是否可以预览 默认 不可以设置\n watermarkSwitch: true, //水印属性\n watermarkPosition: \"center\", //水印位置\n watermarkFieldTitle: true, //是否显示水印字段标题\n watermarkSize: \"14\", //水印字体大小 不可以设置\n watermarkFixedField: {},\n previewWidth: 450, //预览的宽 默认 不可以设置\n previewHeight: 450, //预览的高 默认 不可以设置\n browserCompress: true, //浏览器图片压缩\n quality: 0.7, //压缩图片比例,开启 浏览器图片压缩 后才能设置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildUploader = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"upload\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n maxFileCount: 50, //允许多文件上传 1为不可以 50为可以\n download: true, //打包下载\n is_file_down: true, //操作权限 可下载\n check_image_exif: true, //照片支持查看EXIF扩展信息\n online_edit: true, //允许文档在线编辑\n online_edit_record: true, //是否查看协作记录\n fileSizeLimit: 10485760, //设置单个文件大小上限,单位是字节,范围 1M-20M\n // fileType,\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildCheckboxGroup = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"checkboxgroup\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n layout: \"vertical\",\n allowAddOptions: false, //允许成员填写时添加新选项\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildLine = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"separator\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 12,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildComboChecker = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"combocheck\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n height: 34,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n colorEnable: true, //颜色 是否开启颜色\n mode: \"\",\n allowAddOptions: false, //允许成员填写时添加新选项\n allowAddLinkData: false,\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildLocation = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n type: \"location\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n adjustable: true, //允许移动端微调\n lnglatVisible: true, //显示经纬度坐标\n autoLocation: true, //移动端自动触发定位\n enablePcLocation: true, //允许PC端定位并选择位置\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildTextarea = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n return {\n widget: {\n type: \"textarea\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: false,\n customCls: null,\n height: 140,\n width: 734,\n value: \"\",\n enable: true,\n visible: true,\n allowBlank: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n noRepeat: false,\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n autoHeight: true, //根据内容自适应高度\n maxLength: 5000, //限制输入最大字符数 不限制的话,整个maxLength不存在\n ...widget,\n labelStyle: label,\n },\n // description,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildButton = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"button\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n triggerEvent: 0,\n customCls: null,\n height: 36,\n width: 350,\n enable: true,\n visible: true,\n allowBlank: false,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n funMode: \"popupreport\",\n },\n background: {\n //颜色\n mode: \"color\",\n position: \"center\",\n },\n mode: \"all\", //模式 all 扩展 popupreport 弹出报表 popupform 弹出表单 print 页面打印 popuppage 弹出外部网页\n theme: \"default\", //风格 default 默认,有边框有底色 style1 有边框无底色 none 无边框无底色\n eventAlert: false, //是否显示提醒框\n alertinfo: {\n icon: \"success\",\n tip: \"请设置提示内容\",\n },\n\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildAddress = (truncatedJson: unknown = {}) => {\n const { widget, label, ...rest } = truncatedJson as any;\n\n return {\n widget: {\n type: \"address\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n width: 720,\n enable: true,\n visible: true,\n funMode: \"module\",\n module: null,\n libs: [],\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n needDetail: true,\n eventMode: 1, //公式联动触发模式 1 默认,省市县/详细地址内容改变都触发 2 只有省市县改变才触发 3 只有详细地址改变才触发\n seleceMapAddress: true, //开启经纬度定位\n ...widget,\n labelStyle: label,\n },\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { rebuildFieldsJsonStructure } from \".\";\nimport { buildWidgetName } from './build-widget-name';\n\nexport const rebuildSubform = (originObj: unknown = {}) => {\n const { widget, label, ...rest } = originObj as any;\n return {\n widget: {\n type: \"subform\",\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n labelStyle: label,\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n version: 1,\n },\n items: (widget.items || []).map((item: any, index: number) => {\n const result = rebuildFieldsJsonStructure(item, true);\n\n result.widget.widgetName = buildWidgetName(\"_widget\", index);\n\n return result;\n }),\n sortable: true, //启用子表单数据排序\n allowImportV2: false, //从excel导入数据\n sticky_column: {\n //PC端冻结前 n 列\n limit: 2, //多少列 范围 1-3\n enable: true, //是否开启\n },\n sticky_column_mobile: {\n //移动端冻结前 n 列\n limit: 1, //多少列 范围 1-3\n enable: true, //是否开启\n },\n mobileStyle: \"table\", //移动端显示样式 list 纵向展开 table 横向表格\n subform_create: true, //可新增记录\n subform_insert: true, //可插入记录\n subform_edit: true, //可编辑已有记录\n subform_delete: true, //可删除已有记录\n subform_fill: true, //允许填报数据\n subform_import: true, //允许导入数据\n subform_dataload: true, //允许数据加载\n loaddataconfig: {\n //数据加载设置\n mode: \"tree\",\n extendSet: {\n sort: [\"datahelp\", \"module\", \"formEvent\"],\n status: true,\n triggerField: \"\",\n triggerFieldMode: \"none\",\n },\n },\n allowLoadData: false, //是否开启数据加载\n allowAddData: true, //允许新增数据源数据\n subformloaddataTitle: \"数据加载\", //数据加载显示的标题\n subFieldShowRules: [], //子字段显隐规则\n quick_fill: true, //从excel填报数据\n },\n description: null,\n label,\n lineWidth: 12,\n tab: null,\n };\n};\n","import { buildWidgetName } from './build-widget-name';\n\nexport const rebuildDataQuery = (truncatedJson: unknown) => {\n const { widget, label, ...rest } = (truncatedJson as any) || {};\n\n return {\n widget: {\n widgetName: buildWidgetName(),\n widgetNameAlias: \"\",\n customCls: null,\n enable: true,\n visible: true,\n allowBlank: true,\n linkFilter: {},\n rely: {\n widgets: [],\n },\n showMode: \"one\", //显示数据条数 one 一条 many 多条\n allowAdd: true, //允许新增关联表数据,只有 refType 为 form才可以选择true\n refType: \"form\", //关联表的类型,根据 linkForm 表的类型决定的。 form 表单 etl_table 视图 aggregate_table 聚合表\n showType: \"none\", //数据显示模式 none 默认 label 标题\n addExtendSet: [],\n ...widget,\n linkFields: [],\n labelStyle: label,\n type: \"linkquery\",\n },\n description: null,\n label,\n lineWidth: 6,\n tab: null,\n ...rest,\n };\n};\n","import { IField, type FieldType } from '@baishuyun/types';\nimport { rebuildText } from './rebuild-text';\nimport { rebuildNumber } from './rebuild-number';\nimport { rebuildSelect } from './rebuild-select';\nimport { rebuildRadioGroup } from './rebuild-radio-group';\nimport { rebuildDatetime } from './rebuild-date-time';\nimport { defaultBuilder } from './default-builder';\nimport { rebuildDeptGroup } from './rebuild-dept-group';\nimport { rebuildSn } from './rebuild-sn';\nimport { rebuildDept } from './rebuild-dept';\nimport { rebuildUserGroup } from './rebuild-user-group';\nimport { rebuildDataLinker } from './rebuild-data-linker';\nimport { rebuildDataLoader } from './rebuild-data-loader';\nimport { rebuildUser } from './rebuild-user';\nimport { rebuildSignature } from './rebuild-signature';\nimport { rebuildImage } from './rebuild-image';\nimport { rebuildUploader } from './rebuild-upload';\nimport { rebuildCheckboxGroup } from './rebuild-checkbox-group';\nimport { rebuildLine } from './rebuild-line';\nimport { rebuildComboChecker } from './rebuild-combo-checker';\nimport { rebuildLocation } from './rebuild-location';\nimport { rebuildTextarea } from './rebuild-textarea';\nimport { rebuildButton } from './rebuild-button';\nimport { rebuildAddress } from './rebuild-address';\nimport { rebuildSubform } from './rebuild-subform';\nimport { rebuildDataQuery } from './rebuild-data-query';\nimport { generateWidgetName } from '../field-json';\n\n/**\n * 字段类型重建工具映射\n */\nconst RebuilderMap: Record<FieldType, (origin: unknown) => unknown> = {\n address: rebuildAddress,\n button: rebuildButton,\n textarea: rebuildTextarea,\n datetime: rebuildDatetime,\n text: rebuildText,\n password: rebuildText,\n location: rebuildLocation,\n radiogroup: rebuildRadioGroup,\n radio: rebuildRadioGroup,\n combo: rebuildSelect,\n combocheck: rebuildComboChecker,\n separator: rebuildLine,\n checkboxgroup: rebuildCheckboxGroup,\n upload: rebuildUploader,\n number: rebuildNumber,\n image: rebuildImage,\n signature: rebuildSignature,\n user: rebuildUser,\n dataload: rebuildDataLoader,\n linkdata: rebuildDataLinker,\n linkquery: rebuildDataQuery,\n usergroup: rebuildUserGroup,\n subform: rebuildSubform,\n dept: rebuildDept,\n sn: rebuildSn,\n deptgroup: rebuildDeptGroup,\n flowState: defaultBuilder,\n flowstate: defaultBuilder,\n formula: defaultBuilder,\n unknown: defaultBuilder,\n};\n\n/**\n * 补全字段表示的 json 结构\n */\nexport const rebuildFieldsJsonStructure = (\n truncatedJson: Partial<IField>,\n subItemsOnly = false\n) => {\n // 校验基础结构\n if (!truncatedJson || !truncatedJson.widget || !truncatedJson.widget.type) {\n return truncatedJson;\n }\n\n // 根据字段类型选择对应的重建器\n const fieldType = (truncatedJson.widget.type as FieldType) || 'unknown';\n\n // 防止子表单内出现子表单字段,导致无限递归\n if (subItemsOnly && fieldType === 'subform') {\n return defaultBuilder(truncatedJson);\n }\n\n // 名称校验\n const isValidWidgetName = (truncatedJson?.widget?.widgetName ?? '').startsWith('_widget_');\n if (!isValidWidgetName) {\n // truncatedJson.widget.widgetName = `_widget_${Date.now()}`;\n truncatedJson.widget.widgetName = generateWidgetName();\n }\n\n const rebuilder = RebuilderMap[fieldType] || defaultBuilder;\n\n // 执行重建\n return rebuilder(truncatedJson);\n};\n","import { IChatCtx } from \"@baishuyun/types\";\n\nexport const getChatCtxForHuman = (ctx: IChatCtx) => {\n if (!ctx) {\n return '';\n }\n\n if (!ctx.corp?.name) {\n return '';\n }\n\n if (!ctx.user?.nickname) {\n return '';\n }\n\n return `${ctx.corp?.name} ${ctx.user?.nickname}(${ctx.user?.username}) ${ctx.appName ?? \"\"} ${ctx.entryName ?? \"\"} ${ctx.agentName ?? \"\"}`;\n}"],"names":["extractTextPartMeta","part","payload","e","IsErrorPart","IsFakeMsgPart","IsFilePart","IsQueryResultPart","GetQueryResult","result","IsFileGroupPart","p","IsLoadingPart","GetLoadingMsg","GetPartErrMsg","getMetaErrorMsg","STYLE_INJECTED_ATTR","injectHostStylesIntoShadow","shadowRoot","hostElement","cloneAndMark","el","cloned","node","isStringArray","value","item","isOptionArray","valueNormalizer","WHITE_LIST_FIELDS_SET","GetSafeFormStructure","formStructure","f","createPartTypeChecker","type","createPayloadTypeChecker","specialPayload","createGetFieldJsonInfo","createFieldPartsExtractor","isTarget","safeParseJson","jsonString","isAttachmentRecord","hasValidFieldValue","field","_a","_b","generateWidgetName","prefix","now","timeStr","totalLen","fixedPart","randomPart","field2config","autoService","checked","instance","parentFieldName","rowIndex","detail","DATA_COUNT_PER_BATCH","imageUrlToBase64","url","mediaType","resolve","img","canvas","OPERATOR_LABEL_MAP","FIELD_TYPE_OPERATOR_MAP","DEFAULT_OPERATOR_MAP","getAvailableOperators","fieldType","getDefaultOperator","isRecord","asRecord","isEmpty","isEqual","a","b","sa","sb","v","i","ka","kb","k","evaluateIn","formValue","condValue","fv","cv","evaluateAll","evaluateRange","range","evaluateConditionItem","formValues","widgetName","operator","isHelperCondMet","helper","condition","items","quantifier","results","r","isCtxMatch","ctx","OPERATOR_TO_BS_METHOD","BS_METHOD_TO_OPERATOR","conditionStringify2bsCondition","cond","rel","bsCondItems","_c","_d","_e","_f","method","bsConditionParse2Condition","str","bsCond","bsItem","index","formatLocalDate","date","pad","n","mergeConsecutiveTargets","arr","minWidth","temp","flatArr","ICON_UNICODE_MAP","getIconUnicode","name","code","promptParser","originStrWithFieldNameTpl","widgetValueGetter","widgetMap","key","metaPart","stringPart","_","translated","meta","REG_EX_MAP","rebuildText","truncatedJson","widget","labelStyle","label","rest","regex","buildWidgetName","baseName","idxLength","rebuildNumber","rebuildSelect","rebuildRadioGroup","rebuildDatetime","defaultBuilder","rebuildDeptGroup","rebuildSn","rebuildDept","rebuildUserGroup","rebuildDataLinker","tmpMapFields2Fields","mapFieldsFromTruncatedJson","mf","tmpMapFields2MapFields","rebuildDataLoader","rebuildUser","rebuildSignature","rebuildImage","rebuildUploader","rebuildCheckboxGroup","rebuildLine","rebuildComboChecker","rebuildLocation","rebuildTextarea","rebuildButton","rebuildAddress","rebuildSubform","originObj","rebuildFieldsJsonStructure","rebuildDataQuery","RebuilderMap","subItemsOnly","getChatCtxForHuman","_g","_h"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../src/condition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EAEX,kBAAkB,EAClB,UAAU,EAGV,UAAU,EACX,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAejE,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAwD3E,CAAC;AA+BF,wBAAgB,qBAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,kBAAkB,EAAE,CAGjF;AAED,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,kBAAkB,CAG5E;AAmHD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,GAAG,OAAO,CActF;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,YAAY,GAAG,IAAI,EAAE,KAAK,UAAU,GAAG,IAAI,KAAG,OAoBhF,CAAC;AAwCF,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAoBvE;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CA4BlE"}
1
+ {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../src/condition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EAEX,kBAAkB,EAClB,UAAU,EAGV,UAAU,EACX,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAiBjE,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAwD3E,CAAC;AA+BF,wBAAgB,qBAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,kBAAkB,EAAE,CAGjF;AAED,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,kBAAkB,CAG5E;AAqHD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,GAAG,OAAO,CActF;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,YAAY,GAAG,IAAI,EAAE,KAAK,UAAU,GAAG,IAAI,KAAG,OAoBhF,CAAC;AA4CF,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAoBvE;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CA4BlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"iconfont.d.ts","sourceRoot":"","sources":["../src/iconfont.ts"],"names":[],"mappings":"AA+YA;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/D"}
1
+ {"version":3,"file":"iconfont.d.ts","sourceRoot":"","sources":["../src/iconfont.ts"],"names":[],"mappings":"AA4ZA;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baishuyun/ai-feat-utils",
3
- "version": "2.0.31",
3
+ "version": "2.0.33",
4
4
  "description": "Shared utility functions for AI feature plugins",
5
5
  "type": "module",
6
6
  "main": "dist/ai-feat-utils.js",
@@ -16,7 +16,7 @@
16
16
  "dist/**/*"
17
17
  ],
18
18
  "dependencies": {
19
- "@baishuyun/types": "3.0.29"
19
+ "@baishuyun/types": "3.0.30"
20
20
  },
21
21
  "devDependencies": {
22
22
  "rimraf": "^6.1.2",