@next-bricks/nav 1.18.1 → 1.18.3
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 +24 -24
- package/dist/chunks/{2133.b61baf6d.js → 2133.48a1e7d3.js} +2 -2
- package/dist/chunks/{2133.b61baf6d.js.map → 2133.48a1e7d3.js.map} +1 -1
- package/dist/chunks/{2248.4d4ba0c4.js → 2248.d579ad74.js} +2 -2
- package/dist/chunks/2248.d579ad74.js.map +1 -0
- package/dist/chunks/{2252.c6384bfa.js → 2252.72f7a507.js} +3 -3
- package/dist/chunks/{2252.c6384bfa.js.map → 2252.72f7a507.js.map} +1 -1
- package/dist/chunks/4185.3f812e9a.js +3 -0
- package/dist/chunks/4185.3f812e9a.js.map +1 -0
- package/dist/chunks/{4837.3de45a75.js → 4837.fc4cc042.js} +2 -2
- package/dist/chunks/{4837.3de45a75.js.map → 4837.fc4cc042.js.map} +1 -1
- package/dist/chunks/{6595.a094555b.js → 6595.9dea0534.js} +2 -2
- package/dist/chunks/{6595.a094555b.js.map → 6595.9dea0534.js.map} +1 -1
- package/dist/chunks/{7218.54273ee5.js → 7218.45a904e5.js} +2 -2
- package/dist/chunks/{7218.54273ee5.js.map → 7218.45a904e5.js.map} +1 -1
- package/dist/chunks/{8518.e5f62114.js → 8518.bf687bce.js} +2 -2
- package/dist/chunks/{8518.e5f62114.js.map → 8518.bf687bce.js.map} +1 -1
- package/dist/chunks/{9149.1577ab1e.js → 9149.44bca5d8.js} +2 -2
- package/dist/chunks/{9149.1577ab1e.js.map → 9149.44bca5d8.js.map} +1 -1
- package/dist/chunks/{easyops-navbar-alerts.c7394ca5.js → easyops-navbar-alerts.f707821b.js} +2 -2
- package/dist/chunks/{easyops-navbar-alerts.c7394ca5.js.map → easyops-navbar-alerts.f707821b.js.map} +1 -1
- package/dist/chunks/{eo-directory-tree.8fe2c82b.js → eo-directory-tree.eaa7e33f.js} +3 -3
- package/dist/chunks/{eo-directory-tree.8fe2c82b.js.map → eo-directory-tree.eaa7e33f.js.map} +1 -1
- package/dist/chunks/{eo-directory.9ccef6ae.js → eo-directory.e324f557.js} +3 -3
- package/dist/chunks/{eo-directory.9ccef6ae.js.map → eo-directory.e324f557.js.map} +1 -1
- package/dist/chunks/{eo-frame-breadcrumb.84094125.js → eo-frame-breadcrumb.5ba8a907.js} +2 -2
- package/dist/chunks/{eo-frame-breadcrumb.84094125.js.map → eo-frame-breadcrumb.5ba8a907.js.map} +1 -1
- package/dist/chunks/{eo-launchpad-button-v2.8514695c.js → eo-launchpad-button-v2.6f945782.js} +3 -3
- package/dist/chunks/{eo-launchpad-button-v2.8514695c.js.map → eo-launchpad-button-v2.6f945782.js.map} +1 -1
- package/dist/chunks/{eo-nav-menu.fcd39b48.js → eo-nav-menu.cfbfcfa0.js} +2 -2
- package/dist/chunks/{eo-nav-menu.fcd39b48.js.map → eo-nav-menu.cfbfcfa0.js.map} +1 -1
- package/dist/chunks/{eo-sidebar-menu-group.6cfc80fa.js → eo-sidebar-menu-group.f6594305.js} +3 -3
- package/dist/chunks/{eo-sidebar-menu-group.6cfc80fa.js.map → eo-sidebar-menu-group.f6594305.js.map} +1 -1
- package/dist/chunks/{eo-sidebar-menu-submenu.d049eded.js → eo-sidebar-menu-submenu.a5d00cb5.js} +3 -3
- package/dist/chunks/{eo-sidebar-menu-submenu.d049eded.js.map → eo-sidebar-menu-submenu.a5d00cb5.js.map} +1 -1
- package/dist/chunks/{eo-sidebar-menu.dd865a26.js → eo-sidebar-menu.89233ef9.js} +2 -2
- package/dist/chunks/{eo-sidebar-menu.dd865a26.js.map → eo-sidebar-menu.89233ef9.js.map} +1 -1
- package/dist/chunks/{eo-sidebar-sub-menu.dbeaffcf.js → eo-sidebar-sub-menu.ebac5ce4.js} +3 -3
- package/dist/chunks/{eo-sidebar-sub-menu.dbeaffcf.js.map → eo-sidebar-sub-menu.ebac5ce4.js.map} +1 -1
- package/dist/chunks/{eo-sidebar.8cf721fe.js → eo-sidebar.d72fde30.js} +3 -3
- package/dist/chunks/{eo-sidebar.8cf721fe.js.map → eo-sidebar.d72fde30.js.map} +1 -1
- package/dist/chunks/get-menu-config-options.7ee034f7.js +2 -0
- package/dist/chunks/get-menu-config-options.7ee034f7.js.map +1 -0
- package/dist/chunks/get-menu-config-tree.2e388834.js +2 -0
- package/dist/chunks/get-menu-config-tree.2e388834.js.map +1 -0
- package/dist/chunks/{launchpad-config.39e1639c.js → launchpad-config.addcb10e.js} +3 -3
- package/dist/chunks/{launchpad-config.39e1639c.js.map → launchpad-config.addcb10e.js.map} +1 -1
- package/dist/chunks/{main.894241b7.js → main.68333138.js} +2 -2
- package/dist/chunks/{main.894241b7.js.map → main.68333138.js.map} +1 -1
- package/dist/chunks/{nav-logo.098d84c2.js → nav-logo.fc091813.js} +2 -2
- package/dist/chunks/{nav-logo.098d84c2.js.map → nav-logo.fc091813.js.map} +1 -1
- package/dist/chunks/{poll-announce.398b6790.js → poll-announce.167eddd9.js} +3 -3
- package/dist/chunks/{poll-announce.398b6790.js.map → poll-announce.167eddd9.js.map} +1 -1
- package/dist/examples.json +3 -3
- package/dist/{index.bce02739.js → index.2680fbd6.js} +2 -2
- package/dist/{index.bce02739.js.map → index.2680fbd6.js.map} +1 -1
- package/dist/manifest.json +96 -96
- package/dist/types.json +34 -34
- package/package.json +2 -2
- package/dist/chunks/1491.97db62dc.js +0 -3
- package/dist/chunks/1491.97db62dc.js.map +0 -1
- package/dist/chunks/2248.4d4ba0c4.js.map +0 -1
- package/dist/chunks/get-menu-config-options.ee24c2f0.js +0 -2
- package/dist/chunks/get-menu-config-options.ee24c2f0.js.map +0 -1
- package/dist/chunks/get-menu-config-tree.b15d378f.js +0 -2
- package/dist/chunks/get-menu-config-tree.b15d378f.js.map +0 -1
- /package/dist/chunks/{2252.c6384bfa.js.LICENSE.txt → 2252.72f7a507.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{1491.97db62dc.js.LICENSE.txt → 4185.3f812e9a.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-directory-tree.8fe2c82b.js.LICENSE.txt → eo-directory-tree.eaa7e33f.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-directory.9ccef6ae.js.LICENSE.txt → eo-directory.e324f557.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-launchpad-button-v2.8514695c.js.LICENSE.txt → eo-launchpad-button-v2.6f945782.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-menu-group.6cfc80fa.js.LICENSE.txt → eo-sidebar-menu-group.f6594305.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-menu-submenu.d049eded.js.LICENSE.txt → eo-sidebar-menu-submenu.a5d00cb5.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-sub-menu.dbeaffcf.js.LICENSE.txt → eo-sidebar-sub-menu.ebac5ce4.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar.8cf721fe.js.LICENSE.txt → eo-sidebar.d72fde30.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{launchpad-config.39e1639c.js.LICENSE.txt → launchpad-config.addcb10e.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{poll-announce.398b6790.js.LICENSE.txt → poll-announce.167eddd9.js.LICENSE.txt} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_nav=globalThis.webpackChunk_next_bricks_nav||[]).push([[7159],{3162:(e,t,o)=>{o.r(t),o.d(t,{getMenuConfigOptions:()=>i});var n=o(532),s=o(1189);async function i(e){const t=[],{menuWithI18n:o,dispose:n}=(0,s.i)(e);for(const n of e){var i;t.push({label:`${null!==(i=(0,s.G)(n.title,o.get(n),n.overrideApp))&&void 0!==i?i:""} (${n.menuId})`,value:n.menuId})}return n(),t}customElements.define("nav.get-menu-config-options",(0,n.createProviderClass)(i))},1189:(e,t,o)=>{o.d(t,{G:()=>c,i:()=>u});var n=o(1590),s=o(532),i=o(1431),a=o(9297),r=o(7216);const l=new Set(["name","id","homepage","localeName"]);function c(e,t,o){if("string"==typeof e){if((0,i.isEvaluable)(e)){let c;const u={usedProperties:new Set,hasNonStaticUsage:!1};try{c=(0,i.preevaluate)(e,{withParent:!0,hooks:{beforeVisitGlobal:(0,r.beforeVisitGlobalMember)(u,["APP"])}})}catch(t){console.error(`Parse menu title expression "${e}" failed:`,t)}if(c&&(!c.attemptToVisitGlobals.has("APP")||o&&!u.hasNonStaticUsage&&[...u.usedProperties].every((e=>l.has(e))))){const r={};for(const e of c.attemptToVisitGlobals)switch(e){case"I18N":r[e]=n.i18n.getFixedT(null,[t].filter(Boolean));break;case"APP":r[e]={...o,localeName:null==o?void 0:o.name}}const l=(0,a.supply)(c.attemptToVisitGlobals,r);let u=!0;for(const e of c.attemptToVisitGlobals)if(!(0,s.hasOwnProperty)(l,e)){u=!1;break}if(u)try{const t=(0,i.cook)(c.expression,c.source,{globalVariables:l});if("string"==typeof t)return t;console.error(`The result of menu title expression "${e}" is not a string:`,t)}catch(t){console.error(`Evaluate menu title expression "${e}" failed:`,t)}}}return e}}function u(e){const t=new WeakMap,o=[];for(const o of e){var s;const e=`customize-menu/${o.menuId}~${o.app[0].appId}+${o.instanceId}`;Object.entries(null!==(s=o.i18n)&&void 0!==s?s:{}).forEach((t=>{let[o,s]=t;n.i18n.addResourceBundle(o,e,s)})),t.set(o,e)}return{menuWithI18n:t,dispose:()=>{for(const[e,t]of o)n.i18n.removeResourceBundle(e,t)}}}}}]);
|
|
2
|
-
//# sourceMappingURL=get-menu-config-options.ee24c2f0.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/get-menu-config-options.ee24c2f0.js","mappings":"kMAiBOA,eAAeC,EACpBC,GAEA,MAAMC,EAAwB,IAExB,aAAEC,EAAY,QAAEC,IAAYC,EAAAA,EAAAA,GAAmBJ,GAErD,IAAK,MAAMK,KAAQL,EAAU,KAAAM,EAC3BL,EAAQM,KAAK,CACXC,MAAO,GAAiF,QAAjFF,GAAGG,EAAAA,EAAAA,GAAyBJ,EAAKK,MAAOR,EAAaS,IAAIN,GAAOA,EAAKO,oBAAY,IAAAN,EAAAA,EAAI,OAAOD,EAAKQ,UACxGC,MAAOT,EAAKQ,QAEhB,CAIA,OAFAV,IAEOF,CACT,CAEAc,eAAeC,OACb,+BACAC,EAAAA,EAAAA,qBAAoBlB,G,+FCtBtB,MAAMmB,EAAkB,IAAIC,IAAI,CAAC,OAAQ,KAAM,WAAY,eAKpD,SAASV,EACdC,EACAU,EACAR,GAEA,GAAqB,iBAAVF,EAAX,CAGA,IAAIW,EAAAA,EAAAA,aAAYX,GAAQ,CAEtB,IAAIY,EACJ,MAAMC,EAAqC,CACzCC,eAAgB,IAAIL,IACpBM,mBAAmB,GAErB,IACEH,GAAYI,EAAAA,EAAAA,aAAYhB,EAAO,CAC7BiB,YAAY,EACZC,MAAO,CACLC,mBAAmBC,EAAAA,EAAAA,yBAAwBP,EAAU,CAAC,UAG5D,CAAE,MAAOQ,GAEPC,QAAQD,MAAM,gCAAgCrB,aAAkBqB,EAClE,CAEA,GACET,KACEA,EAAUW,sBAAsBC,IAAI,QACnCtB,IACEW,EAASE,mBACV,IAAIF,EAASC,gBAAgBW,OAAOC,GAClClB,EAAgBgB,IAAIE,MAE1B,CACA,MAAMC,EAAmC,CAAC,EAC1C,IAAK,MAAMC,KAAOhB,EAAUW,sBAC1B,OAAQK,GACN,IAAK,OACHD,EAAQC,GAAOC,EAAAA,KAAKC,UAClB,KACA,CAACpB,GAAeqB,OAAOC,UAEzB,MACF,IAAK,MACHL,EAAQC,GAAO,IACV1B,EACH+B,WAAY/B,aAAW,EAAXA,EAAagC,MAKjC,MAAMC,GAAkBC,EAAAA,EAAAA,QAAOxB,EAAUW,sBAAuBI,GAEhE,IAAIU,GAAa,EACjB,IAAK,MAAMT,KAAOhB,EAAUW,sBAC1B,KAAKe,EAAAA,EAAAA,gBAAeH,EAAiBP,GAAM,CACzCS,GAAa,EACb,KACF,CAGF,GAAIA,EACF,IACE,MAAME,GAASC,EAAAA,EAAAA,MAAK5B,EAAU6B,WAAY7B,EAAU8B,OAAQ,CAC1DC,gBAAiBR,IAEnB,GAAsB,iBAAXI,EACT,OAAOA,EAGTjB,QAAQD,MACN,wCAAwCrB,sBACxCuC,EAEJ,CAAE,MAAOlB,GAEPC,QAAQD,MACN,mCAAmCrB,aACnCqB,EAEJ,CAEJ,CACF,CACA,OAAOrB,CA/EP,CAgFF,CAEO,SAASN,EAAmBJ,GACjC,MAAME,EAAe,IAAIoD,QACnBC,EAAgD,GAEtD,IAAK,MAAMlD,KAAQL,EAAU,KAAAwD,EAC3B,MAAMC,EAAoB,kBAAkBpD,EAAKQ,UAAUR,EAAKqD,IAAI,GAAGC,SACrEtD,EAAKuD,aAGPC,OAAOC,QAAiB,QAAVN,EAACnD,EAAKkC,YAAI,IAAAiB,EAAAA,EAAI,CAAC,GAAGO,SAAQC,IAAuB,IAArBC,EAAMC,GAAUF,EACxDzB,EAAAA,KAAK4B,kBAAkBF,EAAMR,EAAmBS,EAAU,IAE5DhE,EAAakE,IAAI/D,EAAMoD,EACzB,CAEA,MAAO,CACLvD,eACAC,QAASA,KACP,IAAK,MAAO8D,EAAMI,KAAOd,EACvBhB,EAAAA,KAAK+B,qBAAqBL,EAAMI,EAClC,EAGN,C","sources":["webpack:///./src/data-providers/get-menu-config-options.ts","webpack:///./src/data-providers/shared/smartDisplayForMenuTitle.ts"],"sourcesContent":["import { createProviderClass } from \"@next-core/utils/general\";\nimport type { MenuRawData } from \"./get-menu-config-tree\";\nimport {\n initializeMenuI18n,\n smartDisplayForMenuTitle,\n} from \"./shared/smartDisplayForMenuTitle\";\n\nexport interface MenuOption {\n label: string;\n value: string;\n}\n\n/**\n * 构造用于菜单自定义的下拉选项数据。\n *\n * 将对菜单标题进行表达式解析,支持 I18N 和 APP。\n */\nexport async function getMenuConfigOptions(\n menuList: MenuRawData[]\n): Promise<MenuOption[]> {\n const options: MenuOption[] = [];\n\n const { menuWithI18n, dispose } = initializeMenuI18n(menuList);\n\n for (const menu of menuList) {\n options.push({\n label: `${smartDisplayForMenuTitle(menu.title, menuWithI18n.get(menu), menu.overrideApp) ?? \"\"} (${menu.menuId})`,\n value: menu.menuId,\n });\n }\n\n dispose();\n\n return options;\n}\n\ncustomElements.define(\n \"nav.get-menu-config-options\",\n createProviderClass(getMenuConfigOptions)\n);\n","import type { MicroApp } from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport {\n cook,\n isEvaluable,\n preevaluate,\n type PreevaluateResult,\n} from \"@next-core/cook\";\nimport { supply } from \"@next-core/supply\";\nimport {\n beforeVisitGlobalMember,\n type MemberUsageInExpressions,\n} from \"@next-core/utils/storyboard\";\nimport type { MenuRawData } from \"../get-menu-config-tree\";\n\nconst allowedAppProps = new Set([\"name\", \"id\", \"homepage\", \"localeName\"]);\n\n/**\n * 对菜单标题进行表达式解析,支持 I18N 和 APP。\n */\nexport function smartDisplayForMenuTitle(\n title: unknown,\n i18nNamespace: string | undefined,\n overrideApp: MicroApp | undefined\n): string | undefined {\n if (typeof title !== \"string\") {\n return;\n }\n if (isEvaluable(title)) {\n // A `SyntaxError` maybe thrown.\n let precooked: PreevaluateResult | undefined;\n const appUsage: MemberUsageInExpressions = {\n usedProperties: new Set(),\n hasNonStaticUsage: false,\n };\n try {\n precooked = preevaluate(title, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(appUsage, [\"APP\"]),\n },\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Parse menu title expression \"${title}\" failed:`, error);\n }\n\n if (\n precooked &&\n (!precooked.attemptToVisitGlobals.has(\"APP\") ||\n (overrideApp &&\n !appUsage.hasNonStaticUsage &&\n [...appUsage.usedProperties].every((prop) =>\n allowedAppProps.has(prop)\n )))\n ) {\n const globals: Record<string, unknown> = {};\n for (const key of precooked.attemptToVisitGlobals) {\n switch (key) {\n case \"I18N\":\n globals[key] = i18n.getFixedT(\n null,\n [i18nNamespace].filter(Boolean)\n );\n break;\n case \"APP\":\n globals[key] = {\n ...overrideApp,\n localeName: overrideApp?.name,\n };\n break;\n }\n }\n const suppliedGlobals = supply(precooked.attemptToVisitGlobals, globals);\n\n let computable = true;\n for (const key of precooked.attemptToVisitGlobals) {\n if (!hasOwnProperty(suppliedGlobals, key)) {\n computable = false;\n break;\n }\n }\n\n if (computable) {\n try {\n const result = cook(precooked.expression, precooked.source, {\n globalVariables: suppliedGlobals,\n });\n if (typeof result === \"string\") {\n return result;\n }\n // eslint-disable-next-line no-console\n console.error(\n `The result of menu title expression \"${title}\" is not a string:`,\n result\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n `Evaluate menu title expression \"${title}\" failed:`,\n error\n );\n }\n }\n }\n }\n return title;\n}\n\nexport function initializeMenuI18n(menuList: MenuRawData[]) {\n const menuWithI18n = new WeakMap<MenuRawData, string>();\n const menuI18nBundles: [lang: string, ns: string][] = [];\n\n for (const menu of menuList) {\n const menuI18nNamespace = `customize-menu/${menu.menuId}~${menu.app[0].appId}+${\n menu.instanceId\n }`;\n // Support any language in `menu.i18n`.\n Object.entries(menu.i18n ?? {}).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, menuI18nNamespace, resources);\n });\n menuWithI18n.set(menu, menuI18nNamespace);\n }\n\n return {\n menuWithI18n,\n dispose: () => {\n for (const [lang, ns] of menuI18nBundles) {\n i18n.removeResourceBundle(lang, ns);\n }\n },\n };\n}\n"],"names":["async","getMenuConfigOptions","menuList","options","menuWithI18n","dispose","initializeMenuI18n","menu","_smartDisplayForMenuT","push","label","smartDisplayForMenuTitle","title","get","overrideApp","menuId","value","customElements","define","createProviderClass","allowedAppProps","Set","i18nNamespace","isEvaluable","precooked","appUsage","usedProperties","hasNonStaticUsage","preevaluate","withParent","hooks","beforeVisitGlobal","beforeVisitGlobalMember","error","console","attemptToVisitGlobals","has","every","prop","globals","key","i18n","getFixedT","filter","Boolean","localeName","name","suppliedGlobals","supply","computable","hasOwnProperty","result","cook","expression","source","globalVariables","WeakMap","menuI18nBundles","_menu$i18n","menuI18nNamespace","app","appId","instanceId","Object","entries","forEach","_ref","lang","resources","addResourceBundle","set","ns","removeResourceBundle"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_nav=globalThis.webpackChunk_next_bricks_nav||[]).push([[1255],{1794:(e,t,n)=>{n.r(t),n.d(t,{getMenuConfigTree:()=>c});var o=n(532),i=n(1030),r=n(1189);const s=Symbol("menuI18nNamespace"),l=Symbol("overrideApp"),a={lib:"fa",icon:"bars"};async function c(e){var t;const n=[],o=e.find((e=>"main"===e.type));if(!o)return[];const i=[],a=new Map,{menuWithI18n:c,dispose:f}=(0,r.i)(e);for(const t of e){var m;if((!t.dynamicItems||!t.itemsResolve)&&null!==(m=t.items)&&void 0!==m&&m.length)if("inject"===t.type&&t.injectMenuGroupId){let e=a.get(t.injectMenuGroupId);e||(e=[],a.set(t.injectMenuGroupId,e)),e.push(t)}else i.push(t)}n.push("0");const h=p(i.flatMap((e=>d(e.items,e,a,c)))),v=[{key:"0",__keys:n,title:null!==(t=(0,r.G)(o.title,c.get(o),o.overrideApp))&&void 0!==t?t:o.menuId,data:o,icon:u(o.icon),children:function e(t,o){const i=null==t?void 0:t.map(((t,i)=>{var a;const c=`${o}-${i}`;return n.push(c),{key:c,title:null!==(a=(0,r.G)(t.text,t[s],t[l]))&&void 0!==a?a:"",data:t,icon:u(t.icon),faded:t.hidden,children:e(t.children,c)}}));return null!=i&&i.length?i:void 0}(h,"0")}];return f(),v}function u(e){return null!=e&&e.imgSrc?a:null!=e?e:a}function d(e,t,n,o){return null==e?void 0:e.map((e=>{var i;const r=e.groupId&&n.get(e.groupId);return r&&n.delete(e.groupId),{...e,children:(null!==(i=d(e.children,t,n,o))&&void 0!==i?i:[]).concat(r?r.flatMap((e=>d(e.items,e,n,o))):[]),[l]:t.overrideApp,[s]:o.get(t)}}))}function p(e){return function(e){return(0,i.sortBy)(e,(e=>{var t;return null!==(t=e.sort)&&void 0!==t?t:-1/0}),"text")}(e).map((e=>({...e,children:p(e.children)})))}customElements.define("nav.get-menu-config-tree",(0,o.createProviderClass)(c))},1189:(e,t,n)=>{n.d(t,{G:()=>c,i:()=>u});var o=n(1590),i=n(532),r=n(1431),s=n(9297),l=n(7216);const a=new Set(["name","id","homepage","localeName"]);function c(e,t,n){if("string"==typeof e){if((0,r.isEvaluable)(e)){let c;const u={usedProperties:new Set,hasNonStaticUsage:!1};try{c=(0,r.preevaluate)(e,{withParent:!0,hooks:{beforeVisitGlobal:(0,l.beforeVisitGlobalMember)(u,["APP"])}})}catch(t){console.error(`Parse menu title expression "${e}" failed:`,t)}if(c&&(!c.attemptToVisitGlobals.has("APP")||n&&!u.hasNonStaticUsage&&[...u.usedProperties].every((e=>a.has(e))))){const l={};for(const e of c.attemptToVisitGlobals)switch(e){case"I18N":l[e]=o.i18n.getFixedT(null,[t].filter(Boolean));break;case"APP":l[e]={...n,localeName:null==n?void 0:n.name}}const a=(0,s.supply)(c.attemptToVisitGlobals,l);let u=!0;for(const e of c.attemptToVisitGlobals)if(!(0,i.hasOwnProperty)(a,e)){u=!1;break}if(u)try{const t=(0,r.cook)(c.expression,c.source,{globalVariables:a});if("string"==typeof t)return t;console.error(`The result of menu title expression "${e}" is not a string:`,t)}catch(t){console.error(`Evaluate menu title expression "${e}" failed:`,t)}}}return e}}function u(e){const t=new WeakMap,n=[];for(const n of e){var i;const e=`customize-menu/${n.menuId}~${n.app[0].appId}+${n.instanceId}`;Object.entries(null!==(i=n.i18n)&&void 0!==i?i:{}).forEach((t=>{let[n,i]=t;o.i18n.addResourceBundle(n,e,i)})),t.set(n,e)}return{menuWithI18n:t,dispose:()=>{for(const[e,t]of n)o.i18n.removeResourceBundle(e,t)}}}}}]);
|
|
2
|
-
//# sourceMappingURL=get-menu-config-tree.b15d378f.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/get-menu-config-tree.b15d378f.js","mappings":"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","sources":["webpack:///./src/data-providers/get-menu-config-tree.ts","webpack:///./src/data-providers/shared/smartDisplayForMenuTitle.ts"],"sourcesContent":["import type { MetaI18n, MicroApp } from \"@next-core/types\";\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport { sortBy } from \"lodash\";\nimport {\n initializeMenuI18n,\n smartDisplayForMenuTitle,\n} from \"./shared/smartDisplayForMenuTitle\";\n\nconst symbolMenuI18nNamespace = Symbol(\"menuI18nNamespace\");\nconst symbolOverrideApp = Symbol(\"overrideApp\");\n\n/** 原始菜单数据。 */\nexport interface MenuRawData {\n menuId: string;\n title: string;\n icon?: {\n imgSrc?: string;\n };\n type?: \"main\" | \"inject\";\n injectMenuGroupId?: string;\n dynamicItems?: boolean;\n itemsResolve?: unknown;\n items?: MenuItemRawData[];\n instanceId: string;\n app: [\n {\n appId: string;\n },\n ];\n i18n?: MetaI18n;\n overrideApp?: MicroApp;\n}\n\n/** 原始菜单项数据。 */\nexport type MenuItemRawData = {\n /** 菜单项文本。 */\n text: string;\n icon?: {\n imgSrc?: string;\n };\n sort?: number;\n groupId?: string;\n hidden?: boolean;\n children?: MenuItemRawData[];\n};\n\nexport interface TitleDataSource {\n objectId: string;\n instanceId: string;\n attributeId?: string;\n}\n\ninterface RuntimeMenuItemRawData extends MenuItemRawData {\n children?: RuntimeMenuItemRawData[];\n [symbolMenuI18nNamespace]?: string;\n [symbolOverrideApp]?: MicroApp;\n}\n\nexport interface TreeNode {\n key: string;\n title: string;\n icon?: unknown;\n faded?: unknown;\n children?: TreeNode[];\n data: MenuRawData | MenuItemRawData;\n /** 第一个节点额外返回 __keys,包含所有节点的 key */\n __keys?: string[];\n}\n\nconst DEFAULT_ICON = {\n lib: \"fa\",\n icon: \"bars\",\n};\n\n/**\n * 构造用于菜单自定义的树形结构数据。\n *\n * 将对菜单标题进行表达式解析,支持 I18N 和 APP。\n */\nexport async function getMenuConfigTree(\n menuList: MenuRawData[]\n): Promise<TreeNode[]> {\n const keys: string[] = [];\n\n function getChildren(\n items: RuntimeMenuItemRawData[] | undefined,\n prefixKey: string\n ): TreeNode[] | undefined {\n const children = items?.map<TreeNode>((item, j) => {\n const key = `${prefixKey}-${j}`;\n keys.push(key);\n return {\n key,\n title:\n smartDisplayForMenuTitle(\n item.text,\n item[symbolMenuI18nNamespace],\n item[symbolOverrideApp]\n ) ?? \"\",\n data: item,\n icon: getIcon(item.icon),\n faded: item.hidden,\n children: getChildren(item.children, key),\n };\n });\n return children?.length ? children : undefined;\n }\n\n const mainMenu = menuList.find((menu) => menu.type === \"main\");\n if (!mainMenu) {\n return [];\n }\n\n const validMenuList: MenuRawData[] = [];\n const injectWithMenus = new Map<string, MenuRawData[]>();\n const { menuWithI18n, dispose } = initializeMenuI18n(menuList);\n\n for (const menu of menuList) {\n if (!(menu.dynamicItems && menu.itemsResolve) && menu.items?.length) {\n if (menu.type === \"inject\" && menu.injectMenuGroupId) {\n let injectingMenus = injectWithMenus.get(menu.injectMenuGroupId);\n if (!injectingMenus) {\n injectingMenus = [];\n injectWithMenus.set(menu.injectMenuGroupId, injectingMenus);\n }\n injectingMenus.push(menu);\n } else {\n validMenuList.push(menu);\n }\n }\n }\n\n keys.push(\"0\");\n\n const firstLevelItems = reorderMenuItems(\n validMenuList.flatMap(\n (menu) =>\n // Here always have non-empty items\n processGroupInject(menu.items, menu, injectWithMenus, menuWithI18n)!\n )\n );\n\n const tree: TreeNode[] = [\n {\n key: \"0\",\n __keys: keys,\n title:\n smartDisplayForMenuTitle(\n mainMenu.title,\n menuWithI18n.get(mainMenu),\n mainMenu.overrideApp\n ) ?? mainMenu.menuId,\n data: mainMenu,\n icon: getIcon(mainMenu.icon),\n children: getChildren(firstLevelItems, \"0\"),\n },\n ];\n\n dispose();\n\n return tree;\n}\n\nfunction getIcon(icon: { imgSrc?: string } | undefined): unknown {\n // 使用图片图标时,该图标一般是表达式,是应用的运行时数据,菜单管理无法获取。\n if (icon?.imgSrc) {\n return DEFAULT_ICON;\n }\n return icon ?? DEFAULT_ICON;\n}\n\nfunction processGroupInject(\n items: MenuItemRawData[] | undefined,\n menu: MenuRawData,\n injectWithMenus: Map<string, MenuRawData[]>,\n menuWithI18n: WeakMap<MenuRawData, string>\n): RuntimeMenuItemRawData[] | undefined {\n return items?.map((item) => {\n const foundInjectingMenus =\n item.groupId && injectWithMenus.get(item.groupId);\n if (foundInjectingMenus) {\n // Each menu to be injected with should be injected only once.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n injectWithMenus.delete(item.groupId!);\n }\n return {\n ...item,\n children: (\n processGroupInject(\n item.children,\n menu,\n injectWithMenus,\n menuWithI18n\n ) ?? ([] as RuntimeMenuItemRawData[])\n ).concat(\n foundInjectingMenus\n ? foundInjectingMenus.flatMap(\n (injectingMenu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(\n injectingMenu.items,\n injectingMenu,\n injectWithMenus,\n menuWithI18n\n )!\n )\n : ([] as RuntimeMenuItemRawData[])\n ),\n [symbolOverrideApp]: menu.overrideApp,\n [symbolMenuI18nNamespace]: menuWithI18n.get(menu),\n };\n });\n}\n\nfunction reorderMenuItems(\n list: MenuItemRawData[] | undefined\n): MenuItemRawData[] {\n return sortMenuItems(list).map((item) => ({\n ...item,\n children: reorderMenuItems(item.children),\n }));\n}\n\nfunction sortMenuItems(list: MenuItemRawData[] | undefined): MenuItemRawData[] {\n return sortBy(list, (item) => item.sort ?? -Infinity, \"text\");\n}\n\ncustomElements.define(\n \"nav.get-menu-config-tree\",\n createProviderClass(getMenuConfigTree)\n);\n","import type { MicroApp } from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport {\n cook,\n isEvaluable,\n preevaluate,\n type PreevaluateResult,\n} from \"@next-core/cook\";\nimport { supply } from \"@next-core/supply\";\nimport {\n beforeVisitGlobalMember,\n type MemberUsageInExpressions,\n} from \"@next-core/utils/storyboard\";\nimport type { MenuRawData } from \"../get-menu-config-tree\";\n\nconst allowedAppProps = new Set([\"name\", \"id\", \"homepage\", \"localeName\"]);\n\n/**\n * 对菜单标题进行表达式解析,支持 I18N 和 APP。\n */\nexport function smartDisplayForMenuTitle(\n title: unknown,\n i18nNamespace: string | undefined,\n overrideApp: MicroApp | undefined\n): string | undefined {\n if (typeof title !== \"string\") {\n return;\n }\n if (isEvaluable(title)) {\n // A `SyntaxError` maybe thrown.\n let precooked: PreevaluateResult | undefined;\n const appUsage: MemberUsageInExpressions = {\n usedProperties: new Set(),\n hasNonStaticUsage: false,\n };\n try {\n precooked = preevaluate(title, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(appUsage, [\"APP\"]),\n },\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Parse menu title expression \"${title}\" failed:`, error);\n }\n\n if (\n precooked &&\n (!precooked.attemptToVisitGlobals.has(\"APP\") ||\n (overrideApp &&\n !appUsage.hasNonStaticUsage &&\n [...appUsage.usedProperties].every((prop) =>\n allowedAppProps.has(prop)\n )))\n ) {\n const globals: Record<string, unknown> = {};\n for (const key of precooked.attemptToVisitGlobals) {\n switch (key) {\n case \"I18N\":\n globals[key] = i18n.getFixedT(\n null,\n [i18nNamespace].filter(Boolean)\n );\n break;\n case \"APP\":\n globals[key] = {\n ...overrideApp,\n localeName: overrideApp?.name,\n };\n break;\n }\n }\n const suppliedGlobals = supply(precooked.attemptToVisitGlobals, globals);\n\n let computable = true;\n for (const key of precooked.attemptToVisitGlobals) {\n if (!hasOwnProperty(suppliedGlobals, key)) {\n computable = false;\n break;\n }\n }\n\n if (computable) {\n try {\n const result = cook(precooked.expression, precooked.source, {\n globalVariables: suppliedGlobals,\n });\n if (typeof result === \"string\") {\n return result;\n }\n // eslint-disable-next-line no-console\n console.error(\n `The result of menu title expression \"${title}\" is not a string:`,\n result\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n `Evaluate menu title expression \"${title}\" failed:`,\n error\n );\n }\n }\n }\n }\n return title;\n}\n\nexport function initializeMenuI18n(menuList: MenuRawData[]) {\n const menuWithI18n = new WeakMap<MenuRawData, string>();\n const menuI18nBundles: [lang: string, ns: string][] = [];\n\n for (const menu of menuList) {\n const menuI18nNamespace = `customize-menu/${menu.menuId}~${menu.app[0].appId}+${\n menu.instanceId\n }`;\n // Support any language in `menu.i18n`.\n Object.entries(menu.i18n ?? {}).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, menuI18nNamespace, resources);\n });\n menuWithI18n.set(menu, menuI18nNamespace);\n }\n\n return {\n menuWithI18n,\n dispose: () => {\n for (const [lang, ns] of menuI18nBundles) {\n i18n.removeResourceBundle(lang, ns);\n }\n },\n };\n}\n"],"names":["symbolMenuI18nNamespace","Symbol","symbolOverrideApp","DEFAULT_ICON","lib","icon","async","getMenuConfigTree","menuList","_smartDisplayForMenuT2","keys","mainMenu","find","menu","type","validMenuList","injectWithMenus","Map","menuWithI18n","dispose","initializeMenuI18n","_menu$items","dynamicItems","itemsResolve","items","length","injectMenuGroupId","injectingMenus","get","set","push","firstLevelItems","reorderMenuItems","flatMap","processGroupInject","tree","key","__keys","title","smartDisplayForMenuTitle","overrideApp","menuId","data","getIcon","children","getChildren","prefixKey","map","item","j","_smartDisplayForMenuT","text","faded","hidden","undefined","imgSrc","_processGroupInject","foundInjectingMenus","groupId","delete","concat","injectingMenu","list","sortBy","_item$sort","sort","sortMenuItems","customElements","define","createProviderClass","allowedAppProps","Set","i18nNamespace","isEvaluable","precooked","appUsage","usedProperties","hasNonStaticUsage","preevaluate","withParent","hooks","beforeVisitGlobal","beforeVisitGlobalMember","error","console","attemptToVisitGlobals","has","every","prop","globals","i18n","getFixedT","filter","Boolean","localeName","name","suppliedGlobals","supply","computable","hasOwnProperty","result","cook","expression","source","globalVariables","WeakMap","menuI18nBundles","_menu$i18n","menuI18nNamespace","app","appId","instanceId","Object","entries","forEach","_ref","lang","resources","addResourceBundle","ns","removeResourceBundle"],"sourceRoot":""}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/chunks/{eo-directory.9ccef6ae.js.LICENSE.txt → eo-directory.e324f557.js.LICENSE.txt}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/chunks/{eo-sidebar.8cf721fe.js.LICENSE.txt → eo-sidebar.d72fde30.js.LICENSE.txt}
RENAMED
|
File without changes
|
|
File without changes
|
/package/dist/chunks/{poll-announce.398b6790.js.LICENSE.txt → poll-announce.167eddd9.js.LICENSE.txt}
RENAMED
|
File without changes
|