@baishuyun/ai-feat-utils 2.0.35 → 2.0.36

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.
@@ -10,7 +10,7 @@ const d = (e) => {
10
10
  console.error("invalid raw data");
11
11
  }
12
12
  return t || e.providerMetadata.raw.data;
13
- }, C = (e) => {
13
+ }, _ = (e) => {
14
14
  if ((e == null ? void 0 : e.type) === "error")
15
15
  return !0;
16
16
  const t = d(e);
@@ -46,7 +46,7 @@ const d = (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) => {
49
- if (!C(e))
49
+ if (!_(e))
50
50
  return "";
51
51
  if (e != null && e.errorText)
52
52
  return e.errorText;
@@ -90,10 +90,10 @@ const Ae = (e) => N(e) ? e.join(", ") : M(e) ? e.map((r) => r.value).join(", ")
90
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
- }, _e = (e) => (t) => {
93
+ }, Ce = (e) => (t) => {
94
94
  const r = t, n = r == null ? void 0 : r.part;
95
95
  return x(e)(n);
96
- }, Ce = (e) => (t) => {
96
+ }, _e = (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;
99
99
  }, Ne = (e) => (t) => Array.isArray(t) && t.length > 0 ? t.filter(e) : e(t) ? [t] : [], Me = (e) => {
@@ -371,7 +371,7 @@ function Te(e) {
371
371
  });
372
372
  return JSON.stringify({ rel: t, cond: r });
373
373
  }
374
- function $e(e) {
374
+ function Oe(e) {
375
375
  const t = JSON.parse(e), r = t.rel === "or" ? "any" : "all", n = t.cond.map((a, l) => {
376
376
  var u, c;
377
377
  const i = (u = T[a.method]) != null ? u : "eq";
@@ -392,7 +392,7 @@ function $e(e) {
392
392
  });
393
393
  return { targetName: "", quantifier: r, items: n };
394
394
  }
395
- function Oe(e) {
395
+ function $e(e) {
396
396
  const t = (r) => String(r).padStart(2, "0");
397
397
  return `${e.getFullYear()}-${t(e.getMonth() + 1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`;
398
398
  }
@@ -402,13 +402,13 @@ function Ie(e, t, r = 1) {
402
402
  t(l) ? a.push(l) : (a.length > 0 && (n.push(a.length >= r ? [...a] : a[0]), a.length = 0), n.push(l));
403
403
  return a.length > 0 && n.push(a.length >= 2 ? [...a] : a[0]), n;
404
404
  }
405
- function _(e) {
405
+ function C(e) {
406
406
  const t = [];
407
407
  for (const r of e)
408
- Array.isArray(r) ? t.push(..._(r)) : t.push(r);
408
+ Array.isArray(r) ? t.push(...C(r)) : t.push(r);
409
409
  return t;
410
410
  }
411
- const $ = {
411
+ const O = {
412
412
  projectdevelopment: "e914",
413
413
  resourcelibrary: "e915",
414
414
  Plugin2: "e90e",
@@ -816,7 +816,7 @@ const $ = {
816
816
  Avatar: "ea96"
817
817
  };
818
818
  function Le(e) {
819
- const t = $[e];
819
+ const t = O[e];
820
820
  return t ? `&#x${t};` : void 0;
821
821
  }
822
822
  const je = (e, t, r) => {
@@ -841,10 +841,10 @@ const je = (e, t, r) => {
841
841
  }
842
842
  );
843
843
  return {
844
- meta: a.length ? _(a) : null,
844
+ meta: a.length ? C(a) : null,
845
845
  translated: (l != null ? l : "").trim()
846
846
  };
847
- }, O = {
847
+ }, $ = {
848
848
  手机号码: "^((\\(\\d{2,3}\\))|(\\d{3}\\-))?1\\d{10}$",
849
849
  电话号码: "^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$",
850
850
  邮政编码: "^\\d{6}$",
@@ -857,7 +857,7 @@ const je = (e, t, r) => {
857
857
  条形码图片: "barcode",
858
858
  自定义: "custom"
859
859
  }, S = (e) => {
860
- const { widget: t, labelStyle: r, label: n, ...a } = e || {}, l = O[r] || "";
860
+ const { widget: t, labelStyle: r, label: n, ...a } = e || {}, l = $[r] || "";
861
861
  return {
862
862
  widget: {
863
863
  widgetName: `_widget_${Date.now()}`,
@@ -1925,6 +1925,18 @@ const je = (e, t, r) => {
1925
1925
  }, Ge = (e) => {
1926
1926
  var t, r, n, a, l, i, s, u;
1927
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 : ""}`;
1928
+ }, Ue = (e) => {
1929
+ var t;
1930
+ if (!e)
1931
+ return "";
1932
+ try {
1933
+ return JSON.stringify({
1934
+ ...e,
1935
+ uid: (t = e.user) == null ? void 0 : t._id
1936
+ });
1937
+ } catch (r) {
1938
+ return console.warn("getChatCtxForMcp error", r), "";
1939
+ }
1928
1940
  };
1929
1941
  export {
1930
1942
  Fe as DATA_COUNT_PER_BATCH,
@@ -1933,7 +1945,7 @@ export {
1933
1945
  he as GetPartErrMsg,
1934
1946
  fe as GetQueryResult,
1935
1947
  ke as GetSafeFormStructure,
1936
- C as IsErrorPart,
1948
+ _ as IsErrorPart,
1937
1949
  ge as IsFakeMsgPart,
1938
1950
  be as IsFileGroupPart,
1939
1951
  me as IsFilePart,
@@ -1941,18 +1953,19 @@ export {
1941
1953
  pe as IsQueryResultPart,
1942
1954
  De as OPERATOR_LABEL_MAP,
1943
1955
  q as WHITE_LIST_FIELDS_SET,
1944
- $e as bsConditionParse2Condition,
1956
+ Oe as bsConditionParse2Condition,
1945
1957
  Te as conditionStringify2bsCondition,
1946
1958
  Ne as createFieldPartsExtractor,
1947
- Ce as createGetFieldJsonInfo,
1959
+ _e as createGetFieldJsonInfo,
1948
1960
  x as createPartTypeChecker,
1949
- _e as createPayloadTypeChecker,
1961
+ Ce as createPayloadTypeChecker,
1950
1962
  d as extractTextPartMeta,
1951
1963
  xe as field2config,
1952
- _ as flatArr,
1953
- Oe as formatLocalDate,
1964
+ C as flatArr,
1965
+ $e as formatLocalDate,
1954
1966
  Re as getAvailableOperators,
1955
1967
  Ge as getChatCtxForHuman,
1968
+ Ue as getChatCtxForMcp,
1956
1969
  Pe as getDefaultOperator,
1957
1970
  Le as getIconUnicode,
1958
1971
  ve as getMetaErrorMsg,
@@ -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 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, isVirtual?: boolean) => 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 /\\$\\{(virtual\\.)?(_widget_\\d+(?:\\._widget_\\d+)?)\\}/g,\n (_, virtualPrefix, widgetName) => {\n const isVirtual = !!virtualPrefix;\n const { translated, meta } = widgetValueGetter(widgetName, isVirtual);\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","_","virtualPrefix","isVirtual","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, isVirtual?: boolean) => 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 /\\$\\{(virtual\\.)?(_widget_\\d+(?:\\._widget_\\d+)?)\\}/g,\n (_, virtualPrefix, widgetName) => {\n const isVirtual = !!virtualPrefix;\n const { translated, meta } = widgetValueGetter(widgetName, isVirtual);\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};\n\nexport const getChatCtxForMcp = (ctx: IChatCtx) => {\n if (!ctx) {\n return '';\n }\n\n try {\n return JSON.stringify({\n ...ctx,\n uid: ctx.user?._id,\n });\n } catch (e) {\n console.warn('getChatCtxForMcp error', e);\n return '';\n }\n};\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","_","virtualPrefix","isVirtual","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","getChatCtxForMcp"],"mappings":"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"}
package/dist/chat.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  import { IChatCtx } from '@baishuyun/types';
2
2
  export declare const getChatCtxForHuman: (ctx: IChatCtx) => string;
3
+ export declare const getChatCtxForMcp: (ctx: IChatCtx) => string;
3
4
  //# sourceMappingURL=chat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,eAAO,MAAM,kBAAkB,GAAI,KAAK,QAAQ,WAc/C,CAAA"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,eAAO,MAAM,kBAAkB,GAAI,KAAK,QAAQ,WAc/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,QAAQ,WAc7C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baishuyun/ai-feat-utils",
3
- "version": "2.0.35",
3
+ "version": "2.0.36",
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.32"
19
+ "@baishuyun/types": "3.0.33"
20
20
  },
21
21
  "devDependencies": {
22
22
  "rimraf": "^6.1.2",