@next-bricks/ai 1.32.14 → 1.32.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +1 -1
- package/dist/chunks/{1055.b2aa915a.js → 1055.7660c925.js} +2 -2
- package/dist/chunks/1055.7660c925.js.map +1 -0
- package/dist/chunks/1889.94da986f.js +2 -0
- package/dist/chunks/1889.94da986f.js.map +1 -0
- package/dist/chunks/2862.794b8787.js +3 -0
- package/dist/chunks/2862.794b8787.js.map +1 -0
- package/dist/chunks/3171.9e88830f.js +2 -0
- package/dist/chunks/3171.9e88830f.js.map +1 -0
- package/dist/chunks/5399.d66d1665.js +2 -0
- package/dist/chunks/5399.d66d1665.js.map +1 -0
- package/dist/chunks/5552.81ce9ebc.js +2 -0
- package/dist/chunks/5552.81ce9ebc.js.map +1 -0
- package/dist/chunks/6376.bcccf276.js +2 -0
- package/dist/chunks/6376.bcccf276.js.map +1 -0
- package/dist/chunks/7736.477cde3e.js.map +1 -1
- package/dist/chunks/9118.5dccb1c4.js +3 -0
- package/dist/chunks/9118.5dccb1c4.js.LICENSE.txt +11 -0
- package/dist/chunks/9118.5dccb1c4.js.map +1 -0
- package/dist/chunks/{9415.671c3778.js → 9415.5609a0da.js} +2 -2
- package/dist/chunks/{9415.671c3778.js.map → 9415.5609a0da.js.map} +1 -1
- package/dist/chunks/948.0e3de26c.js +3 -0
- package/dist/chunks/948.0e3de26c.js.map +1 -0
- package/dist/chunks/chat-agent.7726f29c.js.map +1 -1
- package/dist/chunks/chat-view.20131fe6.js.map +1 -1
- package/dist/chunks/main.0e9ae15a.js +2 -0
- package/dist/chunks/main.0e9ae15a.js.map +1 -0
- package/dist/examples.json +8 -1
- package/dist/index.9154e146.js +2 -0
- package/dist/index.9154e146.js.map +1 -0
- package/dist/manifest.json +37 -5
- package/dist/types.json +2 -2
- package/dist-types/chat-agent/index.d.ts +23 -0
- package/dist-types/chat-view/ChatViewContext.d.ts +2 -2
- package/dist-types/chat-view/index.d.ts +16 -7
- package/docs/chat-agent.md +117 -0
- package/docs/chat-agent.react.md +95 -0
- package/docs/chat-view.md +132 -0
- package/docs/chat-view.react.md +123 -0
- package/package.json +2 -2
- package/dist/chunks/1055.b2aa915a.js.map +0 -1
- package/dist/chunks/1889.9c7bf977.js +0 -2
- package/dist/chunks/1889.9c7bf977.js.map +0 -1
- package/dist/chunks/2862.8a658734.js +0 -3
- package/dist/chunks/2862.8a658734.js.map +0 -1
- package/dist/chunks/3171.9f262930.js +0 -2
- package/dist/chunks/3171.9f262930.js.map +0 -1
- package/dist/chunks/4837.f33723c7.js +0 -2
- package/dist/chunks/4837.f33723c7.js.map +0 -1
- package/dist/chunks/5399.b3a26801.js +0 -2
- package/dist/chunks/5399.b3a26801.js.map +0 -1
- package/dist/chunks/5552.cd9b6bc1.js +0 -2
- package/dist/chunks/5552.cd9b6bc1.js.map +0 -1
- package/dist/chunks/7218.b0bebe31.js +0 -2
- package/dist/chunks/7218.b0bebe31.js.map +0 -1
- package/dist/chunks/948.584a959e.js +0 -3
- package/dist/chunks/948.584a959e.js.map +0 -1
- package/dist/chunks/main.1d2068a6.js +0 -2
- package/dist/chunks/main.1d2068a6.js.map +0 -1
- package/dist/index.46def2d7.js +0 -2
- package/dist/index.46def2d7.js.map +0 -1
- /package/dist/chunks/{2862.8a658734.js.LICENSE.txt → 2862.794b8787.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{948.584a959e.js.LICENSE.txt → 948.0e3de26c.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_ai=globalThis.webpackChunk_next_bricks_ai||[]).push([[3171,5552],{5552:(n,e,t)=>{t.r(e),t.d(e,{i18n:()=>p,i18nText:()=>l,initializeI18n:()=>u});var i=t(5630),s=t(7177),r=t(848);let a=!1;const o=new Set;function u(n,e){if(a||(a=!0,s.i18n.use(r.default).init({fallbackLng:"zh",debug:!1,supportedLngs:["zh","en"],nonExplicitSupportedLngs:!0,interpolation:{escapeValue:!1},react:{useSuspense:!1},returnNull:!1,compatibilityJSON:"v3",resources:{}})),n&&e&&!o.has(n)){o.add(n);for(const[t,i]of Object.entries(e))s.i18n.addResourceBundle(t,n,i)}}var c=t(410);function l(n){var e;if(!n)return;const t=null!==(e=s.i18n.language)&&void 0!==e?e:"zh-CN";if((0,c.hasOwnProperty)(n,t))return n[t];const i=t.split("-")[0];if(i!==t)return(0,c.hasOwnProperty)(n,i)?n[i]:void 0;const r=`${i}-`;for(const e of Object.keys(n))if(e.startsWith(r))return n[e]}const p=i.default||i}}]);
|
|
2
|
+
//# sourceMappingURL=3171.9e88830f.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/3171.9e88830f.js","mappings":"mOAEA,IAAIA,GAAc,EAClB,MAAMC,EAAwB,IAAIC,IAC3B,SAASC,EAAeC,EAAIC,GAyBjC,GAxBKL,IACHA,GAAc,EACd,EAAAM,KAICC,IAAmF,WAEnFC,KAAK,CACJC,YAAa,KACbC,OAAO,EACPC,cAAe,CAAC,KAAM,MACtBC,0BAA0B,EAC1BC,cAAe,CACbC,aAAa,GAEfC,MAAO,CACLC,aAAa,GAEfC,YAAY,EACZC,kBAAmB,KACnBC,UAAW,CAAC,KAGXf,GAAOC,IAAWJ,EAAsBmB,IAAIhB,GAAjD,CAGAH,EAAsBoB,IAAIjB,GAC1B,IAAK,MAAOkB,EAAMH,KAAcI,OAAOC,QAAQnB,GAC7C,EAAAC,KAAKmB,kBAAkBH,EAAMlB,EAAIe,EAHnC,CAKF,C,aClCO,SAASO,EAASC,GACvB,IAAIC,EACJ,IAAKD,EACH,OAEF,MAAME,EAAgD,QAApCD,EAAiB,EAAAtB,KAAKuB,gBAAyC,IAAnBD,EAA4BA,EAAiB,QAE3G,IAAI,IAAAE,gBAAeH,EAAME,GACvB,OAAOF,EAAKE,GAGd,MAAME,EAAkBF,EAASG,MAAM,KAAK,GAC5C,GAAID,IAAoBF,EAGtB,OAAO,IAAAC,gBAAeH,EAAMI,GAAmBJ,EAAKI,QAAmBE,EAKzE,MAAMC,EAAS,GAAGH,KAClB,IAAK,MAAMI,KAAOZ,OAAOa,KAAKT,GAC5B,GAAIQ,EAAIE,WAAWH,GACjB,OAAOP,EAAKQ,EAGlB,CC3BO,MAAM7B,EAA6E,WAAmB,C","sources":["webpack:///../../node_modules/@next-core/i18n/dist/esm/init.js","webpack:///../../node_modules/@next-core/i18n/dist/esm/text.js","webpack:///../../node_modules/@next-core/i18n/dist/esm/index.js"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nlet initialized = false;\nconst initializedNamespaces = new Set();\nexport function initializeI18n(NS, locales) {\n if (!initialized) {\n initialized = true;\n i18n\n // learn more: https://github.com/i18next/i18next-xhr-backend\n // .use(Backend)\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(process.env.NODE_ENV === \"test\" ? LanguageDetector : /* istanbul ignore next */LanguageDetector.default)\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n fallbackLng: \"zh\",\n debug: process.env.NODE_ENV === \"development\",\n supportedLngs: [\"zh\", \"en\"],\n nonExplicitSupportedLngs: true,\n interpolation: {\n escapeValue: false // not needed for react as it escapes by default\n },\n react: {\n useSuspense: false\n },\n returnNull: false,\n compatibilityJSON: \"v3\",\n resources: {}\n });\n }\n if (!NS || !locales || initializedNamespaces.has(NS)) {\n return;\n }\n initializedNamespaces.add(NS);\n for (const [lang, resources] of Object.entries(locales)) {\n i18n.addResourceBundle(lang, NS, resources);\n }\n}\n//# sourceMappingURL=init.js.map","import { i18n } from \"@next-core/i18n\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nexport function i18nText(data) {\n var _i18n$language;\n if (!data) {\n return;\n }\n const language = (_i18n$language = i18n.language) !== null && _i18n$language !== void 0 ? _i18n$language : \"zh-CN\";\n // First, make a perfect match.\n if (hasOwnProperty(data, language)) {\n return data[language];\n }\n // https://en.wikipedia.org/wiki/IETF_language_tag\n const primaryLanguage = language.split(\"-\")[0];\n if (primaryLanguage !== language) {\n // Then, match the primary language (which omits other subtags).\n // E.g., match `zh` if the current language is `zh-CN`.\n return hasOwnProperty(data, primaryLanguage) ? data[primaryLanguage] : undefined;\n }\n // At last, match the first key which starts with the primary language,\n // if the current language contains primary subtag only.\n // E.g., match `zh-CN` if the current language is `zh`.\n const prefix = `${primaryLanguage}-`;\n for (const key of Object.keys(data)) {\n if (key.startsWith(prefix)) {\n return data[key];\n }\n }\n}\n//# sourceMappingURL=text.js.map","import i18next from \"i18next\";\nexport const i18n = process.env.NODE_ENV === \"test\" ? i18next : /* istanbul ignore next */i18next.default || i18next;\nexport * from \"./init.js\";\nexport * from \"./text.js\";\n//# sourceMappingURL=index.js.map"],"names":["initialized","initializedNamespaces","Set","initializeI18n","NS","locales","i18n","use","init","fallbackLng","debug","supportedLngs","nonExplicitSupportedLngs","interpolation","escapeValue","react","useSuspense","returnNull","compatibilityJSON","resources","has","add","lang","Object","entries","addResourceBundle","i18nText","data","_i18n$language","language","hasOwnProperty","primaryLanguage","split","undefined","prefix","key","keys","startsWith"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_ai=globalThis.webpackChunk_next_bricks_ai||[]).push([[5399],{5399:(e,t,r)=>{r.r(t),r.d(t,{BrickLoadError:()=>k,enqueueStableLoadBricks:()=>p,enqueueStableLoadProcessors:()=>w,flushStableLoadBricks:()=>f,loadBricksImperatively:()=>m,loadEditorsImperatively:()=>h,loadProcessorsImperatively:()=>v,loadScript:()=>s,loadSharedModule:()=>i,loadStyle:()=>a});const n=new Map;function o(e,t,r,s){if(Array.isArray(t))return Promise.all(t.map((t=>o(e,t,r))));const a=r&&!/^https?:/.test(t)?`${r}${t}`:t,i=n.get(a);if(i)return i;const c=new Promise(((t,r)=>{const n=()=>{window.dispatchEvent(new Event("request.end"))},o=document.createElement("style"===e?"link":"script");"script"===e?Object.assign(o,{type:"text/javascript",async:!0,...s,src:a}):Object.assign(o,{rel:"stylesheet",...s,href:a}),o.onload=()=>{t(a),n()},o.onerror=e=>{r(e),n()};const i=document.currentScript||document.getElementsByTagName("script")[0];i.parentNode.insertBefore(o,i),window.dispatchEvent(new Event("request.start"))}));return n.set(a,c),c}function s(e,t,r){return o("script",e,t,r)}function a(e,t,r){return o("style",e,t,r)}async function i(e,t){await r.I("default");const n=window[e];return await n.init(r.S.default),(await n.get(t))()}let c,l,u=!1;const d=new Promise(((e,t)=>{c=e,l=t}));function f(){u||c()}function p(e,t){return S($("bricks",e,t))}function w(e,t){return S($("processors",e,t))}async function m(e,t,r){const n=$("bricks",e,t,r);return f(),S(n)}function v(e,t){const r=$("processors",e,t);return f(),S(r)}function h(e,t){const r=$("editors",e,t);return f(),S(r)}class k extends Error{constructor(e){super(e),this.name="BrickLoadError",Error.captureStackTrace&&Error.captureStackTrace(this,k)}}let y;const b="v2-adapter.load-bricks";function E(e,t,r){const n=new Map,o=new Set,s=t=>{var a;if(o.has(t))return;let i,c,l;if(o.add(t),"editors"===e){l=t;for(const e of r.values()){var u,d;null!==(u=null!==(d=e.propertyEditors)&&void 0!==d?d:e.editors)&&void 0!==u&&u.some((e=>e===l))&&(i=e)}}else if("processors"===e||t.includes(".")){[c,l]=t.split(".");const n=`bricks/${"processors"===e?(w=c,w.replace(/[A-Z]/g,(e=>`-${e[0].toLocaleLowerCase()}`)).replace(/_[0-9]/g,(e=>`-${e[1]}`))):c}`;i=r.get(n)}else{let e;l=t;for(const n of r.values()){var f;if(null!==(f=n.elements)&&void 0!==f&&f.some((e=>e===l))){var p;if(null===(p=n.deprecatedElements)||void 0===p||!p.includes(t)){i=n;break}e=n}}!i&&e&&(i=e)}var w;if(!i)return void console.error(`Package for ${t} not found.`);let m=n.get(i);m||(m=[],n.set(i,m)),m.push({fullName:t,lastName:l});const v=null===(a=i.dependencies)||void 0===a?void 0:a[t];if(v)for(const e of v)s(e)};for(const e of t)s(e);return n}async function g(e,t,r){const n=`${"processors"===e||"editors"===e?`./${e}/`:"./"}${"editors"===e?r.fullName:r.lastName}`,o=performance.now();try{await i(t,n)}catch(t){console.error(t);const n=Math.round(performance.now()-o);throw new k(`Load ${e} of "${r.fullName}" failed (${n>1e3?+(n/1e3).toFixed(2)+"s":`${n}ms`}): ${null==t?void 0:t.message}`)}}function P(e,t,r){return t.map((async t=>{var n;return await s(t.filePath,null!==(n=window.PUBLIC_ROOT)&&void 0!==n?n:""),await d,Promise.all(r.get(t).map((r=>g(e,t.id,r))))}))}async function $(e,t,r,n){const o=new Map;for(const e of r){const t=e.id||N(e.filePath);o.set(t,e)}const a=E(e,t,o);let i;const d=[],f=[];let p;const w=function(){var e;const{dll:t}=window;return!(!t||null===(e=window.BRICK_NEXT_VERSIONS)||void 0===e||null===(e=e["brick-container"])||void 0===e||!e.startsWith("2."))}();for(const e of a.keys())if(e.id)"bricks/basic"===e.id?i=e:f.push(e);else if(d.push(e),!w&&(p=o.get("bricks/v2-adapter"),!p))throw new Error("Using v2 bricks, but v2-adapter not found");const m=p;let v;const h=i;if(h){var k;const t=s(h.filePath,null!==(k=window.PUBLIC_ROOT)&&void 0!==k?k:"");u||(u=!0,t.then((()=>Promise.resolve())).then(c,l)),v=t.then((()=>Promise.all(a.get(h).map((t=>g(e,h.id,t))))))}const $=[v].concat(P(e,f,a));if(m&&d.length>0&&!w){if(!y){const e=E("bricks",[b],o),t=[...e.keys()];y=(async()=>(await Promise.all(P("bricks",t,e)),document.createElement(b)))()}$.push(y.then((t=>Promise.all(d.map((n=>{var o;const s=N(n.filePath).split("/")[1];return t.resolve(m.filePath,"editors"===e&&null!==(o=n.propertyEditorsJsFilePath)&&void 0!==o?o:n.filePath,"bricks"===e?a.get(n).map((e=>`${s}.${e.lastName}`)):[],n.dll,r)}))))))}n&&d.length>0&&w&&$.push(n(d.map((e=>a.get(e).map((e=>e.fullName)))).flat())),await Promise.all($)}async function S(e){window.dispatchEvent(new Event("request.start"));try{await e}finally{window.dispatchEvent(new Event("request.end"))}}function N(e){return e.split("/").slice(0,2).join("/")}}}]);
|
|
2
|
+
//# sourceMappingURL=5399.d66d1665.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/5399.d66d1665.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/loader/dist/esm/loadScriptOrStyle.js","webpack:///../../node_modules/@next-core/loader/dist/esm/loadScript.js","webpack:///../../node_modules/@next-core/loader/dist/esm/loadStyle.js","webpack:///../../node_modules/@next-core/loader/dist/esm/loadSharedModule.js","webpack:///../../node_modules/@next-core/loader/dist/esm/stableLoadBricks.js"],"sourcesContent":["const cache = new Map();\nexport default function loadScriptOrStyle(type, src, prefix, attrs) {\n if (Array.isArray(src)) {\n return Promise.all(src.map(item => loadScriptOrStyle(type, item, prefix)));\n }\n const fixedSrc = prefix && !/^https?:/.test(src) ? `${prefix}${src}` : src;\n const cachedPromise = cache.get(fixedSrc);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = new Promise((resolve, reject) => {\n const end = () => {\n window.dispatchEvent(new Event(\"request.end\"));\n };\n const element = document.createElement(type === \"style\" ? \"link\" : \"script\");\n if (type === \"script\") {\n Object.assign(element, {\n type: \"text/javascript\",\n async: true,\n ...attrs,\n src: fixedSrc\n });\n } else {\n Object.assign(element, {\n rel: \"stylesheet\",\n ...attrs,\n href: fixedSrc\n });\n }\n element.onload = () => {\n resolve(fixedSrc);\n end();\n };\n element.onerror = e => {\n reject(e);\n end();\n };\n const firstScript = document.currentScript || document.getElementsByTagName(\"script\")[0];\n firstScript.parentNode.insertBefore(element, firstScript);\n window.dispatchEvent(new Event(\"request.start\"));\n });\n cache.set(fixedSrc, promise);\n return promise;\n}\n//# sourceMappingURL=loadScriptOrStyle.js.map","import loadScriptOrStyle from \"./loadScriptOrStyle.js\";\nexport default function loadScript(src, prefix, attrs) {\n return loadScriptOrStyle(\"script\", src, prefix, attrs);\n}\n//# sourceMappingURL=loadScript.js.map","import loadScriptOrStyle from \"./loadScriptOrStyle.js\";\nexport default function loadStyle(src, prefix, attrs) {\n return loadScriptOrStyle(\"style\", src, prefix, attrs);\n}\n//# sourceMappingURL=loadStyle.js.map","// https://github.com/module-federation/module-federation-examples/blob/eda9493f3991a423479fd834cfb1d7b241d9d1f0/advanced-api/dynamic-remotes/app1/src/App.js\nexport default async function loadSharedModule(scope, module) {\n // Initializes the share scope. This fills it with known provided modules from this build and all remotes\n await __webpack_init_sharing__(\"default\");\n const container = window[scope]; // or get the container somewhere else\n // Initialize the container, it may provide shared modules\n await container.init(__webpack_share_scopes__.default);\n const factory = await container.get(module);\n return factory();\n}\n//# sourceMappingURL=loadSharedModule.js.map","import loadScript from \"./loadScript.js\";\nimport loadSharedModule from \"./loadSharedModule.js\";\nlet resolveBasicPkg;\nlet rejectBasicPkg;\nlet basicPkgWillBeResolved = false;\nconst waitBasicPkg = new Promise((resolve, reject) => {\n resolveBasicPkg = resolve;\n rejectBasicPkg = reject;\n});\nexport function flushStableLoadBricks() {\n if (!basicPkgWillBeResolved) {\n resolveBasicPkg();\n }\n}\n\n/**\n * When loading bundles with webpack module federation concurrently, if\n * these bundles share some modules, webpack will load a singleton module\n * if versions are matched. Webpack will use the first bundle who started\n * to init the shared scope. Generally which bundle to use for a specific\n * module, does not matter. However, it may cause flaky result since the\n * shared module may from different bundles which maybe not exactly the\n * same, especially developers declare dependencies incorrectly sometimes.\n * So in order to make it less flaky, we try to make a BASIC package takes\n * precedence over others. We will always load the shared modules from the\n * basic package bundle if it contains the shared modules.\n */\nexport function enqueueStableLoadBricks(bricks, brickPackages) {\n const promise = enqueueStableLoad(\"bricks\", bricks, brickPackages);\n return dispatchRequestStatus(promise);\n}\nexport function enqueueStableLoadProcessors(processors, brickPackages) {\n const promise = enqueueStableLoad(\"processors\", processors, brickPackages);\n return dispatchRequestStatus(promise);\n}\nexport async function loadBricksImperatively(bricks, brickPackages,\n// Post loading process hook with all v2 bricks including dependencies\npostProcessV2Bricks) {\n const promise = enqueueStableLoad(\"bricks\", bricks, brickPackages, postProcessV2Bricks);\n flushStableLoadBricks();\n return dispatchRequestStatus(promise);\n}\nexport function loadProcessorsImperatively(processors, brickPackages) {\n const promise = enqueueStableLoad(\"processors\", processors, brickPackages);\n flushStableLoadBricks();\n return dispatchRequestStatus(promise);\n}\nexport function loadEditorsImperatively(editors, brickPackages) {\n const promise = enqueueStableLoad(\"editors\", editors, brickPackages);\n flushStableLoadBricks();\n return dispatchRequestStatus(promise);\n}\nexport class BrickLoadError extends Error {\n constructor(message) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(message);\n this.name = \"BrickLoadError\";\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n // istanbul ignore else\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BrickLoadError);\n }\n }\n}\nlet v2AdapterPromise;\nconst V2_ADAPTER_LOAD_BRICKS = \"v2-adapter.load-bricks\";\n// Get brick/processor items including their dependencies\nfunction getItemsByPkg(type, list, brickPackagesMap) {\n const itemsByPkg = new Map();\n const listToLoad = new Set();\n const add = item => {\n var _pkg$dependencies;\n if (listToLoad.has(item)) {\n return;\n }\n listToLoad.add(item);\n let pkg;\n let namespace;\n let lastName;\n if (type === \"editors\") {\n lastName = item;\n for (const p of brickPackagesMap.values()) {\n var _ref, _p$propertyEditors;\n if ((_ref = (_p$propertyEditors = p.propertyEditors) !== null && _p$propertyEditors !== void 0 ? _p$propertyEditors : p.editors) !== null && _ref !== void 0 && _ref.some(e => e === lastName)) {\n pkg = p;\n }\n }\n } else if (type === \"processors\" || item.includes(\".\")) {\n [namespace, lastName] = item.split(\".\");\n const pkgId = `bricks/${type === \"processors\" ? getProcessorPackageName(namespace) : namespace}`;\n pkg = brickPackagesMap.get(pkgId);\n } else {\n lastName = item;\n let deprecatedBrickInThisPkg;\n for (const p of brickPackagesMap.values()) {\n var _p$elements;\n if ((_p$elements = p.elements) !== null && _p$elements !== void 0 && _p$elements.some(e => e === lastName)) {\n var _p$deprecatedElements;\n if ((_p$deprecatedElements = p.deprecatedElements) !== null && _p$deprecatedElements !== void 0 && _p$deprecatedElements.includes(item)) {\n deprecatedBrickInThisPkg = p;\n } else {\n pkg = p;\n break;\n }\n }\n }\n if (!pkg && deprecatedBrickInThisPkg) {\n pkg = deprecatedBrickInThisPkg;\n }\n }\n if (!pkg) {\n // eslint-disable-next-line no-console\n console.error(`Package for ${item} not found.`);\n return;\n }\n let groupItems = itemsByPkg.get(pkg);\n if (!groupItems) {\n groupItems = [];\n itemsByPkg.set(pkg, groupItems);\n }\n groupItems.push({\n fullName: item,\n lastName\n });\n\n // Load their dependencies too\n const deps = (_pkg$dependencies = pkg.dependencies) === null || _pkg$dependencies === void 0 ? void 0 : _pkg$dependencies[item];\n if (deps) {\n for (const dep of deps) {\n add(dep);\n }\n }\n };\n for (const item of list) {\n add(item);\n }\n return itemsByPkg;\n}\nasync function loadBrickModule(type, pkgId, item) {\n const moduleName = `${type === \"processors\" || type === \"editors\" ? `./${type}/` : \"./\"}${type === \"editors\" ? item.fullName : item.lastName}`;\n const start = performance.now();\n try {\n await loadSharedModule(pkgId, moduleName);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n const cost = Math.round(performance.now() - start);\n throw new BrickLoadError(`Load ${type} of \"${item.fullName}\" failed${\n // istanbul ignore next\n process.env.NODE_ENV === \"test\" ? \"\" : ` (${cost > 1000 ? `${+(cost / 1000).toFixed(2)}s` : `${cost}ms`})`}: ${error === null || error === void 0 ? void 0 : error.message}`);\n }\n}\nfunction loadRestBricks(type, pkgs, itemsMap) {\n return pkgs.map(async pkg => {\n var _window$PUBLIC_ROOT;\n await loadScript(pkg.filePath, (_window$PUBLIC_ROOT = window.PUBLIC_ROOT) !== null && _window$PUBLIC_ROOT !== void 0 ? _window$PUBLIC_ROOT : \"\");\n await waitBasicPkg;\n return Promise.all(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n itemsMap.get(pkg).map(item => loadBrickModule(type, pkg.id, item)));\n });\n}\nasync function enqueueStableLoad(type, list, brickPackages,\n// Post loading process hook with all v2 bricks including dependencies\npostProcessV2Bricks) {\n const brickPackagesMap = new Map();\n for (const pkg of brickPackages) {\n const pkgId = pkg.id || getPkgIdByFilePath(pkg.filePath);\n brickPackagesMap.set(pkgId, pkg);\n }\n const itemsByPkg = getItemsByPkg(type, list, brickPackagesMap);\n let foundBasicPkg;\n const v2Packages = [];\n const v3PackagesOtherThanBasic = [];\n let maybeV2Adapter;\n const isInV2Container = isRunningInV2Container();\n for (const pkg of itemsByPkg.keys()) {\n if (pkg.id) {\n if (pkg.id === \"bricks/basic\") {\n foundBasicPkg = pkg;\n } else {\n v3PackagesOtherThanBasic.push(pkg);\n }\n } else {\n // Brick packages of v2 has no `id`\n v2Packages.push(pkg);\n if (!isInV2Container) {\n maybeV2Adapter = brickPackagesMap.get(\"bricks/v2-adapter\");\n if (!maybeV2Adapter) {\n throw new Error(\"Using v2 bricks, but v2-adapter not found\");\n }\n }\n }\n }\n const v2Adapter = maybeV2Adapter;\n let basicPkgPromise;\n const basicPkg = foundBasicPkg;\n if (basicPkg) {\n var _window$PUBLIC_ROOT2;\n const tempPromise = loadScript(basicPkg.filePath, (_window$PUBLIC_ROOT2 = window.PUBLIC_ROOT) !== null && _window$PUBLIC_ROOT2 !== void 0 ? _window$PUBLIC_ROOT2 : \"\");\n // Packages other than BASIC will wait for an extra micro-task tick.\n if (!basicPkgWillBeResolved) {\n basicPkgWillBeResolved = true;\n tempPromise.then(() => Promise.resolve()).then(resolveBasicPkg, rejectBasicPkg);\n }\n basicPkgPromise = tempPromise.then(() => Promise.all(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n itemsByPkg.get(basicPkg).map(item => loadBrickModule(type, basicPkg.id, item))));\n }\n const pkgPromises = [basicPkgPromise].concat(loadRestBricks(type, v3PackagesOtherThanBasic, itemsByPkg));\n if (v2Adapter && v2Packages.length > 0 && !isInV2Container) {\n if (!v2AdapterPromise) {\n // Load `v2-adapter.load-bricks` and its dependencies\n const v2AdapterItemsByPkg = getItemsByPkg(\"bricks\", [V2_ADAPTER_LOAD_BRICKS], brickPackagesMap);\n const v2AdapterPackages = [...v2AdapterItemsByPkg.keys()];\n const loadV2Adapter = async () => {\n await Promise.all(loadRestBricks(\"bricks\", v2AdapterPackages, v2AdapterItemsByPkg));\n return document.createElement(V2_ADAPTER_LOAD_BRICKS);\n };\n v2AdapterPromise = loadV2Adapter();\n }\n pkgPromises.push(v2AdapterPromise.then(adapter => Promise.all(v2Packages.map(pkg => {\n var _pkg$propertyEditorsJ;\n const pkgId = getPkgIdByFilePath(pkg.filePath);\n const pkgNamespace = pkgId.split(\"/\")[1];\n return adapter.resolve(v2Adapter.filePath, type === \"editors\" ? (_pkg$propertyEditorsJ = pkg.propertyEditorsJsFilePath) !== null && _pkg$propertyEditorsJ !== void 0 ? _pkg$propertyEditorsJ : pkg.filePath : pkg.filePath, type === \"bricks\" ?\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n itemsByPkg.get(pkg).map(item => `${pkgNamespace}.${item.lastName}`) : [], pkg.dll,\n // Todo: remove `brickPackages` as an argument\n brickPackages);\n }))));\n }\n if (postProcessV2Bricks && v2Packages.length > 0 && isInV2Container) {\n pkgPromises.push(postProcessV2Bricks(v2Packages.map(pkg => itemsByPkg.get(pkg).map(item => item.fullName)).flat()));\n }\n await Promise.all(pkgPromises);\n}\nasync function dispatchRequestStatus(promise) {\n window.dispatchEvent(new Event(\"request.start\"));\n try {\n await promise;\n } finally {\n window.dispatchEvent(new Event(\"request.end\"));\n }\n}\nfunction getProcessorPackageName(camelPackageName) {\n return camelPackageName.replace(/[A-Z]/g, match => `-${match[0].toLocaleLowerCase()}`).replace(/_[0-9]/g, match => `-${match[1]}`);\n}\nfunction getPkgIdByFilePath(filePath) {\n return filePath.split(\"/\").slice(0, 2).join(\"/\");\n}\nfunction isRunningInV2Container() {\n var _window$BRICK_NEXT_VE;\n const {\n dll\n } = window;\n if (dll && (_window$BRICK_NEXT_VE = window.BRICK_NEXT_VERSIONS) !== null && _window$BRICK_NEXT_VE !== void 0 && (_window$BRICK_NEXT_VE = _window$BRICK_NEXT_VE[\"brick-container\"]) !== null && _window$BRICK_NEXT_VE !== void 0 && _window$BRICK_NEXT_VE.startsWith(\"2.\")) {\n return true;\n }\n return false;\n}\n//# sourceMappingURL=stableLoadBricks.js.map"],"names":["cache","Map","loadScriptOrStyle","type","src","prefix","attrs","Array","isArray","Promise","all","map","item","fixedSrc","test","cachedPromise","get","promise","resolve","reject","end","window","dispatchEvent","Event","element","document","createElement","Object","assign","async","rel","href","onload","onerror","e","firstScript","currentScript","getElementsByTagName","parentNode","insertBefore","set","loadScript","loadStyle","loadSharedModule","scope","module","container","init","default","resolveBasicPkg","rejectBasicPkg","basicPkgWillBeResolved","waitBasicPkg","flushStableLoadBricks","enqueueStableLoadBricks","bricks","brickPackages","dispatchRequestStatus","enqueueStableLoad","enqueueStableLoadProcessors","processors","loadBricksImperatively","postProcessV2Bricks","loadProcessorsImperatively","loadEditorsImperatively","editors","BrickLoadError","Error","constructor","message","super","this","name","captureStackTrace","v2AdapterPromise","V2_ADAPTER_LOAD_BRICKS","getItemsByPkg","list","brickPackagesMap","itemsByPkg","listToLoad","Set","add","_pkg$dependencies","has","pkg","namespace","lastName","p","values","_ref","_p$propertyEditors","propertyEditors","some","includes","split","pkgId","camelPackageName","replace","match","toLocaleLowerCase","deprecatedBrickInThisPkg","_p$elements","elements","_p$deprecatedElements","deprecatedElements","console","error","groupItems","push","fullName","deps","dependencies","dep","loadBrickModule","moduleName","start","performance","now","cost","Math","round","toFixed","loadRestBricks","pkgs","itemsMap","_window$PUBLIC_ROOT","filePath","PUBLIC_ROOT","id","getPkgIdByFilePath","foundBasicPkg","v2Packages","v3PackagesOtherThanBasic","maybeV2Adapter","isInV2Container","_window$BRICK_NEXT_VE","dll","BRICK_NEXT_VERSIONS","startsWith","isRunningInV2Container","keys","v2Adapter","basicPkgPromise","basicPkg","_window$PUBLIC_ROOT2","tempPromise","then","pkgPromises","concat","length","v2AdapterItemsByPkg","v2AdapterPackages","loadV2Adapter","adapter","_pkg$propertyEditorsJ","pkgNamespace","propertyEditorsJsFilePath","flat","slice","join"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_ai=globalThis.webpackChunk_next_bricks_ai||[]).push([[3171,5552],{5552:(n,e,t)=>{t.r(e),t.d(e,{i18n:()=>p,i18nText:()=>l,initializeI18n:()=>u});var i=t(5630),s=t(7177),r=t(848);let a=!1;const o=new Set;function u(n,e){if(a||(a=!0,s.i18n.use(r.default).init({fallbackLng:"zh",debug:!1,supportedLngs:["zh","en"],nonExplicitSupportedLngs:!0,interpolation:{escapeValue:!1},react:{useSuspense:!1},returnNull:!1,compatibilityJSON:"v3",resources:{}})),n&&e&&!o.has(n)){o.add(n);for(const[t,i]of Object.entries(e))s.i18n.addResourceBundle(t,n,i)}}var c=t(410);function l(n){var e;if(!n)return;const t=null!==(e=s.i18n.language)&&void 0!==e?e:"zh-CN";if((0,c.hasOwnProperty)(n,t))return n[t];const i=t.split("-")[0];if(i!==t)return(0,c.hasOwnProperty)(n,i)?n[i]:void 0;const r=`${i}-`;for(const e of Object.keys(n))if(e.startsWith(r))return n[e]}const p=i.default||i}}]);
|
|
2
|
+
//# sourceMappingURL=5552.81ce9ebc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/5552.81ce9ebc.js","mappings":"mOAEA,IAAIA,GAAc,EAClB,MAAMC,EAAwB,IAAIC,IAC3B,SAASC,EAAeC,EAAIC,GAyBjC,GAxBKL,IACHA,GAAc,EACd,EAAAM,KAICC,IAAmF,WAEnFC,KAAK,CACJC,YAAa,KACbC,OAAO,EACPC,cAAe,CAAC,KAAM,MACtBC,0BAA0B,EAC1BC,cAAe,CACbC,aAAa,GAEfC,MAAO,CACLC,aAAa,GAEfC,YAAY,EACZC,kBAAmB,KACnBC,UAAW,CAAC,KAGXf,GAAOC,IAAWJ,EAAsBmB,IAAIhB,GAAjD,CAGAH,EAAsBoB,IAAIjB,GAC1B,IAAK,MAAOkB,EAAMH,KAAcI,OAAOC,QAAQnB,GAC7C,EAAAC,KAAKmB,kBAAkBH,EAAMlB,EAAIe,EAHnC,CAKF,C,aClCO,SAASO,EAASC,GACvB,IAAIC,EACJ,IAAKD,EACH,OAEF,MAAME,EAAgD,QAApCD,EAAiB,EAAAtB,KAAKuB,gBAAyC,IAAnBD,EAA4BA,EAAiB,QAE3G,IAAI,IAAAE,gBAAeH,EAAME,GACvB,OAAOF,EAAKE,GAGd,MAAME,EAAkBF,EAASG,MAAM,KAAK,GAC5C,GAAID,IAAoBF,EAGtB,OAAO,IAAAC,gBAAeH,EAAMI,GAAmBJ,EAAKI,QAAmBE,EAKzE,MAAMC,EAAS,GAAGH,KAClB,IAAK,MAAMI,KAAOZ,OAAOa,KAAKT,GAC5B,GAAIQ,EAAIE,WAAWH,GACjB,OAAOP,EAAKQ,EAGlB,CC3BO,MAAM7B,EAA6E,WAAmB,C","sources":["webpack:///../../node_modules/@next-core/i18n/dist/esm/init.js","webpack:///../../node_modules/@next-core/i18n/dist/esm/text.js","webpack:///../../node_modules/@next-core/i18n/dist/esm/index.js"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nlet initialized = false;\nconst initializedNamespaces = new Set();\nexport function initializeI18n(NS, locales) {\n if (!initialized) {\n initialized = true;\n i18n\n // learn more: https://github.com/i18next/i18next-xhr-backend\n // .use(Backend)\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(process.env.NODE_ENV === \"test\" ? LanguageDetector : /* istanbul ignore next */LanguageDetector.default)\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n fallbackLng: \"zh\",\n debug: process.env.NODE_ENV === \"development\",\n supportedLngs: [\"zh\", \"en\"],\n nonExplicitSupportedLngs: true,\n interpolation: {\n escapeValue: false // not needed for react as it escapes by default\n },\n react: {\n useSuspense: false\n },\n returnNull: false,\n compatibilityJSON: \"v3\",\n resources: {}\n });\n }\n if (!NS || !locales || initializedNamespaces.has(NS)) {\n return;\n }\n initializedNamespaces.add(NS);\n for (const [lang, resources] of Object.entries(locales)) {\n i18n.addResourceBundle(lang, NS, resources);\n }\n}\n//# sourceMappingURL=init.js.map","import { i18n } from \"@next-core/i18n\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nexport function i18nText(data) {\n var _i18n$language;\n if (!data) {\n return;\n }\n const language = (_i18n$language = i18n.language) !== null && _i18n$language !== void 0 ? _i18n$language : \"zh-CN\";\n // First, make a perfect match.\n if (hasOwnProperty(data, language)) {\n return data[language];\n }\n // https://en.wikipedia.org/wiki/IETF_language_tag\n const primaryLanguage = language.split(\"-\")[0];\n if (primaryLanguage !== language) {\n // Then, match the primary language (which omits other subtags).\n // E.g., match `zh` if the current language is `zh-CN`.\n return hasOwnProperty(data, primaryLanguage) ? data[primaryLanguage] : undefined;\n }\n // At last, match the first key which starts with the primary language,\n // if the current language contains primary subtag only.\n // E.g., match `zh-CN` if the current language is `zh`.\n const prefix = `${primaryLanguage}-`;\n for (const key of Object.keys(data)) {\n if (key.startsWith(prefix)) {\n return data[key];\n }\n }\n}\n//# sourceMappingURL=text.js.map","import i18next from \"i18next\";\nexport const i18n = process.env.NODE_ENV === \"test\" ? i18next : /* istanbul ignore next */i18next.default || i18next;\nexport * from \"./init.js\";\nexport * from \"./text.js\";\n//# sourceMappingURL=index.js.map"],"names":["initialized","initializedNamespaces","Set","initializeI18n","NS","locales","i18n","use","init","fallbackLng","debug","supportedLngs","nonExplicitSupportedLngs","interpolation","escapeValue","react","useSuspense","returnNull","compatibilityJSON","resources","has","add","lang","Object","entries","addResourceBundle","i18nText","data","_i18n$language","language","hasOwnProperty","primaryLanguage","split","undefined","prefix","key","keys","startsWith"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_ai=globalThis.webpackChunk_next_bricks_ai||[]).push([[6376],{6376:(e,t,r)=>{r.r(t),r.d(t,{ReactUseBrick:()=>c,ReactUseMultipleBricks:()=>a,asyncWrapBrick:()=>w,useAuth:()=>O,useCheckPermissions:()=>P,useControlledState:()=>F,useCurrentApp:()=>d,useCurrentTheme:()=>i,useFeatureFlags:()=>L,useHistory:()=>A,useLazyWrapBrick:()=>E,useLocation:()=>j,useMessage:()=>N,useNavConfig:()=>k,useParams:()=>B,usePathParams:()=>_,useProvider:()=>h,useRecentApps:()=>l,useRouteRender:()=>f,useSearchParams:()=>R,useSystemInfo:()=>M});var n=r(8769),s=r(128);let u=function(e){let{useBrick:t,data:r,errorBoundary:u,refCallback:c,ignoredCallback:a}=e;const[o,i]=(0,n.useState)(null),l=(0,n.useRef)(),[d,f]=(0,n.useState)(),g=(0,n.useRef)(0),m=(0,n.useMemo)((()=>{var e;return null===(e=s.__secret_internals.getRenderId)||void 0===e?void 0:e.call(s.__secret_internals)}),[]);(0,n.useEffect)((()=>{let e=!1;return async function(){try{const n=await s.__secret_internals.renderUseBrick(t,r,u);if(e)return;i(n),f(++g.current)}catch(n){!e&&function(e){var t;const r=null===(t=s.__secret_internals.getRenderId)||void 0===t?void 0:t.call(s.__secret_internals);return!e||!r||e===r}(m)&&(console.error("Render useBrick failed:",t,"with data:",r),(0,s.handleHttpError)(n))}}(),()=>{e=!0}}),[r,t,m,u]);const y=(0,n.useCallback)((e=>{e?l.current=s.__secret_internals.mountUseBrick(o,e):(s.__secret_internals.unmountUseBrick(o,l.current),l.current=void 0),null==c||c(e)}),[c,o]);if(!o)return null;const{tagName:p}=o;if(null===p)return null==a||a(),null;const h=p;return n.createElement(h,{key:d,ref:y})},c=function(e){let{useBrick:t,data:r,errorBoundary:s,refCallback:c,ignoredCallback:a}=e;if("function"==typeof t){const e=t;return n.createElement(n.Fragment,null,e(r))}return n.createElement(u,{useBrick:t,data:r,errorBoundary:s,refCallback:c,ignoredCallback:a})},a=function(e){let{useBrick:t,data:r,errorBoundary:s}=e;return"function"==typeof t?n.createElement(n.Fragment,null,t(r)):Array.isArray(t)?n.createElement(n.Fragment,null,t.map(((e,t)=>n.createElement(c,{key:t,useBrick:e,data:r,errorBoundary:s})))):n.createElement(c,{useBrick:t,data:r,errorBoundary:s})};const o=(0,s.getV2RuntimeFromDll)();if(o){const{SingleBrickAsComponentFactory:e,BrickAsComponentFactory:t}=o;e&&t&&(c=e(n),a=t(n))}function i(){const[e,t]=(0,n.useState)(s.getCurrentTheme);return(0,n.useEffect)((()=>{const e=e=>{t(e.detail)};return window.addEventListener("theme.change",e),()=>{window.removeEventListener("theme.change",e)}}),[]),e}function l(){const[e,t]=n.useState((()=>(0,s.getRuntime)().getRecentApps()));return n.useEffect((()=>{const e=e=>{t(e.detail)};return window.addEventListener("app.change",e),()=>window.removeEventListener("app.change",e)}),[]),e}function d(){return l().currentApp}function f(){const[e,t]=n.useState(null);return n.useEffect((()=>{const e=e=>{t(e.detail)};return window.addEventListener("route.render",e),()=>window.removeEventListener("route.render",e)}),[]),e}const g={provider:"",customOptions:{onError:()=>{},transform:(e,t)=>t,data:void 0,loading:!1,suspense:!1,cache:!0},dependencies:void 0},m=Object.entries(g).reduce(((e,t)=>{let[r,n]=t;return"[object Object]"===Object.prototype.toString.call(n)?{...e,...n}:{...e,[r]:n}}),{});var y=r(563);const p=new Map;function h(){const{provider:e,customOptions:t,dependencies:r,requestInit:u}=function(e,t,r){const s=(0,n.useMemo)((()=>"string"==typeof e?e:g.provider),[e,t]),u=(0,n.useMemo)((()=>{let r={};return(0,y.isObject)(e)?r=e:(0,y.isObject)(t)&&(r=t),{...m,...r}}),[e,t]),c=(0,n.useMemo)((()=>{const e=[...Object.keys(g),...Object.keys(g.customOptions)],{args:t=null,...r}=Object.keys(u).reduce(((t,r)=>(e.includes(r)||(t[r]=u[r]),t)),{});return{options:{...r},args:t}}),[u]),a=(0,n.useMemo)((()=>Array.isArray(t)?t:Array.isArray(r)?r:m.dependencies),[t,r]),o=u.loading||Array.isArray(a);return{provider:s,customOptions:(0,n.useMemo)((()=>({...Object.keys(g.customOptions).reduce(((e,t)=>(e[t]=u[t],e)),{}),loading:o})),[u]),requestInit:c,dependencies:a}}(...arguments),{onError:c,transform:a,suspense:o,cache:i,...l}=t,[d,f]=(0,n.useState)(l.loading),h=(0,n.useRef)("pending"),v=(0,n.useRef)(),w=(0,n.useRef)(!1),k=(0,n.useRef)(),E=(0,n.useRef)(),_=(0,n.useRef)(l.data),b=(0,n.useReducer)((()=>({})),[])[1],R=(0,n.useCallback)((async(e,t)=>{try{k.current=void 0,o||f(!0);const r=await async function(e,t,r){let n;const u=function(e){const t=e=>Object.keys(e).sort().map((t=>({[t]:e[t]})));for(var r=arguments.length,n=new Array(r>1?r-1:0),s=1;s<r;s++)n[s-1]=arguments[s];try{const r="object"!=typeof(u=n)||null===u||Array.isArray(u)?n.map((e=>function(e){return"string"==typeof e}(e)?e:t(e))):t(n);return JSON.stringify({provider:e,args:r})}catch(t){return JSON.stringify({provider:e,args:n})}var u}(e,...r);return!t&&p.has(u)&&p.delete(u),p.has(u)?n=p.get(u):(n=(0,s.fetchByProvider)(e,r,{cache:t?"default":"reload"}),t&&p.set(u,n)),n}(e,i,t);E.current=r,_.current=a(_.current,r)}catch(e){k.current=e,_.current=void 0}return o||f(!1),k.current&&c(k.current),_.current}),[e,t,r,u,o,a,l.data,c,i]),B=(0,n.useCallback)((async(t,r)=>{let n=e,s=[];return(0,y.isString)(t)&&(n=t),(0,y.isObject)(t)?s=t:(0,y.isObject)(r)&&(s=r),o?(async()=>(v.current=R(n,s).then((e=>(h.current="success",e)),(e=>(h.current="error",e.current=e,e))),b(),await v.current))():R(n,s)}),[R]),S=(0,n.useMemo)((()=>Object.defineProperties({query:B},{loading:{get:()=>d},data:{get:()=>_.current},error:{get:()=>k.current}})),[B]);if((0,n.useEffect)((()=>(w.current=!0,Array.isArray(r)&&e&&S.query(e,u.args),()=>w.current=!1)),r),o&&v.current)switch(h.current){case"pending":throw v.current;case"error":throw k.current}return Object.assign([S,E.current,d,k.current],{request:S,...S,response:E.current,data:_.current,loading:d,error:k.current})}var v=r(981);async function w(e,t){return await s.__secret_internals.loadBricks([e]),(0,v.wrapBrick)(e,t)}function k(){const[e,t]=(0,n.useState)((()=>(0,s.getRuntime)().getNavConfig()));return(0,n.useEffect)((()=>{const e=e=>{t(e.detail)};return window.addEventListener("navConfig.change",e),()=>window.removeEventListener("navConfig.change",e)}),[]),e}function E(e,t){return(0,n.useMemo)((()=>null!=e?(0,n.lazy)((async()=>({default:await w(e,t)}))):null),[e,t])}function _(){const[e,t]=n.useState((()=>b()));return n.useEffect((()=>{const e=()=>{t(b())};return window.addEventListener("page.load",e),()=>window.removeEventListener("page.load",e)}),[]),e}function b(){try{var e,t;const r=s.__secret_internals.getLegalRuntimeValue();return null!==(e=null==r||null===(t=r.match)||void 0===t?void 0:t.params)&&void 0!==e?e:{}}catch(e){return{}}}function R(){const[e,t]=n.useState((()=>new URLSearchParams((0,s.getHistory)().location.search)));return n.useEffect((()=>(0,s.getHistory)().listen((e=>{t(new URLSearchParams(e.search))}))),[]),e}function B(){const[e,t]=n.useState((()=>S((0,s.getHistory)().location.search)));return n.useEffect((()=>(0,s.getHistory)().listen((e=>{t(S(e.search))}))),[]),e}function S(e){const t={};return new URLSearchParams(e).forEach(((e,r)=>{t[r]=e})),t}function A(){return(0,s.getHistory)()}var C=r(9113);function O(){return n.useMemo((()=>C.auth.getAuth()),[])}function j(){const[e,t]=n.useState((()=>(0,s.getHistory)().location));return n.useEffect((()=>(0,s.getHistory)().listen((e=>{t(e)}))),[]),e}function L(){return n.useMemo((()=>(0,s.getRuntime)().getFeatureFlags()),[])}function M(){return n.useMemo((()=>({...C.auth.getAuth(),...(0,s.getPageInfo)(),settings:{brand:(0,s.getRuntime)().getBrandSettings()}})),[])}function P(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.useMemo((()=>C.checkPermissions.checkPermissions(...t)),[JSON.stringify(t)])}function F(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const[s,u]=n.useState(void 0!==e?e:t),c=void 0!==e;let a;return n.useEffect((()=>{c&&u(r?t=>(0,y.isEqual)(t,e)?t:e:e)}),[c,e,r]),a=c?r&&(0,y.isEqual)(s,e)?s:e:s,[a,u]}function N(){return n.useMemo((()=>({success:e=>{s.Notification.show({type:"success",message:e})},error:e=>{s.Notification.show({type:"error",message:e})},info:e=>{s.Notification.show({type:"info",message:e})},warn:e=>{s.Notification.show({type:"warn",message:e})}})),[])}}}]);
|
|
2
|
+
//# sourceMappingURL=6376.bcccf276.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/6376.bcccf276.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/react-runtime/dist/esm/ReactUseBrick.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useCurrentTheme.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useRecentApps.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useCurrentApp.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useRouteRender.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useProvider/useProviderArgsDefaults.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useProvider/fetch.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useProvider/useProvider.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useProvider/useProviderArgs.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/asyncWrapBrick.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useNavConfig.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useLazyWrapBrick.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/usePathParams.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useSearchParams.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useParams.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useHistory.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useAuth.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useLocation.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useFeatureFlags.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useSystemInfo.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useCheckPermissions.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useControlledState.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useMessage.js"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { __secret_internals, handleHttpError, getV2RuntimeFromDll } from \"@next-core/runtime\";\n\n/**\n * useBrick 的 render 函数类型。\n *\n * @example\n *\n * ```tsx\n * const columns = [\n * {\n * key: \"status\",\n * useBrick: (data) => <WrappedEoTag textContent={data.cellData} />\n * }\n * ];\n * ```\n */\n\n/**\n * 单个 useBrick 配置,支持配置对象或 render 函数。\n */\n\n/**\n * useBrick 配置,支持配置对象、配置对象数组或 render 函数。\n */\n\n// Note: always synchronize code in LegacyUseBrick:\n// `bricks/v2-adapter/src/data-providers/legacy-brick-kit/getLegacyUseBrick.ts`\nlet ReactUseBrickInternal = function ReactUseBrickInternal(_ref) {\n let {\n useBrick,\n data,\n errorBoundary,\n refCallback,\n ignoredCallback\n } = _ref;\n const [renderResult, setRenderResult] = useState(null);\n const mountResult = useRef();\n const [renderKey, setRenderKey] = useState();\n const IdCounterRef = useRef(0);\n const initialRenderId = useMemo(() => {\n var _secret_internals$ge;\n return (_secret_internals$ge = __secret_internals.getRenderId) === null || _secret_internals$ge === void 0 ? void 0 : _secret_internals$ge.call(__secret_internals);\n }, []);\n useEffect(() => {\n let ignore = false;\n async function init() {\n try {\n const newRender = await __secret_internals.renderUseBrick(useBrick, data, errorBoundary);\n if (ignore) {\n return;\n }\n setRenderResult(newRender);\n setRenderKey(getUniqueId(IdCounterRef));\n } catch (error) {\n if (!ignore && isTheSameRender(initialRenderId)) {\n // eslint-disable-next-line no-console\n console.error(\"Render useBrick failed:\", useBrick, \"with data:\", data);\n handleHttpError(error);\n }\n }\n }\n init();\n return () => {\n ignore = true;\n };\n }, [data, useBrick, initialRenderId, errorBoundary]);\n const _refCallback = useCallback(element => {\n if (element) {\n mountResult.current = __secret_internals.mountUseBrick(renderResult, element);\n } else {\n __secret_internals.unmountUseBrick(renderResult, mountResult.current);\n mountResult.current = undefined;\n }\n refCallback === null || refCallback === void 0 || refCallback(element);\n }, [refCallback, renderResult]);\n if (!renderResult) {\n // Fallback when loading/\n return null;\n // return <span>🌀 Loading...</span>;\n }\n const {\n tagName\n } = renderResult;\n if (tagName === null) {\n ignoredCallback === null || ignoredCallback === void 0 || ignoredCallback();\n return null;\n }\n const WebComponent = tagName;\n return /*#__PURE__*/React.createElement(WebComponent, {\n key: renderKey,\n ref: _refCallback\n });\n};\nlet ReactUseBrick = function ReactUseBrick(_ref2) {\n let {\n useBrick,\n data,\n errorBoundary,\n refCallback,\n ignoredCallback\n } = _ref2;\n // 如果 useBrick 是 render 函数,直接调用返回\n if (typeof useBrick === \"function\") {\n const renderFn = useBrick;\n return /*#__PURE__*/React.createElement(React.Fragment, null, renderFn(data));\n }\n\n // 否则使用原有的配置对象渲染逻辑\n return /*#__PURE__*/React.createElement(ReactUseBrickInternal, {\n useBrick: useBrick,\n data: data,\n errorBoundary: errorBoundary,\n refCallback: refCallback,\n ignoredCallback: ignoredCallback\n });\n};\nfunction getUniqueId(ref) {\n return ++ref.current;\n}\nfunction isTheSameRender(initialRenderId) {\n var _secret_internals$ge2;\n const newRenderId = (_secret_internals$ge2 = __secret_internals.getRenderId) === null || _secret_internals$ge2 === void 0 ? void 0 : _secret_internals$ge2.call(__secret_internals);\n return !initialRenderId || !newRenderId || initialRenderId === newRenderId;\n}\nlet ReactUseMultipleBricks = function ReactUseMultipleBricks(_ref3) {\n let {\n useBrick,\n data,\n errorBoundary\n } = _ref3;\n // 如果 useBrick 是 render 函数,直接调用返回\n if (typeof useBrick === \"function\") {\n return /*#__PURE__*/React.createElement(React.Fragment, null, useBrick(data));\n }\n if (Array.isArray(useBrick)) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, useBrick.map((item, index) => /*#__PURE__*/React.createElement(ReactUseBrick, {\n key: index,\n useBrick: item,\n data: data,\n errorBoundary: errorBoundary\n })));\n }\n return /*#__PURE__*/React.createElement(ReactUseBrick, {\n useBrick: useBrick,\n data: data,\n errorBoundary: errorBoundary\n });\n};\n\n// Make v3 bricks compatible with Brick Next v2.\n// istanbul ignore next\nconst v2Kit = getV2RuntimeFromDll();\n// istanbul ignore next\nif (v2Kit) {\n const {\n SingleBrickAsComponentFactory,\n BrickAsComponentFactory\n } = v2Kit;\n if (SingleBrickAsComponentFactory && BrickAsComponentFactory) {\n ReactUseBrick = SingleBrickAsComponentFactory(React);\n ReactUseMultipleBricks = BrickAsComponentFactory(React);\n }\n}\nexport { ReactUseBrick, ReactUseMultipleBricks };\n//# sourceMappingURL=ReactUseBrick.js.map","import { useEffect, useState } from \"react\";\nimport { getCurrentTheme } from \"@next-core/runtime\";\nexport function useCurrentTheme() {\n const [currentTheme, setCurrentTheme] = useState(getCurrentTheme);\n useEffect(() => {\n const listenToThemeChange = event => {\n setCurrentTheme(event.detail);\n };\n window.addEventListener(\"theme.change\", listenToThemeChange);\n return () => {\n window.removeEventListener(\"theme.change\", listenToThemeChange);\n };\n }, []);\n return currentTheme;\n}\n//# sourceMappingURL=useCurrentTheme.js.map","import React from \"react\";\nimport { getRuntime } from \"@next-core/runtime\";\nexport function useRecentApps() {\n const [recentApps, setRecentApps] = React.useState(() => getRuntime().getRecentApps());\n React.useEffect(() => {\n const listener = event => {\n setRecentApps(event.detail);\n };\n window.addEventListener(\"app.change\", listener);\n return () => window.removeEventListener(\"app.change\", listener);\n }, []);\n return recentApps;\n}\n//# sourceMappingURL=useRecentApps.js.map","import { useRecentApps } from \"./useRecentApps.js\";\n\n/**\n * 获取当前所在微应用信息的 React hooks。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const app = useCurrentApp();\n * return <div>{app.id}</div>;\n * }\n * ```\n *\n * @returns 当前所在微应用的信息。\n */\nexport function useCurrentApp() {\n return useRecentApps().currentApp;\n}\n//# sourceMappingURL=useCurrentApp.js.map","import React from \"react\";\nexport function useRouteRender() {\n const [routeRender, setRouteRender] = React.useState(null);\n React.useEffect(() => {\n const listener = event => {\n setRouteRender(event.detail);\n };\n window.addEventListener(\"route.render\", listener);\n return () => window.removeEventListener(\"route.render\", listener);\n }, []);\n return routeRender;\n}\n//# sourceMappingURL=useRouteRender.js.map","export const useProviderArgsDefaults = {\n provider: \"\",\n customOptions: {\n onError: () => {\n /* Do nothing.. */\n },\n transform: (oldData, newData) => newData,\n data: undefined,\n loading: false,\n suspense: false,\n cache: true\n },\n dependencies: undefined\n};\nexport default Object.entries(useProviderArgsDefaults).reduce((acc, _ref) => {\n let [key, value] = _ref;\n if (Object.prototype.toString.call(value) === \"[object Object]\") return {\n ...acc,\n ...value\n };\n return {\n ...acc,\n [key]: value\n };\n}, {});\n//# sourceMappingURL=useProviderArgsDefaults.js.map","import { fetchByProvider } from \"@next-core/runtime\";\nconst cacheMap = new Map();\nfunction isObj(v) {\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\n}\nfunction isString(v) {\n return typeof v === \"string\";\n}\nfunction buildSortedCacheKey(provider) {\n const sortObj = obj => Object.keys(obj).sort().map(k => ({\n [k]: obj[k]\n }));\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n try {\n const sortedArgs = isObj(args) ? sortObj(args) : args.map(arg => isString(arg) ? arg : sortObj(arg));\n return JSON.stringify({\n provider,\n args: sortedArgs\n });\n } catch (e) {\n return JSON.stringify({\n provider,\n args\n });\n }\n}\nexport default async function fetch(provider, cache, args) {\n let promise;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const cacheKey = buildSortedCacheKey(provider, ...args);\n !cache && cacheMap.has(cacheKey) && cacheMap.delete(cacheKey);\n if (cacheMap.has(cacheKey)) {\n promise = cacheMap.get(cacheKey);\n } else {\n promise = (() => {\n return fetchByProvider(provider, args, {\n cache: cache ? \"default\" : \"reload\"\n });\n })();\n cache && cacheMap.set(cacheKey, promise);\n }\n return promise;\n}\n//# sourceMappingURL=fetch.js.map","import { useCallback, useEffect, useMemo, useReducer, useRef, useState } from \"react\";\nimport useProviderArgs from \"./useProviderArgs.js\";\nimport { isObject, isString } from \"lodash\";\nimport fetch from \"./fetch.js\";\nexport function useProvider() {\n const {\n provider,\n customOptions,\n dependencies,\n requestInit\n } = useProviderArgs(...arguments);\n const {\n onError,\n transform,\n suspense,\n cache,\n ...defaults\n } = customOptions;\n const [loading, setLoading] = useState(defaults.loading);\n const suspenseStatus = useRef(\"pending\");\n const suspender = useRef();\n const mounted = useRef(false);\n const error = useRef();\n const response = useRef();\n const data = useRef(defaults.data);\n const forceUpdate = useReducer(() => ({}), [])[1];\n const doFetch = useCallback(async (provider, providerArgs) => {\n try {\n error.current = undefined;\n if (!suspense) setLoading(true);\n const newRes = await fetch(provider, cache, providerArgs);\n response.current = newRes;\n data.current = transform(data.current, newRes);\n } catch (e) {\n error.current = e;\n data.current = undefined;\n }\n if (!suspense) setLoading(false);\n if (error.current) onError(error.current);\n return data.current;\n }, [provider, customOptions, dependencies, requestInit, suspense, transform, defaults.data, onError, cache]);\n const makeFetch = useCallback(async (providerOrBody, args) => {\n let providerStr = provider;\n let providerArgs = [];\n if (isString(providerOrBody)) {\n providerStr = providerOrBody;\n }\n if (isObject(providerOrBody)) {\n providerArgs = providerOrBody;\n } else if (isObject(args)) {\n providerArgs = args;\n }\n if (suspense) {\n return (async () => {\n suspender.current = doFetch(providerStr, providerArgs).then(newData => {\n suspenseStatus.current = \"success\";\n return newData;\n }, error => {\n /* istanbul ignore next */\n suspenseStatus.current = \"error\";\n error.current = error;\n return error;\n });\n forceUpdate();\n return await suspender.current;\n })();\n }\n return doFetch(providerStr, providerArgs);\n }, [doFetch]);\n const request = useMemo(() => Object.defineProperties({\n query: makeFetch\n }, {\n loading: {\n get() {\n return loading;\n }\n },\n data: {\n get() {\n return data.current;\n }\n },\n error: {\n get() {\n return error.current;\n }\n }\n }), [makeFetch]);\n\n // onMount/onUpdate\n useEffect(() => {\n mounted.current = true;\n if (Array.isArray(dependencies) && provider) {\n request.query(provider, requestInit.args);\n }\n return () => mounted.current = false;\n }, dependencies);\n if (suspense && suspender.current) {\n switch (suspenseStatus.current) {\n case \"pending\":\n throw suspender.current;\n /* istanbul ignore next */\n case \"error\":\n throw error.current;\n }\n }\n return Object.assign([request, response.current, loading, error.current], {\n request,\n ...request,\n response: response.current,\n data: data.current,\n loading,\n error: error.current\n });\n}\n//# sourceMappingURL=useProvider.js.map","import { useMemo } from \"react\";\nimport defaults, { useProviderArgsDefaults } from \"./useProviderArgsDefaults.js\";\nimport { isObject } from \"lodash\";\nexport default function useProviderArgs(providerOrParamsOrGlobalOptions, globalOptionsOrDeps, deps) {\n const provider = useMemo(() => {\n if (typeof providerOrParamsOrGlobalOptions === \"string\") {\n return providerOrParamsOrGlobalOptions;\n }\n return useProviderArgsDefaults.provider;\n }, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);\n const options = useMemo(() => {\n let localOptions = {};\n if (isObject(providerOrParamsOrGlobalOptions)) {\n localOptions = providerOrParamsOrGlobalOptions;\n } else if (isObject(globalOptionsOrDeps)) {\n localOptions = globalOptionsOrDeps;\n }\n return {\n ...defaults,\n ...localOptions\n };\n }, [providerOrParamsOrGlobalOptions, globalOptionsOrDeps]);\n const requestInit = useMemo(() => {\n const customOptionKeys = [...Object.keys(useProviderArgsDefaults), ...Object.keys(useProviderArgsDefaults.customOptions)];\n const {\n args = null,\n ...restOptions\n } = Object.keys(options).reduce((acc, key) => {\n if (!customOptionKeys.includes(key)) acc[key] = options[key];\n return acc;\n }, {});\n return {\n options: {\n ...restOptions\n },\n args\n };\n }, [options]);\n const dependencies = useMemo(() => {\n if (Array.isArray(globalOptionsOrDeps)) return globalOptionsOrDeps;\n if (Array.isArray(deps)) return deps;\n return defaults.dependencies;\n }, [globalOptionsOrDeps, deps]);\n const loading = options.loading || Array.isArray(dependencies);\n const customOptions = useMemo(() => {\n const customOptionKeys = Object.keys(useProviderArgsDefaults.customOptions);\n const customOptions = customOptionKeys.reduce((opts, key) => {\n opts[key] = options[key];\n return opts;\n }, {});\n return {\n ...customOptions,\n loading\n };\n }, [options]);\n return {\n provider,\n customOptions,\n requestInit,\n dependencies\n };\n}\n//# sourceMappingURL=useProviderArgs.js.map","import { __secret_internals } from \"@next-core/runtime\";\nimport { wrapBrick } from \"@next-core/react-element\";\n\n/**\n * 使用异步加载的方式包装一个构件,可用于按条件渲染的构件依赖。\n *\n * 例如提供复杂弹层内容的按钮构件,其内容需要使用到一些大型构件,那么这些依赖可以使用 asyncWrapBrick,\n * 这样只有在需要时才会加载这些依赖的构件。\n */\n\n/**\n * 使用异步加载的方式包装一个构件,可用于按条件渲染的构件依赖。\n *\n * 例如提供复杂弹层内容的按钮构件,其内容需要使用到一些大型构件,那么这些依赖可以使用 asyncWrapBrick,\n * 这样只有在需要时才会加载这些依赖的构件。\n */\n\nexport async function asyncWrapBrick(brickName, eventsMapping) {\n await __secret_internals.loadBricks([brickName]);\n return wrapBrick(brickName, eventsMapping);\n}\n//# sourceMappingURL=asyncWrapBrick.js.map","import { useEffect, useState } from \"react\";\nimport { getRuntime } from \"@next-core/runtime\";\nexport function useNavConfig() {\n const [navConfig, setNavConfig] = useState(() => getRuntime().getNavConfig());\n useEffect(() => {\n const listener = event => {\n setNavConfig(event.detail);\n };\n window.addEventListener(\"navConfig.change\", listener);\n return () => window.removeEventListener(\"navConfig.change\", listener);\n }, []);\n return navConfig;\n}\n//# sourceMappingURL=useNavConfig.js.map","import { lazy, useMemo } from \"react\";\nimport { asyncWrapBrick } from \"./asyncWrapBrick.js\";\n\n/**\n * 使用 `React.lazy` 包装一个异步加载的构件。\n *\n * ```jsx\n * const DepComponent = useLazyWrapBrick(\"async-dep\");\n * return (\n * <Suspense fallback=\"Loading...\">\n * <DepComponent {...props} />\n * </Suspense>\n * );\n * ```\n */\n\n/**\n * 使用 `React.lazy` 包装一个异步加载的构件。\n *\n * ```jsx\n * const DepComponent = useLazyWrapBrick(\"async-dep\");\n * return (\n * <Suspense fallback=\"Loading...\">\n * <DepComponent {...props} />\n * </Suspense>\n * );\n * ```\n */\n\n/**\n * 使用 `React.lazy` 包装一个异步加载的构件。\n *\n * ```jsx\n * const DepComponent = useLazyWrapBrick(\"async-dep\");\n * return (\n * <Suspense fallback=\"Loading...\">\n * <DepComponent {...props} />\n * </Suspense>\n * );\n * ```\n */\n\n/**\n * 使用 `React.lazy` 包装一个异步加载的构件。\n *\n * ```jsx\n * const DepComponent = useLazyWrapBrick(\"async-dep\");\n * return (\n * <Suspense fallback=\"Loading...\">\n * <DepComponent {...props} />\n * </Suspense>\n * );\n * ```\n */\n\nexport function useLazyWrapBrick(brickName, eventsMapping) {\n return useMemo(() => {\n if (brickName != null) {\n return /*#__PURE__*/lazy(async () => ({\n default: await asyncWrapBrick(brickName, eventsMapping)\n }));\n }\n return null;\n }, [brickName, eventsMapping]);\n}\n//# sourceMappingURL=useLazyWrapBrick.js.map","import React from \"react\";\nimport { __secret_internals } from \"@next-core/runtime\";\n\n/**\n * 获取当前路由路径参数的 React hooks。\n *\n * **注意**: 此 hook 依赖于运行时上下文中的路由匹配信息。\n * 如果在非路由上下文中使用,将返回空对象。\n *\n * 此 hook 监听 `page.load` 事件以确保在路由匹配完成后更新路径参数。\n * 直接监听 history 变化无法获取正确的参数,因为路由匹配是异步的。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const pathParams = usePathParams();\n * return <div>User ID: {pathParams.userId}</div>;\n * }\n * ```\n *\n * @returns 当前路由的路径参数对象。\n */\nexport function usePathParams() {\n const [pathParams, setPathParams] = React.useState(() => extractPathParams());\n React.useEffect(() => {\n const listener = () => {\n setPathParams(extractPathParams());\n };\n\n // 监听 page.load 事件,此时路由匹配已完成,match 信息已更新\n window.addEventListener(\"page.load\", listener);\n return () => window.removeEventListener(\"page.load\", listener);\n }, []);\n return pathParams;\n}\n\n/**\n * 从运行时上下文中提取路径参数。\n *\n * @internal\n */\nfunction extractPathParams() {\n try {\n var _runtimeValue$match$p, _runtimeValue$match;\n // 使用 __secret_internals 获取当前运行时值\n const runtimeValue = __secret_internals.getLegalRuntimeValue();\n return (_runtimeValue$match$p = runtimeValue === null || runtimeValue === void 0 || (_runtimeValue$match = runtimeValue.match) === null || _runtimeValue$match === void 0 ? void 0 : _runtimeValue$match.params) !== null && _runtimeValue$match$p !== void 0 ? _runtimeValue$match$p : {};\n } catch (_error) {\n // 如果运行时上下文不可用,返回空对象\n return {};\n }\n}\n//# sourceMappingURL=usePathParams.js.map","import React from \"react\";\nimport { getHistory } from \"@next-core/runtime\";\n\n/**\n * 获取当前 URL 查询参数的 React hooks。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const searchParams = useSearchParams();\n * return <div>Search query: {searchParams.get('q')}</div>;\n * }\n * ```\n *\n * @returns 当前 URL 的查询参数 URLSearchParams 对象。\n */\nexport function useSearchParams() {\n const [searchParams, setSearchParams] = React.useState(() => new URLSearchParams(getHistory().location.search));\n React.useEffect(() => {\n const unlisten = getHistory().listen(location => {\n setSearchParams(new URLSearchParams(location.search));\n });\n return unlisten;\n }, []);\n return searchParams;\n}\n//# sourceMappingURL=useSearchParams.js.map","import React from \"react\";\nimport { getHistory } from \"@next-core/runtime\";\n\n/**\n * 获取 URL query 参数的 React hooks,返回普通对象。\n *\n * 与 `useSearchParams` 不同,此 hook 返回一个普通的键值对象,\n * 而不是 URLSearchParams 实例,使用更方便。\n *\n * **注意**:\n * - 重复的参数只会保留最后一个值\n * - 所有值都是字符串类型\n * - 参数值会自动进行 URL 解码\n *\n * @example\n *\n * ```tsx\n * // URL: /page?id=123&name=test\n * function MyReactComponent() {\n * const params = useParams();\n * return <div>ID: {params.id}, Name: {params.name}</div>;\n * }\n * ```\n *\n * @returns URL query 参数对象。\n */\nexport function useParams() {\n const [params, setParams] = React.useState(() => extractParams(getHistory().location.search));\n React.useEffect(() => {\n const unlisten = getHistory().listen(location => {\n setParams(extractParams(location.search));\n });\n return unlisten;\n }, []);\n return params;\n}\n\n/**\n * 从 query string 中提取参数对象。\n *\n * @internal\n */\nfunction extractParams(search) {\n const params = {};\n const urlSearchParams = new URLSearchParams(search);\n urlSearchParams.forEach((value, key) => {\n params[key] = value;\n });\n return params;\n}\n//# sourceMappingURL=useParams.js.map","import { getHistory } from \"@next-core/runtime\";\n\n/**\n * 获取 history 对象的 React hooks。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const history = useHistory();\n * const handleClick = () => {\n * history.push('/new-page');\n * };\n * return <button onClick={handleClick}>Navigate</button>;\n * }\n * ```\n *\n * @returns history 对象,用于路由导航。\n */\nexport function useHistory() {\n return getHistory();\n}\n//# sourceMappingURL=useHistory.js.map","import React from \"react\";\nimport { auth } from \"@next-core/easyops-runtime\";\n/**\n * 获取用户认证信息的 React hooks。\n *\n * **注意**: 使用 useMemo 确保返回的认证信息对象引用稳定,\n * 避免不必要的组件重渲染。认证信息在会话期间保持不变。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const authInfo = useAuth();\n * return <div>Username: {authInfo.username}</div>;\n * }\n * ```\n *\n * @returns 当前用户的认证信息对象。\n */\nexport function useAuth() {\n return React.useMemo(() => auth.getAuth(), []);\n}\n//# sourceMappingURL=useAuth.js.map","import React from \"react\";\nimport { getHistory } from \"@next-core/runtime\";\n\n/**\n * 获取当前路由 location 对象的 React hooks。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const location = useLocation();\n * return <div>Current path: {location.pathname}</div>;\n * }\n * ```\n *\n * @returns 当前路由的 location 对象。\n */\nexport function useLocation() {\n const [location, setLocation] = React.useState(() => getHistory().location);\n React.useEffect(() => {\n const unlisten = getHistory().listen(newLocation => {\n setLocation(newLocation);\n });\n return unlisten;\n }, []);\n return location;\n}\n//# sourceMappingURL=useLocation.js.map","import React from \"react\";\nimport { getRuntime } from \"@next-core/runtime\";\n/**\n * 获取特性开关配置的 React hooks。\n *\n * 特性开关用于控制功能的启用或禁用,可以在全局设置或应用级别配置。\n * 使用 useMemo 确保返回的对象引用稳定,避免不必要的组件重渲染。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const flags = useFeatureFlags();\n *\n * if (flags[\"my-new-feature\"]) {\n * return <NewFeature />;\n * }\n *\n * return <OldFeature />;\n * }\n * ```\n *\n * @example\n *\n * ```tsx\n * // 检查特定功能是否启用\n * function FeatureToggle() {\n * const flags = useFeatureFlags();\n * const isEnabled = flags[\"experimental-mode\"] ?? false;\n *\n * return (\n * <div>\n * Experimental Mode: {isEnabled ? \"ON\" : \"OFF\"}\n * </div>\n * );\n * }\n * ```\n *\n * @returns 特性开关配置对象,键为特性名称,值为布尔值。\n */\nexport function useFeatureFlags() {\n return React.useMemo(() => getRuntime().getFeatureFlags(), []);\n}\n//# sourceMappingURL=useFeatureFlags.js.map","import React from \"react\";\nimport { getRuntime, getPageInfo } from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\n\n/**\n * 系统信息接口,包含认证信息、页面信息和品牌设置。\n */\n\n/**\n * 获取系统信息的 React hooks。\n *\n * 系统信息包括:\n * - 用户认证信息(username, userInstanceId, org 等)\n * - 页面信息(isInIframe, isInIframeOfNext 等)\n * - 品牌设置(base_title 等)\n *\n * **注意**: 使用 useMemo 确保返回的对象引用稳定,\n * 避免不必要的组件重渲染。系统信息在会话期间保持稳定。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const sys = useSystemInfo();\n *\n * return (\n * <div>\n * <p>User: {sys.username}</p>\n * <p>Org: {sys.org}</p>\n * <p>In iframe: {sys.isInIframe ? \"Yes\" : \"No\"}</p>\n * <p>Brand: {sys.settings.brand.base_title}</p>\n * </div>\n * );\n * }\n * ```\n *\n * @example\n *\n * ```tsx\n * // 检查是否在 iframe 中\n * function IframeDetector() {\n * const sys = useSystemInfo();\n *\n * if (sys.isInIframe) {\n * return <div>Running in iframe mode</div>;\n * }\n *\n * return <div>Running in standalone mode</div>;\n * }\n * ```\n *\n * @returns 系统信息对象。\n */\nexport function useSystemInfo() {\n return React.useMemo(() => {\n const authInfo = auth.getAuth();\n const pageInfo = getPageInfo();\n const brandSettings = getRuntime().getBrandSettings();\n return {\n ...authInfo,\n ...pageInfo,\n settings: {\n brand: brandSettings\n }\n };\n }, []);\n}\n//# sourceMappingURL=useSystemInfo.js.map","import React from \"react\";\nimport { checkPermissions } from \"@next-core/easyops-runtime\";\n\n/**\n * 检查用户权限的 React hooks。\n *\n * 此 hook 用于检查当前登录用户是否拥有指定的权限操作。\n * 权限必须在 storyboard 配置的 `permissionsPreCheck` 中预先声明,\n * 否则会返回 false 并在控制台输出错误。\n *\n * **工作原理:**\n * - 权限会在路由渲染时自动预检查(通过 `preCheckPermissions`)\n * - 此 hook 查询已缓存的权限结果(同步操作)\n * - 管理员用户始终返回 true\n * - 未登录用户始终返回 false\n *\n * **注意事项:**\n * 1. 权限必须在 `permissionsPreCheck` 中声明\n * 2. 所有传入的 actions 都必须有权限才返回 true\n * 3. 权限检查结果会被缓存,避免重复计算\n *\n * @param actions - 需要检查的权限操作列表\n * @returns 是否拥有所有指定的权限\n *\n * @example\n *\n * ```tsx\n * // 检查单个权限\n * function DeleteButton() {\n * const canDelete = useCheckPermissions(\"my-app:user.delete\");\n *\n * if (!canDelete) {\n * return null;\n * }\n *\n * return <button onClick={handleDelete}>Delete</button>;\n * }\n * ```\n *\n * @example\n *\n * ```tsx\n * // 检查多个权限(需要全部拥有)\n * function AdminPanel() {\n * const hasAccess = useCheckPermissions(\n * \"my-app:admin.read\",\n * \"my-app:admin.write\"\n * );\n *\n * if (!hasAccess) {\n * return <div>Access Denied</div>;\n * }\n *\n * return <div>Admin Panel Content</div>;\n * }\n * ```\n *\n * @example\n *\n * ```tsx\n * // 在 storyboard 中配置权限预检查\n * // routes.yaml\n * routes:\n * - path: /users\n * permissionsPreCheck:\n * - \"my-app:user.read\"\n * - \"my-app:user.delete\"\n * bricks:\n * - brick: \"my-brick\"\n * ```\n */\nexport function useCheckPermissions() {\n for (var _len = arguments.length, actions = new Array(_len), _key = 0; _key < _len; _key++) {\n actions[_key] = arguments[_key];\n }\n // 使用 useMemo 缓存权限检查结果\n // 因为权限在会话期间是稳定的,只依赖于 actions 列表\n return React.useMemo(() => checkPermissions.checkPermissions(...actions),\n // 序列化 actions 作为依赖,避免数组引用变化导致重新计算\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(actions)]);\n}\n//# sourceMappingURL=useCheckPermissions.js.map","import React from \"react\";\nimport { isEqual } from \"lodash\";\n\n/**\n * 受控/非受控混合模式的通用 Hook。\n *\n * 此 hook 允许组件既支持受控模式(由父组件通过 props 控制状态),\n * 也支持非受控模式(组件自己管理内部状态)。\n *\n * **工作原理:**\n * - 当 `propValue !== undefined` 时,组件处于**受控模式**,状态跟随 prop 更新\n * - 当 `propValue === undefined` 时,组件处于**非受控模式**,使用内部状态\n * - 支持深度比较选项,避免复杂对象引用变化导致的不必要更新\n *\n * **使用场景:**\n * 1. 表单组件需要支持受控和非受控两种模式\n * 2. 组件状态可能由父组件控制,也可能自己管理\n * 3. 复杂对象状态需要避免不必要的重新渲染\n *\n * @template T - 状态值的类型\n * @param propValue - 来自 props 的值(undefined 表示非受控模式)\n * @param defaultValue - 默认值(props 为 undefined 时使用)\n * @param deepCompare - 是否使用深度比较(用于复杂对象,默认 false)\n * @returns 返回 [当前值, 设置值的函数],类似 useState\n *\n * @example\n *\n * ```tsx\n * // 简单值(字符串、数字)\n * function MyComponent({ deployed }: { deployed?: string }) {\n * const [value, setValue] = useControlledState(deployed, 'host');\n *\n * return (\n * <select value={value} onChange={(e) => setValue(e.target.value)}>\n * <option value=\"host\">Host</option>\n * <option value=\"container\">Container</option>\n * </select>\n * );\n * }\n *\n * // 使用方式 1:受控模式\n * <MyComponent deployed=\"container\" />\n *\n * // 使用方式 2:非受控模式\n * <MyComponent />\n * ```\n *\n * @example\n *\n * ```tsx\n * // 复杂对象(启用深度比较)\n * interface Config {\n * host: string;\n * port: number;\n * }\n *\n * function ConfigEditor({ config }: { config?: Config }) {\n * const [value, setValue] = useControlledState<Config | null>(\n * config,\n * null,\n * true // 启用深度比较\n * );\n *\n * return <div>{JSON.stringify(value)}</div>;\n * }\n * ```\n *\n * @example\n *\n * ```tsx\n * // 与 onChange 回调结合\n * function Input({\n * value,\n * defaultValue = '',\n * onChange\n * }: {\n * value?: string;\n * defaultValue?: string;\n * onChange?: (val: string) => void;\n * }) {\n * const [internalValue, setInternalValue] = useControlledState(\n * value,\n * defaultValue\n * );\n *\n * const handleChange = (newValue: string) => {\n * setInternalValue(newValue);\n * onChange?.(newValue);\n * };\n *\n * return (\n * <input\n * value={internalValue}\n * onChange={(e) => handleChange(e.target.value)}\n * />\n * );\n * }\n * ```\n */\nexport function useControlledState(propValue, defaultValue) {\n let deepCompare = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // 初始化内部状态\n // 如果 propValue 不是 undefined,使用 propValue;否则使用 defaultValue\n const [internalValue, setInternalValue] = React.useState(propValue !== undefined ? propValue : defaultValue);\n const isControlled = propValue !== undefined;\n\n // 在受控模式下同步 propValue 到 internalValue\n React.useEffect(() => {\n if (isControlled) {\n if (deepCompare) {\n // 深度比较模式:只有值真正变化时才更新\n setInternalValue(prev => isEqual(prev, propValue) ? prev : propValue);\n } else {\n // 浅比较模式:直接更新(React 会自动优化相同值)\n setInternalValue(propValue);\n }\n }\n // 注意:当 propValue 变为 undefined 时,不更新 internalValue\n // 这样可以保持最后一次的值,实现从受控切换到非受控的平滑过渡\n }, [isControlled, propValue, deepCompare]);\n\n // 计算最终返回的值\n let value;\n if (isControlled) {\n if (deepCompare) {\n // 深度比较模式:如果内容相同,返回 internalValue 保持引用稳定\n // 否则返回 propValue\n value = isEqual(internalValue, propValue) ? internalValue : propValue;\n } else {\n // 浅比较模式:直接返回 propValue,确保受控模式下值始终同步\n value = propValue;\n }\n } else {\n // 非受控模式:返回 internalValue\n value = internalValue;\n }\n return [value, setInternalValue];\n}\n//# sourceMappingURL=useControlledState.js.map","import React from \"react\";\nimport { Notification } from \"@next-core/runtime\";\n/**\n * 获取 message 对象的 React hooks,用于显示通知消息。\n *\n * **注意**: 使用 useMemo 确保返回的 message 对象引用稳定,\n * 避免不必要的组件重渲染。这在对象被用于依赖数组或传递给记忆化组件时尤为重要。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const message = useMessage();\n * const handleSuccess = () => {\n * message.success(\"操作成功!\");\n * };\n * const handleError = () => {\n * message.error(\"操作失败!\");\n * };\n * return (\n * <div>\n * <button onClick={handleSuccess}>成功</button>\n * <button onClick={handleError}>失败</button>\n * </div>\n * );\n * }\n * ```\n *\n * @returns message 对象,包含 success、error、info、warn 四个方法。\n */\nexport function useMessage() {\n return React.useMemo(() => ({\n success: message => {\n Notification.show({\n type: \"success\",\n message\n });\n },\n error: message => {\n Notification.show({\n type: \"error\",\n message\n });\n },\n info: message => {\n Notification.show({\n type: \"info\",\n message\n });\n },\n warn: message => {\n Notification.show({\n type: \"warn\",\n message\n });\n }\n }), []);\n}\n//# sourceMappingURL=useMessage.js.map"],"names":["ReactUseBrickInternal","_ref","useBrick","data","errorBoundary","refCallback","ignoredCallback","renderResult","setRenderResult","useState","mountResult","useRef","renderKey","setRenderKey","IdCounterRef","initialRenderId","useMemo","_secret_internals$ge","__secret_internals","getRenderId","call","useEffect","ignore","async","newRender","renderUseBrick","current","error","_secret_internals$ge2","newRenderId","isTheSameRender","console","handleHttpError","init","_refCallback","useCallback","element","mountUseBrick","unmountUseBrick","undefined","tagName","WebComponent","key","ref","ReactUseBrick","_ref2","renderFn","ReactUseMultipleBricks","_ref3","Array","isArray","map","item","index","v2Kit","getV2RuntimeFromDll","SingleBrickAsComponentFactory","BrickAsComponentFactory","useCurrentTheme","currentTheme","setCurrentTheme","getCurrentTheme","listenToThemeChange","event","detail","window","addEventListener","removeEventListener","useRecentApps","recentApps","setRecentApps","getRuntime","getRecentApps","listener","useCurrentApp","currentApp","useRouteRender","routeRender","setRouteRender","useProviderArgsDefaults","provider","customOptions","onError","transform","oldData","newData","loading","suspense","cache","dependencies","Object","entries","reduce","acc","value","prototype","toString","cacheMap","Map","useProvider","requestInit","providerOrParamsOrGlobalOptions","globalOptionsOrDeps","deps","options","localOptions","isObject","customOptionKeys","keys","args","restOptions","includes","opts","useProviderArgs","arguments","defaults","setLoading","suspenseStatus","suspender","mounted","response","forceUpdate","useReducer","doFetch","providerArgs","newRes","promise","cacheKey","sortObj","obj","sort","k","_len","length","_key","sortedArgs","v","arg","isString","JSON","stringify","e","buildSortedCacheKey","has","delete","get","fetchByProvider","set","fetch","makeFetch","providerOrBody","providerStr","then","request","defineProperties","query","assign","asyncWrapBrick","brickName","eventsMapping","loadBricks","wrapBrick","useNavConfig","navConfig","setNavConfig","getNavConfig","useLazyWrapBrick","lazy","default","usePathParams","pathParams","setPathParams","extractPathParams","_runtimeValue$match$p","_runtimeValue$match","runtimeValue","getLegalRuntimeValue","match","params","_error","useSearchParams","searchParams","setSearchParams","URLSearchParams","getHistory","location","search","listen","useParams","setParams","extractParams","forEach","useHistory","useAuth","auth","getAuth","useLocation","setLocation","newLocation","useFeatureFlags","getFeatureFlags","useSystemInfo","getPageInfo","settings","brand","getBrandSettings","useCheckPermissions","actions","checkPermissions","useControlledState","propValue","defaultValue","deepCompare","internalValue","setInternalValue","isControlled","prev","isEqual","useMessage","success","message","Notification","show","type","info","warn"],"sourceRoot":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/7736.477cde3e.js","mappings":"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","sources":["webpack:///./src/chat-agent/styles.shadow.css","webpack:///./src/chat-view/index.tsx","webpack:///./src/chat-agent/index.tsx"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport {\n ChatViewContext,\n QuickAnswerConfig,\n snippet,\n} from \"./ChatViewContext.js\";\nimport { MessageList } from \"./components/MessageList.js\";\nimport { useChatViewInfo } from \"./hooks/useChatViewInfo.js\";\nimport { SessionList } from \"./components/SessionList.js\";\nimport { SearchInput, SearchInputRef } from \"./components/SearchInput.js\";\nimport \"@next-core/theme\";\nimport \"./host-context.css\";\nimport \"./index.css\";\nimport { commandBrickConf } from \"./ChatViewContext\";\nimport { UseBrickConf } from \"@next-core/types\";\nimport { ChatBody } from \"./ChatService.js\";\n\nconst { defineElement, property, method, event } = createDecorators();\n\ntype InputToolbarBrick = { useBrick: UseBrickConf };\n\nexport interface ChatViewRef extends SearchInputRef {\n setConfig(config: Record<string, unknown> | undefined): void;\n setFormData(formData: Record<string, unknown> | undefined): void;\n}\n\nexport interface ChatViewProps {\n agentId: string;\n robotId: string;\n sessionId?: string;\n readonly?: boolean;\n showAvatar?: boolean;\n showSessionList?: boolean;\n showLike?: boolean;\n showShare?: boolean;\n useSpiltWord?: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n snippetList?: snippet[];\n enterInterval?: number;\n debug?: boolean;\n commandBricks?: commandBrickConf;\n answerLanguage?: string;\n inputToolbarBrick?: InputToolbarBrick;\n showToolCalls?: boolean;\n onSessionIdChange: (sessionId: string | undefined) => void;\n onRobotIdChange: (robotId: string | undefined) => void;\n onQaFinish: (sessionId: string | undefined) => void;\n}\n\nexport function LegacyChatViewComponent(\n {\n agentId,\n robotId,\n sessionId,\n showAvatar,\n showSessionList = true,\n readonly = false,\n showLike = true,\n showShare = true,\n quickAnswerConfig,\n snippetList,\n enterInterval,\n debug = false,\n useSpiltWord = false,\n commandBricks,\n answerLanguage,\n inputToolbarBrick,\n showToolCalls,\n onSessionIdChange,\n onRobotIdChange,\n onQaFinish,\n }: ChatViewProps,\n ref: React.Ref<ChatViewRef>\n) {\n const {\n sessionEnd,\n sessionLoading,\n activeSessionId,\n msgEnd,\n msgLoading,\n msgList,\n sessionList,\n loading,\n chatting,\n searchStr,\n toolNames,\n setAgent,\n handleIsLike,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n updateSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n setConfig,\n setFormData,\n } = useChatViewInfo({\n agentId,\n robotId,\n sessionId,\n enterInterval,\n debug,\n answerLanguage,\n useSpiltWord,\n showToolCalls,\n });\n\n useEffect(() => {\n if (activeSessionId) {\n onSessionIdChange(activeSessionId);\n onRobotIdChange(\n sessionList.find((item) => item.conversationId === activeSessionId)\n ?.robotId\n );\n }\n }, [activeSessionId, onRobotIdChange, onSessionIdChange, sessionList]);\n\n useEffect(() => {\n if (!chatting && activeSessionId) {\n // 当此时存在activeSessionId,且chatting是从true变为false时触发,不需要加入activeSessionId的依赖判断\n onQaFinish(activeSessionId);\n }\n }, [chatting]);\n\n const inputRef = useRef<SearchInputRef>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n handleInsertQuestion(value) {\n return inputRef.current?.handleInsertQuestion(value);\n },\n sendMsg(msg) {\n return inputRef.current?.sendMsg(msg);\n },\n setConfig,\n setFormData,\n }),\n [setConfig, setFormData]\n );\n\n return (\n <ChatViewContext.Provider\n value={{\n sessionEnd,\n sessionLoading,\n activeSessionId,\n sessionList,\n msgEnd,\n msgLoading,\n msgList,\n chatting,\n loading,\n searchStr,\n showLike,\n showShare,\n readonly,\n quickAnswerConfig,\n snippetList,\n commandBricks,\n showToolCalls,\n toolNames,\n setAgent,\n handleIsLike,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n updateSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n }}\n >\n <div className=\"chat-view-container\">\n {showSessionList && (\n <div className=\"chat-view-selector\">\n <SessionList />\n </div>\n )}\n <div className=\"chat-view-content\">\n <MessageList showAvatar={showAvatar} />\n {!readonly && (\n <SearchInput inputToolbarBrick={inputToolbarBrick} ref={inputRef} />\n )}\n </div>\n </div>\n </ChatViewContext.Provider>\n );\n}\n\nexport const ChatViewComponent = forwardRef(LegacyChatViewComponent);\n\n/**\n * AI 对话终端\n */\nexport\n@defineElement(\"ai.chat-view\", {\n // shadow 模式下,会导致 useBrick 样式丢失\n // 如:commandBricks 配置 cmdb-instances.instance-list\n shadowOptions: false,\n})\nclass ChatView extends ReactNextElement {\n @property()\n accessor sessionId: string | undefined;\n\n /**\n * 智能体id\n */\n @property()\n accessor agentId!: string;\n\n /**\n * 机器人id\n */\n @property()\n accessor robotId!: string;\n\n /**\n * 指定智能体回答代码时所使用的语言\n */\n @property()\n accessor answerLanguage: string | undefined;\n\n /**\n * 是否为debug模式\n */\n @property({\n type: Boolean,\n })\n accessor debug: boolean | undefined;\n\n /**\n * 是否展示对话用户头像\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showAvatar: boolean | undefined;\n\n /**\n * 是否展示历史会话信息\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showSessionList: boolean | undefined;\n\n /**\n * 只读模式\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n /**\n * 是否展示点赞能力\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showLike: boolean | undefined;\n\n /**\n * 是否展示分享能力\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showShare: boolean | undefined;\n\n /**\n * 是否开启前端分词\n * @default false\n */\n @property({\n type: Boolean,\n })\n accessor useSpiltWord: boolean | undefined;\n\n /**\n * 输入间隔,设置为 -1 使用新的方式对大段消息进行模拟打字效果节流输出\n *\n * @default 50\n */\n @property({\n type: Number,\n })\n accessor enterInterval: number | undefined;\n\n /**\n * 快速入口列表\n */\n @property({\n attribute: false,\n })\n accessor quickAnswerConfig: QuickAnswerConfig | undefined;\n\n /**\n * 常用语列表\n */\n @property({\n attribute: false,\n })\n accessor snippetList: snippet[] | undefined;\n\n /**\n * 自定义语言配置\n */\n @property({\n attribute: false,\n })\n accessor commandBricks: commandBrickConf | undefined;\n\n /**\n * 输入框工具栏 useBrick\n */\n @property({\n attribute: false,\n })\n accessor inputToolbarBrick: InputToolbarBrick | undefined;\n\n /**\n * 是否显示工具调用过程\n */\n @property({ type: Boolean })\n accessor showToolCalls: boolean | undefined;\n\n /** 设置接口 config */\n @method()\n setConfig(config: Record<string, unknown> | undefined): void {\n this.#ref.current?.setConfig(config);\n }\n\n /** 设置接口 formData */\n @method()\n setFormData(formData: Record<string, unknown> | undefined): void {\n this.#ref.current?.setFormData(formData);\n }\n\n #ref = React.createRef<ChatViewRef>();\n\n @event({ type: \"sessionId.change\" })\n accessor #sessionIdChange!: EventEmitter<string | undefined>;\n\n #handleSessionIdChange = (activeSessionId: string | undefined) => {\n this.#sessionIdChange.emit(activeSessionId);\n };\n\n @event({ type: \"robotId.change\" })\n accessor #robotIdChange!: EventEmitter<string | undefined>;\n\n #handleRobotIdChange = (robotId: string | undefined) => {\n this.#robotIdChange.emit(robotId);\n };\n\n @event({ type: \"qa.finish\" })\n accessor #qaFinish!: EventEmitter<string | undefined>;\n\n #handleQaFinish = (activeSessionId: string | undefined) => {\n this.#qaFinish.emit(activeSessionId);\n };\n\n /**\n *\n * @description 调用方法进行提问\n */\n @method()\n insertQuestion(args: { value: string }): void {\n const { value } = args;\n if (!value) return;\n this.#ref.current?.handleInsertQuestion(value);\n }\n\n /**\n * @description 外部提问\n */\n @method()\n sendMsg(msg: string | ChatBody): void {\n this.#ref.current?.sendMsg(msg);\n }\n\n render() {\n return (\n <ChatViewComponent\n agentId={this.agentId}\n robotId={this.robotId}\n debug={this.debug}\n sessionId={this.sessionId}\n readonly={this.readonly}\n showAvatar={this.showAvatar}\n showSessionList={this.showSessionList}\n showLike={this.showLike}\n showShare={this.showShare}\n useSpiltWord={this.useSpiltWord}\n quickAnswerConfig={this.quickAnswerConfig}\n snippetList={this.snippetList}\n enterInterval={this.enterInterval}\n commandBricks={this.commandBricks}\n answerLanguage={this.answerLanguage}\n inputToolbarBrick={this.inputToolbarBrick}\n showToolCalls={this.showToolCalls}\n onSessionIdChange={this.#handleSessionIdChange}\n onRobotIdChange={this.#handleRobotIdChange}\n onQaFinish={this.#handleQaFinish}\n ref={this.#ref}\n />\n );\n }\n}\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport { createSSEStream, type Options } from \"@next-core/utils/general\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ChatAgentProps {\n agentId?: string;\n robotId?: string;\n conversationId?: string;\n alwaysUseNewConversation?: boolean;\n}\n\nexport interface Message extends BaseMessage {\n key: number;\n partial?: boolean;\n failed?: boolean;\n}\n\nexport interface BaseMessage {\n role: \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface MessageChunk {\n delta: BaseMessage;\n conversationId?: string;\n key: number;\n partial?: boolean;\n}\n\nexport interface LowLevelMessageChunk {\n choices: LowLevelChoice[];\n}\n\nexport interface LowLevelChoice {\n delta: {\n role: \"assistant\";\n content?: string;\n };\n}\n\nexport const ChatAgentComponent = forwardRef(LegacyChatAgentComponent);\n\n/**\n * 用于与 AI 机器人进行对话的代理构件,处理通信并整合消息。\n */\nexport\n@defineElement(\"ai.chat-agent\", {\n styleTexts: [styleText],\n})\nclass ChatAgent extends ReactNextElement implements ChatAgentProps {\n @property()\n accessor agentId: string | undefined;\n\n @property()\n accessor robotId: string | undefined;\n\n @property()\n accessor conversationId: string | undefined;\n\n @property()\n accessor alwaysUseNewConversation: boolean | undefined;\n\n /**\n * 发送消息到默认的聊天 API\n */\n @method()\n postMessage(content: string) {\n return this.#ref.current?.postMessage(content);\n }\n\n /**\n * 发送聊天请求到指定的 URL\n */\n @method()\n sendRequest(\n leadingMessages: string | BaseMessage[],\n url: string,\n options: Options<MessageChunk>\n ) {\n return this.#ref.current?.sendRequest(leadingMessages, url, options);\n }\n\n /**\n * 发送底层聊天请求到指定的 URL。接口的请求和响应的数据结构和 OpenAI 聊天接口一致。\n */\n @method()\n lowLevelSendRequest(\n leadingMessages: string | BaseMessage[],\n url: string,\n options: Options<MessageChunk>\n ) {\n return this.#ref.current?.lowLevelSendRequest(\n leadingMessages,\n url,\n options\n );\n }\n\n @method()\n newConversation() {\n this.#ref.current?.newConversation();\n }\n\n // @event({ type: \"messageChunk.push\" })\n // accessor #messageChunkPushEvent!: EventEmitter<MessageChunk>;\n\n // #handleMessageChunkPush = (msg: MessageChunk) => {\n // this.#messageChunkPushEvent.emit(msg);\n // };\n\n @event({ type: \"messages.update\" })\n accessor #messagesUpdate!: EventEmitter<Message[]>;\n\n #handleMessagesUpdate = (messages: Message[]) => {\n this.#messagesUpdate.emit(messages);\n };\n\n @event({ type: \"busy.change\" })\n accessor #busyChangeEvent!: EventEmitter<boolean>;\n\n #handleBusyChange = (busy: boolean) => {\n this.#busyChangeEvent.emit(busy);\n };\n\n @event({ type: \"conversationId.change\" })\n accessor #conversationIdChangeEvent!: EventEmitter<string | null>;\n\n #handleConversationIdChange = (conversationId: string | null) => {\n this.#conversationIdChangeEvent.emit(conversationId);\n };\n\n #ref = createRef<ChatAgentRef>();\n\n render() {\n return (\n <ChatAgentComponent\n ref={this.#ref}\n agentId={this.agentId}\n robotId={this.robotId}\n conversationId={this.conversationId}\n alwaysUseNewConversation={this.alwaysUseNewConversation}\n // onMessageChunkPush={this.#handleMessageChunkPush}\n onMessagesUpdate={this.#handleMessagesUpdate}\n onBusyChange={this.#handleBusyChange}\n onConversationIdChange={this.#handleConversationIdChange}\n />\n );\n }\n}\n\nexport interface ChatAgentComponentProps extends ChatAgentProps {\n onMessageChunkPush?(msg: MessageChunk): void;\n onMessagesUpdate?(messages: Message[]): void;\n onBusyChange?(busy: boolean): void;\n onConversationIdChange?(conversationId: string | null): void;\n}\n\nexport interface ChatAgentRef {\n postMessage(content: string): Promise<string | null>;\n sendRequest(\n leadingMessages: string | BaseMessage[],\n url: string,\n options: Options<MessageChunk>\n ): Promise<string | null>;\n lowLevelSendRequest(\n leadingMessages: string | BaseMessage[],\n url: string,\n options: Options<MessageChunk>\n ): Promise<string | null>;\n newConversation(): void;\n}\n\nexport function LegacyChatAgentComponent(\n {\n agentId,\n robotId,\n conversationId: propConversationId,\n alwaysUseNewConversation,\n onMessageChunkPush,\n onMessagesUpdate,\n onBusyChange,\n onConversationIdChange,\n }: ChatAgentComponentProps,\n ref: React.Ref<ChatAgentRef>\n) {\n const didMountRef = useRef(false);\n const chatIdRef = useRef(1);\n const busyRef = useRef(false);\n const [conversationId, setConversationId] = useState<string | null>(null);\n\n useEffect(() => {\n setConversationId(propConversationId ?? null);\n }, [propConversationId]);\n\n useEffect(() => {\n didMountRef.current && onConversationIdChange?.(conversationId);\n }, [conversationId, onConversationIdChange]);\n\n const counterRef = useRef(0);\n const getMessageChunkKey = useCallback(() => counterRef.current++, []);\n\n const [fullMessages, setFullMessages] = useState<Message[]>([]);\n\n const pushPartialMessage = useCallback(\n (chunk: MessageChunk) => {\n onMessageChunkPush?.(chunk);\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n if (last && last.key === chunk.key) {\n last.content += chunk.delta.content;\n return [...prev];\n }\n if (last?.partial) {\n last.partial = false;\n }\n return [\n ...prev,\n { ...chunk.delta, key: chunk.key, partial: chunk.partial },\n ];\n });\n },\n [onMessageChunkPush]\n );\n\n const legacySendRequest = useCallback(\n async (\n isLowLevel: boolean,\n leadingMessages: string | BaseMessage[],\n url: string,\n options: Options<MessageChunk | LowLevelMessageChunk>\n ) => {\n // Use ref instead of state to handle sync sequential calls.\n if (busyRef.current) {\n return null;\n }\n if (alwaysUseNewConversation || isLowLevel) {\n setFullMessages((prev) => (prev.length === 0 ? prev : []));\n }\n const thisChatId = chatIdRef.current;\n let newConversationError: Error | undefined;\n const checkNewConversation = async () => {\n if (thisChatId !== chatIdRef.current) {\n // istanbul ignore else: should never happen\n if (!newConversationError) {\n newConversationError = new Error(\"New conversation started\");\n }\n throw newConversationError;\n }\n };\n\n const userKey = getMessageChunkKey();\n const assistantKey = getMessageChunkKey();\n let currentConversationId =\n alwaysUseNewConversation || isLowLevel ? null : conversationId;\n\n onBusyChange?.((busyRef.current = true));\n\n try {\n if (Array.isArray(leadingMessages)) {\n for (const msg of leadingMessages) {\n const isAssistant = msg.role === \"assistant\";\n if (isAssistant || msg.role === \"user\") {\n pushPartialMessage?.({\n key: isAssistant ? assistantKey : userKey,\n delta: {\n role: msg.role,\n content: msg.content,\n },\n });\n }\n }\n } else {\n pushPartialMessage?.({\n key: userKey,\n delta: {\n content: leadingMessages,\n role: \"user\",\n },\n });\n }\n const request = createSSEStream<MessageChunk | LowLevelMessageChunk>(\n new URL(url, `${location.origin}${getBasePath()}`).toString(),\n options\n );\n\n // Put a placeholder assistant message to indicate that the assistant\n // is processing if the request takes longer than one second.\n await Promise.race([\n request,\n new Promise((resolve) => setTimeout(resolve, 1000)),\n ]);\n\n await checkNewConversation();\n\n pushPartialMessage?.({\n key: assistantKey,\n delta: {\n content: \"\",\n role: \"assistant\",\n },\n partial: true,\n });\n\n const stream = await request;\n for await (const value of stream) {\n // istanbul ignore next\n // if (process.env.NODE_ENV === \"development\") {\n // // eslint-disable-next-line no-console\n // console.log(\"stream iterated:\", value);\n // }\n\n await checkNewConversation();\n\n if (isLowLevel) {\n const delta = (value as LowLevelMessageChunk).choices?.[0]?.delta;\n if (delta?.content) {\n pushPartialMessage({\n delta: {\n role: delta.role,\n content: delta.content,\n },\n key: assistantKey,\n partial: true,\n });\n }\n } else {\n pushPartialMessage?.({\n delta: (value as MessageChunk).delta,\n key: assistantKey,\n partial: true,\n });\n if (\n !alwaysUseNewConversation &&\n (value as MessageChunk).conversationId &&\n !currentConversationId\n ) {\n setConversationId(\n (currentConversationId = (value as MessageChunk)\n .conversationId!)\n );\n }\n }\n }\n\n await checkNewConversation();\n\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n if (last?.partial) {\n last.partial = false;\n }\n return [...prev];\n });\n } catch (error) {\n if (error && error === newConversationError) {\n throw error;\n }\n\n // eslint-disable-next-line no-console\n console.error(\"stream failed:\", error);\n await checkNewConversation();\n\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n let keep = prev;\n if (last?.key === assistantKey) {\n if (last.content) {\n last.partial = false;\n last.failed = true;\n } else {\n // Ignore the empty assistant message.\n keep = prev.slice(0, -1);\n }\n }\n return [\n ...keep,\n {\n role: \"assistant\",\n content: \"系统错误\",\n key: getMessageChunkKey(),\n failed: true,\n },\n ];\n });\n }\n\n await checkNewConversation();\n\n onBusyChange?.((busyRef.current = false));\n\n return currentConversationId;\n },\n [\n conversationId,\n alwaysUseNewConversation,\n getMessageChunkKey,\n onBusyChange,\n pushPartialMessage,\n ]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n lowLevelSendRequest: (...args) => legacySendRequest(true, ...args),\n sendRequest: (...args) => legacySendRequest(false, ...args),\n postMessage(content: string) {\n return legacySendRequest(\n false,\n content,\n \"api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions\",\n {\n method: \"POST\",\n body: JSON.stringify({\n agentId,\n robotId,\n input: content,\n stream: true,\n conversationId:\n alwaysUseNewConversation || conversationId === null\n ? undefined\n : conversationId,\n }),\n headers: {\n \"giraffe-contract-name\":\n \"easyops.api.aiops_chat.manage.LLMChatProxy\",\n },\n }\n );\n },\n newConversation() {\n chatIdRef.current++;\n setConversationId(null);\n setFullMessages((prev) => (prev.length === 0 ? prev : []));\n if (busyRef.current) {\n onBusyChange?.((busyRef.current = false));\n }\n },\n }),\n [\n legacySendRequest,\n agentId,\n robotId,\n alwaysUseNewConversation,\n conversationId,\n onBusyChange,\n ]\n );\n\n useEffect(() => {\n didMountRef.current && onMessagesUpdate?.(fullMessages);\n }, [fullMessages, onMessagesUpdate]);\n\n useEffect(() => {\n didMountRef.current = true;\n }, []);\n\n return null;\n}\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","toString","defineElement","property","method","event","createDecorators","LegacyChatViewComponent","_ref","ref","agentId","robotId","sessionId","showAvatar","showSessionList","readonly","showLike","showShare","quickAnswerConfig","snippetList","enterInterval","debug","useSpiltWord","commandBricks","answerLanguage","inputToolbarBrick","showToolCalls","onSessionIdChange","onRobotIdChange","onQaFinish","sessionEnd","sessionLoading","activeSessionId","msgEnd","msgLoading","msgList","sessionList","loading","chatting","searchStr","toolNames","setAgent","handleIsLike","handleChat","stopChat","createSession","deleteSession","updateSession","checkSession","setSearchStr","querySessionHistory","setConfig","setFormData","useChatViewInfo","useEffect","_sessionList$find","find","item","conversationId","inputRef","useRef","useImperativeHandle","handleInsertQuestion","value","_inputRef$current","current","sendMsg","msg","_inputRef$current2","React","ChatViewContext","Provider","className","SessionList","MessageList","SearchInput","ChatViewComponent","forwardRef","_ChatView","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_ref2","_R","_ChatView_brand","WeakSet","_handleSessionIdChange","_S","_handleRobotIdChange","_T","_handleQaFinish","ChatView","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_initProto","_init_sessionId","_init_extra_sessionId","_init_agentId","_init_extra_agentId","_init_robotId","_init_extra_robotId","_init_answerLanguage","_init_extra_answerLanguage","_init_debug","_init_extra_debug","_init_showAvatar","_init_extra_showAvatar","_init_showSessionList","_init_extra_showSessionList","_init_readonly","_init_extra_readonly","_init_showLike","_init_extra_showLike","_init_showShare","_init_extra_showShare","_init_useSpiltWord","_init_extra_useSpiltWord","_init_enterInterval","_init_extra_enterInterval","_init_quickAnswerConfig","_init_extra_quickAnswerConfig","_init_snippetList","_init_extra_snippetList","_init_commandBricks","_init_extra_commandBricks","_init_inputToolbarBrick","_init_extra_inputToolbarBrick","_init_showToolCalls","_init_extra_showToolCalls","_init_sessionIdChange","_init_extra_sessionIdChange","_classPrivateGetter","this","_get_sessionIdChange","emit","_init_robotIdChange","_init_extra_robotIdChange","_get_robotIdChange","_init_qaFinish","_init_extra_qaFinish","_get_qaFinish","_classPrivateFieldGet","v","_classPrivateFieldSet","config","_classPrivateFieldGet2","formData","_classPrivateFieldGet3","insertQuestion","args","_classPrivateFieldGet4","_classPrivateFieldGet5","render","_ChatView2","e","_set_sessionIdChange","_set_robotIdChange","_set_qaFinish","c","_initClass","_applyDecs","shadowOptions","type","Boolean","Number","attribute","o","_","has","_checkInRHS","ChatAgentComponent","LegacyChatAgentComponent","_ChatAgent","_ChatAgent_brand","_handleMessagesUpdate","_handleBusyChange","_handleConversationIdChange","ChatAgent","_init_conversationId","_init_extra_conversationId","_init_alwaysUseNewConversation","_init_extra_alwaysUseNewConversation","_init_messagesUpdate","_init_extra_messagesUpdate","messages","_get_messagesUpdate","_init_busyChangeEvent","_init_extra_busyChangeEvent","busy","_get_busyChangeEvent","_init_conversationIdChangeEvent","_init_extra_conversationIdChangeEvent","_get_conversationIdChangeEvent","createRef","alwaysUseNewConversation","postMessage","content","sendRequest","leadingMessages","url","options","lowLevelSendRequest","newConversation","onMessagesUpdate","onBusyChange","onConversationIdChange","propConversationId","onMessageChunkPush","didMountRef","chatIdRef","busyRef","setConversationId","useState","counterRef","getMessageChunkKey","useCallback","fullMessages","setFullMessages","pushPartialMessage","chunk","prev","last","length","key","delta","partial","legacySendRequest","async","isLowLevel","thisChatId","newConversationError","checkNewConversation","Error","userKey","assistantKey","currentConversationId","Array","isArray","isAssistant","role","request","createSSEStream","URL","location","origin","getBasePath","Promise","race","resolve","setTimeout","stream","_choices","choices","error","console","keep","failed","slice","_len","_key","_len2","_key2","body","JSON","stringify","input","undefined","headers","_ChatAgent2","_set_messagesUpdate","_set_busyChangeEvent","_set_conversationIdChangeEvent","styleTexts","styleText"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/7736.477cde3e.js","mappings":"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","sources":["webpack:///./src/chat-agent/styles.shadow.css","webpack:///./src/chat-view/index.tsx","webpack:///./src/chat-agent/index.tsx"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport {\n ChatViewContext,\n QuickAnswerConfig,\n snippet,\n} from \"./ChatViewContext.js\";\nimport { MessageList } from \"./components/MessageList.js\";\nimport { useChatViewInfo } from \"./hooks/useChatViewInfo.js\";\nimport { SessionList } from \"./components/SessionList.js\";\nimport { SearchInput, SearchInputRef } from \"./components/SearchInput.js\";\nimport \"@next-core/theme\";\nimport \"./host-context.css\";\nimport \"./index.css\";\nimport { commandBrickConf } from \"./ChatViewContext\";\nimport { UseBrickConfOrRenderFunction } from \"@next-core/react-runtime\";\nimport { ChatBody } from \"./ChatService.js\";\n\nconst { defineElement, property, method, event } = createDecorators();\n\ntype InputToolbarBrick = { useBrick: UseBrickConfOrRenderFunction };\n\nexport interface ChatViewRef extends SearchInputRef {\n setConfig(config: Record<string, unknown> | undefined): void;\n setFormData(formData: Record<string, unknown> | undefined): void;\n}\n\nexport interface ChatViewProps {\n agentId: string;\n robotId: string;\n sessionId?: string;\n readonly?: boolean;\n showAvatar?: boolean;\n showSessionList?: boolean;\n showLike?: boolean;\n showShare?: boolean;\n useSpiltWord?: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n snippetList?: snippet[];\n enterInterval?: number;\n debug?: boolean;\n commandBricks?: commandBrickConf;\n answerLanguage?: string;\n inputToolbarBrick?: InputToolbarBrick;\n showToolCalls?: boolean;\n onSessionIdChange: (sessionId: string | undefined) => void;\n onRobotIdChange: (robotId: string | undefined) => void;\n onQaFinish: (sessionId: string | undefined) => void;\n}\n\nexport function LegacyChatViewComponent(\n {\n agentId,\n robotId,\n sessionId,\n showAvatar,\n showSessionList = true,\n readonly = false,\n showLike = true,\n showShare = true,\n quickAnswerConfig,\n snippetList,\n enterInterval,\n debug = false,\n useSpiltWord = false,\n commandBricks,\n answerLanguage,\n inputToolbarBrick,\n showToolCalls,\n onSessionIdChange,\n onRobotIdChange,\n onQaFinish,\n }: ChatViewProps,\n ref: React.Ref<ChatViewRef>\n) {\n const {\n sessionEnd,\n sessionLoading,\n activeSessionId,\n msgEnd,\n msgLoading,\n msgList,\n sessionList,\n loading,\n chatting,\n searchStr,\n toolNames,\n setAgent,\n handleIsLike,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n updateSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n setConfig,\n setFormData,\n } = useChatViewInfo({\n agentId,\n robotId,\n sessionId,\n enterInterval,\n debug,\n answerLanguage,\n useSpiltWord,\n showToolCalls,\n });\n\n useEffect(() => {\n if (activeSessionId) {\n onSessionIdChange(activeSessionId);\n onRobotIdChange(\n sessionList.find((item) => item.conversationId === activeSessionId)\n ?.robotId\n );\n }\n }, [activeSessionId, onRobotIdChange, onSessionIdChange, sessionList]);\n\n useEffect(() => {\n if (!chatting && activeSessionId) {\n // 当此时存在activeSessionId,且chatting是从true变为false时触发,不需要加入activeSessionId的依赖判断\n onQaFinish(activeSessionId);\n }\n }, [chatting]);\n\n const inputRef = useRef<SearchInputRef>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n handleInsertQuestion(value) {\n return inputRef.current?.handleInsertQuestion(value);\n },\n sendMsg(msg) {\n return inputRef.current?.sendMsg(msg);\n },\n setConfig,\n setFormData,\n }),\n [setConfig, setFormData]\n );\n\n return (\n <ChatViewContext.Provider\n value={{\n sessionEnd,\n sessionLoading,\n activeSessionId,\n sessionList,\n msgEnd,\n msgLoading,\n msgList,\n chatting,\n loading,\n searchStr,\n showLike,\n showShare,\n readonly,\n quickAnswerConfig,\n snippetList,\n commandBricks,\n showToolCalls,\n toolNames,\n setAgent,\n handleIsLike,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n updateSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n }}\n >\n <div className=\"chat-view-container\">\n {showSessionList && (\n <div className=\"chat-view-selector\">\n <SessionList />\n </div>\n )}\n <div className=\"chat-view-content\">\n <MessageList showAvatar={showAvatar} />\n {!readonly && (\n <SearchInput inputToolbarBrick={inputToolbarBrick} ref={inputRef} />\n )}\n </div>\n </div>\n </ChatViewContext.Provider>\n );\n}\n\nexport const ChatViewComponent = forwardRef(LegacyChatViewComponent);\n\n/**\n * AI 对话终端\n * @category ai\n */\nexport\n@defineElement(\"ai.chat-view\", {\n // shadow 模式下,会导致 useBrick 样式丢失\n // 如:commandBricks 配置 cmdb-instances.instance-list\n shadowOptions: false,\n})\nclass ChatView extends ReactNextElement {\n /**\n * 当前会话 ID\n */\n @property()\n accessor sessionId: string | undefined;\n\n /**\n * 智能体id\n */\n @property()\n accessor agentId!: string;\n\n /**\n * 机器人id\n */\n @property()\n accessor robotId!: string;\n\n /**\n * 指定智能体回答代码时所使用的语言\n */\n @property()\n accessor answerLanguage: string | undefined;\n\n /**\n * 是否为debug模式\n */\n @property({\n type: Boolean,\n })\n accessor debug: boolean | undefined;\n\n /**\n * 是否展示对话用户头像\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showAvatar: boolean | undefined;\n\n /**\n * 是否展示历史会话信息\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showSessionList: boolean | undefined;\n\n /**\n * 只读模式\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n /**\n * 是否展示点赞能力\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showLike: boolean | undefined;\n\n /**\n * 是否展示分享能力\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showShare: boolean | undefined;\n\n /**\n * 是否开启前端分词\n * @default false\n */\n @property({\n type: Boolean,\n })\n accessor useSpiltWord: boolean | undefined;\n\n /**\n * 输入间隔,设置为 -1 使用新的方式对大段消息进行模拟打字效果节流输出\n *\n * @default 50\n */\n @property({\n type: Number,\n })\n accessor enterInterval: number | undefined;\n\n /**\n * 快速入口列表\n */\n @property({\n attribute: false,\n })\n accessor quickAnswerConfig: QuickAnswerConfig | undefined;\n\n /**\n * 常用语列表\n */\n @property({\n attribute: false,\n })\n accessor snippetList: snippet[] | undefined;\n\n /**\n * 自定义语言配置\n */\n @property({\n attribute: false,\n })\n accessor commandBricks: commandBrickConf | undefined;\n\n /**\n * 输入框工具栏 useBrick\n */\n @property({\n attribute: false,\n })\n accessor inputToolbarBrick: InputToolbarBrick | undefined;\n\n /**\n * 是否显示工具调用过程\n */\n @property({ type: Boolean })\n accessor showToolCalls: boolean | undefined;\n\n /** 设置接口 config\n * @param config 传递给接口的 config 参数\n */\n @method()\n setConfig(config: Record<string, unknown> | undefined): void {\n this.#ref.current?.setConfig(config);\n }\n\n /** 设置接口 formData\n * @param formData 传递给接口的 formData 参数\n */\n @method()\n setFormData(formData: Record<string, unknown> | undefined): void {\n this.#ref.current?.setFormData(formData);\n }\n\n #ref = React.createRef<ChatViewRef>();\n\n /**\n * 会话 ID 变化时触发\n * @detail 当前激活的会话 ID\n */\n @event({ type: \"sessionId.change\" })\n accessor #sessionIdChange!: EventEmitter<string | undefined>;\n\n #handleSessionIdChange = (activeSessionId: string | undefined) => {\n this.#sessionIdChange.emit(activeSessionId);\n };\n\n /**\n * 机器人 ID 变化时触发(切换会话时可能切换对应机器人)\n * @detail 当前会话对应的机器人 ID\n */\n @event({ type: \"robotId.change\" })\n accessor #robotIdChange!: EventEmitter<string | undefined>;\n\n #handleRobotIdChange = (robotId: string | undefined) => {\n this.#robotIdChange.emit(robotId);\n };\n\n /**\n * 一次问答完成时触发(chatting 从 true 变为 false 时)\n * @detail 当前激活的会话 ID\n */\n @event({ type: \"qa.finish\" })\n accessor #qaFinish!: EventEmitter<string | undefined>;\n\n #handleQaFinish = (activeSessionId: string | undefined) => {\n this.#qaFinish.emit(activeSessionId);\n };\n\n /**\n * 调用方法进行提问,将内容插入输入框并发送\n * @param args 包含问题内容的对象\n */\n @method()\n insertQuestion(args: { value: string }): void {\n const { value } = args;\n if (!value) return;\n this.#ref.current?.handleInsertQuestion(value);\n }\n\n /**\n * 外部发起提问,直接发送消息不经过输入框交互\n * @param msg 要发送的消息,可以是字符串或结构化消息体\n */\n @method()\n sendMsg(msg: string | ChatBody): void {\n this.#ref.current?.sendMsg(msg);\n }\n\n render() {\n return (\n <ChatViewComponent\n agentId={this.agentId}\n robotId={this.robotId}\n debug={this.debug}\n sessionId={this.sessionId}\n readonly={this.readonly}\n showAvatar={this.showAvatar}\n showSessionList={this.showSessionList}\n showLike={this.showLike}\n showShare={this.showShare}\n useSpiltWord={this.useSpiltWord}\n quickAnswerConfig={this.quickAnswerConfig}\n snippetList={this.snippetList}\n enterInterval={this.enterInterval}\n commandBricks={this.commandBricks}\n answerLanguage={this.answerLanguage}\n inputToolbarBrick={this.inputToolbarBrick}\n showToolCalls={this.showToolCalls}\n onSessionIdChange={this.#handleSessionIdChange}\n onRobotIdChange={this.#handleRobotIdChange}\n onQaFinish={this.#handleQaFinish}\n ref={this.#ref}\n />\n );\n }\n}\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport { createSSEStream, type Options } from \"@next-core/utils/general\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ChatAgentProps {\n agentId?: string;\n robotId?: string;\n conversationId?: string;\n alwaysUseNewConversation?: boolean;\n}\n\nexport interface Message extends BaseMessage {\n key: number;\n partial?: boolean;\n failed?: boolean;\n}\n\nexport interface BaseMessage {\n role: \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface MessageChunk {\n delta: BaseMessage;\n conversationId?: string;\n key: number;\n partial?: boolean;\n}\n\nexport interface LowLevelMessageChunk {\n choices: LowLevelChoice[];\n}\n\nexport interface LowLevelChoice {\n delta: {\n role: \"assistant\";\n content?: string;\n };\n}\n\nexport const ChatAgentComponent = forwardRef(LegacyChatAgentComponent);\n\n/**\n * 用于与 AI 机器人进行对话的代理构件,处理通信并整合消息。\n * @category ai\n */\nexport\n@defineElement(\"ai.chat-agent\", {\n styleTexts: [styleText],\n})\nclass ChatAgent extends ReactNextElement implements ChatAgentProps {\n /**\n * 智能体 ID\n */\n @property()\n accessor agentId: string | undefined;\n\n /**\n * 机器人 ID\n */\n @property()\n accessor robotId: string | undefined;\n\n /**\n * 会话 ID,用于延续历史会话\n */\n @property()\n accessor conversationId: string | undefined;\n\n /**\n * 是否每次请求都使用新会话,设为 true 时每次发消息不会延续历史会话\n */\n @property()\n accessor alwaysUseNewConversation: boolean | undefined;\n\n /**\n * 发送消息到默认的聊天 API\n * @param content 要发送的消息内容\n */\n @method()\n postMessage(content: string) {\n return this.#ref.current?.postMessage(content);\n }\n\n /**\n * 发送聊天请求到指定的 URL\n * @param leadingMessages 消息内容,可以是字符串或消息对象数组\n * @param url 请求的目标 URL\n * @param options SSE 流请求选项\n */\n @method()\n sendRequest(\n leadingMessages: string | BaseMessage[],\n url: string,\n options: Options<MessageChunk>\n ) {\n return this.#ref.current?.sendRequest(leadingMessages, url, options);\n }\n\n /**\n * 发送底层聊天请求到指定的 URL。接口的请求和响应的数据结构和 OpenAI 聊天接口一致。\n * @param leadingMessages 消息内容,可以是字符串或消息对象数组\n * @param url 请求的目标 URL\n * @param options SSE 流请求选项\n */\n @method()\n lowLevelSendRequest(\n leadingMessages: string | BaseMessage[],\n url: string,\n options: Options<MessageChunk>\n ) {\n return this.#ref.current?.lowLevelSendRequest(\n leadingMessages,\n url,\n options\n );\n }\n\n /**\n * 开启新会话,清空当前消息列表并重置会话状态\n */\n @method()\n newConversation() {\n this.#ref.current?.newConversation();\n }\n\n // @event({ type: \"messageChunk.push\" })\n // accessor #messageChunkPushEvent!: EventEmitter<MessageChunk>;\n\n // #handleMessageChunkPush = (msg: MessageChunk) => {\n // this.#messageChunkPushEvent.emit(msg);\n // };\n\n /**\n * 消息列表更新时触发\n * @detail 当前全部消息列表\n */\n @event({ type: \"messages.update\" })\n accessor #messagesUpdate!: EventEmitter<Message[]>;\n\n #handleMessagesUpdate = (messages: Message[]) => {\n this.#messagesUpdate.emit(messages);\n };\n\n /**\n * 忙碌状态变化时触发,true 表示正在等待 AI 响应,false 表示响应完成\n * @detail 当前忙碌状态\n */\n @event({ type: \"busy.change\" })\n accessor #busyChangeEvent!: EventEmitter<boolean>;\n\n #handleBusyChange = (busy: boolean) => {\n this.#busyChangeEvent.emit(busy);\n };\n\n /**\n * 会话 ID 变化时触发\n * @detail 新的会话 ID,开启新会话时为 null\n */\n @event({ type: \"conversationId.change\" })\n accessor #conversationIdChangeEvent!: EventEmitter<string | null>;\n\n #handleConversationIdChange = (conversationId: string | null) => {\n this.#conversationIdChangeEvent.emit(conversationId);\n };\n\n #ref = createRef<ChatAgentRef>();\n\n render() {\n return (\n <ChatAgentComponent\n ref={this.#ref}\n agentId={this.agentId}\n robotId={this.robotId}\n conversationId={this.conversationId}\n alwaysUseNewConversation={this.alwaysUseNewConversation}\n // onMessageChunkPush={this.#handleMessageChunkPush}\n onMessagesUpdate={this.#handleMessagesUpdate}\n onBusyChange={this.#handleBusyChange}\n onConversationIdChange={this.#handleConversationIdChange}\n />\n );\n }\n}\n\nexport interface ChatAgentComponentProps extends ChatAgentProps {\n onMessageChunkPush?(msg: MessageChunk): void;\n onMessagesUpdate?(messages: Message[]): void;\n onBusyChange?(busy: boolean): void;\n onConversationIdChange?(conversationId: string | null): void;\n}\n\nexport interface ChatAgentRef {\n postMessage(content: string): Promise<string | null>;\n sendRequest(\n leadingMessages: string | BaseMessage[],\n url: string,\n options: Options<MessageChunk>\n ): Promise<string | null>;\n lowLevelSendRequest(\n leadingMessages: string | BaseMessage[],\n url: string,\n options: Options<MessageChunk>\n ): Promise<string | null>;\n newConversation(): void;\n}\n\nexport function LegacyChatAgentComponent(\n {\n agentId,\n robotId,\n conversationId: propConversationId,\n alwaysUseNewConversation,\n onMessageChunkPush,\n onMessagesUpdate,\n onBusyChange,\n onConversationIdChange,\n }: ChatAgentComponentProps,\n ref: React.Ref<ChatAgentRef>\n) {\n const didMountRef = useRef(false);\n const chatIdRef = useRef(1);\n const busyRef = useRef(false);\n const [conversationId, setConversationId] = useState<string | null>(null);\n\n useEffect(() => {\n setConversationId(propConversationId ?? null);\n }, [propConversationId]);\n\n useEffect(() => {\n didMountRef.current && onConversationIdChange?.(conversationId);\n }, [conversationId, onConversationIdChange]);\n\n const counterRef = useRef(0);\n const getMessageChunkKey = useCallback(() => counterRef.current++, []);\n\n const [fullMessages, setFullMessages] = useState<Message[]>([]);\n\n const pushPartialMessage = useCallback(\n (chunk: MessageChunk) => {\n onMessageChunkPush?.(chunk);\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n if (last && last.key === chunk.key) {\n last.content += chunk.delta.content;\n return [...prev];\n }\n if (last?.partial) {\n last.partial = false;\n }\n return [\n ...prev,\n { ...chunk.delta, key: chunk.key, partial: chunk.partial },\n ];\n });\n },\n [onMessageChunkPush]\n );\n\n const legacySendRequest = useCallback(\n async (\n isLowLevel: boolean,\n leadingMessages: string | BaseMessage[],\n url: string,\n options: Options<MessageChunk | LowLevelMessageChunk>\n ) => {\n // Use ref instead of state to handle sync sequential calls.\n if (busyRef.current) {\n return null;\n }\n if (alwaysUseNewConversation || isLowLevel) {\n setFullMessages((prev) => (prev.length === 0 ? prev : []));\n }\n const thisChatId = chatIdRef.current;\n let newConversationError: Error | undefined;\n const checkNewConversation = async () => {\n if (thisChatId !== chatIdRef.current) {\n // istanbul ignore else: should never happen\n if (!newConversationError) {\n newConversationError = new Error(\"New conversation started\");\n }\n throw newConversationError;\n }\n };\n\n const userKey = getMessageChunkKey();\n const assistantKey = getMessageChunkKey();\n let currentConversationId =\n alwaysUseNewConversation || isLowLevel ? null : conversationId;\n\n onBusyChange?.((busyRef.current = true));\n\n try {\n if (Array.isArray(leadingMessages)) {\n for (const msg of leadingMessages) {\n const isAssistant = msg.role === \"assistant\";\n if (isAssistant || msg.role === \"user\") {\n pushPartialMessage?.({\n key: isAssistant ? assistantKey : userKey,\n delta: {\n role: msg.role,\n content: msg.content,\n },\n });\n }\n }\n } else {\n pushPartialMessage?.({\n key: userKey,\n delta: {\n content: leadingMessages,\n role: \"user\",\n },\n });\n }\n const request = createSSEStream<MessageChunk | LowLevelMessageChunk>(\n new URL(url, `${location.origin}${getBasePath()}`).toString(),\n options\n );\n\n // Put a placeholder assistant message to indicate that the assistant\n // is processing if the request takes longer than one second.\n await Promise.race([\n request,\n new Promise((resolve) => setTimeout(resolve, 1000)),\n ]);\n\n await checkNewConversation();\n\n pushPartialMessage?.({\n key: assistantKey,\n delta: {\n content: \"\",\n role: \"assistant\",\n },\n partial: true,\n });\n\n const stream = await request;\n for await (const value of stream) {\n // istanbul ignore next\n // if (process.env.NODE_ENV === \"development\") {\n // // eslint-disable-next-line no-console\n // console.log(\"stream iterated:\", value);\n // }\n\n await checkNewConversation();\n\n if (isLowLevel) {\n const delta = (value as LowLevelMessageChunk).choices?.[0]?.delta;\n if (delta?.content) {\n pushPartialMessage({\n delta: {\n role: delta.role,\n content: delta.content,\n },\n key: assistantKey,\n partial: true,\n });\n }\n } else {\n pushPartialMessage?.({\n delta: (value as MessageChunk).delta,\n key: assistantKey,\n partial: true,\n });\n if (\n !alwaysUseNewConversation &&\n (value as MessageChunk).conversationId &&\n !currentConversationId\n ) {\n setConversationId(\n (currentConversationId = (value as MessageChunk)\n .conversationId!)\n );\n }\n }\n }\n\n await checkNewConversation();\n\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n if (last?.partial) {\n last.partial = false;\n }\n return [...prev];\n });\n } catch (error) {\n if (error && error === newConversationError) {\n throw error;\n }\n\n // eslint-disable-next-line no-console\n console.error(\"stream failed:\", error);\n await checkNewConversation();\n\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n let keep = prev;\n if (last?.key === assistantKey) {\n if (last.content) {\n last.partial = false;\n last.failed = true;\n } else {\n // Ignore the empty assistant message.\n keep = prev.slice(0, -1);\n }\n }\n return [\n ...keep,\n {\n role: \"assistant\",\n content: \"系统错误\",\n key: getMessageChunkKey(),\n failed: true,\n },\n ];\n });\n }\n\n await checkNewConversation();\n\n onBusyChange?.((busyRef.current = false));\n\n return currentConversationId;\n },\n [\n conversationId,\n alwaysUseNewConversation,\n getMessageChunkKey,\n onBusyChange,\n pushPartialMessage,\n ]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n lowLevelSendRequest: (...args) => legacySendRequest(true, ...args),\n sendRequest: (...args) => legacySendRequest(false, ...args),\n postMessage(content: string) {\n return legacySendRequest(\n false,\n content,\n \"api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions\",\n {\n method: \"POST\",\n body: JSON.stringify({\n agentId,\n robotId,\n input: content,\n stream: true,\n conversationId:\n alwaysUseNewConversation || conversationId === null\n ? undefined\n : conversationId,\n }),\n headers: {\n \"giraffe-contract-name\":\n \"easyops.api.aiops_chat.manage.LLMChatProxy\",\n },\n }\n );\n },\n newConversation() {\n chatIdRef.current++;\n setConversationId(null);\n setFullMessages((prev) => (prev.length === 0 ? prev : []));\n if (busyRef.current) {\n onBusyChange?.((busyRef.current = false));\n }\n },\n }),\n [\n legacySendRequest,\n agentId,\n robotId,\n alwaysUseNewConversation,\n conversationId,\n onBusyChange,\n ]\n );\n\n useEffect(() => {\n didMountRef.current && onMessagesUpdate?.(fullMessages);\n }, [fullMessages, onMessagesUpdate]);\n\n useEffect(() => {\n didMountRef.current = true;\n }, []);\n\n return null;\n}\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","toString","defineElement","property","method","event","createDecorators","LegacyChatViewComponent","_ref","ref","agentId","robotId","sessionId","showAvatar","showSessionList","readonly","showLike","showShare","quickAnswerConfig","snippetList","enterInterval","debug","useSpiltWord","commandBricks","answerLanguage","inputToolbarBrick","showToolCalls","onSessionIdChange","onRobotIdChange","onQaFinish","sessionEnd","sessionLoading","activeSessionId","msgEnd","msgLoading","msgList","sessionList","loading","chatting","searchStr","toolNames","setAgent","handleIsLike","handleChat","stopChat","createSession","deleteSession","updateSession","checkSession","setSearchStr","querySessionHistory","setConfig","setFormData","useChatViewInfo","useEffect","_sessionList$find","find","item","conversationId","inputRef","useRef","useImperativeHandle","handleInsertQuestion","value","_inputRef$current","current","sendMsg","msg","_inputRef$current2","React","ChatViewContext","Provider","className","SessionList","MessageList","SearchInput","ChatViewComponent","forwardRef","_ChatView","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_ref2","_R","_ChatView_brand","WeakSet","_handleSessionIdChange","_S","_handleRobotIdChange","_T","_handleQaFinish","ChatView","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_initProto","_init_sessionId","_init_extra_sessionId","_init_agentId","_init_extra_agentId","_init_robotId","_init_extra_robotId","_init_answerLanguage","_init_extra_answerLanguage","_init_debug","_init_extra_debug","_init_showAvatar","_init_extra_showAvatar","_init_showSessionList","_init_extra_showSessionList","_init_readonly","_init_extra_readonly","_init_showLike","_init_extra_showLike","_init_showShare","_init_extra_showShare","_init_useSpiltWord","_init_extra_useSpiltWord","_init_enterInterval","_init_extra_enterInterval","_init_quickAnswerConfig","_init_extra_quickAnswerConfig","_init_snippetList","_init_extra_snippetList","_init_commandBricks","_init_extra_commandBricks","_init_inputToolbarBrick","_init_extra_inputToolbarBrick","_init_showToolCalls","_init_extra_showToolCalls","_init_sessionIdChange","_init_extra_sessionIdChange","_classPrivateGetter","this","_get_sessionIdChange","emit","_init_robotIdChange","_init_extra_robotIdChange","_get_robotIdChange","_init_qaFinish","_init_extra_qaFinish","_get_qaFinish","_classPrivateFieldGet","v","_classPrivateFieldSet","config","_classPrivateFieldGet2","formData","_classPrivateFieldGet3","insertQuestion","args","_classPrivateFieldGet4","_classPrivateFieldGet5","render","_ChatView2","e","_set_sessionIdChange","_set_robotIdChange","_set_qaFinish","c","_initClass","_applyDecs","shadowOptions","type","Boolean","Number","attribute","o","_","has","_checkInRHS","ChatAgentComponent","LegacyChatAgentComponent","_ChatAgent","_ChatAgent_brand","_handleMessagesUpdate","_handleBusyChange","_handleConversationIdChange","ChatAgent","_init_conversationId","_init_extra_conversationId","_init_alwaysUseNewConversation","_init_extra_alwaysUseNewConversation","_init_messagesUpdate","_init_extra_messagesUpdate","messages","_get_messagesUpdate","_init_busyChangeEvent","_init_extra_busyChangeEvent","busy","_get_busyChangeEvent","_init_conversationIdChangeEvent","_init_extra_conversationIdChangeEvent","_get_conversationIdChangeEvent","createRef","alwaysUseNewConversation","postMessage","content","sendRequest","leadingMessages","url","options","lowLevelSendRequest","newConversation","onMessagesUpdate","onBusyChange","onConversationIdChange","propConversationId","onMessageChunkPush","didMountRef","chatIdRef","busyRef","setConversationId","useState","counterRef","getMessageChunkKey","useCallback","fullMessages","setFullMessages","pushPartialMessage","chunk","prev","last","length","key","delta","partial","legacySendRequest","async","isLowLevel","thisChatId","newConversationError","checkNewConversation","Error","userKey","assistantKey","currentConversationId","Array","isArray","isAssistant","role","request","createSSEStream","URL","location","origin","getBasePath","Promise","race","resolve","setTimeout","stream","_choices","choices","error","console","keep","failed","slice","_len","_key","_len2","_key2","body","JSON","stringify","input","undefined","headers","_ChatAgent2","_set_messagesUpdate","_set_busyChangeEvent","_set_conversationIdChangeEvent","styleTexts","styleText"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 9118.5dccb1c4.js.LICENSE.txt */
|
|
2
|
+
"use strict";(globalThis.webpackChunk_next_bricks_ai=globalThis.webpackChunk_next_bricks_ai||[]).push([[9118],{829:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(2559);function o(e,t){return e.get((0,r.A)(e,t))}},918:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(2016);function o(e,t,n){(0,r.A)(e,t),t.set(e,n)}},1369:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(7545);function o(e){var t=function(e){if("object"!=(0,r.A)(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=(0,r.A)(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==(0,r.A)(t)?t:t+""}},2016:(e,t,n)=>{function r(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}n.d(t,{A:()=>r})},2559:(e,t,n)=>{function r(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}n.d(t,{A:()=>r})},4586:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(1369);function o(e,t,n){return(t=(0,r.A)(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},4635:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(2016);function o(e,t){(0,r.A)(e,t),t.add(e)}},5536:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(2559);function o(e,t,n){return n((0,r.A)(e,t))}},6121:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(2559);function o(e,t,n){return e.set((0,r.A)(e,t),n),n}},6330:(e,t,n)=>{function r(e,t,n,r,o,i,s){try{var a=e[i](s),c=a.value}catch(e){return void n(e)}a.done?t(c):Promise.resolve(c).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise((function(o,i){var s=e.apply(t,n);function a(e){r(s,o,i,a,c,"next",e)}function c(e){r(s,o,i,a,c,"throw",e)}a(void 0)}))}}n.d(t,{A:()=>o})},7545:(e,t,n)=>{function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}n.d(t,{A:()=>r})},9118:(e,t,n)=>{n.r(t),n.d(t,{analytics:()=>u,auth:()=>At,checkInstalledApps:()=>o,checkPermissions:()=>gt,flowApi:()=>i,menu:()=>s,messageDispatcher:()=>vt});var r={};n.r(r),n.d(r,{addPathToBlackList:()=>S,authenticate:()=>A,getAuth:()=>y,isBlockedHref:()=>k,isBlockedPath:()=>P,isBlockedUrl:()=>O,isLoggedIn:()=>b,logout:()=>w});var o={};n.r(o),n.d(o,{getCheckedApp:()=>ce,preCheckInstalledApps:()=>se,waitForCheckingApps:()=>ae});var i={};n.r(i),n.d(i,{FLOW_API_PROVIDER:()=>le,clearCollectWidgetContract:()=>Se,clearDebugContract:()=>Ie,collectContract:()=>we,collectDebugContract:()=>Pe,collectWidgetContract:()=>be,getArgsOfFlowApi:()=>Ee,isFlowApiProvider:()=>ke,registerFlowApiProvider:()=>fe});var s={};n.r(s),n.d(s,{fetchMenuById:()=>Qe,getMenuById:()=>Ke});var a={};n.r(a),n.d(a,{onRequest:()=>pt,onResponse:()=>dt,onResponseError:()=>ft});var c={};n.r(c),n.d(c,{create:()=>mt});var u={};n.r(u),n.d(u,{http:()=>a,initialize:()=>ut,pageView:()=>c});var l=n(5188),p=n(6330),d=n(1361),f=function(){var e=(0,p.A)((function*(e,t){return(yield d.http.post("api/gateway/micro_app.permission.ValidatePermissions/api/micro_app/v1/permission/validate",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),h=n(128),m=n(1732);const g={};let v=new Set;function A(e){var t;Object.assign(g,{org:e.org,username:e.username,userInstanceId:e.userInstanceId,loginFrom:e.loginFrom,accessRule:e.accessRule,isAdmin:e.isAdmin,csrfToken:e.csrfToken,license:e.license,accessToken:e.accessToken,userShowValue:e.userShowValue}),v=new Set(null===(t=e.license)||void 0===t?void 0:t.blackList)}function y(){return{...g}}function w(){for(const e of Object.keys(g))g[e]=void 0;E.clear(),C.length=0,M.clear()}function b(){return void 0!==g.username}function S(e){v.add(e)}function P(e){return[...v].some((t=>{const[n,r]=t.split("?"),[o,i]=e.split("?");if(!(0,h.matchPath)(o,{path:n}))return!1;if(!r)return!0;if(!i)return!1;const s=new URLSearchParams(r),a=new URLSearchParams(i);for(const[e,t]of s.entries())if(a.get(e)!==t)return!1;return!0}))}function I(e,t){const n=(0,h.getRuntime)().getFeatureFlags();return(null==n?void 0:n["blacklist-preserve-query-string"])&&t?e+t:e}function O(e){const t="string"==typeof e?(0,m.createLocation)(e):e,n=t.pathname;return"string"==typeof n&&P(I(n,t.search))}function k(e){const t=(0,h.getBasePath)(),n=new URL(e,`${location.origin}${t}`);return!(n.origin!==location.origin||!n.pathname.startsWith(t))&&P(I(n.pathname.substring(t.length-1),n.search))}const E=new Map,C=[],M=new Map;function T(e){if(b()&&!y().isAdmin)return _((0,l.scanPermissionActionsInAny)(e))}async function _(e){const t=e.filter((e=>!C.includes(e)));if(0===t.length)return;const n=[],r=[];for(const e of t){const t=E.get(e);t?n.push(t):r.push(e)}if(r.length>0){const e=(async()=>{try{const e=await f({actions:r},{noAbortOnRouteChange:!0});for(const t of e.actions)M.set(t.action,t.authorizationStatus),"undefined"===t.authorizationStatus&&console.error(`Undefined permission action: "${t.action}"`)}catch(e){console.error("Pre-check permissions failed",e)}finally{C.push(...r)}})();for(const t of r)E.set(t,e);n.push(e)}await Promise.all(n)}var j=n(4635),N=n(918),$=n(5536),R=n(2559),L=n(6121),D=n(829),B=n(563),W=new WeakMap,x=new WeakMap,U=new WeakMap,F=new WeakMap,q=new WeakMap,z=new WeakMap,H=new WeakMap,G=new WeakSet;class J{constructor(e){(0,j.A)(this,G),(0,N.A)(this,W,void 0),(0,N.A)(this,x,void 0),(0,N.A)(this,U,[]),(0,N.A)(this,F,new Set),(0,N.A)(this,q,new Set),(0,N.A)(this,z,0),(0,N.A)(this,H,!1),(0,L.A)(W,this,e)}send(e){(0,D.A)(x,this)||(0,L.A)(x,this,(0,R.A)(G,this,V).call(this));const t=JSON.stringify(e);(0,D.A)(x,this).readyState===WebSocket.OPEN?(0,D.A)(x,this).send(t):(0,D.A)(U,this).push(t)}onMessage(e){return(0,D.A)(F,this).add(e),()=>{(0,D.A)(F,this).delete(e)}}onClose(e){return(0,D.A)(q,this).add(e),()=>{(0,D.A)(q,this).delete(e)}}reset(){(0,D.A)(U,this).length=0,(0,D.A)(F,this).clear(),(0,D.A)(q,this).clear()}close(){var e;(0,L.A)(H,this,!0),(null===(e=(0,D.A)(x,this))||void 0===e?void 0:e.readyState)===WebSocket.OPEN&&(0,D.A)(x,this).close()}}function V(){console.log("WebSocket connecting ...");const e=new WebSocket((0,D.A)(W,this));let t;return e.addEventListener("open",(n=>{console.log("WebSocket open:",n),t=setTimeout((()=>{t=void 0,(0,L.A)(z,this,0)}),1e3);for(const t of(0,D.A)(U,this))e.send(t);(0,D.A)(U,this).length=0})),e.addEventListener("close",(e=>{(0,D.A)(H,this)||(void 0!==t&&clearTimeout(t),console.log("WebSocket close:",e),1e3!==e.code&&(0,R.A)(G,this,Y).call(this))})),e.addEventListener("error",(e=>{console.error("WebSocket error:",e)})),e.addEventListener("message",(e=>{const t=JSON.parse(e.data);for(const e of(0,D.A)(F,this))e(t)})),e}function Y(){if((0,D.A)(z,this)>=5){console.error("WebSocket connect retry limit exceeded");for(const e of(0,D.A)(q,this))e();return}const e=1e3*Math.pow(2,(0,D.A)(z,this));console.log("WebSocket will reconnect after %d seconds",e/1e3),setTimeout((()=>{var e;(0,L.A)(z,this,(e=(0,D.A)(z,this),++e)),(0,L.A)(x,this,(0,R.A)(G,this,V).call(this))}),e)}var K=new WeakMap,Q=new WeakMap,X=new WeakMap,Z=new WeakSet;function ee(e){if(!(0,D.A)(K,e)){const t=`${"https:"===location.protocol?"wss:":"ws:"}//${window.location.host}${(0,h.getBasePath)()}api/websocket_service/v1/ws`;(0,L.A)(K,e,new J(t))}return(0,D.A)(K,e)}function te(e,t,n,r){const o=(0,D.A)(Q,this)[e].get(r);if(o)return o;const i={event:"sub"===e?"TOPIC.SUB":"TOPIC.UNSUB",payload:n},s=new Promise(((t,r)=>{const o=ne(n),s=(0,$.A)(Z,this,ee).onMessage((n=>{const i=n.event===("sub"===e?"TOPIC.SUB_SUCCESS":"TOPIC.UNSUB_SUCCESS"),c=n.event===("sub"===e?"TOPIC.SUB_FAILED":"TOPIC.UNSUB_FAILED");(i||c)&&o===ne(n.payload)&&((i?t:r)(n),s(),a())})),a=(0,$.A)(Z,this,ee).onClose((()=>{r({retryCount:5}),s(),a()}));(0,$.A)(Z,this,ee).send(i)}));return"sub"===e&&(0,D.A)(X,this).set(t,r),(0,D.A)(Q,this)[e].set(r,s),s}function ne(e){const{system:t,topic:n}=e;return JSON.stringify({system:t,topic:n})}var re=function(){var e=(0,p.A)((function*(e,t){return(yield d.http.post("api/gateway/micro_app_standalone.runtime.SearchMicroAppStandalone/api/v1/micro_app_standalone/search",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}();const oe=new Map,ie=new Map;function se(e,t){if(window.STANDALONE_MICRO_APPS&&!window.NO_AUTH_GUARD){const n=function(e){var t;const n={usedArgs:new Set},{customTemplates:r,menus:o}=null!==(t=e.meta)&&void 0!==t?t:{};return(0,l.traverseStoryboardExpressions)([e.routes,r,o],((e,t)=>{(0,l.collectInstalledAppsHasUsage)(n,e,t)}),"INSTALLED_APPS"),[...n.usedArgs]}(e),r=[];for(const e of n)oe.has(e)||t(e)||r.push(e);if(0===r.length)return;const o=re({query:{appId:{$in:r}},fields:["appId","currentVersion","installStatus"]},{noAbortOnRouteChange:!0}).catch((e=>{console.error("Get off site standalone micro-apps failed",e)}));for(const e of r)oe.set(e,o.then((t=>{var n;const r=null==t||null===(n=t.list)||void 0===n?void 0:n.find((t=>t.appId===e)),o=r?{...r,id:e}:void 0;return ie.set(e,o),o})))}}async function ae(e){await Promise.all(e.map((e=>oe.get(e))))}function ce(e){if(window.STANDALONE_MICRO_APPS)return ie.get(e)}var ue=n(410);const le="core.provider-flow-api";function pe(e,t){return null==e?void 0:e.some((e=>e.source===t))}async function de(e){let{url:t,originalUri:n,method:r="GET",responseWrapper:o=!0,ext_fields:i,request:s,isFileType:a,stream:c}=e;const u=["get","delete","head"].includes(r.toLowerCase()),l=a?{responseType:"blob"}:{};let p;for(var f=arguments.length,h=new Array(f>1?f-1:0),m=1;m<f;m++)h[m-1]=arguments[m];if(u){var g,v,A,y;let e,o;var w,b;if(n&&"object"===(null==s?void 0:s.type)&&(null!==(g=null===(v=n.match(/:([^/]+)/g))||void 0===v?void 0:v.length)&&void 0!==g?g:0)===(null!==(A=null===(y=s.fields)||void 0===y?void 0:y.length)&&void 0!==A?A:0)?[o]=h:[e,o]=h,c)return await(0,ue.createSSEStream)(d.http.getUrlWithParams(t,e),{...l,...o,method:r,headers:Object.fromEntries([...new Headers(null!==(w=null===(b=o)||void 0===b?void 0:b.headers)&&void 0!==w?w:{}).entries()])});p=await d.http.simpleRequest(r,t,{params:e,...l,...o})}else{const e=function(e){if("object"!==(null==e?void 0:e.type))return!1;const t=e=>!(0,B.isEmpty)(e)&&e.some((e=>["file","file[]"].includes(e.type)||t(e.fields)));return t(e.fields)}(s),n=function(e){const t=pe(e,"query");for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];if(t){if(pe(e,"body")){const[e,t,n]=r;return{data:e,options:{params:t,...n}}}const[t,n]=r;return{data:{},options:{params:t,...n}}}const[i,s]=r;return{data:i,options:s}}(i,...h),o=e?function(e){if(e instanceof FormData)return e;const t=new FormData;for(const[n,r]of Object.entries(e))Array.isArray(r)?r.forEach((e=>{t.append(n,e)})):!(0,B.isObject)(r)||r instanceof Blob||r instanceof Date?t.append(n,r):Object.entries(r).forEach((e=>{let[r,o]=e;t.append(`${n}[${r}]`,o)}));return t}(n.data):n.data;if(c){var S;const{body:e,headers:i}=d.http.getBodyAndHeaders(o,null===(S=n.options)||void 0===S?void 0:S.headers);return await(0,ue.createSSEStream)(t,{...l,...n.options,method:r,headers:Object.fromEntries([...new Headers(null!=i?i:{}).entries()]),body:e})}p=await d.http.requestWithBody(r,t,o,{...l,...n.options})}return!a&&o?p.data:p}function fe(){customElements.define(le,(0,ue.createProviderClass)(de))}var he=n(8679);const me=async(e,t)=>(await d.http.post("api/gateway/next_builder.contract_center.BatchSearchContract/api/v1/contract/batch_search",e,t)).data,ge=new Map,ve=new Map,Ae=new Map,ye=(e,t)=>{null==e||e.forEach((e=>{t.set(`${e.namespaceId}.${e.name}`,e)}))};function we(e){ye(e,ge)}function be(e){ye(e,ve)}function Se(){ve.clear()}function Pe(e){ye(e,Ae)}function Ie(){Ae.clear()}const Oe=new Map;function ke(e){return e.includes("@")}async function Ee(e,t,n,r){if(!e.includes(":"))throw new Error(`You're using legacy Custom API "${e}" which is dropped in v3, please use Flow API instead`);const o=await async function(e){const[t,n]=e.split("@"),[r,o]=n.split(":"),i=function(e){return ge.get(e)||ve.get(e)||Ae.get(e)}(`${t}.${r}`);if(i)return{name:i.name,namespace:i.namespaceId,serviceName:i.serviceName,version:i.version,contract:{endpoint:i.endpoint,response:i.response,request:i.request}};let s=Oe.get(e);return s||(s=async function(e,t,n){let r;const o=`${e}@${t}`;let i;try{const{list:e}=await me({contract:[{fullContractName:o,version:n}]});r=e[0]}catch(e){if((0,h.isUnauthenticatedError)(e))throw e;i=e}return r?{name:r.name,namespace:r.namespaceId,serviceName:r.serviceName,version:r.version,contract:{endpoint:r.endpoint,response:r.response,request:r.request}}:(console.error(`Failed to fetch Flow API definition for "${o}:${n}"`,null!=i?i:"Contract not found"),null)}(t,r,o),Oe.set(e,s)),s}(e);if(!o)throw new Ce(`Flow API not found: "${e}"`);const i=function(e,t){var n,r;const o="string"==typeof t.contract?he.safeLoad(t.contract,{schema:he.JSON_SCHEMA,json:!0}):t.contract,{uri:i,method:s="GET",ext_fields:a}=null!==(n=null==o?void 0:o.endpoint)&&void 0!==n?n:{},c=!(null==o||!o.response)&&!1!==o.response.wrapper;if(!i)throw new Error(`Missing endpoint.uri in contract of provider "${e}"`);return{uri:i,method:"list"===s.toLowerCase()?"get":s,ext_fields:a,name:t.name,namespace:t.namespace,serviceName:t.serviceName,version:t.version,isFileType:"file"===(null==o||null===(r=o.response)||void 0===r?void 0:r.type),responseWrapper:c,request:null==o?void 0:o.request}}(e,o);return function(e,t,n,r){const{uri:o,method:i,ext_fields:s,responseWrapper:a,isFileType:c,request:u}=e,l="saveAs"===n;let p,d=t;l&&(Array.isArray(t)?(d=t.slice(),p=d.shift()):p=t.filename);const{url:f,args:h}=function(e,t){const{uri:n,name:r,namespace:o,serviceName:i,version:s,method:a="GET",request:c,ext_fields:u}=e,l=s?"logic.api.gateway"===i||null!=i&&i.startsWith("logic.api.gateway.")?"":i?`api/gateway/${i}`:`api/gateway/${o}.${r}@${s}`:`api/gateway/api_service.${o}.${r}`;let p,d=[];if(Array.isArray(t))d=t.slice(),p=n.replace(/:([^/]+)/g,(()=>d.shift()));else{const e={...t.params};if(p=n.replace(/:([^/]+)/g,((t,n)=>{if((0,ue.hasOwnProperty)(e,n)){const t=e[n];return delete e[n],t}throw new Error(`Missing required param: "${n}"`)})),["get","delete","head"].includes(a.toLowerCase())){var f,h,m,g;"object"===(null==c?void 0:c.type)&&(null!==(f=null===(h=n.match(/:([^/]+)/g))||void 0===h?void 0:h.length)&&void 0!==f?f:0)===(null!==(m=null===(g=c.fields)||void 0===g?void 0:g.length)&&void 0!==m?m:0)||d.push(e)}else{const t=null==u?void 0:u.find((e=>"body"===e.source));if(t){let n;t.name&&(0,ue.hasOwnProperty)(e,t.name)&&(n=e[t.name],delete e[t.name]),d.push(n)}const n=null==u?void 0:u.find((e=>"query"===e.source));if(n){let t;n.name&&(0,ue.hasOwnProperty)(e,n.name)&&(t=e[n.name],delete e[n.name]),d.push(t)}t||n||d.push(e)}t.options&&d.push(t.options)}return{url:l?l+p:p.replace(/^\//,""),args:d}}(e,d);return[...l?[p]:[],{url:f,originalUri:o,method:i,ext_fields:s,responseWrapper:a,request:u,isFileType:c,stream:r},...h]}(i,t,n,r)}class Ce extends Error{constructor(e){super(e),this.name="FlowApiNotFoundError",Error.captureStackTrace&&Error.captureStackTrace(this,Ce)}}var Me=function(){var e=(0,p.A)((function*(e,t,n){return(yield d.http.post("api/gateway/cmdb.instance.PostSearch/object/".concat(e,"/instance/_search"),t,n)).data}));return function(t,n,r){return e.apply(this,arguments)}}(),Te=n(9740),_e=function(){var e=(0,p.A)((function*(e,t,n){return(yield d.http.get("api/gateway/micro_app.installed_micro_app.GetMenusInfo/api/v1/micro-app/menus/".concat(e),(0,Te.A)((0,Te.A)({},n),{},{params:t}))).data}));return function(t,n,r){return e.apply(this,arguments)}}(),je=n(7177);const Ne=Symbol("appId"),$e=Symbol("menuI18nNamespace"),Re=Symbol("overrideApp");async function Le(e,t,n){const r=e.find((e=>"inject"!==e.type));if(!r)return;const o=[],i=new Map,s=new WeakMap;for(const t of e)if(t.i18n){const e=`menu/${t.menuId}~${t.app[0].appId}+${t.instanceId}`;Object.entries(t.i18n).forEach((t=>{let[n,r]=t;je.i18n.addResourceBundle(n,e,r)})),s.set(t,e)}await Promise.all(e.map((e=>async function(e,t,n,r){if(e.dynamicItems&&e.itemsResolve){const i=e.app[0].appId,s={...t,pendingPermissionsPreCheck:[...t.pendingPermissionsPreCheck,T(e.itemsResolve)]};var o;i!==t.app.id&&(s.overrideApp=window.STANDALONE_MICRO_APPS?e.overrideApp:null===(o=r.getStoryboardByAppId(i))||void 0===o?void 0:o.app,s.appendI18nNamespace=n.get(e));const a=await r.resolveData({transform:"items",...e.itemsResolve},s);e.items=a.items}}(e,t,s,n))));for(const t of e){var a;if(null!==(a=t.items)&&void 0!==a&&a.length)if("inject"===t.type&&t.injectMenuGroupId){let e=i.get(t.injectMenuGroupId);e||(e=[],i.set(t.injectMenuGroupId,e)),e.push(t)}else o.push(t)}return{...r,items:o.flatMap((e=>De(e.items,e,i,s))),[$e]:s.get(r),[Re]:r.overrideApp}}function De(e,t,n,r){return null==e?void 0:e.map((e=>{var o;const i=e.groupId&&n.get(e.groupId);return i&&n.delete(e.groupId),{...e,children:(null!==(o=De(e.children,t,n,r))&&void 0!==o?o:[]).concat(i?i.flatMap((e=>De(e.items,e,n,r))):[]),[Ne]:t.app[0].appId,[$e]:r.get(t),[Re]:t.overrideApp}}))}function Be(e){e.items=We(e.items)}function We(e){return function(e){return(0,B.sortBy)(e,(e=>{var t;return null!==(t=e.sort)&&void 0!==t?t:-1/0}))}(e).map((e=>({...e,children:We(e.children)})))}var xe=n(9933),Ue=n(1321);function Fe(e,t,n,r){if("titleDataSource"in e&&(0,ue.isObject)(e.titleDataSource)&&Object.entries(e.titleDataSource).every((e=>{let[,t]=e;return null===t||""===t}))&&delete e.titleDataSource,"if"in e&&null===e.if&&delete e.if,"to"in e&&e.to&&!(0,Ue.isEvaluable)(e.to)){const t=xe.pipes.yaml(e.to);(0,ue.isObject)(t)&&["pathname","search","hash"].some((e=>(0,ue.hasOwnProperty)(t,e)))&&(e.to=t)}let o=n;if(t!==n.app.id){var i;const s=window.STANDALONE_MICRO_APPS?e[Re]:null===(i=r.getStoryboardByAppId(t))||void 0===i?void 0:i.app;o={...n,overrideApp:s,appendI18nNamespace:e[$e]}}return r.asyncComputeRealValue(e,o,{ignoreSymbols:!0})}function qe(e,t,n){return Promise.all(e.map((async e=>{let{children:r,...o}=e;const[i,s]=await Promise.all([Fe(o,o[Ne],t,n),r&&await qe(r,t,n)]);return{...i,children:s}})))}var ze=function(){var e=(0,p.A)((function*(e,t,n,r){return(yield d.http.get("api/gateway/cmdb.instance.GetDetail/object/".concat(e,"/instance/").concat(t),(0,Te.A)((0,Te.A)({},r),{},{params:n}))).data}));return function(t,n,r,o){return e.apply(this,arguments)}}();const He=new Map;async function Ge(e){if(e.title||(0,B.isEmpty)(e.titleDataSource))return e.title;const t=JSON.stringify(e.titleDataSource),n=He.get(t);if(void 0!==n)return n;const{objectId:r,instanceId:o,attributeId:i}=e.titleDataSource,s=null!=i?i:"name",a=await ze(r,o,{fields:s});let c;if("#showKey"===i&&Array.isArray(a[s])){const[e,...t]=a[s];c=t.length>0?`${e}(${t.join(",")})`:String(e)}else c=String(a[s]);return He.set(t,c),c}const Je=new Map,Ve=new Map;function Ye(e){return null==e?void 0:e.filter(h.checkIfOfComputed).map((e=>{const t=Ye(e.children);return"group"===e.type?{type:"group",title:e.text,childLayout:e.childLayout,items:t,groupId:e.groupId,groupFrom:e.groupFrom}:null!=t&&t.length?{type:"subMenu",childLayout:e.childLayout,title:e.text,icon:e.icon,items:t,defaultExpanded:e.defaultExpanded}:function(e){return e.href?k(e.href):!!e.to&&O(e.to)}(e)?null:(0,B.omit)(e,["type","items","children"])})).filter(Boolean)}function Ke(e){return Ve.get(e)}function Qe(e,t,n){let r=Je.get(e);return r||(r=async function(e,t,n){const r=window.STANDALONE_MICRO_APPS?function(e,t,n){var r,o,i,s;const a=n.getStoryboardByAppId(t);return(null!==(r=null!==(o=null===(i=a.meta)||void 0===i?void 0:i.injectMenus)&&void 0!==o?o:null===(s=a.meta)||void 0===s?void 0:s.menus)&&void 0!==r?r:[]).filter((t=>t.menuId===e)).map((e=>{var n;return{...e,...null!==(n=e.app)&&void 0!==n&&null!==(n=n[0])&&void 0!==n&&n.appId?{}:{app:[{appId:t}]}}}))}(e,t.app.id,n):t.flags["three-level-menu-layout"]?(await _e(e,{menuObjectId:"EASYOPS_STORYBOARD_MENU"})).menus:(await Me("EASYOPS_STORYBOARD_MENU",{page:1,page_size:200,fields:{menuId:!0,title:!0,icon:!0,link:!0,titleDataSource:!0,defaultCollapsed:!0,defaultCollapsedBreakpoint:!0,type:!0,injectMenuGroupId:!0,dynamicItems:!0,itemsResolve:!0,items:!0,i18n:!0,"items.children":!0,"app.appId":!0},query:{menuId:{$eq:e},app:{$size:{$gt:0}}}})).list,o=await Le(r,t,n);if(!o)throw new Error(`Menu not found: ${e}`);Be(o);const{items:i,app:s,...a}=o,c={...t,pendingPermissionsPreCheck:[...t.pendingPermissionsPreCheck,T([i,a])]};delete c.tplStateStoreId,delete c.forEachItem,delete c.forEachIndex,delete c.forEachSize;const u=s[0].appId,[l,p]=await Promise.all([Fe(a,u,c,n),qe(i,c,n)]),d={title:await Ge(l),...(0,B.pick)(l,["icon","link","defaultCollapsed","defaultCollapsedBreakpoint"]),menuItems:Ye(p)};Ve.set(e,d)}(e,t,n)),r}const Xe=[];let Ze=null;const et={maxWaitingTime:5e3,maxLoggedEvents:10};function tt(){clearTimeout(Ze),Xe.length>et.maxLoggedEvents?nt():Ze=setTimeout(nt,et.maxWaitingTime)}function nt(){if(0===Xe.length)return;const e={model:"easyops.FRONTEND_STAT",columns:["_ver","st","et","lt","size","time","traceId","code","duration","page","uid","username","api","type","msg","status","pageId","route","apiCount","maxApiTimeCost","apiSizeCost","pageTitle"],data:Xe.splice(0,et.maxLoggedEvents)};var t;!function(e,t){const n=new Blob([JSON.stringify(t)],{type:"application/json"});window.navigator.sendBeacon(e,n)}(et.api,e),Xe.length&&(t=nt,(window.requestIdleCallback||window.requestAnimationFrame||(e=>setTimeout(e,17)))(t))}function rt(){window.addEventListener("beforeunload",nt,!1)}let ot,it=!1,st=null,at=!0;const ct=[];function ut(e){it||(it=!0,ot||(ot=function(e,t){return Object.assign(et,{...t,api:e}),{sendOnExit:rt,emit:tt}}(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),ot.sendOnExit()))}const lt=Symbol("HttpAnalytics");function pt(e){const t=Math.round(performance.now()),n=Date.now();return e[lt]={st:n,time:Math.round(n/1e3),perfStartTime:t},e}function dt(e,t){return ht(!1,e,t)}function ft(e,t){return ht(!0,e,t)}function ht(e,t,n){const r=Math.round(performance.now()),o=Date.now(),{[lt]:i,url:s}=n;if(i&&!(e&&t instanceof d.HttpAbortError)){delete n[lt];const{st:c,time:u,perfStartTime:l}=i,{userInstanceId:p,username:f}=y();let h,m,g,v,A,w,b;if(e){const e=t instanceof d.HttpResponseError;(e||t instanceof d.HttpParseError)&&(({status:A,headers:w}=t.response),e&&(b=t.responseJson))}else({status:A,data:b,headers:w}=t);(0,ue.isObject)(b)&&({code:h,message:m}=b),w instanceof Headers&&(g=w.get("x-b3-traceid"),v=w.get("content-length")),a={st:c,_ver:c,uid:p,username:f,time:u,et:o,page:location.href,duration:r-l,api:s,type:"api",code:null!=h?h:-1,msg:null!=m?m:"",status:A,traceId:null!=g?g:"",size:v?Number(v):-1},st?Xe.push({...a,type:"apiRequest",...st}):ct.push(a)}var a;return e?Promise.reject(t):t}function mt(){const e=Math.round(performance.now()),t=Date.now();return ct.length=0,st=null,function(n){let{status:r,path:o,pageTitle:i}=n;if("ok"!==r)return Xe.push(...ct),void(ct.length=0);const s=Math.round(performance.now())-e,a=Date.now(),{username:c}=y();(function(e){const t=function(){const e=URL.createObjectURL(new Blob([]));let t=e.substring(e.lastIndexOf("/")+1);return URL.revokeObjectURL(e),at&&(t="88-"+t,at=!1),t}(),{lt:n,route:r}=e;st={lt:n,route:r,pageId:t},Xe.push({...e,pageId:t,apiCount:ct.length,maxApiTimeCost:Math.max(0,...ct.map((e=>e.duration))),size:ct.map((e=>e.size)).filter((e=>e>0)).reduce(((e,t)=>e+t),0)});for(const e of ct)Xe.push({...e,...st});ct.length=0,ot.emit()})({type:"page",page:location.href,_ver:t,time:Math.round(t/1e3),st:t,et:a,lt:s,pageTitle:i,username:c,route:o}),window.dispatchEvent(new CustomEvent("route.render",{detail:{renderTime:s}}))}}const gt=Object.freeze({checkPermissions:function(){if(!b())return!1;if(y().isAdmin)return!0;for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(const e of t)switch(M.get(e)){case"unauthorized":case"undefined":return!1;case void 0:return console.error(`Un-checked permission action: "${e}", please make sure the permission to check is defined in permissionsPreCheck.`),!1}return!0},preCheckPermissions:function(e){if(b()&&!y().isAdmin)return _((0,l.scanPermissionActionsInStoryboard)(e))},preCheckPermissionsForBrickOrRoute:async function(e,t){if(b()&&!y().isAdmin&&Array.isArray(e.permissionsPreCheck))return _(await t(e.permissionsPreCheck))}}),vt=new class{constructor(){(0,j.A)(this,Z),(0,N.A)(this,K,void 0),(0,N.A)(this,Q,{sub:new Map,unsub:new Map}),(0,N.A)(this,X,new Map)}subscribe(e,t){const n=JSON.stringify(t);return(0,R.A)(Z,this,te).call(this,"sub",e,t,n)}unsubscribe(e){const t=(0,D.A)(X,this).get(e);if(!t){const t=`The message channel to unsubscribe "${e}" is not found`;return console.error(t),Promise.reject(new Error(t))}const n=JSON.parse(t),r=(0,R.A)(Z,this,te).call(this,"unsub",e,n,t);return(0,D.A)(Q,this).sub.delete(t),r.then((()=>{(0,D.A)(X,this).delete(e)})),r}onMessage(e,t){let n=(0,D.A)(X,this).get(e),r=!1;return(0,$.A)(Z,this,ee).onMessage((o=>{n||(n=(0,D.A)(X,this).get(e)),n?"MESSAGE.PUSH"===o.event&&function(e,t){const n=JSON.parse(e);return n.system===t.system&&(n.topic===t.topic||"string"==typeof n.topic&&n.topic.includes("*")&&new RegExp(`^${n.topic.replace(/([^*]*)\*([^*]*)/g,((e,t,n)=>`${(0,B.escapeRegExp)(t)}[^/]*${(0,B.escapeRegExp)(n)}`))}$`).test(t.topic))}(n,o.payload)&&t(o.payload.message):r||(console.error(`Message channel: "${e}" not found`),r=!0)}))}onClose(e){return(0,$.A)(Z,this,ee).onClose(e)}reset(){var e;(0,D.A)(Q,this).sub.clear(),(0,D.A)(Q,this).unsub.clear(),(0,D.A)(X,this).clear(),null===(e=(0,D.A)(K,this))||void 0===e||e.reset()}},At=function(){const e=(0,h.getV2RuntimeFromDll)();if(e)return Object.freeze((0,B.pick)(e,["authenticate","getAuth","isLoggedIn","logout","addPathToBlackList","isBlockedPath","isBlockedUrl","isBlockedHref"]))}()||r},9740:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(4586);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){(0,r.A)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}}}]);
|
|
3
|
+
//# sourceMappingURL=9118.5dccb1c4.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**! @contract easyops.api.cmdb.instance.GetDetail@1.0.0 */
|
|
2
|
+
|
|
3
|
+
/**! @contract easyops.api.cmdb.instance.PostSearch@1.1.0 */
|
|
4
|
+
|
|
5
|
+
/**! @contract easyops.api.micro_app.installed_micro_app.GetMenusInfo@1.0.0 */
|
|
6
|
+
|
|
7
|
+
/**! @contract easyops.api.micro_app.permission.ValidatePermissions@1.0.0 */
|
|
8
|
+
|
|
9
|
+
/**! @contract easyops.api.micro_app_standalone.runtime.SearchMicroAppStandalone@1.0.1 */
|
|
10
|
+
|
|
11
|
+
/**! @contract easyops.api.next_builder.contract_center.BatchSearchContract@1.0.0 */
|