@steedos-widgets/steedos-lib 6.10.42-beta.2 → 6.10.43

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../src/standard_objects.ts","../../src/authRequest.ts","../src/ui/modal.jsx","../src/ui/sObject.jsx","../src/ui/listView.jsx","../src/ui/router.jsx","../../src/ui/render.tsx","../src/utils.js","../src/expression.js","../src/ui/defaultValue.js","../src/ui/tree.js","../src/ui/amis.js","../src/ui/index.jsx","../src/icon/index.js","../../src/organization/organizations_tree.ts","../../src/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-10-25 09:17:54\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-01-05 17:56:58\n * @Description: \n */\n\n\nexport const StandardObjects = {\n Base: {\n Actions: {\n standard_query: {\n visible: (objectName, recordId, record_permissions)=>{\n // if(recordId){\n // return false;\n // }\n // return true;\n return false;\n }\n },\n standard_new: {\n visible: function (objectName, recordId, record_permissions) {\n if(objectName === 'cms_files' || objectName === 'instances'){\n return false;\n }\n if (record_permissions) {\n return record_permissions[\"allowCreate\"];\n }\n }\n },\n standard_edit:{\n visible: function (object_name, record_id, record_permissions) {\n if (record_permissions) {\n return record_permissions[\"allowEdit\"];\n }\n }\n },\n standard_delete:{\n visible: function (object_name, record_id, record_permissions) {\n if (record_permissions) {\n return record_permissions[\"allowDelete\"];\n }\n }\n },\n standard_import_data: {\n visible: function (object_name, record_id, record_permissions) {\n const { object } = this;\n if (record_permissions) {\n return record_permissions[\"allowCreate\"] && object.hasImportTemplates\n }\n }\n },\n // TODO\n standard_approve: {\n visible: function (object_name, record_id, record_permissions) {\n return false;\n }\n },\n // TODO\n standard_view_instance:{\n visible: function (object_name, record_id, record_permissions) {\n return false;\n }\n },\n // TODO\n standard_submit_for_approval: {\n visible: function (object_name, record_id, record_permissions) {\n return (window as any).Steedos.ProcessManager.allowSubmit.apply(this, [object_name, record_id]);\n },\n todo: function (object_name, record_id) {\n return (window as any).Steedos.ProcessManager.submit.apply(this, [object_name, record_id]);\n }\n },\n standard_follow: {\n visible: function (object_name, record_id, record_permissions) {\n return false;\n }\n },\n standard_delete_many:{\n visible: function (object_name, record_id, record_permissions) {\n // TODO: 简易处理。 记录页:相关子表右上角的批量删除按钮隐藏\n if (RegExp(\"\\\\w+/view/\\\\w+\").test(location.pathname)) {\n return false;\n }\n if (record_permissions) {\n return record_permissions[\"allowDelete\"];\n }\n }\n },\n // TODO\n standard_export_excel: {\n visible: function (object_name, record_id, record_permissions) {\n return false;\n }\n }\n }\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-11-08 13:25:35\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-11-08 13:39:37\n * @Description: \n */\n\ndeclare var $;\ndeclare var Steedos;\n\nexport const authRequest = (url, options)=>{\n var result = null;\n url = Steedos.absoluteUrl(url);\n try {\n var authorization = Steedos.getAuthorization();\n var headers = [{\n name: 'Content-Type',\n value: 'application/json'\n }, {\n name: 'Authorization',\n value: authorization\n }];\n\n var defOptions = {\n type: \"get\",\n url: url,\n dataType: \"json\",\n contentType: 'application/json',\n beforeSend: function (XHR) {\n if (headers && headers.length) {\n return headers.forEach(function (header) {\n return XHR.setRequestHeader(header.name, header.value);\n });\n }\n },\n success: function (data) {\n result = data;\n },\n error: function (XMLHttpRequest, textStatus, errorThrown) {\n if (XMLHttpRequest.responseJSON && XMLHttpRequest.responseJSON.error) {\n const errorInfo = XMLHttpRequest.responseJSON.error;\n result = { error: errorInfo }\n let errorMsg;\n if (errorInfo.reason) {\n errorMsg = errorInfo.reason;\n }\n else if (errorInfo.message) {\n errorMsg = errorInfo.message;\n }\n else {\n errorMsg = errorInfo;\n }\n console.error(errorMsg)\n }\n else {\n console.error(XMLHttpRequest.responseJSON)\n }\n }\n }\n $.ajax(Object.assign({}, defOptions, options));\n return result;\n } catch (err) {\n console.error(err);\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-03-28 09:36:35\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-01-13 14:37:26\n * @Description: \n */\nimport React, { useState } from 'react';\nimport {createRoot} from 'react-dom';\nimport { has, assign } from 'lodash'\nimport { Modal as AntdModal, Drawer as AntdDrawer } from \"antd\"\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nconst newFunctionComponent = (Component)=>{\n return (props)=>{\n // const ref = useRef(null);\n const [isVisible, setIsVisible] = useState(true);\n\n const defProps = {\n width: \"70%\",\n style: {\n width: \"70%\",\n maxWidth: \"950px\",\n minWidth: \"480px\",\n }\n };\n \n const show = () => {\n setIsVisible(true);\n };\n \n const close = () => {\n setIsVisible(false);\n }\n if(!has(props, 'ref')){\n window.SteedosUI.refs[props.name]= {\n show: show,\n close: close,\n // ref: ref\n }\n }\n // TODO fix build error: Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)\n return React.createElement(Component, _extends({\n visible: isVisible,\n onCancel: close,\n onClose: close\n }, defProps, props))\n }\n}\n\nconst newComponentRender = (prefix, Component)=>{\n return (props, container)=>{\n if(!props.name){\n props.name = `${prefix}-${props.name || 'default'}`;\n }\n if(!container){\n container = document.getElementById(`steedos-${prefix}-root-${props.name}`);\n if (!container) {\n container = document.createElement('div');\n container.setAttribute('id', `steedos-${prefix}-root-${props.name}`);\n document.body.appendChild(container)\n }\n }\n const element = React.createElement(newFunctionComponent(Component), props);\n const root = createRoot(container);\n root.render(element);\n }\n}\n\nexport const Modal = assign(newComponentRender('modal', AntdModal), {info: AntdModal.info, success: AntdModal.success, error: AntdModal.error, warning: AntdModal.warning, confirm: AntdModal.confirm});\n\nexport const Drawer = newComponentRender('drawer', AntdDrawer);\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-31 15:04:42\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-11-29 18:43:12\n * @Description: \n */\nimport { each } from 'lodash';\nimport { fetchAPI, getUISchema } from '@steedos-widgets/amis-lib';\n\nconst getGraphqlFieldsQuery = (fields)=>{\n const fieldsName = ['_id'];\n fields.push('record_permissions');\n //TODO 此处需要考虑相关对象查询\n each(fields, (fieldName)=>{\n if(fieldName.indexOf('.') > -1){\n fieldName = fieldName.split('.')[0]\n }\n fieldsName.push(`${fieldName}`)\n })\n return `${fieldsName.join(' ')}`;\n}\n\nconst getFindOneQuery = (objectName, id, fields)=>{\n objectName = objectName.replace(/\\./g, '_');\n const queryFields = getGraphqlFieldsQuery(fields);\n let queryOptions = ''\n let alias = \"record\";\n \n const queryOptionsArray = [`id: \"${id}\"`];\n \n if(queryOptionsArray.length > 0){\n queryOptions = `(${queryOptionsArray.join(',')})`\n }\n\n return `{${alias}:${objectName}__findOne${queryOptions}{${queryFields}}}`\n}\n\nexport const SObject = {\n getRecord: async (objectName, recordId, fields)=>{\n const result = await fetchAPI('/graphql', {\n method: 'post',\n body: JSON.stringify({\n query: getFindOneQuery(objectName, recordId, fields)\n })\n })\n return result.data.record;\n },\n getUISchema: async (objectName, force)=>{\n return await getUISchema(objectName, force)\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-04 17:10:53\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-02-24 17:52:04\n * @Description: \n */\n// import { AmisRender } from \"@/components/AmisRender\";\n// import { Button, Space} from 'antd';\nimport { isEmpty, isFunction } from \"lodash\";\nimport { conditionsToFilters, filtersToConditions } from '@steedos-widgets/amis-lib'\nimport { getSteedosAuth, fetchAPI } from \"@steedos-widgets/amis-lib\";\n\n// const filtersAmisSchema = require('@/amis/listview_filters.amis.json')\n\nconst canSaveFilter = (listView)=>{\n if(listView._id && listView.owner === getSteedosAuth()?.userId){\n return true;\n }else{\n return false;\n }\n}\n\nconst saveFilters = async (listView, filters)=>{\n const api = '/api/listview/filters';\n await fetchAPI(api, {\n method: 'post',\n body: JSON.stringify({\n id: listView._id,\n filters: filters\n })\n });\n await window.getUISchema(listView.object_name, true)\n}\n\nexport const ListView = {\n showFilter: (objectName, {listView, data, props, onFilterChange})=>{\n const pageName = `${objectName}-list-filter`;\n const amisScopeId = `amis-${pageName}`;\n const canSave = canSaveFilter(listView);\n if(data.filters){\n data.filters = filtersToConditions(data.filters)\n }\n // SteedosUI.Drawer(Object.assign({\n // name: pageName,\n // title: '高级过滤',\n // destroyOnClose: true,\n // maskClosable: false,\n // footer: null,\n // bodyStyle: {padding: \"0px\", paddingTop: \"12px\"},\n // children: <AmisRender\n // id={amisScopeId}\n // schema={filtersAmisSchema}\n // data={Object.assign({}, data, {objectName: objectName})}\n // ></AmisRender>,\n // mask: false,\n // width: 550,\n // style: null,\n // extra: (\n // <Space>\n // <Button onClick={(e)=>{\n // SteedosUI.getRef(pageName).close();\n // }}>取消</Button>\n // <Button type='primary' onClick={async (e)=>{\n // const formValues = SteedosUI.getRef(amisScopeId).getComponentById(\"filtersForm\").getValues()\n // const filters = conditionsToFilters(formValues.filters);\n // if(canSave){\n // saveFilters(listView, filters)\n // }\n // if(isFunction(onFilterChange)){\n // onFilterChange(filters)\n // }\n // SteedosUI.getRef(pageName).close();\n // }}>{canSave ? '保存' : '应用'}</Button>\n \n // </Space>)\n // }, props))\n },\n getVisibleFilter: (listView, userFilter)=>{\n if(userFilter){\n return userFilter;\n };\n const canSave = canSaveFilter(listView);\n if(canSave){\n return listView.filters;\n }\n },\n getQueryFilter: (listView, userFilter)=>{\n const canSave = canSaveFilter(listView);\n if(canSave){\n return ListView.getVisibleFilter(listView, userFilter);\n }else{\n if(isEmpty(userFilter)){\n return listView.filters;\n }else{\n return [listView.filters, 'and', userFilter];\n }\n }\n },\n getFirstListView: async(objectName)=>{\n const uiSchema = await window.getUISchema(objectName);\n return _.first(_.sortBy(_.values(uiSchema.list_views) , 'sort_no'));\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-16 17:02:08\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-09-14 16:32:05\n * @Description:\n */\n\n\nexport const Router = {\n getAppPath({formFactor, appId}){\n return `/app/${appId}`;\n },\n getPagePath(){\n //TODO\n },\n getObjectListViewPath({formFactor, appId, objectName, listViewName}){\n return `/app/${appId}/${objectName}/grid/${listViewName}`;\n },\n getObjectDetailPath({formFactor, appId, objectName, recordId}){\n return `/app/${appId}/${objectName}/view/${recordId}`;\n },\n getObjectRelatedViewPath({formFactor, appId, masterObjectName, masterRecordId, objectName, foreignKey}){\n return `/app/${appId}/${masterObjectName}/${masterRecordId}/${objectName}/grid?related_field_name=${foreignKey}`;\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-12-16 18:11:35\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-12-16 18:17:20\n * @Description: \n */\nimport * as React from \"react\"\nimport ReactDOM from \"react-dom\";\n\nconst withModalWrap = (component: React.FunctionComponent, provideProps) => {\n return (props: any) => {\n const ModalComponent = component;\n return React.createElement(ModalComponent, props);\n }\n}\nexport const render = (component: React.FunctionComponent, componentProps: any, container: any, provideProps: any = {} ) => {\n const wrapComponent: any = withModalWrap(component, provideProps);\n const contentEle = React.createElement(wrapComponent,{\n ...componentProps\n });\n return ReactDOM.render(contentEle, container);\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2023-03-20 16:52:27\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2025-02-17 14:24:43\n * @Description: \n */\nimport { isArray, isNil } from 'lodash';\n\nexport const safeRunFunction = (fun, args, defaultValue, _this) => {\n try {\n // const Creator = window.Creator;\n // const isCreator = !!(Creator && Creator.getObjectUrl);\n // let regCreator = /\\bSteedos\\b|\\bCreator\\b|\\bMeteor\\b|\\bSession\\b/;\n // if(!isCreator && regCreator.test(fun)){\n // console.info(\"调用了Creator|Steedos|Meteor|Session变量的脚本不执行,直接按空值处理。\", fun);\n // return \"\";\n // }\n // TODO:移除Creator后,上面判断isCreator并返回空的逻辑可以去掉。\n let params = [];\n if(!isNil(args)){\n params = isArray(args) ? args : [args] ;\n }\n return fun.bind(_this || {})(...params);\n } catch (error) {\n console.log(error);\n return defaultValue;\n }\n }\n \n export function safeEval(js){\n try{\n return eval(js)\n }catch (e){\n console.error(e, js);\n }\n };","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-03-22 09:31:21\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-11-05 16:32:56\n */\nexport const isExpression = function (func) {\n var pattern, reg1, reg2;\n if (typeof func !== 'string') {\n return false;\n }\n pattern = /^{{(.+)}}$/;\n reg1 = /^{{(function.+)}}$/;\n reg2 = /^{{(.+=>.+)}}$/;\n if (typeof func === 'string' && func.match(pattern) && !func.match(reg1) && !func.match(reg2)) {\n return true;\n }\n return false;\n};\n\nconst getMoment = ()=>{\n if(window.amisRequire){\n return window.amisRequire(\"moment\");\n }else if(window.moment){\n return window.moment;\n }\n}\n\nexport const getGlobalNowData = () => {\n let now = new Date();\n let moment = getMoment();\n let today = moment().utc();\n today.set(\"hours\", 0);\n today.set(\"minutes\", 0);\n today.set(\"seconds\", 0);\n today.set(\"milliseconds\", 0);\n today = today.toDate();\n let timeNow = moment();\n timeNow.set(\"year\", 1970);\n timeNow.set(\"month\", 0);\n timeNow.set(\"date\", 1);\n timeNow.set(\"hours\", timeNow.hours() + timeNow.utcOffset() / 60)\n timeNow.set(\"seconds\", 0);\n timeNow.set(\"milliseconds\", 0);\n timeNow = timeNow.toDate();\n return {\n now,\n today,\n timeNow\n };\n}\n\nexport const parseSingleExpression = function (func, formData, dataPath, global) {\n if (global) {\n Object.assign(global, getGlobalNowData());\n }\n var error, funcBody, getParentPath, getValueByPath, globalTag, parent, parentPath, str;\n getParentPath = function (path) {\n var pathArr;\n if (typeof path === 'string') {\n pathArr = path.split('.');\n if (pathArr.length === 1) {\n return '#';\n }\n pathArr.pop();\n return pathArr.join('.');\n }\n return '#';\n };\n getValueByPath = function (formData, path) {\n if (path === '#' || !path) {\n return formData || {};\n } else if (typeof path === 'string') {\n return _.get(formData, path);\n } else {\n console.error('path has to be a string');\n }\n };\n if (formData === void 0) {\n formData = {};\n }\n parentPath = getParentPath(dataPath);\n parent = getValueByPath(formData, parentPath) || {};\n if (typeof func === 'string') {\n funcBody = func.substring(2, func.length - 2);\n globalTag = '__G_L_O_B_A_L__';\n str = '\\n return ' + funcBody.replace(/\\bformData\\b/g, JSON.stringify(formData).replace(/\\bglobal\\b/g, globalTag)).replace(/\\bglobal\\b/g, JSON.stringify(global)).replace(new RegExp('\\\\b' + globalTag + '\\\\b', 'g'), 'global').replace(/rootValue/g, JSON.stringify(parent));\n try {\n return Function(str)();\n } catch (_error) {\n error = _error;\n console.log(error, func, dataPath);\n return func;\n }\n } else {\n return func;\n }\n};","/*\n * @LastEditTime: 2024-02-28 15:37:24\n * @LastEditors: baozhoutao@steedos.com\n * @customMade: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\n */\nimport * as _ from 'lodash';\nimport { isFunction, isNumber, isBoolean, isString, isNil, isDate } from 'lodash';\nimport { safeRunFunction, safeEval } from '../utils';\nimport { isExpression, parseSingleExpression } from '../expression';\n\n/**\n 把原来的默认值公式表达式转换成新的表达式语法,原来的表达式语法如下所示:\n ==========\n 取一个字段的值:使用“{”和“}” (注意都是半角)将字段名扩起来,如:{price}\n 基于当前用户的系统变量:包括姓名、角色、部门等\n ID: {userId}\n 姓名:{user.name}\n 所在部门(当申请人属于多个部门时,为所在主部门的全路径): {user.organization.fullname}\n 所在部门(最底层部门名): {user.organization.name}\n 角色名: {user.roles}\n 手机: {user.mobile}\n 固定电话: {user.work_phone}\n 职务: {user.position}\n 取当前工作区的信息\n ID: {spaceId}\n ===========\n * @param express \n */\nconst getCompatibleDefaultValueExpression = (express, multiple) => {\n const reg = /^\\{\\w+(\\.*\\w+)*\\}$/;//只转换{}包着的老语法,新语法是两层大括号{{}},不运行转换\n const reg2 = /^{{[\\s\\S]*}}$/; //转换{{ function(){} }} 或 {{ (item)=>{} }}\n let result = express;\n if (reg.test(express)) {\n if (express.indexOf(\"userId\") > -1 || express.indexOf(\"spaceId\") > -1 || express.indexOf(\"user.\") > -1 || express.indexOf(\"now\") > -1 || express.indexOf(\"today\") > -1 || express.indexOf(\"timeNow\") > -1) {\n result = `{${express}}`.replace(\"{{\", \"{{global.\");\n }\n else {\n result = `{${express}}`.replace(\"{{\", \"{{formData.\");\n }\n if (multiple) {\n // 如果是多选字段,则返回值应该加上中括号包裹,表示返回数组\n result = result.replace(/\\{\\{(.+)\\}\\}/, \"{{[$1]}}\")\n }\n }\n if(reg2.test(express) && (express.indexOf('function')>-1 || express.indexOf('=>')>-1)){\n // 使用正则表达式提取函数\n let regex = /\\{\\{([\\s\\S]*)\\}\\}/;\n let matches = regex.exec(express);\n if (matches && matches.length > 1) {\n let functionCode = matches[1];\n result = eval(\"(\" + functionCode + \")\")();\n }\n }\n return result;\n}\n\nexport const getFieldDefaultValue = (field, globalData) => {\n if (!field) {\n return null\n }\n\n let defaultValue = field.defaultValue;\n\n if (field._defaultValue) {\n defaultValue = safeEval(`(${field._defaultValue})`);\n }\n if (isFunction(defaultValue)) {\n defaultValue = safeRunFunction(defaultValue, [], null, { name: field.name });\n }\n if (_.isString(defaultValue)) {\n // 支持{userId}这种格式\n defaultValue = getCompatibleDefaultValueExpression(defaultValue, field.multiple);\n }\n // const isFormula = _.isString(defaultValue) && defaultValue.startsWith(\"{{\");\n const isFormula = isExpression(defaultValue);\n if (isFormula) {\n // 支持{{global.user.name}}这种公式\n // globalData中传入原来 window.Creator?.USER_CONTEXT || {}, {now: new Date()} 这种逻辑,可以从amis的数据链中取变量global的值\n if(field.type === \"date\"){\n // 日期类型字段,兼容老代码配置的now,值应该存储为today\n defaultValue = defaultValue.replace(/\\bglobal.now\\b/g, \"global.today\");\n }\n else if(field.type === \"time\"){\n // 时间类型字段,支持配置now表示timeNow\n defaultValue = defaultValue.replace(/\\bglobal.now\\b/g, \"global.timeNow\");\n }\n defaultValue = parseSingleExpression(defaultValue, {}, \"#\", globalData)\n // defaultValue = `\\$${defaultValue.substring(1, defaultValue.length - 1)}`\n }\n switch (field.type) {\n case 'select':\n const dataType = field.data_type || 'text';\n if (defaultValue && !isFormula && !field.multiple) {\n if (dataType === 'text' && !isString(defaultValue)) {\n defaultValue = String(defaultValue);\n } else if (dataType === 'number' && isString(defaultValue)) {\n defaultValue = Number(defaultValue);\n } else if (dataType === 'boolean' && isString(defaultValue)) {\n // defaultValue = defaultValue === 'false' ? false : true;\n defaultValue = defaultValue.toLowerCase() === 'true' || defaultValue === '1';\n }\n }\n break;\n case 'number':\n if(isString(defaultValue)){\n defaultValue = Number(defaultValue);\n }\n break;\n case 'boolean':\n if (isString(defaultValue)) {\n defaultValue = defaultValue.toLowerCase() === 'true' || defaultValue === '1';\n }\n else if(!isBoolean(defaultValue)){\n // 未设置值时默认给定false值,这样字段必填时就不会校验不通过\n defaultValue = false;\n }\n break;\n case 'time':\n if(isDate(defaultValue)){\n return moment(defaultValue).format('1970-01-01THH:mm:00.000[Z]')\n }\n case 'date':\n if(isDate(defaultValue)){\n return moment(defaultValue).format('YYYY-MM-DDT00:00:00.000[Z]')\n }\n case 'datetime':\n if(isDate(defaultValue)){\n return moment(defaultValue).format('YYYY-MM-DDTHH:mm:00.000Z')\n }\n default:\n break;\n }\n\n return defaultValue;\n}\n","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-04-18 17:03:48\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2024-01-23 18:16:11\n */\n\n/**\n * \n * @param {*} rows rows内必须有value,parent,children\n * @returns 把扁平的数据转换为树状结构的数据\n * @options unfoldedNum默认展开层数,默认值为1;valueField为每一条记录的id\n */\nexport function getTreeOptions(rows, options) {\n\n const valueField = options?.valueField || \"value\";\n const labelField = options?.labelField || \"label\";\n const unfoldedNum = options?.unfoldedNum || 1;\n\n const treeRecords = [];\n const getChildren = (currentRow, rows, childrenIds, childrenUnfoldedNum) => {\n if (currentRow.children && typeof currentRow.children[0] === \"object\") {\n // 考虑api配置了cache缓存的话,不会请求接口但是会重新进这个接收适配器脚本且payload.data.options返回的会是上一次计算结果,这里直接返回计算过的children\n return currentRow.children;\n }\n if (!childrenIds) {\n return;\n }\n const children = _.filter(rows, (row) => {\n return _.includes(childrenIds, row[valueField])\n });\n _.each(children, (item) => {\n if (childrenUnfoldedNum >= 1) {\n item.unfolded = true;\n if (item[\"children\"]) {\n item[\"children\"] = getChildren(item, rows, item[\"children\"], childrenUnfoldedNum - 1)\n }\n } else {\n if (item[\"children\"]) {\n item[\"children\"] = getChildren(item, rows, item[\"children\"], childrenUnfoldedNum)\n }\n }\n\n })\n return children;\n }\n\n const getRoot = (rows) => {\n for (var i = 0; i < rows.length; i++) {\n rows[i].noParent = 0;\n rows[i].unfolded = false;//将所有节点的默认展开设置关闭\n if (!!rows[i][\"parent\"]) {\n let biaozhi = 1;\n for (var j = 0; j < rows.length; j++) {\n if (rows[i][\"parent\"] == rows[j][valueField])\n biaozhi = 0;\n }\n if (biaozhi == 1) rows[i].noParent = 1;\n } else rows[i].noParent = 1;\n }\n }\n getRoot(rows);\n\n _.each(rows, (row) => {\n if (row.noParent == 1) {\n if (unfoldedNum >= 1) {\n row.unfolded = true;\n treeRecords.push(Object.assign({}, row, { children: getChildren(row, rows, row[\"children\"], unfoldedNum - 1) }));\n }else{\n treeRecords.push(Object.assign({}, row, { children: getChildren(row, rows, row[\"children\"], unfoldedNum) }));\n }\n }\n });\n\n return treeRecords;\n}","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-05-10 22:08:05\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-05-12 13:39:53\n */\n\n/**\n * 递归children找到listview-filter-form\n * @param {*} scope amis scope,在事件中值为event.context.scoped\n * @param {*} type 组件类型,比如form/button\n * @param {*} options\n * @param {*} options.name 组件名称,非必填,未填写时只匹配组件type\n * @param {*} options.direction 递归查找方向,up表示往parent逐层递归查找,down表示往children逐层递归查找,默认值为up\n * @returns 返回scope中找到的amis组件\n */\nexport function getClosestAmisComponentByType(scope, type, options) {\n if (!options) {\n options = {};\n }\n let name = options.name;\n let direction = options.direction || \"up\";\n let re = scope.getComponents().find(function (n) {\n return n.props.type === type && (!name || n.props.name === name);\n });\n if (re) {\n return re;\n }\n else if (direction === \"down\") {\n if (scope.children && scope.children.length) {\n for (let i = 0; i < scope.children.length; i++) {\n re = getClosestAmisComponentByType(scope.children[i], type, options);\n if (re) {\n break;\n }\n }\n return re;\n }\n\n }\n else if (direction === \"up\") {\n if (scope.parent) {\n return getClosestAmisComponentByType(scope.parent, type, options);\n }\n }\n}\n\n/**\n * 判断是否crud顶部的搜索栏设置了非空的过滤条件\n * @param {*} formValues filterFormValues,crud顶部的搜索栏表单项值\n * @returns boolean\n */\nexport function isFilterFormValuesEmpty(formValues) {\n let isEmpty = true;\n let filterFormValues = _.pickBy(formValues, function (n, k) {\n return /^__searchable__/g.test(k);\n });\n if (!_.isEmpty(filterFormValues)) {\n const omitedEmptyFormValue = _.omitBy(filterFormValues, function (n) {\n return _.isNil(n)\n || (_.isObject(n) && _.isEmpty(n))\n || (_.isArray(n) && _.isEmpty(n.filter(function (item) { return !_.isNil(item) })))\n || (_.isString(n) && n.length === 0);\n });\n // 有过滤条件时自动展开搜索栏\n if (!_.isEmpty(omitedEmptyFormValue)) {\n isEmpty = false;\n }\n }\n return isEmpty;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-27 15:54:12\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2025-09-02 19:57:05\n * @Description: \n */\nimport { message, notification, Button, Space} from 'antd';\nimport {Modal, Drawer} from './modal'\nimport { SObject } from './sObject';\nimport { ListView } from './listView';\nimport { Router } from './router';\nimport { render } from './render';\nimport { getFieldDefaultValue } from './defaultValue';\nimport { getTreeOptions } from './tree';\nimport { getClosestAmisComponentByType, isFilterFormValuesEmpty } from './amis';\nimport { compact, isEmpty } from 'lodash';\n\nexport const SteedosUI = Object.assign({}, {\n render: render,\n Router,\n ListView,\n Object: SObject,\n Modal, \n Drawer,\n refs: {},\n getRef(name){\n return SteedosUI.refs[name];\n },\n router:{\n // TODO: 简易处理\n go: (action, to)=>{\n const {type, objectName, recordId } = action || {};\n const router = window.FlowRouter;\n \n if(to){\n if(router){\n return router.go(to);\n }\n /* TODO: 补充处于nextjs环境下的跳转\n else if(){\n return router.push(to);\n }\n */\n else{\n return window.open(to);\n }\n }\n \n if(router){\n router.reload();\n }else{\n console.warn('暂不支持自动跳转', action)\n }\n },\n reload: ()=>{\n console.log('reload')\n }\n },\n message,\n notification,\n components: {\n Button, Space\n },\n getRefId: ({type, appId, name})=>{\n switch (type) {\n case 'listview':\n return `amis-${appId}-${name}-listview`;\n case 'form':\n return `amis-${appId}-${name}-form`;\n case 'detail':\n return `amis-${appId}-${name}-detail`;\n default:\n return `amis-${appId}-${name}-${type}`;\n }\n },\n reloadRecord: ()=>{\n if(window.FlowRouter){\n return window.FlowRouter.reload();\n }else{\n // TODO 调用steedos object form 的 reload action\n }\n },\n getFieldDefaultValue,\n getTreeOptions,\n getClosestAmisComponentByType,\n isFilterFormValuesEmpty,\n getSearchFilter: (data)=>{\n var searchableFilter = [];\n _.each(data, (value, key)=>{\n if(!_.isEmpty(value) || _.isBoolean(value)){\n if(_.startsWith(key, '__searchable__between__')){\n if (value.filter(v => v !== null && v !== undefined && v !== \"\").length > 0) {\n searchableFilter.push([`${key.replace(\"__searchable__between__\", \"\")}`, \"between\", value])\n }\n }else if(_.startsWith(key, '__searchable__')){\n if(_.isString(value)){\n searchableFilter.push([`${key.replace(\"__searchable__\", \"\")}`, \"contains\", value])\n }else if(_.isObject(value) && value.o){\n // reference_to是数组的lookup字段\n let leftKey = `${key.replace(\"__searchable__\", \"\")}`;\n let lookupFieldFilter = [[leftKey + \"/o\", \"=\", value.o]];\n if(value.ids.length){\n lookupFieldFilter.push([leftKey + \"/ids\", \"=\", value.ids])\n }\n searchableFilter.push(lookupFieldFilter)\n }\n else{\n searchableFilter.push([`${key.replace(\"__searchable__\", \"\")}`, \"=\", value])\n }\n }\n }\n });\n return searchableFilter;\n },\n /**\n * 传入amis form data,返回用于crud/picker列表顶部表单搜索中用的form values\n * @param {*} data amis form data,不带__searchable__前缀\n * @param {*} fields 对象的字段定义,可以传入对象uiSchema接口返回的fields属性\n * @returns amis form data,带__searchable__前缀\n */\n getSearchFilterFormValues: (data, fields)=>{\n if (_.isObject(data) || !_.isEmpty(data)){\n let formData = data;\n if (fields){\n formData = _.pickBy(data, function(n,k){\n return !!fields[k];\n });\n }\n let formValues = _.mapKeys(formData, function (n, k) {\n let fieldNamePrefix = '__searchable__';\n if (fields){\n const fieldType = fields[k]?.type;\n if (fieldType === 'number' || fieldType === 'currency') {\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n else if (fieldType === 'date') {\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n else if (fieldType === 'datetime') {\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n else if (fieldType === 'time') {\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n }\n return fieldNamePrefix + k;\n });\n return formValues;\n }\n else {\n return data;\n }\n },\n getKeywordsSearchFilter: (keywords, allowSearchFields) => {\n const keywordsFilters = [];\n if (keywords && allowSearchFields) {\n var keyValues = keywords.split(/\\s+/);//按空格分隔转为数组\n keyValues = compact(keyValues);//移除空字符串元素\n allowSearchFields.forEach(function (key, index) {\n let everyFieldFilters = [];\n if(keyValues.length == 1){\n // 长度为1时说明没有空格分隔,直接赋值简化处理,而不是push,可以让输出的过滤条件少套一层无意义的数组\n everyFieldFilters = [key, \"contains\", keyValues[0]];\n }\n else{\n keyValues.forEach(function(valueItem, valueIndex){\n everyFieldFilters.push([key, \"contains\", valueItem]);\n if (valueIndex < keyValues.length - 1) {\n everyFieldFilters.push('and');\n }\n });\n }\n if(everyFieldFilters.length){\n keywordsFilters.push(everyFieldFilters);\n if (index < allowSearchFields.length - 1) {\n keywordsFilters.push('or');\n }\n }\n })\n };\n return keywordsFilters;\n },\n getFormulaVariables: (fieldOptions, hasGlobal = true) => {\n const t = window.steedosI18next.t;\n const variables = [];\n if (!isEmpty(fieldOptions)) {\n variables.push({\n \"label\": t('frontend_formula_variables_tab_form_fields', '表单字段'),\n \"children\": [\n\n ]\n });\n lodash.forEach(fieldOptions,function (field) {\n variables[0].children.push({\n \"label\": field.label,\n \"value\": field.value\n })\n })\n }\n if (hasGlobal) {\n variables.push({\n \"label\": t('frontend_formula_variables_tab_form_global', '全局变量'),\n \"children\": [\n {\n \"label\": t('frontend_formula_variables_global_userId', '用户ID'),\n \"value\": \"global['userId']\"\n },\n {\n \"label\": t('frontend_formula_variables_global_spaceId', '工作区ID'),\n \"value\": \"global['spaceId']\"\n },\n // 因为默认值不能选这个选项,先直接去除\n // {\n // \"label\": \"只读/编辑模式\",\n // \"value\": \"global['mode']\"\n // },\n {\n \"label\": window.t('CustomObject.users.label', '用户'),\n \"children\": [\n {\n \"label\": window.t('CustomField.space_users.name.label'),//姓名\n \"value\": \"global['user']['name']\"\n },\n {\n \"label\": window.t('CustomField.space_users.email.label'),//邮件\n \"value\": \"global['user']['email']\"\n },\n {\n \"label\": window.t('CustomField.space_users.locale.label'),//语言\n \"value\": \"global['user']['language']\"\n },\n {\n \"label\": window.t('CustomField.space_users.profile.label'),//\"简档\",\n \"value\": \"global['user']['profile']\"\n },\n {\n \"label\": t('frontend_formula_variables_global_user_roles', '权限集'),\n \"value\": \"global['user']['roles']\"\n },\n {\n \"label\": window.t('CustomField.space_users.organization.label') + \" ID\",//\"主部门ID\",\n \"value\": \"global['user']['organization']['_id']\"\n },\n // 值为对象数组,先去掉\n // {\n // \"label\": \"部门(多选)\",\n // \"value\": \"global['user']['organizations']\"\n // },\n {\n \"label\": window.t('CustomField.space_users.organizations_parents.label'),//\"部门(含上级)\",\n \"value\": \"global['user']['organizations_parents']\" \n },\n {\n \"label\": window.t('CustomField.space_users.company_id.label') + \" ID\",//\"主分部ID\",\n \"value\": \"global['user']['company_id']\"\n },\n {\n \"label\": window.t('CustomField.space_users.company_ids.label'),//\"分部(多选)\",\n \"value\": \"global['user']['company_ids']\" \n },\n {\n \"label\": t('frontend_formula_variables_global_user_spaceUserId', '人员ID'),\n \"value\": \"global['user']['spaceUserId']\"\n },\n {\n \"label\": t('frontend_formula_variables_global_user_is_space_admin', '是否工作区管理员'),\n \"value\": \"global['user']['is_space_admin']\"\n }\n ]\n }\n ]\n });\n }\n return variables;\n },\n traverseNestedArrayFormula: (arr, data) => {\n var currentAmis = (window.amisRequire && window.amisRequire('amis')) || Amis;\n for (let i = 0; i < arr.length; i++) {\n if (Array.isArray(arr[i])) {\n // 如果当前元素是数组,则递归调用自身继续遍历\n SteedosUI.traverseNestedArrayFormula(arr[i], data);\n } else {\n // 如果当前元素不是数组,则处理该元素\n // 下面正则用于匹配amis公式\\${}\n if (/\\$\\{([^}]*)\\}/.test(arr[i])) {\n try {\n arr[i] = currentAmis.evaluate(arr[i], data);\n } catch (ex) {\n console.error(\"运行过滤器公式时出现错误:\", ex);\n }\n }\n }\n }\n }\n})","// 将svg文件打开后,把xml内容转换为json格式(https://www.bejson.com/xml2json/),然后执行此脚本获取icon标识:_.pluck(json.svg.symbol, \"-id\").join(\",\")\nvar _STANDARD_SPRITE_IDS = \"account,account_info,action_list_component,actions_and_buttons,activation_target,activations,address,agent_home,agent_session,aggregation_policy,all,announcement,answer_best,answer_private,answer_public,apex,apex_plugin,app,approval,apps,apps_admin,article,asset_action,asset_action_source,asset_audit,asset_downtime_period,asset_object,asset_relationship,asset_state_period,asset_warranty,assigned_resource,assignment,attach,avatar,avatar_loading,bot,bot_training,branch_merge,brand,budget,budget_allocation,bundle_config,bundle_policy,business_hours,buyer_account,buyer_group,calculated_insights,calibration,call,call_coaching,call_history,campaign,campaign_members,cancel_checkout,canvas,capacity_plan,care_request_reviewer,carousel,case,case_change_status,case_comment,case_email,case_log_a_call,case_milestone,case_transcript,case_wrap_up,catalog,category,change_request,channel_program_history,channel_program_levels,channel_program_members,channel_programs,chart,checkout,choice,client,cms,coaching,code_playground,code_set,code_set_bundle,collection,collection_variable,connected_apps,constant,contact,contact_list,contact_request,contract,contract_line_item,contract_payment,coupon_codes,currency,currency_input,custom,custom_component_task,custom_notification,customer_360,customer_lifecycle_analytics,customer_portal_users,customers,dashboard,dashboard_component,dashboard_ea,data_integration_hub,data_mapping,data_model,data_streams,datadotcom,dataset,date_input,date_time,decision,default,delegated_account,device,discounts,display_rich_text,display_text,document,document_reference,drafts,duration_downscale,dynamic_record_choice,education,einstein_replies,email,email_chatter,employee,employee_asset,employee_contact,employee_job,employee_job_position,employee_organization,empty,endorsement,entitlement,entitlement_policy,entitlement_process,entitlement_template,entity,entity_milestone,environment_hub,event,events,expense,expense_report,expense_report_entry,feed,feedback,field_sales,file,filter,filter_criteria,filter_criteria_rule,first_non_empty,flow,folder,forecasts,form,formula,fulfillment_order,generic_loading,global_constant,goals,group_loading,groups,guidance_center,hierarchy,high_velocity_sales,historical_adherence,holiday_operating_hours,home,household,identifier,immunization,incident,individual,insights,instore_locations,investment_account,invocable_action,iot_context,iot_orchestrations,javascript_button,job_family,job_position,job_profile,kanban,key_dates,knowledge,lead,lead_insights,lead_list,letterhead,lightning_component,lightning_usage,link,list_email,live_chat,live_chat_visitor,location,location_permit,log_a_call,logging,loop,macros,maintenance_asset,maintenance_plan,maintenance_work_rule,marketing_actions,med_rec_recommendation,med_rec_statement_recommendation,medication,medication_dispense,medication_ingredient,medication_reconciliation,medication_statement,merge,messaging_conversation,messaging_session,messaging_user,metrics,multi_picklist,multi_select_checkbox,network_contract,news,note,number_input,observation_component,omni_supervisor,operating_hours,opportunity,opportunity_contact_role,opportunity_splits,orchestrator,order_item,orders,outcome,output,partner_fund_allocation,partner_fund_claim,partner_fund_request,partner_marketing_budget,partners,password,past_chat,patient_medication_dosage,payment_gateway,people,performance,person_account,person_language,person_name,photo,picklist_choice,picklist_type,planogram,poll,portal,portal_roles,portal_roles_and_subordinates,post,practitioner_role,price_book_entries,price_books,pricebook,pricing_workspace,problem,procedure,procedure_detail,process,process_exception,product,product_consumed,product_consumed_state,product_item,product_item_transaction,product_quantity_rules,product_request,product_request_line_item,product_required,product_service_campaign,product_service_campaign_item,product_transfer,product_transfer_state,product_warranty_term,product_workspace,products,promotion_segments,promotions,promotions_workspace,propagation_policy,proposition,qualifications,question_best,question_feed,queue,quick_text,quip,quip_sheet,quotes,radio_button,read_receipts,recent,recipe,record,record_create,record_delete,record_lookup,record_signature_task,record_update,recycle_bin,related_list,relationship,reply_text,report,report_type,resource_absence,resource_capacity,resource_preference,resource_skill,restriction_policy,return_order,return_order_line_item,reward,rtc_presence,sales_cadence,sales_cadence_target,sales_channel,sales_path,sales_value,salesforce_cms,scan_card,schedule_objective,scheduling_constraint,scheduling_policy,screen,search,section,segments,selling_model,serialized_product,serialized_product_transaction,service_appointment,service_appointment_capacity_usage,service_contract,service_crew,service_crew_member,service_report,service_request,service_request_detail,service_resource,service_territory,service_territory_location,service_territory_member,service_territory_policy,settings,shift,shift_pattern,shift_pattern_entry,shift_preference,shift_scheduling_operation,shift_template,shift_type,shipment,skill,skill_entity,skill_requirement,slack,slider,sms,snippet,snippets,sobject,sobject_collection,social,solution,sort,sort_policy,sossession,stage,stage_collection,steps,store,store_group,story,strategy,survey,swarm_request,swarm_session,system_and_global_variable,tableau,task,task2,team_member,template,text,text_template,textarea,textbox,thanks,thanks_loading,timesheet,timesheet_entry,timeslot,today,toggle,topic,topic2,tour,tour_check,trailhead,trailhead_alt,travel_mode,unified_health_score,unmatched,user,user_role,variable,variation_attribute_setup,variation_products,video,visit_templates,visits,visualforce_page,voice_call,waits,warranty_term,webcart,work_capacity_limit,work_capacity_usage,work_contract,work_forecast,work_order,work_order_item,work_plan,work_plan_rule,work_plan_template,work_plan_template_entry,work_queue,work_step,work_step_template,work_type,work_type_group,workforce_engagement\"\n\n\nexport const sldsIcons = {\n\tstandard: _STANDARD_SPRITE_IDS.split(\",\")\n}","import * as _ from 'lodash';\nimport { SteedosUI } from '../ui';\n\nexport const organizationsTree = {\n // 抄widgets crud中获取可搜索字段的相关代码\n getSearchableFields: function (api) {\n const QUICK_SEARCHABLE_FIELD_TYPES = [\"text\", \"textarea\", \"autonumber\", \"url\", \"email\"];\n function isFieldQuickSearchable(field, nameFieldKey) {\n let fieldSearchable = field.searchable;\n if (fieldSearchable !== false && field.name === nameFieldKey) {\n // 对象上名称字段的searchable默认认为是true\n fieldSearchable = true;\n }\n if (fieldSearchable && QUICK_SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1) {\n return true;\n }\n return false;\n }\n\n const searchableFields = [];\n const mainObject = api.context.uiSchema;\n if (mainObject) {\n _.each(mainObject.fields, function (field) {\n if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {\n searchableFields.push(field.name);\n }\n })\n }\n return searchableFields;\n },\n // 抄widgets crud中发送适配器整理过滤条件的相关代码\n getApiRequestAdaptor: function (api, context, option: any = {}) {\n var keywordsSearchBoxName = \"__keywords\";\n const __lookupField = context.__lookupField;\n if (option.isLookup) {\n if (context.op === \"loadOptions\") {\n var filters = [[\"_id\", \"=\", context.value]];\n return Object.assign({}, api, {\n \"method\": \"post\",\n \"url\": \"/graphql\",\n \"data\": {\n \"query\": '{rows:organizations(filters: ' + JSON.stringify(filters) + ', top: 5000, skip: 0, sort: \"sort_no desc\"){_id,fullname,name,sort_no,_display:_ui{sort_no},parent,children}}'\n }\n });\n }\n else{\n if(__lookupField){\n keywordsSearchBoxName = `__keywords_lookup__${__lookupField.name.replace(/\\./g, \"_\")}__to__${__lookupField.reference_to}`;\n }\n else{\n // 没有__lookupField是异常情况,此时不传入任何过滤条件,避免使用默认的__keywords\n keywordsSearchBoxName = \"\";\n console.error(\"lookup字段快速搜索异常,作用域中未找到变量__lookupField\");\n }\n }\n }\n var allowSearchFields = this.getSearchableFields(api);\n var filters: any[][] = [];\n if (option.isLookup) {\n const inFilterForm = __lookupField.inFilterForm;\n const listviewFilter = __lookupField.listviewFilter;\n if (listviewFilter && listviewFilter.length && !inFilterForm) {\n filters = listviewFilter;\n }\n }\n var selfData = JSON.parse(JSON.stringify(api.context));\n var searchableFilter = SteedosUI.getSearchFilter(selfData) || [];\n if (searchableFilter.length > 0) {\n if (filters.length > 0) {\n filters = [filters, \"and\" as any, searchableFilter];\n } else {\n filters = searchableFilter;\n }\n }\n // \"搜索此列表\"搜索框\n if (allowSearchFields) {\n allowSearchFields.forEach(function (key) {\n const keyValue = selfData[key];\n if (_.isString(keyValue)) {\n filters.push([key, \"contains\", keyValue]);\n } else if (_.isArray(keyValue) || _.isBoolean(keyValue) || keyValue) {\n filters.push([key, \"=\", keyValue]);\n }\n })\n }\n var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData[keywordsSearchBoxName], allowSearchFields);\n if (keywordsFilters && keywordsFilters.length > 0) {\n filters.push(keywordsFilters);\n }\n\n if (option.isLookup) {\n var fieldFilters = __lookupField.filters;\n //递归fieldFilters数组,检查每一个元素,判断若是公式,就仅把它解析\n if(fieldFilters && fieldFilters.length){\n SteedosUI.traverseNestedArrayFormula(fieldFilters, api.context);\n filters.push(fieldFilters);\n }\n\n const inFilterForm = __lookupField.inFilterForm;\n let listviewFiltersFunction = __lookupField.listviewFiltersFunction;\n if(typeof listviewFiltersFunction === \"string\"){\n listviewFiltersFunction = new Function(`return ${listviewFiltersFunction}`)();\n }\n let filtersFunction = __lookupField.filtersFunction || __lookupField._filtersFunction;\n if(typeof filtersFunction === \"string\"){\n filtersFunction = new Function(`return ${filtersFunction}`)();\n }\n if(listviewFiltersFunction && !inFilterForm){\n const _filters0 = listviewFiltersFunction(filters, api.context);\n if(_filters0 && _filters0.length){\n filters.push(_filters0);\n }\n }\n \n if(filtersFunction && !inFilterForm){\n const _filters = filtersFunction(filters, api.context);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n }\n\n api.data = {};\n\n if (filters.length > 0) {\n Object.assign(api.data, {\n filters: JSON.stringify(filters)\n });\n }\n\n const queryFields = api.body && api.body.queryFields;\n if(queryFields){\n Object.assign(api.data, {\n fields: queryFields\n });\n }\n\n if(api.body.$self){\n // amis bug,接口为Get请求时,url上的data参数无法删除,只能手动把url重写掉,见:https://github.com/baidu/amis/issues/9813\n let rootURL = api.body.$self.context && api.body.$self.context.rootUrl || \"\";\n // url为${context.rootUrl}/service/api/organizations/root\n api.url = rootURL = \"/service/api/organizations/root\";\n }\n\n return api;\n },\n getApiAdaptor: function (payload, response, api, context, option: any = {}) {\n if(option.isLookup && context.op === \"loadOptions\") {\n const rows = _.map(payload.data.rows, function (item) {\n delete item.children;\n delete item.parent;\n return item;\n });\n payload.data.rows = rows;\n\n return payload;\n }\n let filtersJson = api.data && api.data.filters;\n payload.data = {\n ...payload.data,\n isFilter: !!filtersJson\n };\n\n // 把上面拿到的queryFields返回到data中,以便在getDeferApiRequestAdaptor中能拿到queryFields\n payload.data.__rootQueryFields = api.data && api.data.fields;\n\n // 因为自动展开的第一层节点拿不到上面返回的__rootQueryFields,只能把它放到rows数据内,以便在getDeferApiRequestAdaptor中能始终能拿到queryFields\n (payload.data.rows || []).forEach(function (item) {\n item.__rootQueryFields = api.data && api.data.fields;\n });\n\n return payload;\n },\n getDeferApiRequestAdaptor: function (api, context, option = {}) {\n var selfData = JSON.parse(JSON.stringify(api.context));\n let filters = [];\n var dep = selfData._id;\n if (dep) {\n filters = [['parent', '=', dep]];\n }\n\n const queryFields = (context && context.__rootQueryFields) || \"_id,fullname,name,sort_no,hidden,_display:_ui{sort_no,hidden},parent,children\";\n\n return Object.assign({}, api, {\n data: {\n query: '{rows:organizations(filters: ' + JSON.stringify(filters) + ', top: 5000, skip: 0, sort: \"sort_no desc\"){' + queryFields + '}}'\n }\n });\n },\n getDeferApiAdaptor: function (payload, response, api, context, option = {}) {\n var data = payload.data;\n if (data.children) {\n return payload;\n }\n data.rows = data.rows.map(function (optionItem) {\n optionItem.defer = !!(optionItem.children && optionItem.children.length);\n delete optionItem.children;\n return optionItem;\n });\n\n data.children = data.rows;\n delete data.rows;\n delete data.count;\n return payload;\n }\n}\n\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-10-25 09:16:09\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2025-02-17 10:25:43\n * @Description: \n */\n\nimport { StandardObjects } from './standard_objects'\nimport { authRequest } from './authRequest'\nimport { SteedosUI } from './ui';\nimport { sldsIcons } from './icon';\nimport * as Expression from './expression';\nimport { organizationsTree } from './organization/organizations_tree'\n\ndeclare var Builder;\n\nconst getBuilderContext = ()=>{\n if(typeof window === \"undefined\"){\n return {};\n }\n return Builder.settings.context ? Builder.settings.context : Builder.settings\n}\n\nexport const Steedos = {\n resources: {\n sldsIcons\n },\n organizationsTree,\n getRootUrl: (defaultRootUrl?)=>{\n const context: any = getBuilderContext()\n if(context.rootUrl){\n return context.rootUrl;\n }\n const rootUrl = typeof window != 'undefined' ? window.localStorage.getItem(\"steedos:rootUrl\") : '';\n if(rootUrl){\n return rootUrl\n }\n return defaultRootUrl;\n },\n absoluteUrl: (url = \"\")=>{\n return `${Steedos.getRootUrl()}${url}`\n },\n getTenantId: ()=>{\n try {\n let spaceId = getBuilderContext().tenantId\n \n if (window.location.search && !spaceId) {\n var searchParams = new URLSearchParams(window.location.search);\n spaceId = searchParams.get('X-Space-Id');\n }\n if (!spaceId) {\n return null;\n }\n return spaceId;\n } catch (error) {\n console.error(error)\n }\n },\n getAuthorization: ()=>{\n try {\n const context = getBuilderContext()\n let spaceId = context.tenantId;\n let token = context.authToken;\n \n if (!spaceId || !token) {\n return null;\n }\n return `Bearer ${spaceId},${token}`;\n } catch (error) {\n console.error(error)\n }\n },\n authRequest,\n StandardObjects,\n ...Expression\n}\n\nif(typeof window != 'undefined'){\n if((window as any).Steedos){\n (window as any).Steedos = Object.assign(Steedos, (window as any).Steedos);\n }else{\n (window as any).Steedos = Steedos;\n }\n}\n\nif(typeof window != 'undefined'){\n if((window as any).SteedosUI){\n (window as any).SteedosUI = Object.assign(SteedosUI, (window as any).SteedosUI);\n }else{\n (window as any).SteedosUI = SteedosUI;\n }\n}\n// else if(typeof window != 'undefined'){\n// (window as any).SteedosUI = Object.assign((window as any).SteedosUI, SteedosUI);\n// }\n\nexport { SteedosUI } from './ui';\n"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","StandardObjects","Base","Actions","standard_query","visible","objectName","recordId","record_permissions","standard_new","standard_edit","object_name","record_id","standard_delete","standard_import_data","object","hasImportTemplates","standard_approve","standard_view_instance","standard_submit_for_approval","window","Steedos","ProcessManager","allowSubmit","todo","submit","standard_follow","standard_delete_many","RegExp","test","location","pathname","standard_export_excel","authRequest","url","options","result","absoluteUrl","headers","name","value","getAuthorization","defOptions","type","dataType","contentType","beforeSend","XHR","forEach","header","setRequestHeader","success","data","error","XMLHttpRequest","textStatus","errorThrown","errorInfo","errorMsg","responseJSON","reason","message","console","$","ajax","err","_extends","target","key","source","newFunctionComponent","isVisible","setIsVisible","useState","close","has","props","SteedosUI","refs","show","React","createElement","Component","onCancel","onClose","width","style","maxWidth","minWidth","newComponentRender","prefix","container","document","getElementById","setAttribute","body","appendChild","element","createRoot","render","Modal","AntdModal","info","warning","confirm","Drawer","AntdDrawer","getGraphqlFieldsQuery","fieldsName","fields","push","each","fieldName","indexOf","split","join","getFindOneQuery","id","replace","queryFields","let","queryOptions","queryOptionsArray","SObject","getRecord","async","await","fetchAPI","method","JSON","stringify","query","record","getUISchema","force","canSaveFilter","listView","_id","owner","getSteedosAuth","userId","ListView","showFilter","filters","filtersToConditions","getVisibleFilter","userFilter","getQueryFilter","isEmpty","getFirstListView","uiSchema","_","first","sortBy","values","list_views","Router","getAppPath","appId","getPagePath","getObjectListViewPath","listViewName","getObjectDetailPath","getObjectRelatedViewPath","masterObjectName","masterRecordId","foreignKey","withModalWrap","component","provideProps","componentProps","wrapComponent","contentEle","ReactDOM","safeRunFunction","fun","args","defaultValue","_this","params","isNil","isArray","bind","log","safeEval","js","eval","e","isExpression","func","reg1","reg2","match","getMoment","amisRequire","moment","getGlobalNowData","now","Date","today","utc","timeNow","set","toDate","hours","utcOffset","parseSingleExpression","formData","dataPath","global","globalTag","parent","path","get","pathArr","pop","str","substring","Function","_error","getCompatibleDefaultValueExpression","express","multiple","reg","regex","matches","exec","functionCode","getFieldDefaultValue","field","globalData","_defaultValue","isFunction","isString","isFormula","data_type","Number","toLowerCase","String","isBoolean","isDate","format","getTreeOptions","rows","valueField","unfoldedNum","labelField","treeRecords","getChildren","currentRow","childrenIds","childrenUnfoldedNum","children","filter","includes","row","item","unfolded","noParent","biaozhi","j","getClosestAmisComponentByType","scope","direction","re","getComponents","find","isFilterFormValuesEmpty","formValues","filterFormValues","pickBy","k","omitedEmptyFormValue","omitBy","isObject","getRef","router","go","action","to","FlowRouter","open","reload","warn","notification","components","Button","Space","getRefId","reloadRecord","getSearchFilter","searchableFilter","leftKey","lookupFieldFilter","startsWith","v","o","ids","getSearchFilterFormValues","mapKeys","fieldNamePrefix","fieldType","getKeywordsSearchFilter","keywords","allowSearchFields","keywordsFilters","keyValues","compact","index","everyFieldFilters","valueItem","valueIndex","getFormulaVariables","fieldOptions","hasGlobal","steedosI18next","variables","label","lodash","traverseNestedArrayFormula","arr","currentAmis","Amis","Array","evaluate","ex","_STANDARD_SPRITE_IDS","sldsIcons","standard","organizationsTree","getSearchableFields","api","QUICK_SEARCHABLE_FIELD_TYPES","searchableFields","mainObject","context","nameFieldKey","fieldSearchable","NAME_FIELD_KEY","searchable","getApiRequestAdaptor","option","keywordsSearchBoxName","__lookupField","isLookup","op","concat","reference_to","inFilterForm","selfData","listviewFilter","parse","keyValue","fieldFilters","listviewFiltersFunction","filtersFunction","_filtersFunction","_filters0","_filters","$self","rootUrl","getApiAdaptor","payload","response","map","filtersJson","isFilter","__rootQueryFields","getDeferApiRequestAdaptor","dep","getDeferApiAdaptor","optionItem","defer","count","getBuilderContext","Builder","settings","resources","getRootUrl","defaultRootUrl","localStorage","getItem","getTenantId","spaceId","tenantId","search","URLSearchParams","token","authToken","Expression"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../src/standard_objects.ts","../../src/authRequest.ts","../src/ui/modal.jsx","../src/ui/sObject.jsx","../src/ui/listView.jsx","../src/ui/router.jsx","../../src/ui/render.tsx","../src/utils.js","../src/expression.js","../src/ui/defaultValue.js","../src/ui/tree.js","../src/ui/amis.js","../src/ui/navigationGuard.js","../src/ui/index.jsx","../src/icon/index.js","../../src/organization/organizations_tree.ts","../../src/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-10-25 09:17:54\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-01-05 17:56:58\n * @Description: \n */\n\n\nexport const StandardObjects = {\n Base: {\n Actions: {\n standard_query: {\n visible: (objectName, recordId, record_permissions)=>{\n // if(recordId){\n // return false;\n // }\n // return true;\n return false;\n }\n },\n standard_new: {\n visible: function (objectName, recordId, record_permissions) {\n if(objectName === 'cms_files' || objectName === 'instances'){\n return false;\n }\n if (record_permissions) {\n return record_permissions[\"allowCreate\"];\n }\n }\n },\n standard_edit:{\n visible: function (object_name, record_id, record_permissions) {\n if (record_permissions) {\n return record_permissions[\"allowEdit\"];\n }\n }\n },\n standard_delete:{\n visible: function (object_name, record_id, record_permissions) {\n if (record_permissions) {\n return record_permissions[\"allowDelete\"];\n }\n }\n },\n standard_import_data: {\n visible: function (object_name, record_id, record_permissions) {\n const { object } = this;\n if (record_permissions) {\n return record_permissions[\"allowCreate\"] && object.hasImportTemplates\n }\n }\n },\n // TODO\n standard_approve: {\n visible: function (object_name, record_id, record_permissions) {\n return false;\n }\n },\n // TODO\n standard_view_instance:{\n visible: function (object_name, record_id, record_permissions) {\n return false;\n }\n },\n // TODO\n standard_submit_for_approval: {\n visible: function (object_name, record_id, record_permissions) {\n return (window as any).Steedos.ProcessManager.allowSubmit.apply(this, [object_name, record_id]);\n },\n todo: function (object_name, record_id) {\n return (window as any).Steedos.ProcessManager.submit.apply(this, [object_name, record_id]);\n }\n },\n standard_follow: {\n visible: function (object_name, record_id, record_permissions) {\n return false;\n }\n },\n standard_delete_many:{\n visible: function (object_name, record_id, record_permissions) {\n // TODO: 简易处理。 记录页:相关子表右上角的批量删除按钮隐藏\n if (RegExp(\"\\\\w+/view/\\\\w+\").test(location.pathname)) {\n return false;\n }\n if (record_permissions) {\n return record_permissions[\"allowDelete\"];\n }\n }\n },\n // TODO\n standard_export_excel: {\n visible: function (object_name, record_id, record_permissions) {\n return false;\n }\n }\n }\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-11-08 13:25:35\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-11-08 13:39:37\n * @Description: \n */\n\ndeclare var $;\ndeclare var Steedos;\n\nexport const authRequest = (url, options)=>{\n var result = null;\n url = Steedos.absoluteUrl(url);\n try {\n var authorization = Steedos.getAuthorization();\n var headers = [{\n name: 'Content-Type',\n value: 'application/json'\n }, {\n name: 'Authorization',\n value: authorization\n }];\n\n var defOptions = {\n type: \"get\",\n url: url,\n dataType: \"json\",\n contentType: 'application/json',\n beforeSend: function (XHR) {\n if (headers && headers.length) {\n return headers.forEach(function (header) {\n return XHR.setRequestHeader(header.name, header.value);\n });\n }\n },\n success: function (data) {\n result = data;\n },\n error: function (XMLHttpRequest, textStatus, errorThrown) {\n if (XMLHttpRequest.responseJSON && XMLHttpRequest.responseJSON.error) {\n const errorInfo = XMLHttpRequest.responseJSON.error;\n result = { error: errorInfo }\n let errorMsg;\n if (errorInfo.reason) {\n errorMsg = errorInfo.reason;\n }\n else if (errorInfo.message) {\n errorMsg = errorInfo.message;\n }\n else {\n errorMsg = errorInfo;\n }\n console.error(errorMsg)\n }\n else {\n console.error(XMLHttpRequest.responseJSON)\n }\n }\n }\n $.ajax(Object.assign({}, defOptions, options));\n return result;\n } catch (err) {\n console.error(err);\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-03-28 09:36:35\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-01-13 14:37:26\n * @Description: \n */\nimport React, { useState } from 'react';\nimport {createRoot} from 'react-dom';\nimport { has, assign } from 'lodash'\nimport { Modal as AntdModal, Drawer as AntdDrawer } from \"antd\"\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nconst newFunctionComponent = (Component)=>{\n return (props)=>{\n // const ref = useRef(null);\n const [isVisible, setIsVisible] = useState(true);\n\n const defProps = {\n width: \"70%\",\n style: {\n width: \"70%\",\n maxWidth: \"950px\",\n minWidth: \"480px\",\n }\n };\n \n const show = () => {\n setIsVisible(true);\n };\n \n const close = () => {\n setIsVisible(false);\n }\n if(!has(props, 'ref')){\n window.SteedosUI.refs[props.name]= {\n show: show,\n close: close,\n // ref: ref\n }\n }\n // TODO fix build error: Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)\n return React.createElement(Component, _extends({\n visible: isVisible,\n onCancel: close,\n onClose: close\n }, defProps, props))\n }\n}\n\nconst newComponentRender = (prefix, Component)=>{\n return (props, container)=>{\n if(!props.name){\n props.name = `${prefix}-${props.name || 'default'}`;\n }\n if(!container){\n container = document.getElementById(`steedos-${prefix}-root-${props.name}`);\n if (!container) {\n container = document.createElement('div');\n container.setAttribute('id', `steedos-${prefix}-root-${props.name}`);\n document.body.appendChild(container)\n }\n }\n const element = React.createElement(newFunctionComponent(Component), props);\n const root = createRoot(container);\n root.render(element);\n }\n}\n\nexport const Modal = assign(newComponentRender('modal', AntdModal), {info: AntdModal.info, success: AntdModal.success, error: AntdModal.error, warning: AntdModal.warning, confirm: AntdModal.confirm});\n\nexport const Drawer = newComponentRender('drawer', AntdDrawer);\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-31 15:04:42\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-11-29 18:43:12\n * @Description: \n */\nimport { each } from 'lodash';\nimport { fetchAPI, getUISchema } from '@steedos-widgets/amis-lib';\n\nconst getGraphqlFieldsQuery = (fields)=>{\n const fieldsName = ['_id'];\n fields.push('record_permissions');\n //TODO 此处需要考虑相关对象查询\n each(fields, (fieldName)=>{\n if(fieldName.indexOf('.') > -1){\n fieldName = fieldName.split('.')[0]\n }\n fieldsName.push(`${fieldName}`)\n })\n return `${fieldsName.join(' ')}`;\n}\n\nconst getFindOneQuery = (objectName, id, fields)=>{\n objectName = objectName.replace(/\\./g, '_');\n const queryFields = getGraphqlFieldsQuery(fields);\n let queryOptions = ''\n let alias = \"record\";\n \n const queryOptionsArray = [`id: \"${id}\"`];\n \n if(queryOptionsArray.length > 0){\n queryOptions = `(${queryOptionsArray.join(',')})`\n }\n\n return `{${alias}:${objectName}__findOne${queryOptions}{${queryFields}}}`\n}\n\nexport const SObject = {\n getRecord: async (objectName, recordId, fields)=>{\n const result = await fetchAPI('/graphql', {\n method: 'post',\n body: JSON.stringify({\n query: getFindOneQuery(objectName, recordId, fields)\n })\n })\n return result.data.record;\n },\n getUISchema: async (objectName, force)=>{\n return await getUISchema(objectName, force)\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-04 17:10:53\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-02-24 17:52:04\n * @Description: \n */\n// import { AmisRender } from \"@/components/AmisRender\";\n// import { Button, Space} from 'antd';\nimport { isEmpty, isFunction } from \"lodash\";\nimport { conditionsToFilters, filtersToConditions } from '@steedos-widgets/amis-lib'\nimport { getSteedosAuth, fetchAPI } from \"@steedos-widgets/amis-lib\";\n\n// const filtersAmisSchema = require('@/amis/listview_filters.amis.json')\n\nconst canSaveFilter = (listView)=>{\n if(listView._id && listView.owner === getSteedosAuth()?.userId){\n return true;\n }else{\n return false;\n }\n}\n\nconst saveFilters = async (listView, filters)=>{\n const api = '/api/listview/filters';\n await fetchAPI(api, {\n method: 'post',\n body: JSON.stringify({\n id: listView._id,\n filters: filters\n })\n });\n await window.getUISchema(listView.object_name, true)\n}\n\nexport const ListView = {\n showFilter: (objectName, {listView, data, props, onFilterChange})=>{\n const pageName = `${objectName}-list-filter`;\n const amisScopeId = `amis-${pageName}`;\n const canSave = canSaveFilter(listView);\n if(data.filters){\n data.filters = filtersToConditions(data.filters)\n }\n // SteedosUI.Drawer(Object.assign({\n // name: pageName,\n // title: '高级过滤',\n // destroyOnClose: true,\n // maskClosable: false,\n // footer: null,\n // bodyStyle: {padding: \"0px\", paddingTop: \"12px\"},\n // children: <AmisRender\n // id={amisScopeId}\n // schema={filtersAmisSchema}\n // data={Object.assign({}, data, {objectName: objectName})}\n // ></AmisRender>,\n // mask: false,\n // width: 550,\n // style: null,\n // extra: (\n // <Space>\n // <Button onClick={(e)=>{\n // SteedosUI.getRef(pageName).close();\n // }}>取消</Button>\n // <Button type='primary' onClick={async (e)=>{\n // const formValues = SteedosUI.getRef(amisScopeId).getComponentById(\"filtersForm\").getValues()\n // const filters = conditionsToFilters(formValues.filters);\n // if(canSave){\n // saveFilters(listView, filters)\n // }\n // if(isFunction(onFilterChange)){\n // onFilterChange(filters)\n // }\n // SteedosUI.getRef(pageName).close();\n // }}>{canSave ? '保存' : '应用'}</Button>\n \n // </Space>)\n // }, props))\n },\n getVisibleFilter: (listView, userFilter)=>{\n if(userFilter){\n return userFilter;\n };\n const canSave = canSaveFilter(listView);\n if(canSave){\n return listView.filters;\n }\n },\n getQueryFilter: (listView, userFilter)=>{\n const canSave = canSaveFilter(listView);\n if(canSave){\n return ListView.getVisibleFilter(listView, userFilter);\n }else{\n if(isEmpty(userFilter)){\n return listView.filters;\n }else{\n return [listView.filters, 'and', userFilter];\n }\n }\n },\n getFirstListView: async(objectName)=>{\n const uiSchema = await window.getUISchema(objectName);\n return _.first(_.sortBy(_.values(uiSchema.list_views) , 'sort_no'));\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-16 17:02:08\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-09-14 16:32:05\n * @Description:\n */\n\n\nexport const Router = {\n getAppPath({formFactor, appId}){\n return `/app/${appId}`;\n },\n getPagePath(){\n //TODO\n },\n getObjectListViewPath({formFactor, appId, objectName, listViewName}){\n return `/app/${appId}/${objectName}/grid/${listViewName}`;\n },\n getObjectDetailPath({formFactor, appId, objectName, recordId}){\n return `/app/${appId}/${objectName}/view/${recordId}`;\n },\n getObjectRelatedViewPath({formFactor, appId, masterObjectName, masterRecordId, objectName, foreignKey}){\n return `/app/${appId}/${masterObjectName}/${masterRecordId}/${objectName}/grid?related_field_name=${foreignKey}`;\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-12-16 18:11:35\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-12-16 18:17:20\n * @Description: \n */\nimport * as React from \"react\"\nimport ReactDOM from \"react-dom\";\n\nconst withModalWrap = (component: React.FunctionComponent, provideProps) => {\n return (props: any) => {\n const ModalComponent = component;\n return React.createElement(ModalComponent, props);\n }\n}\nexport const render = (component: React.FunctionComponent, componentProps: any, container: any, provideProps: any = {} ) => {\n const wrapComponent: any = withModalWrap(component, provideProps);\n const contentEle = React.createElement(wrapComponent,{\n ...componentProps\n });\n return ReactDOM.render(contentEle, container);\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2023-03-20 16:52:27\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2025-02-17 14:24:43\n * @Description: \n */\nimport { isArray, isNil } from 'lodash';\n\nexport const safeRunFunction = (fun, args, defaultValue, _this) => {\n try {\n // const Creator = window.Creator;\n // const isCreator = !!(Creator && Creator.getObjectUrl);\n // let regCreator = /\\bSteedos\\b|\\bCreator\\b|\\bMeteor\\b|\\bSession\\b/;\n // if(!isCreator && regCreator.test(fun)){\n // console.info(\"调用了Creator|Steedos|Meteor|Session变量的脚本不执行,直接按空值处理。\", fun);\n // return \"\";\n // }\n // TODO:移除Creator后,上面判断isCreator并返回空的逻辑可以去掉。\n let params = [];\n if(!isNil(args)){\n params = isArray(args) ? args : [args] ;\n }\n return fun.bind(_this || {})(...params);\n } catch (error) {\n console.log(error);\n return defaultValue;\n }\n }\n \n export function safeEval(js){\n try{\n return eval(js)\n }catch (e){\n console.error(e, js);\n }\n };","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-03-22 09:31:21\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-11-05 16:32:56\n */\nexport const isExpression = function (func) {\n var pattern, reg1, reg2;\n if (typeof func !== 'string') {\n return false;\n }\n pattern = /^{{(.+)}}$/;\n reg1 = /^{{(function.+)}}$/;\n reg2 = /^{{(.+=>.+)}}$/;\n if (typeof func === 'string' && func.match(pattern) && !func.match(reg1) && !func.match(reg2)) {\n return true;\n }\n return false;\n};\n\nconst getMoment = ()=>{\n if(window.amisRequire){\n return window.amisRequire(\"moment\");\n }else if(window.moment){\n return window.moment;\n }\n}\n\nexport const getGlobalNowData = () => {\n let now = new Date();\n let moment = getMoment();\n let today = moment().utc();\n today.set(\"hours\", 0);\n today.set(\"minutes\", 0);\n today.set(\"seconds\", 0);\n today.set(\"milliseconds\", 0);\n today = today.toDate();\n let timeNow = moment();\n timeNow.set(\"year\", 1970);\n timeNow.set(\"month\", 0);\n timeNow.set(\"date\", 1);\n timeNow.set(\"hours\", timeNow.hours() + timeNow.utcOffset() / 60)\n timeNow.set(\"seconds\", 0);\n timeNow.set(\"milliseconds\", 0);\n timeNow = timeNow.toDate();\n return {\n now,\n today,\n timeNow\n };\n}\n\nexport const parseSingleExpression = function (func, formData, dataPath, global) {\n if (global) {\n Object.assign(global, getGlobalNowData());\n }\n var error, funcBody, getParentPath, getValueByPath, globalTag, parent, parentPath, str;\n getParentPath = function (path) {\n var pathArr;\n if (typeof path === 'string') {\n pathArr = path.split('.');\n if (pathArr.length === 1) {\n return '#';\n }\n pathArr.pop();\n return pathArr.join('.');\n }\n return '#';\n };\n getValueByPath = function (formData, path) {\n if (path === '#' || !path) {\n return formData || {};\n } else if (typeof path === 'string') {\n return _.get(formData, path);\n } else {\n console.error('path has to be a string');\n }\n };\n if (formData === void 0) {\n formData = {};\n }\n parentPath = getParentPath(dataPath);\n parent = getValueByPath(formData, parentPath) || {};\n if (typeof func === 'string') {\n funcBody = func.substring(2, func.length - 2);\n globalTag = '__G_L_O_B_A_L__';\n str = '\\n return ' + funcBody.replace(/\\bformData\\b/g, JSON.stringify(formData).replace(/\\bglobal\\b/g, globalTag)).replace(/\\bglobal\\b/g, JSON.stringify(global)).replace(new RegExp('\\\\b' + globalTag + '\\\\b', 'g'), 'global').replace(/rootValue/g, JSON.stringify(parent));\n try {\n return Function(str)();\n } catch (_error) {\n error = _error;\n console.log(error, func, dataPath);\n return func;\n }\n } else {\n return func;\n }\n};","/*\n * @LastEditTime: 2024-02-28 15:37:24\n * @LastEditors: baozhoutao@steedos.com\n * @customMade: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\n */\nimport * as _ from 'lodash';\nimport { isFunction, isNumber, isBoolean, isString, isNil, isDate } from 'lodash';\nimport { safeRunFunction, safeEval } from '../utils';\nimport { isExpression, parseSingleExpression } from '../expression';\n\n/**\n 把原来的默认值公式表达式转换成新的表达式语法,原来的表达式语法如下所示:\n ==========\n 取一个字段的值:使用“{”和“}” (注意都是半角)将字段名扩起来,如:{price}\n 基于当前用户的系统变量:包括姓名、角色、部门等\n ID: {userId}\n 姓名:{user.name}\n 所在部门(当申请人属于多个部门时,为所在主部门的全路径): {user.organization.fullname}\n 所在部门(最底层部门名): {user.organization.name}\n 角色名: {user.roles}\n 手机: {user.mobile}\n 固定电话: {user.work_phone}\n 职务: {user.position}\n 取当前工作区的信息\n ID: {spaceId}\n ===========\n * @param express \n */\nconst getCompatibleDefaultValueExpression = (express, multiple) => {\n const reg = /^\\{\\w+(\\.*\\w+)*\\}$/;//只转换{}包着的老语法,新语法是两层大括号{{}},不运行转换\n const reg2 = /^{{[\\s\\S]*}}$/; //转换{{ function(){} }} 或 {{ (item)=>{} }}\n let result = express;\n if (reg.test(express)) {\n if (express.indexOf(\"userId\") > -1 || express.indexOf(\"spaceId\") > -1 || express.indexOf(\"user.\") > -1 || express.indexOf(\"now\") > -1 || express.indexOf(\"today\") > -1 || express.indexOf(\"timeNow\") > -1) {\n result = `{${express}}`.replace(\"{{\", \"{{global.\");\n }\n else {\n result = `{${express}}`.replace(\"{{\", \"{{formData.\");\n }\n if (multiple) {\n // 如果是多选字段,则返回值应该加上中括号包裹,表示返回数组\n result = result.replace(/\\{\\{(.+)\\}\\}/, \"{{[$1]}}\")\n }\n }\n if(reg2.test(express) && (express.indexOf('function')>-1 || express.indexOf('=>')>-1)){\n // 使用正则表达式提取函数\n let regex = /\\{\\{([\\s\\S]*)\\}\\}/;\n let matches = regex.exec(express);\n if (matches && matches.length > 1) {\n let functionCode = matches[1];\n result = eval(\"(\" + functionCode + \")\")();\n }\n }\n return result;\n}\n\nexport const getFieldDefaultValue = (field, globalData) => {\n if (!field) {\n return null\n }\n\n let defaultValue = field.defaultValue;\n\n if (field._defaultValue) {\n defaultValue = safeEval(`(${field._defaultValue})`);\n }\n if (isFunction(defaultValue)) {\n defaultValue = safeRunFunction(defaultValue, [], null, { name: field.name });\n }\n if (_.isString(defaultValue)) {\n // 支持{userId}这种格式\n defaultValue = getCompatibleDefaultValueExpression(defaultValue, field.multiple);\n }\n // const isFormula = _.isString(defaultValue) && defaultValue.startsWith(\"{{\");\n const isFormula = isExpression(defaultValue);\n if (isFormula) {\n // 支持{{global.user.name}}这种公式\n // globalData中传入原来 window.Creator?.USER_CONTEXT || {}, {now: new Date()} 这种逻辑,可以从amis的数据链中取变量global的值\n if(field.type === \"date\"){\n // 日期类型字段,兼容老代码配置的now,值应该存储为today\n defaultValue = defaultValue.replace(/\\bglobal.now\\b/g, \"global.today\");\n }\n else if(field.type === \"time\"){\n // 时间类型字段,支持配置now表示timeNow\n defaultValue = defaultValue.replace(/\\bglobal.now\\b/g, \"global.timeNow\");\n }\n defaultValue = parseSingleExpression(defaultValue, {}, \"#\", globalData)\n // defaultValue = `\\$${defaultValue.substring(1, defaultValue.length - 1)}`\n }\n switch (field.type) {\n case 'select':\n const dataType = field.data_type || 'text';\n if (defaultValue && !isFormula && !field.multiple) {\n if (dataType === 'text' && !isString(defaultValue)) {\n defaultValue = String(defaultValue);\n } else if (dataType === 'number' && isString(defaultValue)) {\n defaultValue = Number(defaultValue);\n } else if (dataType === 'boolean' && isString(defaultValue)) {\n // defaultValue = defaultValue === 'false' ? false : true;\n defaultValue = defaultValue.toLowerCase() === 'true' || defaultValue === '1';\n }\n }\n break;\n case 'number':\n if(isString(defaultValue)){\n defaultValue = Number(defaultValue);\n }\n break;\n case 'boolean':\n if (isString(defaultValue)) {\n defaultValue = defaultValue.toLowerCase() === 'true' || defaultValue === '1';\n }\n else if(!isBoolean(defaultValue)){\n // 未设置值时默认给定false值,这样字段必填时就不会校验不通过\n defaultValue = false;\n }\n break;\n case 'time':\n if(isDate(defaultValue)){\n return moment(defaultValue).format('1970-01-01THH:mm:00.000[Z]')\n }\n case 'date':\n if(isDate(defaultValue)){\n return moment(defaultValue).format('YYYY-MM-DDT00:00:00.000[Z]')\n }\n case 'datetime':\n if(isDate(defaultValue)){\n return moment(defaultValue).format('YYYY-MM-DDTHH:mm:00.000Z')\n }\n default:\n break;\n }\n\n return defaultValue;\n}\n","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-04-18 17:03:48\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2024-01-23 18:16:11\n */\n\n/**\n * \n * @param {*} rows rows内必须有value,parent,children\n * @returns 把扁平的数据转换为树状结构的数据\n * @options unfoldedNum默认展开层数,默认值为1;valueField为每一条记录的id\n */\nexport function getTreeOptions(rows, options) {\n\n const valueField = options?.valueField || \"value\";\n const labelField = options?.labelField || \"label\";\n const unfoldedNum = options?.unfoldedNum || 1;\n\n const treeRecords = [];\n const getChildren = (currentRow, rows, childrenIds, childrenUnfoldedNum) => {\n if (currentRow.children && typeof currentRow.children[0] === \"object\") {\n // 考虑api配置了cache缓存的话,不会请求接口但是会重新进这个接收适配器脚本且payload.data.options返回的会是上一次计算结果,这里直接返回计算过的children\n return currentRow.children;\n }\n if (!childrenIds) {\n return;\n }\n const children = _.filter(rows, (row) => {\n return _.includes(childrenIds, row[valueField])\n });\n _.each(children, (item) => {\n if (childrenUnfoldedNum >= 1) {\n item.unfolded = true;\n if (item[\"children\"]) {\n item[\"children\"] = getChildren(item, rows, item[\"children\"], childrenUnfoldedNum - 1)\n }\n } else {\n if (item[\"children\"]) {\n item[\"children\"] = getChildren(item, rows, item[\"children\"], childrenUnfoldedNum)\n }\n }\n\n })\n return children;\n }\n\n const getRoot = (rows) => {\n for (var i = 0; i < rows.length; i++) {\n rows[i].noParent = 0;\n rows[i].unfolded = false;//将所有节点的默认展开设置关闭\n if (!!rows[i][\"parent\"]) {\n let biaozhi = 1;\n for (var j = 0; j < rows.length; j++) {\n if (rows[i][\"parent\"] == rows[j][valueField])\n biaozhi = 0;\n }\n if (biaozhi == 1) rows[i].noParent = 1;\n } else rows[i].noParent = 1;\n }\n }\n getRoot(rows);\n\n _.each(rows, (row) => {\n if (row.noParent == 1) {\n if (unfoldedNum >= 1) {\n row.unfolded = true;\n treeRecords.push(Object.assign({}, row, { children: getChildren(row, rows, row[\"children\"], unfoldedNum - 1) }));\n }else{\n treeRecords.push(Object.assign({}, row, { children: getChildren(row, rows, row[\"children\"], unfoldedNum) }));\n }\n }\n });\n\n return treeRecords;\n}","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-05-10 22:08:05\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2025-12-25 09:33:24\n */\n\n/**\n * 递归children找到listview-filter-form\n * @param {*} scope amis scope,在事件中值为event.context.scoped\n * @param {*} type 组件类型,比如form/button\n * @param {*} options\n * @param {*} options.name 组件名称,非必填,未填写时只匹配组件type\n * @param {*} options.direction 递归查找方向,up表示往parent逐层递归查找,down表示往children逐层递归查找,默认值为up\n * @returns 返回scope中找到的amis组件\n */\nexport function getClosestAmisComponentByType(scope, type, options) {\n if (!options) {\n options = {};\n }\n let name = options.name;\n let direction = options.direction || \"up\";\n let re = scope.getComponents().find(function (n) {\n return n.props.type === type && (!name || n.props.name === name);\n });\n if (re) {\n return re;\n }\n else if (direction === \"down\") {\n if (scope.children && scope.children.length) {\n for (let i = 0; i < scope.children.length; i++) {\n re = getClosestAmisComponentByType(scope.children[i], type, options);\n if (re) {\n break;\n }\n }\n return re;\n }\n\n }\n else if (direction === \"up\") {\n if (scope.parent) {\n return getClosestAmisComponentByType(scope.parent, type, options);\n }\n }\n}\n\n/**\n * 判断是否crud顶部的搜索栏设置了非空的过滤条件\n * @param {*} formValues filterFormValues,crud顶部的搜索栏表单项值\n * @returns boolean\n */\nexport function isFilterFormValuesEmpty(formValues) {\n let isEmpty = true;\n let filterFormValues = _.pickBy(formValues, function (n, k) {\n return /^__searchable__/g.test(k);\n });\n if (!_.isEmpty(filterFormValues)) {\n const omitedEmptyFormValue = _.omitBy(filterFormValues, function (n) {\n return _.isNil(n)\n || (_.isObject(n) && _.isEmpty(n))\n || (_.isArray(n) && _.isEmpty(n.filter(function (item) { return !_.isNil(item) })))\n || (_.isString(n) && n.length === 0);\n });\n if (!_.isEmpty(omitedEmptyFormValue)) {\n isEmpty = false;\n }\n }\n return isEmpty;\n}","export class NavigationGuard {\n constructor() {\n this.handlers = new Map();\n this.nextId = 1;\n this.defaultOptions = {\n showConfirm: true,\n confirmMessage: '确定要离开吗?'\n };\n this.isProcessing = false;\n }\n\n // 注册 beforeChange 处理器\n registerBeforeChange(handler, options = {}) {\n const id = this.nextId++;\n const handlerConfig = {\n id,\n handler,\n name: options.name || `handler_${id}`,\n priority: options.priority || 0,\n showConfirm: options.showConfirm ?? true,\n confirmMessage: options.confirmMessage,\n skipDefaultConfirm: options.skipDefaultConfirm || false,\n enabled: options.enabled !== false\n };\n console.log(`registerBeforeChange`, id, handlerConfig)\n this.handlers.set(id, handlerConfig);\n \n // 返回取消注册的函数\n return () => {\n this.handlers.delete(id);\n };\n }\n\n // 批量注册\n registerMultiple(handlers) {\n const unregisterFns = [];\n \n handlers.forEach(({ handler, options = {} }) => {\n const unregister = this.registerBeforeChange(handler, options);\n unregisterFns.push(unregister);\n });\n \n // 返回批量取消注册的函数\n return () => {\n unregisterFns.forEach(fn => fn());\n };\n }\n\n // 执行所有处理器\n async executeHandlers(blocker) {\n console.log(`executeHandlers`, blocker);\n if (this.isProcessing) {\n console.warn('Navigation guard is already processing');\n return { allowed: true };\n }\n\n this.isProcessing = true;\n \n try {\n // 按优先级排序(优先级高的先执行)\n const sortedHandlers = Array.from(this.handlers.values())\n .filter(h => h.enabled)\n .sort((a, b) => b.priority - a.priority);\n \n console.log(`Executing ${sortedHandlers.length} navigation guards`);\n \n // 收集所有阻止信息\n const blockResults = [];\n \n for (const config of sortedHandlers) {\n try {\n const result = await config.handler(blocker);\n \n if (result === false) {\n // 直接返回 false,立即阻止\n blockResults.push({\n handler: config.name,\n reason: 'returned-false',\n message: config.confirmMessage,\n config\n });\n break;\n } else if (result && typeof result === 'object') {\n if (result.allowed === false) {\n blockResults.push({\n handler: config.name,\n reason: result.reason || 'blocked-by-object',\n message: result.message || config.confirmMessage,\n data: result.data,\n config\n });\n break;\n }\n }\n // 返回 true 或 undefined 表示允许\n } catch (error) {\n console.error(`Navigation guard [${config.name}] error:`, error);\n // 错误时默认阻止\n blockResults.push({\n handler: config.name,\n reason: 'handler-error',\n message: '处理器发生错误,导航已取消',\n error,\n config\n });\n break;\n }\n }\n \n if (blockResults.length > 0) {\n return {\n allowed: false,\n blockedBy: blockResults[0],\n allBlocks: blockResults\n };\n }\n \n return { allowed: true };\n \n } finally {\n this.isProcessing = false;\n }\n }\n\n // 清空所有处理器\n clearAll() {\n this.handlers.clear();\n console.log('All navigation guards cleared');\n }\n\n // 获取处理器数量\n getHandlerCount() {\n return this.handlers.size;\n }\n\n // 列出所有处理器\n listHandlers() {\n return Array.from(this.handlers.values()).map(h => ({\n id: h.id,\n name: h.name,\n priority: h.priority,\n enabled: h.enabled\n }));\n }\n\n // 启用/禁用特定处理器\n setHandlerEnabled(handlerId, enabled) {\n const handler = this.handlers.get(handlerId);\n if (handler) {\n handler.enabled = enabled;\n return true;\n }\n return false;\n }\n\n // 移除特定处理器\n removeHandler(handlerId) {\n return this.handlers.delete(handlerId);\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-27 15:54:12\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2025-09-02 19:57:05\n * @Description: \n */\nimport { message, notification, Button, Space} from 'antd';\nimport {Modal, Drawer} from './modal'\nimport { SObject } from './sObject';\nimport { ListView } from './listView';\nimport { Router } from './router';\nimport { render } from './render';\nimport { getFieldDefaultValue } from './defaultValue';\nimport { getTreeOptions } from './tree';\nimport { getClosestAmisComponentByType, isFilterFormValuesEmpty } from './amis';\nimport { compact, isEmpty } from 'lodash';\nimport { NavigationGuard } from './navigationGuard';\n\nexport const SteedosUI = Object.assign({}, {\n render: render,\n Router,\n ListView,\n Object: SObject,\n Modal, \n Drawer,\n refs: {},\n getRef(name){\n return SteedosUI.refs[name];\n },\n router:{\n // TODO: 简易处理\n go: (action, to)=>{\n const {type, objectName, recordId } = action || {};\n const router = window.FlowRouter;\n \n if(to){\n if(router){\n return router.go(to);\n }\n /* TODO: 补充处于nextjs环境下的跳转\n else if(){\n return router.push(to);\n }\n */\n else{\n return window.open(to);\n }\n }\n \n if(router){\n router.reload();\n }else{\n console.warn('暂不支持自动跳转', action)\n }\n },\n reload: ()=>{\n console.log('reload')\n }\n },\n message,\n notification,\n components: {\n Button, Space\n },\n getRefId: ({type, appId, name})=>{\n switch (type) {\n case 'listview':\n return `amis-${appId}-${name}-listview`;\n case 'form':\n return `amis-${appId}-${name}-form`;\n case 'detail':\n return `amis-${appId}-${name}-detail`;\n default:\n return `amis-${appId}-${name}-${type}`;\n }\n },\n reloadRecord: ()=>{\n if(window.FlowRouter){\n return window.FlowRouter.reload();\n }else{\n // TODO 调用steedos object form 的 reload action\n }\n },\n getFieldDefaultValue,\n getTreeOptions,\n getClosestAmisComponentByType,\n isFilterFormValuesEmpty,\n getSearchFilter: (data)=>{\n var searchableFilter = [];\n _.each(data, (value, key)=>{\n if(!_.isEmpty(value) || _.isBoolean(value)){\n if(_.startsWith(key, '__searchable__between__')){\n if (value.filter(v => v !== null && v !== undefined && v !== \"\").length > 0) {\n searchableFilter.push([`${key.replace(\"__searchable__between__\", \"\")}`, \"between\", value])\n }\n }else if(_.startsWith(key, '__searchable__')){\n if(_.isString(value)){\n searchableFilter.push([`${key.replace(\"__searchable__\", \"\")}`, \"contains\", value])\n }else if(_.isObject(value) && value.o){\n // reference_to是数组的lookup字段\n let leftKey = `${key.replace(\"__searchable__\", \"\")}`;\n let lookupFieldFilter = [[leftKey + \"/o\", \"=\", value.o]];\n if(value.ids.length){\n lookupFieldFilter.push([leftKey + \"/ids\", \"=\", value.ids])\n }\n searchableFilter.push(lookupFieldFilter)\n }\n else{\n searchableFilter.push([`${key.replace(\"__searchable__\", \"\")}`, \"=\", value])\n }\n }\n }\n });\n return searchableFilter;\n },\n /**\n * 传入amis form data,返回用于crud/picker列表顶部表单搜索中用的form values\n * @param {*} data amis form data,不带__searchable__前缀\n * @param {*} fields 对象的字段定义,可以传入对象uiSchema接口返回的fields属性\n * @returns amis form data,带__searchable__前缀\n */\n getSearchFilterFormValues: (data, fields)=>{\n if (_.isObject(data) || !_.isEmpty(data)){\n let formData = data;\n if (fields){\n formData = _.pickBy(data, function(n,k){\n return !!fields[k];\n });\n }\n let formValues = _.mapKeys(formData, function (n, k) {\n let fieldNamePrefix = '__searchable__';\n if (fields){\n const fieldType = fields[k]?.type;\n if (fieldType === 'number' || fieldType === 'currency') {\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n else if (fieldType === 'date') {\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n else if (fieldType === 'datetime') {\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n else if (fieldType === 'time') {\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n }\n return fieldNamePrefix + k;\n });\n return formValues;\n }\n else {\n return data;\n }\n },\n getKeywordsSearchFilter: (keywords, allowSearchFields) => {\n const keywordsFilters = [];\n if (keywords && allowSearchFields) {\n var keyValues = keywords.split(/\\s+/);//按空格分隔转为数组\n keyValues = compact(keyValues);//移除空字符串元素\n allowSearchFields.forEach(function (key, index) {\n let everyFieldFilters = [];\n if(keyValues.length == 1){\n // 长度为1时说明没有空格分隔,直接赋值简化处理,而不是push,可以让输出的过滤条件少套一层无意义的数组\n everyFieldFilters = [key, \"contains\", keyValues[0]];\n }\n else{\n keyValues.forEach(function(valueItem, valueIndex){\n everyFieldFilters.push([key, \"contains\", valueItem]);\n if (valueIndex < keyValues.length - 1) {\n everyFieldFilters.push('and');\n }\n });\n }\n if(everyFieldFilters.length){\n keywordsFilters.push(everyFieldFilters);\n if (index < allowSearchFields.length - 1) {\n keywordsFilters.push('or');\n }\n }\n })\n };\n return keywordsFilters;\n },\n getFormulaVariables: (fieldOptions, hasGlobal = true) => {\n const t = window.steedosI18next.t;\n const variables = [];\n if (!isEmpty(fieldOptions)) {\n variables.push({\n \"label\": t('frontend_formula_variables_tab_form_fields', '表单字段'),\n \"children\": [\n\n ]\n });\n lodash.forEach(fieldOptions,function (field) {\n variables[0].children.push({\n \"label\": field.label,\n \"value\": field.value\n })\n })\n }\n if (hasGlobal) {\n variables.push({\n \"label\": t('frontend_formula_variables_tab_form_global', '全局变量'),\n \"children\": [\n {\n \"label\": t('frontend_formula_variables_global_userId', '用户ID'),\n \"value\": \"global['userId']\"\n },\n {\n \"label\": t('frontend_formula_variables_global_spaceId', '工作区ID'),\n \"value\": \"global['spaceId']\"\n },\n // 因为默认值不能选这个选项,先直接去除\n // {\n // \"label\": \"只读/编辑模式\",\n // \"value\": \"global['mode']\"\n // },\n {\n \"label\": window.t('CustomObject.users.label', '用户'),\n \"children\": [\n {\n \"label\": window.t('CustomField.space_users.name.label'),//姓名\n \"value\": \"global['user']['name']\"\n },\n {\n \"label\": window.t('CustomField.space_users.email.label'),//邮件\n \"value\": \"global['user']['email']\"\n },\n {\n \"label\": window.t('CustomField.space_users.locale.label'),//语言\n \"value\": \"global['user']['language']\"\n },\n {\n \"label\": window.t('CustomField.space_users.profile.label'),//\"简档\",\n \"value\": \"global['user']['profile']\"\n },\n {\n \"label\": t('frontend_formula_variables_global_user_roles', '权限集'),\n \"value\": \"global['user']['roles']\"\n },\n {\n \"label\": window.t('CustomField.space_users.organization.label') + \" ID\",//\"主部门ID\",\n \"value\": \"global['user']['organization']['_id']\"\n },\n // 值为对象数组,先去掉\n // {\n // \"label\": \"部门(多选)\",\n // \"value\": \"global['user']['organizations']\"\n // },\n {\n \"label\": window.t('CustomField.space_users.organizations_parents.label'),//\"部门(含上级)\",\n \"value\": \"global['user']['organizations_parents']\" \n },\n {\n \"label\": window.t('CustomField.space_users.company_id.label') + \" ID\",//\"主分部ID\",\n \"value\": \"global['user']['company_id']\"\n },\n {\n \"label\": window.t('CustomField.space_users.company_ids.label'),//\"分部(多选)\",\n \"value\": \"global['user']['company_ids']\" \n },\n {\n \"label\": t('frontend_formula_variables_global_user_spaceUserId', '人员ID'),\n \"value\": \"global['user']['spaceUserId']\"\n },\n {\n \"label\": t('frontend_formula_variables_global_user_is_space_admin', '是否工作区管理员'),\n \"value\": \"global['user']['is_space_admin']\"\n }\n ]\n }\n ]\n });\n }\n return variables;\n },\n traverseNestedArrayFormula: (arr, data) => {\n var currentAmis = (window.amisRequire && window.amisRequire('amis')) || Amis;\n for (let i = 0; i < arr.length; i++) {\n if (Array.isArray(arr[i])) {\n // 如果当前元素是数组,则递归调用自身继续遍历\n SteedosUI.traverseNestedArrayFormula(arr[i], data);\n } else {\n // 如果当前元素不是数组,则处理该元素\n // 下面正则用于匹配amis公式\\${}\n if (/\\$\\{([^}]*)\\}/.test(arr[i])) {\n try {\n arr[i] = currentAmis.evaluate(arr[i], data);\n } catch (ex) {\n console.error(\"运行过滤器公式时出现错误:\", ex);\n }\n }\n }\n }\n },\n navigationGuard: new NavigationGuard()\n})","// 将svg文件打开后,把xml内容转换为json格式(https://www.bejson.com/xml2json/),然后执行此脚本获取icon标识:_.pluck(json.svg.symbol, \"-id\").join(\",\")\nvar _STANDARD_SPRITE_IDS = \"account,account_info,action_list_component,actions_and_buttons,activation_target,activations,address,agent_home,agent_session,aggregation_policy,all,announcement,answer_best,answer_private,answer_public,apex,apex_plugin,app,approval,apps,apps_admin,article,asset_action,asset_action_source,asset_audit,asset_downtime_period,asset_object,asset_relationship,asset_state_period,asset_warranty,assigned_resource,assignment,attach,avatar,avatar_loading,bot,bot_training,branch_merge,brand,budget,budget_allocation,bundle_config,bundle_policy,business_hours,buyer_account,buyer_group,calculated_insights,calibration,call,call_coaching,call_history,campaign,campaign_members,cancel_checkout,canvas,capacity_plan,care_request_reviewer,carousel,case,case_change_status,case_comment,case_email,case_log_a_call,case_milestone,case_transcript,case_wrap_up,catalog,category,change_request,channel_program_history,channel_program_levels,channel_program_members,channel_programs,chart,checkout,choice,client,cms,coaching,code_playground,code_set,code_set_bundle,collection,collection_variable,connected_apps,constant,contact,contact_list,contact_request,contract,contract_line_item,contract_payment,coupon_codes,currency,currency_input,custom,custom_component_task,custom_notification,customer_360,customer_lifecycle_analytics,customer_portal_users,customers,dashboard,dashboard_component,dashboard_ea,data_integration_hub,data_mapping,data_model,data_streams,datadotcom,dataset,date_input,date_time,decision,default,delegated_account,device,discounts,display_rich_text,display_text,document,document_reference,drafts,duration_downscale,dynamic_record_choice,education,einstein_replies,email,email_chatter,employee,employee_asset,employee_contact,employee_job,employee_job_position,employee_organization,empty,endorsement,entitlement,entitlement_policy,entitlement_process,entitlement_template,entity,entity_milestone,environment_hub,event,events,expense,expense_report,expense_report_entry,feed,feedback,field_sales,file,filter,filter_criteria,filter_criteria_rule,first_non_empty,flow,folder,forecasts,form,formula,fulfillment_order,generic_loading,global_constant,goals,group_loading,groups,guidance_center,hierarchy,high_velocity_sales,historical_adherence,holiday_operating_hours,home,household,identifier,immunization,incident,individual,insights,instore_locations,investment_account,invocable_action,iot_context,iot_orchestrations,javascript_button,job_family,job_position,job_profile,kanban,key_dates,knowledge,lead,lead_insights,lead_list,letterhead,lightning_component,lightning_usage,link,list_email,live_chat,live_chat_visitor,location,location_permit,log_a_call,logging,loop,macros,maintenance_asset,maintenance_plan,maintenance_work_rule,marketing_actions,med_rec_recommendation,med_rec_statement_recommendation,medication,medication_dispense,medication_ingredient,medication_reconciliation,medication_statement,merge,messaging_conversation,messaging_session,messaging_user,metrics,multi_picklist,multi_select_checkbox,network_contract,news,note,number_input,observation_component,omni_supervisor,operating_hours,opportunity,opportunity_contact_role,opportunity_splits,orchestrator,order_item,orders,outcome,output,partner_fund_allocation,partner_fund_claim,partner_fund_request,partner_marketing_budget,partners,password,past_chat,patient_medication_dosage,payment_gateway,people,performance,person_account,person_language,person_name,photo,picklist_choice,picklist_type,planogram,poll,portal,portal_roles,portal_roles_and_subordinates,post,practitioner_role,price_book_entries,price_books,pricebook,pricing_workspace,problem,procedure,procedure_detail,process,process_exception,product,product_consumed,product_consumed_state,product_item,product_item_transaction,product_quantity_rules,product_request,product_request_line_item,product_required,product_service_campaign,product_service_campaign_item,product_transfer,product_transfer_state,product_warranty_term,product_workspace,products,promotion_segments,promotions,promotions_workspace,propagation_policy,proposition,qualifications,question_best,question_feed,queue,quick_text,quip,quip_sheet,quotes,radio_button,read_receipts,recent,recipe,record,record_create,record_delete,record_lookup,record_signature_task,record_update,recycle_bin,related_list,relationship,reply_text,report,report_type,resource_absence,resource_capacity,resource_preference,resource_skill,restriction_policy,return_order,return_order_line_item,reward,rtc_presence,sales_cadence,sales_cadence_target,sales_channel,sales_path,sales_value,salesforce_cms,scan_card,schedule_objective,scheduling_constraint,scheduling_policy,screen,search,section,segments,selling_model,serialized_product,serialized_product_transaction,service_appointment,service_appointment_capacity_usage,service_contract,service_crew,service_crew_member,service_report,service_request,service_request_detail,service_resource,service_territory,service_territory_location,service_territory_member,service_territory_policy,settings,shift,shift_pattern,shift_pattern_entry,shift_preference,shift_scheduling_operation,shift_template,shift_type,shipment,skill,skill_entity,skill_requirement,slack,slider,sms,snippet,snippets,sobject,sobject_collection,social,solution,sort,sort_policy,sossession,stage,stage_collection,steps,store,store_group,story,strategy,survey,swarm_request,swarm_session,system_and_global_variable,tableau,task,task2,team_member,template,text,text_template,textarea,textbox,thanks,thanks_loading,timesheet,timesheet_entry,timeslot,today,toggle,topic,topic2,tour,tour_check,trailhead,trailhead_alt,travel_mode,unified_health_score,unmatched,user,user_role,variable,variation_attribute_setup,variation_products,video,visit_templates,visits,visualforce_page,voice_call,waits,warranty_term,webcart,work_capacity_limit,work_capacity_usage,work_contract,work_forecast,work_order,work_order_item,work_plan,work_plan_rule,work_plan_template,work_plan_template_entry,work_queue,work_step,work_step_template,work_type,work_type_group,workforce_engagement\"\n\n\nexport const sldsIcons = {\n\tstandard: _STANDARD_SPRITE_IDS.split(\",\")\n}","import * as _ from 'lodash';\nimport { SteedosUI } from '../ui';\n\nexport const organizationsTree = {\n // 抄widgets crud中获取可搜索字段的相关代码\n getSearchableFields: function (api) {\n const QUICK_SEARCHABLE_FIELD_TYPES = [\"text\", \"textarea\", \"autonumber\", \"url\", \"email\"];\n function isFieldQuickSearchable(field, nameFieldKey) {\n let fieldSearchable = field.searchable;\n if (fieldSearchable !== false && field.name === nameFieldKey) {\n // 对象上名称字段的searchable默认认为是true\n fieldSearchable = true;\n }\n if (fieldSearchable && QUICK_SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1) {\n return true;\n }\n return false;\n }\n\n const searchableFields = [];\n const mainObject = api.context.uiSchema;\n if (mainObject) {\n _.each(mainObject.fields, function (field) {\n if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {\n searchableFields.push(field.name);\n }\n })\n }\n return searchableFields;\n },\n // 抄widgets crud中发送适配器整理过滤条件的相关代码\n getApiRequestAdaptor: function (api, context, option: any = {}) {\n var keywordsSearchBoxName = \"__keywords\";\n const __lookupField = context.__lookupField;\n if (option.isLookup) {\n if (context.op === \"loadOptions\") {\n var filters = [[\"_id\", \"=\", context.value]];\n return Object.assign({}, api, {\n \"method\": \"post\",\n \"url\": \"/graphql\",\n \"data\": {\n \"query\": '{rows:organizations(filters: ' + JSON.stringify(filters) + ', top: 5000, skip: 0, sort: \"sort_no desc\"){_id,fullname,name,sort_no,_display:_ui{sort_no},parent,children}}'\n }\n });\n }\n else{\n if(__lookupField){\n keywordsSearchBoxName = `__keywords_lookup__${__lookupField.name.replace(/\\./g, \"_\")}__to__${__lookupField.reference_to}`;\n }\n else{\n // 没有__lookupField是异常情况,此时不传入任何过滤条件,避免使用默认的__keywords\n keywordsSearchBoxName = \"\";\n console.error(\"lookup字段快速搜索异常,作用域中未找到变量__lookupField\");\n }\n }\n }\n var allowSearchFields = this.getSearchableFields(api);\n var filters: any[][] = [];\n if (option.isLookup) {\n const inFilterForm = __lookupField.inFilterForm;\n const listviewFilter = __lookupField.listviewFilter;\n if (listviewFilter && listviewFilter.length && !inFilterForm) {\n filters = listviewFilter;\n }\n }\n var selfData = JSON.parse(JSON.stringify(api.context));\n var searchableFilter = SteedosUI.getSearchFilter(selfData) || [];\n if (searchableFilter.length > 0) {\n if (filters.length > 0) {\n filters = [filters, \"and\" as any, searchableFilter];\n } else {\n filters = searchableFilter;\n }\n }\n // \"搜索此列表\"搜索框\n if (allowSearchFields) {\n allowSearchFields.forEach(function (key) {\n const keyValue = selfData[key];\n if (_.isString(keyValue)) {\n filters.push([key, \"contains\", keyValue]);\n } else if (_.isArray(keyValue) || _.isBoolean(keyValue) || keyValue) {\n filters.push([key, \"=\", keyValue]);\n }\n })\n }\n var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData[keywordsSearchBoxName], allowSearchFields);\n if (keywordsFilters && keywordsFilters.length > 0) {\n filters.push(keywordsFilters);\n }\n\n if (option.isLookup) {\n var fieldFilters = __lookupField.filters;\n //递归fieldFilters数组,检查每一个元素,判断若是公式,就仅把它解析\n if(fieldFilters && fieldFilters.length){\n SteedosUI.traverseNestedArrayFormula(fieldFilters, api.context);\n filters.push(fieldFilters);\n }\n\n const inFilterForm = __lookupField.inFilterForm;\n let listviewFiltersFunction = __lookupField.listviewFiltersFunction;\n if(typeof listviewFiltersFunction === \"string\"){\n listviewFiltersFunction = new Function(`return ${listviewFiltersFunction}`)();\n }\n let filtersFunction = __lookupField.filtersFunction || __lookupField._filtersFunction;\n if(typeof filtersFunction === \"string\"){\n filtersFunction = new Function(`return ${filtersFunction}`)();\n }\n if(listviewFiltersFunction && !inFilterForm){\n const _filters0 = listviewFiltersFunction(filters, api.context);\n if(_filters0 && _filters0.length){\n filters.push(_filters0);\n }\n }\n \n if(filtersFunction && !inFilterForm){\n const _filters = filtersFunction(filters, api.context);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n }\n\n api.data = {};\n\n if (filters.length > 0) {\n Object.assign(api.data, {\n filters: JSON.stringify(filters)\n });\n }\n\n const queryFields = api.body && api.body.queryFields;\n if(queryFields){\n Object.assign(api.data, {\n fields: queryFields\n });\n }\n\n if(api.body.$self){\n // amis bug,接口为Get请求时,url上的data参数无法删除,只能手动把url重写掉,见:https://github.com/baidu/amis/issues/9813\n let rootURL = api.body.$self.context && api.body.$self.context.rootUrl || \"\";\n // url为${context.rootUrl}/service/api/organizations/root\n api.url = rootURL = \"/service/api/organizations/root\";\n }\n\n return api;\n },\n getApiAdaptor: function (payload, response, api, context, option: any = {}) {\n if(option.isLookup && context.op === \"loadOptions\") {\n const rows = _.map(payload.data.rows, function (item) {\n delete item.children;\n delete item.parent;\n return item;\n });\n payload.data.rows = rows;\n\n return payload;\n }\n let filtersJson = api.data && api.data.filters;\n payload.data = {\n ...payload.data,\n isFilter: !!filtersJson\n };\n\n // 把上面拿到的queryFields返回到data中,以便在getDeferApiRequestAdaptor中能拿到queryFields\n payload.data.__rootQueryFields = api.data && api.data.fields;\n\n // 因为自动展开的第一层节点拿不到上面返回的__rootQueryFields,只能把它放到rows数据内,以便在getDeferApiRequestAdaptor中能始终能拿到queryFields\n (payload.data.rows || []).forEach(function (item) {\n item.__rootQueryFields = api.data && api.data.fields;\n });\n\n return payload;\n },\n getDeferApiRequestAdaptor: function (api, context, option = {}) {\n var selfData = JSON.parse(JSON.stringify(api.context));\n let filters = [];\n var dep = selfData._id;\n if (dep) {\n filters = [['parent', '=', dep]];\n }\n\n const queryFields = (context && context.__rootQueryFields) || \"_id,fullname,name,sort_no,hidden,_display:_ui{sort_no,hidden},parent,children\";\n\n return Object.assign({}, api, {\n data: {\n query: '{rows:organizations(filters: ' + JSON.stringify(filters) + ', top: 5000, skip: 0, sort: \"sort_no desc\"){' + queryFields + '}}'\n }\n });\n },\n getDeferApiAdaptor: function (payload, response, api, context, option = {}) {\n var data = payload.data;\n if (data.children) {\n return payload;\n }\n data.rows = data.rows.map(function (optionItem) {\n optionItem.defer = !!(optionItem.children && optionItem.children.length);\n delete optionItem.children;\n return optionItem;\n });\n\n data.children = data.rows;\n delete data.rows;\n delete data.count;\n return payload;\n }\n}\n\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-10-25 09:16:09\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2025-02-17 10:25:43\n * @Description: \n */\n\nimport { StandardObjects } from './standard_objects'\nimport { authRequest } from './authRequest'\nimport { SteedosUI } from './ui';\nimport { sldsIcons } from './icon';\nimport * as Expression from './expression';\nimport { organizationsTree } from './organization/organizations_tree'\n\ndeclare var Builder;\n\nconst getBuilderContext = ()=>{\n if(typeof window === \"undefined\"){\n return {};\n }\n return Builder.settings.context ? Builder.settings.context : Builder.settings\n}\n\nexport const Steedos = {\n resources: {\n sldsIcons\n },\n organizationsTree,\n getRootUrl: (defaultRootUrl?)=>{\n const context: any = getBuilderContext()\n if(context.rootUrl){\n return context.rootUrl;\n }\n const rootUrl = typeof window != 'undefined' ? window.localStorage.getItem(\"steedos:rootUrl\") : '';\n if(rootUrl){\n return rootUrl\n }\n return defaultRootUrl;\n },\n absoluteUrl: (url = \"\")=>{\n return `${Steedos.getRootUrl()}${url}`\n },\n getTenantId: ()=>{\n try {\n let spaceId = getBuilderContext().tenantId\n \n if (window.location.search && !spaceId) {\n var searchParams = new URLSearchParams(window.location.search);\n spaceId = searchParams.get('X-Space-Id');\n }\n if (!spaceId) {\n return null;\n }\n return spaceId;\n } catch (error) {\n console.error(error)\n }\n },\n getAuthorization: ()=>{\n try {\n const context = getBuilderContext()\n let spaceId = context.tenantId;\n let token = context.authToken;\n \n if (!spaceId || !token) {\n return null;\n }\n return `Bearer ${spaceId},${token}`;\n } catch (error) {\n console.error(error)\n }\n },\n authRequest,\n StandardObjects,\n ...Expression\n}\n\nif(typeof window != 'undefined'){\n if((window as any).Steedos){\n (window as any).Steedos = Object.assign(Steedos, (window as any).Steedos);\n }else{\n (window as any).Steedos = Steedos;\n }\n}\n\nif(typeof window != 'undefined'){\n if((window as any).SteedosUI){\n (window as any).SteedosUI = Object.assign(SteedosUI, (window as any).SteedosUI);\n }else{\n (window as any).SteedosUI = SteedosUI;\n }\n}\n// else if(typeof window != 'undefined'){\n// (window as any).SteedosUI = Object.assign((window as any).SteedosUI, SteedosUI);\n// }\n\nexport { SteedosUI } from './ui';\n"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","StandardObjects","Base","Actions","standard_query","visible","objectName","recordId","record_permissions","standard_new","standard_edit","object_name","record_id","standard_delete","standard_import_data","object","hasImportTemplates","standard_approve","standard_view_instance","standard_submit_for_approval","window","Steedos","ProcessManager","allowSubmit","todo","submit","standard_follow","standard_delete_many","RegExp","test","location","pathname","standard_export_excel","authRequest","url","options","result","absoluteUrl","headers","name","value","getAuthorization","defOptions","type","dataType","contentType","beforeSend","XHR","forEach","header","setRequestHeader","success","data","error","XMLHttpRequest","textStatus","errorThrown","errorInfo","errorMsg","responseJSON","reason","message","console","$","ajax","err","_extends","target","key","source","newFunctionComponent","isVisible","setIsVisible","useState","close","has","props","SteedosUI","refs","show","React","createElement","Component","onCancel","onClose","width","style","maxWidth","minWidth","newComponentRender","prefix","container","document","getElementById","setAttribute","body","appendChild","element","createRoot","render","Modal","AntdModal","info","warning","confirm","Drawer","AntdDrawer","getGraphqlFieldsQuery","fieldsName","fields","push","each","fieldName","indexOf","split","join","getFindOneQuery","id","replace","queryFields","let","queryOptions","queryOptionsArray","SObject","getRecord","async","await","fetchAPI","method","JSON","stringify","query","record","getUISchema","force","canSaveFilter","listView","_id","owner","getSteedosAuth","userId","ListView","showFilter","filters","filtersToConditions","getVisibleFilter","userFilter","getQueryFilter","isEmpty","getFirstListView","uiSchema","_","first","sortBy","values","list_views","Router","getAppPath","appId","getPagePath","getObjectListViewPath","listViewName","getObjectDetailPath","getObjectRelatedViewPath","masterObjectName","masterRecordId","foreignKey","withModalWrap","component","provideProps","componentProps","wrapComponent","contentEle","ReactDOM","safeRunFunction","fun","args","defaultValue","_this","params","isNil","isArray","bind","log","safeEval","js","eval","e","isExpression","func","reg1","reg2","match","getMoment","amisRequire","moment","getGlobalNowData","now","Date","today","utc","timeNow","set","toDate","hours","utcOffset","parseSingleExpression","formData","dataPath","global","globalTag","parent","path","get","pathArr","pop","str","substring","Function","_error","getCompatibleDefaultValueExpression","express","multiple","reg","regex","matches","exec","functionCode","getFieldDefaultValue","field","globalData","_defaultValue","isFunction","isString","isFormula","data_type","Number","toLowerCase","String","isBoolean","isDate","format","getTreeOptions","rows","valueField","unfoldedNum","labelField","treeRecords","getChildren","currentRow","childrenIds","childrenUnfoldedNum","children","filter","includes","row","item","unfolded","noParent","biaozhi","j","getClosestAmisComponentByType","scope","direction","re","getComponents","find","isFilterFormValuesEmpty","formValues","filterFormValues","pickBy","k","omitedEmptyFormValue","omitBy","isObject","NavigationGuard","constructor","handlers","Map","nextId","defaultOptions","showConfirm","confirmMessage","isProcessing","registerBeforeChange","handler","handlerConfig","priority","skipDefaultConfirm","enabled","delete","registerMultiple","unregisterFns","unregister","fn","executeHandlers","blocker","warn","allowed","config","sortedHandlers","Array","from","h","sort","a","b","blockResults","blockedBy","allBlocks","clearAll","clear","getHandlerCount","size","listHandlers","map","setHandlerEnabled","handlerId","removeHandler","getRef","router","go","action","to","FlowRouter","open","reload","notification","components","Button","Space","getRefId","reloadRecord","getSearchFilter","searchableFilter","leftKey","lookupFieldFilter","startsWith","v","o","ids","getSearchFilterFormValues","mapKeys","fieldNamePrefix","fieldType","getKeywordsSearchFilter","keywords","allowSearchFields","keywordsFilters","keyValues","compact","index","everyFieldFilters","valueItem","valueIndex","getFormulaVariables","fieldOptions","hasGlobal","steedosI18next","variables","label","lodash","traverseNestedArrayFormula","arr","currentAmis","Amis","evaluate","ex","navigationGuard","_STANDARD_SPRITE_IDS","sldsIcons","standard","organizationsTree","getSearchableFields","api","QUICK_SEARCHABLE_FIELD_TYPES","searchableFields","mainObject","context","nameFieldKey","fieldSearchable","NAME_FIELD_KEY","searchable","getApiRequestAdaptor","option","keywordsSearchBoxName","__lookupField","isLookup","op","concat","reference_to","inFilterForm","selfData","listviewFilter","parse","keyValue","fieldFilters","listviewFiltersFunction","filtersFunction","_filtersFunction","_filters0","_filters","$self","rootUrl","getApiAdaptor","payload","response","filtersJson","isFilter","__rootQueryFields","getDeferApiRequestAdaptor","dep","getDeferApiAdaptor","optionItem","defer","count","getBuilderContext","Builder","settings","resources","getRootUrl","defaultRootUrl","localStorage","getItem","getTenantId","spaceId","tenantId","search","URLSearchParams","token","authToken","Expression"],"mappings":"2vBA+BWA,SAAW,WAQlB,OAPAA,SAAWC,OAAOC,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,CAAC,GAE7C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACOJ,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,CACV,GACeU,MAAMC,KAAMP,SAAS,CACzC,EC/BaQ,gBAAkB,CAC3BC,KAAM,CACFC,QAAS,CACLC,eAAgB,CACZC,QAAS,SAACC,EAAYC,EAAUC,GAK5B,MAAO,CAAA,CACV,CACJ,EACDC,aAAc,CACVJ,QAAS,SAAUC,EAAYC,EAAUC,GACrC,MAAkB,cAAfF,GAA6C,cAAfA,IAG7BE,EACOA,EAAgC,YAD3C,KAAA,EAGH,CACJ,EACDE,cAAc,CACVL,QAAS,SAAUM,EAAaC,EAAWJ,GACvC,GAAIA,EACA,OAAOA,EAA8B,SAE5C,CACJ,EACDK,gBAAgB,CACZR,QAAS,SAAUM,EAAaC,EAAWJ,GACvC,GAAIA,EACA,OAAOA,EAAgC,WAE9C,CACJ,EACDM,qBAAsB,CAClBT,QAAS,SAAUM,EAAaC,EAAWJ,GAC/B,IAAAO,EAAWf,KAAIe,OACvB,GAAIP,EACA,OAAOA,EAAgC,aAAKO,EAAOC,kBAE1D,CACJ,EAEDC,iBAAkB,CACdZ,QAAS,SAAUM,EAAaC,EAAWJ,GACvC,MAAO,CAAA,CACV,CACJ,EAEDU,uBAAuB,CACnBb,QAAS,SAAUM,EAAaC,EAAWJ,GACvC,MAAO,CAAA,CACV,CACJ,EAEDW,6BAA8B,CAC1Bd,QAAS,SAAUM,EAAaC,EAAWJ,GACvC,OAAQY,OAAeC,QAAQC,eAAeC,YAAYxB,MAAMC,KAAM,CAACW,EAAaC,EAAU,CACjG,EACDY,KAAM,SAAUb,EAAaC,GACzB,OAAQQ,OAAeC,QAAQC,eAAeG,OAAO1B,MAAMC,KAAM,CAACW,EAAaC,EAAU,CAC5F,CACJ,EACDc,gBAAiB,CACbrB,QAAS,SAAUM,EAAaC,EAAWJ,GACvC,MAAO,CAAA,CACV,CACJ,EACDmB,qBAAqB,CACjBtB,QAAS,SAAUM,EAAaC,EAAWJ,GAEvC,MAAIoB,CAAAA,OAAO,gBAAgB,EAAEC,KAAKC,SAASC,QAAQ,IAGhDvB,EACOA,EAAgC,YAD3C,KAAA,EAGF,CACJ,EAEDwB,sBAAuB,CACnB3B,QAAS,SAAUM,EAAaC,EAAWJ,GACvC,MAAO,CAAA,CACV,CACJ,CACJ,CACJ,GCtFQyB,YAAc,SAACC,EAAKC,GAC7B,IAAIC,EAAS,KACbF,EAAMb,QAAQgB,YAAYH,CAAG,EAC7B,IACI,IACII,EAAU,CAAC,CACXC,KAAM,eACNC,MAAO,oBACR,CACCD,KAAM,gBACNC,MANgBnB,QAAQoB,kBAO3B,GAEGC,EAAa,CACbC,KAAM,MACNT,IAAKA,EACLU,SAAU,OACVC,YAAa,mBACbC,WAAY,SAAUC,GAClB,GAAIT,GAAWA,EAAQ5C,OACnB,OAAO4C,EAAQU,QAAQ,SAAUC,GAC7B,OAAOF,EAAIG,iBAAiBD,EAAOV,KAAMU,EAAOT,KAAK,CACzD,CAAC,CAER,EACDW,QAAS,SAAUC,GACfhB,EAASgB,CACZ,EACDC,MAAO,SAAUC,EAAgBC,EAAYC,GACzC,IACUC,EAIFC,EALJJ,EAAeK,cAAgBL,EAAeK,aAAaN,OACrDI,EAAYH,EAAeK,aAAaN,MAE1CK,EADJtB,KAAAA,EAAS,CAAEiB,MAAOI,IAGdC,EADAD,EAAUG,QAGLH,EAAUI,SAIJJ,EAEfK,QAAQT,MAAMK,CAAQ,GAGtBI,QAAQT,MAAMC,EAAeK,YAAY,CAEhD,GAGL,OADAI,EAAEC,KAAK7E,OAAOC,OAAO,GAAIsD,EAAYP,CAAO,CAAC,EACtCC,CAGV,CAFC,MAAO6B,GACLH,QAAQT,MAAMY,CAAG,CACpB,CACL,ECrDA,SAASC,WAA2Q,OAA9PA,SAAW/E,OAAOC,QAAU,SAAU+E,GAAU,IAAK,IAAI5E,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,CAAC,GAAI,CAAE,IAAoC6E,EAAhCC,EAAS5E,UAAUF,GAAI,IAAS6E,KAAOC,EAAclF,OAAOS,UAAUC,eAAeC,KAAKuE,EAAQD,CAAG,IAAKD,EAAOC,GAAOC,EAAOD,GAAW,CAAC,OAAOD,IAA2BpE,MAAMC,KAAMP,SAAS,CAAI,CAE7T,IAAM6E,qBAAuB,GACpB,IAEL,GAAM,CAACC,EAAWC,GAAgBC,MAAQA,SAAC,CAAA,CAAI,EAE/C,IAaMC,EAAQ,KACZF,EAAa,CAAA,CAAK,CACnB,EASD,OARIG,IAAGA,IAACC,EAAO,KAAK,IAClBxD,OAAOyD,UAAUC,KAAKF,EAAMrC,MAAO,CACjCwC,KATS,KACXP,EAAa,CAAA,CAAI,CACvB,EAQQE,MAAOA,CAER,GAGIM,uBAAMC,cAAcC,EAAWhB,SAAS,CAC7C7D,QAASkE,EACTY,SAAUT,EACVU,QAASV,CACf,EA5BqB,CACfW,MAAO,MACPC,MAAO,CACLD,MAAO,MACPE,SAAU,QACVC,SAAU,OACX,CACP,EAqBiBZ,CAAK,CAAC,CACpB,EAGGa,mBAAqB,CAACC,EAAQR,IAC3B,CAACN,EAAOe,KACTf,EAAMrC,OACRqC,EAAMrC,KAAUmD,EAAH,KAAad,EAAMrC,MAAQ,aAEtCoD,EAAAA,GACUC,SAASC,0BAA0BH,UAAed,EAAMrC,IAAM,MAExEoD,EAAYC,SAASX,cAAc,KAAK,GAC9Ba,aAAa,gBAAiBJ,UAAed,EAAMrC,IAAM,EACnEqD,SAASG,KAAKC,YAAYL,CAAS,GAGjCM,EAAUjB,eAAAA,QAAMC,cAAcX,qBAAqBY,CAAS,EAAGN,CAAK,EAC7DsB,oBAAWP,CAAS,EAC5BQ,OAAOF,CAAO,CACpB,EAGUG,MAAQhH,IAAAA,OAAOqG,mBAAmB,QAASY,KAAAA,KAAS,EAAG,CAACC,KAAMD,KAAAA,MAAUC,KAAMnD,QAASkD,KAAAA,MAAUlD,QAASE,MAAOgD,KAAAA,MAAUhD,MAAOkD,QAASF,KAAAA,MAAUE,QAASC,QAASH,KAAAA,MAAUG,OAAO,CAAC,EAEzLC,OAAShB,mBAAmB,SAAUiB,WAAU,EC9DvDC,sBAAwB,IAC1B,IAAMC,EAAa,CAAC,OASpB,OARAC,EAAOC,KAAK,oBAAoB,EAEhCC,SAAKF,EAAQ,IACmB,CAAC,EAA1BG,EAAUC,QAAQ,GAAG,IACpBD,EAAYA,EAAUE,MAAM,GAAG,EAAE,IAErCN,EAAWE,KAAK,GAAGE,CAAW,CACtC,CAAK,EACM,GAAGJ,EAAWO,KAAK,GAAG,CACjC,EAEMC,gBAAkB,CAAC9G,EAAY+G,EAAIR,KACrCvG,EAAaA,EAAWgH,QAAQ,MAAO,GAAG,EACpCC,EAAcZ,sBAAsBE,CAAM,EAChDW,IAAIC,EAAe,GAGbC,EAAoB,SAASL,MAMnC,iBAAoB/G,aAHhBmH,EAD0B,EAA3BC,EAAkBhI,WACEgI,EAAkBP,KAAK,GAAG,KAGPM,KAAgBF,KAC9D,EAEaI,QAAU,CACnBC,UAAWC,MAAOvH,EAAYC,EAAUsG,KACrBiB,MAAMC,QAAQA,SAAC,WAAY,CACtCC,OAAQ,OACRjC,KAAMkC,KAAKC,UAAU,CACjBC,MAAOf,gBAAgB9G,EAAYC,EAAUsG,CAAM,CACnE,CAAa,CACb,CAAS,GACazD,KAAKgF,OAEvBC,YAAaR,MAAOvH,EAAYgI,IACfD,QAAAA,YAAY/H,EAAYgI,CAAK,CAElD,ECpCMC,cAAgB,GACfC,EAAAA,CAAAA,EAASC,KAAOD,EAASE,QAAUC,QAAAA,eAAgB,GAAEC,QAmB/CC,SAAW,CACpBC,WAAY,CAACxI,EAAY,CAACkI,SAAAA,EAAUpF,KAAAA,CAA2B,KAG3CmF,cAAcC,CAAQ,EACnCpF,EAAK2F,UACJ3F,EAAK2F,QAAUC,4BAAoB5F,EAAK2F,OAAO,EAoCtD,EACDE,iBAAkB,CAACT,EAAUU,IACtBA,IAGaX,cAAcC,CAAQ,EAE3BA,EAASO,QADpB,KAAA,GAIJI,eAAgB,CAACX,EAAUU,IACPX,cAAcC,CAAQ,EAE3BK,SAASI,iBAAiBT,EAAUU,CAAU,EAElDE,IAAAA,QAAQF,CAAU,EACVV,EAASO,QAET,CAACP,EAASO,QAAS,MAAOG,GAI7CG,iBAAkBxB,MAAMvH,IACdgJ,EAAWxB,MAAM1G,OAAOiH,YAAY/H,CAAU,EACpD,OAAOiJ,EAAEC,MAAMD,EAAEE,OAAOF,EAAEG,OAAOJ,EAASK,UAAU,EAAI,SAAS,CAAC,CACrE,CACL,EC9FaC,OAAS,CAClBC,WAAW,CAAaC,MAAAA,CAAK,GACzB,MAAO,QAAQA,CAClB,EACDC,gBAGAC,sBAAsB,CAAaF,MAAAA,EAAOxJ,WAAAA,EAAY2J,aAAAA,CAAY,GAC9D,cAAeH,KAASxJ,UAAmB2J,CAC9C,EACDC,oBAAoB,CAAaJ,MAAAA,EAAOxJ,WAAAA,EAAYC,SAAAA,CAAQ,GACxD,cAAeuJ,KAASxJ,UAAmBC,CAC9C,EACD4J,yBAAyB,CAAaL,MAAAA,EAAOM,iBAAAA,EAAkBC,eAAAA,EAAgB/J,WAAAA,EAAYgK,WAAAA,CAAU,GACjG,cAAeR,KAASM,KAAoBC,KAAkB/J,6BAAsCgK,CACvG,CACL,ECfA,IAAMC,cAAgB,SAACC,EAAoCC,GACzD,OAAO,SAAC7F,GAEN,OAAOI,iBAAMC,cADUuF,EACoB5F,CAAK,CAClD,CACF,EACauB,OAAS,SAACqE,EAAoCE,EAAqB/E,EAAgB8E,GACtFE,EAAqBJ,cAAcC,CAAuB,EAC1DI,EAAa5F,iBAAMC,cAAc0F,EAAazL,SAAA,GAC7CwL,CAAc,CAAA,EAErB,OAAOG,0BAAS1E,OAAOyE,EAAYjF,CAAS,CAChD,ECbO,IAAMmF,gBAAkB,CAACC,EAAKC,EAAMC,EAAcC,KACrD,IASE1D,IAAI2D,EAAS,GAIb,OAHIC,IAAAA,MAAMJ,CAAI,IACZG,EAASE,IAAOA,QAACL,CAAI,EAAIA,EAAO,CAACA,IAE5BD,EAAIO,KAAKJ,GAAS,EAAE,EAAE,GAAGC,CAAM,CAIvC,CAHC,MAAO9H,GAEP,OADAS,QAAQyH,IAAIlI,CAAK,EACV4H,CACR,CACF,EAEM,SAASO,SAASC,IACrB,IACA,OAAOC,KAAKD,EAAE,CAGb,CAFA,MAAOE,GACJ7H,QAAQT,MAAMsI,EAAGF,EAAE,CACtB,CACP,CC9BO,IAAMG,aAAe,SAAUC,GACpC,IAAaC,EAAMC,EACnB,MAAoB,UAAhB,OAAOF,IAIXC,EAAO,qBACPC,EAAO,iBACH,EAAgB,UAAhB,OAAOF,GAAqBA,CAAAA,EAAKG,MAH3B,YAGwC,GAAMH,EAAKG,MAAMF,CAAI,GAAMD,EAAKG,MAAMD,CAAI,GAI9F,EAEME,UAAY,IACb7K,OAAO8K,YACD9K,OAAO8K,YAAY,QAAQ,EAC3B9K,OAAO+K,QAAV,KAAA,EAKKC,iBAAmB,KAC9B5E,IAAI6E,EAAM,IAAIC,KACVH,EAASF,YACbzE,IAAI+E,EAAQJ,IAASK,MAMjBC,GALJF,EAAMG,IAAI,QAAS,CAAC,EACpBH,EAAMG,IAAI,UAAW,CAAC,EACtBH,EAAMG,IAAI,UAAW,CAAC,EACtBH,EAAMG,IAAI,eAAgB,CAAC,EAC3BH,EAAQA,EAAMI,SACAR,KAQd,OAPAM,EAAQC,IAAI,OAAQ,IAAI,EACxBD,EAAQC,IAAI,QAAS,CAAC,EACtBD,EAAQC,IAAI,OAAQ,CAAC,EACrBD,EAAQC,IAAI,QAASD,EAAQG,MAAK,EAAKH,EAAQI,UAAW,EAAG,EAAE,EAC/DJ,EAAQC,IAAI,UAAW,CAAC,EACxBD,EAAQC,IAAI,eAAgB,CAAC,EAC7BD,EAAUA,EAAQE,SACX,CACLN,IAAAA,EACAE,MAAAA,EACAE,QAAAA,CACJ,CACA,EAEaK,sBAAwB,SAAUjB,EAAMkB,EAAUC,EAAUC,GAIvE,IAAoDC,EAAWC,EA2B/D,GA9BIF,GACF9N,OAAOC,OAAO6N,EAAQb,iBAAkB,CAAA,EA4B1Ce,EAbiB,SAAUJ,EAAUK,GACnC,MAAa,MAATA,GAAiBA,EAEM,UAAhB,OAAOA,EACT7D,EAAE8D,IAAIN,EAAUK,CAAI,EAE3BtJ,KAAAA,QAAQT,MAAM,yBAAyB,EAJhC0J,GAAY,EAMzB,EAEIA,EADe,KAAA,IAAbA,EACS,GAGWA,EAzBR,SAAUK,GAExB,MAAoB,UAAhB,OAAOA,GAEc,KADvBE,EAAUF,EAAKlG,MAAM,GAAG,GACZxH,OAMP,KAHL4N,EAAQC,IAAG,EACJD,EAAQnG,KAAK,GAAG,EAG7B,EAa6B6F,CAAQ,CACS,GAAK,GAC7B,UAAhB,OAAOnB,EAYT,OAAOA,EAVPqB,EAAY,kBACZM,EAAM,gBAFK3B,EAAK4B,UAAU,EAAG5B,EAAKnM,OAAS,CAAC,EAEX4H,QAAQ,gBAAiBW,KAAKC,UAAU6E,CAAQ,EAAEzF,QAAQ,cAAe4F,CAAS,CAAC,EAAE5F,QAAQ,cAAeW,KAAKC,UAAU+E,CAAM,CAAC,EAAE3F,QAAQ,IAAI1F,OAAO,MAAQsL,EAAY,MAAO,GAAG,EAAG,QAAQ,EAAE5F,QAAQ,aAAcW,KAAKC,UAAUiF,CAAM,CAAC,EAC/Q,IACE,OAAOO,SAASF,CAAG,GAKpB,CAJC,MAAOG,GAGP,OADA7J,QAAQyH,IADAoC,EACW9B,EAAMmB,CAAQ,EAC1BnB,CACR,CAIL,yJCrEA,IAAM+B,oCAAsC,CAACC,QAASC,YAClD,IAAMC,IAAM,qBACNhC,KAAO,gBACT3J,OAASyL,QAab,GAZIE,IAAIlM,KAAKgM,OAAO,IAEZzL,OAD4B,CAAC,EAA7ByL,QAAQ5G,QAAQ,QAAQ,GAAuC,CAAC,EAA9B4G,QAAQ5G,QAAQ,SAAS,GAAqC,CAAC,EAA5B4G,QAAQ5G,QAAQ,OAAO,GAAmC,CAAC,EAA1B4G,QAAQ5G,QAAQ,KAAK,GAAqC,CAAC,EAA5B4G,QAAQ5G,QAAQ,OAAO,GAAuC,CAAC,EAA9B4G,QAAQ5G,QAAQ,SAAS,MAClL4G,WAAWvG,QAAQ,KAAM,WAAW,MAGpCuG,WAAWvG,QAAQ,KAAM,aAAa,EAEnDwG,YAEA1L,OAASA,OAAOkF,QAAQ,eAAgB,UAAU,GAGvDyE,KAAKlK,KAAKgM,OAAO,IAAkC,CAAC,EAA7BA,QAAQ5G,QAAQ,UAAU,GAA8B,CAAC,EAAvB4G,QAAQ5G,QAAQ,IAAI,GAAM,CAElFO,IAAIwG,MAAQ,oBACRC,QAAUD,MAAME,KAAKL,OAAO,EAChC,GAAII,SAA4B,EAAjBA,QAAQvO,OAAY,CAC/B8H,IAAI2G,aAAeF,QAAQ,GAC3B7L,OAASsJ,KAAK,IAAMyC,aAAe,GAAG,EAAC,CAC1C,CACJ,CACD,OAAO/L,MACX,EAEagM,qBAAuB,CAACC,EAAOC,KACxC,GAAI,CAACD,EACD,OAAO,KAGX7G,IAAIyD,EAAeoD,EAAMpD,aAErBoD,EAAME,gBACNtD,EAAeO,aAAa6C,EAAME,gBAAgB,GAElDC,IAAAA,WAAWvD,CAAY,IACvBA,EAAeH,gBAAgBG,EAAc,GAAI,KAAM,CAAE1I,KAAM8L,EAAM9L,IAAI,CAAE,GAE3EgH,aAAEkF,SAASxD,CAAY,IAEvBA,EAAe2C,oCAAoC3C,EAAcoD,EAAMP,QAAQ,GAGnF,IAAMY,EAAY9C,aAAaX,CAAY,EAe3C,OAdIyD,IAGkB,SAAfL,EAAM1L,KAELsI,EAAeA,EAAa3D,QAAQ,kBAAmB,cAAc,EAElD,SAAf+G,EAAM1L,OAEVsI,EAAeA,EAAa3D,QAAQ,kBAAmB,gBAAgB,GAE3E2D,EAAe6B,sBAAsB7B,EAAc,GAAI,IAAKqD,CAAU,GAGlED,EAAM1L,MACV,IAAK,SACD,IAAMC,EAAWyL,EAAMM,WAAa,OAChC1D,CAAAA,GAAiByD,GAAcL,EAAMP,WACpB,SAAblL,GAAwB6L,IAAQA,SAACxD,CAAY,EAEzB,WAAbrI,GAAyB6L,IAAQA,SAACxD,CAAY,EACrDA,EAAe2D,OAAO3D,CAAY,EACd,YAAbrI,GAA0B6L,IAAQA,SAACxD,CAAY,IAEtDA,EAA8C,SAA/BA,EAAa4D,YAAW,GAAkC,MAAjB5D,GALxDA,EAAe6D,OAAO7D,CAAY,GAQ1C,MACJ,IAAK,SACEwD,IAAAA,SAASxD,CAAY,IACpBA,EAAe2D,OAAO3D,CAAY,GAEtC,MACJ,IAAK,UACGwD,IAAAA,SAASxD,CAAY,EACrBA,EAA8C,SAA/BA,EAAa4D,YAAW,GAAkC,MAAjB5D,EAEnD8D,IAAAA,UAAU9D,CAAY,IAE3BA,EAAe,CAAA,GAEnB,MACJ,IAAK,OACD,GAAG+D,IAAAA,OAAO/D,CAAY,EAClB,OAAOkB,OAAOlB,CAAY,EAAEgE,OAAO,4BAA4B,EAEvE,IAAK,OACD,GAAGD,IAAAA,OAAO/D,CAAY,EAClB,OAAOkB,OAAOlB,CAAY,EAAEgE,OAAO,4BAA4B,EAEvE,IAAK,WACD,GAAGD,IAAAA,OAAO/D,CAAY,EAClB,OAAOkB,OAAOlB,CAAY,EAAEgE,OAAO,0BAA0B,CAIxE,CAED,OAAOhE,CACX,ECzHO,SAASiE,eAAeC,EAAMhN,GAEjC,IAAMiN,EAAajN,GAASiN,YAAc,QAEpCC,GADalN,GAASmN,WACRnN,GAASkN,aAAe,GAEtCE,EAAc,GACdC,EAAc,CAACC,EAAYN,EAAMO,EAAaC,IAC5CF,EAAWG,UAA8C,UAAlC,OAAOH,EAAWG,SAAS,GAE3CH,EAAWG,SAEjBF,GAGCE,EAAWrG,EAAEsG,OAAOV,EAAM,GACrB5F,EAAEuG,SAASJ,EAAaK,EAAIX,EAAW,CACjD,EACD7F,EAAExC,KAAK6I,EAAU,IACc,GAAvBD,GACAK,EAAKC,SAAW,CAAA,EACZD,EAAe,WACfA,EAAe,SAAIR,EAAYQ,EAAMb,EAAMa,EAAe,SAAGL,EAAsB,CAAC,IAGpFK,EAAe,WACfA,EAAe,SAAIR,EAAYQ,EAAMb,EAAMa,EAAe,SAAGL,CAAmB,EAIpG,CAAS,EACMC,GAnBP,KAAA,EAiDJ,OA3BgB,IACZ,IAAK,IAAIrQ,EAAI,EAAGA,EAAI4P,EAAKzP,OAAQH,CAAC,GAG9B,GAFA4P,EAAK5P,GAAG2Q,SAAW,EACnBf,EAAK5P,GAAG0Q,SAAW,CAAA,EACbd,EAAK5P,GAAW,OAAG,CACrBiI,IAAI2I,EAAU,EACd,IAAK,IAAIC,EAAI,EAAGA,EAAIjB,EAAKzP,OAAQ0Q,CAAC,GAC1BjB,EAAK5P,GAAW,QAAK4P,EAAKiB,GAAGhB,KAC7Be,EAAU,GAEH,GAAXA,IAAchB,EAAK5P,GAAG2Q,SAAW,EACxC,MAAMf,EAAK5P,GAAG2Q,SAAW,CAEjC,GACOf,CAAI,EAEZ5F,EAAExC,KAAKoI,EAAM,IACW,GAAhBY,EAAIG,WACe,GAAfb,GACAU,EAAIE,SAAW,CAAA,EACfV,EAAYzI,KAAK3H,OAAOC,OAAO,GAAI2Q,EAAK,CAAEH,SAAUJ,EAAYO,EAAKZ,EAAMY,EAAc,SAAGV,EAAc,CAAC,CAAG,CAAA,CAAC,GAE/GE,EAAYzI,KAAK3H,OAAOC,OAAO,GAAI2Q,EAAK,CAAEH,SAAUJ,EAAYO,EAAKZ,EAAMY,EAAc,SAAGV,CAAW,CAAG,CAAA,CAAC,EAG3H,CAAK,EAEME,CACX,CC3DO,SAASc,8BAA8BC,EAAO3N,EAAMR,GAIvDqF,IAAIjF,GAHCJ,EAAAA,GACS,IAEKI,KACnBiF,IAAI+I,EAAYpO,EAAQoO,WAAa,KACrC/I,IAAIgJ,EAAKF,EAAMG,cAAe,EAACC,KAAK,SAAUlR,GAC1C,OAAOA,EAAEoF,MAAMjC,OAASA,IAAS,CAACJ,GAAQ/C,EAAEoF,MAAMrC,OAASA,EACnE,CAAK,EACD,GAAIiO,EACA,OAAOA,EAEN,GAAkB,SAAdD,GACL,GAAID,EAAMV,UAAYU,EAAMV,SAASlQ,OAAQ,CACzC,IAAK8H,IAAIjI,EAAI,EAAGA,EAAI+Q,EAAMV,SAASlQ,QAC/B8Q,EAAAA,EAAKH,8BAA8BC,EAAMV,SAASrQ,GAAIoD,EAAMR,CAAO,GAD5B5C,CAAC,IAM5C,OAAOiR,CACV,CAAA,MAGA,GAAkB,OAAdD,GACDD,EAAMnD,OACN,OAAOkD,8BAA8BC,EAAMnD,OAAQxK,EAAMR,CAAO,CAG5E,CAOO,SAASwO,wBAAwBC,GACpCpJ,IAAI4B,EAAU,CAAA,EACd5B,IAAIqJ,EAAmBtH,EAAEuH,OAAOF,EAAY,SAAUpR,EAAGuR,GACrD,MAAO,mBAAmBlP,KAAKkP,CAAC,CACxC,CAAK,EAYD,OAHQ3H,EARHG,EAAEH,QAAQyH,CAAgB,IACrBG,EAAuBzH,EAAE0H,OAAOJ,EAAkB,SAAUrR,GAC9D,OAAO+J,EAAE6B,MAAM5L,CAAC,GACR+J,EAAE2H,SAAS1R,CAAC,GAAK+J,EAAEH,QAAQ5J,CAAC,GAC5B+J,EAAE8B,QAAQ7L,CAAC,GAAK+J,EAAEH,QAAQ5J,EAAEqQ,OAAO,SAAUG,GAAQ,MAAO,CAACzG,EAAE6B,MAAM4E,CAAI,CAAG,CAAA,CAAC,GAC7EzG,EAAEkF,SAASjP,CAAC,GAAkB,IAAbA,EAAEE,MACvC,CAAS,EACI6J,EAAEH,QAAQ4H,CAAoB,GAIhC5H,EAHW,CAAA,CAItB,OCrEa+H,gBACXC,cACEpR,KAAKqR,SAAW,IAAIC,IACpBtR,KAAKuR,OAAS,EACdvR,KAAKwR,eAAiB,CACpBC,YAAa,CAAA,EACbC,eAAgB,SACtB,EACI1R,KAAK2R,aAAe,CAAA,CACrB,CAGDC,qBAAqBC,EAAS1P,EAAU,IACtC,IAAMkF,EAAKrH,KAAKuR,MAAM,GAChBO,EAAgB,CACpBzK,GAAAA,EACAwK,QAAAA,EACAtP,KAAMJ,EAAQI,MAAQ,WAAW8E,EACjC0K,SAAU5P,EAAQ4P,UAAY,EAC9BN,YAAatP,EAAQsP,aAAe,CAAA,EACpCC,eAAgBvP,EAAQuP,eACxBM,mBAAoB7P,EAAQ6P,oBAAsB,CAAA,EAClDC,QAA6B,CAAA,IAApB9P,EAAQ8P,OACvB,EAKI,OAJAnO,QAAQyH,IAAI,uBAAwBlE,EAAIyK,CAAa,EACrD9R,KAAKqR,SAAS3E,IAAIrF,EAAIyK,CAAa,EAG5B,KACL9R,KAAKqR,SAASa,OAAO7K,CAAE,CAC7B,CACG,CAGD8K,iBAAiBd,GACf,IAAMe,EAAgB,GAQtB,OANAf,EAASrO,QAAQ,CAAA,CAAG6O,QAAAA,EAAS1P,QAAAA,EAAU,EAAI,KACnCkQ,EAAarS,KAAK4R,qBAAqBC,EAAS1P,CAAO,EAC7DiQ,EAActL,KAAKuL,CAAU,CACnC,CAAK,EAGM,KACLD,EAAcpP,QAAQsP,GAAMA,EAAI,CAAA,CACtC,CACG,CAGDC,sBAAsBC,GAEpB,GADA1O,QAAQyH,IAAI,kBAAmBiH,CAAO,EAClCxS,KAAK2R,aAEP,OADA7N,QAAQ2O,KAAK,wCAAwC,EAC9C,CAAEC,QAAS,CAAA,GAGpB1S,KAAK2R,aAAe,CAAA,EAEpB,IAEE,IASWgB,EATLC,EAAiBC,MAAMC,KAAK9S,KAAKqR,SAAS3H,QAAQ,EACrDmG,OAAOkD,GAAKA,EAAEd,OAAO,EACrBe,KAAK,CAACC,EAAGC,IAAMA,EAAEnB,SAAWkB,EAAElB,QAAQ,EAKnCoB,GAHNrP,QAAQyH,iBAAiBqH,EAAelT,0BAA0B,EAG7C,IAErB,IAAWiT,KAAUC,EACnB,IACE,IAAMxQ,EAAS0F,MAAM6K,EAAOd,QAAQW,CAAO,EAE3C,GAAe,CAAA,IAAXpQ,EAAkB,CAEpB+Q,EAAarM,KAAK,CAChB+K,QAASc,EAAOpQ,KAChBqB,OAAQ,iBACRC,QAAS8O,EAAOjB,eAChBiB,OAAAA,CACd,CAAa,EACD,KACD,CAAM,GAAIvQ,GAA4B,UAAlB,OAAOA,GACH,CAAA,IAAnBA,EAAOsQ,QAAmB,CAC5BS,EAAarM,KAAK,CAChB+K,QAASc,EAAOpQ,KAChBqB,OAAQxB,EAAOwB,QAAU,oBACzBC,QAASzB,EAAOyB,SAAW8O,EAAOjB,eAClCtO,KAAMhB,EAAOgB,KACbuP,OAAAA,CAChB,CAAe,EACD,KACD,CAcJ,CAXC,MAAOtP,GACPS,QAAQT,2BAA2BsP,EAAOpQ,eAAgBc,CAAK,EAE/D8P,EAAarM,KAAK,CAChB+K,QAASc,EAAOpQ,KAChBqB,OAAQ,gBACRC,QAAS,gBACTR,MAAAA,EACAsP,OAAAA,CACZ,CAAW,EACD,KACD,CAGH,OAA0B,EAAtBQ,EAAazT,OACR,CACLgT,QAAS,CAAA,EACTU,UAAWD,EAAa,GACxBE,UAAWF,CACrB,EAGa,CAAET,QAAS,CAAA,EAInB,CAFS,QACR1S,KAAK2R,aAAe,CAAA,CACrB,CACF,CAGD2B,WACEtT,KAAKqR,SAASkC,QACdzP,QAAQyH,IAAI,+BAA+B,CAC5C,CAGDiI,kBACE,OAAOxT,KAAKqR,SAASoC,IACtB,CAGDC,eACE,OAAOb,MAAMC,KAAK9S,KAAKqR,SAAS3H,QAAQ,EAAEiK,IAAIZ,IAAM,CAClD1L,GAAI0L,EAAE1L,GACN9E,KAAMwQ,EAAExQ,KACRwP,SAAUgB,EAAEhB,SACZE,QAASc,EAAEd,OACZ,EAAC,CACH,CAGD2B,kBAAkBC,EAAW5B,GACrBJ,EAAU7R,KAAKqR,SAAShE,IAAIwG,CAAS,EAC3C,MAAIhC,CAAAA,CAAAA,IACFA,EAAQI,QAAUA,EACX,CAAA,EAGV,CAGD6B,cAAcD,GACZ,OAAO7T,KAAKqR,SAASa,OAAO2B,CAAS,CACtC,CACH,CC5IY,IAAChP,UAAY1F,OAAOC,OAAO,GAAI,CACvC+G,OAAQA,OACRyD,OAAAA,OACAf,SAAAA,SACA1J,OAAQwI,QACRvB,MAAAA,MACAK,OAAAA,OACA3B,KAAM,GACNiP,OAAOxR,GACL,OAAOsC,UAAUC,KAAKvC,EACvB,EACDyR,OAAO,CAELC,GAAI,CAACC,EAAQC,KAEX,IAAMH,EAAS5S,OAAOgT,WAEtB,GAAGD,EACD,OAAGH,EACMA,EAAOC,GAAGE,CAAE,EAQZ/S,OAAOiT,KAAKF,CAAE,EAItBH,EACDA,EAAOM,OAAM,EAEbxQ,QAAQ2O,KAAK,WAAYyB,CAAM,CAElC,EACDI,OAAQ,KACNxQ,QAAQyH,IAAI,QAAQ,CACrB,CACF,EACL1H,QAAIA,KAAOA,QACX0Q,aAAIA,KAAYA,aACZC,WAAY,CACVC,OAAAA,KAAAA,aAAQC,KAAKA,KACd,EACDC,SAAU,CAAA,CAAEhS,KAAAA,EAAMmH,MAAAA,EAAOvH,KAAAA,CAAK,KAC5B,OAAQI,GACN,IAAK,WACH,cAAemH,KAASvH,aAC1B,IAAK,OACH,cAAeuH,KAASvH,SAC1B,IAAK,SACH,cAAeuH,KAASvH,WAC1B,QACE,cAAeuH,KAASvH,KAAQI,CACnC,CACF,EACDiS,aAAc,KACZ,GAAGxT,OAAOgT,WACR,OAAOhT,OAAOgT,WAAWE,QAI5B,EACDlG,qBAAAA,qBACAc,eAAAA,eACAmB,8BAAAA,8BACAM,wBAAAA,wBACAkE,gBAAiB,IACf,IAAIC,EAAmB,GAyBvB,OAxBAvL,EAAExC,KAAK3D,EAAM,CAACZ,EAAO4B,KACjB,IAUc2Q,EACAC,EAXVzL,EAAEH,QAAQ5G,CAAK,GAAK+G,CAAAA,EAAEwF,UAAUvM,CAAK,IAClC+G,EAAE0L,WAAW7Q,EAAK,yBAAyB,EAC8B,EAAtE5B,EAAMqN,OAAOqF,GAAKA,MAAAA,GAAuC,KAANA,CAAQ,EAAExV,QAC/DoV,EAAiBhO,KAAK,CAAC,GAAG1C,EAAIkD,QAAQ,0BAA2B,EAAE,EAAK,UAAW9E,EAAM,EAEpF+G,EAAE0L,WAAW7Q,EAAK,gBAAgB,IACpCmF,EAAEkF,SAASjM,CAAK,EACfsS,EAAiBhO,KAAK,CAAC,GAAG1C,EAAIkD,QAAQ,iBAAkB,EAAE,EAAK,WAAY9E,EAAM,EAC5E+G,EAAE2H,SAAS1O,CAAK,GAAKA,EAAM2S,GAG9BH,EAAoB,CAAC,EADrBD,EAAU,GAAG3Q,EAAIkD,QAAQ,iBAAkB,EAAE,GACb,KAAM,IAAK9E,EAAM2S,IAClD3S,EAAM4S,IAAI1V,QACXsV,EAAkBlO,KAAK,CAACiO,EAAU,OAAQ,IAAKvS,EAAM4S,IAAI,EAE3DN,EAAiBhO,KAAKkO,CAAiB,GAGrCF,EAAiBhO,KAAK,CAAC,GAAG1C,EAAIkD,QAAQ,iBAAkB,EAAE,EAAK,IAAK9E,EAAM,GAIhG,CAAO,EACMsS,CACR,EAODO,0BAA2B,CAACjS,EAAMyD,KAChC,GAAI0C,CAAAA,EAAE2H,SAAS9N,CAAI,GAAMmG,EAAEH,QAAQhG,CAAI,EA6BrC,OAAOA,EA7BgC,CACvCoE,IAAIuF,EAAW3J,EAyBf,OAxBIyD,IACAkG,EAAWxD,EAAEuH,OAAO1N,EAAM,SAAS5D,EAAEuR,GACnC,MAAO,CAAC,CAAClK,EAAOkK,EAC9B,CAAa,GAEYxH,EAAE+L,QAAQvI,EAAU,SAAUvN,EAAGuR,GAChDvJ,IAAI+N,EAAkB,iBACtB,IACQC,EAcR,MAfI3O,CAAAA,GAEgB,YADZ2O,EAAY3O,EAAOkK,IAAIpO,OACe,aAAd6S,GAGP,SAAdA,GAGc,aAAdA,GAGc,SAAdA,IACPD,GAAkB,aAGfA,EAAkBxE,CACnC,CAAS,CAEF,CAIF,EACD0E,wBAAyB,CAACC,EAAUC,KAClC,IAAMC,EAAkB,GACxB,IAEEC,EAuBF,OAzBIH,GAAYC,IACVE,EAAYH,EAASxO,MAAM,KAAK,EACpC2O,EAAYC,IAAAA,QAAQD,CAAS,EAC7BF,EAAkB3S,QAAQ,SAAUoB,EAAK2R,GACvCvO,IAAIwO,EAAoB,GACD,GAApBH,EAAUnW,OAEXsW,EAAoB,CAAC5R,EAAK,WAAYyR,EAAU,IAGhDA,EAAU7S,QAAQ,SAASiT,EAAWC,GACpCF,EAAkBlP,KAAK,CAAC1C,EAAK,WAAY6R,EAAU,EAC/CC,EAAaL,EAAUnW,OAAS,GAClCsW,EAAkBlP,KAAK,KAAK,CAE5C,CAAa,EAEAkP,EAAkBtW,SACnBkW,EAAgB9O,KAAKkP,CAAiB,EAClCD,EAAQJ,EAAkBjW,OAAS,IACrCkW,EAAgB9O,KAAK,IAAI,CAGvC,CAAS,GAEI8O,CACR,EACDO,oBAAqB,CAACC,EAAcC,EAAY,CAAA,KAC9C,IAAMhX,EAAI+B,OAAOkV,eAAejX,EAChC,IAAMkX,EAAY,GAyFlB,OAxFKnN,IAAAA,QAAQgN,CAAY,IACvBG,EAAUzP,KAAK,CACb0P,MAASnX,EAAE,6CAA8C,MAAM,EAC/DuQ,SAAY,EAGtB,CAAS,EACD6G,OAAOzT,QAAQoT,EAAa,SAAU/H,GACpCkI,EAAU,GAAG3G,SAAS9I,KAAK,CACzB0P,MAASnI,EAAMmI,MACfhU,MAAS6L,EAAM7L,KAC3B,CAAW,CACX,CAAS,GAEC6T,GACFE,EAAUzP,KAAK,CACb0P,MAASnX,EAAE,6CAA8C,MAAM,EAC/DuQ,SAAY,CACV,CACE4G,MAASnX,EAAE,2CAA4C,MAAM,EAC7DmD,MAAS,kBACV,EACD,CACEgU,MAASnX,EAAE,4CAA6C,OAAO,EAC/DmD,MAAS,mBACV,EAMD,CACEgU,MAASpV,OAAO/B,EAAE,2BAA4B,IAAI,EAClDuQ,SAAY,CACV,CACE4G,MAASpV,OAAO/B,EAAE,oCAAoC,EACtDmD,MAAS,wBACV,EACD,CACEgU,MAASpV,OAAO/B,EAAE,qCAAqC,EACvDmD,MAAS,yBACV,EACD,CACEgU,MAASpV,OAAO/B,EAAE,sCAAsC,EACxDmD,MAAS,4BACV,EACD,CACEgU,MAASpV,OAAO/B,EAAE,uCAAuC,EACzDmD,MAAS,2BACV,EACD,CACEgU,MAASnX,EAAE,+CAAgD,KAAK,EAChEmD,MAAS,yBACV,EACD,CACEgU,MAASpV,OAAO/B,EAAE,4CAA4C,EAAI,MAClEmD,MAAS,uCACV,EAMD,CACEgU,MAASpV,OAAO/B,EAAE,qDAAqD,EACvEmD,MAAS,yCACV,EACD,CACEgU,MAASpV,OAAO/B,EAAE,0CAA0C,EAAI,MAChEmD,MAAS,8BACV,EACD,CACEgU,MAASpV,OAAO/B,EAAE,2CAA2C,EAC7DmD,MAAS,+BACV,EACD,CACEgU,MAASnX,EAAE,qDAAsD,MAAM,EACvEmD,MAAS,+BACV,EACD,CACEgU,MAASnX,EAAE,wDAAyD,UAAU,EAC9EmD,MAAS,kCACV,EAEJ,EAEb,CAAS,EAEI+T,CACR,EACDG,2BAA4B,CAACC,EAAKvT,KAChC,IAAIwT,EAAexV,OAAO8K,aAAe9K,OAAO8K,YAAY,MAAM,GAAM2K,KACxE,IAAKrP,IAAIjI,EAAI,EAAGA,EAAIoX,EAAIjX,OAAQH,CAAC,GAC/B,GAAIsT,MAAMxH,QAAQsL,EAAIpX,EAAE,EAEtBsF,UAAU6R,2BAA2BC,EAAIpX,GAAI6D,CAAI,OAIjD,GAAI,gBAAgBvB,KAAK8U,EAAIpX,EAAE,EAC7B,IACEoX,EAAIpX,GAAKqX,EAAYE,SAASH,EAAIpX,GAAI6D,CAAI,CAG3C,CAFC,MAAO2T,GACPjT,QAAQT,MAAM,gBAAiB0T,CAAE,CAClC,CAIR,EACDC,gBAAiB,IAAI7F,eACzB,CAAC,ECxSD,IAAI8F,qBAAuB,46LAGpB,IAAMC,UAAY,CACxBC,SAAUF,qBAAqB/P,MAAM,GAAG,CACzC,ECHO,IAAMkQ,kBAAoB,CAE7BC,oBAAqB,SAAUC,GAC3B,IAAMC,EAA+B,CAAC,OAAQ,WAAY,aAAc,MAAO,SAa/E,IAAMC,EAAmB,GACnBC,EAAaH,EAAII,QAAQpO,SAQ/B,OAPImO,GACAlO,aAAExC,KAAK0Q,EAAW5Q,OAAQ,SAAUwH,GAfxC,IAAgCA,EAAOsJ,EAC/BC,EADwBvJ,EAgBGA,EAhBIsJ,EAgBGF,EAAWI,gBAZ7CD,EAFoB,CAAA,KADpBA,EAAkBvJ,EAAMyJ,aACKzJ,EAAM9L,OAASoV,EAE1B,CAAA,EAElBC,IAAsE,CAAC,EAApDL,EAA6BtQ,QAAQoH,EAAM1L,IAAI,GAW9D6U,EAAiB1Q,KAAKuH,EAAM9L,IAAI,CAExC,CAAC,EAEEiV,CACV,EAEDO,qBAAsB,SAAUT,EAAKI,EAASM,GAC1C,IAAIC,EAAwB,aACtBC,EAAgBR,EAAQQ,cAC9B,IAH0CF,EAAA,KAAA,IAAAA,EAAgB,GAGtDA,GAAOG,SAAU,CACjB,GAAmB,gBAAfT,EAAQU,GAER,OADIrP,EAAU,CAAC,CAAC,MAAO,IAAK2O,EAAQlV,QAC7BrD,OAAOC,OAAO,GAAIkY,EAAK,CAC1BtP,OAAU,OACV9F,IAAO,WACPkB,KAAQ,CACJ+E,MAAS,gCAAkCF,KAAKC,UAAUa,CAAO,EAAI,+GACxE,CACJ,CAAA,EAGEmP,EACCD,EAAwB,sBAAsBI,OAAAH,EAAc3V,KAAK+E,QAAQ,MAAO,GAAG,EAAC,QAAA,EAAA+Q,OAASH,EAAcI,YAAY,GAIvHL,EAAwB,GACxBnU,QAAQT,MAAM,uCAAuC,EAGhE,CACD,IA0CUkV,EA1CN5C,EAAoB3V,KAAKqX,oBAAoBC,CAAG,EAChDvO,EAAmB,GAQnByP,GAPAR,EAAOG,WACDI,EAAeL,EAAcK,aAC7BE,EAAiBP,EAAcO,iBACfA,EAAe/Y,QAAU,CAAC6Y,IAC5CxP,EAAU0P,GAGHxQ,KAAKyQ,MAAMzQ,KAAKC,UAAUoP,EAAII,OAAO,CAAC,GACjD5C,EAAmBjQ,UAAUgQ,gBAAgB2D,CAAQ,GAAK,GAmB1D5C,GAlB0B,EAA1Bd,EAAiBpV,SAEbqJ,EADiB,EAAjBA,EAAQrJ,OACE,CAACqJ,EAAS,MAAc+L,GAExBA,GAIda,GACAA,EAAkB3S,QAAQ,SAAUoB,GAChC,IAAMuU,EAAWH,EAASpU,GACtBmF,aAAEkF,SAASkK,CAAQ,EACnB5P,EAAQjC,KAAK,CAAC1C,EAAK,WAAYuU,EAAS,GACjCpP,aAAE8B,QAAQsN,CAAQ,GAAKpP,aAAEwF,UAAU4J,CAAQ,GAAKA,IACvD5P,EAAQjC,KAAK,CAAC1C,EAAK,IAAKuU,EAAS,CAEzC,CAAC,EAEiB9T,UAAU4Q,wBAAwB+C,EAASP,GAAwBtC,CAAiB,GA6CpGpO,GA5CFqO,GAA4C,EAAzBA,EAAgBlW,QACnCqJ,EAAQjC,KAAK8O,CAAe,EAG5BoC,EAAOG,YACHS,EAAeV,EAAcnP,UAEd6P,EAAalZ,SAC5BmF,UAAU6R,2BAA2BkC,EAActB,EAAII,OAAO,EAC9D3O,EAAQjC,KAAK8R,CAAY,GAGvBL,EAAeL,EAAcK,aAEG,UAAnC,OADCM,EAA0BX,EAAcW,2BAExCA,EAA0B,IAAInL,SAAS,iBAAUmL,CAAuB,CAAE,KAGhD,UAA3B,OADCC,EAAkBZ,EAAcY,iBAAmBZ,EAAca,oBAEjED,EAAkB,IAAIpL,SAAS,iBAAUoL,CAAe,CAAE,KAE3DD,GAA2B,CAACN,IACrBS,EAAYH,EAAwB9P,EAASuO,EAAII,OAAO,IAC9CsB,EAAUtZ,QACtBqJ,EAAQjC,KAAKkS,CAAS,EAI3BF,IAAmB,CAACP,IACbU,EAAWH,EAAgB/P,EAASuO,EAAII,OAAO,IACpB,EAAlBuB,EAASvZ,QACpBqJ,EAAQjC,KAAKmS,CAAQ,EAKjC3B,EAAIlU,KAAO,GAEU,EAAjB2F,EAAQrJ,QACRP,OAAOC,OAAOkY,EAAIlU,KAAM,CACpB2F,QAASd,KAAKC,UAAUa,CAAO,CAClC,CAAA,EAGeuO,EAAIvR,MAAQuR,EAAIvR,KAAKwB,aAczC,OAbGA,GACCpI,OAAOC,OAAOkY,EAAIlU,KAAM,CACpByD,OAAQU,CACX,CAAA,EAGF+P,EAAIvR,KAAKmT,QAEM5B,EAAIvR,KAAKmT,MAAMxB,SAAWJ,EAAIvR,KAAKmT,MAAMxB,QAAQyB,QAE/D7B,EAAIpV,IAAgB,mCAGjBoV,CACV,EACD8B,cAAe,SAAUC,EAASC,EAAUhC,EAAKI,EAASM,GAyBtD,OAzBsDA,EAAA,KAAA,IAAAA,EAAgB,GACnEA,GAAOG,UAA2B,gBAAfT,EAAQU,IACpBjJ,EAAO5F,aAAEoK,IAAI0F,EAAQjW,KAAK+L,KAAM,SAAUa,GAG5C,OAFA,OAAOA,EAAKJ,SACZ,OAAOI,EAAK7C,OACL6C,CACX,CAAC,EACDqJ,EAAQjW,KAAK+L,KAAOA,IAIpBoK,EAAcjC,EAAIlU,MAAQkU,EAAIlU,KAAK2F,QACvCsQ,EAAQjW,KACDlE,SAAAA,SAAA,GAAAma,EAAQjW,IAAI,EACf,CAAAoW,SAAU,CAAC,CAACD,IAIhBF,EAAQjW,KAAKqW,kBAAoBnC,EAAIlU,MAAQkU,EAAIlU,KAAKyD,QAGrDwS,EAAQjW,KAAK+L,MAAQ,IAAInM,QAAQ,SAAUgN,GACxCA,EAAKyJ,kBAAoBnC,EAAIlU,MAAQkU,EAAIlU,KAAKyD,MAClD,CAAC,GAEMwS,CACV,EACDK,0BAA2B,SAAUpC,EAAKI,EAASM,GAC/C,IACIjP,EAAU,GACV4Q,EAFW1R,KAAKyQ,MAAMzQ,KAAKC,UAAUoP,EAAII,OAAO,CAAC,EAElCjP,IAKblB,GAJFoS,IACA5Q,EAAU,CAAC,CAAC,SAAU,IAAK4Q,KAGVjC,GAAWA,EAAQ+B,mBAAsB,iFAE9D,OAAOta,OAAOC,OAAO,GAAIkY,EAAK,CAC1BlU,KAAM,CACF+E,MAAO,gCAAkCF,KAAKC,UAAUa,CAAO,EAAI,+CAAiDxB,EAAc,IACrI,CACJ,CAAA,CACJ,EACDqS,mBAAoB,SAAUP,EAASC,EAAUhC,EAAKI,EAASM,GAC3D,IAAI5U,EAAOiW,EAAQjW,KAanB,OAZIA,EAAKwM,WAGTxM,EAAK+L,KAAO/L,EAAK+L,KAAKwE,IAAI,SAAUkG,GAGhC,OAFAA,EAAWC,MAAQ,EAAGD,CAAAA,EAAWjK,UAAYiK,CAAAA,EAAWjK,SAASlQ,QACjE,OAAOma,EAAWjK,SACXiK,CACX,CAAC,EAEDzW,EAAKwM,SAAWxM,EAAK+L,KACrB,OAAO/L,EAAK+L,KACZ,OAAO/L,EAAK2W,OACLV,CACV,GC3LCW,kBAAoB,WACtB,MAAqB,aAAlB,OAAO5Y,OACC,GAEJ6Y,QAAQC,SAASxC,SAAqCuC,QAAQC,QACzE,EAEa7Y,UAAOnC,SAAA,CAChBib,UAAW,CACPjD,UAASA,SACZ,EACDE,kBAAiBA,kBACjBgD,WAAY,SAACC,GACT,IAAM3C,EAAesC,oBACrB,OAAGtC,EAAQyB,UAGsB,aAAjB,OAAO/X,OAAwBA,OAAOkZ,aAAaC,QAAQ,iBAAiB,EAAI,KAIzFF,CACX,EACAhY,YAAa,SAACH,GACV,OADU,KAAA,IAAAA,IAAAA,EAAQ,IACX,GAAAmW,OAAGhX,UAAQ+Y,WAAU,CAAE,EAAG/B,OAAAnW,CAAG,CACvC,EACDsY,YAAa,WACT,IACI,IAAIC,EAAUT,kBAAmB,EAACU,SAMlC,OAFID,EAFArZ,OAAOU,SAAS6Y,QAAU,CAACF,EACR,IAAIG,gBAAgBxZ,OAAOU,SAAS6Y,MAAM,EACtCtN,IAAI,YAAY,EAEtCoN,GAGEA,EAFI,IAKd,CAFC,MAAOpX,GACLS,QAAQT,MAAMA,CAAK,CACtB,CACJ,EACDZ,iBAAkB,WACd,IACI,IAAMiV,EAAUsC,oBACZS,EAAU/C,EAAQgD,SAClBG,EAAQnD,EAAQoD,UAEpB,OAAKL,GAAYI,EAGV,UAAUxC,OAAAoC,EAAW,GAAA,EAAApC,OAAAwC,CAAK,EAFtB,IAKd,CAFC,MAAOxX,GACLS,QAAQT,MAAMA,CAAK,CACtB,CACJ,EACDpB,YAAWA,YACXhC,gBAAeA,eAAA,EACZ8a,UAAU,EAGG,aAAjB,OAAO3Z,SACFA,OAAeC,QACdD,OAAeC,QAAUlC,OAAOC,OAAOiC,UAAUD,OAAeC,OAAO,EAEvED,OAAeC,QAAUA,WAId,aAAjB,OAAOD,SACFA,OAAeyD,UACdzD,OAAeyD,UAAY1F,OAAOC,OAAOyF,UAAYzD,OAAeyD,SAAS,EAE7EzD,OAAeyD,UAAYA"}