@next-bricks/nav 1.22.5 → 1.22.7

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.
Files changed (145) hide show
  1. package/dist/bricks.json +27 -27
  2. package/dist/chunks/{114.de520122.js → 114.003b9cfd.js} +2 -2
  3. package/dist/chunks/{114.de520122.js.map → 114.003b9cfd.js.map} +1 -1
  4. package/dist/chunks/{2133.b3f42995.js → 2133.ea2a4372.js} +2 -2
  5. package/dist/chunks/{2133.b3f42995.js.map → 2133.ea2a4372.js.map} +1 -1
  6. package/dist/chunks/2252.b5b0eabf.js +3 -0
  7. package/dist/chunks/2252.b5b0eabf.js.map +1 -0
  8. package/dist/chunks/{3171.37902a27.js → 3171.ea91e438.js} +2 -2
  9. package/dist/chunks/{3171.37902a27.js.map → 3171.ea91e438.js.map} +1 -1
  10. package/dist/chunks/3796.f0bb487b.js +3 -0
  11. package/dist/chunks/{3796.8022978a.js.map → 3796.f0bb487b.js.map} +1 -1
  12. package/dist/chunks/{4433.44c89b3a.js → 4433.49049133.js} +2 -2
  13. package/dist/chunks/{4433.44c89b3a.js.map → 4433.49049133.js.map} +1 -1
  14. package/dist/chunks/{4727.04c7f61d.js → 4727.3c547231.js} +2 -2
  15. package/dist/chunks/{4727.04c7f61d.js.map → 4727.3c547231.js.map} +1 -1
  16. package/dist/chunks/4765.585e43e8.js +2 -0
  17. package/dist/chunks/4765.585e43e8.js.map +1 -0
  18. package/dist/chunks/4837.b86d7cca.js +2 -0
  19. package/dist/chunks/4837.b86d7cca.js.map +1 -0
  20. package/dist/chunks/{5552.075020be.js → 5552.4e93ba05.js} +2 -2
  21. package/dist/chunks/{5552.075020be.js.map → 5552.4e93ba05.js.map} +1 -1
  22. package/dist/chunks/6302.b2905216.js +3 -0
  23. package/dist/chunks/6302.b2905216.js.map +1 -0
  24. package/dist/chunks/{6595.e9199ff8.js → 6595.6fe138dd.js} +2 -2
  25. package/dist/chunks/{6595.e9199ff8.js.map → 6595.6fe138dd.js.map} +1 -1
  26. package/dist/chunks/7146.57a33476.js +2 -0
  27. package/dist/chunks/7146.57a33476.js.map +1 -0
  28. package/dist/chunks/7218.1769ed60.js +2 -0
  29. package/dist/chunks/7218.1769ed60.js.map +1 -0
  30. package/dist/chunks/{7733.7902dee3.js → 7733.5f5419b4.js} +2 -2
  31. package/dist/chunks/{7733.7902dee3.js.map → 7733.5f5419b4.js.map} +1 -1
  32. package/dist/chunks/{8097.3603bfee.js → 8097.9168e009.js} +2 -2
  33. package/dist/chunks/{8097.3603bfee.js.map → 8097.9168e009.js.map} +1 -1
  34. package/dist/chunks/{871.6937a15d.js → 871.f78b6d2b.js} +2 -2
  35. package/dist/chunks/{871.6937a15d.js.map → 871.f78b6d2b.js.map} +1 -1
  36. package/dist/chunks/9140.356aebfa.js +3 -0
  37. package/dist/chunks/9140.356aebfa.js.map +1 -0
  38. package/dist/chunks/{9149.0c92a507.js → 9149.38b0a717.js} +2 -2
  39. package/dist/chunks/{9149.0c92a507.js.map → 9149.38b0a717.js.map} +1 -1
  40. package/dist/chunks/9363.20c782a3.js +3 -0
  41. package/dist/chunks/{9363.fc28662e.js.map → 9363.20c782a3.js.map} +1 -1
  42. package/dist/chunks/{easyops-navbar-alerts.bc939a72.js → easyops-navbar-alerts.4d6aa96d.js} +2 -2
  43. package/dist/chunks/{easyops-navbar-alerts.bc939a72.js.map → easyops-navbar-alerts.4d6aa96d.js.map} +1 -1
  44. package/dist/chunks/{eo-app-bar-wrapper.90fed652.js → eo-app-bar-wrapper.fbe61cce.js} +3 -3
  45. package/dist/chunks/{eo-app-bar-wrapper.90fed652.js.map → eo-app-bar-wrapper.fbe61cce.js.map} +1 -1
  46. package/dist/chunks/{eo-directory-tree-internal-node.4b8a6b98.js → eo-directory-tree-internal-node.0d198fc8.js} +2 -2
  47. package/dist/chunks/{eo-directory-tree-internal-node.4b8a6b98.js.map → eo-directory-tree-internal-node.0d198fc8.js.map} +1 -1
  48. package/dist/chunks/{eo-directory-tree-leaf.ca3b666e.js → eo-directory-tree-leaf.beb884bf.js} +2 -2
  49. package/dist/chunks/{eo-directory-tree-leaf.ca3b666e.js.map → eo-directory-tree-leaf.beb884bf.js.map} +1 -1
  50. package/dist/chunks/{eo-directory-tree.bf18dc76.js → eo-directory-tree.4ec90a72.js} +3 -3
  51. package/dist/chunks/{eo-directory-tree.bf18dc76.js.map → eo-directory-tree.4ec90a72.js.map} +1 -1
  52. package/dist/chunks/{eo-directory.f5a87fa2.js → eo-directory.d83a1d5a.js} +3 -3
  53. package/dist/chunks/{eo-directory.f5a87fa2.js.map → eo-directory.d83a1d5a.js.map} +1 -1
  54. package/dist/chunks/{eo-frame-breadcrumb.bf819fbc.js → eo-frame-breadcrumb.fee1eecc.js} +2 -2
  55. package/dist/chunks/{eo-frame-breadcrumb.bf819fbc.js.map → eo-frame-breadcrumb.fee1eecc.js.map} +1 -1
  56. package/dist/chunks/eo-launchpad-button-v2.2c5ab853.js +3 -0
  57. package/dist/chunks/{eo-launchpad-button-v2.e81da15c.js.map → eo-launchpad-button-v2.2c5ab853.js.map} +1 -1
  58. package/dist/chunks/{eo-launchpad-button.c7990f0e.js → eo-launchpad-button.2b3bccce.js} +3 -3
  59. package/dist/chunks/{eo-launchpad-button.c7990f0e.js.map → eo-launchpad-button.2b3bccce.js.map} +1 -1
  60. package/dist/chunks/{eo-launchpad-quick-access.c2c4a0f7.js → eo-launchpad-quick-access.93e11dbd.js} +3 -3
  61. package/dist/chunks/{eo-launchpad-quick-access.c2c4a0f7.js.map → eo-launchpad-quick-access.93e11dbd.js.map} +1 -1
  62. package/dist/chunks/{eo-launchpad-recent-visits.8a83d6e6.js → eo-launchpad-recent-visits.f11ba505.js} +3 -3
  63. package/dist/chunks/{eo-launchpad-recent-visits.8a83d6e6.js.map → eo-launchpad-recent-visits.f11ba505.js.map} +1 -1
  64. package/dist/chunks/eo-nav-menu.66c879ff.js +2 -0
  65. package/dist/chunks/{eo-nav-menu.1bb0aba1.js.map → eo-nav-menu.66c879ff.js.map} +1 -1
  66. package/dist/chunks/{eo-search-launchpad.771465a3.js → eo-search-launchpad.4bdfc679.js} +2 -2
  67. package/dist/chunks/{eo-search-launchpad.771465a3.js.map → eo-search-launchpad.4bdfc679.js.map} +1 -1
  68. package/dist/chunks/eo-sidebar-menu-group.9f248d04.js +3 -0
  69. package/dist/chunks/{eo-sidebar-menu-group.a35ec0d3.js.map → eo-sidebar-menu-group.9f248d04.js.map} +1 -1
  70. package/dist/chunks/{eo-sidebar-menu-item.5d9037c9.js → eo-sidebar-menu-item.c42dcb6d.js} +2 -2
  71. package/dist/chunks/{eo-sidebar-menu-item.5d9037c9.js.map → eo-sidebar-menu-item.c42dcb6d.js.map} +1 -1
  72. package/dist/chunks/eo-sidebar-menu-submenu.bcaa6663.js +3 -0
  73. package/dist/chunks/eo-sidebar-menu-submenu.bcaa6663.js.map +1 -0
  74. package/dist/chunks/{eo-sidebar-menu.9c8bfe04.js → eo-sidebar-menu.15ef8268.js} +2 -2
  75. package/dist/chunks/{eo-sidebar-menu.9c8bfe04.js.map → eo-sidebar-menu.15ef8268.js.map} +1 -1
  76. package/dist/chunks/eo-sidebar-sub-menu.12877a1d.js +3 -0
  77. package/dist/chunks/{eo-sidebar-sub-menu.2e382908.js.map → eo-sidebar-sub-menu.12877a1d.js.map} +1 -1
  78. package/dist/chunks/eo-sidebar.f56a5176.js +3 -0
  79. package/dist/chunks/{eo-sidebar.4895576a.js.map → eo-sidebar.f56a5176.js.map} +1 -1
  80. package/dist/chunks/{get-menu-config-options.b141a9e3.js → get-menu-config-options.d5c02f8d.js} +2 -2
  81. package/dist/chunks/{get-menu-config-options.b141a9e3.js.map → get-menu-config-options.d5c02f8d.js.map} +1 -1
  82. package/dist/chunks/{get-menu-config-tree.d659b581.js → get-menu-config-tree.3c208a90.js} +2 -2
  83. package/dist/chunks/{get-menu-config-tree.d659b581.js.map → get-menu-config-tree.3c208a90.js.map} +1 -1
  84. package/dist/chunks/{launchpad-config.822d8f06.js → launchpad-config.654bf9d4.js} +3 -3
  85. package/dist/chunks/{launchpad-config.822d8f06.js.map → launchpad-config.654bf9d4.js.map} +1 -1
  86. package/dist/chunks/main.45f885cf.js +2 -0
  87. package/dist/chunks/main.45f885cf.js.map +1 -0
  88. package/dist/chunks/{nav-logo.07efbab1.js → nav-logo.fff63779.js} +2 -2
  89. package/dist/chunks/{nav-logo.07efbab1.js.map → nav-logo.fff63779.js.map} +1 -1
  90. package/dist/chunks/{poll-announce.97676990.js → poll-announce.b1be9cf9.js} +3 -3
  91. package/dist/chunks/{poll-announce.97676990.js.map → poll-announce.b1be9cf9.js.map} +1 -1
  92. package/dist/chunks/{query-search.442a7bde.js → query-search.7b7e3415.js} +3 -3
  93. package/dist/chunks/{query-search.442a7bde.js.map → query-search.7b7e3415.js.map} +1 -1
  94. package/dist/examples.json +9 -9
  95. package/dist/index.59a98ae7.js +2 -0
  96. package/dist/index.59a98ae7.js.map +1 -0
  97. package/dist/manifest.json +94 -94
  98. package/dist/types.json +111 -111
  99. package/package.json +4 -4
  100. package/dist/chunks/2252.d3da24a8.js +0 -3
  101. package/dist/chunks/2252.d3da24a8.js.map +0 -1
  102. package/dist/chunks/3796.8022978a.js +0 -3
  103. package/dist/chunks/3933.928cded4.js +0 -2
  104. package/dist/chunks/3933.928cded4.js.map +0 -1
  105. package/dist/chunks/4837.8de8edba.js +0 -2
  106. package/dist/chunks/4837.8de8edba.js.map +0 -1
  107. package/dist/chunks/6302.cb4502ec.js +0 -3
  108. package/dist/chunks/6302.cb4502ec.js.map +0 -1
  109. package/dist/chunks/6314.b04ccf93.js +0 -2
  110. package/dist/chunks/6314.b04ccf93.js.map +0 -1
  111. package/dist/chunks/7218.d98e4c1e.js +0 -2
  112. package/dist/chunks/7218.d98e4c1e.js.map +0 -1
  113. package/dist/chunks/9140.7835c9bd.js +0 -3
  114. package/dist/chunks/9140.7835c9bd.js.map +0 -1
  115. package/dist/chunks/9363.fc28662e.js +0 -3
  116. package/dist/chunks/eo-launchpad-button-v2.e81da15c.js +0 -3
  117. package/dist/chunks/eo-nav-menu.1bb0aba1.js +0 -2
  118. package/dist/chunks/eo-sidebar-menu-group.a35ec0d3.js +0 -3
  119. package/dist/chunks/eo-sidebar-menu-submenu.669ac870.js +0 -3
  120. package/dist/chunks/eo-sidebar-menu-submenu.669ac870.js.map +0 -1
  121. package/dist/chunks/eo-sidebar-sub-menu.2e382908.js +0 -3
  122. package/dist/chunks/eo-sidebar.4895576a.js +0 -3
  123. package/dist/chunks/main.b2d89d48.js +0 -2
  124. package/dist/chunks/main.b2d89d48.js.map +0 -1
  125. package/dist/index.3de8975a.js +0 -2
  126. package/dist/index.3de8975a.js.map +0 -1
  127. /package/dist/chunks/{2252.d3da24a8.js.LICENSE.txt → 2252.b5b0eabf.js.LICENSE.txt} +0 -0
  128. /package/dist/chunks/{3796.8022978a.js.LICENSE.txt → 3796.f0bb487b.js.LICENSE.txt} +0 -0
  129. /package/dist/chunks/{6302.cb4502ec.js.LICENSE.txt → 6302.b2905216.js.LICENSE.txt} +0 -0
  130. /package/dist/chunks/{9140.7835c9bd.js.LICENSE.txt → 9140.356aebfa.js.LICENSE.txt} +0 -0
  131. /package/dist/chunks/{9363.fc28662e.js.LICENSE.txt → 9363.20c782a3.js.LICENSE.txt} +0 -0
  132. /package/dist/chunks/{eo-app-bar-wrapper.90fed652.js.LICENSE.txt → eo-app-bar-wrapper.fbe61cce.js.LICENSE.txt} +0 -0
  133. /package/dist/chunks/{eo-directory-tree.bf18dc76.js.LICENSE.txt → eo-directory-tree.4ec90a72.js.LICENSE.txt} +0 -0
  134. /package/dist/chunks/{eo-directory.f5a87fa2.js.LICENSE.txt → eo-directory.d83a1d5a.js.LICENSE.txt} +0 -0
  135. /package/dist/chunks/{eo-launchpad-button-v2.e81da15c.js.LICENSE.txt → eo-launchpad-button-v2.2c5ab853.js.LICENSE.txt} +0 -0
  136. /package/dist/chunks/{eo-launchpad-button.c7990f0e.js.LICENSE.txt → eo-launchpad-button.2b3bccce.js.LICENSE.txt} +0 -0
  137. /package/dist/chunks/{eo-launchpad-quick-access.c2c4a0f7.js.LICENSE.txt → eo-launchpad-quick-access.93e11dbd.js.LICENSE.txt} +0 -0
  138. /package/dist/chunks/{eo-launchpad-recent-visits.8a83d6e6.js.LICENSE.txt → eo-launchpad-recent-visits.f11ba505.js.LICENSE.txt} +0 -0
  139. /package/dist/chunks/{eo-sidebar-menu-group.a35ec0d3.js.LICENSE.txt → eo-sidebar-menu-group.9f248d04.js.LICENSE.txt} +0 -0
  140. /package/dist/chunks/{eo-sidebar-menu-submenu.669ac870.js.LICENSE.txt → eo-sidebar-menu-submenu.bcaa6663.js.LICENSE.txt} +0 -0
  141. /package/dist/chunks/{eo-sidebar-sub-menu.2e382908.js.LICENSE.txt → eo-sidebar-sub-menu.12877a1d.js.LICENSE.txt} +0 -0
  142. /package/dist/chunks/{eo-sidebar.4895576a.js.LICENSE.txt → eo-sidebar.f56a5176.js.LICENSE.txt} +0 -0
  143. /package/dist/chunks/{launchpad-config.822d8f06.js.LICENSE.txt → launchpad-config.654bf9d4.js.LICENSE.txt} +0 -0
  144. /package/dist/chunks/{poll-announce.97676990.js.LICENSE.txt → poll-announce.b1be9cf9.js.LICENSE.txt} +0 -0
  145. /package/dist/chunks/{query-search.442a7bde.js.LICENSE.txt → query-search.7b7e3415.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/eo-sidebar.4895576a.js","mappings":"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","sources":["webpack:///../../node_modules/@next-shared/general/dist/esm/menu.js","webpack:///./src/sidebar/i18n.ts","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","webpack:///../../node_modules/css-loader/dist/runtime/api.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/assertClassBrand.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/setFunctionName.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/applyDecs2311.js","webpack:///./src/sidebar/utils.tsx","webpack:///../../node_modules/classnames/index.js","webpack:///./src/sidebar/styles.shadow.css","webpack:///./src/images/toFixed.svg","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js","webpack:///./src/images/fixed.svg","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js","webpack:///../../node_modules/css-loader/dist/runtime/noSourceMaps.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/checkInRHS.js","webpack:///./src/sidebar/index.tsx","webpack:///../../node_modules/@next-shared/general/dist/esm/JsonStorage.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///../../node_modules/@next-shared/general/dist/esm/debounceByAnimationFrame.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/extends.js"],"sourcesContent":["import { parsePath } from \"history\";\nimport { matchPath } from \"@next-core/runtime\";\nimport { isObject } from \"lodash\";\nexport function isGroup(item) {\n return item.type === \"group\";\n}\nexport function isSubMenu(item, groupAsSubMenu) {\n return Boolean(item.type === \"subMenu\" || groupAsSubMenu && item.type === \"group\");\n}\nexport function initMenuItemAndMatchCurrentPathKeys(menuItems, pathname, search, parentCursor) {\n const selectedKeys = [];\n const openedKeys = [];\n const matchedKeys = [];\n let cursor = 0;\n menuItems && menuItems.forEach(item => {\n // key的格式最终为0,1,2,0.1,0.2,0.1.1,0.1.2\n item.key = parentCursor === \"\" ? `${cursor}` : `${parentCursor}.${cursor}`;\n if (isGroup(item) || isSubMenu(item)) {\n const tmp = initMenuItemAndMatchCurrentPathKeys(item.items, pathname, search, item.key);\n selectedKeys.push(...tmp.selectedKeys);\n if (tmp.selectedKeys.length || item.defaultExpanded) {\n openedKeys.push(item.key);\n }\n openedKeys.push(...tmp.openedKeys);\n matchedKeys.push(...tmp.matchedKeys);\n } else {\n if (matchMenuItem(item, pathname, search)) {\n selectedKeys.push(String(item.key));\n const keyPath = item.key.split(\".\");\n for (let i = 0; i < keyPath.length; i++) {\n matchedKeys.push(keyPath.slice(0, i + 1).join(\".\"));\n }\n }\n }\n cursor += 1;\n });\n if (selectedKeys.length && parentCursor !== \"\") {\n openedKeys.push(parentCursor);\n }\n return {\n selectedKeys: selectedKeys,\n openedKeys: openedKeys,\n matchedKeys: matchedKeys\n };\n}\nfunction getMatchOfSearch(currentSearch, toSearch) {\n const current = new URLSearchParams(currentSearch);\n const to = new URLSearchParams(toSearch);\n for (const [key, value] of to.entries()) {\n var _current$get;\n // Allow `?k=` to match `?` (when `k` doesn't exist)\n if (((_current$get = current.get(key)) !== null && _current$get !== void 0 ? _current$get : \"\") !== value) {\n return false;\n }\n }\n return true;\n}\nexport function matchMenuItem(item, pathname, search) {\n if (!item.to) return false;\n const to = typeof item.to === \"object\" ? item.to : parsePath(item.to);\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath = to.pathname.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n let match = !!matchPath(pathname, {\n path: escapedPath,\n exact: item.exact\n });\n if (match && item.activeMatchSearch) {\n match = getMatchOfSearch(search, to.search);\n }\n if (!match && Array.isArray(item.activeIncludes)) {\n for (const include of item.activeIncludes) {\n let paths;\n let exact = true;\n if (isObject(include)) {\n paths = Array.isArray(include.path) ? include.path : [include.path];\n exact = include.exact;\n } else {\n paths = [include];\n }\n for (const path of paths) {\n var _parsedPath;\n let parsedPath;\n const hasSearch = path.includes(\"?\");\n if (hasSearch) {\n parsedPath = parsePath(path);\n }\n match = !!matchPath(pathname, {\n path: hasSearch ? parsedPath.pathname : path,\n exact\n });\n if (match && (_parsedPath = parsedPath) !== null && _parsedPath !== void 0 && _parsedPath.search) {\n match = getMatchOfSearch(search, parsedPath.search);\n }\n if (match) {\n break;\n }\n }\n if (match) {\n break;\n }\n }\n }\n if (match && Array.isArray(item.activeExcludes)) {\n for (const include of item.activeExcludes) {\n let paths;\n let exact = true;\n if (isObject(include)) {\n paths = Array.isArray(include.path) ? include.path : [include.path];\n exact = include.exact;\n } else {\n paths = [include];\n }\n for (const path of paths) {\n let parsedPathWithSearch;\n if (path.includes(\"?\")) {\n parsedPathWithSearch = parsePath(path);\n }\n match = !(matchPath(pathname, {\n path: parsedPathWithSearch ? parsedPathWithSearch.pathname : path,\n exact\n }) && (!parsedPathWithSearch || getMatchOfSearch(search, parsedPathWithSearch.search)));\n if (!match) {\n break;\n }\n }\n if (!match) {\n break;\n }\n }\n }\n return match;\n}\n//# sourceMappingURL=menu.js.map","export enum K {\n CLICK_TO_FIX_NAVIGATION = \"CLICK_TO_FIX_NAVIGATION\",\n UNPIN_NAVIGATION = \"UNPIN_NAVIGATION\",\n FIXED_NAVIGATION = \"FIXED_NAVIGATION\",\n}\n\nconst en: Locale = {\n UNPIN_NAVIGATION: \"Unpin navigation\",\n FIXED_NAVIGATION: \"Fixed navigation\",\n CLICK_TO_FIX_NAVIGATION: \"Click to {{action}}\",\n};\n\nconst zh: Locale = {\n UNPIN_NAVIGATION: \"取消固定\",\n FIXED_NAVIGATION: \"固定导航\",\n CLICK_TO_FIX_NAVIGATION: \"点击{{action}}\",\n};\n\nexport const NS = \"bricks/nav/eo-sidebar\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [key in K]: string };\n","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateFieldGet2(s, a) {\n return s.get(assertClassBrand(s, a));\n}","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateFieldInitSpec(obj, privateMap, value) {\n checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","export default function _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}","export default function _assertClassBrand(e, t, n) {\n if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;\n throw new TypeError(\"Private element is not present on this object\");\n}","import _typeof from \"./typeof.js\";\nexport default function setFunctionName(e, t, n) {\n \"symbol\" == _typeof(t) && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\");\n try {\n Object.defineProperty(e, \"name\", {\n configurable: !0,\n value: n ? n + \" \" + t : t\n });\n } catch (e) {}\n return e;\n}","import _typeof from \"./typeof.js\";\nimport checkInRHS from \"./checkInRHS.js\";\nimport setFunctionName from \"./setFunctionName.js\";\nimport toPropertyKey from \"./toPropertyKey.js\";\nexport default function applyDecs2311(e, t, n, r, o, i) {\n var a,\n c,\n u,\n s,\n f,\n l,\n p,\n d = Symbol.metadata || Symbol[\"for\"](\"Symbol.metadata\"),\n m = Object.defineProperty,\n h = Object.create,\n y = [h(null), h(null)],\n v = t.length;\n function g(t, n, r) {\n return function (o, i) {\n n && (i = o, o = e);\n for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []);\n return r ? i : o;\n };\n }\n function b(e, t, n, r) {\n if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\"));\n return e;\n }\n function applyDec(e, t, n, r, o, i, u, s, f, l, p) {\n function d(e) {\n if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\");\n }\n var h = [].concat(t[0]),\n v = t[3],\n w = !u,\n D = 1 === o,\n S = 3 === o,\n j = 4 === o,\n E = 2 === o;\n function I(t, n, r) {\n return function (o, i) {\n return n && (i = o, o = e), r && r(o), P[t].call(o, i);\n };\n }\n if (!w) {\n var P = {},\n k = [],\n F = S ? \"get\" : j || D ? \"set\" : \"value\";\n if (f ? (l || D ? P = {\n get: setFunctionName(function () {\n return v(this);\n }, r, \"get\"),\n set: function set(e) {\n t[4](this, e);\n }\n } : P[F] = v, l || setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) {\n if ((c = y[+s][r]) && 7 != (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\");\n y[+s][r] = o < 3 ? 1 : o;\n }\n }\n for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) {\n var z = b(h[O], \"A decorator\", \"be\", !0),\n A = n ? h[O - 1] : void 0,\n H = {},\n K = {\n kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o],\n name: r,\n metadata: a,\n addInitializer: function (e, t) {\n if (e.v) throw Error(\"attempted to call addInitializer after decoration was finished\");\n b(t, \"An initializer\", \"be\", !0), i.push(t);\n }.bind(null, H)\n };\n if (w) c = z.call(A, N, K), H.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (K[\"static\"] = s, K[\"private\"] = f, c = K.access = {\n has: f ? p.bind() : function (e) {\n return r in e;\n }\n }, j || (c.get = f ? E ? function (e) {\n return d(e), P.value;\n } : I(\"get\", 0, d) : function (e) {\n return e[r];\n }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) {\n e[r] = t;\n }), N = z.call(A, D ? {\n get: P.get,\n set: P.set\n } : P[F], K), H.v = 1, D) {\n if (\"object\" == _typeof(N) && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\");\n } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N);\n }\n return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N;\n }\n function w(e) {\n return m(e, d, {\n configurable: !0,\n enumerable: !0,\n value: a\n });\n }\n return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function l(e) {\n e && f.push(g(e));\n }, p = function p(t, r) {\n for (var i = 0; i < n.length; i++) {\n var a = n[i],\n c = a[1],\n l = 7 & c;\n if ((8 & c) == t && !l == r) {\n var p = a[2],\n d = !!a[3],\n m = 16 & c;\n applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) {\n return checkInRHS(t) === e;\n } : o);\n }\n }\n }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), {\n e: c,\n get c() {\n var n = [];\n return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)];\n }\n };\n}","import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\nimport { getCssPropertyValue } from \"@next-core/runtime\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n SidebarMenu as SidebarMenuType,\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type {\n EoSidebarMenu,\n EoSidebarMenuProps,\n} from \"./sidebar-menu/index.js\";\nimport type {\n EoSidebarMenuItem,\n EoSidebarMenuItemProps,\n} from \"./sidebar-menu-item/index.js\";\nimport type {\n EoSidebarMenuGroup,\n EoSidebarMenuGroupProps,\n} from \"./sidebar-menu-group/index.js\";\nimport type {\n EoSidebarMenuSubmenu,\n EoSidebarMenuSubmenuProps,\n} from \"./sidebar-menu-submenu/index.js\";\n\nconst sidebarMenuItemTagNameSet = new Set([\n \"EO-SIDEBAR-MENU-ITEM\",\n \"EO-SIDEBAR-MENU-GROUP\",\n \"EO-SIDEBAR-MENU-SUBMENU\",\n]);\n\nconst isSidebarMenuItem = (element: Element) =>\n sidebarMenuItemTagNameSet.has(element.tagName);\n\nexport function useUpdateMenuCollapsedState(menuCollapsed?: boolean) {\n const slotRef = useRef<HTMLSlotElement>(null);\n\n const updateChildrenMenuCollapsedState = useCallback(() => {\n slotRef.current?.assignedElements().forEach((ele) => {\n if (isSidebarMenuItem(ele)) {\n (ele as any).menuCollapsed = menuCollapsed;\n }\n });\n }, [menuCollapsed]);\n\n useEffect(() => {\n updateChildrenMenuCollapsedState();\n }, [menuCollapsed, updateChildrenMenuCollapsedState]);\n\n useEffect(() => {\n const slotElem = slotRef.current;\n const handleSlotchange = () => {\n updateChildrenMenuCollapsedState();\n };\n slotElem?.addEventListener(\"slotchange\", handleSlotchange);\n\n return () => {\n slotElem?.removeEventListener(\"slotchange\", handleSlotchange);\n };\n }, [updateChildrenMenuCollapsedState]);\n\n return [slotRef];\n}\n\nexport const SIDE_BAR_HAS_BEEN_USED = \"side-bar-has-been-used\";\nexport const SIDE_BAR_EXPAND_STATE = \"side-bar-expand-state\";\nexport const SIDE_BAR_RESIZE_WIDTH = \"side-bar-resize-width\";\n\nexport enum ExpandedState {\n Collapsed = \"collapsed\",\n Hovered = \"hovered\",\n Expanded = \"expanded\",\n}\n\nexport const sideBarWidth =\n parseInt(getCssPropertyValue(\"--side-bar-width\", document.body), 10) || 220;\nexport const sideBarCollapsedWidth =\n parseInt(\n getCssPropertyValue(\"--side-bar-collapsed-width\", document.body),\n 10\n ) || 60;\n\ninterface ContextOfSidebarMenu {\n selectedKeys: string[];\n openedKeys: string[];\n matchedKeys: string[];\n}\n\nconst SidebarMenuContext = createContext<ContextOfSidebarMenu>({\n selectedKeys: [],\n openedKeys: [],\n matchedKeys: [],\n});\n\nconst WrappedSidebarMenu = wrapBrick<EoSidebarMenu, EoSidebarMenuProps>(\n \"eo-sidebar-menu\"\n);\nconst WrappedSidebarMenuItem = wrapBrick<\n EoSidebarMenuItem,\n EoSidebarMenuItemProps\n>(\"eo-sidebar-menu-item\");\nconst WrappedSidebarMenuGroup = wrapBrick<\n EoSidebarMenuGroup,\n EoSidebarMenuGroupProps\n>(\"eo-sidebar-menu-group\");\nconst WrappedSidebarMenuSubmenu = wrapBrick<\n EoSidebarMenuSubmenu,\n EoSidebarMenuSubmenuProps\n>(\"eo-sidebar-menu-submenu\");\n\nfunction MenuSimpleItem(\n props: SidebarMenuSimpleItem & { id?: string; inSubmenu?: boolean }\n) {\n const { to, href, target, icon, text, id, inSubmenu } = props;\n const { selectedKeys } = useContext(SidebarMenuContext);\n\n return (\n <WrappedSidebarMenuItem\n url={to as any}\n href={href}\n target={target as any}\n icon={icon}\n inSubmenu={inSubmenu}\n selected={selectedKeys.includes(id!)}\n >\n {text}\n </WrappedSidebarMenuItem>\n );\n}\n\nfunction MenuGroup(\n props: SidebarMenuGroup & { id?: string; top?: boolean; inSubmenu?: boolean }\n) {\n const { title, items, id, top, inSubmenu } = props;\n const { matchedKeys } = useContext(SidebarMenuContext);\n const isSelected = id && matchedKeys.includes(id);\n\n if (items?.length > 0) {\n return (\n <WrappedSidebarMenuGroup selected={!!isSelected} collapsable={!top}>\n <span slot=\"title\">{title}</span>\n {props.items.map((item) => {\n return (\n <MenuItem\n key={item.key}\n {...item}\n id={item.key}\n top={false}\n inSubmenu={inSubmenu}\n />\n );\n })}\n </WrappedSidebarMenuGroup>\n );\n }\n return null;\n}\n\nfunction MenuSubmenu(props: SidebarMenuGroup & { id?: string }) {\n const { title, icon, items, id } = props;\n const { openedKeys, matchedKeys } = useContext(SidebarMenuContext);\n const isSelected = id && matchedKeys.includes(id);\n\n if (items?.length > 0) {\n return (\n <WrappedSidebarMenuSubmenu\n icon={icon}\n collapsed={!openedKeys.includes(id!)}\n selected={!!isSelected}\n >\n <span slot=\"title\">{title}</span>\n {props.items.map((item) => {\n return (\n <MenuItem\n key={item.key}\n {...item}\n id={item.key}\n top={false}\n inSubmenu={true}\n />\n );\n })}\n </WrappedSidebarMenuSubmenu>\n );\n }\n return null;\n}\n\nfunction MenuItem(\n props: SidebarMenuItem & { id?: string; top?: boolean; inSubmenu?: boolean }\n) {\n if (props.type === \"subMenu\") {\n return <MenuSubmenu {...props} />;\n } else if (props.type === \"group\") {\n return <MenuGroup {...props} />;\n } else {\n return <MenuSimpleItem {...(props as SidebarMenuSimpleItem)} />;\n }\n}\n\nexport function SidebarMenu(props: {\n menu?: SidebarMenuType;\n expandedState: ExpandedState;\n selectedKeys?: string[];\n openedKeys?: string[];\n matchedKeys?: string[];\n}) {\n const { menu, expandedState, selectedKeys, openedKeys, matchedKeys } = props;\n\n return (\n <SidebarMenuContext.Provider\n value={{\n selectedKeys: selectedKeys || [],\n openedKeys: openedKeys || [],\n matchedKeys: matchedKeys || [],\n }}\n >\n <WrappedSidebarMenu\n menuCollapsed={expandedState === ExpandedState.Collapsed}\n >\n {menu?.menuItems?.map((item) => {\n return <MenuItem key={item.key} {...item} id={item.key} top={true} />;\n })}\n </WrappedSidebarMenu>\n </SidebarMenuContext.Provider>\n );\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// 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:block}:host([hidden]){display:none}:host([position=\"static\"]){height:100%}*,\n*::before,\n*::after{box-sizing:border-box}.sidebar-container{position:relative;z-index:998;height:100%}.sidebar-container,\n.inner{transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}:host(:not([position=\"static\"])) .sidebar-container{position:fixed;left:0;top:var(--app-bar-height);height:calc(100vh - var(--app-bar-height))}.inner{position:absolute;left:0;height:100%;display:flex;flex-direction:column;background-color:var(--left-menu-bg);border-right:1px solid var(--left-sidebar-border-right)}.inner:hover{background-color:var(--left-menu-hover-bg)}.inner::before{content:\"\";position:absolute;left:0;right:0;top:0;bottom:0;z-index:-1;background:var(--sidebar-bg)}.header{padding:0 12px;margin-top:14px;height:52px;flex-shrink:0}.menu-title{height:100%;display:flex;align-items:center;color:var(--left-sidebar-large-title-color)}.menu-title-icon-container{flex-shrink:0;display:flex;justify-content:center;align-items:center;width:20px;height:20px;font-size:20px;line-height:0;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-title-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.menu-title-point{width:4px;height:4px;background:var(--antd-text-color);border-radius:50%}.menu-title-text{font-size:16px;font-weight:var(--font-weight-500);color:var(--left-sidebar-large-title-color);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.state-collapsed .menu-title{padding:0 calc(50% - 10px)}.state-hovered .menu-title,\n.state-expanded .menu-title{padding:0 12px}.state-collapsed .menu-title-icon-container{margin-right:12px}.state-hovered .menu-title-icon-container,\n.state-expanded .menu-title-icon-container{margin-right:0;width:0;opacity:0}.content{padding:0 12px;flex:1;overflow-y:auto;scrollbar-width:none}.content::-webkit-scrollbar{width:0;background:transparent}.content.show-shadow{box-shadow:0 -17px 10px -16px rgb(0 0 0/8%) inset}.footer{height:60px;flex-shrink:0;display:flex;align-items:center;justify-content:flex-end}.fixed-icon{display:flex;justify-content:center;align-items:center;width:20px;height:20px;margin-right:8px;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.fixed-icon > svg{width:100%;height:100%}.fixed-icon:hover > svg path[fill]{fill:var(--color-brand)}.state-collapsed .fixed-icon{visibility:hidden;opacity:0}.state-hovered .fixed-icon,\n.state-expanded .fixed-icon{visibility:visible;opacity:1}.state-hovered .inner{box-shadow:var(--left-sidebar-shadow)}.resize-line{position:absolute;right:-2px;height:100%;width:2px;cursor:col-resize}.resize-line:hover,\n.resize-line:active{background-color:rgba(26,122,255,1)}.dragging,\n.dragging .inner{transition:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import * as React from \"react\";\nconst SvgToFixed = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} viewBox=\"0 0 20 20\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path d=\"M0 0h20v20H0z\" /><path fill=\"#595959\" fillRule=\"nonzero\" d=\"m13.06 3.765 3.22 3.08c.42.28.42.84.14 1.26-.42.42-.98.42-1.26.14l-.14-.14-.28-.28-3.22 4.62.98.98c.28.42.28.98-.14 1.26-.28.28-.7.28-1.12 0l-5.88-6.02q-.42-.63 0-1.26c.28-.28.84-.28 1.12 0l.98.98 4.62-3.22-.14-.14c-.42-.42-.42-.84-.14-1.26.28-.28.84-.42 1.26 0m-4.76 9.1-1.12-1.12c-.98 1.12-2.52 2.8-2.8 3.22-.42.42-.7.98-.98 1.54q1.05-.21 1.68-.84c.42-.28 2.1-1.82 3.22-2.8\" /></g></svg>;\nexport default SvgToFixed;","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateMethodInitSpec(obj, privateSet) {\n checkPrivateRedeclaration(obj, privateSet);\n privateSet.add(obj);\n}","import * as React from \"react\";\nconst SvgFixed = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} viewBox=\"0 0 20 20\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path d=\"M0 0h20v20H0z\" /><path fill=\"#595959\" fillRule=\"nonzero\" d=\"m14.599 11.59-1.685-1.606-.348-4.876.93-1.044s.617-.93-.62-1.045L7.323 3s-.85.657-.097 1.296l.754.755-.385 4.76-1.49 1.683s-.388.774.328 1.065l2.961-.02.668 3.887H6.388V17h7.832v-.574h-3.743l.6-3.946 3.154.097s.812-.464.368-.986\" /></g></svg>;\nexport default SvgFixed;","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateGetter(s, r, a) {\n return a(assertClassBrand(s, r));\n}","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateFieldSet2(s, a, r) {\n return s.set(assertClassBrand(s, a), r), r;\n}","\"use strict\";\n\nmodule.exports = function (i) {\n return i[1];\n};","import _typeof from \"./typeof.js\";\nexport default function _checkInRHS(e) {\n if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? _typeof(e) : \"null\"));\n return e;\n}","import React, {\n MouseEventHandler,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { SidebarMenu as SidebarMenuType } from \"@next-shared/general/types\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport FixedSvg from \"../images/fixed.svg\";\nimport ToFixedSvg from \"../images/toFixed.svg\";\nimport { debounceByAnimationFrame } from \"@next-shared/general/debounceByAnimationFrame\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport {\n ExpandedState,\n SIDE_BAR_EXPAND_STATE,\n SIDE_BAR_HAS_BEEN_USED,\n SIDE_BAR_RESIZE_WIDTH,\n SidebarMenu,\n sideBarCollapsedWidth,\n sideBarWidth,\n} from \"./utils.js\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport classNames from \"classnames\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport { UnregisterCallback } from \"history\";\nimport { getHistory, getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarProps {\n menu: SidebarMenuType;\n expandedState?: ExpandedState;\n hiddenFixedIcon?: boolean;\n position?: \"static\" | \"fixed\";\n}\n\nexport interface EoSidebarEvents {\n \"actual.width.change\": CustomEvent<number>;\n \"expanded.state.change\": CustomEvent<ExpandedState>;\n}\n\nexport interface EoSidebarEventsMapping {\n onActualWidthChange: \"actual.width.change\";\n onExpandedStateChange: \"expanded.state.change\";\n}\n\n/**\n * 侧边栏\n *\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar\", {\n styleTexts: [styleText],\n})\nclass EoSidebar extends ReactNextElement implements EoSidebarProps {\n /**\n * 菜单数据\n */\n @property({ attribute: false })\n accessor menu!: SidebarMenuType;\n\n /**\n * 是否隐藏固定按钮\n */\n @property({ type: Boolean })\n accessor hiddenFixedIcon: boolean | undefined;\n\n /**\n * 侧栏状态\n */\n @property()\n accessor expandedState: ExpandedState | undefined;\n\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" | undefined;\n\n /**\n * 宽度变化时触发\n * @detail 当前宽度\n */\n @event({ type: \"actual.width.change\" })\n accessor #actualWidthChangeEvent!: EventEmitter<number>;\n #handleActualWidthChange = (actualWidth: number): void => {\n this.#actualWidthChangeEvent.emit(actualWidth);\n };\n\n /**\n * 侧栏状态变化时触发\n * @detail 侧栏状态\n */\n @event({ type: \"expanded.state.change\" })\n accessor #expandedStateChangeEvent!: EventEmitter<ExpandedState>;\n #handleExpandedStateChange = (state: ExpandedState): void => {\n this.expandedState = state;\n this.#expandedStateChangeEvent.emit(state);\n };\n\n render() {\n return (\n <EoSidebarComponent\n menu={this.menu}\n expandedState={this.expandedState}\n hiddenFixedIcon={this.hiddenFixedIcon}\n position={this.position}\n onActualWidthChange={this.#handleActualWidthChange}\n onExpandedStateChange={this.#handleExpandedStateChange}\n />\n );\n }\n}\n\ninterface EoSidebarComponentProps extends EoSidebarProps {\n onActualWidthChange?: (actualWidth: number) => void;\n onExpandedStateChange?: (state: ExpandedState) => void;\n}\n\nexport function EoSidebarComponent(props: EoSidebarComponentProps) {\n const { t } = useTranslation(NS);\n const {\n menu,\n hiddenFixedIcon,\n position,\n onActualWidthChange,\n onExpandedStateChange,\n } = props;\n\n const showUserDefinedIcon = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"sidebar-show-user-defined-icon\"],\n []\n );\n\n const storage = useMemo(() => new JsonStorage(localStorage), []);\n const history = getHistory();\n const currentApp = useCurrentApp();\n const [location, setLocation] = useState(history.location);\n const { pathname, search } = location;\n\n const [isFirstUsedTooltip, setIsFirstUsedTooltip] = useState<boolean>(\n !storage.getItem(SIDE_BAR_HAS_BEEN_USED)\n );\n const [showContentShadow, setShowContentShadow] = useState<boolean>();\n const [dragging, setDragging] = useState<boolean>();\n const [expandedState, setExpandedState] = useState<ExpandedState>(\n props.expandedState ||\n storage.getItem(SIDE_BAR_EXPAND_STATE) ||\n ExpandedState.Collapsed\n );\n\n const titleIcon = showUserDefinedIcon ? menu?.icon : currentApp?.menuIcon;\n\n const { selectedKeys, openedKeys, matchedKeys } = useMemo(() => {\n return initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n }, [menu?.menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n return unListen;\n }, [history]);\n\n const contentBottomPlaceholderRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (contentBottomPlaceholderRef.current) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.target === contentBottomPlaceholderRef.current) {\n setShowContentShadow(!entry.isIntersecting);\n }\n });\n },\n { threshold: 1 }\n );\n\n observer.observe(contentBottomPlaceholderRef.current);\n\n return () => {\n observer.disconnect();\n };\n }\n }, []);\n\n useEffect(() => {\n setExpandedState(\n props.expandedState ||\n storage.getItem(SIDE_BAR_EXPAND_STATE) ||\n ExpandedState.Collapsed\n );\n }, [props.expandedState]);\n\n useEffect(() => {\n storage.setItem(\n SIDE_BAR_EXPAND_STATE,\n expandedState === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Collapsed\n );\n }, [expandedState]);\n\n const handleFixedIconClick = (): void => {\n setIsFirstUsedTooltip(false);\n storage.setItem(SIDE_BAR_HAS_BEEN_USED, true);\n\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Collapsed\n : ExpandedState.Expanded;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const [expandedWidth, setExpandedWidth] = useState<number>(() => {\n // Use parseInt to compatible non-number types\n let memorizedWidth = parseInt(storage.getItem(SIDE_BAR_RESIZE_WIDTH), 10);\n if (memorizedWidth < sideBarWidth || Number.isNaN(memorizedWidth)) {\n memorizedWidth = sideBarWidth;\n }\n return memorizedWidth;\n });\n\n useEffect(() => {\n storage.setItem(SIDE_BAR_RESIZE_WIDTH, expandedWidth);\n }, [expandedWidth]);\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n const handleResizeDown: MouseEventHandler = (e) => {\n setDragging(true);\n\n // Prevent text selection when dragging\n if (e.cancelable) {\n e.preventDefault();\n }\n\n const offsetX = containerRef.current?.getBoundingClientRect().left ?? 0;\n\n const drag = debounceByAnimationFrame((e: MouseEvent) => {\n const x = e.clientX - offsetX;\n const width = x >= sideBarWidth ? x : sideBarWidth;\n\n setExpandedWidth(width);\n });\n const dragEnd = (e: MouseEvent) => {\n setDragging(false);\n e.preventDefault();\n\n window.removeEventListener(\"mousemove\", drag);\n window.removeEventListener(\"mouseup\", dragEnd);\n };\n\n window.addEventListener(\"mousemove\", drag, { passive: true });\n window.addEventListener(\"mouseup\", dragEnd);\n };\n\n const handleMouseEnter = (): void => {\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Hovered;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const handleMouseLeave = (): void => {\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Collapsed;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const sidebarActualWidth = useMemo(() => {\n return expandedState === ExpandedState.Expanded\n ? expandedWidth\n : sideBarCollapsedWidth;\n }, [expandedState, expandedWidth]);\n\n useEffect(() => {\n onActualWidthChange?.(sidebarActualWidth);\n }, [onActualWidthChange, sidebarActualWidth]);\n\n const getContainerWidth = (inner?: boolean) => {\n // With static position, when not expanded, the outer container will keep\n // collapsed even if hovered, while only the inner container will expand.\n if (position === \"static\") {\n return expandedState === ExpandedState.Expanded ||\n (inner && expandedState === ExpandedState.Hovered)\n ? expandedWidth\n : sideBarCollapsedWidth;\n }\n return expandedState === ExpandedState.Collapsed\n ? sideBarCollapsedWidth\n : expandedWidth;\n };\n\n useEffect(() => {\n const container = containerRef.current;\n container?.addEventListener(\"mouseenter\", handleMouseEnter);\n container?.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n container?.removeEventListener(\"mouseenter\", handleMouseEnter);\n container?.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n return (\n <div\n className={classNames(\"sidebar-container\", `state-${expandedState}`, {\n dragging,\n })}\n style={{ width: getContainerWidth() }}\n ref={containerRef}\n data-testid=\"side-bar\"\n >\n <div className=\"inner\" style={{ width: getContainerWidth(true) }}>\n <div className=\"header\">\n <div className=\"menu-title\">\n <div className={classNames(\"menu-title-icon-container\")}>\n {titleIcon ? (\n <WrappedIcon\n {...(titleIcon as GeneralIconProps)}\n className=\"menu-title-icon\"\n />\n ) : (\n <span className=\"menu-title-point\" />\n )}\n </div>\n <div className=\"menu-title-text\" title={menu?.title}>\n {menu?.title}\n </div>\n </div>\n </div>\n\n <div\n className={classNames(\"content\", {\n \"show-shadow\": showContentShadow,\n })}\n >\n <SidebarMenu\n selectedKeys={selectedKeys}\n openedKeys={openedKeys}\n matchedKeys={matchedKeys}\n menu={menu}\n expandedState={expandedState}\n />\n <div ref={contentBottomPlaceholderRef} />\n </div>\n\n <div className=\"footer\">\n {!hiddenFixedIcon && (\n <WrappedTooltip\n content={\n (expandedState === ExpandedState.Expanded\n ? isFirstUsedTooltip\n ? t(K.CLICK_TO_FIX_NAVIGATION, {\n action: t(K.UNPIN_NAVIGATION),\n })\n : t(K.UNPIN_NAVIGATION)\n : isFirstUsedTooltip\n ? t(K.CLICK_TO_FIX_NAVIGATION, {\n action: t(K.FIXED_NAVIGATION),\n })\n : t(K.FIXED_NAVIGATION)) as string\n }\n >\n <i className=\"fixed-icon\" onClick={handleFixedIconClick}>\n <FixedSvg\n style={{\n display:\n expandedState === ExpandedState.Expanded\n ? undefined\n : \"none\",\n }}\n />\n <ToFixedSvg\n style={{\n display:\n expandedState === ExpandedState.Expanded\n ? \"none\"\n : undefined,\n }}\n />\n </i>\n </WrappedTooltip>\n )}\n </div>\n {expandedState === ExpandedState.Expanded && (\n <span className=\"resize-line\" onMouseDown={handleResizeDown} />\n )}\n </div>\n </div>\n );\n}\n","export class JsonStorage {\n constructor(storage) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"brick-next-\";\n this.storage = storage;\n this.prefix = prefix;\n }\n setItem(name, value) {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n getItem(name) {\n return JSON.parse(this.storage.getItem(this.prefix + name));\n }\n removeItem(name) {\n return this.storage.removeItem(this.prefix + name);\n }\n clear() {\n return this.storage.clear();\n }\n}\n//# sourceMappingURL=JsonStorage.js.map","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","// The debounce function receives our function as a parameter\nexport function debounceByAnimationFrame(fn) {\n // This holds the requestAnimationFrame reference, so we can cancel it if we wish\n let frame;\n const cancel = () => cancelAnimationFrame(frame);\n\n // The debounce function returns a new function that can receive a variable number of arguments\n const func = function () {\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n params[_key] = arguments[_key];\n }\n // If the frame variable has been defined, clear it now, and queue for next frame\n if (frame) {\n cancel();\n }\n\n // Queue our function call for the next frame\n frame = requestAnimationFrame(() => {\n // Call our function and pass any params we received\n fn(...params);\n });\n };\n func.cancel = cancel;\n return func;\n}\n//# sourceMappingURL=debounceByAnimationFrame.js.map","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}"],"names":["isGroup","item","type","isSubMenu","groupAsSubMenu","Boolean","initMenuItemAndMatchCurrentPathKeys","menuItems","pathname","search","parentCursor","selectedKeys","openedKeys","matchedKeys","cursor","forEach","key","tmp","items","push","length","defaultExpanded","to","parsePath","escapedPath","replace","match","matchPath","path","exact","activeMatchSearch","getMatchOfSearch","Array","isArray","activeIncludes","include","paths","isObject","_parsedPath","parsedPath","hasSearch","includes","activeExcludes","parsedPathWithSearch","matchMenuItem","String","keyPath","split","i","slice","join","currentSearch","toSearch","current","URLSearchParams","value","entries","_current$get","get","K","NS","locales","en","UNPIN_NAVIGATION","FIXED_NAVIGATION","CLICK_TO_FIX_NAVIGATION","zh","_classPrivateFieldGet2","s","a","_classPrivateFieldInitSpec","obj","privateMap","set","module","exports","cssWithMappingToString","list","toString","this","map","content","needLayer","concat","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","id","_k","toPropertyKey","t","e","Symbol","toPrimitive","call","r","TypeError","_checkPrivateRedeclaration","privateCollection","has","_assertClassBrand","n","arguments","setFunctionName","description","Object","defineProperty","configurable","applyDecs2311","o","c","u","f","l","p","d","metadata","m","h","create","y","v","g","apply","b","applyDec","w","D","S","j","E","I","P","F","getOwnPropertyDescriptor","Error","name","N","O","z","A","H","kind","addInitializer","bind","access","init","unshift","splice","enumerable","prototype","checkInRHS","sidebarMenuItemTagNameSet","Set","isSidebarMenuItem","element","tagName","useUpdateMenuCollapsedState","menuCollapsed","slotRef","useRef","updateChildrenMenuCollapsedState","useCallback","_slotRef$current","assignedElements","ele","useEffect","slotElem","handleSlotchange","addEventListener","removeEventListener","SIDE_BAR_HAS_BEEN_USED","SIDE_BAR_EXPAND_STATE","SIDE_BAR_RESIZE_WIDTH","ExpandedState","sideBarWidth","parseInt","getCssPropertyValue","document","body","sideBarCollapsedWidth","SidebarMenuContext","createContext","WrappedSidebarMenu","wrapBrick","WrappedSidebarMenuItem","WrappedSidebarMenuGroup","WrappedSidebarMenuSubmenu","MenuSimpleItem","props","href","target","icon","text","inSubmenu","useContext","React","url","selected","MenuGroup","title","top","isSelected","collapsable","slot","MenuItem","_extends","MenuSubmenu","collapsed","SidebarMenu","_menu$menuItems","menu","expandedState","Provider","Collapsed","hasOwn","hasOwnProperty","classNames","classes","arg","appendClass","parseValue","newClass","default","___CSS_LOADER_EXPORT___","xmlns","width","height","viewBox","fill","fillRule","_classPrivateMethodInitSpec","privateSet","add","_classPrivateGetter","_classPrivateFieldSet2","_checkInRHS","initializeReactI18n","defineElement","property","event","createDecorators","WrappedTooltip","WrappedIcon","_EoSidebar","_A","WeakMap","_B","_C","_D","_E","_EoSidebar_brand","WeakSet","_handleActualWidthChange","_F","_handleExpandedStateChange","EoSidebar","ReactNextElement","constructor","_init_menu","_init_extra_menu","_init_hiddenFixedIcon","_init_extra_hiddenFixedIcon","_init_expandedState","_init_extra_expandedState","_init_position","_init_extra_position","_init_actualWidthChangeEvent","_init_extra_actualWidthChangeEvent","actualWidth","_get_actualWidthChangeEvent","emit","_init_expandedStateChangeEvent","_init_extra_expandedStateChangeEvent","state","_get_expandedStateChangeEvent","_classPrivateFieldGet","_classPrivateFieldSet","hiddenFixedIcon","position","render","EoSidebarComponent","onActualWidthChange","onExpandedStateChange","useTranslation","showUserDefinedIcon","_getRuntime","getRuntime","getFeatureFlags","storage","useMemo","JsonStorage","localStorage","history","getHistory","currentApp","useCurrentApp","location","setLocation","useState","isFirstUsedTooltip","setIsFirstUsedTooltip","getItem","showContentShadow","setShowContentShadow","dragging","setDragging","setExpandedState","titleIcon","menuIcon","unListen","listen","contentBottomPlaceholderRef","observer","IntersectionObserver","entry","isIntersecting","threshold","observe","disconnect","setItem","Expanded","expandedWidth","setExpandedWidth","memorizedWidth","Number","isNaN","containerRef","handleMouseEnter","newState","Hovered","handleMouseLeave","sidebarActualWidth","getContainerWidth","inner","container","className","style","ref","action","onClick","handleFixedIconClick","FixedSvg","display","ToFixedSvg","onMouseDown","_containerRef$current","_containerRef$current2","cancelable","preventDefault","offsetX","getBoundingClientRect","left","drag","debounceByAnimationFrame","x","clientX","dragEnd","window","passive","_EoSidebar2","_set_actualWidthChangeEvent","_set_expandedStateChangeEvent","_initClass","_applyDecs","styleTexts","styleText","attribute","_","prefix","JSON","stringify","parse","removeItem","clear","_typeof","iterator","fn","frame","cancel","cancelAnimationFrame","func","_len","params","_key","requestAnimationFrame","assign","source"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/eo-sidebar.f56a5176.js","mappings":"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","sources":["webpack:///../../node_modules/@next-shared/general/dist/esm/menu.js","webpack:///./src/sidebar/i18n.ts","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","webpack:///../../node_modules/css-loader/dist/runtime/api.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/assertClassBrand.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/setFunctionName.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/applyDecs2311.js","webpack:///./src/sidebar/utils.tsx","webpack:///../../node_modules/classnames/index.js","webpack:///./src/sidebar/styles.shadow.css","webpack:///./src/images/toFixed.svg","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js","webpack:///./src/images/fixed.svg","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js","webpack:///../../node_modules/css-loader/dist/runtime/noSourceMaps.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/checkInRHS.js","webpack:///./src/sidebar/index.tsx","webpack:///../../node_modules/@next-shared/general/dist/esm/JsonStorage.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///../../node_modules/@next-shared/general/dist/esm/debounceByAnimationFrame.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/extends.js"],"sourcesContent":["import { parsePath } from \"history\";\nimport { matchPath } from \"@next-core/runtime\";\nimport { isObject } from \"lodash\";\nexport function isGroup(item) {\n return item.type === \"group\";\n}\nexport function isSubMenu(item, groupAsSubMenu) {\n return Boolean(item.type === \"subMenu\" || groupAsSubMenu && item.type === \"group\");\n}\nexport function initMenuItemAndMatchCurrentPathKeys(menuItems, pathname, search, parentCursor) {\n const selectedKeys = [];\n const openedKeys = [];\n const matchedKeys = [];\n let cursor = 0;\n menuItems && menuItems.forEach(item => {\n // key的格式最终为0,1,2,0.1,0.2,0.1.1,0.1.2\n item.key = parentCursor === \"\" ? `${cursor}` : `${parentCursor}.${cursor}`;\n if (isGroup(item) || isSubMenu(item)) {\n const tmp = initMenuItemAndMatchCurrentPathKeys(item.items, pathname, search, item.key);\n selectedKeys.push(...tmp.selectedKeys);\n if (tmp.selectedKeys.length || item.defaultExpanded) {\n openedKeys.push(item.key);\n }\n openedKeys.push(...tmp.openedKeys);\n matchedKeys.push(...tmp.matchedKeys);\n } else {\n if (matchMenuItem(item, pathname, search)) {\n selectedKeys.push(String(item.key));\n const keyPath = item.key.split(\".\");\n for (let i = 0; i < keyPath.length; i++) {\n matchedKeys.push(keyPath.slice(0, i + 1).join(\".\"));\n }\n }\n }\n cursor += 1;\n });\n if (selectedKeys.length && parentCursor !== \"\") {\n openedKeys.push(parentCursor);\n }\n return {\n selectedKeys: selectedKeys,\n openedKeys: openedKeys,\n matchedKeys: matchedKeys\n };\n}\nfunction getMatchOfSearch(currentSearch, toSearch) {\n const current = new URLSearchParams(currentSearch);\n const to = new URLSearchParams(toSearch);\n for (const [key, value] of to.entries()) {\n var _current$get;\n // Allow `?k=` to match `?` (when `k` doesn't exist)\n if (((_current$get = current.get(key)) !== null && _current$get !== void 0 ? _current$get : \"\") !== value) {\n return false;\n }\n }\n return true;\n}\nexport function matchMenuItem(item, pathname, search) {\n if (!item.to) return false;\n const to = typeof item.to === \"object\" ? item.to : parsePath(item.to);\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath = to.pathname.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n let match = !!matchPath(pathname, {\n path: escapedPath,\n exact: item.exact\n });\n if (match && item.activeMatchSearch) {\n match = getMatchOfSearch(search, to.search);\n }\n if (!match && Array.isArray(item.activeIncludes)) {\n for (const include of item.activeIncludes) {\n let paths;\n let exact = true;\n if (isObject(include)) {\n paths = Array.isArray(include.path) ? include.path : [include.path];\n exact = include.exact;\n } else {\n paths = [include];\n }\n for (const path of paths) {\n var _parsedPath;\n let parsedPath;\n const hasSearch = path.includes(\"?\");\n if (hasSearch) {\n parsedPath = parsePath(path);\n }\n match = !!matchPath(pathname, {\n path: hasSearch ? parsedPath.pathname : path,\n exact\n });\n if (match && (_parsedPath = parsedPath) !== null && _parsedPath !== void 0 && _parsedPath.search) {\n match = getMatchOfSearch(search, parsedPath.search);\n }\n if (match) {\n break;\n }\n }\n if (match) {\n break;\n }\n }\n }\n if (match && Array.isArray(item.activeExcludes)) {\n for (const include of item.activeExcludes) {\n let paths;\n let exact = true;\n if (isObject(include)) {\n paths = Array.isArray(include.path) ? include.path : [include.path];\n exact = include.exact;\n } else {\n paths = [include];\n }\n for (const path of paths) {\n let parsedPathWithSearch;\n if (path.includes(\"?\")) {\n parsedPathWithSearch = parsePath(path);\n }\n match = !(matchPath(pathname, {\n path: parsedPathWithSearch ? parsedPathWithSearch.pathname : path,\n exact\n }) && (!parsedPathWithSearch || getMatchOfSearch(search, parsedPathWithSearch.search)));\n if (!match) {\n break;\n }\n }\n if (!match) {\n break;\n }\n }\n }\n return match;\n}\n//# sourceMappingURL=menu.js.map","export enum K {\n CLICK_TO_FIX_NAVIGATION = \"CLICK_TO_FIX_NAVIGATION\",\n UNPIN_NAVIGATION = \"UNPIN_NAVIGATION\",\n FIXED_NAVIGATION = \"FIXED_NAVIGATION\",\n}\n\nconst en: Locale = {\n UNPIN_NAVIGATION: \"Unpin navigation\",\n FIXED_NAVIGATION: \"Fixed navigation\",\n CLICK_TO_FIX_NAVIGATION: \"Click to {{action}}\",\n};\n\nconst zh: Locale = {\n UNPIN_NAVIGATION: \"取消固定\",\n FIXED_NAVIGATION: \"固定导航\",\n CLICK_TO_FIX_NAVIGATION: \"点击{{action}}\",\n};\n\nexport const NS = \"bricks/nav/eo-sidebar\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [key in K]: string };\n","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateFieldGet2(s, a) {\n return s.get(assertClassBrand(s, a));\n}","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateFieldInitSpec(obj, privateMap, value) {\n checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","export default function _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}","export default function _assertClassBrand(e, t, n) {\n if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;\n throw new TypeError(\"Private element is not present on this object\");\n}","import _typeof from \"./typeof.js\";\nexport default function setFunctionName(e, t, n) {\n \"symbol\" == _typeof(t) && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\");\n try {\n Object.defineProperty(e, \"name\", {\n configurable: !0,\n value: n ? n + \" \" + t : t\n });\n } catch (e) {}\n return e;\n}","import _typeof from \"./typeof.js\";\nimport checkInRHS from \"./checkInRHS.js\";\nimport setFunctionName from \"./setFunctionName.js\";\nimport toPropertyKey from \"./toPropertyKey.js\";\nexport default function applyDecs2311(e, t, n, r, o, i) {\n var a,\n c,\n u,\n s,\n f,\n l,\n p,\n d = Symbol.metadata || Symbol[\"for\"](\"Symbol.metadata\"),\n m = Object.defineProperty,\n h = Object.create,\n y = [h(null), h(null)],\n v = t.length;\n function g(t, n, r) {\n return function (o, i) {\n n && (i = o, o = e);\n for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []);\n return r ? i : o;\n };\n }\n function b(e, t, n, r) {\n if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\"));\n return e;\n }\n function applyDec(e, t, n, r, o, i, u, s, f, l, p) {\n function d(e) {\n if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\");\n }\n var h = [].concat(t[0]),\n v = t[3],\n w = !u,\n D = 1 === o,\n S = 3 === o,\n j = 4 === o,\n E = 2 === o;\n function I(t, n, r) {\n return function (o, i) {\n return n && (i = o, o = e), r && r(o), P[t].call(o, i);\n };\n }\n if (!w) {\n var P = {},\n k = [],\n F = S ? \"get\" : j || D ? \"set\" : \"value\";\n if (f ? (l || D ? P = {\n get: setFunctionName(function () {\n return v(this);\n }, r, \"get\"),\n set: function set(e) {\n t[4](this, e);\n }\n } : P[F] = v, l || setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) {\n if ((c = y[+s][r]) && 7 != (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\");\n y[+s][r] = o < 3 ? 1 : o;\n }\n }\n for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) {\n var z = b(h[O], \"A decorator\", \"be\", !0),\n A = n ? h[O - 1] : void 0,\n H = {},\n K = {\n kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o],\n name: r,\n metadata: a,\n addInitializer: function (e, t) {\n if (e.v) throw Error(\"attempted to call addInitializer after decoration was finished\");\n b(t, \"An initializer\", \"be\", !0), i.push(t);\n }.bind(null, H)\n };\n if (w) c = z.call(A, N, K), H.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (K[\"static\"] = s, K[\"private\"] = f, c = K.access = {\n has: f ? p.bind() : function (e) {\n return r in e;\n }\n }, j || (c.get = f ? E ? function (e) {\n return d(e), P.value;\n } : I(\"get\", 0, d) : function (e) {\n return e[r];\n }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) {\n e[r] = t;\n }), N = z.call(A, D ? {\n get: P.get,\n set: P.set\n } : P[F], K), H.v = 1, D) {\n if (\"object\" == _typeof(N) && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\");\n } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N);\n }\n return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N;\n }\n function w(e) {\n return m(e, d, {\n configurable: !0,\n enumerable: !0,\n value: a\n });\n }\n return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function l(e) {\n e && f.push(g(e));\n }, p = function p(t, r) {\n for (var i = 0; i < n.length; i++) {\n var a = n[i],\n c = a[1],\n l = 7 & c;\n if ((8 & c) == t && !l == r) {\n var p = a[2],\n d = !!a[3],\n m = 16 & c;\n applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) {\n return checkInRHS(t) === e;\n } : o);\n }\n }\n }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), {\n e: c,\n get c() {\n var n = [];\n return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)];\n }\n };\n}","import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\nimport { getCssPropertyValue } from \"@next-core/runtime\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n SidebarMenu as SidebarMenuType,\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type {\n EoSidebarMenu,\n EoSidebarMenuProps,\n} from \"./sidebar-menu/index.js\";\nimport type {\n EoSidebarMenuItem,\n EoSidebarMenuItemProps,\n} from \"./sidebar-menu-item/index.js\";\nimport type {\n EoSidebarMenuGroup,\n EoSidebarMenuGroupProps,\n} from \"./sidebar-menu-group/index.js\";\nimport type {\n EoSidebarMenuSubmenu,\n EoSidebarMenuSubmenuProps,\n} from \"./sidebar-menu-submenu/index.js\";\n\nconst sidebarMenuItemTagNameSet = new Set([\n \"EO-SIDEBAR-MENU-ITEM\",\n \"EO-SIDEBAR-MENU-GROUP\",\n \"EO-SIDEBAR-MENU-SUBMENU\",\n]);\n\nconst isSidebarMenuItem = (element: Element) =>\n sidebarMenuItemTagNameSet.has(element.tagName);\n\nexport function useUpdateMenuCollapsedState(menuCollapsed?: boolean) {\n const slotRef = useRef<HTMLSlotElement>(null);\n\n const updateChildrenMenuCollapsedState = useCallback(() => {\n slotRef.current?.assignedElements().forEach((ele) => {\n if (isSidebarMenuItem(ele)) {\n (ele as any).menuCollapsed = menuCollapsed;\n }\n });\n }, [menuCollapsed]);\n\n useEffect(() => {\n updateChildrenMenuCollapsedState();\n }, [menuCollapsed, updateChildrenMenuCollapsedState]);\n\n useEffect(() => {\n const slotElem = slotRef.current;\n const handleSlotchange = () => {\n updateChildrenMenuCollapsedState();\n };\n slotElem?.addEventListener(\"slotchange\", handleSlotchange);\n\n return () => {\n slotElem?.removeEventListener(\"slotchange\", handleSlotchange);\n };\n }, [updateChildrenMenuCollapsedState]);\n\n return [slotRef];\n}\n\nexport const SIDE_BAR_HAS_BEEN_USED = \"side-bar-has-been-used\";\nexport const SIDE_BAR_EXPAND_STATE = \"side-bar-expand-state\";\nexport const SIDE_BAR_RESIZE_WIDTH = \"side-bar-resize-width\";\n\nexport enum ExpandedState {\n Collapsed = \"collapsed\",\n Hovered = \"hovered\",\n Expanded = \"expanded\",\n}\n\nexport const sideBarWidth =\n parseInt(getCssPropertyValue(\"--side-bar-width\", document.body), 10) || 220;\nexport const sideBarCollapsedWidth =\n parseInt(\n getCssPropertyValue(\"--side-bar-collapsed-width\", document.body),\n 10\n ) || 60;\n\ninterface ContextOfSidebarMenu {\n selectedKeys: string[];\n openedKeys: string[];\n matchedKeys: string[];\n}\n\nconst SidebarMenuContext = createContext<ContextOfSidebarMenu>({\n selectedKeys: [],\n openedKeys: [],\n matchedKeys: [],\n});\n\nconst WrappedSidebarMenu = wrapBrick<EoSidebarMenu, EoSidebarMenuProps>(\n \"eo-sidebar-menu\"\n);\nconst WrappedSidebarMenuItem = wrapBrick<\n EoSidebarMenuItem,\n EoSidebarMenuItemProps\n>(\"eo-sidebar-menu-item\");\nconst WrappedSidebarMenuGroup = wrapBrick<\n EoSidebarMenuGroup,\n EoSidebarMenuGroupProps\n>(\"eo-sidebar-menu-group\");\nconst WrappedSidebarMenuSubmenu = wrapBrick<\n EoSidebarMenuSubmenu,\n EoSidebarMenuSubmenuProps\n>(\"eo-sidebar-menu-submenu\");\n\nfunction MenuSimpleItem(\n props: SidebarMenuSimpleItem & { id?: string; inSubmenu?: boolean }\n) {\n const { to, href, target, icon, text, id, inSubmenu } = props;\n const { selectedKeys } = useContext(SidebarMenuContext);\n\n return (\n <WrappedSidebarMenuItem\n url={to as any}\n href={href}\n target={target as any}\n icon={icon}\n inSubmenu={inSubmenu}\n selected={selectedKeys.includes(id!)}\n >\n {text}\n </WrappedSidebarMenuItem>\n );\n}\n\nfunction MenuGroup(\n props: SidebarMenuGroup & { id?: string; top?: boolean; inSubmenu?: boolean }\n) {\n const { title, items, id, top, inSubmenu } = props;\n const { matchedKeys } = useContext(SidebarMenuContext);\n const isSelected = id && matchedKeys.includes(id);\n\n if (items?.length > 0) {\n return (\n <WrappedSidebarMenuGroup selected={!!isSelected} collapsable={!top}>\n <span slot=\"title\">{title}</span>\n {props.items.map((item) => {\n return (\n <MenuItem\n key={item.key}\n {...item}\n id={item.key}\n top={false}\n inSubmenu={inSubmenu}\n />\n );\n })}\n </WrappedSidebarMenuGroup>\n );\n }\n return null;\n}\n\nfunction MenuSubmenu(props: SidebarMenuGroup & { id?: string }) {\n const { title, icon, items, id } = props;\n const { openedKeys, matchedKeys } = useContext(SidebarMenuContext);\n const isSelected = id && matchedKeys.includes(id);\n\n if (items?.length > 0) {\n return (\n <WrappedSidebarMenuSubmenu\n icon={icon}\n collapsed={!openedKeys.includes(id!)}\n selected={!!isSelected}\n >\n <span slot=\"title\">{title}</span>\n {props.items.map((item) => {\n return (\n <MenuItem\n key={item.key}\n {...item}\n id={item.key}\n top={false}\n inSubmenu={true}\n />\n );\n })}\n </WrappedSidebarMenuSubmenu>\n );\n }\n return null;\n}\n\nfunction MenuItem(\n props: SidebarMenuItem & { id?: string; top?: boolean; inSubmenu?: boolean }\n) {\n if (props.type === \"subMenu\") {\n return <MenuSubmenu {...props} />;\n } else if (props.type === \"group\") {\n return <MenuGroup {...props} />;\n } else {\n return <MenuSimpleItem {...(props as SidebarMenuSimpleItem)} />;\n }\n}\n\nexport function SidebarMenu(props: {\n menu?: SidebarMenuType;\n expandedState: ExpandedState;\n selectedKeys?: string[];\n openedKeys?: string[];\n matchedKeys?: string[];\n}) {\n const { menu, expandedState, selectedKeys, openedKeys, matchedKeys } = props;\n\n return (\n <SidebarMenuContext.Provider\n value={{\n selectedKeys: selectedKeys || [],\n openedKeys: openedKeys || [],\n matchedKeys: matchedKeys || [],\n }}\n >\n <WrappedSidebarMenu\n menuCollapsed={expandedState === ExpandedState.Collapsed}\n >\n {menu?.menuItems?.map((item) => {\n return <MenuItem key={item.key} {...item} id={item.key} top={true} />;\n })}\n </WrappedSidebarMenu>\n </SidebarMenuContext.Provider>\n );\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// 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:block}:host([hidden]){display:none}:host([position=\"static\"]){height:100%}*,\n*::before,\n*::after{box-sizing:border-box}.sidebar-container{position:relative;z-index:998;height:100%}.sidebar-container,\n.inner{transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}:host(:not([position=\"static\"])) .sidebar-container{position:fixed;left:0;top:var(--app-bar-height);height:calc(100vh - var(--app-bar-height))}.inner{position:absolute;left:0;height:100%;display:flex;flex-direction:column;background-color:var(--left-menu-bg);border-right:1px solid var(--left-sidebar-border-right)}.inner:hover{background-color:var(--left-menu-hover-bg)}.inner::before{content:\"\";position:absolute;left:0;right:0;top:0;bottom:0;z-index:-1;background:var(--sidebar-bg)}.header{padding:0 12px;margin-top:14px;height:52px;flex-shrink:0}.menu-title{height:100%;display:flex;align-items:center;color:var(--left-sidebar-large-title-color)}.menu-title-icon-container{flex-shrink:0;display:flex;justify-content:center;align-items:center;width:20px;height:20px;font-size:20px;line-height:0;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-title-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.menu-title-point{width:4px;height:4px;background:var(--antd-text-color);border-radius:50%}.menu-title-text{font-size:16px;font-weight:var(--font-weight-500);color:var(--left-sidebar-large-title-color);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.state-collapsed .menu-title{padding:0 calc(50% - 10px)}.state-hovered .menu-title,\n.state-expanded .menu-title{padding:0 12px}.state-collapsed .menu-title-icon-container{margin-right:12px}.state-hovered .menu-title-icon-container,\n.state-expanded .menu-title-icon-container{margin-right:0;width:0;opacity:0}.content{padding:0 12px;flex:1;overflow-y:auto;scrollbar-width:none}.content::-webkit-scrollbar{width:0;background:transparent}.content.show-shadow{box-shadow:0 -17px 10px -16px rgb(0 0 0/8%) inset}.footer{height:60px;flex-shrink:0;display:flex;align-items:center;justify-content:flex-end}.fixed-icon{display:flex;justify-content:center;align-items:center;width:20px;height:20px;margin-right:8px;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.fixed-icon > svg{width:100%;height:100%}.fixed-icon:hover > svg path[fill]{fill:var(--color-brand)}.state-collapsed .fixed-icon{visibility:hidden;opacity:0}.state-hovered .fixed-icon,\n.state-expanded .fixed-icon{visibility:visible;opacity:1}.state-hovered .inner{box-shadow:var(--left-sidebar-shadow)}.resize-line{position:absolute;right:-2px;height:100%;width:2px;cursor:col-resize}.resize-line:hover,\n.resize-line:active{background-color:rgba(26,122,255,1)}.dragging,\n.dragging .inner{transition:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import * as React from \"react\";\nconst SvgToFixed = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} viewBox=\"0 0 20 20\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path d=\"M0 0h20v20H0z\" /><path fill=\"#595959\" fillRule=\"nonzero\" d=\"m13.06 3.765 3.22 3.08c.42.28.42.84.14 1.26-.42.42-.98.42-1.26.14l-.14-.14-.28-.28-3.22 4.62.98.98c.28.42.28.98-.14 1.26-.28.28-.7.28-1.12 0l-5.88-6.02q-.42-.63 0-1.26c.28-.28.84-.28 1.12 0l.98.98 4.62-3.22-.14-.14c-.42-.42-.42-.84-.14-1.26.28-.28.84-.42 1.26 0m-4.76 9.1-1.12-1.12c-.98 1.12-2.52 2.8-2.8 3.22-.42.42-.7.98-.98 1.54q1.05-.21 1.68-.84c.42-.28 2.1-1.82 3.22-2.8\" /></g></svg>;\nexport default SvgToFixed;","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateMethodInitSpec(obj, privateSet) {\n checkPrivateRedeclaration(obj, privateSet);\n privateSet.add(obj);\n}","import * as React from \"react\";\nconst SvgFixed = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} viewBox=\"0 0 20 20\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path d=\"M0 0h20v20H0z\" /><path fill=\"#595959\" fillRule=\"nonzero\" d=\"m14.599 11.59-1.685-1.606-.348-4.876.93-1.044s.617-.93-.62-1.045L7.323 3s-.85.657-.097 1.296l.754.755-.385 4.76-1.49 1.683s-.388.774.328 1.065l2.961-.02.668 3.887H6.388V17h7.832v-.574h-3.743l.6-3.946 3.154.097s.812-.464.368-.986\" /></g></svg>;\nexport default SvgFixed;","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateGetter(s, r, a) {\n return a(assertClassBrand(s, r));\n}","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateFieldSet2(s, a, r) {\n return s.set(assertClassBrand(s, a), r), r;\n}","\"use strict\";\n\nmodule.exports = function (i) {\n return i[1];\n};","import _typeof from \"./typeof.js\";\nexport default function _checkInRHS(e) {\n if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? _typeof(e) : \"null\"));\n return e;\n}","import React, {\n MouseEventHandler,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { SidebarMenu as SidebarMenuType } from \"@next-shared/general/types\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport FixedSvg from \"../images/fixed.svg\";\nimport ToFixedSvg from \"../images/toFixed.svg\";\nimport { debounceByAnimationFrame } from \"@next-shared/general/debounceByAnimationFrame\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport {\n ExpandedState,\n SIDE_BAR_EXPAND_STATE,\n SIDE_BAR_HAS_BEEN_USED,\n SIDE_BAR_RESIZE_WIDTH,\n SidebarMenu,\n sideBarCollapsedWidth,\n sideBarWidth,\n} from \"./utils.js\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport classNames from \"classnames\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport { UnregisterCallback } from \"history\";\nimport { getHistory, getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarProps {\n menu: SidebarMenuType;\n expandedState?: ExpandedState;\n hiddenFixedIcon?: boolean;\n position?: \"static\" | \"fixed\";\n}\n\nexport interface EoSidebarEvents {\n \"actual.width.change\": CustomEvent<number>;\n \"expanded.state.change\": CustomEvent<ExpandedState>;\n}\n\nexport interface EoSidebarEventsMapping {\n onActualWidthChange: \"actual.width.change\";\n onExpandedStateChange: \"expanded.state.change\";\n}\n\n/**\n * 侧边栏\n *\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar\", {\n styleTexts: [styleText],\n})\nclass EoSidebar extends ReactNextElement implements EoSidebarProps {\n /**\n * 菜单数据\n */\n @property({ attribute: false })\n accessor menu!: SidebarMenuType;\n\n /**\n * 是否隐藏固定按钮\n */\n @property({ type: Boolean })\n accessor hiddenFixedIcon: boolean | undefined;\n\n /**\n * 侧栏状态\n */\n @property()\n accessor expandedState: ExpandedState | undefined;\n\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" | undefined;\n\n /**\n * 宽度变化时触发\n * @detail 当前宽度\n */\n @event({ type: \"actual.width.change\" })\n accessor #actualWidthChangeEvent!: EventEmitter<number>;\n #handleActualWidthChange = (actualWidth: number): void => {\n this.#actualWidthChangeEvent.emit(actualWidth);\n };\n\n /**\n * 侧栏状态变化时触发\n * @detail 侧栏状态\n */\n @event({ type: \"expanded.state.change\" })\n accessor #expandedStateChangeEvent!: EventEmitter<ExpandedState>;\n #handleExpandedStateChange = (state: ExpandedState): void => {\n this.expandedState = state;\n this.#expandedStateChangeEvent.emit(state);\n };\n\n render() {\n return (\n <EoSidebarComponent\n menu={this.menu}\n expandedState={this.expandedState}\n hiddenFixedIcon={this.hiddenFixedIcon}\n position={this.position}\n onActualWidthChange={this.#handleActualWidthChange}\n onExpandedStateChange={this.#handleExpandedStateChange}\n />\n );\n }\n}\n\ninterface EoSidebarComponentProps extends EoSidebarProps {\n onActualWidthChange?: (actualWidth: number) => void;\n onExpandedStateChange?: (state: ExpandedState) => void;\n}\n\nexport function EoSidebarComponent(props: EoSidebarComponentProps) {\n const { t } = useTranslation(NS);\n const {\n menu,\n hiddenFixedIcon,\n position,\n onActualWidthChange,\n onExpandedStateChange,\n } = props;\n\n const showUserDefinedIcon = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"sidebar-show-user-defined-icon\"],\n []\n );\n\n const storage = useMemo(() => new JsonStorage(localStorage), []);\n const history = getHistory();\n const currentApp = useCurrentApp();\n const [location, setLocation] = useState(history.location);\n const { pathname, search } = location;\n\n const [isFirstUsedTooltip, setIsFirstUsedTooltip] = useState<boolean>(\n !storage.getItem(SIDE_BAR_HAS_BEEN_USED)\n );\n const [showContentShadow, setShowContentShadow] = useState<boolean>();\n const [dragging, setDragging] = useState<boolean>();\n const [expandedState, setExpandedState] = useState<ExpandedState>(\n props.expandedState ||\n storage.getItem(SIDE_BAR_EXPAND_STATE) ||\n ExpandedState.Collapsed\n );\n\n const titleIcon = showUserDefinedIcon ? menu?.icon : currentApp?.menuIcon;\n\n const { selectedKeys, openedKeys, matchedKeys } = useMemo(() => {\n return initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n }, [menu?.menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n return unListen;\n }, [history]);\n\n const contentBottomPlaceholderRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (contentBottomPlaceholderRef.current) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.target === contentBottomPlaceholderRef.current) {\n setShowContentShadow(!entry.isIntersecting);\n }\n });\n },\n { threshold: 1 }\n );\n\n observer.observe(contentBottomPlaceholderRef.current);\n\n return () => {\n observer.disconnect();\n };\n }\n }, []);\n\n useEffect(() => {\n setExpandedState(\n props.expandedState ||\n storage.getItem(SIDE_BAR_EXPAND_STATE) ||\n ExpandedState.Collapsed\n );\n }, [props.expandedState]);\n\n useEffect(() => {\n storage.setItem(\n SIDE_BAR_EXPAND_STATE,\n expandedState === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Collapsed\n );\n }, [expandedState]);\n\n const handleFixedIconClick = (): void => {\n setIsFirstUsedTooltip(false);\n storage.setItem(SIDE_BAR_HAS_BEEN_USED, true);\n\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Collapsed\n : ExpandedState.Expanded;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const [expandedWidth, setExpandedWidth] = useState<number>(() => {\n // Use parseInt to compatible non-number types\n let memorizedWidth = parseInt(storage.getItem(SIDE_BAR_RESIZE_WIDTH), 10);\n if (memorizedWidth < sideBarWidth || Number.isNaN(memorizedWidth)) {\n memorizedWidth = sideBarWidth;\n }\n return memorizedWidth;\n });\n\n useEffect(() => {\n storage.setItem(SIDE_BAR_RESIZE_WIDTH, expandedWidth);\n }, [expandedWidth]);\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n const handleResizeDown: MouseEventHandler = (e) => {\n setDragging(true);\n\n // Prevent text selection when dragging\n if (e.cancelable) {\n e.preventDefault();\n }\n\n const offsetX = containerRef.current?.getBoundingClientRect().left ?? 0;\n\n const drag = debounceByAnimationFrame((e: MouseEvent) => {\n const x = e.clientX - offsetX;\n const width = x >= sideBarWidth ? x : sideBarWidth;\n\n setExpandedWidth(width);\n });\n const dragEnd = (e: MouseEvent) => {\n setDragging(false);\n e.preventDefault();\n\n window.removeEventListener(\"mousemove\", drag);\n window.removeEventListener(\"mouseup\", dragEnd);\n };\n\n window.addEventListener(\"mousemove\", drag, { passive: true });\n window.addEventListener(\"mouseup\", dragEnd);\n };\n\n const handleMouseEnter = (): void => {\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Hovered;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const handleMouseLeave = (): void => {\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Collapsed;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const sidebarActualWidth = useMemo(() => {\n return expandedState === ExpandedState.Expanded\n ? expandedWidth\n : sideBarCollapsedWidth;\n }, [expandedState, expandedWidth]);\n\n useEffect(() => {\n onActualWidthChange?.(sidebarActualWidth);\n }, [onActualWidthChange, sidebarActualWidth]);\n\n const getContainerWidth = (inner?: boolean) => {\n // With static position, when not expanded, the outer container will keep\n // collapsed even if hovered, while only the inner container will expand.\n if (position === \"static\") {\n return expandedState === ExpandedState.Expanded ||\n (inner && expandedState === ExpandedState.Hovered)\n ? expandedWidth\n : sideBarCollapsedWidth;\n }\n return expandedState === ExpandedState.Collapsed\n ? sideBarCollapsedWidth\n : expandedWidth;\n };\n\n useEffect(() => {\n const container = containerRef.current;\n container?.addEventListener(\"mouseenter\", handleMouseEnter);\n container?.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n container?.removeEventListener(\"mouseenter\", handleMouseEnter);\n container?.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n return (\n <div\n className={classNames(\"sidebar-container\", `state-${expandedState}`, {\n dragging,\n })}\n style={{ width: getContainerWidth() }}\n ref={containerRef}\n data-testid=\"side-bar\"\n >\n <div className=\"inner\" style={{ width: getContainerWidth(true) }}>\n <div className=\"header\">\n <div className=\"menu-title\">\n <div className={classNames(\"menu-title-icon-container\")}>\n {titleIcon ? (\n <WrappedIcon\n {...(titleIcon as GeneralIconProps)}\n className=\"menu-title-icon\"\n />\n ) : (\n <span className=\"menu-title-point\" />\n )}\n </div>\n <div className=\"menu-title-text\" title={menu?.title}>\n {menu?.title}\n </div>\n </div>\n </div>\n\n <div\n className={classNames(\"content\", {\n \"show-shadow\": showContentShadow,\n })}\n >\n <SidebarMenu\n selectedKeys={selectedKeys}\n openedKeys={openedKeys}\n matchedKeys={matchedKeys}\n menu={menu}\n expandedState={expandedState}\n />\n <div ref={contentBottomPlaceholderRef} />\n </div>\n\n <div className=\"footer\">\n {!hiddenFixedIcon && (\n <WrappedTooltip\n content={\n (expandedState === ExpandedState.Expanded\n ? isFirstUsedTooltip\n ? t(K.CLICK_TO_FIX_NAVIGATION, {\n action: t(K.UNPIN_NAVIGATION),\n })\n : t(K.UNPIN_NAVIGATION)\n : isFirstUsedTooltip\n ? t(K.CLICK_TO_FIX_NAVIGATION, {\n action: t(K.FIXED_NAVIGATION),\n })\n : t(K.FIXED_NAVIGATION)) as string\n }\n >\n <i className=\"fixed-icon\" onClick={handleFixedIconClick}>\n <FixedSvg\n style={{\n display:\n expandedState === ExpandedState.Expanded\n ? undefined\n : \"none\",\n }}\n />\n <ToFixedSvg\n style={{\n display:\n expandedState === ExpandedState.Expanded\n ? \"none\"\n : undefined,\n }}\n />\n </i>\n </WrappedTooltip>\n )}\n </div>\n {expandedState === ExpandedState.Expanded && (\n <span className=\"resize-line\" onMouseDown={handleResizeDown} />\n )}\n </div>\n </div>\n );\n}\n","export class JsonStorage {\n constructor(storage) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"brick-next-\";\n this.storage = storage;\n this.prefix = prefix;\n }\n setItem(name, value) {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n getItem(name) {\n return JSON.parse(this.storage.getItem(this.prefix + name));\n }\n removeItem(name) {\n return this.storage.removeItem(this.prefix + name);\n }\n clear() {\n return this.storage.clear();\n }\n}\n//# sourceMappingURL=JsonStorage.js.map","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","// The debounce function receives our function as a parameter\nexport function debounceByAnimationFrame(fn) {\n // This holds the requestAnimationFrame reference, so we can cancel it if we wish\n let frame;\n const cancel = () => cancelAnimationFrame(frame);\n\n // The debounce function returns a new function that can receive a variable number of arguments\n const func = function () {\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n params[_key] = arguments[_key];\n }\n // If the frame variable has been defined, clear it now, and queue for next frame\n if (frame) {\n cancel();\n }\n\n // Queue our function call for the next frame\n frame = requestAnimationFrame(() => {\n // Call our function and pass any params we received\n fn(...params);\n });\n };\n func.cancel = cancel;\n return func;\n}\n//# sourceMappingURL=debounceByAnimationFrame.js.map","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}"],"names":["isGroup","item","type","isSubMenu","groupAsSubMenu","Boolean","initMenuItemAndMatchCurrentPathKeys","menuItems","pathname","search","parentCursor","selectedKeys","openedKeys","matchedKeys","cursor","forEach","key","tmp","items","push","length","defaultExpanded","to","parsePath","escapedPath","replace","match","matchPath","path","exact","activeMatchSearch","getMatchOfSearch","Array","isArray","activeIncludes","include","paths","isObject","_parsedPath","parsedPath","hasSearch","includes","activeExcludes","parsedPathWithSearch","matchMenuItem","String","keyPath","split","i","slice","join","currentSearch","toSearch","current","URLSearchParams","value","entries","_current$get","get","K","NS","locales","en","UNPIN_NAVIGATION","FIXED_NAVIGATION","CLICK_TO_FIX_NAVIGATION","zh","_classPrivateFieldGet2","s","a","_classPrivateFieldInitSpec","obj","privateMap","set","module","exports","cssWithMappingToString","list","toString","this","map","content","needLayer","concat","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","id","_k","toPropertyKey","t","e","Symbol","toPrimitive","call","r","TypeError","_checkPrivateRedeclaration","privateCollection","has","_assertClassBrand","n","arguments","setFunctionName","description","Object","defineProperty","configurable","applyDecs2311","o","c","u","f","l","p","d","metadata","m","h","create","y","v","g","apply","b","applyDec","w","D","S","j","E","I","P","F","getOwnPropertyDescriptor","Error","name","N","O","z","A","H","kind","addInitializer","bind","access","init","unshift","splice","enumerable","prototype","checkInRHS","sidebarMenuItemTagNameSet","Set","isSidebarMenuItem","element","tagName","useUpdateMenuCollapsedState","menuCollapsed","slotRef","useRef","updateChildrenMenuCollapsedState","useCallback","_slotRef$current","assignedElements","ele","useEffect","slotElem","handleSlotchange","addEventListener","removeEventListener","SIDE_BAR_HAS_BEEN_USED","SIDE_BAR_EXPAND_STATE","SIDE_BAR_RESIZE_WIDTH","ExpandedState","sideBarWidth","parseInt","getCssPropertyValue","document","body","sideBarCollapsedWidth","SidebarMenuContext","createContext","WrappedSidebarMenu","wrapBrick","WrappedSidebarMenuItem","WrappedSidebarMenuGroup","WrappedSidebarMenuSubmenu","MenuSimpleItem","props","href","target","icon","text","inSubmenu","useContext","React","url","selected","MenuGroup","title","top","isSelected","collapsable","slot","MenuItem","_extends","MenuSubmenu","collapsed","SidebarMenu","_menu$menuItems","menu","expandedState","Provider","Collapsed","hasOwn","hasOwnProperty","classNames","classes","arg","appendClass","parseValue","newClass","default","___CSS_LOADER_EXPORT___","xmlns","width","height","viewBox","fill","fillRule","_classPrivateMethodInitSpec","privateSet","add","_classPrivateGetter","_classPrivateFieldSet2","_checkInRHS","initializeReactI18n","defineElement","property","event","createDecorators","WrappedTooltip","WrappedIcon","_EoSidebar","_A","WeakMap","_B","_C","_D","_E","_EoSidebar_brand","WeakSet","_handleActualWidthChange","_F","_handleExpandedStateChange","EoSidebar","ReactNextElement","constructor","_init_menu","_init_extra_menu","_init_hiddenFixedIcon","_init_extra_hiddenFixedIcon","_init_expandedState","_init_extra_expandedState","_init_position","_init_extra_position","_init_actualWidthChangeEvent","_init_extra_actualWidthChangeEvent","actualWidth","_get_actualWidthChangeEvent","emit","_init_expandedStateChangeEvent","_init_extra_expandedStateChangeEvent","state","_get_expandedStateChangeEvent","_classPrivateFieldGet","_classPrivateFieldSet","hiddenFixedIcon","position","render","EoSidebarComponent","onActualWidthChange","onExpandedStateChange","useTranslation","showUserDefinedIcon","_getRuntime","getRuntime","getFeatureFlags","storage","useMemo","JsonStorage","localStorage","history","getHistory","currentApp","useCurrentApp","location","setLocation","useState","isFirstUsedTooltip","setIsFirstUsedTooltip","getItem","showContentShadow","setShowContentShadow","dragging","setDragging","setExpandedState","titleIcon","menuIcon","unListen","listen","contentBottomPlaceholderRef","observer","IntersectionObserver","entry","isIntersecting","threshold","observe","disconnect","setItem","Expanded","expandedWidth","setExpandedWidth","memorizedWidth","Number","isNaN","containerRef","handleMouseEnter","newState","Hovered","handleMouseLeave","sidebarActualWidth","getContainerWidth","inner","container","className","style","ref","action","onClick","handleFixedIconClick","FixedSvg","display","ToFixedSvg","onMouseDown","_containerRef$current","_containerRef$current2","cancelable","preventDefault","offsetX","getBoundingClientRect","left","drag","debounceByAnimationFrame","x","clientX","dragEnd","window","passive","_EoSidebar2","_set_actualWidthChangeEvent","_set_expandedStateChangeEvent","_initClass","_applyDecs","styleTexts","styleText","attribute","_","prefix","JSON","stringify","parse","removeItem","clear","_typeof","iterator","fn","frame","cancel","cancelAnimationFrame","func","_len","params","_key","requestAnimationFrame","assign","source"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_nav=globalThis.webpackChunk_next_bricks_nav||[]).push([[7159],{1189:(e,t,o)=>{o.d(t,{G:()=>c,i:()=>u});var s=o(7448),n=o(9005),a=o(1321),i=o(4167),r=o(4956);const l=new Set(["name","id","homepage","localeName"]);function c(e,t,o){if("string"==typeof e){if((0,a.isEvaluable)(e)){let c;const u={usedProperties:new Set,hasNonStaticUsage:!1};try{c=(0,a.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]=s.i18n.getFixedT(null,[t].filter(Boolean));break;case"APP":r[e]={...o,localeName:null==o?void 0:o.name}}const l=(0,i.supply)(c.attemptToVisitGlobals,r);let u=!0;for(const e of c.attemptToVisitGlobals)if(!(0,n.hasOwnProperty)(l,e)){u=!1;break}if(u)try{const t=(0,a.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)}}}else if(o)return e.replace(/\$\{\s*APP\s*\.\s*(?:name|localeName)\s*\}/g,(()=>o.name));return e}}function u(e){const t=new WeakMap,o=[];for(const o of e){var n;const e=`customize-menu/${o.menuId}~${o.app[0].appId}+${o.instanceId}`;Object.entries(null!==(n=o.i18n)&&void 0!==n?n:{}).forEach((t=>{let[o,n]=t;s.i18n.addResourceBundle(o,e,n)})),t.set(o,e)}return{menuWithI18n:t,dispose:()=>{for(const[e,t]of o)s.i18n.removeResourceBundle(e,t)}}}},3162:(e,t,o)=>{o.r(t),o.d(t,{getMenuConfigOptions:()=>a});var s=o(9005),n=o(1189);async function a(e){const t=[],{menuWithI18n:o,dispose:s}=(0,n.i)(e);for(const s of e){var a;t.push({label:`${null!==(a=(0,n.G)(s.title,o.get(s),s.overrideApp))&&void 0!==a?a:""} (${s.menuId})`,value:s.menuId})}return s(),t}customElements.define("nav.get-menu-config-options",(0,s.createProviderClass)(a))}}]);
2
- //# sourceMappingURL=get-menu-config-options.b141a9e3.js.map
1
+ "use strict";(globalThis.webpackChunk_next_bricks_nav=globalThis.webpackChunk_next_bricks_nav||[]).push([[7159],{1189:(e,t,o)=>{o.d(t,{G:()=>c,i:()=>u});var s=o(4726),n=o(4493),a=o(1321),i=o(4167),r=o(2065);const l=new Set(["name","id","homepage","localeName"]);function c(e,t,o){if("string"==typeof e){if((0,a.isEvaluable)(e)){let c;const u={usedProperties:new Set,hasNonStaticUsage:!1};try{c=(0,a.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]=s.i18n.getFixedT(null,[t].filter(Boolean));break;case"APP":r[e]={...o,localeName:null==o?void 0:o.name}}const l=(0,i.supply)(c.attemptToVisitGlobals,r);let u=!0;for(const e of c.attemptToVisitGlobals)if(!(0,n.hasOwnProperty)(l,e)){u=!1;break}if(u)try{const t=(0,a.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)}}}else if(o)return e.replace(/\$\{\s*APP\s*\.\s*(?:name|localeName)\s*\}/g,(()=>o.name));return e}}function u(e){const t=new WeakMap,o=[];for(const o of e){var n;const e=`customize-menu/${o.menuId}~${o.app[0].appId}+${o.instanceId}`;Object.entries(null!==(n=o.i18n)&&void 0!==n?n:{}).forEach((t=>{let[o,n]=t;s.i18n.addResourceBundle(o,e,n)})),t.set(o,e)}return{menuWithI18n:t,dispose:()=>{for(const[e,t]of o)s.i18n.removeResourceBundle(e,t)}}}},3162:(e,t,o)=>{o.r(t),o.d(t,{getMenuConfigOptions:()=>a});var s=o(4493),n=o(1189);async function a(e){const t=[],{menuWithI18n:o,dispose:s}=(0,n.i)(e);for(const s of e){var a;t.push({label:`${null!==(a=(0,n.G)(s.title,o.get(s),s.overrideApp))&&void 0!==a?a:""} (${s.menuId})`,value:s.menuId})}return s(),t}customElements.define("nav.get-menu-config-options",(0,s.createProviderClass)(a))}}]);
2
+ //# sourceMappingURL=get-menu-config-options.d5c02f8d.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/get-menu-config-options.b141a9e3.js","mappings":"+MAgBA,MAAMA,EAAkB,IAAIC,IAAI,CAAC,OAAQ,KAAM,WAAY,eAKpD,SAASC,EACdC,EACAC,EACAC,GAEA,GAAqB,iBAAVF,EAAX,CAGA,IAAIG,EAAAA,EAAAA,aAAYH,GAAQ,CAEtB,IAAII,EACJ,MAAMC,EAAqC,CACzCC,eAAgB,IAAIR,IACpBS,mBAAmB,GAErB,IACEH,GAAYI,EAAAA,EAAAA,aAAYR,EAAO,CAC7BS,YAAY,EACZC,MAAO,CACLC,mBAAmBC,EAAAA,EAAAA,yBAAwBP,EAAU,CAAC,UAG5D,CAAE,MAAOQ,GAEPC,QAAQD,MAAM,gCAAgCb,aAAkBa,EAClE,CAEA,GACET,KACEA,EAAUW,sBAAsBC,IAAI,QACnCd,IACEG,EAASE,mBACV,IAAIF,EAASC,gBAAgBW,OAAOC,GAClCrB,EAAgBmB,IAAIE,MAE1B,CACA,MAAMC,EAAmC,CAAC,EAC1C,IAAK,MAAMC,KAAOhB,EAAUW,sBAC1B,OAAQK,GACN,IAAK,OACHD,EAAQC,GAAOC,EAAAA,KAAKC,UAClB,KACA,CAACrB,GAAesB,OAAOC,UAEzB,MACF,IAAK,MACHL,EAAQC,GAAO,IACVlB,EACHuB,WAAYvB,aAAW,EAAXA,EAAawB,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,wCAAwCb,sBACxC+B,EAEJ,CAAE,MAAOlB,GAEPC,QAAQD,MACN,mCAAmCb,aACnCa,EAEJ,CAEJ,CACF,MAAO,GAAIX,EAET,OAAOF,EAAMoC,QACX,+CACA,IAAMlC,EAAYwB,OAGtB,OAAO1B,CArFP,CAsFF,CAEO,SAASqC,EAAmBC,GACjC,MAAMC,EAAe,IAAIC,QACnBC,EAAgD,GAEtD,IAAK,MAAMC,KAAQJ,EAAU,KAAAK,EAC3B,MAAMC,EAAoB,kBAAkBF,EAAKG,UAAUH,EAAKI,IAAI,GAAGC,SACrEL,EAAKM,aAGPC,OAAOC,QAAiB,QAAVP,EAACD,EAAKrB,YAAI,IAAAsB,EAAAA,EAAI,CAAC,GAAGQ,SAAQC,IAAuB,IAArBC,EAAMC,GAAUF,EACxD/B,EAAAA,KAAKkC,kBAAkBF,EAAMT,EAAmBU,EAAU,IAE5Df,EAAaiB,IAAId,EAAME,EACzB,CAEA,MAAO,CACLL,eACAkB,QAASA,KACP,IAAK,MAAOJ,EAAMK,KAAOjB,EACvBpB,EAAAA,KAAKsC,qBAAqBN,EAAMK,EAClC,EAGN,C,oFC1HOE,eAAeC,EACpBvB,GAEA,MAAMwB,EAAwB,IAExB,aAAEvB,EAAY,QAAEkB,IAAYpB,EAAAA,EAAAA,GAAmBC,GAErD,IAAK,MAAMI,KAAQJ,EAAU,KAAAyB,EAC3BD,EAAQE,KAAK,CACXC,MAAO,GAAiF,QAAjFF,GAAGhE,EAAAA,EAAAA,GAAyB2C,EAAK1C,MAAOuC,EAAa2B,IAAIxB,GAAOA,EAAKxC,oBAAY,IAAA6D,EAAAA,EAAI,OAAOrB,EAAKG,UACxGsB,MAAOzB,EAAKG,QAEhB,CAIA,OAFAY,IAEOK,CACT,CAEAM,eAAeC,OACb,+BACAC,EAAAA,EAAAA,qBAAoBT,G","sources":["webpack:///./src/data-providers/shared/smartDisplayForMenuTitle.ts","webpack:///./src/data-providers/get-menu-config-options.ts"],"sourcesContent":["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 } else if (overrideApp) {\n // 处理简单的占位符替换: ${APP.name} 和 ${APP.localeName}\n return title.replace(\n /\\$\\{\\s*APP\\s*\\.\\s*(?:name|localeName)\\s*\\}/g,\n () => overrideApp.name\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","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"],"names":["allowedAppProps","Set","smartDisplayForMenuTitle","title","i18nNamespace","overrideApp","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","replace","initializeMenuI18n","menuList","menuWithI18n","WeakMap","menuI18nBundles","menu","_menu$i18n","menuI18nNamespace","menuId","app","appId","instanceId","Object","entries","forEach","_ref","lang","resources","addResourceBundle","set","dispose","ns","removeResourceBundle","async","getMenuConfigOptions","options","_smartDisplayForMenuT","push","label","get","value","customElements","define","createProviderClass"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/get-menu-config-options.d5c02f8d.js","mappings":"+MAgBA,MAAMA,EAAkB,IAAIC,IAAI,CAAC,OAAQ,KAAM,WAAY,eAKpD,SAASC,EACdC,EACAC,EACAC,GAEA,GAAqB,iBAAVF,EAAX,CAGA,IAAIG,EAAAA,EAAAA,aAAYH,GAAQ,CAEtB,IAAII,EACJ,MAAMC,EAAqC,CACzCC,eAAgB,IAAIR,IACpBS,mBAAmB,GAErB,IACEH,GAAYI,EAAAA,EAAAA,aAAYR,EAAO,CAC7BS,YAAY,EACZC,MAAO,CACLC,mBAAmBC,EAAAA,EAAAA,yBAAwBP,EAAU,CAAC,UAG5D,CAAE,MAAOQ,GAEPC,QAAQD,MAAM,gCAAgCb,aAAkBa,EAClE,CAEA,GACET,KACEA,EAAUW,sBAAsBC,IAAI,QACnCd,IACEG,EAASE,mBACV,IAAIF,EAASC,gBAAgBW,OAAOC,GAClCrB,EAAgBmB,IAAIE,MAE1B,CACA,MAAMC,EAAmC,CAAC,EAC1C,IAAK,MAAMC,KAAOhB,EAAUW,sBAC1B,OAAQK,GACN,IAAK,OACHD,EAAQC,GAAOC,EAAAA,KAAKC,UAClB,KACA,CAACrB,GAAesB,OAAOC,UAEzB,MACF,IAAK,MACHL,EAAQC,GAAO,IACVlB,EACHuB,WAAYvB,aAAW,EAAXA,EAAawB,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,wCAAwCb,sBACxC+B,EAEJ,CAAE,MAAOlB,GAEPC,QAAQD,MACN,mCAAmCb,aACnCa,EAEJ,CAEJ,CACF,MAAO,GAAIX,EAET,OAAOF,EAAMoC,QACX,+CACA,IAAMlC,EAAYwB,OAGtB,OAAO1B,CArFP,CAsFF,CAEO,SAASqC,EAAmBC,GACjC,MAAMC,EAAe,IAAIC,QACnBC,EAAgD,GAEtD,IAAK,MAAMC,KAAQJ,EAAU,KAAAK,EAC3B,MAAMC,EAAoB,kBAAkBF,EAAKG,UAAUH,EAAKI,IAAI,GAAGC,SACrEL,EAAKM,aAGPC,OAAOC,QAAiB,QAAVP,EAACD,EAAKrB,YAAI,IAAAsB,EAAAA,EAAI,CAAC,GAAGQ,SAAQC,IAAuB,IAArBC,EAAMC,GAAUF,EACxD/B,EAAAA,KAAKkC,kBAAkBF,EAAMT,EAAmBU,EAAU,IAE5Df,EAAaiB,IAAId,EAAME,EACzB,CAEA,MAAO,CACLL,eACAkB,QAASA,KACP,IAAK,MAAOJ,EAAMK,KAAOjB,EACvBpB,EAAAA,KAAKsC,qBAAqBN,EAAMK,EAClC,EAGN,C,oFC1HOE,eAAeC,EACpBvB,GAEA,MAAMwB,EAAwB,IAExB,aAAEvB,EAAY,QAAEkB,IAAYpB,EAAAA,EAAAA,GAAmBC,GAErD,IAAK,MAAMI,KAAQJ,EAAU,KAAAyB,EAC3BD,EAAQE,KAAK,CACXC,MAAO,GAAiF,QAAjFF,GAAGhE,EAAAA,EAAAA,GAAyB2C,EAAK1C,MAAOuC,EAAa2B,IAAIxB,GAAOA,EAAKxC,oBAAY,IAAA6D,EAAAA,EAAI,OAAOrB,EAAKG,UACxGsB,MAAOzB,EAAKG,QAEhB,CAIA,OAFAY,IAEOK,CACT,CAEAM,eAAeC,OACb,+BACAC,EAAAA,EAAAA,qBAAoBT,G","sources":["webpack:///./src/data-providers/shared/smartDisplayForMenuTitle.ts","webpack:///./src/data-providers/get-menu-config-options.ts"],"sourcesContent":["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 } else if (overrideApp) {\n // 处理简单的占位符替换: ${APP.name} 和 ${APP.localeName}\n return title.replace(\n /\\$\\{\\s*APP\\s*\\.\\s*(?:name|localeName)\\s*\\}/g,\n () => overrideApp.name\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","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"],"names":["allowedAppProps","Set","smartDisplayForMenuTitle","title","i18nNamespace","overrideApp","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","replace","initializeMenuI18n","menuList","menuWithI18n","WeakMap","menuI18nBundles","menu","_menu$i18n","menuI18nNamespace","menuId","app","appId","instanceId","Object","entries","forEach","_ref","lang","resources","addResourceBundle","set","dispose","ns","removeResourceBundle","async","getMenuConfigOptions","options","_smartDisplayForMenuT","push","label","get","value","customElements","define","createProviderClass"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_nav=globalThis.webpackChunk_next_bricks_nav||[]).push([[1255],{1189:(e,t,n)=>{n.d(t,{G:()=>c,i:()=>u});var o=n(7448),i=n(9005),r=n(1321),s=n(4167),a=n(4956);const l=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,a.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=>l.has(e))))){const a={};for(const e of c.attemptToVisitGlobals)switch(e){case"I18N":a[e]=o.i18n.getFixedT(null,[t].filter(Boolean));break;case"APP":a[e]={...n,localeName:null==n?void 0:n.name}}const l=(0,s.supply)(c.attemptToVisitGlobals,a);let u=!0;for(const e of c.attemptToVisitGlobals)if(!(0,i.hasOwnProperty)(l,e)){u=!1;break}if(u)try{const t=(0,r.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)}}}else if(n)return e.replace(/\$\{\s*APP\s*\.\s*(?:name|localeName)\s*\}/g,(()=>n.name));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)}}}},9413:(e,t,n)=>{n.r(t),n.d(t,{getMenuConfigTree:()=>c});var o=n(9005),i=n(1030),r=n(1189);const s=Symbol("menuI18nNamespace"),a=Symbol("overrideApp"),l={lib:"fa",icon:"bars"};async function c(e){var t;const n=[],o=e.find((e=>"main"===e.type));if(!o)return[];const i=[],l=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=l.get(t.injectMenuGroupId);e||(e=[],l.set(t.injectMenuGroupId,e)),e.push(t)}else i.push(t)}n.push("0");const h=p(i.flatMap((e=>d(e.items,e,l,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 l;const c=`${o}-${i}`;return n.push(c),{key:c,title:null!==(l=(0,r.G)(t.text,t[s],t[a]))&&void 0!==l?l:"",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?l:null!=e?e:l}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))):[]),[a]: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))}}]);
2
- //# sourceMappingURL=get-menu-config-tree.d659b581.js.map
1
+ "use strict";(globalThis.webpackChunk_next_bricks_nav=globalThis.webpackChunk_next_bricks_nav||[]).push([[1255],{1189:(e,t,n)=>{n.d(t,{G:()=>c,i:()=>u});var o=n(4726),i=n(4493),r=n(1321),s=n(4167),a=n(2065);const l=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,a.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=>l.has(e))))){const a={};for(const e of c.attemptToVisitGlobals)switch(e){case"I18N":a[e]=o.i18n.getFixedT(null,[t].filter(Boolean));break;case"APP":a[e]={...n,localeName:null==n?void 0:n.name}}const l=(0,s.supply)(c.attemptToVisitGlobals,a);let u=!0;for(const e of c.attemptToVisitGlobals)if(!(0,i.hasOwnProperty)(l,e)){u=!1;break}if(u)try{const t=(0,r.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)}}}else if(n)return e.replace(/\$\{\s*APP\s*\.\s*(?:name|localeName)\s*\}/g,(()=>n.name));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)}}}},1794:(e,t,n)=>{n.r(t),n.d(t,{getMenuConfigTree:()=>c});var o=n(4493),i=n(1030),r=n(1189);const s=Symbol("menuI18nNamespace"),a=Symbol("overrideApp"),l={lib:"fa",icon:"bars"};async function c(e){var t;const n=[],o=e.find((e=>"main"===e.type));if(!o)return[];const i=[],l=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=l.get(t.injectMenuGroupId);e||(e=[],l.set(t.injectMenuGroupId,e)),e.push(t)}else i.push(t)}n.push("0");const h=p(i.flatMap((e=>d(e.items,e,l,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 l;const c=`${o}-${i}`;return n.push(c),{key:c,title:null!==(l=(0,r.G)(t.text,t[s],t[a]))&&void 0!==l?l:"",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?l:null!=e?e:l}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))):[]),[a]: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))}}]);
2
+ //# sourceMappingURL=get-menu-config-tree.3c208a90.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/get-menu-config-tree.d659b581.js","mappings":"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","sources":["webpack:///./src/data-providers/shared/smartDisplayForMenuTitle.ts","webpack:///./src/data-providers/get-menu-config-tree.ts"],"sourcesContent":["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 } else if (overrideApp) {\n // 处理简单的占位符替换: ${APP.name} 和 ${APP.localeName}\n return title.replace(\n /\\$\\{\\s*APP\\s*\\.\\s*(?:name|localeName)\\s*\\}/g,\n () => overrideApp.name\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","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"],"names":["allowedAppProps","Set","smartDisplayForMenuTitle","title","i18nNamespace","overrideApp","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","replace","initializeMenuI18n","menuList","menuWithI18n","WeakMap","menuI18nBundles","menu","_menu$i18n","menuI18nNamespace","menuId","app","appId","instanceId","Object","entries","forEach","_ref","lang","resources","addResourceBundle","set","dispose","ns","removeResourceBundle","symbolMenuI18nNamespace","Symbol","symbolOverrideApp","DEFAULT_ICON","lib","icon","async","getMenuConfigTree","_smartDisplayForMenuT2","keys","mainMenu","find","type","validMenuList","injectWithMenus","Map","_menu$items","dynamicItems","itemsResolve","items","length","injectMenuGroupId","injectingMenus","get","push","firstLevelItems","reorderMenuItems","flatMap","processGroupInject","tree","__keys","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"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/get-menu-config-tree.3c208a90.js","mappings":"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","sources":["webpack:///./src/data-providers/shared/smartDisplayForMenuTitle.ts","webpack:///./src/data-providers/get-menu-config-tree.ts"],"sourcesContent":["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 } else if (overrideApp) {\n // 处理简单的占位符替换: ${APP.name} 和 ${APP.localeName}\n return title.replace(\n /\\$\\{\\s*APP\\s*\\.\\s*(?:name|localeName)\\s*\\}/g,\n () => overrideApp.name\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","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"],"names":["allowedAppProps","Set","smartDisplayForMenuTitle","title","i18nNamespace","overrideApp","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","replace","initializeMenuI18n","menuList","menuWithI18n","WeakMap","menuI18nBundles","menu","_menu$i18n","menuI18nNamespace","menuId","app","appId","instanceId","Object","entries","forEach","_ref","lang","resources","addResourceBundle","set","dispose","ns","removeResourceBundle","symbolMenuI18nNamespace","Symbol","symbolOverrideApp","DEFAULT_ICON","lib","icon","async","getMenuConfigTree","_smartDisplayForMenuT2","keys","mainMenu","find","type","validMenuList","injectWithMenus","Map","_menu$items","dynamicItems","itemsResolve","items","length","injectMenuGroupId","injectingMenus","get","push","firstLevelItems","reorderMenuItems","flatMap","processGroupInject","tree","__keys","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"],"sourceRoot":""}