@baishuyun/ai-feat-utils 2.0.43 → 2.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-feat-utils.js +225 -202
- package/dist/ai-feat-utils.js.map +1 -1
- package/dist/chat.d.ts.map +1 -1
- package/dist/condition.d.ts +13 -0
- package/dist/condition.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-feat-utils.js","sources":["../src/text-part.ts","../src/part.ts","../src/dom.ts","../src/shadow-styles.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\n/**\n * 克隆进 shadow root 的宿主样式统一降级到该 cascade layer。\n *\n * 背景:SDK 的 tailwind 产物全部包裹在 @layer(theme/base/components/utilities) 中,\n * 而 unlayered 样式在级联中恒优先于任何 layered 样式(与顺序、特异性无关)。\n * 宿主全局样式(如 `button { background: transparent }`)若原样进入 shadow root,\n * 会压过 SDK 的工具类。将宿主样式整体包进最先声明的 host-clone 层后,\n * SDK 样式恢复正常优先级;宿主主动传入的 styleString / 渲染器 style 仍为 unlayered,\n * 追加在最后,保留其覆盖能力。\n */\nconst HOST_CLONE_LAYER = 'host-clone';\n\n/**\n * 将一段宿主 CSS 文本降级包装:\n * - 顶层 @font-face / @keyframes / @property / @import 提升到层外\n * (它们不参与层叠;@import 还必须位于样式表最前,不能嵌进 @layer 块);\n * - 已有的 @layer 块保持原样(避免祖先 shadow 中已降层的样式被重复嵌套);\n * - 其余规则包进 @layer host-clone。\n * 解析失败时回退为整体包装。\n */\nconst wrapHostStyleText = (cssText: string): string => {\n try {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssText);\n\n const imports: string[] = [];\n const hoisted: string[] = [];\n const segments: string[] = [];\n let plainBuffer: string[] = [];\n\n const flushPlain = () => {\n if (plainBuffer.length) {\n segments.push(`@layer ${HOST_CLONE_LAYER} {\\n${plainBuffer.join('\\n')}\\n}`);\n plainBuffer = [];\n }\n };\n\n for (const rule of Array.from(sheet.cssRules)) {\n if (rule instanceof CSSImportRule) {\n imports.push(rule.cssText);\n } else if (\n rule instanceof CSSFontFaceRule ||\n rule instanceof CSSKeyframesRule ||\n (typeof CSSPropertyRule !== 'undefined' && rule instanceof CSSPropertyRule)\n ) {\n hoisted.push(rule.cssText);\n } else if (rule instanceof CSSLayerBlockRule) {\n flushPlain();\n segments.push(rule.cssText);\n } else {\n plainBuffer.push(rule.cssText);\n }\n }\n flushPlain();\n\n return [...imports, ...hoisted, ...segments].join('\\n');\n } catch {\n return `@layer ${HOST_CLONE_LAYER} {\\n${cssText}\\n}`;\n }\n};\n\nexport const injectHostStylesIntoShadow = (shadowRoot: ShadowRoot, hostElement: HTMLElement) => {\n if (shadowRoot.querySelector(`[${STYLE_INJECTED_ATTR}]`)) return;\n\n const importLines: string[] = [];\n const styleTexts: string[] = [];\n\n const collect = (el: Element) => {\n if (el instanceof HTMLLinkElement) {\n // link 的 innerHTML 恒为空,且克隆的 link 无法降级到 layer;\n // 转为 @import layer()(与 link 一样不要求 CORS),并保留 media 条件。\n const layerImport = `@import url(\"${el.href}\") layer(${HOST_CLONE_LAYER})`;\n importLines.push(el.media ? `${layerImport} ${el.media};` : `${layerImport};`);\n } else if (el instanceof HTMLStyleElement) {\n styleTexts.push(wrapHostStyleText(el.textContent || ''));\n }\n };\n\n // Collect <style> and <link rel=\"stylesheet\"> from document.head\n document.head.querySelectorAll('style').forEach(collect);\n document.head.querySelectorAll('link[rel=\"stylesheet\"]').forEach(collect);\n\n // Walk up through ancestor shadow roots and collect 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(collect);\n node.querySelectorAll('link[rel=\"stylesheet\"]').forEach(collect);\n }\n node = node.parentNode;\n }\n\n // 单个注入节点:层声明置首,保证 host-clone 恒为最低层;@import 须在其余规则之前。\n const styleEl = document.createElement('style');\n styleEl.setAttribute(STYLE_INJECTED_ATTR, '');\n styleEl.textContent = [\n `@layer ${HOST_CLONE_LAYER};`,\n ...importLines,\n ...styleTexts,\n ].join('\\n');\n shadowRoot.appendChild(styleEl);\n};\n","type StyleSource = Document | ShadowRoot;\ntype StyleSnapshot = { source: Node | CSSStyleSheet; css?: string; href?: string; media: string; nonce: string; classes?: string };\n\nconst MANAGED_STYLE = 'data-bs-host-style';\nconst watchers = new WeakMap<StyleSource, { subscribe: (listener: () => void) => () => void; read: () => StyleSnapshot[]; refresh: () => void }>();\n\nconst rebaseUrls = (css: string, base: string) => css.replace(\n /url\\(\\s*(?:\"([^\"\\n]*)\"|'([^'\\n]*)'|([^\\s)]*))\\s*\\)/gi,\n (match, double, single, bare) => {\n const url = double ?? single ?? bare;\n if (!url || /^(?:data:|blob:|#|var\\()/i.test(url)) return match;\n try { return `url(${JSON.stringify(new URL(url, base).href)})`; } catch { return match; }\n },\n);\n\nconst hostSelector = (selector: string) => selector\n .replace(/(^|,\\s*)(?::root|html)(?=$|[\\s>.:#\\[])/g, '$1:host')\n .replace(/:host\\s+(?:>\\s*)?body(?=$|[\\s>.:#\\[])/g, ':host > [data-bs-shadow-content]')\n .replace(/(^|,\\s*)body(?=$|[\\s>.:#\\[])/g, '$1[data-bs-shadow-content]');\n\nconst serializeRules = (rules: CSSRuleList, base: string): string => Array.from(rules).map(rule => {\n if (rule.type === 1) {\n const styleRule = rule as CSSStyleRule;\n const body = rule.cssText.slice(rule.cssText.indexOf('{'));\n return hostSelector(styleRule.selectorText) + rebaseUrls(body, base);\n }\n if ('cssRules' in rule && rule.type !== 7) {\n return rule.cssText.slice(0, rule.cssText.indexOf('{') + 1)\n + serializeRules((rule as CSSGroupingRule).cssRules, base) + '}';\n }\n return rebaseUrls(rule.cssText, base);\n}).join('\\n');\n\nconst snapshotStyles = (root: StyleSource): StyleSnapshot[] => {\n const doc = root.nodeType === 9 ? root as Document : (root as ShadowRoot).ownerDocument;\n const snapshots: StyleSnapshot[] = [];\n if (root.nodeType === 9 && doc.body) {\n const computed = doc.defaultView!.getComputedStyle(doc.body);\n const properties = ['font', 'color', 'line-height', 'letter-spacing', 'text-align', 'text-transform', 'direction', 'color-scheme'];\n const vars = Array.from(computed).filter(name => name.startsWith('--'));\n const css = [...properties, ...vars].map(name => `${name}:${computed.getPropertyValue(name)};`).join('');\n snapshots.push({ source: doc, css: `:host {display:contents;${css}}`, media: '', nonce: '', classes: `${doc.documentElement.className} ${doc.body.className}` });\n }\n for (const node of Array.from(root.querySelectorAll<HTMLStyleElement | HTMLLinkElement>('style,link[rel~=\"stylesheet\"]'))) {\n if (node.hasAttribute(MANAGED_STYLE) || node.hasAttribute('data-bs-sdk-styles') || node.hasAttribute('data-shadow-slot-injected')) continue;\n if (node.disabled || node.sheet?.disabled) continue;\n const media = node.media || '';\n const nonce = node.nonce || '';\n try {\n if (node.sheet) {\n snapshots.push({ source: node, css: serializeRules(node.sheet.cssRules, node.sheet.href || node.baseURI), media, nonce });\n continue;\n }\n } catch {\n if (node.tagName === 'LINK') {\n snapshots.push({ source: node, href: (node as HTMLLinkElement).href, media, nonce });\n continue;\n }\n }\n if (node.tagName === 'LINK') snapshots.push({ source: node, href: (node as HTMLLinkElement).href, media, nonce });\n else snapshots.push({ source: node, css: rebaseUrls(node.textContent || '', node.baseURI), media, nonce });\n }\n for (const sheet of Array.from(root.adoptedStyleSheets || [])) {\n if (!sheet.disabled) snapshots.push({ source: sheet, css: serializeRules(sheet.cssRules, doc.baseURI), media: sheet.media.mediaText, nonce: '' });\n }\n if (snapshots[0]?.source === doc) snapshots.push(snapshots.shift()!);\n return snapshots;\n};\n\nconst watchStyles = (root: StyleSource) => {\n const existing = watchers.get(root);\n if (existing) return existing;\n const doc = root.nodeType === 9 ? root as Document : (root as ShadowRoot).ownerDocument;\n let snapshots = snapshotStyles(root);\n let queued = false;\n const listeners = new Set<() => void>();\n const refresh = () => {\n queued = false;\n const next = snapshotStyles(root);\n if (next.length === snapshots.length && next.every((s, i) => s.source === snapshots[i].source && s.css === snapshots[i].css && s.href === snapshots[i].href && s.media === snapshots[i].media && s.nonce === snapshots[i].nonce && s.classes === snapshots[i].classes)) return;\n snapshots = next;\n listeners.forEach(listener => listener());\n };\n const schedule = () => {\n if (queued) return;\n queued = true;\n queueMicrotask(() => { if (listeners.size) refresh(); });\n };\n const observer = new MutationObserver(records => {\n if (records.some(record => {\n const target = record.target.nodeType === 1 ? record.target as Element : record.target.parentElement;\n if (target?.closest(`style[${MANAGED_STYLE}],style[data-bs-sdk-styles]`)) return false;\n if (target === doc.documentElement || target === doc.body) {\n if (record.type === 'attributes') return true;\n }\n if (target?.matches('style,link[rel~=\"stylesheet\"]')) return true;\n return [...Array.from(record.addedNodes), ...Array.from(record.removedNodes)].some(node =>\n node.nodeType === 1 && ((node as Element).matches('style,link[rel~=\"stylesheet\"]') || (node as Element).querySelector('style,link[rel~=\"stylesheet\"]')),\n );\n })) schedule();\n });\n observer.observe(root, { childList: true, subtree: true, characterData: true, attributes: true, attributeFilter: ['href', 'rel', 'media', 'disabled', 'class', 'style'] });\n root.addEventListener('load', schedule, true);\n const timer = doc.defaultView!.setInterval(refresh, 1000);\n const watcher = {\n read: () => snapshots,\n refresh: schedule,\n subscribe(listener: () => void) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n if (listeners.size) return;\n observer.disconnect();\n root.removeEventListener('load', schedule, true);\n doc.defaultView!.clearInterval(timer);\n watchers.delete(root);\n };\n },\n };\n watchers.set(root, watcher);\n return watcher;\n};\n\nexport const syncHostStylesIntoShadow = (shadowRoot: ShadowRoot, host: HTMLElement) => {\n const sources: StyleSource[] = [host.ownerDocument];\n let root = host.getRootNode();\n while (root.nodeType === 11 && 'host' in root) {\n const parent = root as ShadowRoot;\n if (parent.host.getAttribute('data-bs-style-mode') !== 'sdk') sources.splice(1, 0, parent);\n root = parent.host.getRootNode();\n }\n const entries = sources.map(watchStyles);\n const marker = host.ownerDocument.createComment('host styles');\n shadowRoot.prepend(marker);\n const nodes = new Map<Node | CSSStyleSheet, HTMLStyleElement | HTMLLinkElement>();\n const sync = () => {\n const snapshots = entries.reduce<StyleSnapshot[]>((all, entry) => all.concat(entry.read()), []);\n const mount = shadowRoot.querySelector<HTMLElement>('[data-bs-shadow-content]');\n const classes = `${host.ownerDocument.documentElement.className} ${host.ownerDocument.body?.className || ''}`;\n if (mount && mount.className !== classes) mount.className = classes;\n const active = new Set(snapshots.map(snapshot => snapshot.source));\n for (const [source, node] of nodes) if (!active.has(source)) { node.remove(); nodes.delete(source); }\n let previous: ChildNode = marker;\n for (const snapshot of snapshots) {\n let node = nodes.get(snapshot.source);\n const tag = snapshot.href ? 'LINK' : 'STYLE';\n if (node && node.tagName !== tag) { node.remove(); nodes.delete(snapshot.source); node = undefined; }\n if (!node) {\n node = host.ownerDocument.createElement(snapshot.href ? 'link' : 'style');\n node.setAttribute(MANAGED_STYLE, '');\n nodes.set(snapshot.source, node);\n }\n node.media = snapshot.media;\n node.nonce = snapshot.nonce;\n if (snapshot.href) {\n const link = node as HTMLLinkElement;\n link.rel = 'stylesheet';\n if (link.href !== snapshot.href) link.href = snapshot.href;\n } else if (node.textContent !== snapshot.css) node.textContent = snapshot.css || '';\n if (previous.nextSibling !== node) previous.after(node);\n previous = node;\n }\n };\n const unsubscribe = entries.map(entry => entry.subscribe(sync));\n sync();\n const contentObserver = new MutationObserver(records => {\n if (records.some(record => {\n const target = record.target.nodeType === 1 ? record.target as Element : record.target.parentElement;\n return target && !target.closest('style,link');\n })) entries.forEach(entry => entry.refresh());\n });\n contentObserver.observe(shadowRoot, { subtree: true, childList: true, characterData: true, attributes: true, attributeFilter: ['class'] });\n return () => {\n contentObserver.disconnect();\n unsubscribe.forEach(dispose => dispose());\n nodes.forEach(node => node.remove());\n marker.remove();\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 */\nexport const 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\n/**\n * 数字表单图标(icon-bsy-form-N / icon-new-bsy-form-N)→ unicode 码位。\n * 与 PC aiOffice/const 的 .icon-bsy-form-N:before content 对齐。\n * 用于「文本内码」渲染(把 unicode 字符直接放进元素文本 + finex 字体),\n * 规避部分环境(shadow DOM / WebView):before content 无法生成的问题。\n */\nexport const FORM_ICON_UNICODE_MAP: Record<number, string> = {0: 'e7b5', 1: 'e7c7', 2: 'e7b3', 3: 'e7c9', 4: 'e7bc', 5: 'e7be', 6: 'e7b8', 7: 'e7c8', 8: 'e7c1', 9: 'e7bb', 10: 'e7ca', 11: 'e7c4', 12: 'e7b4', 13: 'e7ba', 14: 'e7b6', 15: 'e7c5', 16: 'e7bf', 17: 'e7c3', 18: 'e7c2', 19: 'e7c6', 20: 'e7bd', 21: 'e7c0', 22: 'e7cb', 23: 'e7b7', 24: 'e7b9', 25: 'e814', 26: 'e81d', 27: 'e81c', 28: 'e81a', 29: 'e813', 30: 'e81b', 31: 'e818', 32: 'e819', 33: 'e817', 34: 'e816', 35: 'e810', 36: 'e815', 37: 'e812', 38: 'e811', 39: 'e80e', 40: 'e80f', 41: 'e80d', 42: 'e807', 43: 'e80b', 44: 'e80a', 45: 'e81d', 46: 'e809', 47: 'e808', 48: 'e805', 49: 'e7ff', 50: 'e803', 51: 'e806', 52: 'e802', 53: 'e800', 54: 'e804', 55: 'e801', 56: 'e7fe', 57: 'e7fc', 58: 'e7fd', 59: 'e7fb', 60: 'e7fa'};\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 });\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","HOST_CLONE_LAYER","wrapHostStyleText","cssText","sheet","imports","hoisted","segments","plainBuffer","flushPlain","rule","injectHostStylesIntoShadow","shadowRoot","hostElement","importLines","styleTexts","collect","el","layerImport","node","styleEl","MANAGED_STYLE","watchers","rebaseUrls","css","base","match","double","single","bare","_a","url","hostSelector","selector","serializeRules","rules","styleRule","body","snapshotStyles","root","_b","doc","snapshots","computed","properties","vars","name","media","nonce","watchStyles","existing","queued","listeners","refresh","next","s","i","listener","schedule","observer","records","record","target","timer","watcher","syncHostStylesIntoShadow","host","sources","parent","entries","marker","nodes","sync","all","entry","mount","classes","active","snapshot","source","previous","tag","link","unsubscribe","contentObserver","dispose","isStringArray","value","item","isOptionArray","valueNormalizer","WHITE_LIST_FIELDS_SET","GetSafeFormStructure","formStructure","f","createPartTypeChecker","type","createPayloadTypeChecker","specialPayload","createGetFieldJsonInfo","createFieldPartsExtractor","isTarget","safeParseJson","jsonString","isAttachmentRecord","hasValidFieldValue","field","generateWidgetName","prefix","now","timeStr","totalLen","fixedPart","randomPart","field2config","autoService","checked","instance","parentFieldName","rowIndex","detail","DATA_COUNT_PER_BATCH","imageUrlToBase64","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","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","code","FORM_ICON_UNICODE_MAP","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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"}
|
|
1
|
+
{"version":3,"file":"ai-feat-utils.js","sources":["../src/text-part.ts","../src/part.ts","../src/dom.ts","../src/shadow-styles.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\n/**\n * 克隆进 shadow root 的宿主样式统一降级到该 cascade layer。\n *\n * 背景:SDK 的 tailwind 产物全部包裹在 @layer(theme/base/components/utilities) 中,\n * 而 unlayered 样式在级联中恒优先于任何 layered 样式(与顺序、特异性无关)。\n * 宿主全局样式(如 `button { background: transparent }`)若原样进入 shadow root,\n * 会压过 SDK 的工具类。将宿主样式整体包进最先声明的 host-clone 层后,\n * SDK 样式恢复正常优先级;宿主主动传入的 styleString / 渲染器 style 仍为 unlayered,\n * 追加在最后,保留其覆盖能力。\n */\nconst HOST_CLONE_LAYER = 'host-clone';\n\n/**\n * 将一段宿主 CSS 文本降级包装:\n * - 顶层 @font-face / @keyframes / @property / @import 提升到层外\n * (它们不参与层叠;@import 还必须位于样式表最前,不能嵌进 @layer 块);\n * - 已有的 @layer 块保持原样(避免祖先 shadow 中已降层的样式被重复嵌套);\n * - 其余规则包进 @layer host-clone。\n * 解析失败时回退为整体包装。\n */\nconst wrapHostStyleText = (cssText: string): string => {\n try {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssText);\n\n const imports: string[] = [];\n const hoisted: string[] = [];\n const segments: string[] = [];\n let plainBuffer: string[] = [];\n\n const flushPlain = () => {\n if (plainBuffer.length) {\n segments.push(`@layer ${HOST_CLONE_LAYER} {\\n${plainBuffer.join('\\n')}\\n}`);\n plainBuffer = [];\n }\n };\n\n for (const rule of Array.from(sheet.cssRules)) {\n if (rule instanceof CSSImportRule) {\n imports.push(rule.cssText);\n } else if (\n rule instanceof CSSFontFaceRule ||\n rule instanceof CSSKeyframesRule ||\n (typeof CSSPropertyRule !== 'undefined' && rule instanceof CSSPropertyRule)\n ) {\n hoisted.push(rule.cssText);\n } else if (rule instanceof CSSLayerBlockRule) {\n flushPlain();\n segments.push(rule.cssText);\n } else {\n plainBuffer.push(rule.cssText);\n }\n }\n flushPlain();\n\n return [...imports, ...hoisted, ...segments].join('\\n');\n } catch {\n return `@layer ${HOST_CLONE_LAYER} {\\n${cssText}\\n}`;\n }\n};\n\nexport const injectHostStylesIntoShadow = (shadowRoot: ShadowRoot, hostElement: HTMLElement) => {\n if (shadowRoot.querySelector(`[${STYLE_INJECTED_ATTR}]`)) return;\n\n const importLines: string[] = [];\n const styleTexts: string[] = [];\n\n const collect = (el: Element) => {\n if (el instanceof HTMLLinkElement) {\n // link 的 innerHTML 恒为空,且克隆的 link 无法降级到 layer;\n // 转为 @import layer()(与 link 一样不要求 CORS),并保留 media 条件。\n const layerImport = `@import url(\"${el.href}\") layer(${HOST_CLONE_LAYER})`;\n importLines.push(el.media ? `${layerImport} ${el.media};` : `${layerImport};`);\n } else if (el instanceof HTMLStyleElement) {\n styleTexts.push(wrapHostStyleText(el.textContent || ''));\n }\n };\n\n // Collect <style> and <link rel=\"stylesheet\"> from document.head\n document.head.querySelectorAll('style').forEach(collect);\n document.head.querySelectorAll('link[rel=\"stylesheet\"]').forEach(collect);\n\n // Walk up through ancestor shadow roots and collect 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(collect);\n node.querySelectorAll('link[rel=\"stylesheet\"]').forEach(collect);\n }\n node = node.parentNode;\n }\n\n // 单个注入节点:层声明置首,保证 host-clone 恒为最低层;@import 须在其余规则之前。\n const styleEl = document.createElement('style');\n styleEl.setAttribute(STYLE_INJECTED_ATTR, '');\n styleEl.textContent = [\n `@layer ${HOST_CLONE_LAYER};`,\n ...importLines,\n ...styleTexts,\n ].join('\\n');\n shadowRoot.appendChild(styleEl);\n};\n","type StyleSource = Document | ShadowRoot;\ntype StyleSnapshot = { source: Node | CSSStyleSheet; css?: string; href?: string; media: string; nonce: string; classes?: string };\n\nconst MANAGED_STYLE = 'data-bs-host-style';\nconst watchers = new WeakMap<StyleSource, { subscribe: (listener: () => void) => () => void; read: () => StyleSnapshot[]; refresh: () => void }>();\n\nconst rebaseUrls = (css: string, base: string) => css.replace(\n /url\\(\\s*(?:\"([^\"\\n]*)\"|'([^'\\n]*)'|([^\\s)]*))\\s*\\)/gi,\n (match, double, single, bare) => {\n const url = double ?? single ?? bare;\n if (!url || /^(?:data:|blob:|#|var\\()/i.test(url)) return match;\n try { return `url(${JSON.stringify(new URL(url, base).href)})`; } catch { return match; }\n },\n);\n\nconst hostSelector = (selector: string) => selector\n .replace(/(^|,\\s*)(?::root|html)(?=$|[\\s>.:#\\[])/g, '$1:host')\n .replace(/:host\\s+(?:>\\s*)?body(?=$|[\\s>.:#\\[])/g, ':host > [data-bs-shadow-content]')\n .replace(/(^|,\\s*)body(?=$|[\\s>.:#\\[])/g, '$1[data-bs-shadow-content]');\n\nconst serializeRules = (rules: CSSRuleList, base: string): string => Array.from(rules).map(rule => {\n if (rule.type === 1) {\n const styleRule = rule as CSSStyleRule;\n const body = rule.cssText.slice(rule.cssText.indexOf('{'));\n return hostSelector(styleRule.selectorText) + rebaseUrls(body, base);\n }\n if ('cssRules' in rule && rule.type !== 7) {\n return rule.cssText.slice(0, rule.cssText.indexOf('{') + 1)\n + serializeRules((rule as CSSGroupingRule).cssRules, base) + '}';\n }\n return rebaseUrls(rule.cssText, base);\n}).join('\\n');\n\nconst snapshotStyles = (root: StyleSource): StyleSnapshot[] => {\n const doc = root.nodeType === 9 ? root as Document : (root as ShadowRoot).ownerDocument;\n const snapshots: StyleSnapshot[] = [];\n if (root.nodeType === 9 && doc.body) {\n const computed = doc.defaultView!.getComputedStyle(doc.body);\n const properties = ['font', 'color', 'line-height', 'letter-spacing', 'text-align', 'text-transform', 'direction', 'color-scheme'];\n const vars = Array.from(computed).filter(name => name.startsWith('--'));\n const css = [...properties, ...vars].map(name => `${name}:${computed.getPropertyValue(name)};`).join('');\n snapshots.push({ source: doc, css: `:host {display:contents;${css}}`, media: '', nonce: '', classes: `${doc.documentElement.className} ${doc.body.className}` });\n }\n for (const node of Array.from(root.querySelectorAll<HTMLStyleElement | HTMLLinkElement>('style,link[rel~=\"stylesheet\"]'))) {\n if (node.hasAttribute(MANAGED_STYLE) || node.hasAttribute('data-bs-sdk-styles') || node.hasAttribute('data-shadow-slot-injected')) continue;\n if (node.disabled || node.sheet?.disabled) continue;\n const media = node.media || '';\n const nonce = node.nonce || '';\n try {\n if (node.sheet) {\n snapshots.push({ source: node, css: serializeRules(node.sheet.cssRules, node.sheet.href || node.baseURI), media, nonce });\n continue;\n }\n } catch {\n if (node.tagName === 'LINK') {\n snapshots.push({ source: node, href: (node as HTMLLinkElement).href, media, nonce });\n continue;\n }\n }\n if (node.tagName === 'LINK') snapshots.push({ source: node, href: (node as HTMLLinkElement).href, media, nonce });\n else snapshots.push({ source: node, css: rebaseUrls(node.textContent || '', node.baseURI), media, nonce });\n }\n for (const sheet of Array.from(root.adoptedStyleSheets || [])) {\n if (!sheet.disabled) snapshots.push({ source: sheet, css: serializeRules(sheet.cssRules, doc.baseURI), media: sheet.media.mediaText, nonce: '' });\n }\n if (snapshots[0]?.source === doc) snapshots.push(snapshots.shift()!);\n return snapshots;\n};\n\nconst watchStyles = (root: StyleSource) => {\n const existing = watchers.get(root);\n if (existing) return existing;\n const doc = root.nodeType === 9 ? root as Document : (root as ShadowRoot).ownerDocument;\n let snapshots = snapshotStyles(root);\n let queued = false;\n const listeners = new Set<() => void>();\n const refresh = () => {\n queued = false;\n const next = snapshotStyles(root);\n if (next.length === snapshots.length && next.every((s, i) => s.source === snapshots[i].source && s.css === snapshots[i].css && s.href === snapshots[i].href && s.media === snapshots[i].media && s.nonce === snapshots[i].nonce && s.classes === snapshots[i].classes)) return;\n snapshots = next;\n listeners.forEach(listener => listener());\n };\n const schedule = () => {\n if (queued) return;\n queued = true;\n queueMicrotask(() => { if (listeners.size) refresh(); });\n };\n const observer = new MutationObserver(records => {\n if (records.some(record => {\n const target = record.target.nodeType === 1 ? record.target as Element : record.target.parentElement;\n if (target?.closest(`style[${MANAGED_STYLE}],style[data-bs-sdk-styles]`)) return false;\n if (target === doc.documentElement || target === doc.body) {\n if (record.type === 'attributes') return true;\n }\n if (target?.matches('style,link[rel~=\"stylesheet\"]')) return true;\n return [...Array.from(record.addedNodes), ...Array.from(record.removedNodes)].some(node =>\n node.nodeType === 1 && ((node as Element).matches('style,link[rel~=\"stylesheet\"]') || (node as Element).querySelector('style,link[rel~=\"stylesheet\"]')),\n );\n })) schedule();\n });\n observer.observe(root, { childList: true, subtree: true, characterData: true, attributes: true, attributeFilter: ['href', 'rel', 'media', 'disabled', 'class', 'style'] });\n root.addEventListener('load', schedule, true);\n const timer = doc.defaultView!.setInterval(refresh, 1000);\n const watcher = {\n read: () => snapshots,\n refresh: schedule,\n subscribe(listener: () => void) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n if (listeners.size) return;\n observer.disconnect();\n root.removeEventListener('load', schedule, true);\n doc.defaultView!.clearInterval(timer);\n watchers.delete(root);\n };\n },\n };\n watchers.set(root, watcher);\n return watcher;\n};\n\nexport const syncHostStylesIntoShadow = (shadowRoot: ShadowRoot, host: HTMLElement) => {\n const sources: StyleSource[] = [host.ownerDocument];\n let root = host.getRootNode();\n while (root.nodeType === 11 && 'host' in root) {\n const parent = root as ShadowRoot;\n if (parent.host.getAttribute('data-bs-style-mode') !== 'sdk') sources.splice(1, 0, parent);\n root = parent.host.getRootNode();\n }\n const entries = sources.map(watchStyles);\n const marker = host.ownerDocument.createComment('host styles');\n shadowRoot.prepend(marker);\n const nodes = new Map<Node | CSSStyleSheet, HTMLStyleElement | HTMLLinkElement>();\n const sync = () => {\n const snapshots = entries.reduce<StyleSnapshot[]>((all, entry) => all.concat(entry.read()), []);\n const mount = shadowRoot.querySelector<HTMLElement>('[data-bs-shadow-content]');\n const classes = `${host.ownerDocument.documentElement.className} ${host.ownerDocument.body?.className || ''}`;\n if (mount && mount.className !== classes) mount.className = classes;\n const active = new Set(snapshots.map(snapshot => snapshot.source));\n for (const [source, node] of nodes) if (!active.has(source)) { node.remove(); nodes.delete(source); }\n let previous: ChildNode = marker;\n for (const snapshot of snapshots) {\n let node = nodes.get(snapshot.source);\n const tag = snapshot.href ? 'LINK' : 'STYLE';\n if (node && node.tagName !== tag) { node.remove(); nodes.delete(snapshot.source); node = undefined; }\n if (!node) {\n node = host.ownerDocument.createElement(snapshot.href ? 'link' : 'style');\n node.setAttribute(MANAGED_STYLE, '');\n nodes.set(snapshot.source, node);\n }\n node.media = snapshot.media;\n node.nonce = snapshot.nonce;\n if (snapshot.href) {\n const link = node as HTMLLinkElement;\n link.rel = 'stylesheet';\n if (link.href !== snapshot.href) link.href = snapshot.href;\n } else if (node.textContent !== snapshot.css) node.textContent = snapshot.css || '';\n if (previous.nextSibling !== node) previous.after(node);\n previous = node;\n }\n };\n const unsubscribe = entries.map(entry => entry.subscribe(sync));\n sync();\n const contentObserver = new MutationObserver(records => {\n if (records.some(record => {\n const target = record.target.nodeType === 1 ? record.target as Element : record.target.parentElement;\n return target && !target.closest('style,link');\n })) entries.forEach(entry => entry.refresh());\n });\n contentObserver.observe(shadowRoot, { subtree: true, childList: true, characterData: true, attributes: true, attributeFilter: ['class'] });\n return () => {\n contentObserver.disconnect();\n unsubscribe.forEach(dispose => dispose());\n nodes.forEach(node => node.remove());\n marker.remove();\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\n/**\n * 字段类型 → 操作符描述覆盖\n *\n * 同一操作符在不同字段类型下文案不同(参考报表筛选 FilterTypeRelationMap 机制):\n * 多值字段(部门多选/成员多选/多选框组)的 in 语义是「包含任意一个」而非「等于任意」,\n * 地址/定位的 in/nin 语义是「属于/不属于」「包含/不包含」。\n * 未覆盖的类型与操作符回退到 OPERATOR_LABEL_MAP。\n */\nexport const FIELD_TYPE_OPERATOR_LABEL_OVERRIDES: Partial<\n Record<FieldType, Partial<Record<relationalOperator, string>>>\n> = {\n usergroup: { in: '包含任意一个' },\n deptgroup: { in: '包含任意一个' },\n checkboxgroup: { in: '包含任意一个' },\n combocheck: { in: '包含任意一个' },\n address: { in: '属于', nin: '不属于' },\n location: { in: '包含', nin: '不包含' },\n};\n\n/**\n * 获取操作符描述:优先字段类型覆盖,回退默认文案\n */\nexport function getOperatorLabel(operator: relationalOperator, fieldType?: FieldType): string {\n const overrides = fieldType ? FIELD_TYPE_OPERATOR_LABEL_OVERRIDES[fieldType] : undefined;\n return overrides?.[operator] ?? OPERATOR_LABEL_MAP[operator] ?? operator;\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 */\nexport const 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\n/**\n * 数字表单图标(icon-bsy-form-N / icon-new-bsy-form-N)→ unicode 码位。\n * 与 PC aiOffice/const 的 .icon-bsy-form-N:before content 对齐。\n * 用于「文本内码」渲染(把 unicode 字符直接放进元素文本 + finex 字体),\n * 规避部分环境(shadow DOM / WebView):before content 无法生成的问题。\n */\nexport const FORM_ICON_UNICODE_MAP: Record<number, string> = {0: 'e7b5', 1: 'e7c7', 2: 'e7b3', 3: 'e7c9', 4: 'e7bc', 5: 'e7be', 6: 'e7b8', 7: 'e7c8', 8: 'e7c1', 9: 'e7bb', 10: 'e7ca', 11: 'e7c4', 12: 'e7b4', 13: 'e7ba', 14: 'e7b6', 15: 'e7c5', 16: 'e7bf', 17: 'e7c3', 18: 'e7c2', 19: 'e7c6', 20: 'e7bd', 21: 'e7c0', 22: 'e7cb', 23: 'e7b7', 24: 'e7b9', 25: 'e814', 26: 'e81d', 27: 'e81c', 28: 'e81a', 29: 'e813', 30: 'e81b', 31: 'e818', 32: 'e819', 33: 'e817', 34: 'e816', 35: 'e810', 36: 'e815', 37: 'e812', 38: 'e811', 39: 'e80e', 40: 'e80f', 41: 'e80d', 42: 'e807', 43: 'e80b', 44: 'e80a', 45: 'e81d', 46: 'e809', 47: 'e808', 48: 'e805', 49: 'e7ff', 50: 'e803', 51: 'e806', 52: 'e802', 53: 'e800', 54: 'e804', 55: 'e801', 56: 'e7fe', 57: 'e7fc', 58: 'e7fd', 59: 'e7fb', 60: 'e7fa'};\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, IMcpCtx } 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 const mcpCtx: IMcpCtx = {\n corpId: ctx.corp?.id,\n userId: ctx.user._id,\n\n appName: ctx.appName,\n appId: ctx.appId,\n\n entryName: ctx.entryName,\n entryId: ctx.entryId,\n\n agentName: ctx.agentName,\n };\n\n try {\n return JSON.stringify(mcpCtx);\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","HOST_CLONE_LAYER","wrapHostStyleText","cssText","sheet","imports","hoisted","segments","plainBuffer","flushPlain","rule","injectHostStylesIntoShadow","shadowRoot","hostElement","importLines","styleTexts","collect","el","layerImport","node","styleEl","MANAGED_STYLE","watchers","rebaseUrls","css","base","match","double","single","bare","_a","url","hostSelector","selector","serializeRules","rules","styleRule","body","snapshotStyles","root","_b","doc","snapshots","computed","properties","vars","name","media","nonce","watchStyles","existing","queued","listeners","refresh","next","s","i","listener","schedule","observer","records","record","target","timer","watcher","syncHostStylesIntoShadow","host","sources","parent","entries","marker","nodes","sync","all","entry","mount","classes","active","snapshot","source","previous","tag","link","unsubscribe","contentObserver","dispose","isStringArray","value","item","isOptionArray","valueNormalizer","WHITE_LIST_FIELDS_SET","GetSafeFormStructure","formStructure","f","createPartTypeChecker","type","createPayloadTypeChecker","specialPayload","createGetFieldJsonInfo","createFieldPartsExtractor","isTarget","safeParseJson","jsonString","isAttachmentRecord","hasValidFieldValue","field","generateWidgetName","prefix","now","timeStr","totalLen","fixedPart","randomPart","field2config","autoService","checked","instance","parentFieldName","rowIndex","detail","DATA_COUNT_PER_BATCH","imageUrlToBase64","mediaType","resolve","img","canvas","OPERATOR_LABEL_MAP","FIELD_TYPE_OPERATOR_LABEL_OVERRIDES","getOperatorLabel","operator","fieldType","overrides","FIELD_TYPE_OPERATOR_MAP","DEFAULT_OPERATOR_MAP","getAvailableOperators","getDefaultOperator","isRecord","asRecord","isEmpty","isEqual","a","b","sa","sb","v","ka","kb","k","evaluateIn","formValue","condValue","fv","cv","evaluateAll","evaluateRange","range","evaluateConditionItem","formValues","widgetName","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","code","FORM_ICON_UNICODE_MAP","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","mcpCtx"],"mappings":"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"}
|