@next-bricks/nav 1.26.3 → 1.26.5

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 (175) hide show
  1. package/dist/bricks.json +12 -12
  2. package/dist/chunks/1045.523848bd.js +2 -0
  3. package/dist/chunks/{1045.6f2ef8ee.js.map → 1045.523848bd.js.map} +1 -1
  4. package/dist/chunks/1122.4d642104.js +2 -0
  5. package/dist/chunks/{1122.873dcb9d.js.map → 1122.4d642104.js.map} +1 -1
  6. package/dist/chunks/{1685.27e6ae81.js → 1685.97f96c81.js} +2 -2
  7. package/dist/chunks/{1685.27e6ae81.js.map → 1685.97f96c81.js.map} +1 -1
  8. package/dist/chunks/1889.8f47eb05.js +2 -0
  9. package/dist/chunks/1889.8f47eb05.js.map +1 -0
  10. package/dist/chunks/2241.4a732675.js +3 -0
  11. package/dist/chunks/{2241.12db708c.js.map → 2241.4a732675.js.map} +1 -1
  12. package/dist/chunks/3171.1c237177.js +2 -0
  13. package/dist/chunks/3171.1c237177.js.map +1 -0
  14. package/dist/chunks/{3944.5ad2454f.js → 3944.ee87f48d.js} +2 -2
  15. package/dist/chunks/{3944.5ad2454f.js.map → 3944.ee87f48d.js.map} +1 -1
  16. package/dist/chunks/4691.98e82504.js +3 -0
  17. package/dist/chunks/{4691.5e4633d7.js.map → 4691.98e82504.js.map} +1 -1
  18. package/dist/chunks/4934.b7f5539c.js +3 -0
  19. package/dist/chunks/4934.b7f5539c.js.map +1 -0
  20. package/dist/chunks/5399.9675f168.js +2 -0
  21. package/dist/chunks/5399.9675f168.js.map +1 -0
  22. package/dist/chunks/5552.7abb531c.js +2 -0
  23. package/dist/chunks/5552.7abb531c.js.map +1 -0
  24. package/dist/chunks/5655.ea5ae80b.js +2 -0
  25. package/dist/chunks/5655.ea5ae80b.js.map +1 -0
  26. package/dist/chunks/{6128.a4b25bfc.js → 6128.42a4dc65.js} +2 -2
  27. package/dist/chunks/{6128.a4b25bfc.js.map → 6128.42a4dc65.js.map} +1 -1
  28. package/dist/chunks/{6302.d5563d52.js → 6302.41666547.js} +3 -3
  29. package/dist/chunks/6302.41666547.js.map +1 -0
  30. package/dist/chunks/6376.24576d65.js +2 -0
  31. package/dist/chunks/6376.24576d65.js.map +1 -0
  32. package/dist/chunks/726.9fe47a56.js +2 -0
  33. package/dist/chunks/{726.2d6ad3b6.js.map → 726.9fe47a56.js.map} +1 -1
  34. package/dist/chunks/7304.d66ed51d.js +2 -0
  35. package/dist/chunks/{7304.94d0e345.js.map → 7304.d66ed51d.js.map} +1 -1
  36. package/dist/chunks/7434.b41128cc.js +2 -0
  37. package/dist/chunks/{7434.2990513f.js.map → 7434.b41128cc.js.map} +1 -1
  38. package/dist/chunks/8989.6ad7e72a.js +2 -0
  39. package/dist/chunks/{8989.33ca9fdc.js.map → 8989.6ad7e72a.js.map} +1 -1
  40. package/dist/chunks/9118.d93e9f11.js +3 -0
  41. package/dist/chunks/9118.d93e9f11.js.map +1 -0
  42. package/dist/chunks/948.3332488d.js +3 -0
  43. package/dist/chunks/948.3332488d.js.map +1 -0
  44. package/dist/chunks/easyops-navbar-alerts.e7e4d655.js +2 -0
  45. package/dist/chunks/{easyops-navbar-alerts.6c3ef359.js.map → easyops-navbar-alerts.e7e4d655.js.map} +1 -1
  46. package/dist/chunks/eo-app-bar-wrapper.3c38d482.js +3 -0
  47. package/dist/chunks/{eo-app-bar-wrapper.743025bd.js.map → eo-app-bar-wrapper.3c38d482.js.map} +1 -1
  48. package/dist/chunks/eo-directory-tree-internal-node.70195a4e.js +2 -0
  49. package/dist/chunks/{eo-directory-tree-internal-node.e1fd8680.js.map → eo-directory-tree-internal-node.70195a4e.js.map} +1 -1
  50. package/dist/chunks/eo-directory-tree-leaf.12ad8bf6.js +2 -0
  51. package/dist/chunks/{eo-directory-tree-leaf.315a4f71.js.map → eo-directory-tree-leaf.12ad8bf6.js.map} +1 -1
  52. package/dist/chunks/eo-directory-tree.a79aa72d.js +3 -0
  53. package/dist/chunks/{eo-directory-tree.80158b6f.js.map → eo-directory-tree.a79aa72d.js.map} +1 -1
  54. package/dist/chunks/eo-directory.78ac9c19.js +3 -0
  55. package/dist/chunks/eo-directory.78ac9c19.js.map +1 -0
  56. package/dist/chunks/eo-frame-breadcrumb.228ee7a1.js +2 -0
  57. package/dist/chunks/{eo-frame-breadcrumb.964ca57e.js.map → eo-frame-breadcrumb.228ee7a1.js.map} +1 -1
  58. package/dist/chunks/{eo-launchpad-button-v2.a28af14a.js → eo-launchpad-button-v2.9c3f13fd.js} +3 -3
  59. package/dist/chunks/{eo-launchpad-button-v2.a28af14a.js.map → eo-launchpad-button-v2.9c3f13fd.js.map} +1 -1
  60. package/dist/chunks/eo-launchpad-quick-access.fb75b8c9.js +3 -0
  61. package/dist/chunks/{eo-launchpad-quick-access.fa1ab0e2.js.map → eo-launchpad-quick-access.fb75b8c9.js.map} +1 -1
  62. package/dist/chunks/eo-launchpad-recent-visits.e2e39eff.js +3 -0
  63. package/dist/chunks/{eo-launchpad-recent-visits.1a7c6e2c.js.map → eo-launchpad-recent-visits.e2e39eff.js.map} +1 -1
  64. package/dist/chunks/{eo-search-launchpad.6792a030.js → eo-search-launchpad.3ff86e8b.js} +2 -2
  65. package/dist/chunks/{eo-search-launchpad.6792a030.js.map → eo-search-launchpad.3ff86e8b.js.map} +1 -1
  66. package/dist/chunks/eo-sidebar-menu-group.90c5606e.js +3 -0
  67. package/dist/chunks/{eo-sidebar-menu-group.e58bf217.js.map → eo-sidebar-menu-group.90c5606e.js.map} +1 -1
  68. package/dist/chunks/eo-sidebar-menu-item.310a59f6.js +2 -0
  69. package/dist/chunks/{eo-sidebar-menu-item.cc8a849b.js.map → eo-sidebar-menu-item.310a59f6.js.map} +1 -1
  70. package/dist/chunks/eo-sidebar-menu-submenu.a03daa4c.js +3 -0
  71. package/dist/chunks/{eo-sidebar-menu-submenu.89c8e3be.js.map → eo-sidebar-menu-submenu.a03daa4c.js.map} +1 -1
  72. package/dist/chunks/eo-sidebar-menu.9004a1c5.js +2 -0
  73. package/dist/chunks/{eo-sidebar-menu.bbbb3594.js.map → eo-sidebar-menu.9004a1c5.js.map} +1 -1
  74. package/dist/chunks/eo-sidebar-sub-menu.dae723eb.js +3 -0
  75. package/dist/chunks/{eo-sidebar-sub-menu.ccc5b812.js.map → eo-sidebar-sub-menu.dae723eb.js.map} +1 -1
  76. package/dist/chunks/eo-sidebar.b4ff7969.js +3 -0
  77. package/dist/chunks/{eo-sidebar.4d16ef16.js.map → eo-sidebar.b4ff7969.js.map} +1 -1
  78. package/dist/chunks/get-menu-config-options.6ce66c1a.js.map +1 -1
  79. package/dist/chunks/get-menu-config-tree.13b5377c.js.map +1 -1
  80. package/dist/chunks/launchpad-config.7165b136.js +3 -0
  81. package/dist/chunks/{launchpad-config.053def2c.js.map → launchpad-config.7165b136.js.map} +1 -1
  82. package/dist/chunks/main.4c2bb79c.js +2 -0
  83. package/dist/chunks/main.4c2bb79c.js.map +1 -0
  84. package/dist/chunks/nav-logo.1f066561.js +2 -0
  85. package/dist/chunks/{nav-logo.53c20353.js.map → nav-logo.1f066561.js.map} +1 -1
  86. package/dist/chunks/poll-announce.96c508fb.js +3 -0
  87. package/dist/chunks/poll-announce.96c508fb.js.map +1 -0
  88. package/dist/chunks/query-search.e5330199.js +3 -0
  89. package/dist/chunks/{query-search.da4f15d3.js.map → query-search.e5330199.js.map} +1 -1
  90. package/dist/examples.json +6 -6
  91. package/dist/index.13e52038.js +2 -0
  92. package/dist/index.13e52038.js.map +1 -0
  93. package/dist/manifest.json +80 -80
  94. package/dist/types.json +15 -15
  95. package/dist-types/directory/index.d.ts +3 -3
  96. package/dist-types/directory-tree/index.d.ts +3 -3
  97. package/dist-types/launchpad-button-v2/i18n.d.ts +1 -1
  98. package/dist-types/query-search/i18n.d.ts +1 -1
  99. package/dist-types/sidebar-sub-menu/index.d.ts +1 -2
  100. package/package.json +2 -2
  101. package/dist/chunks/1045.6f2ef8ee.js +0 -2
  102. package/dist/chunks/1122.873dcb9d.js +0 -2
  103. package/dist/chunks/1369.110f5b02.js +0 -2
  104. package/dist/chunks/1369.110f5b02.js.map +0 -1
  105. package/dist/chunks/1889.c68e3a91.js +0 -2
  106. package/dist/chunks/1889.c68e3a91.js.map +0 -1
  107. package/dist/chunks/2241.12db708c.js +0 -3
  108. package/dist/chunks/3171.7a6ade97.js +0 -2
  109. package/dist/chunks/3171.7a6ade97.js.map +0 -1
  110. package/dist/chunks/4691.5e4633d7.js +0 -3
  111. package/dist/chunks/4837.ffc74e59.js +0 -2
  112. package/dist/chunks/4837.ffc74e59.js.map +0 -1
  113. package/dist/chunks/4934.01b89dd0.js +0 -3
  114. package/dist/chunks/4934.01b89dd0.js.map +0 -1
  115. package/dist/chunks/5399.9f6a36a0.js +0 -2
  116. package/dist/chunks/5399.9f6a36a0.js.map +0 -1
  117. package/dist/chunks/5552.e733e3d2.js +0 -2
  118. package/dist/chunks/5552.e733e3d2.js.map +0 -1
  119. package/dist/chunks/5655.97cdaed5.js +0 -2
  120. package/dist/chunks/5655.97cdaed5.js.map +0 -1
  121. package/dist/chunks/6302.d5563d52.js.map +0 -1
  122. package/dist/chunks/7218.6556d74f.js +0 -2
  123. package/dist/chunks/7218.6556d74f.js.map +0 -1
  124. package/dist/chunks/726.2d6ad3b6.js +0 -2
  125. package/dist/chunks/7304.94d0e345.js +0 -2
  126. package/dist/chunks/7434.2990513f.js +0 -2
  127. package/dist/chunks/8989.33ca9fdc.js +0 -2
  128. package/dist/chunks/9118.50a5af61.js +0 -3
  129. package/dist/chunks/9118.50a5af61.js.map +0 -1
  130. package/dist/chunks/948.53e8ff70.js +0 -3
  131. package/dist/chunks/948.53e8ff70.js.map +0 -1
  132. package/dist/chunks/easyops-navbar-alerts.6c3ef359.js +0 -2
  133. package/dist/chunks/eo-app-bar-wrapper.743025bd.js +0 -3
  134. package/dist/chunks/eo-directory-tree-internal-node.e1fd8680.js +0 -2
  135. package/dist/chunks/eo-directory-tree-leaf.315a4f71.js +0 -2
  136. package/dist/chunks/eo-directory-tree.80158b6f.js +0 -3
  137. package/dist/chunks/eo-directory.c305cd88.js +0 -3
  138. package/dist/chunks/eo-directory.c305cd88.js.map +0 -1
  139. package/dist/chunks/eo-frame-breadcrumb.964ca57e.js +0 -2
  140. package/dist/chunks/eo-launchpad-quick-access.fa1ab0e2.js +0 -3
  141. package/dist/chunks/eo-launchpad-recent-visits.1a7c6e2c.js +0 -3
  142. package/dist/chunks/eo-sidebar-menu-group.e58bf217.js +0 -3
  143. package/dist/chunks/eo-sidebar-menu-item.cc8a849b.js +0 -2
  144. package/dist/chunks/eo-sidebar-menu-submenu.89c8e3be.js +0 -3
  145. package/dist/chunks/eo-sidebar-menu.bbbb3594.js +0 -2
  146. package/dist/chunks/eo-sidebar-sub-menu.ccc5b812.js +0 -3
  147. package/dist/chunks/eo-sidebar.4d16ef16.js +0 -3
  148. package/dist/chunks/launchpad-config.053def2c.js +0 -3
  149. package/dist/chunks/main.595062c2.js +0 -2
  150. package/dist/chunks/main.595062c2.js.map +0 -1
  151. package/dist/chunks/nav-logo.53c20353.js +0 -2
  152. package/dist/chunks/poll-announce.225cde90.js +0 -3
  153. package/dist/chunks/poll-announce.225cde90.js.map +0 -1
  154. package/dist/chunks/query-search.da4f15d3.js +0 -3
  155. package/dist/index.5bee1101.js +0 -2
  156. package/dist/index.5bee1101.js.map +0 -1
  157. /package/dist/chunks/{2241.12db708c.js.LICENSE.txt → 2241.4a732675.js.LICENSE.txt} +0 -0
  158. /package/dist/chunks/{4691.5e4633d7.js.LICENSE.txt → 4691.98e82504.js.LICENSE.txt} +0 -0
  159. /package/dist/chunks/{4934.01b89dd0.js.LICENSE.txt → 4934.b7f5539c.js.LICENSE.txt} +0 -0
  160. /package/dist/chunks/{6302.d5563d52.js.LICENSE.txt → 6302.41666547.js.LICENSE.txt} +0 -0
  161. /package/dist/chunks/{9118.50a5af61.js.LICENSE.txt → 9118.d93e9f11.js.LICENSE.txt} +0 -0
  162. /package/dist/chunks/{948.53e8ff70.js.LICENSE.txt → 948.3332488d.js.LICENSE.txt} +0 -0
  163. /package/dist/chunks/{eo-app-bar-wrapper.743025bd.js.LICENSE.txt → eo-app-bar-wrapper.3c38d482.js.LICENSE.txt} +0 -0
  164. /package/dist/chunks/{eo-directory-tree.80158b6f.js.LICENSE.txt → eo-directory-tree.a79aa72d.js.LICENSE.txt} +0 -0
  165. /package/dist/chunks/{eo-directory.c305cd88.js.LICENSE.txt → eo-directory.78ac9c19.js.LICENSE.txt} +0 -0
  166. /package/dist/chunks/{eo-launchpad-button-v2.a28af14a.js.LICENSE.txt → eo-launchpad-button-v2.9c3f13fd.js.LICENSE.txt} +0 -0
  167. /package/dist/chunks/{eo-launchpad-quick-access.fa1ab0e2.js.LICENSE.txt → eo-launchpad-quick-access.fb75b8c9.js.LICENSE.txt} +0 -0
  168. /package/dist/chunks/{eo-launchpad-recent-visits.1a7c6e2c.js.LICENSE.txt → eo-launchpad-recent-visits.e2e39eff.js.LICENSE.txt} +0 -0
  169. /package/dist/chunks/{eo-sidebar-menu-group.e58bf217.js.LICENSE.txt → eo-sidebar-menu-group.90c5606e.js.LICENSE.txt} +0 -0
  170. /package/dist/chunks/{eo-sidebar-menu-submenu.89c8e3be.js.LICENSE.txt → eo-sidebar-menu-submenu.a03daa4c.js.LICENSE.txt} +0 -0
  171. /package/dist/chunks/{eo-sidebar-sub-menu.ccc5b812.js.LICENSE.txt → eo-sidebar-sub-menu.dae723eb.js.LICENSE.txt} +0 -0
  172. /package/dist/chunks/{eo-sidebar.4d16ef16.js.LICENSE.txt → eo-sidebar.b4ff7969.js.LICENSE.txt} +0 -0
  173. /package/dist/chunks/{launchpad-config.053def2c.js.LICENSE.txt → launchpad-config.7165b136.js.LICENSE.txt} +0 -0
  174. /package/dist/chunks/{poll-announce.225cde90.js.LICENSE.txt → poll-announce.96c508fb.js.LICENSE.txt} +0 -0
  175. /package/dist/chunks/{query-search.da4f15d3.js.LICENSE.txt → query-search.e5330199.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/6128.a4b25bfc.js","mappings":"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","sources":["webpack:///./src/launchpad-quick-access/styles.shadow.css","webpack:///./src/sidebar-sub-menu/styles.shadow.css","webpack:///./src/poll-announce/notification.module.css","webpack:///./src/sidebar/sidebar-menu/styles.shadow.css","webpack:///./src/frame-breadcrumb/styles.shadow.css","webpack:///./src/directory/styles.shadow.css","webpack:///./src/sidebar/styles.shadow.css","webpack:///./src/search-launchpad/styles.shadow.css","webpack:///./src/launchpad-config/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-item/styles.shadow.css","webpack:///./src/nav-logo/styles.shadow.css","webpack:///./src/nav-menu/index.tsx","webpack:///./src/launchpad/index.tsx","webpack:///./src/launchpad-button-v2/index.tsx","webpack:///./src/launchpad-config/wrapped-bricks.ts","webpack:///./src/launchpad-config/MenuGroup.tsx","webpack:///./src/launchpad-config/index.tsx","webpack:///./src/easyops-navbar-alerts/index.tsx","webpack:///./src/launchpad-quick-access/index.tsx","webpack:///./src/search-launchpad/host-context.css?4d0b","webpack:///./src/search-launchpad/i18n.ts","webpack:///./src/search-launchpad/index.tsx","webpack:///./src/launchpad-recent-visits/index.tsx","webpack:///./src/app-bar-wrapper/index.tsx","webpack:///./src/frame-breadcrumb/index.tsx","webpack:///./src/sidebar/sidebar-menu-item/index.tsx","webpack:///./src/sidebar/utils.tsx","webpack:///./src/sidebar/sidebar-menu-group/index.tsx","webpack:///./src/sidebar/sidebar-menu-submenu/index.tsx","webpack:///./src/sidebar/sidebar-menu/index.tsx","webpack:///./src/images/fixed.svg","webpack:///./src/images/toFixed.svg","webpack:///./src/sidebar/i18n.ts","webpack:///./src/sidebar/index.tsx","webpack:///./src/sidebar-sub-menu/index.tsx","webpack:///./src/directory/index.tsx","webpack:///./src/directory-tree/DirectoryTreeContext.ts","webpack:///./src/directory-tree/Tree.tsx","webpack:///./src/directory-tree/utils.ts","webpack:///./src/directory-tree/index.tsx","webpack:///./src/directory-tree/directory-tree-leaf/index.tsx","webpack:///./src/directory-tree/constants.ts","webpack:///./src/directory-tree/directory-tree-internal-node/arrow.svg","webpack:///./src/directory-tree/directory-tree-internal-node/index.tsx","webpack:///./src/nav-logo/index.tsx","webpack:///./src/poll-announce/i18n.ts","webpack:///./src/poll-announce/notification.module.css?4226","webpack:///./src/poll-announce/index.tsx","webpack:///./src/data-providers/shared/smartDisplayForMenuTitle.ts","webpack:///./src/data-providers/get-menu-config-tree.ts","webpack:///./src/data-providers/get-menu-config-options.ts","webpack:///./src/query-search/i18n.ts","webpack:///./src/query-search/index.tsx","webpack:///./src/directory-tree/styles.shadow.css","webpack:///./src/app-bar-wrapper/styles.shadow.css","webpack:///./src/poll-announce/styles.shadow.css","webpack:///./src/launchpad-recent-visits/styles.shadow.css","webpack:///./src/easyops-navbar-alerts/styles.shadow.css","webpack:///./src/search-launchpad/host-context.css","webpack:///./src/directory-tree/directory-tree-leaf/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-group/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-submenu/styles.shadow.css","webpack:///./src/directory-tree/directory-tree-internal-node/styles.shadow.css","webpack:///./src/query-search/styles.shadow.css"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.quick-access-list{display:grid;gap:14px;grid-template-columns:repeat(2,1fr);list-style:none;margin:0;padding:0}.sidebar-menu-item{display:flex;align-items:center;justify-content:space-between;overflow:hidden}.sidebar-menu-item > eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link){display:flex;align-items:center;height:20px;gap:8px;color:var(--color-header-text)}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-item-remove{color:var(--color-secondary-text);cursor:pointer}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon{color:var(--color-brand-hover)}@supports not (inset: 0){.sidebar-menu-item,\n .sidebar-menu-item > eo-link::part(link){gap:0}.sidebar-menu-icon{margin-right:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.menu-container{box-sizing:border-box;background:var(--third-menu-default-bg);border:1px solid var(--stroke-color-default);border-width:0 1px 0 0;border-radius:0px;padding:20px 0px;height:100%}.menu-container .header{display:flex;gap:10px;align-items:center;font-size:var(--title-font-size);padding:0 20px 16px 20px;line-height:26px;color:var(--color-header-text)}.menu-container .header .title{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-wrap:break-word}.menu-container .content{padding:0 12px}.menu-container .menu-item,.menu-container .menu-sub-item::part(sub-menu-item-title){margin:0;padding-right:16px;height:40px;line-height:40px;border-radius:4px;margin-bottom:4px}.menu-container .menu-item::part(menu-item-icon),.menu-container .menu-sub-item::part(menu-item-icon){color:var(--color-secondary-text)}.menu-container .menu-item-link{width:100%;color:var(--color-secondary-text)}.menu-container .menu-item-text,.menu-container .menu-group-text,.menu-container .menu-item-link{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-container .menu-item-text{display:block;box-sizing:border-box;color:var(--antd-text-color)}.menu-container .menu-item:hover{background:var(--third-menu-item-hover-bg);color:var(--color-header-text)}.menu-container .menu-item:hover .menu-item-text{color:var(--color-header-text);font-weight:var(--font-weight-400)}.menu-container .in-submenu .menu-item-text{color:var(--color-normal-text)}.menu-container .menu-sub-item::part(sub-menu-item-title):hover{color:var(--color-header-text)}.menu-container .menu-item-text.item-has-icon{margin-left:6px}.menu-container .menu-item[active]{color:var(--color-brand);background-color:var(--third-menu-item-selected-bg)}.menu-container .menu-item[active] .menu-item-text{color:var(--color-brand);font-weight:var(--font-weight-500)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `.message--Fxvh9j9V{color:var(--color-normal-text);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"message\": `message--Fxvh9j9V`\n};\nexport default ___CSS_LOADER_EXPORT___;\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;transition:width var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.sidebar-menu-item-list slot::slotted(*){margin-top:6px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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:flex;height:22px;align-items:center}:host([hidden]){display:none}.breadcrumb-item-prefix-icon{font-size:14px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.directory-container{padding:20px 8px 24px 24px;background:var(--color-fill-global-bg-2);border-right:1px solid var(--color-text-divider-line);height:calc(100vh - var(--app-bar-height) - 44px);overflow-y:auto;scrollbar-width:none}.directory-container-not-border{border-right:none}.directory-title{font-size:var(--sub-menu-title-font-size);margin-bottom:24px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.directory-menu-list > .menu-item-group{padding-top:14px}.directory-menu-list > .menu-item-group:first-child{padding-top:0}.directory-menu-list .menu-item-title-group,\n.directory-menu-list .menu-item-title-item{display:flex;align-items:center;justify-content:space-between}.directory-menu-list .menu-item-title-group{color:#8c8c8c;font-size:12px;margin-bottom:2px}.directory-menu-list .menu-item-title-item{font-size:14px;cursor:pointer;line-height:24px;padding:3px 0}.directory-menu-list .menu-item-title-suffix-icon{width:24px;height:24px;display:flex;justify-content:center;align-items:center;font-size:14px;border-radius:var(--small-border-radius);cursor:pointer}.directory-menu-list\n .menu-item-title-suffix-icon:not(\n .menu-item-title-suffix-icon-disabled\n ):hover{background:var(--color-info-icon-bg);color:var(--color-brand-hover)}.directory-menu-list .menu-item-title-item > .menu-title-text:hover{color:var(--color-brand-hover)}.directory-menu-list .menu-item-title-item > .menu-title-text-active{color:var(--color-brand)}.directory-menu-list .menu-item-title-suffix-icon-disabled{color:var(--color-disabled-text);cursor:not-allowed}.directory-menu-list .menu-title-text{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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","// 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}.container{position:relative}.dropdown{margin-top:5px;position:absolute;top:100%;left:0px;width:100%;z-index:1050;padding:20px 24px 24px;overflow:hidden;box-sizing:border-box;background-color:var(--antd-select-dropdown-bg);border-radius:4px;box-shadow:var(--antd-box-shadow-base);display:none}.dropdown-active{display:block}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.dropdown-content{min-width:0;display:flex;flex-direction:column;gap:24px;max-height:260px;overflow-y:auto}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.loading > :not(.spinner){display:none}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-groups,\n.menu,\n.sub-menu{list-style:none;margin:0;padding:0}.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-item > eo-link{display:block;min-width:0}.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-groups{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--eo-search-launchpad-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-star{cursor:pointer}.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}@supports not (inset: 0){.search-box,\n .menu,\n .sub-menu,\n .menu-item:not(.folder),\n .menu-item > eo-link::part(link){gap:0}.dropdown-content{display:grid;grid-auto-flow:row}.dropdown-content:not(.loading){height:min-content}.menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none;--local-menu-icon-color:rgba(255,255,255,0.45)}ul{list-style:none;margin:0;padding:0}.menu-groups{display:grid;gap:32px 16px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{display:block}.menu-folder-label-wrapper > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-group-label-wrapper,\n.menu-folder-label-wrapper,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-group-label-wrapper{gap:3px}.menu-group:not(.empty) .menu-group-label-wrapper{margin-bottom:14px}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text)}.menu-icon{color:var(--local-menu-icon-color)}.menu-group.blocked .menu-group-label,\n.menu-item.blocked > .menu-folder-label-wrapper .menu-item-label,\n.menu-item.blocked > .menu-folder-label-wrapper .menu-icon,\n.menu-item.blocked > .menu-folder-label-wrapper .menu-item-toggle,\n.menu-item.disabled > eo-link::part(link),\n.menu-item.disabled .menu-icon{color:var(--color-disabled-text)}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{max-width:100%;width:-moz-fit-content;width:fit-content;min-width:0}.sub-menu:not(.expanded){display:none}.sub-menu{margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item:not(.empty) .sub-menu{margin-top:14px}.menu-item-toggle{color:var(--color-secondary-text)}.menu-config{visibility:hidden;color:var(--color-brand);cursor:pointer;display:flex;justify-content:center;align-items:center;height:24px;width:0}.menu-config.active,\n.menu-group-label-wrapper:hover .menu-config,\n.menu-item:not(.folder):not(.disabled):hover .menu-config,\n.menu-item:not(.folder):not(.blocked):hover .menu-config,\n.menu-folder-label-wrapper:hover .menu-config{visibility:visible;width:24px}.menu-config:hover,\n.menu-item:not(.disabled) > eo-link:hover::part(link),\n.menu-item:not(.disabled) > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover::part(link),\n.menu-folder-label-wrapper > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}@supports not (inset: 0){.sub-menu,\n .menu,\n .menu-group-label-wrapper,\n .menu-folder-label-wrapper,\n .menu-item:not(.folder),\n .menu-item > eo-link::part(link){gap:0}.menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.menu-icon{margin-right:8px}eo-dropdown-actions,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}eo-link{display:block}.menu-item{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-sidebar-item-normal-color);border-radius:var(--medius-border-radius);cursor:pointer;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-item-icon-container{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);font-size:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color)}:host([in-submenu]):host(:not([selected])) .menu-item{color:var(--left-sidebar-item-collapsed-color)}.menu-item-text{flex:1;margin-left:14px;margin-right:12px;font-size:14px;overflow:hidden;white-space:nowrap;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-item:hover{background:var(--left-sidebar-item-hover-bg)}:host([selected]) .menu-item{color:var(--left-sidebar-item-selected-color);background:var(--left-sidebar-item-selected-bg);box-shadow:0px 2px 12px 0px rgba(26,122,255,0.30196)}:host([selected]) .menu-item-icon-container{color:var(--left-sidebar-item-selected-color)}:host([selected]) .menu-item:hover{background-color:var(--left-sidebar-item-selected-hover-bg)}:host([menu-collapsed]) .menu-item{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host([menu-collapsed]) .menu-item-text{opacity:0}:host(:not([menu-collapsed])) .menu-item-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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:inline-block}:host([hidden]){display:none}.logo-container{position:relative;display:flex;justify-content:flex-start;align-items:center}.logo-link{cursor:pointer}.personalized-logo{height:24px;vertical-align:top}.easyops-icon{display:block;font-size:24px;color:var(--color-brand)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import React, {\n CSSProperties,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport styleText from \"./nav-menu.shadow.css\";\nimport { UnregisterCallback } from \"history\";\nimport type { SidebarMenu } from \"@next-bricks/basic/menu\";\nimport type {\n MenuItem as MenuItemComponent,\n MenuComponentProps,\n} from \"@next-bricks/basic/menu-item\";\nimport { isSubMenu, isGroup, renderLinkCom, renderSpanCom } from \"./utils.js\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n Placement,\n} from \"@next-bricks/basic/popover\";\nimport \"@next-core/theme\";\nimport classnames from \"classnames\";\nimport { ThreeLevelMenuPopoverContent } from \"./ThreeLevelMenuPopoverContent.js\";\nimport { SiteMapItem } from \"./site-map/SiteMapItem.js\";\nimport SiteMapStyleText from \"../nav-menu/site-map/SiteMapItem.shadow.css\";\nimport ItemTagStyleText from \"../nav-menu/site-map/ItemTag.shadow.css\";\nimport GroupItemStyleText from \"../nav-menu/site-map/GroupItem.shadow.css\";\nimport \"./host-context.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedMenuItem = wrapBrick<MenuItemComponent, MenuComponentProps>(\n \"eo-menu-item\"\n);\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n onBeforeVisibleChange: \"before.visible.change\",\n});\n\nconst GAP_WIDTH = 8;\n\ninterface NavMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n mainMenuTitleStyle: CSSProperties | undefined;\n}\n\ninterface MenuItemComProps {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuItem;\n topData?: boolean;\n selectedKey?: string[];\n showTooltip?: boolean;\n overflow?: boolean;\n mainMenuTitleStyle?: CSSProperties;\n}\ninterface SimpleMenuItemComProps extends MenuItemComProps {\n item: SidebarMenuSimpleItem;\n}\ninterface MenuGroupComProps extends MenuItemComProps {\n item: SidebarMenuGroup;\n}\nfunction RenderMenuItemCom(props: MenuItemComProps) {\n const { item } = props;\n return isSubMenu(item as SidebarMenuGroup, props.topData) ? (\n <SubMenuItemCom {...props} item={item as SidebarMenuGroup}></SubMenuItemCom>\n ) : isGroup(item) ? (\n <GroupMenuItemCom {...props} item={item as SidebarMenuGroup} />\n ) : (\n <SimpleMenuItemCom\n {...props}\n item={item as SidebarMenuSimpleItem}\n ></SimpleMenuItemCom>\n );\n}\nfunction SimpleMenuItemCom(props: SimpleMenuItemComProps) {\n const { item, index, hidden, showTooltip, selectedKey = [] } = props;\n return (\n <WrappedMenuItem\n data-index={index}\n className={hidden ? \"overflow-menu-item\" : \"\"}\n key={item.key}\n title={showTooltip ? item.text : \"\"}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n {renderLinkCom(item, { width: \"100%\" }, props.mainMenuTitleStyle)}\n </WrappedMenuItem>\n );\n}\n\nlet scrollWidth: number;\n// istanbul ignore next;\nconst handlePopupVisibleChange = (event: CustomEvent<boolean>) => {\n // 当用户设置滚动条一直显示时,来回切换 overflow: hidden 会导致滚动条显示或隐藏\n // 造成页面宽度变化而导致的抖动的问题\n const paddingRight =\n scrollWidth ??\n (scrollWidth = window.innerWidth - document.body.clientWidth);\n\n document.body.style.paddingRight = event.detail ? paddingRight + \"px\" : \"\";\n document.body.style.overflow = event.detail ? \"hidden\" : \"\";\n document.body.style.touchAction = event.detail ? \"none\" : \"\";\n};\n\nfunction SubMenuItemCom({\n index,\n hidden,\n item,\n topData,\n showTooltip,\n selectedKey = [],\n overflow,\n mainMenuTitleStyle,\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n subprime: !topData,\n \"overflow-menu-item\": hidden,\n })}\n arrow={false}\n trigger=\"hover\"\n placement={topData ? \"bottom-start\" : \"right-start\"}\n distance={0}\n anchorDisplay=\"block\"\n strategy=\"fixed\"\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label 22\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, !topData, { ...mainMenuTitleStyle })}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-wrapper\", {\n \"overflow-menu-wrapper\": overflow,\n })}\n >\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n />\n </React.Fragment>\n ))}\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction GroupMenuItemCom({\n item,\n showTooltip,\n selectedKey = [],\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n item.childLayout === \"category\" ? (\n <ThreeLevelMenuCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n />\n ) : (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n topData={false}\n />\n ) : (\n <>\n <div className=\"group-label\">{item.title}</div>\n <div className=\"group-wrapper\">\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n </React.Fragment>\n );\n })}\n </div>\n </>\n )\n ) : null;\n}\n\nfunction ThreeLevelMenuCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n mainMenuTitleStyle,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n mainMenuTitleStyle?: CSSProperties;\n}) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"three-level-menu-popover\", \"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n arrow={false}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n anchorDisplay={anchorDisplay}\n onBeforeVisibleChange={handlePopupVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, false, mainMenuTitleStyle)}\n </WrappedMenuItem>\n <div className=\"sub-menu-wrapper\">\n <ThreeLevelMenuPopoverContent\n menuItem={item}\n selectedKey={selectedKey}\n ></ThreeLevelMenuPopoverContent>\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction SitMapMenCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n topData,\n mainMenuTitleStyle,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n topData?: boolean;\n mainMenuTitleStyle?: CSSProperties;\n}) {\n const [visible, setVisible] = useState<boolean>();\n\n const handleVisibleChange = (event: CustomEvent<boolean>): void => {\n setVisible(event.detail);\n handlePopupVisibleChange(event);\n };\n\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n arrow={false}\n anchorDisplay={anchorDisplay}\n onBeforeVisibleChange={handleVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, false, mainMenuTitleStyle)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-sit-map-wrapper\", {\n \"in-group-site-map\": !topData,\n })}\n onClick={(e) => e.stopPropagation()}\n >\n <SiteMapItem\n menuGroup={item}\n selectedKey={selectedKey}\n visible={visible}\n />\n </div>\n </WrappedPopover>\n ) : null;\n}\n\n/**\n * 菜单构件\n * @author sailor\n * @category navigation\n */\n@defineElement(\"eo-nav-menu\", {\n styleTexts: [\n SiteMapStyleText,\n ItemTagStyleText,\n GroupItemStyleText,\n styleText,\n ],\n})\nclass NavMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n /**\n * 主菜单标题文字的自定义样式\n */\n @property({\n attribute: false,\n })\n accessor mainMenuTitleStyle: CSSProperties | undefined;\n\n /**\n * 是否显示 tooltip\n */\n @property({\n type: Boolean,\n })\n accessor showTooltip: boolean | undefined;\n\n render() {\n return (\n <NavMenuComponent\n menu={this.menu}\n showTooltip={this.showTooltip}\n mainMenuTitleStyle={this.mainMenuTitleStyle}\n />\n );\n }\n}\n\nfunction NavMenuComponent(props: NavMenuProps) {\n const { menu, showTooltip } = props;\n\n const history = getHistory();\n const navMenuWrapperRef = useRef<HTMLDivElement>(null);\n const [location, setLocation] = useState(history.location);\n const [overflowIndex, setOverflowIndex] = useState<number>(\n Number.MAX_SAFE_INTEGER\n );\n const { pathname, search } = location;\n\n const menuItems = useMemo(() => {\n return (menu?.menuItems ?? []).filter(\n (item) =>\n // 默认\n item.type === \"default\" ||\n // 没有类型\n !item.type ||\n // 分组类型并且没有子项,过滤\n ([\"group\", \"subMenu\"].includes(item.type) &&\n (item as SidebarMenuGroup).items?.length)\n );\n }, [menu?.menuItems]);\n\n const selectedKey = useMemo(() => {\n const { selectedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n return selectedKeys;\n }, [menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n return unListen;\n }, []);\n\n useEffect(() => {\n if (navMenuWrapperRef.current) {\n const resizeObserver = new ResizeObserver(() => {\n if (navMenuWrapperRef.current) {\n const { width } = navMenuWrapperRef.current.getClientRects()[0] ?? {};\n const childNodes = navMenuWrapperRef.current.childNodes;\n\n if (childNodes.length && width) {\n let wrapperWidth = width;\n let overflowIndex = childNodes.length;\n\n for (let i = 0; i < childNodes.length; i++) {\n const { width: childWidth, height: childHeight } = (\n childNodes[i] as HTMLElement\n ).getClientRects()[0];\n\n if (!childHeight && wrapperWidth - 40 < 0) {\n overflowIndex = i - 1;\n break;\n }\n\n wrapperWidth =\n wrapperWidth - childWidth - (i > 0 ? GAP_WIDTH : 0);\n if (wrapperWidth < 0) {\n overflowIndex = i;\n break;\n }\n }\n\n setOverflowIndex(overflowIndex < 0 ? 0 : overflowIndex);\n }\n }\n });\n resizeObserver.observe(navMenuWrapperRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, []);\n\n // istanbul ignore next;\n const overflowMenu = useMemo(\n (): SidebarMenuItem => ({\n type: \"subMenu\",\n title: \"···\",\n items: menuItems.slice(overflowIndex, menuItems.length).map((i) => ({\n ...i,\n type: i.type === \"group\" && i.items.length ? \"subMenu\" : i.type,\n })) as SidebarMenuItem[],\n }),\n [menuItems, overflowIndex]\n );\n\n return (\n <div ref={navMenuWrapperRef} className=\"nav-menu-wrapper\">\n {menuItems.map((item, index) => {\n const isHidden = overflowIndex <= index;\n return (\n <React.Fragment key={item.key}>\n {isSubMenu(item as SidebarMenuGroup, true) &&\n (item as SidebarMenuGroup).childLayout === \"category\" &&\n (item as SidebarMenuGroup).items?.length ? (\n <ThreeLevelMenuCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n ) : (item as SidebarMenuGroup).type === \"group\" &&\n (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n ) : (\n <RenderMenuItemCom\n index={index}\n hidden={isHidden}\n item={item}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n )}\n </React.Fragment>\n );\n })}\n <RenderMenuItemCom\n hidden={overflowIndex > menuItems.length}\n item={overflowMenu}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n overflow={true}\n topData={true}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n <slot name=\"afterMenu\" />\n </div>\n );\n}\n\nexport { NavMenu };\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { LaunchpadButton as LaunchpadButtonComponent } from \"./LaunchpadButton/LaunchpadButton.js\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport \"@next-core/theme\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./LaunchpadButton/LaunchpadButton.shadow.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\n/**\n * Launchpad 按钮构件\n * @author sailor\n * @insider\n */\n@defineElement(\"eo-launchpad-button\", {\n styleTexts: [styleText],\n})\nclass LaunchpadButton extends ReactNextElement {\n render() {\n return <LaunchpadButtonComponent />;\n }\n}\n\nexport { LaunchpadButton };\n","import React, { useEffect, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { getHistory, getRuntime } from \"@next-core/runtime\";\nimport type { lockBodyScroll as _lockBodyScroll } from \"@next-bricks/basic/data-providers/lock-body-scroll/lock-body-scroll\";\n// import { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport hotkeys from \"hotkeys-js\";\nimport classNames from \"classnames\";\n// import { K, NS, locales } from \"./i18n.js\";\nimport LaunchpadSvg from \"../images/launchpad.svg\";\nimport styleText from \"./styles.shadow.css\";\nimport platformCategoryStyleText from \"./PlatformCategory.shadow.css\";\nimport { Launchpad } from \"./Launchpad\";\nimport {\n deferredFavorites,\n deferredLaunchpadInfo,\n deferredPlatformCategories,\n} from \"./useLaunchpadInfo\";\nimport launchpadStyleText from \"./Launchpad.shadow.css\";\nimport \"./host-context.css\";\n\n// initializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\nconst lockBodyScroll = unwrapProvider<typeof _lockBodyScroll>(\n \"basic.lock-body-scroll\"\n);\n\n/**\n * Launchpad 启动台按钮(v2),点击后展开 Launchpad 面板,支持快捷键 Alt+L 开关、Esc 关闭。\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-button-v2\", {\n styleTexts: [styleText, platformCategoryStyleText, launchpadStyleText],\n})\nclass EoLaunchpadButtonV2 extends ReactNextElement {\n disconnectedCallback(): void {\n super.disconnectedCallback();\n lockBodyScroll(this, false);\n }\n\n render() {\n return <EoLaunchpadButtonV2Component host={this} />;\n }\n}\n\nexport function EoLaunchpadButtonV2Component({ host }: { host: HTMLElement }) {\n const [initialized, setInitialized] = useState(false);\n const [active, setActive] = useState(false);\n const toggleLaunchpad = (): void => {\n setActive((previous) => !previous);\n };\n\n useEffect(() => {\n // 当切换页面时,关闭Launchpad。\n const unlisten = getHistory().listen(() => {\n setActive(false);\n });\n return unlisten;\n }, []);\n\n useEffect(() => {\n // 打开一次 launchpad 后,保留 DOM。\n if (active && !initialized) {\n setInitialized(true);\n }\n }, [active, initialized]);\n\n // istanbul ignore next\n useEffect(() => {\n hotkeys.filter = function () {\n return true;\n };\n\n // 快捷打开/关闭 Launchpad\n hotkeys(\"alt+l\", (event) => {\n event.preventDefault();\n setActive((previous) => !previous);\n });\n\n // 按 Esc 关闭 Launchpad\n hotkeys(\"esc\", () => {\n setActive(false);\n });\n\n return () => {\n hotkeys.unbind(\"alt+l\");\n hotkeys.unbind(\"esc\");\n };\n }, []);\n\n useEffect(() => {\n lockBodyScroll(host, active);\n }, [active, host]);\n\n useEffect(() => {\n deferredLaunchpadInfo.schedulePrefetch();\n deferredFavorites.schedulePrefetch();\n getRuntime()?.getFeatureFlags()[\"launchpad-show-platform-category\"] &&\n deferredPlatformCategories.schedulePrefetch();\n }, []);\n\n return (\n <>\n <a\n role=\"button\"\n className={classNames(\"launchpad-button\", { active })}\n onClick={toggleLaunchpad}\n >\n <LaunchpadSvg />\n </a>\n <div\n className={classNames(\"mask\", { active })}\n onClick={toggleLaunchpad}\n ></div>\n {initialized && <Launchpad active={active} />}\n </>\n );\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping,\n} from \"@next-bricks/basic/dropdown-actions\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nexport const WrappedDropdownActions = wrapBrick<\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping\n>(\"eo-dropdown-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { get, pick } from \"lodash\";\nimport classNames from \"classnames\";\nimport { __secret_internals, checkIfByTransform } from \"@next-core/runtime\";\nimport type { SimpleAction } from \"@next-bricks/basic/actions\";\nimport {\n WrappedDropdownActions,\n WrappedIcon,\n WrappedLink,\n} from \"./wrapped-bricks\";\nimport type {\n ConfigMenuGroup,\n ConfigMenuItemDir,\n ConfigMenuItemNormal,\n ConfigVariant,\n MenuAction,\n MenuActionEventDetail,\n} from \"./interfaces\";\nimport { getLocaleName } from \"../shared/getLocaleName\";\n\nexport type ProcessedConfigMenuItemNormal = ConfigMenuItemNormal & {\n __pathname?: string;\n};\n\nexport interface MenuGroupProps {\n data: ConfigMenuGroup;\n actions?: MenuAction[];\n variant?: ConfigVariant;\n urlTemplate?: string;\n customUrlTemplate?: string;\n onMenuItemClick?(item: ProcessedConfigMenuItemNormal): void;\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function MenuGroup({\n data,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\n onMenuItemClick,\n onActionClick,\n}: MenuGroupProps) {\n // Make it compatible\n data.type ??= \"group\";\n const { name, locales, items } = data;\n const [dropdownActive, setDropdownActive] = useState(false);\n\n const filteredActions = useMemo(() => {\n return __secret_internals.legacyDoTransform(\n data,\n actions?.filter((item) => checkIfByTransform(item, data))\n ) as MenuAction[] | undefined;\n }, [actions, data]);\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li\n className={classNames(\"menu-group\", {\n empty: items.length === 0,\n blocked: data.allBlocked,\n })}\n >\n <div className=\"menu-group-label-wrapper\">\n <span className=\"menu-group-label\">{getLocaleName(locales, name)}</span>\n {variant !== \"menu-config\" && !!filteredActions?.length && (\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", {\n active: dropdownActive,\n })}\n />\n </WrappedDropdownActions>\n )}\n </div>\n <ul className=\"menu\">\n {items.map((item) =>\n item.type === \"dir\" ? (\n <MenuItemFolder\n key={item.instanceId}\n data={item}\n actions={actions}\n variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\n onMenuItemClick={onMenuItemClick}\n onActionClick={onActionClick}\n />\n ) : (\n <MenuItem\n key={`${item.type}-${item.id}`}\n data={item}\n actions={actions}\n variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\n onClick={(data) => {\n onMenuItemClick?.({ ...item, ...data });\n }}\n onActionClick={onActionClick}\n />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n data: ConfigMenuItemNormal;\n actions?: MenuAction[];\n variant?: ConfigVariant;\n urlTemplate?: string;\n customUrlTemplate?: string;\n onClick?(data: { __pathname?: string }): void;\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function MenuItem({\n data,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\n onClick,\n onActionClick,\n}: MenuItemProps) {\n const name = useMemo(() => getLocaleName(data.locales, data.name), [data]);\n\n const [dropdownActive, setDropdownActive] = useState(false);\n\n const filteredActions = useMemo(\n () =>\n __secret_internals.legacyDoTransform(\n data,\n actions?.filter((item) => checkIfByTransform(item, data))\n ) as MenuAction[] | undefined,\n [actions, data]\n );\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n let __pathname: string;\n let disabled = false;\n let linkUrl = \"\";\n\n if (variant === \"launchpad-config\" || variant === \"menu-config\") {\n if (data.type === \"app\") {\n linkUrl = parseUrlTemplate(urlTemplate, data, \"\")!;\n } else {\n // 禁用外链菜单项\n const urlObject = new URL(data.url, location.origin);\n __pathname = urlObject.pathname;\n disabled = urlObject.origin !== location.origin;\n linkUrl = disabled\n ? \"\"\n : parseUrlTemplate(\n customUrlTemplate,\n {\n ...data,\n __pathname,\n },\n \"\"\n )!;\n }\n }\n\n return (\n <li\n className={classNames(\"menu-item\", {\n disabled: disabled || data.allBlocked,\n })}\n onClick={() => {\n onClick?.({ __pathname });\n }}\n >\n <WrappedLink\n tooltip={disabled ? \"该菜单项为外链,不支持配置\" : \"\"}\n url={linkUrl}\n >\n <WrappedIcon\n className=\"menu-icon\"\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(data.menuIcon?.lib && data.menuIcon.icon\n ? (pick(data.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{name}</span>\n </WrappedLink>\n {variant !== \"menu-config\" && !!filteredActions?.length && (\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onClick={(event) => {\n event.stopPropagation();\n }}\n onActionClick={handleActionClick}\n data-testid={`menu-item-actions-${data.id}`}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", { active: dropdownActive })}\n />\n </WrappedDropdownActions>\n )}\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n data: ConfigMenuItemDir;\n actions?: MenuAction[];\n variant?: ConfigVariant;\n urlTemplate?: string;\n customUrlTemplate?: string;\n onMenuItemClick?(item: ProcessedConfigMenuItemNormal): void;\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nfunction MenuItemFolder({\n data,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\n onMenuItemClick,\n onActionClick,\n}: MenuItemFolderProps) {\n const { name, locales, items } = data;\n const [dropdownActive, setDropdownActive] = useState(false);\n const [expanded, setExpanded] = useState(false);\n\n const filteredActions = useMemo(\n () =>\n __secret_internals.legacyDoTransform(\n data,\n actions?.filter((item) => checkIfByTransform(item, data))\n ) as MenuAction[] | undefined,\n [actions, data]\n );\n\n const toggle = useCallback(() => {\n setExpanded((previous) => !previous);\n }, []);\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li\n className={classNames(\"menu-item folder\", {\n empty: items.length === 0,\n blocked: data.allBlocked,\n })}\n >\n <div className=\"menu-folder-label-wrapper\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">\n {getLocaleName(locales, name)}\n </span>\n <WrappedIcon\n lib=\"antd\"\n icon={expanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n {variant !== \"menu-config\" && !!filteredActions?.length && (\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", {\n active: dropdownActive,\n })}\n />\n </WrappedDropdownActions>\n )}\n </div>\n <ul className={classNames(\"sub-menu\", { expanded })}>\n {items.map((item) => (\n <MenuItem\n key={item.instanceId}\n data={item}\n actions={actions}\n variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\n onClick={(data) => {\n onMenuItemClick?.({ ...item, ...data });\n }}\n onActionClick={onActionClick}\n />\n ))}\n </ul>\n </li>\n );\n}\n\nfunction parseUrlTemplate(\n urlTemplate: string | undefined,\n data: unknown,\n fallback?: string\n) {\n return (\n urlTemplate?.replace(/{{(.*?)}}/g, (_match, key) =>\n encodeURIComponent(String(get(data, key.trim())))\n ) ?? fallback\n );\n}\n","import React, { useMemo } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport \"@next-core/theme\";\nimport type {\n ConfigMenuGroup,\n ConfigMenuItem,\n ConfigMenuItemApp,\n ConfigMenuItemCustom,\n ConfigMenuItemDir,\n ConfigMenuItemNormal,\n ConfigVariant,\n MenuAction,\n MenuActionEventDetail,\n} from \"./interfaces\";\nimport { MenuGroup, MenuGroupProps } from \"./MenuGroup\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst BASE_PATH = \"/next/\";\n\n/**\n * 进行 Launchpad 配置。\n *\n * 也可用于菜单自定义显示产品功能清单。\n *\n * @insider\n */\nexport\n@defineElement(\"nav.launchpad-config\", {\n styleTexts: [styleText],\n})\nclass LaunchpadConfig extends ReactNextElement implements LaunchpadConfigProps {\n /** Launchpad 配置菜单分组数据 */\n @property({ attribute: false })\n accessor menuGroups: ConfigMenuGroup[] | undefined;\n\n /** 菜单操作按钮配置列表 */\n @property({ attribute: false })\n accessor actions: MenuAction[] | undefined;\n\n /**\n * @default \"launchpad-config\"\n * @description 显示变体:launchpad-config(Launchpad 配置)、factory-launchpad-config(工厂配置)、menu-config(菜单配置)、blacklist-config(黑名单配置)\n */\n @property()\n accessor variant: ConfigVariant | undefined;\n\n /**\n * 菜单项 APP 类型的链接模板,例如可配置为 `/app/{{ id }}`。\n *\n * 注:仅用于 variant: \"menu-config\"。\n */\n @property()\n accessor urlTemplate: string | undefined;\n\n /**\n * 菜单项自定义类型的链接模板,例如可配置为 `/custom?url={{ __pathname }}`。\n *\n * 注:仅用于 variant: \"menu-config\"。\n * 外链菜单链接会设置为禁用。\n * `__pathname` 是运行时变量,表示 url 解析后的 pathname。\n */\n @property()\n accessor customUrlTemplate: string | undefined;\n\n /**\n * 屏蔽的 URL 列表,例如可配置为 `[\"/app/1\", \"/app/2\"]`。\n *\n * 注:仅用于 variant: \"blacklist-config\"。\n */\n @property({ attribute: false })\n accessor blacklist: string[] | undefined;\n\n /**\n * @description 点击菜单项时触发\n * @detail 被点击的菜单项数据(app 或 custom 类型)\n */\n @event({ type: \"menu-item.click\" })\n accessor #menuItemClickEvent!: EventEmitter<ConfigMenuItemNormal>;\n\n /**\n * @description 点击菜单操作按钮时触发\n * @detail { data: 操作关联的菜单项或分组, action: 被点击的操作按钮配置 }\n */\n @event({ type: \"action.click\" })\n accessor #actionClickEvent!: EventEmitter<MenuActionEventDetail>;\n\n #handleMenuItemClick = (item: ConfigMenuItemNormal) => {\n this.#menuItemClickEvent.emit(item);\n };\n\n #onActionClick = (detail: MenuActionEventDetail) => {\n this.#actionClickEvent.emit(detail);\n };\n\n render() {\n return (\n <LaunchpadConfigComponent\n menuGroups={this.menuGroups}\n actions={this.actions}\n variant={this.variant ?? \"launchpad-config\"}\n urlTemplate={this.urlTemplate}\n customUrlTemplate={this.customUrlTemplate}\n blacklist={this.blacklist}\n onMenuItemClick={this.#handleMenuItemClick}\n onActionClick={this.#onActionClick}\n />\n );\n }\n}\n\nexport interface LaunchpadConfigProps\n extends Pick<\n MenuGroupProps,\n \"actions\" | \"variant\" | \"urlTemplate\" | \"customUrlTemplate\"\n > {\n menuGroups?: ConfigMenuGroup[];\n blacklist?: string[];\n}\n\nexport interface LaunchpadConfigEventsMapping {\n onMenuItemClick: \"menu-item.click\";\n onActionClick: \"action.click\";\n}\n\nexport interface LaunchpadConfigComponentProps\n extends LaunchpadConfigProps,\n Pick<MenuGroupProps, \"onMenuItemClick\" | \"onActionClick\"> {}\n\nexport function LaunchpadConfigComponent({\n menuGroups,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\n blacklist,\n onMenuItemClick,\n onActionClick,\n}: LaunchpadConfigComponentProps) {\n const processedMenuGroup = useMemo<ConfigMenuGroup[] | undefined>(() => {\n if (variant === \"blacklist-config\") {\n return menuGroups?.map((group) => {\n const items = group.items.map((item) =>\n getMenuItemWithBlockInfo(item, blacklist)\n );\n const blockable = items.some((item) => item.blockable);\n const hasBlocked = blockable && items.some((item) => item.hasBlocked);\n const hasUnblocked =\n blockable && items.some((item) => item.hasUnblocked);\n const allBlocked =\n items.length > 0 && items.every((item) => item.allBlocked);\n const blockableUrls = items.flatMap((item) =>\n item.blockable\n ? ((item as ConfigMenuItemDir).blockableUrls ??\n (item as ConfigMenuItemCustom).blockableUrl ??\n (item as ConfigMenuItemApp).url)\n : []\n );\n return {\n ...group,\n type: \"group\",\n items,\n blockable,\n hasBlocked,\n hasUnblocked,\n allBlocked,\n blockableUrls,\n };\n });\n } else if (variant === \"launchpad-config\") {\n return getMenuGroupsWithoutBlockedItems(menuGroups)?.filter(Boolean);\n } else {\n return menuGroups;\n }\n }, [variant, menuGroups, blacklist]);\n\n return (\n <ul className=\"menu-groups\">\n {processedMenuGroup?.map((group) => (\n <MenuGroup\n key={group.instanceId}\n data={group}\n actions={actions}\n variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\n onMenuItemClick={onMenuItemClick}\n onActionClick={onActionClick}\n />\n ))}\n </ul>\n );\n}\n\nfunction getMenuGroupsWithoutBlockedItems<T extends ConfigMenuGroup>(\n menuGroups: T[] | undefined\n): T[] | undefined {\n return menuGroups\n ?.map<T | null>((group) => {\n const items = group.items\n .map((item) => getMenuItemWithoutBlockedItems(item))\n .filter(Boolean) as ConfigMenuItem[];\n return { ...group, items };\n })\n .filter(Boolean) as T[];\n}\n\nfunction getMenuItemWithoutBlockedItems<T extends ConfigMenuItem>(\n item: T\n): T | null {\n if (item.type === \"dir\") {\n const subItems = item.items\n .map((subItem) => getMenuItemWithoutBlockedItems(subItem))\n .filter(Boolean) as T[];\n return { ...item, items: subItems };\n }\n if (item.type === \"app\") {\n return item.url && auth.isBlockedPath(item.url) ? null : item;\n }\n return item.url && auth.isBlockedHref(item.url) ? null : item;\n}\n\nfunction getMenuItemWithBlockInfo<T extends ConfigMenuItem>(\n item: T,\n blacklist: string[] | undefined\n): T {\n if (item.type === \"dir\") {\n const subItems = item.items.map((subItem) =>\n getMenuItemWithBlockInfo(subItem, blacklist)\n );\n const blockable = subItems.some((subItem) => subItem.blockable);\n const hasBlocked = subItems.some((subItem) => subItem.hasBlocked);\n const hasUnblocked =\n blockable && subItems.some((subItem) => subItem.hasUnblocked);\n const allBlocked =\n subItems.length > 0 && subItems.every((subItem) => subItem.allBlocked);\n const blockableUrls = subItems.flatMap((subItem) =>\n subItem.blockable\n ? ((subItem as unknown as ConfigMenuItemDir).blockableUrls ??\n (subItem as ConfigMenuItemCustom).blockableUrl ??\n subItem.url)\n : []\n );\n return {\n ...item,\n items: subItems,\n blockable,\n hasBlocked,\n hasUnblocked,\n allBlocked,\n blockableUrls,\n };\n }\n\n if (item.type === \"app\") {\n const blockable = !!item.url;\n const hasBlocked = blockable && blacklist?.includes(item.url);\n const hasUnblocked = blockable && !hasBlocked;\n return {\n ...item,\n blockable,\n hasBlocked,\n hasUnblocked,\n allBlocked: hasBlocked,\n };\n }\n\n const { blockable, blockableUrl } = getBlockableUrl(item.url);\n const hasBlocked = blockable && blacklist?.includes(blockableUrl!);\n const hasUnblocked = blockable && !hasBlocked;\n return {\n ...item,\n blockable,\n hasBlocked,\n hasUnblocked,\n allBlocked: hasBlocked,\n blockableUrl,\n };\n}\n\nfunction getBlockableUrl(url: string | undefined) {\n let blockable = !!url?.startsWith(BASE_PATH);\n let blockableUrl: string | undefined;\n if (blockable) {\n const urlObj = new URL(url!, location.origin);\n if (\n urlObj.origin === location.origin &&\n urlObj.pathname.startsWith(BASE_PATH)\n ) {\n blockableUrl = urlObj.pathname.substring(BASE_PATH.length - 1);\n } else {\n blockable = false;\n blockableUrl = undefined;\n }\n }\n return { blockable, blockableUrl };\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport \"@next-core/theme\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport moment from \"moment\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport styleText from \"./styles.shadow.css\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement } = createDecorators();\n\n/**\n * 导航栏告警提示组件,用于显示 License 到期提醒和页面性能问题警告。\n * @insider\n */\nexport\n@defineElement(\"nav.easyops-navbar-alerts\", {\n styleTexts: [styleText],\n})\nclass EasyopsNavbarAlerts extends ReactNextElement {\n render() {\n return <EasyopsNavbarAlertsComponent />;\n }\n}\n\ninterface SlowRenderInfo {\n renderTime: number;\n suggestTime: number;\n suggestUrl?: string;\n}\n\nconst storage = new JsonStorage(localStorage);\n\nexport function EasyopsNavbarAlertsComponent() {\n const [licenseHide, setLienceseHide] = useState<boolean>(false);\n const [slowRender, setSlowRender] = useState<SlowRenderInfo | null>(null);\n const currentApp = useCurrentApp();\n const licenseDismissedKey = useMemo(() => {\n const authInfo = auth.getAuth();\n return `license:${authInfo.org}`;\n }, []);\n\n const licenseDaysLeft = useMemo(() => {\n const authInfo = auth.getAuth();\n const validDaysLeft = authInfo.license?.validDaysLeft;\n let dismissExpireAt: number;\n if (licenseHide) {\n return null;\n }\n if (\n validDaysLeft &&\n validDaysLeft <= 15 &&\n authInfo.isAdmin &&\n ((dismissExpireAt = storage.getItem(licenseDismissedKey)),\n !dismissExpireAt || moment().unix() > dismissExpireAt)\n ) {\n return validDaysLeft;\n }\n return null;\n }, [licenseDismissedKey, licenseHide]);\n\n useEffect(() => {\n const handelRouteRender = (e: Event): void => {\n const renderTime = (e as CustomEvent<{ renderTime: number }>).detail\n .renderTime;\n const { loadTime, loadInfoPage } = getRuntime().getMiscSettings() as {\n loadTime: number;\n loadInfoPage?: string;\n };\n if (currentApp?.isBuildPush && loadTime > 0 && renderTime > loadTime) {\n setSlowRender({\n renderTime: millisecondToSecond(renderTime),\n suggestTime: millisecondToSecond(loadTime),\n suggestUrl: loadInfoPage,\n });\n }\n };\n window.addEventListener(\"route.render\", handelRouteRender);\n return () => {\n window.removeEventListener(\"route.render\", handelRouteRender);\n };\n }, [currentApp]);\n\n const handleLicenseAlertDismiss = useCallback(() => {\n // 一天内不再显示。\n storage.setItem(licenseDismissedKey, moment().unix() + 86400);\n setLienceseHide(true);\n }, [licenseDismissedKey]);\n\n return (\n <>\n {slowRender && (\n <Alert\n text={`您的页面存在性能问题, 当前页面渲染时间 ${slowRender.renderTime} 秒, 规定阈值为: ${slowRender.suggestTime} 秒, 您已超过。请您针对该页面进行性能优化!`}\n type=\"warning\"\n link={\n slowRender.suggestUrl\n ? {\n label: \"建议解决思路\",\n url: slowRender.suggestUrl,\n }\n : undefined\n }\n />\n )}\n {licenseDaysLeft !== null && (\n <Alert\n text={`离 License 过期还有 ${licenseDaysLeft} 天`}\n type=\"info\"\n closable\n onClose={handleLicenseAlertDismiss}\n />\n )}\n </>\n );\n}\n\ninterface AlertProps {\n text: string;\n type: \"info\" | \"warning\";\n closable?: boolean;\n link?: {\n label: string;\n url: string;\n };\n onClose?: () => void;\n}\n\nfunction Alert({ text, type, closable, link, onClose }: AlertProps) {\n return (\n <div className={`alert ${type}`}>\n <span className=\"text\">{text}</span>\n {link && (\n <WrappedLink className=\"link\" href={link.url} target=\"_blank\">\n {link.label}\n </WrappedLink>\n )}\n {closable && (\n <WrappedIcon\n lib=\"antd\"\n icon=\"close\"\n className=\"icon\"\n role=\"button\"\n onClick={onClose}\n />\n )}\n </div>\n );\n}\n\nfunction millisecondToSecond(millisecond: number) {\n return Math.floor(millisecond * 100) / 1e5;\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport { LaunchpadsContext } from \"../launchpad-button-v2/LaunchpadContext\";\nimport { SidebarMenuItem } from \"../launchpad-button-v2/MenuGroup\";\nimport { SidebarMenuItemData } from \"../launchpad-button-v2/interfaces\";\nimport { Target } from \"@next-bricks/basic/link\";\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 快捷访问\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-quick-access\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadQuickAccess extends ReactNextElement {\n /**\n * 是否为只读模式(隐藏收藏切换按钮)\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n /**\n * 菜单项链接打开的目标\n */\n @property()\n accessor target: Target | undefined;\n\n render() {\n return (\n <EoLaunchpadQuickAccessComponent\n readonly={this.readonly}\n target={this.target}\n />\n );\n }\n}\n\ninterface EoLaunchpadQuickAccessComponentProps {\n readonly?: boolean;\n target?: Target;\n}\n\nexport function EoLaunchpadQuickAccessComponent({\n readonly,\n target,\n}: EoLaunchpadQuickAccessComponentProps) {\n const {\n favorites,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(true);\n\n return (\n <LaunchpadsContext.Provider\n value={{\n searching: false,\n loadingFavorites,\n readonly,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <ul className=\"quick-access-list\">\n {favorites.map((item, index) => (\n <SidebarMenuItem\n key={index}\n target={target}\n item={item as SidebarMenuItemData}\n />\n ))}\n </ul>\n </LaunchpadsContext.Provider>\n );\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","export enum K {\n SEARCH_PLACEHOLDER = \"SEARCH_PLACEHOLDER\"\n}\n\nconst en: Locale = {\n SEARCH_PLACEHOLDER: \"Search products/micro-applications\"\n};\n\nconst zh: Locale = {\n SEARCH_PLACEHOLDER: \"搜索产品/微应用\"\n};\n\nexport const NS = \"bricks/nav/search-launchpad\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};","import React, { useCallback, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport classNames from \"classnames\";\nimport { LaunchpadsContext } from \"../launchpad-button-v2/LaunchpadContext\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport { MenuGroup } from \"../launchpad-button-v2/MenuGroup\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport \"./host-context.css\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\n\ninitializeReactI18n(NS, locales);\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * launchpad 搜索\n * @insider\n */\nexport\n@defineElement(\"eo-search-launchpad\", {\n styleTexts: [styleText],\n})\nclass EoSearchLaunchpad extends ReactNextElement {\n /**\n * 简约模式\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n render() {\n return <EoSearchLaunchpadComponent readonly={this.readonly} />;\n }\n}\n\ninterface EoSearchLaunchpadComponentProps {\n readonly?: boolean;\n}\n\nexport function EoSearchLaunchpadComponent({\n readonly,\n}: EoSearchLaunchpadComponentProps) {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const [active, setActive] = useState(false);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(active);\n const searching = !!q;\n const { t } = useTranslation(NS);\n\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQ(e.target.value);\n },\n [setQ]\n );\n\n const clearSearch = useCallback(() => {\n setQ(\"\");\n }, [setQ]);\n\n return (\n <LaunchpadsContext.Provider\n value={{\n searching,\n loadingFavorites,\n readonly,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <div className=\"container\">\n <div className=\"search-box\" onClick={handleClickSearchBox}>\n <WrappedIcon\n lib=\"fa\"\n icon=\"magnifying-glass\"\n className=\"search-icon\"\n />\n <input\n ref={searchInputRef}\n placeholder={t(K.SEARCH_PLACEHOLDER) as string}\n value={q}\n onChange={handleSearch}\n className=\"search-input\"\n onFocus={() => setActive(true)}\n onBlur={() => setActive(false)}\n />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n onMouseDown={(e) => e.preventDefault()}\n />\n </div>\n <div\n className={classNames(\"dropdown\", { \"dropdown-active\": active })}\n onMouseDown={(e) => e.preventDefault()}\n >\n <div className={classNames(\"dropdown-content\", { loading })}>\n <Loading loading={loading} />\n <ul className=\"menu-groups\">\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.name}\n items={group.items}\n />\n ))}\n </ul>\n </div>\n </div>\n </div>\n </LaunchpadsContext.Provider>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport type { Link, LinkProps, Target } from \"@next-bricks/basic/link\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * launchpad 最近访问\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-recent-visits\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadRecentVisits extends ReactNextElement {\n /**\n * 菜单项链接打开的目标(仅对应用类型的访问项生效,自定义链接类型始终在新标签打开)\n */\n @property({\n attribute: false,\n })\n accessor target: Target | undefined;\n\n render() {\n return <EoLaunchpadRecentVisitsComponent target={this.target} />;\n }\n}\n\ninterface EoLaunchpadRecentVisitsComponentProps {\n target?: Target;\n}\nexport function EoLaunchpadRecentVisitsComponent({\n target,\n}: EoLaunchpadRecentVisitsComponentProps) {\n const { recentVisits, pushRecentVisit } = useLaunchpadInfo(true);\n\n return (\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n <WrappedLink\n onClick={() => pushRecentVisit(item)}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n target,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <span>{item.name}</span>\n </WrappedLink>\n </li>\n ))}\n </ul>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport classNames from \"classnames\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface AppBarWrapperProps {\n isFixed?: boolean;\n position?: \"static\" | \"fixed\";\n displayCenter?: boolean;\n extraAppBarContentStyle?: React.CSSProperties;\n}\n\n/**\n * 应用顶部容器\n * @slot left - 左侧内容区\n * @slot right - 右侧内容区\n */\nexport\n@defineElement(\"eo-app-bar-wrapper\", {\n styleTexts: [styleText],\n alias: [\"basic.app-bar-wrapper\"],\n})\nclass EoAppBarWrapper extends ReactNextElement implements AppBarWrapperProps {\n /**\n * 是否固定定位。\n *\n * @default true\n * @deprecated 使用 `position` 属性代替\n */\n @property({\n type: Boolean,\n })\n accessor isFixed: boolean | undefined;\n\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * 设置时优先级高于 `isFixed`。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" | undefined;\n\n /**\n * 居中显示\n * @default false\n */\n @property({\n type: Boolean,\n })\n accessor displayCenter: boolean | undefined;\n\n /** 自定义样式 */\n @property({\n attribute: false,\n })\n accessor extraAppBarContentStyle: React.CSSProperties | undefined;\n\n render() {\n return (\n <EoAppBarWrapperComponent\n displayCenter={this.displayCenter}\n isFixed={this.isFixed}\n position={this.position}\n extraAppBarContentStyle={this.extraAppBarContentStyle}\n />\n );\n }\n}\n\nexport function EoAppBarWrapperComponent({\n isFixed = true,\n position,\n displayCenter = false,\n extraAppBarContentStyle = {},\n}: AppBarWrapperProps) {\n React.useEffect(() => {\n const mainElement = document.getElementById(\"main-mount-point\");\n const iframeMainElement = document.getElementById(\n \"legacy-iframe-mount-point\"\n );\n mainElement && (mainElement.style.marginTop = \"\");\n iframeMainElement && (iframeMainElement.style.marginTop = \"\");\n }, []);\n\n return (\n <div className=\"app-bar-container\">\n <div\n className={classNames(\n \"app-bar\",\n position === \"static\"\n ? \"static\"\n : position === \"fixed\" || isFixed\n ? \"fixed\"\n : \"absolute\"\n )}\n >\n {/* TODO: need AppBarTips */}\n <div\n className=\"app-bar-content\"\n style={{\n justifyContent: displayCenter ? \"space-around\" : \"space-between\",\n ...extraAppBarContentStyle,\n }}\n >\n <div className=\"left\">\n <slot name=\"left\" />\n </div>\n <div className=\"right\">\n <slot name=\"right\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { getRealValue } from \"@next-core/runtime\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { useCurrentApp, useNavConfig } from \"@next-core/react-runtime\";\nimport { BreadcrumbItemConf } from \"@next-core/types\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type { EoBreadcrumb } from \"@next-bricks/basic/breadcrumb\";\nimport type {\n EoBreadcrumbItem,\n BreadcrumbItemProps,\n} from \"@next-bricks/basic/breadcrumb-item\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { ExtendedLocationDescriptor } from \"@next-bricks/basic/link\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedBreadcrumb = wrapBrick<EoBreadcrumb, unknown>(\"eo-breadcrumb\");\nconst WrappedBreadcrumbItem = wrapBrick<EoBreadcrumbItem, BreadcrumbItemProps>(\n \"eo-breadcrumb-item\"\n);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface Menu {\n title: string;\n icon?: GeneralIconProps;\n link?: ExtendedLocationDescriptor;\n}\n\nexport interface EoFrameBreadcrumbProps {\n breadcrumb?: BreadcrumbItemConf[];\n noCurrentApp?: boolean;\n menu?: Menu;\n}\n\n/**\n * 面包屑\n */\nexport\n@defineElement(\"eo-frame-breadcrumb\", {\n styleTexts: [styleText],\n})\nclass EoFrameBreadcrumb\n extends ReactNextElement\n implements EoFrameBreadcrumbProps\n{\n /**\n * 面包屑配置\n */\n @property({\n attribute: false,\n })\n accessor breadcrumb: BreadcrumbItemConf[] | undefined;\n\n /**\n * 是否隐藏当前应用名称\n */\n @property({ type: Boolean })\n accessor noCurrentApp: boolean | undefined;\n\n /**\n * 菜单配置\n */\n @property({\n attribute: false,\n })\n accessor menu: Menu | undefined;\n\n render() {\n return (\n <EoFrameBreadcrumbComponent\n breadcrumb={this.breadcrumb}\n noCurrentApp={this.noCurrentApp}\n menu={this.menu}\n />\n );\n }\n}\n\nexport function EoFrameBreadcrumbComponent(props: EoFrameBreadcrumbProps) {\n const { menu } = props;\n\n const navConfig = useNavConfig();\n const currentApp = useCurrentApp();\n const curAppBreadcrumb = currentApp?.breadcrumb;\n // 处理面包屑文本中的动态计算表达式\n const currentAppBreadcrumbItems = curAppBreadcrumb?.items?.map((item) => ({\n ...item,\n text: getRealValue(item.text),\n })) as Array<BreadcrumbItemConf & { icon: GeneralIconProps }>;\n const breadcrumbItems = props.breadcrumb?.length\n ? props.breadcrumb\n : navConfig?.breadcrumb;\n\n const noCurrentApp = props.noCurrentApp ?? curAppBreadcrumb?.noCurrentApp;\n const useCurrentMenuTitle = curAppBreadcrumb?.useCurrentMenuTitle;\n\n return (\n <WrappedBreadcrumb>\n <span slot=\"separator\">/</span>\n {currentAppBreadcrumbItems?.map((item, index) => {\n return (\n <WrappedBreadcrumbItem key={index} url={item.to}>\n {item.icon ? (\n <WrappedIcon\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n {...item.icon}\n />\n ) : (\n index === 0 && (\n <WrappedIcon\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n lib=\"antd\"\n icon=\"home\"\n theme=\"outlined\"\n />\n )\n )}\n {item.text}\n </WrappedBreadcrumbItem>\n );\n })}\n {currentApp && !noCurrentApp ? (\n <WrappedBreadcrumbItem\n url={\n breadcrumbItems?.length &&\n currentApp.homepage &&\n !currentApp.internal\n ? currentApp.homepage\n : undefined\n }\n >\n {!currentAppBreadcrumbItems?.length && (\n <WrappedIcon\n {...currentApp.menuIcon}\n slot=\"prefix\"\n className=\"breadcrumb-item-prefix-icon\"\n />\n )}\n {currentApp.localeName}\n </WrappedBreadcrumbItem>\n ) : null}\n {useCurrentMenuTitle && menu ? (\n <WrappedBreadcrumbItem url={menu.link}>\n {menu.icon && (\n <WrappedIcon\n {...menu.icon}\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n />\n )}\n {menu.title}\n </WrappedBreadcrumbItem>\n ) : null}\n {breadcrumbItems?.map((item, index) => (\n <WrappedBreadcrumbItem key={index} url={item.to}>\n {item.text}\n </WrappedBreadcrumbItem>\n ))}\n </WrappedBreadcrumb>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarMenuItemProps {\n url?: LinkProps[\"url\"];\n href?: LinkProps[\"href\"];\n icon?: GeneralIconProps;\n target?: LinkProps[\"target\"];\n selected?: boolean;\n inSubmenu?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单项\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-item\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuItem\n extends ReactNextElement\n implements EoSidebarMenuItemProps\n{\n /**\n * 菜单项对应的系统内地址\n */\n @property({ attribute: false })\n accessor url: LinkProps[\"url\"] | undefined;\n\n /**\n * 菜单项对应的外部链接地址\n */\n @property()\n accessor href: LinkProps[\"href\"] | undefined;\n\n /**\n * 菜单项链接打开的目标\n */\n @property()\n accessor target: LinkProps[\"target\"] | undefined;\n\n /**\n * 菜单项的图标\n */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /**\n * 是否选中\n */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 是否在二级菜单中\n */\n @property({ type: Boolean })\n accessor inSubmenu: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n render() {\n return (\n <EoSidebarMenuItemComponent\n url={this.url}\n href={this.href}\n target={this.target}\n icon={this.icon}\n selected={this.selected}\n />\n );\n }\n}\n\nexport function EoSidebarMenuItemComponent(props: EoSidebarMenuItemProps) {\n const { url, href, target, icon, selected } = props;\n\n return (\n <WrappedLink type=\"plain\" url={url} href={href} target={target}>\n <div className={\"menu-item\"}>\n <span className=\"menu-item-icon-container\">\n <WrappedIcon\n {...icon}\n className=\"menu-item-icon\"\n {...(icon && \"imgSrc\" in icon\n ? { imgStyle: { filter: selected ? \"brightness(7)\" : undefined } }\n : {})}\n />\n </span>\n <span className=\"menu-item-text\">\n <slot />\n </span>\n </div>\n </WrappedLink>\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","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\nimport classNames from \"classnames\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface EoSidebarMenuGroupProps {\n selected?: boolean;\n collapsable?: boolean;\n collapsed?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单分组\n * @slot title - 分组标题\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-group\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuGroup\n extends ReactNextElement\n implements EoSidebarMenuGroupProps\n{\n /**\n * 是否允许折叠\n */\n @property({ type: Boolean })\n accessor collapsable: boolean | undefined;\n\n /**\n * 是否折叠\n */\n @property({ type: Boolean })\n accessor collapsed: boolean | undefined;\n\n /**\n * 是否选中\n * */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n #handleCollapseChang = (collapsed: boolean) => {\n this.collapsed = collapsed;\n };\n\n render() {\n return (\n <EoSidebarMenuGroupComponent\n collapsable={this.collapsable}\n selected={this.selected}\n collapsed={this.collapsed}\n menuCollapsed={this.menuCollapsed}\n onCollapseChange={this.#handleCollapseChang}\n />\n );\n }\n}\n\ninterface EoSidebarMenuGroupComponentProps extends EoSidebarMenuGroupProps {\n onCollapseChange?: (collapsed: boolean) => void;\n}\n\nexport function EoSidebarMenuGroupComponent(\n props: EoSidebarMenuGroupComponentProps\n) {\n const {\n collapsable = false,\n collapsed,\n menuCollapsed,\n onCollapseChange,\n } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n const titleRef = useRef<HTMLDivElement>(null);\n\n const handleClick = useCallback(() => {\n !menuCollapsed && onCollapseChange?.(!collapsed);\n }, [menuCollapsed, onCollapseChange, collapsed]);\n\n useEffect(() => {\n const titleElem = titleRef.current;\n titleElem?.addEventListener(\"click\", handleClick);\n\n return () => {\n titleElem?.removeEventListener(\"click\", handleClick);\n };\n }, [handleClick]);\n\n return (\n <div\n className={classNames(\"menu-group\", {\n \"menu-group-collapsed\": menuCollapsed ? true : collapsed,\n })}\n >\n <div className=\"menu-group-title\" ref={titleRef}>\n <span className=\"menu-group-title-icon-container\">\n <span className=\"menu-group-title-icon\"></span>\n </span>\n <div className=\"menu-group-title-text\">\n <slot name=\"title\" />\n </div>\n {collapsable && <span className=\"menu-group-arrow\" />}\n </div>\n <div className=\"menu-group-list\">\n <div className=\"menu-group-list-inner\">\n <slot ref={slotRef} />\n </div>\n </div>\n </div>\n );\n}\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport classNames from \"classnames\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarMenuSubmenuProps {\n icon?: GeneralIconProps;\n selected?: boolean;\n collapsed?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单子菜单\n * @slot title - 子菜单标题\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-submenu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuSubmenu\n extends ReactNextElement\n implements EoSidebarMenuSubmenuProps\n{\n /**\n * 菜单的图标\n */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /**\n * 是否选中\n * */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 是否折叠\n */\n @property({ type: Boolean })\n accessor collapsed: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n #handleCollapseChang = (collapsed: boolean) => {\n this.collapsed = collapsed;\n };\n\n render() {\n return (\n <EoSidebarMenuSubmenuComponent\n icon={this.icon}\n selected={this.selected}\n collapsed={this.collapsed}\n menuCollapsed={this.menuCollapsed}\n onCollapseChange={this.#handleCollapseChang}\n />\n );\n }\n}\n\ninterface EoSidebarMenuSubmenuComponentProps extends EoSidebarMenuSubmenuProps {\n onCollapseChange?: (collapsed: boolean) => void;\n}\n\nexport function EoSidebarMenuSubmenuComponent(\n props: EoSidebarMenuSubmenuComponentProps\n) {\n const { icon, collapsed, menuCollapsed, onCollapseChange } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n const titleRef = useRef<HTMLDivElement>(null);\n\n const handleClick = useCallback(() => {\n !menuCollapsed && onCollapseChange?.(!collapsed);\n }, [menuCollapsed, onCollapseChange, collapsed]);\n\n useEffect(() => {\n const titleElem = titleRef.current;\n titleElem?.addEventListener(\"click\", handleClick);\n\n return () => {\n titleElem?.removeEventListener(\"click\", handleClick);\n };\n }, [handleClick]);\n\n return (\n <div\n className={classNames(\"menu-submenu\", {\n \"menu-submenu-collapsed\": menuCollapsed ? true : collapsed,\n })}\n >\n <div className=\"menu-submenu-title\" ref={titleRef}>\n <span className=\"menu-submenu-title-icon-container\">\n <WrappedIcon {...icon!} className=\"menu-submenu-title-icon\" />\n </span>\n <span className=\"menu-submenu-title-text\">\n <slot name=\"title\" />\n </span>\n <span className=\"menu-submenu-arrow\" />\n </div>\n <div className=\"menu-sub\">\n <div className=\"menu-sub-inner\">\n <slot ref={slotRef} />\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface EoSidebarMenuProps {\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单\n *\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenu extends ReactNextElement implements EoSidebarMenuProps {\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n render() {\n return <EoSidebarMenuComponent menuCollapsed={this.menuCollapsed} />;\n }\n}\n\nexport function EoSidebarMenuComponent(props: EoSidebarMenuProps) {\n const { menuCollapsed } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n return (\n <div className=\"sidebar-menu\">\n <div className=\"sidebar-menu-item-list\">\n <slot ref={slotRef} />\n </div>\n </div>\n );\n}\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 * 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;","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 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","import React, { useState, useEffect, useCallback } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport { UnregisterCallback } from \"history\";\nimport \"@next-core/theme\";\nimport {\n SidebarMenuSimpleItem,\n SidebarMenuGroup,\n SidebarMenuItem,\n} from \"@next-shared/general/types\";\nimport {\n initMenuItemAndMatchCurrentPathKeys,\n isGroup,\n isSubMenu,\n} from \"@next-shared/general/menu\";\nimport { Menu as MenuComponent, SidebarMenu } from \"@next-bricks/basic/menu\";\nimport { Link, LinkProps, Target } from \"@next-bricks/basic/link\";\nimport {\n EoMenuItemSubMenu,\n EoMenuSubMenuProps,\n} from \"@next-bricks/basic/menu-item-sub-menu\";\nimport { EoMenuGroup } from \"@next-bricks/basic/menu-group\";\nimport { MenuComponentProps, MenuItem } from \"@next-bricks/basic/menu-item\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport classNames from \"classnames\";\n\n// --- NOTE: uncomment these lines below to enable i18n for your brick ---\n// import { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\n// import { K, NS, locales } from \"./i18n.js\";\n// initializeReactI18n(NS, locales);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedMenu = wrapBrick<MenuComponent, any>(\"eo-menu\");\n\nconst WrappedMenuGroup = wrapBrick<EoMenuGroup, any>(\"eo-menu-group\");\n\nconst WrapperMenuItemSubMenu = wrapBrick<EoMenuItemSubMenu, EoMenuSubMenuProps>(\n \"eo-menu-item-sub-menu\"\n);\n\nconst WrappedMenuItem = wrapBrick<MenuItem, MenuComponentProps>(\"eo-menu-item\");\n\nconst WrappedLinkItem = wrapBrick<Link, LinkProps>(\"eo-link\");\n\ninterface SidebarSubMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n}\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 侧边栏子菜单,支持简单菜单项、分组和子菜单的嵌套渲染\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-sub-menu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarSubMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n render() {\n return <EoSidebarSubMenuComponent menu={this.menu} />;\n }\n}\n\nexport function EoSidebarSubMenuComponent(props: SidebarSubMenuProps) {\n // const { t } = useTranslation(NS);\n // const hello = t(K.HELLO);\n const { menu } = props;\n\n const history = getHistory();\n const [location, setLocation] = useState(history.location);\n const { pathname, search } = location;\n\n const [selectedKey, setSelectedKey] = useState<string[]>([]);\n const [openedKeys, setOpenedKeys] = useState<string[]>([]);\n\n const setSelected = useCallback((): void => {\n const { selectedKeys, openedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n setSelectedKey(selectedKeys);\n setOpenedKeys(openedKeys);\n }, [menu?.menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n setSelected();\n return unListen;\n }, [history, setSelected]);\n\n const getMenuItemIndent = useCallback((item: SidebarMenuItem): number => {\n return ((item.key?.split(\".\")?.length as number) - 1) * 16;\n }, []);\n\n const renderSimpleMenuItem = (\n item: SidebarMenuSimpleItem,\n options?: {\n inSubmenu?: boolean;\n }\n ) => {\n return (\n <WrappedMenuItem\n className={classNames(\"menu-item\", {\n \"in-submenu\": options?.inSubmenu,\n })}\n style={{ paddingLeft: getMenuItemIndent(item) || 16 }}\n icon={item.icon}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n <WrappedLinkItem\n className=\"menu-item-link\"\n type=\"plain\"\n url={item.to as string}\n href={item.href}\n title={item.text}\n target={item.target as Target}\n >\n <span\n className={classNames(\"menu-item-text\", {\n \"item-has-icon\": item.icon,\n })}\n >\n {item.text}\n </span>\n </WrappedLinkItem>\n </WrappedMenuItem>\n );\n };\n\n const renderSubMenuItem = (item: SidebarMenuGroup) => {\n // istanbul ignore else\n if (item.items?.length > 0) {\n return (\n <WrapperMenuItemSubMenu\n className=\"menu-sub-item\"\n icon={item.icon}\n titleStyle={{ paddingLeft: getMenuItemIndent(item) }}\n bodyStyle={{ paddingLeft: getMenuItemIndent(item) / 2 }}\n collapsed={!openedKeys.includes(item.key!)}\n >\n <span slot=\"title\">{item.title}</span>\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n {renderMenuItem(innerItem, {\n inSubmenu: true,\n })}\n </React.Fragment>\n ))}\n </WrapperMenuItemSubMenu>\n );\n }\n };\n\n const renderGroupMenuItem = (item: SidebarMenuGroup) => {\n // istanbul ignore else\n if (item.items?.length > 0) {\n return (\n <WrappedMenuGroup>\n <span slot=\"title\">{item.title}</span>\n\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n {renderMenuItem(innerItem)}\n </React.Fragment>\n );\n })}\n </WrappedMenuGroup>\n );\n }\n };\n\n function renderMenuItem(\n item: SidebarMenuItem,\n options?:\n | {\n inSubmenu?: boolean;\n }\n | undefined\n ) {\n return isSubMenu(item as SidebarMenuGroup)\n ? renderSubMenuItem(item as SidebarMenuGroup)\n : isGroup(item)\n ? renderGroupMenuItem(item)\n : renderSimpleMenuItem(item, options);\n }\n\n return (\n <WrappedMenu className=\"menu-container\" mode=\"vertical\">\n {menu?.title && (\n <div className=\"header\">\n {menu?.icon && <WrappedIcon {...(menu?.icon as GeneralIconProps)} />}\n <span className=\"title\">{menu?.title}</span>\n </div>\n )}\n <div className=\"content\">\n {menu?.menuItems.map((item) => {\n return (\n <React.Fragment key={item.key}>\n {renderMenuItem(item)}\n </React.Fragment>\n );\n })}\n </div>\n </WrappedMenu>\n );\n}\n","import React from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport classNames from \"classnames\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { UseBrickConf } from \"@next-core/types\";\n\nconst { defineElement, property, event } = createDecorators();\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\n/**\n * 目录\n */\nexport\n@defineElement(\"eo-directory\", {\n styleTexts: [styleText],\n})\nclass EoDirectory extends ReactNextElement implements EoDirectoryProps {\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" = \"fixed\";\n\n /**\n * 目录标题\n */\n @property()\n accessor directoryTitle: string | undefined;\n\n /**\n * 菜单数据\n * @default []\n * @required\n */\n @property({ attribute: false })\n accessor menuItems: MenuItem[] = [];\n\n /**\n * 是否隐藏右边线\n */\n @property({ type: Boolean })\n accessor hideRightBorder: boolean = false;\n\n /**\n * 后缀 useBrick\n */\n @property({\n attribute: false,\n })\n accessor suffixBrick: { useBrick: UseBrickConf } | undefined;\n\n /**\n * 默认选中高亮的菜单项\n */\n @property({ attribute: false })\n accessor defaultSelectedKeys: string[] | undefined;\n /**\n * @description 菜单项点击时触发\n * @detail { groupKey: 对应分组的 key(仅分组子项有值), data: 被点击的菜单项 }\n */\n @event({ type: \"menu.item.click\" })\n accessor #menuItemClickEvent!: EventEmitter<MenuItemClickEventDetail>;\n /**\n * @description 点击菜单项后缀图标时触发\n * @detail { key: 对应菜单项或分组的 key }\n */\n @event({ type: \"suffix.icon.click\" })\n accessor #suffixIconClickEvent!: EventEmitter<{ key: string }>;\n\n #menuItemClick = (data: MenuItemClickEventDetail) => {\n this.#menuItemClickEvent.emit(data);\n };\n #suffixIconClick = (key: string) => {\n this.#suffixIconClickEvent.emit({ key });\n };\n\n render() {\n return (\n <EoDirectoryComponent\n menuItems={this.menuItems}\n directoryTitle={this.directoryTitle}\n hideRightBorder={this.hideRightBorder}\n suffixIconClick={this.#suffixIconClick}\n menuItemClick={this.#menuItemClick}\n defaultSelectedKeys={this.defaultSelectedKeys}\n suffixBrick={this.suffixBrick}\n />\n );\n }\n}\nexport interface EoDirectoryProps {\n position?: \"static\" | \"fixed\";\n suffixBrick?: { useBrick: UseBrickConf };\n directoryTitle: string | undefined;\n menuItems: MenuItem[];\n hideRightBorder?: boolean;\n menuItemClick?: (data: MenuItemClickEventDetail) => void;\n suffixIconClick?: (key: string) => void;\n defaultSelectedKeys?: string[] | undefined;\n}\n\nexport interface EoDirectoryEventsMapping {\n onMenuItemClick: \"menu.item.click\";\n onSuffixIconClick: \"suffix.icon.click\";\n}\ninterface MenuChildrenItem {\n title: string;\n key: string;\n [key: string]: any;\n}\ninterface MenuItem {\n title: string;\n key: string;\n type: \"group\" | \"item\";\n children?: MenuChildrenItem[];\n suffixIcon?: GeneralIconProps;\n suffixIconTooltip?: string;\n suffixIconDisabled?: boolean;\n}\ninterface MenuItemClickEventDetail {\n data: MenuChildrenItem;\n groupKey?: string;\n}\n\nexport function EoDirectoryComponent(props: EoDirectoryProps) {\n const {\n menuItems,\n directoryTitle,\n hideRightBorder,\n menuItemClick,\n suffixIconClick,\n defaultSelectedKeys,\n suffixBrick,\n } = props;\n\n return (\n <div\n className={classNames(\"directory-container\", {\n \"directory-container-not-border\": hideRightBorder,\n })}\n >\n {directoryTitle && (\n <div className=\"directory-title\" title={directoryTitle}>\n {directoryTitle}\n </div>\n )}\n <div className=\"directory-menu-list\">\n {menuItems.map((item, index) => {\n return (\n <div\n className={classNames(\"menu-item\", `menu-item-${item.type}`)}\n key={`${item.key}-${index}`}\n >\n <div\n className={classNames(`menu-item-title-${item.type}`)}\n onClick={() =>\n item.type === \"item\" && menuItemClick?.({ data: item })\n }\n >\n <span\n className={classNames(\"menu-title-text\", {\n \"menu-title-text-active\": defaultSelectedKeys?.includes(\n item.key\n ),\n })}\n >\n {item.title}\n </span>\n {suffixBrick?.useBrick ? (\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={{ data: item }}\n />\n ) : null}\n {item.suffixIcon && (\n <WrappedTooltip\n content={item.suffixIconTooltip}\n placement=\"top\"\n >\n <WrappedIcon\n {...(item.suffixIcon as GeneralIconProps)}\n className={classNames(\"menu-item-title-suffix-icon\", {\n \"menu-item-title-suffix-icon-disabled\":\n item.suffixIconDisabled,\n })}\n onClick={(e) => {\n e.stopPropagation();\n if (item.suffixIconDisabled) {\n e.preventDefault();\n } else {\n suffixIconClick?.(item.key);\n }\n }}\n />\n </WrappedTooltip>\n )}\n </div>\n {item.type === \"group\" &&\n !!item.children?.length &&\n item.children.map((child, i) => {\n return (\n <div\n className=\"menu-item-title-item\"\n onClick={() =>\n menuItemClick?.({ data: child, groupKey: item.key })\n }\n key={`${child.key}-${i}`}\n >\n <span\n className={classNames(\"menu-title-text\", {\n \"menu-title-text-active\":\n defaultSelectedKeys?.includes(child.key),\n })}\n >\n {child.title}\n </span>\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport type { NodeData, SuffixBrickConf } from \".\";\n\nexport interface ContextOfDirectoryTree {\n expandedKeysSet: Set<string>;\n selectedKeysSet: Set<string>;\n internalNodeSelectable?: boolean;\n onExpand: (data: { keys: string[]; node: NodeData }) => void;\n onSelect: (data: { keys: string[]; node: NodeData }) => void;\n suffixBrick?: SuffixBrickConf;\n}\n\nexport const DirectoryTreeContext = React.createContext<ContextOfDirectoryTree>(\n {\n expandedKeysSet: new Set(),\n selectedKeysSet: new Set(),\n onExpand: () => {},\n onSelect: () => {},\n }\n);\n\nexport const useDirectoryTreeContext = (): ContextOfDirectoryTree =>\n React.useContext(DirectoryTreeContext);\n","import React, { useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport classNames from \"classnames\";\nimport {\n EoDirectoryTreeLeaf,\n EoDirectoryTreeLeafEvents,\n EoDirectoryTreeLeafEventsMap,\n EoDirectoryTreeLeafProps,\n} from \"./directory-tree-leaf\";\nimport {\n EoDirectoryTreeInternalNode,\n EoDirectoryTreeInternalNodeEvents,\n EoDirectoryTreeInternalNodeEventsMap,\n EoDirectoryTreeInternalNodeProps,\n} from \"./directory-tree-internal-node\";\nimport { useDirectoryTreeContext } from \"./DirectoryTreeContext\";\nimport { TreeData } from \"./\";\n\nconst WrappedTreeLeaf = wrapBrick<\n EoDirectoryTreeLeaf,\n EoDirectoryTreeLeafProps,\n EoDirectoryTreeLeafEvents,\n EoDirectoryTreeLeafEventsMap\n>(\"eo-directory-tree-leaf\", {\n onSelect: \"select\",\n});\nconst WrappedTreeInternalNode = wrapBrick<\n EoDirectoryTreeInternalNode,\n EoDirectoryTreeInternalNodeProps,\n EoDirectoryTreeInternalNodeEvents,\n EoDirectoryTreeInternalNodeEventsMap\n>(\"eo-directory-tree-internal-node\", {\n onExpand: \"expand\",\n onSelect: \"select\",\n});\n\ninterface TreeLeafProps {\n treeData: TreeData;\n}\n\nfunction TreeLeaf(props: TreeLeafProps) {\n const { treeData } = props;\n const { data, index, depth } = treeData;\n const { selectedKeysSet, onSelect, suffixBrick } = useDirectoryTreeContext();\n\n const nodeData = useMemo(\n () => ({ data, index, depth }),\n [data, index, depth]\n );\n\n return (\n <WrappedTreeLeaf\n depth={depth}\n selected={selectedKeysSet.has(data.key)}\n icon={data.icon}\n faded={data.faded}\n onSelect={() => {\n const keys = [data.key];\n onSelect({ keys, node: nodeData });\n }}\n className={classNames({\n \"show-suffix-when-hover\": suffixBrick?.when === \"hover\",\n })}\n >\n <span title={data.title}>{data.title}</span>\n {suffixBrick?.useBrick && (\n <div className=\"suffix\" slot=\"suffix\">\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={nodeData}\n />\n </div>\n )}\n </WrappedTreeLeaf>\n );\n}\n\ninterface TreeInternalNodeProps {\n treeData: TreeData;\n}\n\nfunction TreeInternalNode(props: TreeInternalNodeProps) {\n const { treeData } = props;\n const { data, index, depth } = treeData;\n const {\n expandedKeysSet,\n onExpand,\n selectedKeysSet,\n onSelect,\n internalNodeSelectable,\n suffixBrick,\n } = useDirectoryTreeContext();\n\n const nodeData = useMemo(\n () => ({ data, index, depth }),\n [data, index, depth]\n );\n\n return (\n <WrappedTreeInternalNode\n depth={depth}\n selectable={internalNodeSelectable}\n icon={data.icon}\n faded={data.faded}\n expanded={expandedKeysSet.has(data.key)}\n selected={selectedKeysSet.has(data.key)}\n onExpand={(e) => {\n if (e.detail) {\n expandedKeysSet.add(data.key);\n } else {\n expandedKeysSet.delete(data.key);\n }\n const keys = [...expandedKeysSet];\n onExpand({ keys, node: nodeData });\n }}\n onSelect={() => {\n const keys = [data.key];\n onSelect({ keys, node: nodeData });\n }}\n className={classNames({\n \"show-suffix-when-hover\": suffixBrick?.when === \"hover\",\n })}\n >\n <span slot=\"label\" title={data.title}>\n {data.title}\n </span>\n {suffixBrick?.useBrick && (\n <div className=\"suffix\" slot=\"suffix\">\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={nodeData}\n />\n </div>\n )}\n </WrappedTreeInternalNode>\n );\n}\n\ninterface TreeNodeProps {\n treeData: TreeData;\n}\n\nfunction TreeNode(props: TreeNodeProps) {\n const { treeData } = props;\n const isLeaf = !Array.isArray(treeData.children);\n\n return isLeaf ? (\n <TreeLeaf treeData={treeData} />\n ) : (\n <TreeInternalNode treeData={treeData} />\n );\n}\n\ninterface TreeProps {\n treeData: TreeData[];\n}\n\nexport function Tree(props: TreeProps) {\n const { treeData } = props;\n\n return treeData.map((v) => {\n return <TreeNode key={v.key} treeData={v} />;\n });\n}\n","import { get, isNil } from \"lodash\";\nimport { TreeData, TreeItem } from \"./index\";\n\nexport function getAllExpandableKeys(data: TreeItem[]): string[] {\n return data.reduce((pre, cur) => {\n const isLeaf = !Array.isArray(cur.children);\n\n if (!isLeaf) {\n const keys = [cur.key].concat(\n getAllExpandableKeys(cur.children as TreeItem[])\n );\n return pre.concat(keys);\n } else {\n return pre;\n }\n }, [] as string[]);\n}\n\nexport function getExpandableKeysAccordingToSelectedKeys(\n data: TreeItem[],\n selectedKeysSet: Set<string>\n): string[] {\n return data.reduce((pre, cur) => {\n const isLeaf = !Array.isArray(cur.children);\n\n if (!isLeaf) {\n const childrenMatched = cur.children?.some((child) =>\n selectedKeysSet.has(child.key)\n );\n const childrenExpandableKeys = getExpandableKeysAccordingToSelectedKeys(\n cur.children as TreeItem[],\n selectedKeysSet\n );\n\n const keys = childrenExpandableKeys.concat(\n childrenMatched || childrenExpandableKeys.length ? [cur.key] : []\n );\n return pre.concat(keys);\n } else {\n return pre;\n }\n }, [] as string[]);\n}\n\nexport function searchTree(\n data: TreeItem[],\n q: string,\n searchFields: (string | string[])[]\n): { data: TreeItem[]; expandedKeys: string[] } {\n if (!q) {\n return { data, expandedKeys: [] };\n }\n\n const lowerQ = q.toLowerCase();\n const _expandedKeys: string[] = [];\n const _data = data\n .map((item) => {\n const selfMatched = matchItem(item, lowerQ, searchFields);\n\n if (Array.isArray(item.children)) {\n const childrenSearchResult = searchTree(\n item.children,\n lowerQ,\n searchFields\n );\n const filteredChildren = childrenSearchResult.data;\n const childrenMatched = !!filteredChildren?.length;\n\n if (childrenMatched) {\n _expandedKeys.push(item.key, ...childrenSearchResult.expandedKeys);\n\n return {\n ...item,\n children: filteredChildren,\n };\n }\n }\n\n if (selfMatched) {\n return item;\n }\n\n return undefined;\n })\n .filter(Boolean) as TreeItem[];\n return { data: _data, expandedKeys: _expandedKeys };\n}\n\nfunction matchItem(\n item: TreeItem,\n lowerQ: string,\n searchFields: (string | string[])[]\n): TreeItem | undefined {\n const keywords = searchFields.flatMap((field) =>\n getSearchKeywords(get(item, field))\n );\n const matched = keywords.some((v) => v.toLowerCase().includes(lowerQ));\n\n if (matched) {\n return item;\n }\n return undefined;\n}\n\nfunction getSearchKeywords(value: unknown): string[] {\n const result = [];\n if (isNil(value)) {\n // do nothing\n } else if (Array.isArray(value)) {\n value.map((v) => result.push(getSearchKeywords(v)));\n } else if (Object.prototype.toString.call(value) === \"[object Object]\") {\n for (const k in value as Record<string, any>) {\n result.push(\n String(k),\n getSearchKeywords((value as Record<string, any>)[k])\n );\n }\n } else {\n // string, number, bigint, boolean...\n result.push(String(value));\n }\n\n return result.flat(Infinity).filter(Boolean) as string[];\n}\n\nexport function getFlattenTreeData(\n treeItems: TreeItem[],\n expandedKeysSet: Set<string>\n) {\n const flattenList: TreeData[] = [];\n\n function dig(list: TreeItem[], parent?: TreeData): TreeData[] {\n return list.map((treeItem, index) => {\n const pos = parent ? `${parent.pos}-${index}` : String(index);\n\n const flattenData: TreeData = {\n title: treeItem.title,\n key: treeItem.key,\n pos,\n depth: pos.split(\"-\").length - 1,\n index,\n data: treeItem,\n parent,\n };\n\n flattenList.push(flattenData);\n\n if (Array.isArray(treeItem.children)) {\n flattenData.children = expandedKeysSet.has(treeItem.key)\n ? dig(treeItem.children, flattenData)\n : [];\n } else {\n flattenData.children = undefined;\n }\n\n return flattenData;\n });\n }\n\n dig(treeItems);\n\n return flattenList;\n}\n","import React, { useMemo, useState } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap,\n} from \"@next-bricks/form/search\";\nimport { Tree } from \"./Tree\";\nimport {\n getFlattenTreeData,\n getAllExpandableKeys,\n getExpandableKeysAccordingToSelectedKeys,\n searchTree,\n} from \"./utils\";\nimport { DirectoryTreeContext } from \"./DirectoryTreeContext\";\nimport { UseBrickConf } from \"@next-core/types\";\nimport type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\n\nconst { defineElement, property, method, event } = createDecorators();\n\nconst WrappedSearch = wrapBrick<\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap\n>(\"eo-search\", {\n onChange: \"change\",\n onSearch: \"search\",\n});\n\n/**\n * 传入的 data 类型\n */\nexport interface TreeItem {\n key: string;\n title: string;\n icon?: GeneralIconProps;\n faded?: boolean;\n children?: TreeItem[];\n [key: string]: any;\n}\n\n/**\n * 内部格式化后的类型\n */\nexport interface TreeData {\n title: string;\n key: string;\n pos: string;\n depth: number;\n index: number;\n data: TreeItem;\n parent?: TreeData;\n children?: TreeData[];\n}\n\n/**\n * useBrick、事件使用的类型\n */\nexport interface NodeData {\n depth: number;\n index: number;\n data: TreeItem;\n}\n\nexport interface EoDirectoryTreeProps {\n data: TreeItem[];\n directoryTitle?: string;\n internalNodeSelectable?: boolean;\n searchable?: boolean;\n placeholder?: string;\n selectedKeys?: string[];\n expandedKeys?: string[];\n searchFields?: (string | string[])[];\n suffixBrick?: { useBrick: UseBrickConf };\n}\n\nexport interface EoDirectoryTreeEventsMapping {\n onExpand: \"expand\";\n onSelect: \"select\";\n}\n\nexport interface SuffixBrickConf {\n /**\n * @default \"always\"\n */\n when?: \"always\" | \"hover\";\n useBrick: UseBrickConf;\n}\n\n/**\n * 目录树\n */\nexport\n@defineElement(\"eo-directory-tree\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTree extends ReactNextElement {\n /**\n * 数据源\n */\n @property({\n attribute: false,\n })\n accessor data: TreeItem[] = [];\n\n /**\n * 目录标题\n */\n @property()\n accessor directoryTitle: string | undefined;\n\n /**\n * 设置中间节点是否可选,默认只有叶子节点可选\n */\n @property({ type: Boolean })\n accessor internalNodeSelectable: boolean | undefined;\n\n /**\n * 可搜索\n */\n @property({\n type: Boolean,\n })\n accessor searchable: boolean | undefined;\n\n /**\n * 搜索占位说明\n */\n @property()\n accessor placeholder: string | undefined;\n\n /**\n * 除了 title 以外,额外的搜索字段\n */\n @property({\n attribute: false,\n })\n accessor searchFields: (string | string[])[] | undefined;\n\n /**\n * 后缀 useBrick\n */\n @property({\n attribute: false,\n })\n accessor suffixBrick: SuffixBrickConf | undefined;\n\n /**\n * 选中的 keys\n */\n @property({\n attribute: false,\n })\n accessor selectedKeys: string[] | undefined;\n\n /**\n * 展开的 keys\n */\n @property({\n attribute: false,\n })\n accessor expandedKeys: string[] | undefined;\n\n /**\n * 展开全部\n */\n @method()\n expandAll() {\n this.expandedKeys = getAllExpandableKeys(this.data);\n }\n\n /**\n * 收起全部\n */\n @method()\n collapseAll() {\n this.expandedKeys = [];\n }\n\n /**\n * 根据选择项展开\n */\n @method()\n expandAccordingToSelectedKeys() {\n this.expandedKeys = getExpandableKeysAccordingToSelectedKeys(\n this.data,\n new Set(this.selectedKeys)\n );\n }\n\n /**\n * 展开事件\n * @detail { keys: 展开的 keys 列表, node: 触发展开的节点数据 }\n */\n @event({ type: \"expand\" })\n accessor #expandEvent!: EventEmitter<{ keys: string[]; node: NodeData }>;\n #handleExpand = (data: { keys: string[]; node: NodeData }) => {\n this.expandedKeys = data.keys;\n this.#expandEvent.emit(data);\n };\n\n /**\n * 选择事件\n * @detail { keys: 选中的 keys 列表, node: 触发选择的节点数据 }\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<{ keys: string[]; node: NodeData }>;\n #handleSelect = (data: { keys: string[]; node: NodeData }) => {\n this.selectedKeys = data.keys;\n this.#selectEvent.emit(data);\n };\n\n render() {\n return (\n <EoDirectoryTreeComponent\n element={this}\n data={this.data}\n directoryTitle={this.directoryTitle}\n internalNodeSelectable={this.internalNodeSelectable}\n placeholder={this.placeholder}\n searchable={this.searchable}\n searchFields={this.searchFields}\n suffixBrick={this.suffixBrick}\n selectedKeys={this.selectedKeys}\n expandedKeys={this.expandedKeys}\n onExpand={this.#handleExpand}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\ninterface EoDirectoryTreeComponentProps extends EoDirectoryTreeProps {\n element: EoDirectoryTree;\n onExpand: (data: { keys: string[]; node: NodeData }) => void;\n onSelect: (data: { keys: string[]; node: NodeData }) => void;\n}\n\nexport function EoDirectoryTreeComponent(props: EoDirectoryTreeComponentProps) {\n const {\n element,\n data,\n directoryTitle,\n internalNodeSelectable,\n searchable,\n searchFields,\n placeholder,\n suffixBrick,\n onSelect,\n onExpand,\n } = props;\n\n const expandedKeysSet = useMemo(\n () => new Set(props.expandedKeys),\n [props.expandedKeys]\n );\n const selectedKeysSet = useMemo(\n () => new Set(props.selectedKeys),\n [props.selectedKeys]\n );\n\n const [q, setQ] = useState(\"\");\n\n const handleSearch = (e: CustomEvent<string>) => {\n setQ(e.detail);\n };\n\n const searchedData = useMemo(() => {\n const result = searchTree(data, q, (searchFields || []).concat(\"title\"));\n if (q) {\n element.expandedKeys = result.expandedKeys;\n }\n return result.data;\n }, [data, q, searchFields]);\n\n const treeData = useMemo(() => {\n return getFlattenTreeData(searchedData, expandedKeysSet);\n }, [searchedData, expandedKeysSet]);\n\n return (\n <DirectoryTreeContext.Provider\n value={{\n expandedKeysSet,\n selectedKeysSet,\n internalNodeSelectable,\n onSelect,\n onExpand,\n suffixBrick,\n }}\n >\n <div className=\"directory-container\">\n {directoryTitle && (\n <div className=\"directory-title-container\">\n <div className=\"directory-title\" title={directoryTitle}>\n {directoryTitle}\n </div>\n <div className=\"directory-title-toolbar\">\n <slot name=\"toolbar\" />\n </div>\n </div>\n )}\n {searchable && (\n <WrappedSearch\n className=\"directory-search\"\n trim\n placeholder={placeholder}\n onSearch={handleSearch}\n />\n )}\n <div className=\"tree\">\n <Tree treeData={treeData} />\n </div>\n </div>\n </DirectoryTreeContext.Provider>\n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { IndentSize } from \"../constants\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedEoIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoDirectoryTreeLeafProps {\n depth: number;\n selected?: boolean;\n icon?: GeneralIconProps;\n faded?: boolean;\n}\n\nexport interface EoDirectoryTreeLeafEvents {\n select: CustomEvent<void>;\n}\n\nexport interface EoDirectoryTreeLeafEventsMap {\n onSelect: \"select\";\n}\n\n/**\n * 目录树叶子节点\n */\nexport\n@defineElement(\"eo-directory-tree-leaf\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTreeLeaf extends ReactNextElement {\n /**\n * 深度\n */\n @property({\n type: Number,\n })\n accessor depth: number = 0;\n\n /**\n * 是否选中\n */\n @property({\n type: Boolean,\n })\n accessor selected: boolean | undefined;\n\n /** 节点图标 */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /** 节点是否淡化显示 */\n @property({ type: Boolean, render: false })\n accessor faded: boolean | undefined;\n\n /**\n * 节点被选中时触发\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<void>;\n\n #handleSelect = () => {\n this.#selectEvent.emit();\n };\n\n render() {\n return (\n <EoDirectoryTreeLeafComponent\n depth={this.depth}\n icon={this.icon}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\nexport interface EoDirectoryTreeLeafComponentProps\n extends EoDirectoryTreeLeafProps {\n onSelect: () => void;\n}\n\nexport function EoDirectoryTreeLeafComponent({\n depth,\n icon,\n onSelect,\n}: EoDirectoryTreeLeafComponentProps) {\n const treeItemRef = useRef<HTMLDivElement>(null);\n const suffixRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const treeItem = treeItemRef.current;\n const handleSelect = () => {\n onSelect();\n };\n\n treeItem?.addEventListener(\"click\", handleSelect);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleSelect);\n };\n }, [onSelect]);\n\n useEffect(() => {\n const suffix = suffixRef.current;\n const handleSuffixClick = (e: MouseEvent) => {\n e.stopPropagation();\n };\n\n suffix?.addEventListener(\"click\", handleSuffixClick);\n\n return () => {\n suffix?.removeEventListener(\"click\", handleSuffixClick);\n };\n }, []);\n\n return (\n <div className=\"tree-item\" ref={treeItemRef}>\n <div\n className=\"tree-item-indentation\"\n style={{\n width: IndentSize * depth,\n }}\n />\n <div className=\"tree-item-content\">\n <div className=\"tree-item-expand-button\"></div>\n {icon && <WrappedEoIcon {...icon} className=\"tree-item-icon\" />}\n <div className=\"tree-item-label\">\n <slot />\n </div>\n </div>\n <div className=\"tree-item-suffix\" ref={suffixRef}>\n <slot name=\"suffix\" />\n </div>\n </div>\n );\n}\n","export const IndentSize = 10;\n","import * as React from \"react\";\nconst SvgArrow = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={14} height={14} viewBox=\"0 0 14 14\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"m11.743 9.42-4.49-5.206a.34.34 0 0 0-.506 0L2.257 9.42c-.167.194-.016.478.253.478h8.98c.27 0 .42-.284.253-.478\" /></svg>;\nexport default SvgArrow;","import React, { useEffect, useRef } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport Arrow from \"./arrow.svg\";\nimport { IndentSize } from \"../constants\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedEoIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoDirectoryTreeInternalNodeProps {\n depth: number;\n expanded?: boolean;\n selectable?: boolean;\n selected?: boolean;\n icon?: GeneralIconProps;\n faded?: boolean;\n}\n\nexport interface EoDirectoryTreeInternalNodeEvents {\n expand: CustomEvent<boolean>;\n select: CustomEvent<void>;\n}\n\nexport interface EoDirectoryTreeInternalNodeEventsMap {\n onExpand: \"expand\";\n onSelect: \"select\";\n}\n\n/**\n * 目录树中间节点\n */\nexport\n@defineElement(\"eo-directory-tree-internal-node\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTreeInternalNode extends ReactNextElement {\n /**\n * 深度\n */\n @property({\n type: Number,\n })\n accessor depth: number = 0;\n\n /**\n * 是否展开\n */\n @property({\n type: Boolean,\n })\n accessor expanded: boolean | undefined;\n\n /**\n * 可选择\n */\n @property({\n type: Boolean,\n })\n accessor selectable: boolean | undefined;\n\n /**\n * 是否选中\n */\n @property({\n type: Boolean,\n })\n accessor selected: boolean | undefined;\n\n /** 节点图标 */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /** 节点是否淡化显示 */\n @property({ type: Boolean, render: false })\n accessor faded: boolean | undefined;\n\n /**\n * 节点展开/收起时触发\n * @detail 展开后的状态(true 表示展开,false 表示收起)\n */\n @event({ type: \"expand\" })\n accessor #expandEvent!: EventEmitter<boolean>;\n #handleExpand = () => {\n this.#expandEvent.emit(!this.expanded);\n };\n\n /**\n * 节点被选中时触发\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<void>;\n #handleSelect = () => {\n this.#selectEvent.emit();\n };\n\n render() {\n return (\n <EoDirectoryTreeInternalNodeComponent\n depth={this.depth}\n selectable={this.selectable}\n expanded={this.expanded}\n icon={this.icon}\n onExpand={this.#handleExpand}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\nexport interface EoDirectoryTreeInternalNodeComponentProps\n extends EoDirectoryTreeInternalNodeProps {\n onExpand: () => void;\n onSelect: () => void;\n}\n\nexport function EoDirectoryTreeInternalNodeComponent({\n depth,\n selectable,\n icon,\n onExpand,\n onSelect,\n}: EoDirectoryTreeInternalNodeComponentProps) {\n const treeItemRef = useRef<HTMLDivElement>(null);\n const expandBottomRef = useRef<HTMLDivElement>(null);\n const suffixRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (selectable) {\n const treeItem = treeItemRef.current;\n const expandBottom = expandBottomRef.current;\n const handleSelect = () => {\n onSelect();\n };\n const handleExpand = (e: MouseEvent) => {\n e.stopPropagation();\n onExpand();\n };\n\n treeItem?.addEventListener(\"click\", handleSelect);\n expandBottom?.addEventListener(\"click\", handleExpand);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleSelect);\n expandBottom?.removeEventListener(\"click\", handleExpand);\n };\n } else {\n const treeItem = treeItemRef.current;\n const handleExpand = () => {\n onExpand();\n };\n\n treeItem?.addEventListener(\"click\", handleExpand);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleExpand);\n };\n }\n }, [selectable, onSelect, onExpand]);\n\n useEffect(() => {\n const suffix = suffixRef.current;\n const handleSuffixClick = (e: MouseEvent) => {\n e.stopPropagation();\n };\n\n suffix?.addEventListener(\"click\", handleSuffixClick);\n\n return () => {\n suffix?.removeEventListener(\"click\", handleSuffixClick);\n };\n }, []);\n\n return (\n <>\n <div className=\"tree-item\" ref={treeItemRef}>\n <div\n className=\"tree-item-indentation\"\n style={{\n width: IndentSize * depth,\n }}\n />\n <div className=\"tree-item-content\">\n <div className=\"tree-item-expand-button\" ref={expandBottomRef}>\n <Arrow className=\"tree-item-expand-arrow\" />\n </div>\n {icon && <WrappedEoIcon {...icon} className=\"tree-item-icon\" />}\n <div className=\"tree-item-label\">\n <slot name=\"label\" />\n </div>\n </div>\n <div className=\"tree-item-suffix\" ref={suffixRef}>\n <slot name=\"suffix\" />\n </div>\n </div>\n <div className=\"tree-item-children\">\n <div className=\"tree-item-inner\">\n <slot />\n </div>\n </div>\n </>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { wrapBrick, ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst { defineElement } = createDecorators();\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\n/**\n * 导航栏图标\n */\nexport\n@defineElement(\"nav.nav-logo\", {\n styleTexts: [styleText],\n})\nclass NavLogo extends ReactNextElement {\n render() {\n return <NavLogoComponent />;\n }\n}\n\nexport function NavLogoComponent() {\n const brand = getRuntime().getBrandSettings();\n\n const logoNode = useMemo(() => {\n return brand.menu_bar_logo_url ? (\n <img src={brand.menu_bar_logo_url} className=\"personalized-logo\" />\n ) : (\n <WrappedIcon\n category=\"blueprint\"\n icon=\"easyops\"\n lib=\"easyops\"\n className=\"easyops-icon\"\n />\n );\n }, [brand.menu_bar_logo_url]);\n\n return (\n <div className=\"logo-container\">\n {brand.menu_bar_logo_no_link === \"true\" ? (\n logoNode\n ) : (\n <WrappedLink type=\"plain\" url=\"/\" className=\"logo-link\">\n {logoNode}\n </WrappedLink>\n )}\n </div>\n );\n}\n","/* istanbul ignore file */\nexport enum K {\n VIEW_DETAILS = \"VIEW_DETAILS\",\n DISMISS = \"DISMISS\",\n}\n\nconst en: Locale = {\n VIEW_DETAILS: \"View details\",\n DISMISS: \"Dismiss\",\n};\n\nconst zh: Locale = {\n VIEW_DETAILS: \"查看详情\",\n DISMISS: \"忽略\",\n};\n\nexport const NS = \"bricks/nav/poll-announce\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./notification.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./notification.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","/* istanbul ignore file */\nimport React, { useEffect } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { httpErrorToString } from \"@next-core/runtime\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { i18n } from \"@next-core/i18n\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\nimport {\n AnnounceApi_ignoreAnnounce,\n AnnounceApi_listEffectiveAnnounce,\n AnnounceApi_pollAnnounce,\n} from \"@next-api-sdk/sys-setting-sdk\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport styles from \"./notification.module.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n\nconst ignoredInstanceIds = new Set<string>();\n\nexport interface PollAnnounceProps {\n pollEnabled?: boolean;\n realTimeMessage?: Message;\n}\n\nexport interface Message {\n title: string;\n data: string;\n instanceId: string;\n}\n\nexport interface PollAnnounceEventsMapping {\n onNotificationClose: \"notification.close\";\n onNotificationOpen: \"notification.open\";\n}\n\n/**\n * 轮询获取通知消息并展示。\n *\n * 从 v2 构件 `nav-legacy.poll-announce` 迁移而来\n */\nexport\n@defineElement(\"nav.poll-announce\", {\n styleTexts: [styleText],\n})\nclass PollAnnounce extends ReactNextElement implements PollAnnounceProps {\n /**\n * 是否启用轮询\n *\n * - 启用时,将会不断轮询通知列表接口\n * - 未启用时,通过 `realTimeMessage` 属性传入实时通知消息\n *\n * 注意:v2 构件 `nav-legacy.poll-announce` 该属性名称为 `pollDisabled`,但其实际意义却是 `pollEnabled`,因此在迁移时进行了重命名。\n */\n @property({ type: Boolean })\n accessor pollEnabled: boolean | undefined;\n\n /**\n * 实时通知消息(通常通过 WebSocket 消息得到)\n */\n @property({ attribute: false })\n accessor realTimeMessage: Message | undefined;\n\n /**\n * 通知框关闭后,调用忽略通知接口完成后触发\n */\n @event({ type: \"notification.close\" })\n accessor #closeEvent!: EventEmitter<void>;\n\n #handleClose = () => {\n this.#closeEvent.emit();\n };\n\n /**\n * 轮询得到新的通知时触发。\n */\n @event({ type: \"notification.open\" })\n accessor #openEvent!: EventEmitter<void>;\n\n #handleOpen = () => {\n this.#openEvent.emit();\n };\n\n render() {\n return (\n <PollAnnounceComponent\n pollEnabled={this.pollEnabled}\n realTimeMessage={this.realTimeMessage}\n onOpen={this.#handleOpen}\n onClose={this.#handleClose}\n />\n );\n }\n}\n\nexport interface PollAnnounceComponentProps extends PollAnnounceProps {\n onOpen: () => void;\n onClose: () => void;\n}\n\nasync function openNotification(\n { title, data, instanceId }: Message,\n onClose: () => void\n) {\n const _data = data\n .replace(/<[^>]+>|&nbsp;/gim, \"\\r\\n\")\n .replace(/&ldquo;/gim, \"“\")\n .replace(/&rdquo;/gim, \"”\");\n\n const htmlMessage = _data.length > 100 ? _data.slice(0, 100) : _data;\n\n try {\n await showNotification({\n placement: \"topRight\",\n icon: {\n lib: \"antd\",\n theme: \"filled\",\n icon: \"sound\",\n style: {\n color: \"var(--theme-orange-color)\",\n },\n },\n title,\n htmlMessage: `<div class=\"${styles.message}\">${htmlMessage}</div>`,\n closable: true,\n showConfirm: true,\n confirmText: i18n.t(`${NS}:${K.VIEW_DETAILS}`),\n confirmLink: {\n url: `/announcement-management/announcement-front/content?instanceId=${instanceId}`,\n target: \"_blank\",\n },\n showCancel: true,\n cancelText: i18n.t(`${NS}:${K.DISMISS}`),\n });\n } catch {\n // ignore\n } finally {\n if (!ignoredInstanceIds.has(instanceId)) {\n ignoredInstanceIds.add(instanceId);\n try {\n await AnnounceApi_ignoreAnnounce({\n instanceIds: [instanceId],\n });\n onClose();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"ignore announce failed:\", e);\n }\n }\n }\n}\n\nexport function PollAnnounceComponent({\n pollEnabled,\n realTimeMessage,\n onOpen,\n onClose,\n}: PollAnnounceComponentProps) {\n useEffect(\n () => {\n const listEffectiveAnnounce = async (): Promise<void> => {\n const list = (await AnnounceApi_listEffectiveAnnounce({}))\n .list as (Message & { isPopup: boolean })[];\n if (list.length) {\n list\n .filter((item) => item.isPopup)\n .reverse()\n .forEach((item) => {\n openNotification(item, onClose);\n });\n }\n };\n listEffectiveAnnounce();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n useEffect(() => {\n if (!pollEnabled && realTimeMessage) {\n openNotification(realTimeMessage, onClose);\n }\n }, [onClose, pollEnabled, realTimeMessage]);\n\n useEffect(() => {\n if (!pollEnabled) {\n return;\n }\n let ignored = false;\n const pollAnnounce = async (): Promise<void> => {\n if (ignored) {\n return;\n }\n try {\n const result = await AnnounceApi_pollAnnounce({\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n });\n openNotification(result as Message, onClose);\n onOpen();\n pollAnnounce();\n } catch (error) {\n const err = httpErrorToString(error);\n if (err?.toLowerCase()?.includes(\"timeout\")) {\n pollAnnounce();\n }\n }\n };\n pollAnnounce();\n return () => {\n ignored = true;\n };\n }, [onClose, onOpen, pollEnabled]);\n\n return null;\n}\n","import type { MicroApp } from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport {\n cook,\n isEvaluable,\n preevaluate,\n type PreevaluateResult,\n} from \"@next-core/cook\";\nimport { supply } from \"@next-core/supply\";\nimport {\n beforeVisitGlobalMember,\n type MemberUsageInExpressions,\n} from \"@next-core/utils/storyboard\";\nimport type { MenuRawData } from \"../get-menu-config-tree\";\n\nconst allowedAppProps = new Set([\"name\", \"id\", \"homepage\", \"localeName\"]);\n\n/**\n * 对菜单标题进行表达式解析,支持 I18N 和 APP。\n */\nexport function smartDisplayForMenuTitle(\n title: unknown,\n i18nNamespace: string | undefined,\n overrideApp: MicroApp | undefined\n): string | undefined {\n if (typeof title !== \"string\") {\n return;\n }\n if (isEvaluable(title)) {\n // A `SyntaxError` maybe thrown.\n let precooked: PreevaluateResult | undefined;\n const appUsage: MemberUsageInExpressions = {\n usedProperties: new Set(),\n hasNonStaticUsage: false,\n };\n try {\n precooked = preevaluate(title, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(appUsage, [\"APP\"]),\n },\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Parse menu title expression \"${title}\" failed:`, error);\n }\n\n if (\n precooked &&\n (!precooked.attemptToVisitGlobals.has(\"APP\") ||\n (overrideApp &&\n !appUsage.hasNonStaticUsage &&\n [...appUsage.usedProperties].every((prop) =>\n allowedAppProps.has(prop)\n )))\n ) {\n const globals: Record<string, unknown> = {};\n for (const key of precooked.attemptToVisitGlobals) {\n switch (key) {\n case \"I18N\":\n globals[key] = i18n.getFixedT(\n null,\n [i18nNamespace].filter(Boolean)\n );\n break;\n case \"APP\":\n globals[key] = {\n ...overrideApp,\n localeName: overrideApp?.name,\n };\n break;\n }\n }\n const suppliedGlobals = supply(precooked.attemptToVisitGlobals, globals);\n\n let computable = true;\n for (const key of precooked.attemptToVisitGlobals) {\n if (!hasOwnProperty(suppliedGlobals, key)) {\n computable = false;\n break;\n }\n }\n\n if (computable) {\n try {\n const result = cook(precooked.expression, precooked.source, {\n globalVariables: suppliedGlobals,\n });\n if (typeof result === \"string\") {\n return result;\n }\n // eslint-disable-next-line no-console\n console.error(\n `The result of menu title expression \"${title}\" is not a string:`,\n result\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n `Evaluate menu title expression \"${title}\" failed:`,\n error\n );\n }\n }\n }\n } 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","import { createProviderClass } from \"@next-core/utils/general\";\nimport type { MenuRawData } from \"./get-menu-config-tree\";\nimport {\n initializeMenuI18n,\n smartDisplayForMenuTitle,\n} from \"./shared/smartDisplayForMenuTitle\";\n\nexport interface MenuOption {\n label: string;\n value: string;\n}\n\n/**\n * 构造用于菜单自定义的下拉选项数据。\n *\n * 将对菜单标题进行表达式解析,支持 I18N 和 APP。\n */\nexport async function getMenuConfigOptions(\n menuList: MenuRawData[]\n): Promise<MenuOption[]> {\n const options: MenuOption[] = [];\n\n const { menuWithI18n, dispose } = initializeMenuI18n(menuList);\n\n for (const menu of menuList) {\n options.push({\n label: `${smartDisplayForMenuTitle(menu.title, menuWithI18n.get(menu), menu.overrideApp) ?? \"\"} (${menu.menuId})`,\n value: menu.menuId,\n });\n }\n\n dispose();\n\n return options;\n}\n\ncustomElements.define(\n \"nav.get-menu-config-options\",\n createProviderClass(getMenuConfigOptions)\n);\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n FULL_TEXT_SEARCH = \"FULL_TEXT_SEARCH\",\n IP_SEARCH = \"IP_SEARCH\",\n TICKET_SEARCH = \"TICKET_SEARCH\",\n TICKET_SEARCH_PLACEHOLDER = \"TICKET_SEARCH_PLACEHOLDER\",\n IP_SEARCH_PLACEHOLDER = \"IP_SEARCH_PLACEHOLDER\",\n FULL_TEXT_SEARCH_PLACEHOLDER = \"FULL_TEXT_SEARCH_PLACEHOLDER\",\n IP_SEARCH_TOOLTIP = \"IP_SEARCH_TOOLTIP\",\n RECENT_SEARCH = \"RECENT_SEARCH\",\n NO_SEARCH_HISTORY = \"NO_SEARCH_HISTORY\",\n QUICK_SEARCH_TIP = \"QUICK_SEARCH_TIP\",\n}\n\nconst en: Locale = {\n FULL_TEXT_SEARCH: \"Full-text search\",\n IP_SEARCH: \"IP search\",\n TICKET_SEARCH: \"Ticket search\",\n TICKET_SEARCH_PLACEHOLDER: \"Enter ticket number/title and other keywords\",\n IP_SEARCH_PLACEHOLDER:\n \"Enter IP to query hosts and related applications, systems and other resources\",\n FULL_TEXT_SEARCH_PLACEHOLDER:\n 'Search applications, hosts and other information, supports \"\" exact search',\n IP_SEARCH_TOOLTIP: \"IP Search\",\n RECENT_SEARCH: \"Recent Search\",\n NO_SEARCH_HISTORY: \"No search history\",\n QUICK_SEARCH_TIP: \"Quick Search (Cmd/Ctrl+K)\",\n};\n\nconst zh: Locale = {\n FULL_TEXT_SEARCH: \"全文搜索\",\n IP_SEARCH: \"ip搜索\",\n TICKET_SEARCH: \"工单搜索\",\n TICKET_SEARCH_PLACEHOLDER: \"输入工单编号/标题等关键字\",\n IP_SEARCH_PLACEHOLDER: \"输入IP查询主机关联的应用、系统等资源\",\n FULL_TEXT_SEARCH_PLACEHOLDER: '搜索应用、主机等信息,支持\"\"精确搜索',\n IP_SEARCH_TOOLTIP: \"IP搜索\",\n RECENT_SEARCH: \"最近搜索\",\n NO_SEARCH_HISTORY: \"暂无搜索记录\",\n QUICK_SEARCH_TIP: \"快捷搜索(Cmd/Ctrl+K)\",\n};\n\nexport const NS = \"bricks/nav/query-search\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, {\n useEffect,\n useState,\n useMemo,\n useRef,\n useCallback,\n} from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales, K, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport classNames from \"classnames\";\nimport type {\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap,\n} from \"@next-bricks/form/search\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\n\nimport { getRuntime, getHistory } from \"@next-core/runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { uniq } from \"lodash\";\nimport { Select, ConfigProvider, theme } from \"antd\";\nimport { StyleProvider, createCache } from \"@ant-design/cssinjs\";\nimport { InstanceApi_postSearchV3 } from \"@next-api-sdk/cmdb-sdk\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { useCurrentTheme } from \"@next-core/react-runtime\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\n// --- 常量定义 ---\nconst STORAGE = new JsonStorage(localStorage);\nconst FULL_TEXT_URL = \"search/result?q=%{q}%\";\nconst IP_SEARCH_URL = \"search/new/ipSearch?q=%{q}%\";\nconst ITSM_SEARCH_URL = \"/itsc-ticket-center/ticket-list?q=%{q}%\";\nconst INSTANCE_SEARCH_URL = \"search/instance-or-relation-path/search/\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\nexport const WrappedSearch = wrapBrick<\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap\n>(\"eo-search\", {\n onChange: \"change\",\n onSearch: \"search\",\n});\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\n/**\n * 综合搜索入口,支持全文检索、IP 搜索、工单搜索等多种查询模式,带搜索历史记录功能\n */\nexport\n@defineElement(\"nav.query-search\", {\n styleTexts: [styleText],\n})\nclass QuerySearch extends ReactNextElement {\n render() {\n return <QuerySearchComponent shadowRoot={this.shadowRoot} />;\n }\n}\n\nexport interface QuerySearchComponentProps {\n shadowRoot: ShadowRoot | null;\n}\n\nenum QuerierTypes {\n fullText = \"fullText\",\n instanceSearch = \"instanceSearch\",\n relationSearch = \"relationSearch\",\n link = \"link\",\n ipSearch = \"ipSearch\",\n}\n\ninterface QuerierConfig {\n url: string;\n searchPlaceholder: string;\n}\n\ninterface Querier {\n name: string;\n type: QuerierTypes;\n disabled: boolean;\n showInApps: string[];\n instanceId?: string;\n config: QuerierConfig;\n}\n\ninterface QuerierOption extends Querier {\n label: string;\n value: string;\n}\n\n// 获取 Storage Key 的辅助函数\nconst getOrgId = () => (auth.getAuth() as Record<string, string>)?.org || \"\";\nconst getRecentVisitsKey = () => `querier-search-recent-visits:${getOrgId()}`;\nconst getSelectedQuerierKey = () => `querier-search-querier:${getOrgId()}`;\n\nexport function QuerySearchComponent(props: QuerySearchComponentProps) {\n const { shadowRoot } = props;\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const appId = getRuntime().getCurrentApp()?.id || \"\";\n const currentTheme = useCurrentTheme();\n\n // State\n /**\n * null: 初始化(无动画)\n * false: 收起(播放收起动画)\n * true: 展开\n */\n const [showInput, setShowInput] = useState<boolean | null>(null);\n const [searchKey, setSearchKey] = useState<string>(\"\");\n const [visits, setVisits] = useState<string[]>([]);\n\n // Data State\n const [querierList, setQuerierList] = useState<Querier[]>([]);\n const [querierOptions, setQuerierOptions] = useState<QuerierOption[]>([]);\n const [selectedQuerier, setSelectedQuerier] = useState<QuerierOption>();\n\n // Style Cache\n const cache = useMemo(() => createCache(), []);\n\n // 检测是否应该直接跳转 (响应式布局逻辑)\n const checkIsDirectJump = useCallback((): boolean => {\n const parentWidth = shadowRoot?.host?.parentElement?.clientWidth || 0;\n return document.documentElement.clientWidth - parentWidth - 500 < 200;\n }, [shadowRoot]);\n\n // 处理跳转逻辑\n const handleHistoryPush = useCallback(\n (q?: string) => {\n // 如果还没加载 querier,默认去 IP 搜索\n const targetUrl =\n showInput && selectedQuerier?.config?.url\n ? selectedQuerier.config.url\n : IP_SEARCH_URL;\n const cleanUrl = targetUrl.startsWith(\"/\") ? targetUrl : \"/\" + targetUrl;\n const queryTerm = q || searchKey || \"\";\n const to = cleanUrl.replaceAll(\"%{q}%\", queryTerm);\n getHistory().push(to);\n },\n [showInput, selectedQuerier, searchKey]\n );\n\n // --- 核心逻辑优化 1: 分离键盘事件监听 ---\n\n // 1.1 全局快捷键监听 (Cmd/Ctrl + K) - 只绑定一次\n // istanbul ignore next\n useEffect(() => {\n const handleGlobalKeyDown = (e: KeyboardEvent) => {\n const isMac = /Mac|iPod|iPhone|iPad/.test(navigator.userAgent);\n const modKey = isMac ? e.metaKey : e.ctrlKey;\n\n if (modKey && e.key === \"k\") {\n e.preventDefault();\n // 使用 functional update 获取最新状态,避免频繁解绑\n setShowInput((prevShow) => {\n if (!prevShow) {\n // 如果当前是关闭状态,检查是否直接跳转\n if (checkIsDirectJump()) {\n // 注意:这里可能取不到最新的 selectedQuerier,如果依赖它,需要调整逻辑\n // 但 checkIsDirectJump 路径下通常走 IP Search 或默认\n // 为简化,此处仅触发打开,或需将 historyPush 移出 effect\n // *修正*: 为了保持原逻辑,这里若 directJump 为 true,我们在 state 变化副作用里处理,或者简单地只设为 true\n // 原逻辑是: 没 showInput -> directJump ? jump : show\n return true;\n }\n return true;\n }\n return prevShow;\n });\n\n // 特殊处理 DirectJump: 如果变为 true 后需要立即跳转,\n // 最好是在点击 button 时判断。快捷键场景下,先打开 Input 也是合理的交互。\n // 如果严格遵循原逻辑,需要在 effect 外部处理 jump。\n if (checkIsDirectJump() && !showInput) {\n // 这里 showInput 是闭包旧值,需小心\n handleHistoryPush();\n setShowInput(false); // 保持关闭\n }\n }\n };\n\n window.addEventListener(\"keydown\", handleGlobalKeyDown);\n return () => window.removeEventListener(\"keydown\", handleGlobalKeyDown);\n }, [checkIsDirectJump, handleHistoryPush]); // 依赖项较少\n\n // 1.2 局部交互监听 (点击外部关闭, ESC) - 仅当 showInput 为 true 时生效\n // istanbul ignore next\n useEffect(() => {\n if (!showInput) return;\n\n // 自动聚焦\n inputRef.current?.focus();\n\n const handleClickOutside = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !e.composedPath().includes(containerRef.current)\n ) {\n setShowInput(false);\n }\n };\n\n const handleEscKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" || e.key === \"Esc\") {\n setShowInput(false);\n }\n };\n\n // 关键修复:添加时使用了 capture: true\n window.addEventListener(\"click\", handleClickOutside, true);\n window.addEventListener(\"keydown\", handleEscKey);\n\n return () => {\n // 关键修复:移除时必须保持 capture: true,否则无法移除\n window.removeEventListener(\"click\", handleClickOutside, true);\n window.removeEventListener(\"keydown\", handleEscKey);\n };\n }, [showInput]);\n\n // --- 核心逻辑优化 2: 数据获取 (Lazy Loading) ---\n\n useEffect(() => {\n // 只有在打开输入框且列表为空时才加载\n if (showInput && querierList.length === 0) {\n const fetchQueriers = async () => {\n const defaultQueriers: Querier[] = [\n {\n type: QuerierTypes.fullText,\n name: t(K.FULL_TEXT_SEARCH),\n disabled: false,\n showInApps: [],\n config: { url: FULL_TEXT_URL, searchPlaceholder: \"\" },\n },\n {\n type: QuerierTypes.ipSearch,\n name: t(K.IP_SEARCH),\n disabled: false,\n showInApps: [],\n config: { url: IP_SEARCH_URL, searchPlaceholder: \"\" },\n },\n {\n type: QuerierTypes.link,\n name: t(K.TICKET_SEARCH),\n disabled: false,\n showInApps: [],\n config: {\n url: ITSM_SEARCH_URL,\n searchPlaceholder: t(K.TICKET_SEARCH_PLACEHOLDER),\n },\n },\n ];\n\n try {\n const res = await InstanceApi_postSearchV3(\"QUERIER_CONFIG@EASYOPS\", {\n page: 1,\n page_size: 100,\n fields: [\"name\", \"type\", \"disabled\", \"config\", \"showInApps\"],\n });\n\n const apiQueriers =\n res.list?.map((item) => {\n const i = item as Querier;\n const config: QuerierConfig = i.config || {\n url: \"\",\n searchPlaceholder: \"\",\n };\n\n if (i.type === QuerierTypes.fullText) config.url = FULL_TEXT_URL;\n else if (i.type === QuerierTypes.ipSearch)\n config.url = IP_SEARCH_URL;\n else if (\n [\n QuerierTypes.instanceSearch,\n QuerierTypes.relationSearch,\n ].includes(i.type)\n ) {\n config.url = `${INSTANCE_SEARCH_URL}${i.name}?q=%{q}%`;\n }\n return { ...i, config };\n }) || [];\n\n setQuerierList(\n apiQueriers.length > 0 ? apiQueriers : defaultQueriers\n );\n } catch {\n setQuerierList(defaultQueriers);\n }\n };\n fetchQueriers();\n }\n }, [showInput, querierList.length]);\n\n // --- 逻辑优化 3: 选项过滤与选中状态 ---\n\n useEffect(() => {\n if (querierList.length === 0) return;\n\n const options = querierList\n .filter(\n (i) =>\n !i.disabled && (!i.showInApps?.length || i.showInApps.includes(appId))\n )\n .map((i) => ({ ...i, label: i.name, value: i.name }));\n\n setQuerierOptions(options);\n\n // 恢复上次选中的 Querier\n const lastSelectedName = STORAGE.getItem(getSelectedQuerierKey());\n const matched = options.find((i) => i.name === lastSelectedName);\n const defaultOption =\n options.find((i) => i.type === QuerierTypes.ipSearch) || options[0];\n\n setSelectedQuerier(matched || defaultOption);\n }, [querierList, appId]);\n\n // 读取历史记录\n useEffect(() => {\n if (selectedQuerier) {\n const historyKey = `${getRecentVisitsKey()}-${selectedQuerier.name}`;\n setVisits(STORAGE.getItem(historyKey) ?? []);\n }\n }, [selectedQuerier]);\n\n // --- 事件处理 ---\n\n const handleQuerierSelect = (val: string) => {\n STORAGE.setItem(getSelectedQuerierKey(), val);\n setSelectedQuerier(querierOptions.find((i) => i.name === val));\n };\n // istanbul ignore next\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && searchKey && selectedQuerier) {\n const historyKey = `${getRecentVisitsKey()}-${selectedQuerier.name}`;\n STORAGE.setItem(historyKey, uniq([searchKey, ...visits].slice(0, 5)));\n handleHistoryPush();\n }\n };\n\n const handleClear = () => setSearchKey(\"\");\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) =>\n setSearchKey(e.target.value);\n\n const handleSearchClick = () => {\n if (checkIsDirectJump()) {\n handleHistoryPush();\n } else {\n setShowInput(true);\n }\n };\n // istanbul ignore next\n const handleHistoryTagClick = (tag: string) => {\n if (selectedQuerier) {\n const historyKey = `${getRecentVisitsKey()}-${selectedQuerier.name}`;\n STORAGE.setItem(historyKey, uniq([tag, ...visits].slice(0, 5)));\n handleHistoryPush(tag);\n }\n };\n\n // 计算 Placeholder\n const getPlaceholder = () => {\n if (selectedQuerier?.config?.searchPlaceholder)\n return selectedQuerier.config.searchPlaceholder;\n if (selectedQuerier?.type === QuerierTypes.ipSearch)\n return t(K.IP_SEARCH_PLACEHOLDER);\n if (selectedQuerier?.type === QuerierTypes.fullText)\n return t(K.FULL_TEXT_SEARCH_PLACEHOLDER);\n return \"\";\n };\n\n return (\n <ConfigProvider\n theme={{\n algorithm:\n currentTheme === \"dark-v2\"\n ? theme.darkAlgorithm\n : theme.defaultAlgorithm,\n }}\n >\n <StyleProvider\n container={shadowRoot as ShadowRoot}\n cache={cache}\n hashPriority=\"high\"\n >\n <div style={{ position: \"relative\" }} ref={containerRef}>\n <div\n className={classNames(\"container\", {\n containerShowInput: showInput,\n inputContentSlideout: showInput === false,\n })}\n onClick={(e) => e.stopPropagation()}\n >\n <div\n className={classNames(\"inputContent\", {\n inputContentSlidein: showInput,\n inputContentSlideout: showInput === false,\n })}\n >\n <div className=\"input-addon-wrapper\">\n <span className=\"input-affix-wrapper\">\n <span className=\"input-before-addon\">\n <Select\n value={selectedQuerier?.value}\n getPopupContainer={(trigger) => trigger.parentElement}\n showSearch\n variant=\"borderless\"\n style={{ width: \"100px\" }}\n options={querierOptions}\n onChange={handleQuerierSelect}\n />\n </span>\n <input\n placeholder={getPlaceholder()}\n ref={inputRef}\n value={searchKey}\n onChange={handleChange}\n onKeyDown={handleInputKeyDown}\n />\n {!!searchKey && (\n <span className=\"input-suffix\">\n <WrappedIcon\n className=\"input-clear-icon\"\n lib=\"antd\"\n icon=\"close-circle\"\n theme=\"filled\"\n onClick={handleClear}\n />\n </span>\n )}\n </span>\n </div>\n </div>\n\n {!showInput && (\n <WrappedToolTip content={t(K.IP_SEARCH_TOOLTIP)} placement=\"left\">\n <WrappedButton\n onClick={handleSearchClick}\n className={classNames(\"button\", {\n buttonSildeint: showInput === false,\n })}\n shape=\"circle\"\n type=\"ghost\"\n buttonStyle={{\n border: \"none\",\n background: \"none\",\n fontSize: \"16px\",\n }}\n icon={{ icon: \"search\", theme: \"outlined\", lib: \"antd\" }}\n />\n </WrappedToolTip>\n )}\n </div>\n\n <div\n className={classNames(\"historySearchContainer\", {\n historySearchContainerSlidein: showInput,\n historySearchContainerSlideout: showInput === false,\n })}\n >\n <div className=\"historySearchContent\">\n <div className=\"latestSearchText\">{t(K.RECENT_SEARCH)}</div>\n <div className=\"latestSearchTagContainer\">\n {visits.map((i) => (\n <span\n key={i}\n className=\"latestSearchTagContent\"\n onClick={() => handleHistoryTagClick(i)}\n >\n <span className=\"latestSearchTagText\" title={i}>\n {i}\n </span>\n </span>\n ))}\n {!visits.length && (\n <div className=\"emptyText\">{t(K.NO_SEARCH_HISTORY)}</div>\n )}\n </div>\n </div>\n <div className=\"quickSearchTip\">{t(K.QUICK_SEARCH_TIP)}</div>\n </div>\n </div>\n </StyleProvider>\n </ConfigProvider>\n );\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:inline-block}:host([hidden]){display:none}.directory-container{background-color:var(--color-fill-global-bg-3)}.directory-container .directory-title-container{margin-bottom:24px;display:flex;align-items:center;justify-content:space-between;gap:8px}.directory-container .directory-title-container .directory-title{font-size:16px;color:var(--text-color-title);line-height:24px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.directory-container .directory-search{display:block;margin-bottom:12px}.directory-container .tree > *:not(:last-child){margin-bottom:8px}.show-suffix-when-hover:not(:hover) .suffix{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.app-bar-container{height:var(--app-bar-height)}.app-bar{position:relative;z-index:999;box-shadow:var(--top-nav-shadow)}.app-bar.fixed,\n.app-bar.absolute{right:0;left:0;top:0}.app-bar.fixed{position:fixed}.app-bar.absolute{position:absolute}.app-bar-content{display:flex;justify-content:space-between;align-items:center;height:var(--app-bar-height);background-color:var(--top-navigation-bg);padding:0 16px;transition:var(--launchpad-backdrop-transition)}.left{display:flex;flex:1}.right{display:flex;justify-content:end}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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:inline-block}:host([hidden]){display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.recent-visits{list-style:none;margin:0;padding:0;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));max-height:56px;overflow:hidden}.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-visits eo-link{display:block;min-width:0}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.alert{height:32px;padding:0 20px;display:flex;justify-content:center;align-items:center}.text{color:var(--antd-text-color);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{margin-left:20px;cursor:pointer;color:#8c8c8c}.info{background-color:var(--palette-blue-1)}.warning{background-color:var(--palette-amber-1)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:root{--eo-search-launchpad-menu-icon-color:#8c8c8c}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--eo-search-launchpad-menu-icon-color:rgba(255,255,255,0.45)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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}.tree-item{min-height:24px;display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:3px}.tree-item-indentation{flex-shrink:0}.tree-item-content{min-width:0;flex:1;display:flex;align-items:center}.tree-item-icon,\n.tree-item-expand-button{padding:3px;width:12px;height:12px;font-size:12px;flex-shrink:0}.tree-item-icon,\n.tree-item-label{color:var(--color-header-text)}.tree-item-icon{margin-right:4px}.tree-item-expand-button{margin:0 4px}.tree-item-label{min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-item-suffix{flex-shrink:0}:host([selected]) .tree-item{background-color:var(--palette-blue-1)}:host([faded]) .tree-item-icon,:host([faded]) .tree-item-label{color:var(--color-disabled-text)}:host(:not([selected])) .tree-item:hover .tree-item-icon{color:var(--palette-blue-4)}:host(:not([selected])) .tree-item:hover .tree-item-label{color:var(--palette-blue-4)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.menu-group-title{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-secondary-text-color);border-radius:var(--larger-border-radius);transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-title-icon-container{flex-shrink:0;margin-right:14px;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color);font-size:var(--menu-item-icon-size);transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-title-icon{width:1em;height:1em;border-bottom:2px solid var(--left-sidebar-group-border-color)}.menu-group-title-text{flex:1;font-size:12px;overflow:hidden;white-space:nowrap;margin-right:12px}.menu-group-list slot::slotted(*){margin-top:2px}.menu-group-arrow{position:absolute;top:50%;right:12px;width:10px;transform:translateY(-2px);transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-group-arrow::before,\n.menu-group-arrow::after{content:\"\";position:absolute;width:6px;height:1.5px;background-color:currentColor;border-radius:2px;transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-group-arrow::before{transform:rotate(45deg) translateX(2.5px)}.menu-group-arrow::after{transform:rotate(-45deg) translateX(-2.5px)}.menu-group-collapsed .menu-group-arrow{transform:translateY(-50%)}.menu-group-collapsed .menu-group-arrow::before{transform:rotate(-45deg) translateX(2.5px)}.menu-group-collapsed .menu-group-arrow::after{transform:rotate(45deg) translateX(-2.5px)}.menu-group-list{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-list-inner{overflow:hidden}:host([menu-collapsed]) .menu-group-title{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host(:not([menu-collapsed])) .menu-group-title-icon-container{width:0;margin-right:0;opacity:0}:host([menu-collapsed]) .menu-group-title-text{opacity:0}:host([menu-collapsed]) .menu-group-arrow{opacity:0}:host(:not([menu-collapsed])) .menu-group-title-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis;color:#7f8ba6}:host([collapsable]) .menu-group-collapsed .menu-group-list{grid-template-rows:0fr;opacity:0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.menu-submenu-title{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-sidebar-item-normal-color);border-radius:var(--larger-border-radius);cursor:pointer;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-submenu-title-icon-container{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);font-size:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color)}.menu-submenu-title-text{flex:1;margin-left:14px;margin-right:12px;font-size:14px;overflow:hidden;white-space:nowrap}.menu-submenu-arrow{position:absolute;top:50%;right:12px;width:10px;color:var(--left-sidebar-item-arrow-color);transform:translateY(-2px);transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-submenu-arrow::before,\n.menu-submenu-arrow::after{content:\"\";position:absolute;width:6px;height:1.5px;background-color:currentColor;border-radius:2px;transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-submenu-arrow::before{transform:rotate(45deg) translateX(2.5px)}.menu-submenu-arrow::after{transform:rotate(-45deg) translateX(-2.5px)}.menu-submenu-collapsed .menu-submenu-arrow{transform:translateY(-50%)}.menu-submenu-collapsed .menu-submenu-arrow::before{transform:rotate(-45deg) translateX(2.5px)}.menu-submenu-collapsed .menu-submenu-arrow::after{transform:rotate(45deg) translateX(-2.5px)}.menu-submenu-title:hover{background:var(--left-sidebar-item-hover-bg)}.menu-sub{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-submenu-collapsed .menu-sub{grid-template-rows:0fr;opacity:0}.menu-sub-inner{overflow:hidden}.menu-sub-inner slot::slotted(*){margin-top:2px}:host([menu-collapsed]) .menu-submenu-title{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host([menu-collapsed]) .menu-submenu-title-text{opacity:0}:host([menu-collapsed]) .menu-submenu-arrow{opacity:0}:host(:not([menu-collapsed])) .menu-submenu-title-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis}:host([selected]):host([menu-collapsed]) .menu-submenu-title{background:var(--left-sidebar-item-selected-bg);color:var(--left-sidebar-item-selected-color)}:host([selected]):host([collapsed]) .menu-submenu-title{background:var(--left-sidebar-item-selected-bg);color:var(--left-sidebar-item-selected-color)}:host([selected]):host([menu-collapsed]) .menu-submenu-title-icon-container{color:var(--left-sidebar-item-selected-color)}:host([selected]):host([collapsed]) .menu-submenu-title-icon-container{color:var(--left-sidebar-item-selected-color)}:host([selected]):host([menu-collapsed]) .menu-submenu-arrow{color:var(--left-sidebar-item-selected-color)}:host([selected]):host([collapsed]) .menu-submenu-arrow{color:var(--left-sidebar-item-selected-color)}:host([selected]) .menu-submenu-title-text{font-weight:var(--font-weight-500)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.tree-item{min-height:24px;display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:3px}.tree-item-indentation{flex-shrink:0}.tree-item-content{min-width:0;flex:1;display:flex;align-items:center}.tree-item-icon,\n.tree-item-expand-button{padding:3px;position:relative;width:12px;height:12px;font-size:12px;flex-shrink:0}.tree-item-icon,\n.tree-item-label{color:var(--color-header-text)}.tree-item-icon{margin-right:4px}.tree-item-expand-button{margin:0 4px}.tree-item-expand-button .tree-item-expand-arrow{color:var(--color-header-text);width:12px;height:12px;position:absolute;left:50%;top:50%;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.tree-item-label{min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-item-suffix{flex-shrink:0}.tree-item-children{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.tree-item-children .tree-item-inner{overflow:hidden}.tree-item-children .tree-item-inner slot::slotted(*){margin-top:8px}:host(:not([expanded])) .tree-item-children{grid-template-rows:0fr;opacity:0}:host([expanded]) .tree-item-expand-arrow{transform:translate(-50%,-50%) rotate(180deg)}:host(:not([expanded])) .tree-item-expand-arrow{transform:translate(-50%,-50%) rotate(90deg)}:host([selectable]) .tree-item-expand-button:hover{background-color:var(--color-fill-bg-base-1)}:host([selectable][selected]) .tree-item{background-color:var(--palette-blue-1)}:host([faded]) .tree-item-icon,:host([faded]) .tree-item-label{color:var(--color-disabled-text)}:host(:not([selected])) .tree-item:hover .tree-item-icon{color:var(--palette-blue-4)}:host(:not([selected])) .tree-item:hover .tree-item-label{color:var(--palette-blue-4)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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:inline-block}:host([hidden]){display:none}.container{position:relative;width:32px;height:32px}.containerShowInput{width:500px}.inputContent{background:rgba(204,209,219,0.3);border-radius:3px;height:30px;position:absolute;right:0;width:0px;overflow:hidden}.inputContentSlidein{overflow:visible;animation:slidein 0.4s ease-in-out forwards}.inputContentSlideout{width:500px;animation:slideout 0.4s 0.2s ease-in-out forwards}input{flex:1;padding:0;margin:0;border:none;outline:none;font-size:14px;line-height:20px;color:inherit;background-color:transparent;cursor:inherit;width:100%}select{border:none;outline:none;width:150px;background:transparent}input:focus{border:none!important}input::placeholder{color:var(--color-disabled-text)}.button{position:absolute;right:0;top:0}.buttonSildeint{opacity:0;animation:btnSlidein 0.1ms 0.6s ease-in-out forwards}@keyframes btnSlidein{from{opacity:0}to{opacity:1}}@keyframes slidein{from{width:0px}to{width:500px}}@keyframes slideout{from{width:500px}to{width:0px}}.input-addon-wrapper{display:table;width:100%;line-height:22px}.input-affix-wrapper{display:inline-flex;position:relative;padding-bottom:4px;width:100%;transition:border-color 0.3s,box-shadow 0.3s;overflow:visible}.input-suffix,\n.input-before-addon{display:flex;flex:none;align-items:center;margin-left:4px;margin-right:4px;width:16px}.input-before-addon{width:100px}.input-clear-icon{margin-left:4px;font-size:12px;color:var(--text-color-disabled);cursor:pointer}.input-clear-icon:hover{color:var(--antd-text-color-secondary)}.historySearchContainer{width:500px;height:160px;box-shadow:0px 2px 6px 0px rgba(0,0,0,0.15);background-color:var(--antd-dropdown-menu-bg);top:35px;position:absolute;height:0px;right:0;overflow:hidden;border-radius:6px;z-index:1000}.historySearchContainerSlidein{top:35px;animation:historySlidein 0.4s 0.2s ease-in-out forwards}.historySearchContainerSlideout{animation:historySlideout 0.4s ease-in-out forwards}@keyframes historySlidein{from{height:0px}to{height:160px}}@keyframes historySlideout{from{height:160px}to{height:0px}}.quickSearchTip{width:140px;height:17px;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:12px;color:var(--color-auxiliary-text);line-height:17px;text-align:left;font-style:normal;padding:8px 16px 8px 16px;width:484px;border-top:1px solid var(--color-border-divider-line)}.historySearchContent{height:103px;padding:16px 16px 8px 16px;overflow:auto}.latestSearchText{width:56px;height:20px;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:14px;color:var(--local-card-description-color);line-height:20px;text-align:left;font-style:normal;margin-bottom:10px}.latestSearchTagText{height:17px;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:14px;color:var(--color-strong-text);line-height:17px;text-align:center;font-style:normal;white-space:nowrap}.latestSearchTagContainer{display:flex;flex-wrap:wrap;row-gap:8px;column-gap:10px}.latestSearchTagContent{height:20px;background:var(--color-fill-bg-base-1);border-radius:3px;padding:1.5px 8px;cursor:pointer;max-width:480px;overflow:hidden;text-overflow:ellipsis}.emptyText{color:var(--text-color-secondary);text-align:center;width:100%}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","toString","locals","defineElement","property","createDecorators","WrappedMenuItem","wrapBrick","WrappedPopover","onVisibleChange","onBeforeVisibleChange","RenderMenuItemCom","props","item","isSubMenu","topData","React","SubMenuItemCom","_extends","isGroup","GroupMenuItemCom","SimpleMenuItemCom","index","hidden","showTooltip","selectedKey","className","key","title","text","active","includes","renderLinkCom","width","mainMenuTitleStyle","scrollWidth","handlePopupVisibleChange","event","paddingRight","window","innerWidth","document","body","clientWidth","style","detail","overflow","touchAction","_ref","_item$items","items","length","classnames","subprime","arrow","trigger","placement","distance","anchorDisplay","strategy","slot","renderSpanCom","map","innerItem","_ref2","_item$items2","childLayout","ThreeLevelMenuCom","SitMapMenCom","_ref3","_item$items3","ThreeLevelMenuPopoverContent","menuItem","_ref4","_item$items4","visible","setVisible","useState","onClick","e","stopPropagation","SiteMapItem","menuGroup","_NavMenu","_A","WeakMap","_B","_C","NavMenu","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","_init_menu","_init_extra_menu","_init_mainMenuTitleStyle","_init_extra_mainMenuTitleStyle","_init_showTooltip","_init_extra_showTooltip","menu","_classPrivateFieldGet","v","_classPrivateFieldSet","render","NavMenuComponent","this","history","getHistory","navMenuWrapperRef","useRef","location","setLocation","overflowIndex","setOverflowIndex","Number","MAX_SAFE_INTEGER","pathname","search","menuItems","useMemo","_menu$menuItems","filter","_items","type","selectedKeys","initMenuItemAndMatchCurrentPathKeys","useEffect","unListen","listen","current","resizeObserver","ResizeObserver","_navMenuWrapperRef$cu","getClientRects","childNodes","wrapperWidth","i","childWidth","height","childHeight","observe","disconnect","overflowMenu","slice","ref","_items2","isHidden","name","_NavMenu2","c","_initClass","_applyDecs","styleTexts","SiteMapStyleText","ItemTagStyleText","GroupItemStyleText","styleText","attribute","Boolean","initializeReactI18n","NS","locales","_LaunchpadButton","LaunchpadButton","LaunchpadButtonComponent","_LaunchpadButton2","lockBodyScroll","unwrapProvider","_EoLaunchpadButtonV","EoLaunchpadButtonV2","disconnectedCallback","super","EoLaunchpadButtonV2Component","host","initialized","setInitialized","setActive","toggleLaunchpad","previous","hotkeys","preventDefault","unbind","_getRuntime","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","getRuntime","getFeatureFlags","deferredPlatformCategories","role","classNames","LaunchpadSvg","Launchpad","_EoLaunchpadButtonV2","platformCategoryStyleText","launchpadStyleText","WrappedIcon","WrappedLink","WrappedDropdownActions","onActionClick","MenuGroup","_data$type","data","actions","variant","urlTemplate","customUrlTemplate","onMenuItemClick","dropdownActive","setDropdownActive","filteredActions","__secret_internals","legacyDoTransform","checkIfByTransform","handleActionClick","useCallback","action","empty","blocked","allBlocked","getLocaleName","lib","icon","MenuItemFolder","instanceId","MenuItem","_data$menuIcon","__pathname","disabled","linkUrl","parseUrlTemplate","urlObject","URL","url","origin","tooltip","menuIcon","pick","expanded","setExpanded","toggle","prefix","fallback","_urlTemplate$replace","replace","_match","encodeURIComponent","String","get","trim","BASE_PATH","_LaunchpadConfig","_D","_E","_F","_G","_LaunchpadConfig_brand","WeakSet","_H","_handleMenuItemClick","_onActionClick","LaunchpadConfig","_classPrivateMethodInitSpec","_init_menuGroups","_init_extra_menuGroups","_init_actions","_init_extra_actions","_init_variant","_init_extra_variant","_init_urlTemplate","_init_extra_urlTemplate","_init_customUrlTemplate","_init_extra_customUrlTemplate","_init_blacklist","_init_extra_blacklist","_init_menuItemClickEvent","_init_extra_menuItemClickEvent","_init_actionClickEvent","_init_extra_actionClickEvent","_classPrivateGetter","_get_menuItemClickEvent","emit","_get_actionClickEvent","menuGroups","blacklist","_this$variant","LaunchpadConfigComponent","processedMenuGroup","group","getMenuItemWithBlockInfo","blockable","some","hasBlocked","hasUnblocked","every","blockableUrls","flatMap","_blockableUrls","blockableUrl","_getMenuGroupsWithout","getMenuItemWithoutBlockedItems","getMenuGroupsWithoutBlockedItems","subItems","subItem","auth","isBlockedPath","isBlockedHref","_blockableUrls2","startsWith","urlObj","substring","undefined","getBlockableUrl","_LaunchpadConfig2","_set_menuItemClickEvent","_set_actionClickEvent","o","_","has","_checkInRHS","_EasyopsNavbarAlerts","EasyopsNavbarAlerts","EasyopsNavbarAlertsComponent","_EasyopsNavbarAlerts2","storage","JsonStorage","localStorage","licenseHide","setLienceseHide","slowRender","setSlowRender","currentApp","useCurrentApp","licenseDismissedKey","getAuth","org","licenseDaysLeft","_authInfo$license","authInfo","validDaysLeft","license","dismissExpireAt","isAdmin","getItem","moment","unix","handelRouteRender","renderTime","loadTime","loadInfoPage","getMiscSettings","isBuildPush","millisecondToSecond","suggestTime","suggestUrl","addEventListener","removeEventListener","handleLicenseAlertDismiss","setItem","Alert","link","label","closable","onClose","href","target","millisecond","Math","floor","_EoLaunchpadQuickAcce","EoLaunchpadQuickAccess","_init_readonly","_init_extra_readonly","_init_target","_init_extra_target","readonly","EoLaunchpadQuickAccessComponent","favorites","loadingFavorites","pushRecentVisit","toggleStar","isStarred","useLaunchpadInfo","LaunchpadsContext","Provider","value","searching","SidebarMenuItem","_EoLaunchpadQuickAccess","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","K","en","SEARCH_PLACEHOLDER","zh","_EoSearchLaunchpad","EoSearchLaunchpad","EoSearchLaunchpadComponent","searchInputRef","handleClickSearchBox","_searchInputRef$curre","focus","loading","q","setQ","t","useTranslation","handleSearch","clearSearch","placeholder","onChange","onFocus","onBlur","theme","onMouseDown","Loading","spinning","_EoSearchLaunchpad2","_EoLaunchpadRecentVis","EoLaunchpadRecentVisits","EoLaunchpadRecentVisitsComponent","recentVisits","_EoLaunchpadRecentVisits","_EoAppBarWrapper","EoAppBarWrapper","_init_isFixed","_init_extra_isFixed","_init_position","_init_extra_position","_init_displayCenter","_init_extra_displayCenter","_init_extraAppBarContentStyle","_init_extra_extraAppBarContentStyle","isFixed","position","displayCenter","extraAppBarContentStyle","EoAppBarWrapperComponent","mainElement","getElementById","iframeMainElement","marginTop","justifyContent","_EoAppBarWrapper2","alias","WrappedBreadcrumb","WrappedBreadcrumbItem","_EoFrameBreadcrumb","EoFrameBreadcrumb","_init_breadcrumb","_init_extra_breadcrumb","_init_noCurrentApp","_init_extra_noCurrentApp","breadcrumb","noCurrentApp","EoFrameBreadcrumbComponent","_curAppBreadcrumb$ite","_props$breadcrumb","_props$noCurrentApp","navConfig","useNavConfig","curAppBreadcrumb","currentAppBreadcrumbItems","getRealValue","breadcrumbItems","useCurrentMenuTitle","to","homepage","internal","localeName","_EoFrameBreadcrumb2","_EoSidebarMenuItem","EoSidebarMenuItem","_init_url","_init_extra_url","_init_href","_init_extra_href","_init_icon","_init_extra_icon","_init_selected","_init_extra_selected","_init_inSubmenu","_init_extra_inSubmenu","_init_menuCollapsed","_init_extra_menuCollapsed","selected","inSubmenu","menuCollapsed","EoSidebarMenuItemComponent","imgStyle","_EoSidebarMenuItem2","sidebarMenuItemTagNameSet","Set","useUpdateMenuCollapsedState","slotRef","updateChildrenMenuCollapsedState","_slotRef$current","assignedElements","forEach","ele","element","tagName","slotElem","handleSlotchange","SIDE_BAR_HAS_BEEN_USED","SIDE_BAR_EXPAND_STATE","SIDE_BAR_RESIZE_WIDTH","ExpandedState","sideBarWidth","parseInt","getCssPropertyValue","sideBarCollapsedWidth","SidebarMenuContext","createContext","openedKeys","matchedKeys","WrappedSidebarMenu","WrappedSidebarMenuItem","WrappedSidebarMenuGroup","WrappedSidebarMenuSubmenu","MenuSimpleItem","useContext","top","isSelected","collapsable","MenuSubmenu","collapsed","SidebarMenu","expandedState","Collapsed","_EoSidebarMenuGroup","_handleCollapseChang","EoSidebarMenuGroup","_init_collapsable","_init_extra_collapsable","_init_collapsed","_init_extra_collapsed","EoSidebarMenuGroupComponent","onCollapseChange","titleRef","handleClick","titleElem","_EoSidebarMenuGroup2","_EoSidebarMenuSubmenu","EoSidebarMenuSubmenu","EoSidebarMenuSubmenuComponent","_EoSidebarMenuSubmenu2","_EoSidebarMenu","EoSidebarMenu","EoSidebarMenuComponent","_EoSidebarMenu2","xmlns","viewBox","fill","fillRule","d","UNPIN_NAVIGATION","FIXED_NAVIGATION","CLICK_TO_FIX_NAVIGATION","WrappedTooltip","_EoSidebar","_EoSidebar_brand","_handleActualWidthChange","_handleExpandedStateChange","EoSidebar","_init_hiddenFixedIcon","_init_extra_hiddenFixedIcon","_init_expandedState","_init_extra_expandedState","_init_actualWidthChangeEvent","_init_extra_actualWidthChangeEvent","actualWidth","_get_actualWidthChangeEvent","_init_expandedStateChangeEvent","_init_extra_expandedStateChangeEvent","state","_get_expandedStateChangeEvent","hiddenFixedIcon","EoSidebarComponent","onActualWidthChange","onExpandedStateChange","showUserDefinedIcon","isFirstUsedTooltip","setIsFirstUsedTooltip","showContentShadow","setShowContentShadow","dragging","setDragging","setExpandedState","titleIcon","contentBottomPlaceholderRef","observer","IntersectionObserver","entries","entry","isIntersecting","threshold","Expanded","expandedWidth","setExpandedWidth","memorizedWidth","isNaN","containerRef","handleMouseEnter","newState","Hovered","handleMouseLeave","sidebarActualWidth","getContainerWidth","inner","container","content","handleFixedIconClick","FixedSvg","display","ToFixedSvg","_containerRef$current","_containerRef$current2","cancelable","offsetX","getBoundingClientRect","left","drag","debounceByAnimationFrame","x","clientX","dragEnd","passive","_EoSidebar2","_set_actualWidthChangeEvent","_set_expandedStateChangeEvent","WrappedMenu","WrappedMenuGroup","WrapperMenuItemSubMenu","WrappedLinkItem","_EoSidebarSubMenu","EoSidebarSubMenu","EoSidebarSubMenuComponent","setSelectedKey","setOpenedKeys","setSelected","getMenuItemIndent","_item$key","split","renderMenuItem","titleStyle","paddingLeft","bodyStyle","renderSubMenuItem","renderGroupMenuItem","renderSimpleMenuItem","mode","_EoSidebarSubMenu2","_EoDirectory","_EoDirectory_brand","_menuItemClick","_suffixIconClick","EoDirectory","_init_directoryTitle","_init_extra_directoryTitle","_init_menuItems","_init_extra_menuItems","_init_hideRightBorder","_init_extra_hideRightBorder","_init_suffixBrick","_init_extra_suffixBrick","_init_defaultSelectedKeys","_init_extra_defaultSelectedKeys","_init_suffixIconClickEvent","_init_extra_suffixIconClickEvent","_get_suffixIconClickEvent","directoryTitle","hideRightBorder","suffixBrick","defaultSelectedKeys","EoDirectoryComponent","suffixIconClick","menuItemClick","_item$children","useBrick","ReactUseMultipleBricks","suffixIcon","suffixIconTooltip","suffixIconDisabled","children","child","groupKey","_EoDirectory2","_set_suffixIconClickEvent","DirectoryTreeContext","expandedKeysSet","selectedKeysSet","onExpand","onSelect","useDirectoryTreeContext","WrappedTreeLeaf","WrappedTreeInternalNode","TreeLeaf","treeData","depth","nodeData","faded","keys","node","when","TreeInternalNode","internalNodeSelectable","selectable","add","delete","TreeNode","Array","isArray","Tree","getAllExpandableKeys","reduce","pre","cur","concat","getExpandableKeysAccordingToSelectedKeys","_cur$children","childrenMatched","childrenExpandableKeys","searchTree","searchFields","expandedKeys","lowerQ","toLowerCase","_expandedKeys","_data","selfMatched","field","getSearchKeywords","matchItem","childrenSearchResult","filteredChildren","result","isNil","Object","prototype","call","k","flat","Infinity","method","WrappedSearch","onSearch","_EoDirectoryTree","_I","_J","_EoDirectoryTree_brand","_handleExpand","_K","_handleSelect","EoDirectoryTree","_initProto","_init_data","_init_extra_data","_init_internalNodeSelectable","_init_extra_internalNodeSelectable","_init_searchable","_init_extra_searchable","_init_placeholder","_init_extra_placeholder","_init_searchFields","_init_extra_searchFields","_init_selectedKeys","_init_extra_selectedKeys","_init_expandedKeys","_init_extra_expandedKeys","_init_expandEvent","_init_extra_expandEvent","_get_expandEvent","_init_selectEvent","_init_extra_selectEvent","_get_selectEvent","searchable","expandAll","collapseAll","expandAccordingToSelectedKeys","EoDirectoryTreeComponent","searchedData","treeItems","flattenList","dig","list","parent","treeItem","pos","flattenData","getFlattenTreeData","_EoDirectoryTree2","_set_expandEvent","_set_selectEvent","WrappedEoIcon","_EoDirectoryTreeLeaf","_EoDirectoryTreeLeaf_brand","EoDirectoryTreeLeaf","_init_depth","_init_extra_depth","_init_faded","_init_extra_faded","EoDirectoryTreeLeafComponent","treeItemRef","suffixRef","handleSelect","suffix","handleSuffixClick","_EoDirectoryTreeLeaf2","_EoDirectoryTreeInter","_EoDirectoryTreeInternalNode_brand","EoDirectoryTreeInternalNode","_init_expanded","_init_extra_expanded","_init_selectable","_init_extra_selectable","EoDirectoryTreeInternalNodeComponent","expandBottomRef","expandBottom","handleExpand","Arrow","_EoDirectoryTreeInternalNode","_NavLogo","NavLogo","NavLogoComponent","brand","getBrandSettings","logoNode","menu_bar_logo_url","src","category","menu_bar_logo_no_link","_NavLogo2","VIEW_DETAILS","DISMISS","showNotification","ignoredInstanceIds","_PollAnnounce","_PollAnnounce_brand","_handleClose","_handleOpen","PollAnnounce","_init_pollEnabled","_init_extra_pollEnabled","_init_realTimeMessage","_init_extra_realTimeMessage","_init_closeEvent","_init_extra_closeEvent","_get_closeEvent","_init_openEvent","_init_extra_openEvent","_get_openEvent","pollEnabled","realTimeMessage","PollAnnounceComponent","onOpen","async","openNotification","htmlMessage","color","styles","message","showConfirm","confirmText","i18n","confirmLink","showCancel","cancelText","AnnounceApi_ignoreAnnounce","instanceIds","console","error","AnnounceApi_listEffectiveAnnounce","isPopup","reverse","listEffectiveAnnounce","ignored","pollAnnounce","AnnounceApi_pollAnnounce","interceptorParams","ignoreLoadingBar","_err$toLowerCase","err","httpErrorToString","_PollAnnounce2","_set_closeEvent","_set_openEvent","allowedAppProps","smartDisplayForMenuTitle","i18nNamespace","overrideApp","isEvaluable","precooked","appUsage","usedProperties","hasNonStaticUsage","preevaluate","withParent","hooks","beforeVisitGlobal","beforeVisitGlobalMember","attemptToVisitGlobals","prop","globals","getFixedT","suppliedGlobals","supply","computable","hasOwnProperty","cook","expression","source","globalVariables","initializeMenuI18n","menuList","menuWithI18n","menuI18nBundles","_menu$i18n","menuI18nNamespace","menuId","app","appId","lang","resources","addResourceBundle","set","dispose","ns","removeResourceBundle","symbolMenuI18nNamespace","Symbol","symbolOverrideApp","DEFAULT_ICON","getIcon","imgSrc","processGroupInject","injectWithMenus","_processGroupInject","foundInjectingMenus","groupId","injectingMenu","reorderMenuItems","sortBy","_item$sort","sort","sortMenuItems","customElements","define","createProviderClass","_smartDisplayForMenuT2","mainMenu","find","validMenuList","Map","_menu$items","dynamicItems","itemsResolve","injectMenuGroupId","injectingMenus","firstLevelItems","tree","__keys","getChildren","prefixKey","j","_smartDisplayForMenuT","initializeI18n","FULL_TEXT_SEARCH","IP_SEARCH","TICKET_SEARCH","TICKET_SEARCH_PLACEHOLDER","IP_SEARCH_PLACEHOLDER","FULL_TEXT_SEARCH_PLACEHOLDER","IP_SEARCH_TOOLTIP","RECENT_SEARCH","NO_SEARCH_HISTORY","QUICK_SEARCH_TIP","STORAGE","FULL_TEXT_URL","IP_SEARCH_URL","WrappedButton","WrappedToolTip","_QuerySearch","QuerySearch","QuerySearchComponent","shadowRoot","_QuerySearch2","QuerierTypes","getOrgId","_auth$getAuth","getRecentVisitsKey","getSelectedQuerierKey","_getRuntime$getCurren","inputRef","getCurrentApp","currentTheme","useCurrentTheme","showInput","setShowInput","searchKey","setSearchKey","visits","setVisits","querierList","setQuerierList","querierOptions","setQuerierOptions","selectedQuerier","setSelectedQuerier","cache","createCache","checkIsDirectJump","_shadowRoot$host","parentWidth","parentElement","documentElement","handleHistoryPush","_selectedQuerier$conf","targetUrl","config","cleanUrl","queryTerm","replaceAll","handleGlobalKeyDown","test","navigator","userAgent","metaKey","ctrlKey","prevShow","_inputRef$current","handleClickOutside","composedPath","handleEscKey","defaultQueriers","fullText","showInApps","searchPlaceholder","ipSearch","_res$list","apiQueriers","InstanceApi_postSearchV3","page","page_size","fields","instanceSearch","relationSearch","fetchQueriers","_i$showInApps","lastSelectedName","matched","defaultOption","_STORAGE$getItem","historyKey","ConfigProvider","algorithm","darkAlgorithm","defaultAlgorithm","StyleProvider","hashPriority","containerShowInput","inputContentSlideout","inputContentSlidein","Select","getPopupContainer","showSearch","val","_selectedQuerier$conf2","onKeyDown","uniq","handleClear","handleSearchClick","buttonSildeint","shape","buttonStyle","border","background","fontSize","historySearchContainerSlidein","historySearchContainerSlideout","tag","handleHistoryTagClick","getPlaceholder"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/6128.42a4dc65.js","mappings":"gLAGIA,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,okCAEgD,KAEzF,QAAeH,EAAwBI,U,kECNnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,g5DAAi5D,KAE17D,QAAeH,EAAwBI,U,kECJnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,iKAAkK,KAE3MH,EAAwBK,OAAS,CAChC,QAAW,qBAEZ,S,kECPIL,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,6QAEiD,KAE1F,QAAeH,EAAwBI,U,kECNnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,8HAA+H,KAExK,QAAeH,EAAwBI,U,kECJnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,2rDAI+b,KAExe,QAAeH,EAAwBI,U,kECRnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,u8FAQL,KAEpC,QAAeH,EAAwBI,U,kECZnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,ioGAiBD,KAExC,QAAeH,EAAwBI,U,kECrBnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,mxFA4BD,KAExC,QAAeH,EAAwBI,U,kEChCnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,6uDAEwmD,KAEjpD,QAAeH,EAAwBI,U,kECNnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,wSAAyS,KAElV,QAAeH,EAAwBI,U,wPCiCvC,MAAM,cAAEE,EAAa,SAAEC,IAAaC,EAAAA,EAAAA,oBAE9BC,GAAkBC,EAAAA,EAAAA,WACtB,gBAEIC,GAAiBD,EAAAA,EAAAA,WAKrB,aAAc,CACdE,gBAAiB,iBACjBC,sBAAuB,0BA2BzB,SAASC,EAAkBC,GACzB,MAAM,KAAEC,GAASD,EACjB,OAAOE,EAAAA,EAAAA,IAAUD,EAA0BD,EAAMG,SAC/CC,IAAAA,cAACC,GAAcC,EAAAA,EAAAA,GAAA,GAAKN,EAAK,CAAEC,KAAMA,MAC/BM,EAAAA,EAAAA,IAAQN,GACVG,IAAAA,cAACI,GAAgBF,EAAAA,EAAAA,GAAA,GAAKN,EAAK,CAAEC,KAAMA,KAEnCG,IAAAA,cAACK,GAAiBH,EAAAA,EAAAA,GAAA,GACZN,EAAK,CACTC,KAAMA,IAGZ,CACA,SAASQ,EAAkBT,GACzB,MAAM,KAAEC,EAAI,MAAES,EAAK,OAAEC,EAAM,YAAEC,EAAW,YAAEC,EAAc,IAAOb,EAC/D,OACEI,IAAAA,cAACV,EAAe,CACd,aAAYgB,EACZI,UAAWH,EAAS,qBAAuB,GAC3CI,IAAKd,EAAKc,IACVC,MAAOJ,EAAcX,EAAKgB,KAAO,GACjCC,SAAQjB,EAAKc,KAAMF,EAAYM,SAASlB,EAAKc,OAE5CK,EAAAA,EAAAA,IAAcnB,EAAM,CAAEoB,MAAO,QAAUrB,EAAMsB,oBAGpD,CAEA,IAAIC,EAEJ,MAAMC,EAA4BC,IAGhC,MAAMC,EACJH,QAAAA,EACCA,EAAcI,OAAOC,WAAaC,SAASC,KAAKC,YAEnDF,SAASC,KAAKE,MAAMN,aAAeD,EAAMQ,OAASP,EAAe,KAAO,GACxEG,SAASC,KAAKE,MAAME,SAAWT,EAAMQ,OAAS,SAAW,GACzDJ,SAASC,KAAKE,MAAMG,YAAcV,EAAMQ,OAAS,OAAS,EAAE,EAG9D,SAAS5B,EAAc+B,GASD,IAAAC,EAAA,IATE,MACtB3B,EAAK,OACLC,EAAM,KACNV,EAAI,QACJE,EAAO,YACPS,EAAW,YACXC,EAAc,GAAE,SAChBqB,EAAQ,mBACRZ,GACkBc,EAClB,OAAiB,QAAVC,EAAApC,EAAKqC,aAAK,IAAAD,OAAA,EAAVA,EAAYE,QAAS,EAC1BnC,IAAAA,cAACR,EAAc,CACb,aAAYc,EACZI,UAAW0B,IAAW,UAAW,CAC/BC,UAAWtC,EACX,qBAAsBQ,IAExB+B,OAAO,EACPC,QAAQ,QACRC,UAAWzC,EAAU,eAAiB,cACtC0C,SAAU,EACVC,cAAc,QACdC,SAAS,SAET3C,IAAAA,cAACV,EAAe,CACdoB,UAAU,yBACVC,IAAKd,EAAKc,IACViC,KAAK,SACLhC,MAAOJ,EAAcX,EAAKe,MAAQ,KAEjCiC,EAAAA,EAAAA,IAAchD,GAAOE,EAAS,IAAKmB,KAEtClB,IAAAA,cAAA,OACEU,UAAW0B,IAAW,mBAAoB,CACxC,wBAAyBN,KAG1BjC,EAAKqC,MAAMY,KAAKC,GACf/C,IAAAA,cAACA,IAAAA,SAAc,CAACW,IAAKoC,EAAUpC,KAC7BX,IAAAA,cAACL,EAAiB,CAChBE,KAAMkD,EACNtC,YAAaA,EACbD,YAAaA,SAMrB,IACN,CAEA,SAASJ,EAAgB4C,GAIH,IAAAC,EAAA,IAJI,KACxBpD,EAAI,YACJW,EAAW,YACXC,EAAc,IACIuC,EAClB,OAAiB,QAAVC,EAAApD,EAAKqC,aAAK,IAAAe,OAAA,EAAVA,EAAYd,QAAS,EACL,aAArBtC,EAAKqD,YACHlD,IAAAA,cAACmD,EAAiB,CAChBtD,KAAMA,EACNY,YAAaA,EACbD,YAAaA,EACbgC,UAAU,cACVE,cAAc,UAE6B,YAA1C7C,EAA0BqD,YAC7BlD,IAAAA,cAACoD,EAAY,CACXvD,KAAMA,EACNY,YAAaA,EACbD,YAAaA,EACbgC,UAAU,cACVE,cAAc,QACd3C,SAAS,IAGXC,IAAAA,cAAAA,IAAAA,SAAA,KACEA,IAAAA,cAAA,OAAKU,UAAU,eAAeb,EAAKe,OACnCZ,IAAAA,cAAA,OAAKU,UAAU,iBACZb,EAAKqC,MAAMY,KAAKC,GAEb/C,IAAAA,cAACA,IAAAA,SAAc,CAACW,IAAKoC,EAAUpC,KAC7BX,IAAAA,cAACL,EAAiB,CAChBE,KAAMkD,EACNvC,YAAaA,EACbC,YAAaA,SAQzB,IACN,CAEA,SAAS0C,EAAiBE,GAkBvB,IAAAC,EAAA,IAlBwB,MACzBhD,EAAK,OACLC,EAAM,KACNV,EAAI,YACJY,EAAc,GAAE,YAChBD,EAAW,UACXgC,EAAY,eAAc,cAC1BE,EAAa,mBACbxB,GAUDmC,EACC,OAAiB,QAAVC,EAAAzD,EAAKqC,aAAK,IAAAoB,OAAA,EAAVA,EAAYnB,QAAS,EAC1BnC,IAAAA,cAACR,EAAc,CACb,aAAYc,EACZI,UAAW0B,IAAW,2BAA4B,UAAW,CAC3D,qBAAsB7B,IAExB+B,OAAO,EACPC,QAAS,QACTC,UAAWA,EACXC,SAAU,EACV9B,IAAKd,EAAKc,IACVgC,SAAS,QACTD,cAAeA,EACfhD,sBAAuB0B,GAEvBpB,IAAAA,cAACV,EAAe,CACdoB,UAAU,sBACVC,IAAKd,EAAKc,IACViC,KAAK,SACLhC,MAAOJ,EAAcX,EAAKe,MAAQ,KAEjCiC,EAAAA,EAAAA,IAAchD,GAAM,EAAOqB,IAE9BlB,IAAAA,cAAA,OAAKU,UAAU,oBACbV,IAAAA,cAACuD,EAAAA,EAA4B,CAC3BC,SAAU3D,EACVY,YAAaA,MAIjB,IACN,CAEA,SAAS2C,EAAYK,GAoBlB,IAAAC,EAAA,IApBmB,MACpBpD,EAAK,OACLC,EAAM,KACNV,EAAI,YACJY,EAAc,GAAE,YAChBD,EAAW,UACXgC,EAAY,eAAc,cAC1BE,EAAa,QACb3C,EAAO,mBACPmB,GAWDuC,EACC,MAAOE,EAASC,IAAcC,EAAAA,EAAAA,YAO9B,OAAiB,QAAVH,EAAA7D,EAAKqC,aAAK,IAAAwB,OAAA,EAAVA,EAAYvB,QAAS,EAC1BnC,IAAAA,cAACR,EAAc,CACb,aAAYc,EACZI,UAAW0B,IAAW,UAAW,CAC/B,qBAAsB7B,IAExBgC,QAAS,QACTC,UAAWA,EACXC,SAAU,EACV9B,IAAKd,EAAKc,IACVgC,SAAS,QACTL,OAAO,EACPI,cAAeA,EACfhD,sBAlByB2B,IAC3BuC,EAAWvC,EAAMQ,QACjBT,EAAyBC,EAAM,GAkB7BrB,IAAAA,cAACV,EAAe,CACdoB,UAAU,sBACVC,IAAKd,EAAKc,IACViC,KAAK,SACLhC,MAAOJ,EAAcX,EAAKe,MAAQ,KAEjCiC,EAAAA,EAAAA,IAAchD,GAAM,EAAOqB,IAE9BlB,IAAAA,cAAA,OACEU,UAAW0B,IAAW,2BAA4B,CAChD,qBAAsBrC,IAExB+D,QAAUC,GAAMA,EAAEC,mBAElBhE,IAAAA,cAACiE,EAAAA,GAAW,CACVC,UAAWrE,EACXY,YAAaA,EACbkD,QAASA,MAIb,IACN,CAEA,IAAAQ,EAAA,IAAAC,EAAA,IAAAC,QAAAC,EAAA,IAAAD,QAAAE,EAAA,IAAAF,QAKA,MAAAG,UAQsBC,EAAAA,iBAAiBC,WAAAA,GAAA,SAAAC,YACrCC,EAAAA,EAAAA,GAAA,KAAAR,EAAAS,EAAA,QAQAD,EAAAA,EAAAA,GAAA,KAAAN,GAAAQ,EAAA,MAAAC,EAAA,SAQAH,EAAAA,EAAAA,GAAA,KAAAL,GAAAS,EAAA,MAAAC,EAAA,QAAAC,EAAA,cAVSC,GAAI,OAAAC,EAAAA,EAAAA,GAAAhB,EAAA,cAAJe,CAAIE,IAAAC,EAAAA,EAAAA,GAAAlB,EAAA,KAAAiB,EAAA,uBAQJnE,GAAkB,OAAAkE,EAAAA,EAAAA,GAAAd,EAAA,4BAAlBpD,CAAkBmE,IAAAC,EAAAA,EAAAA,GAAAhB,EAAA,KAAAe,EAAA,gBAQlB7E,GAAW,OAAA4E,EAAAA,EAAAA,GAAAb,EAAA,qBAAX/D,CAAW6E,IAAAC,EAAAA,EAAAA,GAAAf,EAAA,KAAAc,EAAA,CAEpBE,MAAAA,GACE,OACEvF,IAAAA,cAACwF,EAAgB,CACfL,KAAMM,KAAKN,KACX3E,YAAaiF,KAAKjF,YAClBU,mBAAoBuE,KAAKvE,oBAG/B,EAGF,SAASsE,EAAiB5F,GACxB,MAAM,KAAEuF,EAAI,YAAE3E,GAAgBZ,EAExB8F,GAAUC,EAAAA,EAAAA,cACVC,GAAoBC,EAAAA,EAAAA,QAAuB,OAC1CC,EAAUC,IAAelC,EAAAA,EAAAA,UAAS6B,EAAQI,WAC1CE,EAAeC,IAAoBpC,EAAAA,EAAAA,UACxCqC,OAAOC,mBAEH,SAAEC,EAAQ,OAAEC,GAAWP,EAEvBQ,GAAYC,EAAAA,EAAAA,UAAQ,KAAM,IAAAC,EAC9B,OAAuB,QAAhBA,EAACrB,aAAI,EAAJA,EAAMmB,iBAAS,IAAAE,EAAAA,EAAI,IAAIC,QAC5B5G,IAAI,IAAA6G,EAAA,MAEW,YAAd7G,EAAK8G,OAEJ9G,EAAK8G,MAEL,CAAC,QAAS,WAAW5F,SAASlB,EAAK8G,QACF,QADOD,EACtC7G,EAA0BqC,aAAK,IAAAwE,OAAA,EAAhCA,EAAkCvE,OAAO,GAC9C,GACA,CAACgD,aAAI,EAAJA,EAAMmB,YAEJ7F,GAAc8F,EAAAA,EAAAA,UAAQ,KAC1B,MAAM,aAAEK,IAAiBC,EAAAA,EAAAA,IACvBP,QAAAA,EAAa,GACbF,EACAC,EACA,IAEF,OAAOO,CAAY,GAClB,CAACN,EAAWF,EAAUC,KAEzBS,EAAAA,EAAAA,YAAU,KACR,MAAMC,EAA+BrB,EAAQsB,QAAQlB,IACnDC,EAAYD,EAAS,IAEvB,OAAOiB,CAAQ,GACd,KAEHD,EAAAA,EAAAA,YAAU,KACR,GAAIlB,EAAkBqB,QAAS,CAC7B,MAAMC,EAAiB,IAAIC,gBAAe,KACxC,GAAIvB,EAAkBqB,QAAS,KAAAG,EAC7B,MAAM,MAAEnG,GAAuD,QAAhDmG,EAAGxB,EAAkBqB,QAAQI,iBAAiB,UAAE,IAAAD,EAAAA,EAAI,CAAC,EAC9DE,EAAa1B,EAAkBqB,QAAQK,WAE7C,GAAIA,EAAWnF,QAAUlB,EAAO,CAC9B,IAAIsG,EAAetG,EACf+E,EAAgBsB,EAAWnF,OAE/B,IAAK,IAAIqF,EAAI,EAAGA,EAAIF,EAAWnF,OAAQqF,IAAK,CAC1C,MAAQvG,MAAOwG,EAAYC,OAAQC,GACjCL,EAAWE,GACXH,iBAAiB,GAEnB,IAAKM,GAAeJ,EAAe,GAAK,EAAG,CACzCvB,EAAgBwB,EAAI,EACpB,KACF,CAIA,GAFAD,EACEA,EAAeE,GAAcD,EAAI,EAxY/B,EAwY+C,GAC/CD,EAAe,EAAG,CACpBvB,EAAgBwB,EAChB,KACF,CACF,CAEAvB,EAAiBD,EAAgB,EAAI,EAAIA,EAC3C,CACF,KAIF,OAFAkB,EAAeU,QAAQhC,EAAkBqB,SAElC,KACLC,EAAeW,YAAY,CAE/B,IACC,IAGH,MAAMC,GAAevB,EAAAA,EAAAA,UACnB,MACEI,KAAM,UACN/F,MAAO,MACPsB,MAAOoE,EAAUyB,MAAM/B,EAAeM,EAAUnE,QAAQW,KAAK0E,IAAC,IACzDA,EACHb,KAAiB,UAAXa,EAAEb,MAAoBa,EAAEtF,MAAMC,OAAS,UAAYqF,EAAEb,YAG/D,CAACL,EAAWN,IAGd,OACEhG,IAAAA,cAAA,OAAKgI,IAAKpC,EAAmBlF,UAAU,oBACpC4F,EAAUxD,KAAI,CAACjD,EAAMS,KAAU,IAAA2H,EAC9B,MAAMC,EAAWlC,GAAiB1F,EAClC,OACEN,IAAAA,cAACA,IAAAA,SAAc,CAACW,IAAKd,EAAKc,MACvBb,EAAAA,EAAAA,IAAUD,GAA0B,IACM,aAA1CA,EAA0BqD,aACK,QADqB+E,EACpDpI,EAA0BqC,aAAK,IAAA+F,GAAhCA,EAAkC9F,OAChCnC,IAAAA,cAACmD,EAAiB,CAChB7C,MAAOA,EACPC,OAAQ2H,EACRrI,KAAMA,EACNW,YAAaA,EACbC,YAAaA,EACbS,mBAAoBtB,EAAMsB,qBAEU,UAAnCrB,EAA0B8G,MACc,YAA1C9G,EAA0BqD,YAC3BlD,IAAAA,cAACoD,EAAY,CACX9C,MAAOA,EACPC,OAAQ2H,EACRrI,KAAMA,EACNW,YAAaA,EACbC,YAAaA,EACbV,SAAS,EACTmB,mBAAoBtB,EAAMsB,qBAG5BlB,IAAAA,cAACL,EAAiB,CAChBW,MAAOA,EACPC,OAAQ2H,EACRrI,KAAMA,EACNW,YAAaA,EACbC,YAAaA,EACbV,SAAS,EACTmB,mBAAoBtB,EAAMsB,qBAGf,IAGrBlB,IAAAA,cAACL,EAAiB,CAChBY,OAAQyF,EAAgBM,EAAUnE,OAClCtC,KAAMiI,EACNtH,YAAaA,EACbC,YAAaA,EACbqB,UAAU,EACV/B,SAAS,EACTmB,mBAAoBtB,EAAMsB,qBAE5BlB,IAAAA,cAAA,QAAMmI,KAAK,cAGjB,CAvJCC,EAAA5D,IAAAT,GAAAc,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAmD,GAAAlE,EAAAmE,KAAAC,EAAAA,EAAAA,GAAAH,EAAA,CA1CAjJ,EAAc,cAAe,CAC5BqJ,WAAY,CACVC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,MAEF,EAKCxJ,EAAS,CACRyJ,WAAW,IACX,WAMDzJ,EAAS,CACRyJ,WAAW,IACX,yBAMDzJ,EAAS,CACRuH,KAAMmC,UACN,2BAtBkBrE,EAAAA,mBAAgB6D,I,iDCnVtCS,EAAAA,EAAAA,qBAAoBC,EAAAA,GAAIC,EAAAA,GAExB,MAAQ9J,cAAaA,KAAKE,EAAAA,EAAAA,oBAE1B,IAAA6J,GAKA,MAAAC,WAG8B1E,EAAAA,iBAC5Bc,MAAAA,GACE,OAAOvF,IAAAA,cAACoJ,EAAAA,EAAwB,KAClC,EACDC,EAAAF,IAAAD,GAAAZ,KAAAC,EAAAA,EAAAA,GAAAc,EAAA,CAPAlK,GAAc,sBAAuB,CACpCqJ,WAAY,CAACI,EAAAA,MACb,YAC4BnE,EAAAA,kBAAgB4D,EAAAC,K,6GCI9C,MAAQnJ,cAAaA,KAAKE,EAAAA,EAAAA,oBAEpBiK,IAAiBC,EAAAA,GAAAA,gBACrB,0BAGF,IAAAC,GAKA,MAAAC,WAGkChF,EAAAA,iBAChCiF,oBAAAA,GACEC,MAAMD,uBACNJ,GAAe7D,MAAM,EACvB,CAEAF,MAAAA,GACE,OAAOvF,IAAAA,cAAC4J,GAA4B,CAACC,KAAMpE,MAC7C,EAGK,SAASmE,GAA4B5H,GAAkC,IAAjC,KAAE6H,GAA6B7H,EAC1E,MAAO8H,EAAaC,IAAkBlG,EAAAA,EAAAA,WAAS,IACxC/C,EAAQkJ,IAAanG,EAAAA,EAAAA,WAAS,GAC/BoG,EAAkBA,KACtBD,GAAWE,IAAcA,GAAS,EAoDpC,OAjDApD,EAAAA,EAAAA,YAAU,KAESnB,EAAAA,EAAAA,cAAaqB,QAAO,KACnCgD,GAAU,EAAM,KAGjB,KAEHlD,EAAAA,EAAAA,YAAU,KAEJhG,IAAWgJ,GACbC,GAAe,EACjB,GACC,CAACjJ,EAAQgJ,KAGZhD,EAAAA,EAAAA,YAAU,KACRqD,GAAAA,EAAQ1D,OAAS,WACf,OAAO,CACT,GAGA0D,EAAAA,GAAAA,GAAQ,SAAU9I,IAChBA,EAAM+I,iBACNJ,GAAWE,IAAcA,GAAS,KAIpCC,EAAAA,GAAAA,GAAQ,OAAO,KACbH,GAAU,EAAM,IAGX,KACLG,GAAAA,EAAQE,OAAO,SACfF,GAAAA,EAAQE,OAAO,MAAM,IAEtB,KAEHvD,EAAAA,EAAAA,YAAU,KACRwC,GAAeO,EAAM/I,EAAO,GAC3B,CAACA,EAAQ+I,KAEZ/C,EAAAA,EAAAA,YAAU,KAAM,IAAAwD,EACdC,GAAAA,GAAsBC,mBACtBC,GAAAA,GAAkBD,oBACN,QAAZF,GAAAI,EAAAA,EAAAA,qBAAY,IAAAJ,OAAA,EAAZA,EAAcK,kBAAkB,sCAC9BC,GAAAA,GAA2BJ,kBAAkB,GAC9C,IAGDxK,IAAAA,cAAAA,IAAAA,SAAA,KACEA,IAAAA,cAAA,KACE6K,KAAK,SACLnK,UAAWoK,IAAW,mBAAoB,CAAEhK,WAC5CgD,QAASmG,GAETjK,IAAAA,cAAC+K,GAAAA,EAAY,OAEf/K,IAAAA,cAAA,OACEU,UAAWoK,IAAW,OAAQ,CAAEhK,WAChCgD,QAASmG,IAEVH,GAAe9J,IAAAA,cAACgL,GAAAA,EAAS,CAAClK,OAAQA,IAGzC,CA1ECmK,GAAAxB,IAAAD,GAAAlB,KAAAC,EAAAA,EAAAA,GAAA0C,GAAA,CAZA9L,GAAc,yBAA0B,CACvCqJ,WAAY,CAACI,GAAAA,EAAWsC,GAAAA,EAA2BC,GAAAA,MACnD,YACgC1G,EAAAA,kBAAgB4D,EAAAC,K,2DCxB3C,MAAM8C,IAAc7L,EAAAA,EAAAA,WAAyC,WACvD8L,IAAc9L,EAAAA,EAAAA,WAA2B,WACzC+L,IAAyB/L,EAAAA,EAAAA,WAKpC,sBAAuB,CACvBgM,cAAe,eACf9L,gBAAiB,oBAKjB8J,EAAAA,GAAAA,gBAAmC,qB,eCK9B,SAASiC,GAASxJ,GAQN,IAAAyJ,EAAA,IARO,KACxBC,EAAI,QACJC,EAAO,QACPC,EAAO,YACPC,EAAW,kBACXC,EAAiB,gBACjBC,EAAe,cACfR,GACevJ,EAEN,QAATyJ,EAAAC,EAAK/E,YAAI,IAAA8E,IAATC,EAAK/E,KAAS,SACd,MAAM,KAAEwB,EAAI,QAAEc,EAAO,MAAE/G,GAAUwJ,GAC1BM,EAAgBC,IAAqBpI,EAAAA,EAAAA,WAAS,GAE/CqI,GAAkB3F,EAAAA,EAAAA,UAAQ,IACvB4F,EAAAA,mBAAmBC,kBACxBV,EACAC,aAAO,EAAPA,EAASlF,QAAQ5G,IAASwM,EAAAA,EAAAA,oBAAmBxM,EAAM6L,OAEpD,CAACC,EAASD,IAEPY,GAAoBC,EAAAA,EAAAA,cACvBlL,IACCkK,SAAAA,EAAgB,CACdG,OACAc,OAAQnL,EAAMQ,QACd,GAEJ,CAAC6J,EAAMH,IAGT,OACEvL,IAAAA,cAAA,MACEU,UAAWoK,IAAW,aAAc,CAClC2B,MAAwB,IAAjBvK,EAAMC,OACbuK,QAAShB,EAAKiB,cAGhB3M,IAAAA,cAAA,OAAKU,UAAU,4BACbV,IAAAA,cAAA,QAAMU,UAAU,qBAAoBkM,EAAAA,GAAAA,GAAc3D,EAASd,IAC9C,gBAAZyD,KAA+BM,UAAAA,EAAiB/J,SAC/CnC,IAAAA,cAACsL,GAAsB,CACrBK,QAASO,EACTzM,gBAAkB4B,IAChB4K,EAAkB5K,EAAMQ,OAAO,EAEjC0J,cAAee,GAEftM,IAAAA,cAACoL,GAAW,CACVyB,IAAI,KACJC,KAAK,OACLpM,UAAWoK,IAAW,cAAe,CACnChK,OAAQkL,QAMlBhM,IAAAA,cAAA,MAAIU,UAAU,QACXwB,EAAMY,KAAKjD,GACI,QAAdA,EAAK8G,KACH3G,IAAAA,cAAC+M,GAAc,CACbpM,IAAKd,EAAKmN,WACVtB,KAAM7L,EACN8L,QAASA,EACTC,QAASA,EACTC,YAAaA,EACbC,kBAAmBA,EACnBC,gBAAiBA,EACjBR,cAAeA,IAGjBvL,IAAAA,cAACiN,GAAQ,CACPtM,IAAK,GAAGd,EAAK8G,QAAQ9G,EAAKb,KAC1B0M,KAAM7L,EACN8L,QAASA,EACTC,QAASA,EACTC,YAAaA,EACbC,kBAAmBA,EACnBhI,QAAU4H,IACRK,SAAAA,EAAkB,IAAKlM,KAAS6L,GAAO,EAEzCH,cAAeA,OAO7B,CAYO,SAAS0B,GAAQjK,GAQN,IAAAkK,EAAA,IARO,KACvBxB,EAAI,QACJC,EAAO,QACPC,EAAO,YACPC,EAAW,kBACXC,EAAiB,QACjBhI,EAAO,cACPyH,GACcvI,EACd,MAAMmF,GAAO5B,EAAAA,EAAAA,UAAQ,KAAMqG,EAAAA,GAAAA,GAAclB,EAAKzC,QAASyC,EAAKvD,OAAO,CAACuD,KAE7DM,EAAgBC,IAAqBpI,EAAAA,EAAAA,WAAS,GAE/CqI,GAAkB3F,EAAAA,EAAAA,UACtB,IACE4F,EAAAA,mBAAmBC,kBACjBV,EACAC,aAAO,EAAPA,EAASlF,QAAQ5G,IAASwM,EAAAA,EAAAA,oBAAmBxM,EAAM6L,OAEvD,CAACC,EAASD,IAGNY,GAAoBC,EAAAA,EAAAA,cACvBlL,IACCkK,SAAAA,EAAgB,CACdG,OACAc,OAAQnL,EAAMQ,QACd,GAEJ,CAAC6J,EAAMH,IAGT,IAAI4B,EACAC,GAAW,EACXC,EAAU,GAEd,GAAgB,qBAAZzB,GAA8C,gBAAZA,EACpC,GAAkB,QAAdF,EAAK/E,KACP0G,EAAUC,GAAiBzB,EAAaH,EAAM,QACzC,CAEL,MAAM6B,EAAY,IAAIC,IAAI9B,EAAK+B,IAAK3H,SAAS4H,QAC7CP,EAAaI,EAAUnH,SACvBgH,EAAWG,EAAUG,SAAW5H,SAAS4H,OACzCL,EAAUD,EACN,GACAE,GACExB,EACA,IACKJ,EACHyB,cAEF,GAER,CAGF,OACEnN,IAAAA,cAAA,MACEU,UAAWoK,IAAW,YAAa,CACjCsC,SAAUA,GAAY1B,EAAKiB,aAE7B7I,QAASA,KACPA,SAAAA,EAAU,CAAEqJ,cAAa,GAG3BnN,IAAAA,cAACqL,GAAW,CACVsC,QAASP,EAAW,gBAAkB,GACtCK,IAAKJ,GAELrN,IAAAA,cAACoL,IAAWlL,EAAAA,EAAAA,GAAA,CACVQ,UAAU,YACVmM,IAAI,UACJC,KAAK,oBACa,QAAbI,EAAAxB,EAAKkC,gBAAQ,IAAAV,GAAbA,EAAeL,KAAOnB,EAAKkC,SAASd,MACpCe,EAAAA,GAAAA,MAAKnC,EAAKkC,SAAU,CACnB,MACA,OACA,QACA,WACA,WAEF,OAEN5N,IAAAA,cAAA,QAAMU,UAAU,mBAAmByH,IAExB,gBAAZyD,KAA+BM,UAAAA,EAAiB/J,SAC/CnC,IAAAA,cAACsL,GAAsB,CACrBK,QAASO,EACTzM,gBAAkB4B,IAChB4K,EAAkB5K,EAAMQ,OAAO,EAEjCiC,QAAUzC,IACRA,EAAM2C,iBAAiB,EAEzBuH,cAAee,EACf,cAAa,qBAAqBZ,EAAK1M,MAEvCgB,IAAAA,cAACoL,GAAW,CACVyB,IAAI,KACJC,KAAK,OACLpM,UAAWoK,IAAW,cAAe,CAAEhK,OAAQkL,OAM3D,CAYA,SAASe,GAAc1J,GAQC,IARA,KACtBqI,EAAI,QACJC,EAAO,QACPC,EAAO,YACPC,EAAW,kBACXC,EAAiB,gBACjBC,EAAe,cACfR,GACoBlI,EACpB,MAAM,KAAE8E,EAAI,QAAEc,EAAO,MAAE/G,GAAUwJ,GAC1BM,EAAgBC,IAAqBpI,EAAAA,EAAAA,WAAS,IAC9CiK,EAAUC,IAAelK,EAAAA,EAAAA,WAAS,GAEnCqI,GAAkB3F,EAAAA,EAAAA,UACtB,IACE4F,EAAAA,mBAAmBC,kBACjBV,EACAC,aAAO,EAAPA,EAASlF,QAAQ5G,IAASwM,EAAAA,EAAAA,oBAAmBxM,EAAM6L,OAEvD,CAACC,EAASD,IAGNsC,GAASzB,EAAAA,EAAAA,cAAY,KACzBwB,GAAa7D,IAAcA,GAAS,GACnC,IAEGoC,GAAoBC,EAAAA,EAAAA,cACvBlL,IACCkK,SAAAA,EAAgB,CACdG,OACAc,OAAQnL,EAAMQ,QACd,GAEJ,CAAC6J,EAAMH,IAGT,OACEvL,IAAAA,cAAA,MACEU,UAAWoK,IAAW,mBAAoB,CACxC2B,MAAwB,IAAjBvK,EAAMC,OACbuK,QAAShB,EAAKiB,cAGhB3M,IAAAA,cAAA,OAAKU,UAAU,6BACbV,IAAAA,cAACqL,GAAW,CAACvH,QAASkK,GACpBhO,IAAAA,cAACoL,GAAW,CACVyB,IAAI,KACJoB,OAAO,MACPnB,KAAK,cACLpM,UAAU,cAEZV,IAAAA,cAAA,QAAMU,UAAU,oBACbkM,EAAAA,GAAAA,GAAc3D,EAASd,IAE1BnI,IAAAA,cAACoL,GAAW,CACVyB,IAAI,OACJC,KAAMgB,EAAW,KAAO,OACxBpN,UAAU,sBAGD,gBAAZkL,KAA+BM,UAAAA,EAAiB/J,SAC/CnC,IAAAA,cAACsL,GAAsB,CACrBK,QAASO,EACTzM,gBAAkB4B,IAChB4K,EAAkB5K,EAAMQ,OAAO,EAEjC0J,cAAee,GAEftM,IAAAA,cAACoL,GAAW,CACVyB,IAAI,KACJC,KAAK,OACLpM,UAAWoK,IAAW,cAAe,CACnChK,OAAQkL,QAMlBhM,IAAAA,cAAA,MAAIU,UAAWoK,IAAW,WAAY,CAAEgD,cACrC5L,EAAMY,KAAKjD,GACVG,IAAAA,cAACiN,GAAQ,CACPtM,IAAKd,EAAKmN,WACVtB,KAAM7L,EACN8L,QAASA,EACTC,QAASA,EACTC,YAAaA,EACbC,kBAAmBA,EACnBhI,QAAU4H,IACRK,SAAAA,EAAkB,IAAKlM,KAAS6L,GAAO,EAEzCH,cAAeA,OAM3B,CAEA,SAAS+B,GACPzB,EACAH,EACAwC,GACA,IAAAC,EACA,OAGG,QAHHA,EACEtC,aAAW,EAAXA,EAAauC,QAAQ,cAAc,CAACC,EAAQ1N,IAC1C2N,mBAAmBC,QAAOC,EAAAA,GAAAA,KAAI9C,EAAM/K,EAAI8N,mBACzC,IAAAN,EAAAA,EAAID,CAET,C,qFCvVA,MAAQ/O,cAAa,GAAEC,SAAQ,GAAEiC,MAAKA,KAAKhC,EAAAA,EAAAA,oBAErCqP,GAAY,SAElB,IAAAC,GAAA,IAAAvK,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAuK,GAAA,IAAAvK,QAAAwK,GAAA,IAAAxK,QAAAyK,GAAA,IAAAzK,QAAA0K,GAAA,IAAA1K,QAAA2K,GAAA,IAAAC,QAAAC,GAAA,IAAA7K,QAAA8K,GAAA,IAAA9K,QAAA+K,GAAA,IAAA/K,QAQA,MAAAgL,WAG8B5K,EAAAA,iBAAiDC,WAAAA,GAAA,SAAAC,YAAA2K,EAAAA,GAAAA,GAAA,KAAAN,KAC7EpK,EAAAA,EAAAA,GAAA,KAAAR,GAAAmL,GAAA,QAIA3K,EAAAA,EAAAA,GAAA,KAAAN,IAAAkL,GAAA,MAAAC,GAAA,SAIA7K,EAAAA,EAAAA,GAAA,KAAAL,IAAAmL,GAAA,MAAAC,GAAA,SAOA/K,EAAAA,EAAAA,GAAA,KAAAgK,IAAAgB,GAAA,MAAAC,GAAA,SAQAjL,EAAAA,EAAAA,GAAA,KAAAiK,IAAAiB,GAAA,MAAAC,GAAA,SAUAnL,EAAAA,EAAAA,GAAA,KAAAkK,IAAAkB,GAAA,MAAAC,GAAA,SAQArL,EAAAA,EAAAA,GAAA,KAAAmK,IAAAmB,GAAA,MAAAC,GAAA,SAOAvL,EAAAA,EAAAA,GAAA,KAAAsK,IAAAkB,GAAA,MAAAC,GAAA,SAOAzL,EAAAA,EAAAA,GAAA,KAAAuK,IAAoBmB,GAAA,MAAIzQ,KACtB0Q,EAAAA,GAAAA,GAAAvB,GAAAvJ,KAAK+K,IAAoBC,KAAK5Q,EAAK,KAGrC+E,EAAAA,EAAAA,GAAA,KAAAwK,IAAkBvN,KAChB0O,EAAAA,GAAAA,GAAAvB,GAAAvJ,KAAKiL,IAAkBD,KAAK5O,EAAO,GACnC,eA3DO8O,GAAU,OAAAvL,EAAAA,EAAAA,GAAAhB,GAAA,oBAAVuM,CAAUtL,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,YAIVsG,GAAO,OAAAvG,EAAAA,EAAAA,GAAAd,GAAA,iBAAPqH,CAAOtG,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,YAOPuG,GAAO,OAAAxG,EAAAA,EAAAA,GAAAb,GAAA,iBAAPqH,CAAOvG,IAAAC,EAAAA,EAAAA,GAAAf,GAAA,KAAAc,EAAA,gBAQPwG,GAAW,OAAAzG,EAAAA,EAAAA,GAAAwJ,GAAA,qBAAX/C,CAAWxG,IAAAC,EAAAA,EAAAA,GAAAsJ,GAAA,KAAAvJ,EAAA,sBAUXyG,GAAiB,OAAA1G,EAAAA,EAAAA,GAAAyJ,GAAA,2BAAjB/C,CAAiBzG,IAAAC,EAAAA,EAAAA,GAAAuJ,GAAA,KAAAxJ,EAAA,cAQjBuL,GAAS,OAAAxL,EAAAA,EAAAA,GAAA0J,GAAA,mBAAT8B,CAASvL,IAAAC,EAAAA,EAAAA,GAAAwJ,GAAA,KAAAzJ,EAAA,CAwBlBE,MAAAA,GAAS,IAAAsL,EACP,OACE7Q,IAAAA,cAAC8Q,GAAwB,CACvBH,WAAYlL,KAAKkL,WACjBhF,QAASlG,KAAKkG,QACdC,QAAqB,QAAdiF,EAAEpL,KAAKmG,eAAO,IAAAiF,EAAAA,EAAI,mBACzBhF,YAAapG,KAAKoG,YAClBC,kBAAmBrG,KAAKqG,kBACxB8E,UAAWnL,KAAKmL,UAChB7E,iBAAiB3G,EAAAA,EAAAA,GAAK+J,GAAL1J,MACjB8F,eAAenG,EAAAA,EAAAA,GAAKgK,GAAL3J,OAGrB,EAqBK,SAASqL,GAAwB9O,GASN,IATO,WACvC2O,EAAU,QACVhF,EAAO,QACPC,EAAO,YACPC,EAAW,kBACXC,EAAiB,UACjB8E,EAAS,gBACT7E,EAAe,cACfR,GAC8BvJ,EAC9B,MAAM+O,GAAqBxK,EAAAA,EAAAA,UAAuC,KAChE,MAAgB,qBAAZqF,EACK+E,aAAU,EAAVA,EAAY7N,KAAKkO,IACtB,MAAM9O,EAAQ8O,EAAM9O,MAAMY,KAAKjD,GAC7BoR,GAAyBpR,EAAM+Q,KAE3BM,EAAYhP,EAAMiP,MAAMtR,GAASA,EAAKqR,YACtCE,EAAaF,GAAahP,EAAMiP,MAAMtR,GAASA,EAAKuR,aACpDC,EACJH,GAAahP,EAAMiP,MAAMtR,GAASA,EAAKwR,eACnC1E,EACJzK,EAAMC,OAAS,GAAKD,EAAMoP,OAAOzR,GAASA,EAAK8M,aAC3C4E,EAAgBrP,EAAMsP,SAAS3R,IAAI,IAAAmD,EAAAyO,EAAA,OACvC5R,EAAKqR,UAE0C,QAFjClO,EACgC,QADhCyO,EACR5R,EAA2B0R,qBAAa,IAAAE,EAAAA,EACzC5R,EAA8B6R,oBAAY,IAAA1O,EAAAA,EAC1CnD,EAA2B4N,IAC5B,EAAE,IAER,MAAO,IACFuD,EACHrK,KAAM,QACNzE,QACAgP,YACAE,aACAC,eACA1E,aACA4E,gBACD,IAEkB,qBAAZ3F,EAC0C,QAAnD+F,EAwBN,SACEhB,GAEA,OAAOA,aAAU,EAAVA,EACH7N,KAAekO,IACf,MAAM9O,EAAQ8O,EAAM9O,MACjBY,KAAKjD,GAAS+R,GAA+B/R,KAC7C4G,OAAOqC,SACV,MAAO,IAAKkI,EAAO9O,QAAO,IAE3BuE,OAAOqC,QACZ,CAnCa+I,CAAiClB,UAAW,IAAAgB,OAAA,EAA5CA,EAA8ClL,OAAOqC,SAErD6H,EAHkC,IAAAgB,CAI3C,GACC,CAAC/F,EAAS+E,EAAYC,IAEzB,OACE5Q,IAAAA,cAAA,MAAIU,UAAU,eACXqQ,aAAkB,EAAlBA,EAAoBjO,KAAKkO,GACxBhR,IAAAA,cAACwL,GAAS,CACR7K,IAAKqQ,EAAMhE,WACXtB,KAAMsF,EACNrF,QAASA,EACTC,QAASA,EACTC,YAAaA,EACbC,kBAAmBA,EACnBC,gBAAiBA,EACjBR,cAAeA,MAKzB,CAeA,SAASqG,GACP/R,GAEA,GAAkB,QAAdA,EAAK8G,KAAgB,CACvB,MAAMmL,EAAWjS,EAAKqC,MACnBY,KAAKiP,GAAYH,GAA+BG,KAChDtL,OAAOqC,SACV,MAAO,IAAKjJ,EAAMqC,MAAO4P,EAC3B,CACA,MAAkB,QAAdjS,EAAK8G,KACA9G,EAAK4N,KAAOuE,GAAAA,KAAKC,cAAcpS,EAAK4N,KAAO,KAAO5N,EAEpDA,EAAK4N,KAAOuE,GAAAA,KAAKE,cAAcrS,EAAK4N,KAAO,KAAO5N,CAC3D,CAEA,SAASoR,GACPpR,EACA+Q,GAEA,GAAkB,QAAd/Q,EAAK8G,KAAgB,CACvB,MAAMmL,EAAWjS,EAAKqC,MAAMY,KAAKiP,GAC/Bd,GAAyBc,EAASnB,KAE9BM,EAAYY,EAASX,MAAMY,GAAYA,EAAQb,YAC/CE,EAAaU,EAASX,MAAMY,GAAYA,EAAQX,aAChDC,EACJH,GAAaY,EAASX,MAAMY,GAAYA,EAAQV,eAC5C1E,EACJmF,EAAS3P,OAAS,GAAK2P,EAASR,OAAOS,GAAYA,EAAQpF,aACvD4E,EAAgBO,EAASN,SAASO,IAAO,IAAA1O,EAAA8O,EAAA,OAC7CJ,EAAQb,UAE0C,QAFjC7N,EAC2C,QAD3C8O,EACXJ,EAAyCR,qBAAa,IAAAY,EAAAA,EACvDJ,EAAiCL,oBAAY,IAAArO,EAAAA,EAC9C0O,EAAQtE,IACR,EAAE,IAER,MAAO,IACF5N,EACHqC,MAAO4P,EACPZ,YACAE,aACAC,eACA1E,aACA4E,gBAEJ,CAEA,GAAkB,QAAd1R,EAAK8G,KAAgB,CACvB,MAAMuK,IAAcrR,EAAK4N,IACnB2D,EAAaF,IAAaN,aAAS,EAATA,EAAW7P,SAASlB,EAAK4N,MACnD4D,EAAeH,IAAcE,EACnC,MAAO,IACFvR,EACHqR,YACAE,aACAC,eACA1E,WAAYyE,EAEhB,CAEA,MAAM,UAAEF,EAAS,aAAEQ,GAarB,SAAyBjE,GACvB,IACIiE,EADAR,IAAczD,UAAAA,EAAK2E,WAAW1D,KAElC,GAAIwC,EAAW,CACb,MAAMmB,EAAS,IAAI7E,IAAIC,EAAM3H,SAAS4H,QAEpC2E,EAAO3E,SAAW5H,SAAS4H,QAC3B2E,EAAOjM,SAASgM,WAAW1D,IAE3BgD,EAAeW,EAAOjM,SAASkM,UAAU5D,IAEzCwC,GAAY,EACZQ,OAAea,EAEnB,CACA,MAAO,CAAErB,YAAWQ,eACtB,CA7BsCc,CAAgB3S,EAAK4N,KACnD2D,EAAaF,IAAaN,aAAS,EAATA,EAAW7P,SAAS2Q,IAC9CL,EAAeH,IAAcE,EACnC,MAAO,IACFvR,EACHqR,YACAE,aACAC,eACA1E,WAAYyE,EACZM,eAEJ,CAzKCe,GAAApD,KAAAtL,GAAAwL,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAK,GAAAkC,GAAAtC,GAAAC,GAAAK,GAAAiC,GAAArC,IAAAjI,GAAAsG,GAAArG,MAAAC,EAAAA,EAAAA,GAAAkK,GAAA,CAjFAtT,GAAc,uBAAwB,CACrCqJ,WAAY,CAACI,GAAAA,MACb,EAGCxJ,GAAS,CAAEyJ,WAAW,IAAQ,iBAI9BzJ,GAAS,CAAEyJ,WAAW,IAAQ,cAO9BzJ,KAAU,cAQVA,KAAU,kBAUVA,KAAU,wBAQVA,GAAS,CAAEyJ,WAAW,IAAQ,gBAO9BxH,GAAM,CAAEsF,KAAM,oBAAoB,uBAAAiM,IAAAxN,EAAAA,EAAAA,GAAA2J,GAAA6D,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAAyJ,GAAA6D,EAAAvN,IAAA,CAOlChE,GAAM,CAAEsF,KAAM,iBAAiB,qBAAAiM,IAAAxN,EAAAA,EAAAA,GAAA8J,GAAA0D,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAA4J,GAAA0D,EAAAvN,KAAA,GAAAwN,GAAAzD,GAAA0D,KAAAC,EAAAA,GAAAA,GAAAF,KArDJpO,EAAAA,mBAAgB6D,K,qEClBvC,MAAM8C,IAAc7L,EAAAA,EAAAA,WAAyC,WACvD8L,IAAc9L,EAAAA,EAAAA,WAA2B,YAE9CJ,cAAaA,KAAKE,EAAAA,EAAAA,oBAE1B,IAAA2T,GAKA,MAAAC,WAGkCxO,EAAAA,iBAChCc,MAAAA,GACE,OAAOvF,IAAAA,cAACkT,GAA4B,KACtC,EACDC,GAAAF,IAAAD,GAAA1K,KAAAC,EAAAA,EAAAA,GAAA4K,GAAA,CAPAhU,GAAc,4BAA6B,CAC1CqJ,WAAY,CAACI,GAAAA,MACb,YACgCnE,EAAAA,kBAAgB4D,EAAAC,KAYlD,MAAM8K,GAAU,IAAIC,GAAAA,EAAYC,cAEzB,SAASJ,KACd,MAAOK,EAAaC,IAAmB3P,EAAAA,EAAAA,WAAkB,IAClD4P,EAAYC,IAAiB7P,EAAAA,EAAAA,UAAgC,MAC9D8P,GAAaC,EAAAA,GAAAA,iBACbC,GAAsBtN,EAAAA,EAAAA,UAAQ,IAE3B,WADUyL,GAAAA,KAAK8B,UACKC,OAC1B,IAEGC,GAAkBzN,EAAAA,EAAAA,UAAQ,KAAM,IAAA0N,EACpC,MAAMC,EAAWlC,GAAAA,KAAK8B,UAChBK,EAAgC,QAAnBF,EAAGC,EAASE,eAAO,IAAAH,OAAA,EAAhBA,EAAkBE,cACxC,IAAIE,EACJ,OAAId,EACK,KAGPY,GACAA,GAAiB,IACjBD,EAASI,UACPD,EAAkBjB,GAAQmB,QAAQV,IACnCQ,GAAmBG,OAASC,OAASJ,GAE/BF,EAEF,IAAI,GACV,CAACN,EAAqBN,KAEzBzM,EAAAA,EAAAA,YAAU,KACR,MAAM4N,EAAqB3Q,IACzB,MAAM4Q,EAAc5Q,EAA0ClC,OAC3D8S,YACG,SAAEC,EAAQ,aAAEC,IAAiBnK,EAAAA,EAAAA,cAAaoK,kBAI5CnB,SAAAA,EAAYoB,aAAeH,EAAW,GAAKD,EAAaC,GAC1DlB,EAAc,CACZiB,WAAYK,GAAoBL,GAChCM,YAAaD,GAAoBJ,GACjCM,WAAYL,GAEhB,EAGF,OADAtT,OAAO4T,iBAAiB,eAAgBT,GACjC,KACLnT,OAAO6T,oBAAoB,eAAgBV,EAAkB,CAC9D,GACA,CAACf,IAEJ,MAAM0B,GAA4B9I,EAAAA,EAAAA,cAAY,KAE5C6G,GAAQkC,QAAQzB,EAAqBW,OAASC,OAAS,OACvDjB,GAAgB,EAAK,GACpB,CAACK,IAEJ,OACE7T,IAAAA,cAAAA,IAAAA,SAAA,KACGyT,GACCzT,IAAAA,cAACuV,GAAK,CACJ1U,KAAM,wBAAwB4S,EAAWkB,wBAAwBlB,EAAWwB,qCAC5EtO,KAAK,UACL6O,KACE/B,EAAWyB,WACP,CACEO,MAAO,SACPhI,IAAKgG,EAAWyB,iBAElB3C,IAIW,OAApByB,GACChU,IAAAA,cAACuV,GAAK,CACJ1U,KAAM,kBAAkBmT,MACxBrN,KAAK,OACL+O,UAAQ,EACRC,QAASN,IAKnB,CAaA,SAASE,GAAKvT,GAAsD,IAArD,KAAEnB,EAAI,KAAE8F,EAAI,SAAE+O,EAAQ,KAAEF,EAAI,QAAEG,GAAqB3T,EAChE,OACEhC,IAAAA,cAAA,OAAKU,UAAW,SAASiG,KACvB3G,IAAAA,cAAA,QAAMU,UAAU,QAAQG,GACvB2U,GACCxV,IAAAA,cAACqL,GAAW,CAAC3K,UAAU,OAAOkV,KAAMJ,EAAK/H,IAAKoI,OAAO,UAClDL,EAAKC,OAGTC,GACC1V,IAAAA,cAACoL,GAAW,CACVyB,IAAI,OACJC,KAAK,QACLpM,UAAU,OACVmK,KAAK,SACL/G,QAAS6R,IAKnB,CAEA,SAASX,GAAoBc,GAC3B,OAAOC,KAAKC,MAAoB,IAAdF,GAAqB,GACzC,C,0DCvJA,MAAQ3W,cAAa,GAAEC,SAAQA,KAAKC,EAAAA,EAAAA,oBAEpC,IAAA4W,GAAA,IAAA7R,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAKA,MAAA6R,WAGqCzR,EAAAA,iBAAiBC,WAAAA,GAAA,SAAAC,YACpDC,EAAAA,EAAAA,GAAA,KAAAR,GAAA+R,GAAA,QAQAvR,EAAAA,EAAAA,GAAA,KAAAN,IAAA8R,GAAA,MAAAC,GAAA,QAAAC,GAAA,kBAFSC,GAAQ,OAAAnR,EAAAA,EAAAA,GAAAhB,GAAA,kBAARmS,CAAQlR,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,WAMRwQ,GAAM,OAAAzQ,EAAAA,EAAAA,GAAAd,GAAA,gBAANuR,CAAMxQ,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,CAEfE,MAAAA,GACE,OACEvF,IAAAA,cAACwW,GAA+B,CAC9BD,SAAU9Q,KAAK8Q,SACfV,OAAQpQ,KAAKoQ,QAGnB,EAQK,SAASW,GAA+BxU,GAGN,IAHO,SAC9CuU,EAAQ,OACRV,GACqC7T,EACrC,MAAM,UACJyU,EAAS,iBACTC,EAAgB,gBAChBC,EAAe,WACfC,EAAU,UACVC,IACEC,EAAAA,GAAAA,KAAiB,GAErB,OACE9W,IAAAA,cAAC+W,GAAAA,EAAkBC,SAAQ,CACzBC,MAAO,CACLC,WAAW,EACXR,mBACAH,WACAI,kBACAC,aACAC,cAGF7W,IAAAA,cAAA,MAAIU,UAAU,qBACX+V,EAAU3T,KAAI,CAACjD,EAAMS,IACpBN,IAAAA,cAACmX,GAAAA,EAAe,CACdxW,IAAKL,EACLuV,OAAQA,EACRhW,KAAMA,OAMlB,CAzCCuX,GAAAlB,KAAAnS,GAAAoS,GAAAC,GAAAC,GAAAC,IAAAjO,GAAA4N,GAAA3N,MAAAC,EAAAA,EAAAA,GAAA6O,GAAA,CA1BAjY,GAAc,4BAA6B,CAC1CqJ,WAAY,CAACI,GAAAA,MACb,EAKCxJ,GAAS,CACRuH,KAAMmC,UACN,eAMD1J,KAAU,sBAZwBqF,EAAAA,mBAAgB6D,K,6JCVjD+O,GAAU,CAAC,EAEfA,GAAQC,kBAAoB,KAC5BD,GAAQE,cAAgB,KACxBF,GAAQG,OAAS,UAAc,KAAM,QACrCH,GAAQI,OAAS,KACjBJ,GAAQK,mBAAqB,KAEhB,KAAI,KAASL,IAKJ,MAAW,KAAQnY,QAAS,KAAQA,OCxBnD,IAAKyY,GAAC,SAADA,GAAC,OAADA,EAAC,wCAADA,CAAC,MAIb,MAQa3O,GAAK,8B,qBCElBD,EAAAA,EAAAA,qBAAoBC,GDAG,CAAE4O,GAVN,CACjBC,mBAAoB,sCASOC,GANV,CACjBD,mBAAoB,cCOf,MAAMzM,IAAc7L,EAAAA,EAAAA,WAAyC,YAE5DJ,cAAa,GAAEC,SAAQA,KAAKC,EAAAA,EAAAA,oBAEpC,IAAA0Y,GAAA,IAAA3T,GAAA,IAAAC,QAKA,MAAA2T,WAGgCvT,EAAAA,iBAAiBC,WAAAA,GAAA,SAAAC,YAC/CC,EAAAA,EAAAA,GAAA,KAAAR,GAAA+R,GAAA,OAAAC,GAAA,kBAMSG,GAAQ,OAAAnR,EAAAA,EAAAA,GAAAhB,GAAA,kBAARmS,CAAQlR,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,CAEjBE,MAAAA,GACE,OAAOvF,IAAAA,cAACiY,GAA0B,CAAC1B,SAAU9Q,KAAK8Q,UACpD,EAOK,SAAS0B,GAA0BjW,GAEN,IAFO,SACzCuU,GACgCvU,EAChC,MAAMkW,GAAiBrS,EAAAA,EAAAA,QAAyB,MAC1CsS,GAAuB5L,EAAAA,EAAAA,cAAY,KAAM,IAAA6L,EACvB,QAAtBA,EAAAF,EAAejR,eAAO,IAAAmR,GAAtBA,EAAwBC,OAAO,GAC9B,KAEIvX,EAAQkJ,IAAanG,EAAAA,EAAAA,WAAS,IAE/B,QACJyU,EAAO,EACPC,EAAC,KACDC,EAAI,WACJ7H,EAAU,iBACV+F,EAAgB,gBAChBC,EAAe,WACfC,EAAU,UACVC,IACEC,EAAAA,GAAAA,IAAiBhW,GACfoW,IAAcqB,GACd,EAAEE,IAAMC,EAAAA,EAAAA,gBAAe1P,IAEvB2P,GAAepM,EAAAA,EAAAA,cAClBxI,IACCyU,EAAKzU,EAAE8R,OAAOoB,MAAM,GAEtB,CAACuB,IAGGI,GAAcrM,EAAAA,EAAAA,cAAY,KAC9BiM,EAAK,GAAG,GACP,CAACA,IAEJ,OACExY,IAAAA,cAAC+W,GAAAA,EAAkBC,SAAQ,CACzBC,MAAO,CACLC,YACAR,mBACAH,WACAI,kBACAC,aACAC,cAGF7W,IAAAA,cAAA,OAAKU,UAAU,aACbV,IAAAA,cAAA,OAAKU,UAAU,aAAaoD,QAASqU,GACnCnY,IAAAA,cAACoL,GAAW,CACVyB,IAAI,KACJC,KAAK,mBACLpM,UAAU,gBAEZV,IAAAA,cAAA,SACEgI,IAAKkQ,EACLW,YAAaJ,EAAEd,GAAEE,oBACjBZ,MAAOsB,EACPO,SAAUH,EACVjY,UAAU,eACVqY,QAASA,IAAM/O,GAAU,GACzBgP,OAAQA,IAAMhP,GAAU,KAE1BhK,IAAAA,cAACoL,GAAW,CACVyB,IAAI,OACJoM,MAAM,SACNnM,KAAK,eACLpM,UAAWoK,IAAW,eAAgB,CAAEoM,cACxCpT,QAAS8U,EACTM,YAAcnV,GAAMA,EAAEqG,oBAG1BpK,IAAAA,cAAA,OACEU,UAAWoK,IAAW,WAAY,CAAE,kBAAmBhK,IACvDoY,YAAcnV,GAAMA,EAAEqG,kBAEtBpK,IAAAA,cAAA,OAAKU,UAAWoK,IAAW,mBAAoB,CAAEwN,aAC/CtY,IAAAA,cAACmZ,GAAO,CAACb,QAASA,IAClBtY,IAAAA,cAAA,MAAIU,UAAU,eACXiQ,EAAW7N,KAAKkO,GACfhR,IAAAA,cAACwL,GAAAA,EAAS,CACR7K,IAAKqQ,EAAM7I,KACXA,KAAM6I,EAAM7I,KACZjG,MAAO8O,EAAM9O,cAS/B,CAEA,SAASiX,GAAOnW,GAAoC,IAAnC,QAAEsV,GAA+BtV,EAChD,OACEsV,GACEtY,IAAAA,cAAA,OAAKU,UAAU,WACbV,IAAAA,cAACoL,GAAW,CAACyB,IAAI,KAAKC,KAAK,UAAUsM,UAAQ,IAIrD,CA1GCC,GAAArB,KAAAjU,GAAAoS,GAAAC,IAAA/N,GAAA0P,GAAAzP,MAAAC,EAAAA,EAAAA,GAAA8Q,GAAA,CAfAla,GAAc,sBAAuB,CACpCqJ,WAAY,CAACI,GAAAA,MACb,EAKCxJ,GAAS,CACRuH,KAAMmC,UACN,wBAN4BrE,EAAAA,mBAAgB6D,K,+BCpBhD,MAAM+C,IAAc9L,EAAAA,EAAAA,WAA2B,YAEvCJ,cAAa,GAAEC,SAAQA,KAAKC,EAAAA,EAAAA,oBAEpC,IAAAia,GAAA,IAAAlV,GAAA,IAAAC,QAKA,MAAAkV,WAGsC9U,EAAAA,iBAAiBC,WAAAA,GAAA,SAAAC,YACrDC,EAAAA,EAAAA,GAAA,KAAAR,GAAAiS,GAAA,OAAAC,GAAA,gBAMST,GAAM,OAAAzQ,EAAAA,EAAAA,GAAAhB,GAAA,gBAANyR,CAAMxQ,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,CAEfE,MAAAA,GACE,OAAOvF,IAAAA,cAACwZ,GAAgC,CAAC3D,OAAQpQ,KAAKoQ,QACxD,EAMK,SAAS2D,GAAgCxX,GAEN,IAFO,OAC/C6T,GACsC7T,EACtC,MAAM,aAAEyX,EAAY,gBAAE9C,IAAoBG,EAAAA,GAAAA,KAAiB,GAE3D,OACE9W,IAAAA,cAAA,MAAIU,UAAU,iBACX+Y,EAAa3W,KAAI,CAACjD,EAAMS,IACvBN,IAAAA,cAAA,MAAIW,IAAKL,GACPN,IAAAA,cAACqL,IAAWnL,EAAAA,EAAAA,GAAA,CACV4D,QAASA,IAAM6S,EAAgB9W,IACZ,QAAdA,EAAK8G,KACN,CACE8G,IAAK5N,EAAK4N,IACVoI,UAEF,CACED,KAAM/V,EAAK4N,IACXoI,OAAQ,WAGd7V,IAAAA,cAAA,YAAOH,EAAKsI,UAMxB,CAhCCuR,GAAAH,KAAAxV,GAAAsS,GAAAC,IAAAjO,GAAAiR,GAAAhR,MAAAC,EAAAA,EAAAA,GAAAmR,GAAA,CAfAva,GAAc,6BAA8B,CAC3CqJ,WAAY,CAACI,GAAAA,MACb,EAKCxJ,GAAS,CACRyJ,WAAW,IACX,sBANkCpE,EAAAA,mBAAgB6D,K,iDCbtD,MAAQnJ,cAAa,GAAEC,SAAQA,KAAKC,EAAAA,EAAAA,oBAAmB,IAAAsa,GAAA,IAAAvV,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAuK,GAAA,IAAAvK,QAevD,MAAAuV,WAI8BnV,EAAAA,iBAA+CC,WAAAA,GAAA,SAAAC,YAC3EC,EAAAA,EAAAA,GAAA,KAAAR,GAAAyV,GAAA,QAWAjV,EAAAA,EAAAA,GAAA,KAAAN,IAAAwV,GAAA,MAAAC,GAAA,SAUAnV,EAAAA,EAAAA,GAAA,KAAAL,IAAAyV,GAAA,MAAAC,GAAA,SASArV,EAAAA,EAAAA,GAAA,KAAAgK,IAAAsL,GAAA,MAAAC,GAAA,QAAAC,GAAA,iBArBSC,GAAO,OAAAjV,EAAAA,EAAAA,GAAAhB,GAAA,iBAAPiW,CAAOhV,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,aAUPiV,GAAQ,OAAAlV,EAAAA,EAAAA,GAAAd,GAAA,kBAARgW,CAAQjV,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,kBASRkV,GAAa,OAAAnV,EAAAA,EAAAA,GAAAb,GAAA,uBAAbgW,CAAalV,IAAAC,EAAAA,EAAAA,GAAAf,GAAA,KAAAc,EAAA,4BAMbmV,GAAuB,OAAApV,EAAAA,EAAAA,GAAAwJ,GAAA,iCAAvB4L,CAAuBnV,IAAAC,EAAAA,EAAAA,GAAAsJ,GAAA,KAAAvJ,EAAA,CAEhCE,MAAAA,GACE,OACEvF,IAAAA,cAACya,GAAwB,CACvBF,cAAe9U,KAAK8U,cACpBF,QAAS5U,KAAK4U,QACdC,SAAU7U,KAAK6U,SACfE,wBAAyB/U,KAAK+U,yBAGpC,EAGK,SAASC,GAAwBzY,GAKjB,IALkB,QACvCqY,GAAU,EAAI,SACdC,EAAQ,cACRC,GAAgB,EAAK,wBACrBC,EAA0B,CAAC,GACRxY,EAUnB,OATAhC,IAAAA,WAAgB,KACd,MAAM0a,EAAcjZ,SAASkZ,eAAe,oBACtCC,EAAoBnZ,SAASkZ,eACjC,6BAEFD,IAAgBA,EAAY9Y,MAAMiZ,UAAY,IAC9CD,IAAsBA,EAAkBhZ,MAAMiZ,UAAY,GAAG,GAC5D,IAGD7a,IAAAA,cAAA,OAAKU,UAAU,qBACbV,IAAAA,cAAA,OACEU,UAAWoK,IACT,UACa,WAAbwP,EACI,SACa,UAAbA,GAAwBD,EACtB,QACA,aAIRra,IAAAA,cAAA,OACEU,UAAU,kBACVkB,MAAO,CACLkZ,eAAgBP,EAAgB,eAAiB,mBAC9CC,IAGLxa,IAAAA,cAAA,OAAKU,UAAU,QACbV,IAAAA,cAAA,QAAMmI,KAAK,UAEbnI,IAAAA,cAAA,OAAKU,UAAU,SACbV,IAAAA,cAAA,QAAMmI,KAAK,aAMvB,CA/CC4S,GAAAnB,KAAA7V,GAAA8V,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,IAAA/R,GAAAsR,GAAArR,MAAAC,EAAAA,EAAAA,GAAAwS,GAAA,CAnDA5b,GAAc,qBAAsB,CACnCqJ,WAAY,CAACI,GAAAA,GACboS,MAAO,CAAC,4BACR,EAQC5b,GAAS,CACRuH,KAAMmC,UACN,cAUD1J,KAAU,eAOVA,GAAS,CACRuH,KAAMmC,UACN,oBAID1J,GAAS,CACRyJ,WAAW,IACX,uCAlC0BpE,EAAAA,mBAAgB6D,K,2CCP9C,MAAQnJ,cAAa,GAAEC,SAAQA,KAAKC,EAAAA,EAAAA,oBAE9B4b,IAAoB1b,EAAAA,EAAAA,WAAiC,iBACrD2b,IAAwB3b,EAAAA,EAAAA,WAC5B,sBAEI6L,IAAc7L,EAAAA,EAAAA,WAAyC,WAAW,IAAA4b,GAAA,IAAA/W,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAkBxE,MAAA+W,WAIU3W,EAAAA,iBAEVC,WAAAA,GAAA,SAAAC,YACEC,EAAAA,EAAAA,GAAA,KAAAR,GAAAiX,GAAA,QAQAzW,EAAAA,EAAAA,GAAA,KAAAN,IAAAgX,GAAA,MAAAC,GAAA,SAMA3W,EAAAA,EAAAA,GAAA,KAAAL,IAAAiX,GAAA,MAAA3W,GAAA,QAAAC,GAAA,oBARS2W,GAAU,OAAArW,EAAAA,EAAAA,GAAAhB,GAAA,oBAAVqX,CAAUpW,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,iBAMVqW,GAAY,OAAAtW,EAAAA,EAAAA,GAAAd,GAAA,sBAAZoX,CAAYrW,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,SAQZF,GAAI,OAAAC,EAAAA,EAAAA,GAAAb,GAAA,cAAJY,CAAIE,IAAAC,EAAAA,EAAAA,GAAAf,GAAA,KAAAc,EAAA,CAEbE,MAAAA,GACE,OACEvF,IAAAA,cAAC2b,GAA0B,CACzBF,WAAYhW,KAAKgW,WACjBC,aAAcjW,KAAKiW,aACnBvW,KAAMM,KAAKN,MAGjB,EAGK,SAASwW,GAA2B/b,GAA+B,IAAAgc,EAAAC,EAAAC,EACxE,MAAM,KAAE3W,GAASvF,EAEXmc,GAAYC,EAAAA,GAAAA,gBACZrI,GAAaC,EAAAA,GAAAA,iBACbqI,EAAmBtI,aAAU,EAAVA,EAAY8H,WAE/BS,EAA4BD,SAAuB,QAAPL,EAAhBK,EAAkB/Z,aAAK,IAAA0Z,OAAA,EAAvBA,EAAyB9Y,KAAKjD,IAAI,IAC/DA,EACHgB,MAAMsb,EAAAA,EAAAA,cAAatc,EAAKgB,UAEpBub,EAAkC,QAAhBP,EAAAjc,EAAM6b,kBAAU,IAAAI,GAAhBA,EAAkB1Z,OACtCvC,EAAM6b,WACNM,aAAS,EAATA,EAAWN,WAETC,EAAiC,QAArBI,EAAGlc,EAAM8b,oBAAY,IAAAI,EAAAA,EAAIG,aAAgB,EAAhBA,EAAkBP,aACvDW,EAAsBJ,aAAgB,EAAhBA,EAAkBI,oBAE9C,OACErc,IAAAA,cAACib,GAAiB,KAChBjb,IAAAA,cAAA,QAAM4C,KAAK,aAAY,KACtBsZ,aAAyB,EAAzBA,EAA2BpZ,KAAI,CAACjD,EAAMS,IAEnCN,IAAAA,cAACkb,GAAqB,CAACva,IAAKL,EAAOmN,IAAK5N,EAAKyc,IAC1Czc,EAAKiN,KACJ9M,IAAAA,cAACoL,IAAWlL,EAAAA,EAAAA,GAAA,CACVQ,UAAU,8BACVkC,KAAK,UACD/C,EAAKiN,OAGD,IAAVxM,GACEN,IAAAA,cAACoL,GAAW,CACV1K,UAAU,8BACVkC,KAAK,SACLiK,IAAI,OACJC,KAAK,OACLmM,MAAM,aAIXpZ,EAAKgB,QAIX8S,IAAe+H,EACd1b,IAAAA,cAACkb,GAAqB,CACpBzN,IACE2O,SAAAA,EAAiBja,QACjBwR,EAAW4I,WACV5I,EAAW6I,SACR7I,EAAW4I,cACXhK,KAGJ2J,SAAAA,EAA2B/Z,SAC3BnC,IAAAA,cAACoL,IAAWlL,EAAAA,EAAAA,GAAA,GACNyT,EAAW/F,SAAQ,CACvBhL,KAAK,SACLlC,UAAU,iCAGbiT,EAAW8I,YAEZ,KACHJ,GAAuBlX,EACtBnF,IAAAA,cAACkb,GAAqB,CAACzN,IAAKtI,EAAKqQ,MAC9BrQ,EAAK2H,MACJ9M,IAAAA,cAACoL,IAAWlL,EAAAA,EAAAA,GAAA,GACNiF,EAAK2H,KAAI,CACbpM,UAAU,8BACVkC,KAAK,YAGRuC,EAAKvE,OAEN,KACHwb,aAAe,EAAfA,EAAiBtZ,KAAI,CAACjD,EAAMS,IAC3BN,IAAAA,cAACkb,GAAqB,CAACva,IAAKL,EAAOmN,IAAK5N,EAAKyc,IAC1Czc,EAAKgB,QAKhB,CAtFC6b,GAAAtB,KAAArX,GAAAsX,GAAAC,GAAAC,GAAAC,GAAA3W,GAAAC,IAAAuD,GAAA8S,GAAA7S,MAAAC,EAAAA,EAAAA,GAAAmU,GAAA,CAtCAvd,GAAc,sBAAuB,CACpCqJ,WAAY,CAACI,GAAAA,MACb,EAQCxJ,GAAS,CACRyJ,WAAW,IACX,iBAMDzJ,GAAS,CAAEuH,KAAMmC,UAAU,mBAM3B1J,GAAS,CACRyJ,WAAW,IACX,oBAtBMpE,EAAAA,mBAAgB6D,K,mECpC1B,MAAQnJ,cAAa,GAAEC,SAAQA,KAAKC,EAAAA,EAAAA,oBAE9BgM,IAAc9L,EAAAA,EAAAA,WAA2B,WACzC6L,IAAc7L,EAAAA,EAAAA,WAAyC,WAAW,IAAAod,GAAA,IAAAvY,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAuK,GAAA,IAAAvK,QAAAwK,GAAA,IAAAxK,QAAAyK,GAAA,IAAAzK,QAAA0K,GAAA,IAAA1K,QAiBxE,MAAAuY,WAIUnY,EAAAA,iBAEVC,WAAAA,GAAA,SAAAC,YACEC,EAAAA,EAAAA,GAAA,KAAAR,GAAAyY,GAAA,QAMAjY,EAAAA,EAAAA,GAAA,KAAAN,IAAAwY,GAAA,MAAAC,GAAA,SAMAnY,EAAAA,EAAAA,GAAA,KAAAL,IAAAyY,GAAA,MAAA3G,GAAA,SAMAzR,EAAAA,EAAAA,GAAA,KAAAgK,IAAA0H,GAAA,MAAA2G,GAAA,SAMArY,EAAAA,EAAAA,GAAA,KAAAiK,IAAAqO,GAAA,MAAAC,GAAA,SAMAvY,EAAAA,EAAAA,GAAA,KAAAkK,IAAAsO,GAAA,MAAAC,GAAA,SAMAzY,EAAAA,EAAAA,GAAA,KAAAmK,IAAAuO,GAAA,MAAAC,GAAA,QAAAC,GAAA,aAhCS/P,GAAG,OAAArI,EAAAA,EAAAA,GAAAhB,GAAA,aAAHqJ,CAAGpI,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,SAMHuQ,GAAI,OAAAxQ,EAAAA,EAAAA,GAAAd,GAAA,cAAJsR,CAAIvQ,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,WAMJwQ,GAAM,OAAAzQ,EAAAA,EAAAA,GAAAb,GAAA,gBAANsR,CAAMxQ,IAAAC,EAAAA,EAAAA,GAAAf,GAAA,KAAAc,EAAA,SAMNyH,GAAI,OAAA1H,EAAAA,EAAAA,GAAAwJ,GAAA,cAAJ9B,CAAIzH,IAAAC,EAAAA,EAAAA,GAAAsJ,GAAA,KAAAvJ,EAAA,aAMJoY,GAAQ,OAAArY,EAAAA,EAAAA,GAAAyJ,GAAA,kBAAR4O,CAAQpY,IAAAC,EAAAA,EAAAA,GAAAuJ,GAAA,KAAAxJ,EAAA,cAMRqY,GAAS,OAAAtY,EAAAA,EAAAA,GAAA0J,GAAA,mBAAT4O,CAASrY,IAAAC,EAAAA,EAAAA,GAAAwJ,GAAA,KAAAzJ,EAAA,kBAMTsY,GAAa,OAAAvY,EAAAA,EAAAA,GAAA2J,GAAA,uBAAb4O,CAAatY,IAAAC,EAAAA,EAAAA,GAAAyJ,GAAA,KAAA1J,EAAA,CAEtBE,MAAAA,GACE,OACEvF,IAAAA,cAAC4d,GAA0B,CACzBnQ,IAAKhI,KAAKgI,IACVmI,KAAMnQ,KAAKmQ,KACXC,OAAQpQ,KAAKoQ,OACb/I,KAAMrH,KAAKqH,KACX2Q,SAAUhY,KAAKgY,UAGrB,EAGK,SAASG,GAA2Bhe,GACzC,MAAM,IAAE6N,EAAG,KAAEmI,EAAI,OAAEC,EAAM,KAAE/I,EAAI,SAAE2Q,GAAa7d,EAE9C,OACEI,IAAAA,cAACqL,GAAW,CAAC1E,KAAK,QAAQ8G,IAAKA,EAAKmI,KAAMA,EAAMC,OAAQA,GACtD7V,IAAAA,cAAA,OAAKU,UAAW,aACdV,IAAAA,cAAA,QAAMU,UAAU,4BACdV,IAAAA,cAACoL,IAAWlL,EAAAA,EAAAA,GAAA,GACN4M,EAAI,CACRpM,UAAU,kBACLoM,GAAQ,WAAYA,EACrB,CAAE+Q,SAAU,CAAEpX,OAAQgX,EAAW,qBAAkBlL,IACnD,CAAC,KAGTvS,IAAAA,cAAA,QAAMU,UAAU,kBACdV,IAAAA,cAAA,eAKV,CAvBC8d,GAAAlB,KAAA7Y,GAAA8Y,GAAAC,GAAAC,GAAAC,GAAA3G,GAAAC,GAAA2G,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,IAAAnV,GAAAsU,GAAArU,MAAAC,EAAAA,EAAAA,GAAAuV,GAAA,CA5DA3e,GAAc,uBAAwB,CACrCqJ,WAAY,CAACI,GAAAA,MACb,EAQCxJ,GAAS,CAAEyJ,WAAW,IAAQ,UAM9BzJ,KAAU,WAMVA,KAAU,aAMVA,GAAS,CAAEyJ,WAAW,IAAQ,WAM9BzJ,GAAS,CAAEuH,KAAMmC,UAAU,eAM3B1J,GAAS,CAAEuH,KAAMmC,UAAU,gBAM3B1J,GAAS,CAAEuH,KAAMmC,UAAU,6BA1CpBrE,EAAAA,mBAAgB6D,K,eCH1B,MAAMyV,GAA4B,IAAIC,IAAI,CACxC,uBACA,wBACA,4BAMK,SAASC,GAA4BN,GAC1C,MAAMO,GAAUrY,EAAAA,EAAAA,QAAwB,MAElCsY,GAAmC5R,EAAAA,EAAAA,cAAY,KAAM,IAAA6R,EAC1C,QAAfA,EAAAF,EAAQjX,eAAO,IAAAmX,GAAfA,EAAiBC,mBAAmBC,SAASC,IAPtBC,QAQCD,EAP1BR,GAA0BjL,IAAI0L,EAAQC,WAQ/BF,EAAYZ,cAAgBA,EAC/B,GACA,GACD,CAACA,IAkBJ,OAhBA7W,EAAAA,EAAAA,YAAU,KACRqX,GAAkC,GACjC,CAACR,EAAeQ,KAEnBrX,EAAAA,EAAAA,YAAU,KACR,MAAM4X,EAAWR,EAAQjX,QACnB0X,EAAmBA,KACvBR,GAAkC,EAIpC,OAFAO,SAAAA,EAAUvJ,iBAAiB,aAAcwJ,GAElC,KACLD,SAAAA,EAAUtJ,oBAAoB,aAAcuJ,EAAiB,CAC9D,GACA,CAACR,IAEG,CAACD,EACV,CAEO,MAAMU,GAAyB,yBACzBC,GAAwB,wBACxBC,GAAwB,wBAE9B,IAAKC,GAAa,SAAbA,GAAa,OAAbA,EAAa,sBAAbA,EAAa,kBAAbA,EAAa,oBAAbA,CAAa,MAMlB,MAAMC,GACXC,UAASC,EAAAA,EAAAA,qBAAoB,mBAAoBzd,SAASC,MAAO,KAAO,IAC7Dyd,GACXF,UACEC,EAAAA,EAAAA,qBAAoB,6BAA8Bzd,SAASC,MAC3D,KACG,GAQD0d,IAAqBC,EAAAA,EAAAA,eAAoC,CAC7DzY,aAAc,GACd0Y,WAAY,GACZC,YAAa,KAGTC,IAAqBjgB,EAAAA,EAAAA,WACzB,mBAEIkgB,IAAyBlgB,EAAAA,EAAAA,WAG7B,wBACImgB,IAA0BngB,EAAAA,EAAAA,WAG9B,yBACIogB,IAA4BpgB,EAAAA,EAAAA,WAGhC,2BAEF,SAASqgB,GACPhgB,GAEA,MAAM,GAAE0c,EAAE,KAAE1G,EAAI,OAAEC,EAAM,KAAE/I,EAAI,KAAEjM,EAAI,GAAE7B,EAAE,UAAE0e,GAAc9d,GAClD,aAAEgH,IAAiBiZ,EAAAA,EAAAA,YAAWT,IAEpC,OACEpf,IAAAA,cAACyf,GAAsB,CACrBhS,IAAK6O,EACL1G,KAAMA,EACNC,OAAQA,EACR/I,KAAMA,EACN4Q,UAAWA,EACXD,SAAU7W,EAAa7F,SAAS/B,IAE/B6B,EAGP,CAEA,SAAS2K,GACP5L,GAEA,MAAM,MAAEgB,EAAK,MAAEsB,EAAK,GAAElD,EAAE,IAAE8gB,EAAG,UAAEpC,GAAc9d,GACvC,YAAE2f,IAAgBM,EAAAA,EAAAA,YAAWT,IAC7BW,EAAa/gB,GAAMugB,EAAYxe,SAAS/B,GAE9C,OAAIkD,aAAK,EAALA,EAAOC,QAAS,EAEhBnC,IAAAA,cAAC0f,GAAuB,CAACjC,WAAYsC,EAAYC,aAAcF,GAC7D9f,IAAAA,cAAA,QAAM4C,KAAK,SAAShC,GACnBhB,EAAMsC,MAAMY,KAAKjD,GAEdG,IAAAA,cAACiN,IAAQ/M,EAAAA,EAAAA,GAAA,CACPS,IAAKd,EAAKc,KACNd,EAAI,CACRb,GAAIa,EAAKc,IACTmf,KAAK,EACLpC,UAAWA,QAOhB,IACT,CAEA,SAASuC,GAAYrgB,GACnB,MAAM,MAAEgB,EAAK,KAAEkM,EAAI,MAAE5K,EAAK,GAAElD,GAAOY,GAC7B,WAAE0f,EAAU,YAAEC,IAAgBM,EAAAA,EAAAA,YAAWT,IACzCW,EAAa/gB,GAAMugB,EAAYxe,SAAS/B,GAE9C,OAAIkD,aAAK,EAALA,EAAOC,QAAS,EAEhBnC,IAAAA,cAAC2f,GAAyB,CACxB7S,KAAMA,EACNoT,WAAYZ,EAAWve,SAAS/B,GAChCye,WAAYsC,GAEZ/f,IAAAA,cAAA,QAAM4C,KAAK,SAAShC,GACnBhB,EAAMsC,MAAMY,KAAKjD,GAEdG,IAAAA,cAACiN,IAAQ/M,EAAAA,EAAAA,GAAA,CACPS,IAAKd,EAAKc,KACNd,EAAI,CACRb,GAAIa,EAAKc,IACTmf,KAAK,EACLpC,WAAW,QAOhB,IACT,CAEA,SAASzQ,GACPrN,GAEA,MAAmB,YAAfA,EAAM+G,KACD3G,IAAAA,cAACigB,GAAgBrgB,GACA,UAAfA,EAAM+G,KACR3G,IAAAA,cAACwL,GAAc5L,GAEfI,IAAAA,cAAC4f,GAAoBhgB,EAEhC,CAEO,SAASugB,GAAYvgB,GAMzB,IAAA4G,EACD,MAAM,KAAErB,EAAI,cAAEib,EAAa,aAAExZ,EAAY,WAAE0Y,EAAU,YAAEC,GAAgB3f,EAEvE,OACEI,IAAAA,cAACof,GAAmBpI,SAAQ,CAC1BC,MAAO,CACLrQ,aAAcA,GAAgB,GAC9B0Y,WAAYA,GAAc,GAC1BC,YAAaA,GAAe,KAG9Bvf,IAAAA,cAACwf,GAAkB,CACjB7B,cAAeyC,IAAkBrB,GAAcsB,WAE9Clb,SAAe,QAAXqB,EAAJrB,EAAMmB,iBAAS,IAAAE,OAAA,EAAfA,EAAiB1D,KAAKjD,GACdG,IAAAA,cAACiN,IAAQ/M,EAAAA,EAAAA,GAAA,CAACS,IAAKd,EAAKc,KAASd,EAAI,CAAEb,GAAIa,EAAKc,IAAKmf,KAAK,QAKvE,C,sCCjOA,MAAQ3gB,cAAa,GAAEC,SAAQA,KAAKC,EAAAA,EAAAA,oBAAmB,IAAAihB,GAAA,IAAAlc,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAuK,GAAA,IAAAvK,QAAAkc,GAAA,IAAAlc,QAevD,MAAAmc,WAIU/b,EAAAA,iBAEVC,WAAAA,GAAA,SAAAC,YACEC,EAAAA,EAAAA,GAAA,KAAAR,GAAAqc,GAAA,QAMA7b,EAAAA,EAAAA,GAAA,KAAAN,IAAAoc,GAAA,MAAAC,GAAA,SAMA/b,EAAAA,EAAAA,GAAA,KAAAL,IAAAqc,GAAA,MAAAzD,GAAA,SAMAvY,EAAAA,EAAAA,GAAA,KAAAgK,IAAAwO,GAAA,MAAAG,GAAA,SAMA3Y,EAAAA,EAAAA,GAAA,KAAA2b,IAAoB/C,GAAA,MAAI0C,IACtBza,KAAKya,UAAYA,CAAS,GAC1B,gBAtBOF,GAAW,OAAA5a,EAAAA,EAAAA,GAAAhB,GAAA,qBAAX4b,CAAW3a,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,cAMX6a,GAAS,OAAA9a,EAAAA,EAAAA,GAAAd,GAAA,mBAAT4b,CAAS7a,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,aAMToY,GAAQ,OAAArY,EAAAA,EAAAA,GAAAb,GAAA,kBAARkZ,CAAQpY,IAAAC,EAAAA,EAAAA,GAAAf,GAAA,KAAAc,EAAA,kBAMRsY,GAAa,OAAAvY,EAAAA,EAAAA,GAAAwJ,GAAA,uBAAb+O,CAAatY,IAAAC,EAAAA,EAAAA,GAAAsJ,GAAA,KAAAvJ,EAAA,CAMtBE,MAAAA,GACE,OACEvF,IAAAA,cAAC6gB,GAA2B,CAC1Bb,YAAava,KAAKua,YAClBvC,SAAUhY,KAAKgY,SACfyC,UAAWza,KAAKya,UAChBvC,cAAelY,KAAKkY,cACpBmD,kBAAkB1b,EAAAA,EAAAA,GAAKmb,GAAL9a,OAGxB,EAOK,SAASob,GACdjhB,GAEA,MAAM,YACJogB,GAAc,EAAK,UACnBE,EAAS,cACTvC,EAAa,iBACbmD,GACElhB,GAEGse,GAAWD,GAA4BN,GAExCoD,GAAWlb,EAAAA,EAAAA,QAAuB,MAElCmb,GAAczU,EAAAA,EAAAA,cAAY,MAC7BoR,IAAiBmD,SAAAA,GAAoBZ,GAAU,GAC/C,CAACvC,EAAemD,EAAkBZ,IAWrC,OATApZ,EAAAA,EAAAA,YAAU,KACR,MAAMma,EAAYF,EAAS9Z,QAG3B,OAFAga,SAAAA,EAAW9L,iBAAiB,QAAS6L,GAE9B,KACLC,SAAAA,EAAW7L,oBAAoB,QAAS4L,EAAY,CACrD,GACA,CAACA,IAGFhhB,IAAAA,cAAA,OACEU,UAAWoK,IAAW,aAAc,CAClC,yBAAwB6S,GAAuBuC,KAGjDlgB,IAAAA,cAAA,OAAKU,UAAU,mBAAmBsH,IAAK+Y,GACrC/gB,IAAAA,cAAA,QAAMU,UAAU,mCACdV,IAAAA,cAAA,QAAMU,UAAU,2BAElBV,IAAAA,cAAA,OAAKU,UAAU,yBACbV,IAAAA,cAAA,QAAMmI,KAAK,WAEZ6X,GAAehgB,IAAAA,cAAA,QAAMU,UAAU,sBAElCV,IAAAA,cAAA,OAAKU,UAAU,mBACbV,IAAAA,cAAA,OAAKU,UAAU,yBACbV,IAAAA,cAAA,QAAMgI,IAAKkW,MAKrB,CAvDCgD,GAAAV,KAAAzc,GAAA0c,GAAAC,GAAAC,GAAAC,GAAAzD,GAAAC,GAAAG,GAAAC,IAAAnV,GAAAiY,GAAAhY,MAAAC,EAAAA,EAAAA,GAAA2Y,GAAA,CA9CA/hB,GAAc,wBAAyB,CACtCqJ,WAAY,CAACI,GAAAA,MACb,EAQCxJ,GAAS,CAAEuH,KAAMmC,UAAU,kBAM3B1J,GAAS,CAAEuH,KAAMmC,UAAU,gBAM3B1J,GAAS,CAAEuH,KAAMmC,UAAU,eAM3B1J,GAAS,CAAEuH,KAAMmC,UAAU,6BAxBpBrE,EAAAA,mBAAgB6D,K,iDCf1B,MAAQnJ,cAAa,GAAEC,SAAQA,KAAKC,EAAAA,EAAAA,oBAE9B+L,IAAc7L,EAAAA,EAAAA,WAAyC,WAAW,IAAA4hB,GAAA,IAAA/c,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAuK,GAAA,IAAAvK,QAAAkc,GAAA,IAAAlc,QAexE,MAAA+c,WAIU3c,EAAAA,iBAEVC,WAAAA,GAAA,SAAAC,YACEC,EAAAA,EAAAA,GAAA,KAAAR,GAAA6Y,GAAA,QAMArY,EAAAA,EAAAA,GAAA,KAAAN,IAAA4Y,GAAA,MAAAC,GAAA,SAMAvY,EAAAA,EAAAA,GAAA,KAAAL,IAAA6Y,GAAA,MAAAuD,GAAA,SAMA/b,EAAAA,EAAAA,GAAA,KAAAgK,IAAAgS,GAAA,MAAArD,GAAA,SAMA3Y,EAAAA,EAAAA,GAAA,KAAA2b,IAAoB/C,GAAA,MAAI0C,IACtBza,KAAKya,UAAYA,CAAS,GAC1B,SAtBOpT,GAAI,OAAA1H,EAAAA,EAAAA,GAAAhB,GAAA,cAAJ0I,CAAIzH,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,aAMJoY,GAAQ,OAAArY,EAAAA,EAAAA,GAAAd,GAAA,kBAARmZ,CAAQpY,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,cAMR6a,GAAS,OAAA9a,EAAAA,EAAAA,GAAAb,GAAA,mBAAT2b,CAAS7a,IAAAC,EAAAA,EAAAA,GAAAf,GAAA,KAAAc,EAAA,kBAMTsY,GAAa,OAAAvY,EAAAA,EAAAA,GAAAwJ,GAAA,uBAAb+O,CAAatY,IAAAC,EAAAA,EAAAA,GAAAsJ,GAAA,KAAAvJ,EAAA,CAMtBE,MAAAA,GACE,OACEvF,IAAAA,cAACqhB,GAA6B,CAC5BvU,KAAMrH,KAAKqH,KACX2Q,SAAUhY,KAAKgY,SACfyC,UAAWza,KAAKya,UAChBvC,cAAelY,KAAKkY,cACpBmD,kBAAkB1b,EAAAA,EAAAA,GAAKmb,GAAL9a,OAGxB,EAOK,SAAS4b,GACdzhB,GAEA,MAAM,KAAEkN,EAAI,UAAEoT,EAAS,cAAEvC,EAAa,iBAAEmD,GAAqBlhB,GAEtDse,GAAWD,GAA4BN,GAExCoD,GAAWlb,EAAAA,EAAAA,QAAuB,MAElCmb,GAAczU,EAAAA,EAAAA,cAAY,MAC7BoR,IAAiBmD,SAAAA,GAAoBZ,GAAU,GAC/C,CAACvC,EAAemD,EAAkBZ,IAWrC,OATApZ,EAAAA,EAAAA,YAAU,KACR,MAAMma,EAAYF,EAAS9Z,QAG3B,OAFAga,SAAAA,EAAW9L,iBAAiB,QAAS6L,GAE9B,KACLC,SAAAA,EAAW7L,oBAAoB,QAAS4L,EAAY,CACrD,GACA,CAACA,IAGFhhB,IAAAA,cAAA,OACEU,UAAWoK,IAAW,eAAgB,CACpC,2BAA0B6S,GAAuBuC,KAGnDlgB,IAAAA,cAAA,OAAKU,UAAU,qBAAqBsH,IAAK+Y,GACvC/gB,IAAAA,cAAA,QAAMU,UAAU,qCACdV,IAAAA,cAACoL,IAAWlL,EAAAA,EAAAA,GAAA,GAAK4M,EAAI,CAAGpM,UAAU,8BAEpCV,IAAAA,cAAA,QAAMU,UAAU,2BACdV,IAAAA,cAAA,QAAMmI,KAAK,WAEbnI,IAAAA,cAAA,QAAMU,UAAU,wBAElBV,IAAAA,cAAA,OAAKU,UAAU,YACbV,IAAAA,cAAA,OAAKU,UAAU,kBACbV,IAAAA,cAAA,QAAMgI,IAAKkW,MAKrB,CAlDCoD,GAAAF,KAAArd,GAAAkZ,GAAAC,GAAAC,GAAAC,GAAAuD,GAAAC,GAAArD,GAAAC,IAAAnV,GAAA8Y,GAAA7Y,MAAAC,EAAAA,EAAAA,GAAA+Y,GAAA,CA9CAniB,GAAc,0BAA2B,CACxCqJ,WAAY,CAACI,GAAAA,MACb,EAQCxJ,GAAS,CAAEyJ,WAAW,IAAQ,WAM9BzJ,GAAS,CAAEuH,KAAMmC,UAAU,eAM3B1J,GAAS,CAAEuH,KAAMmC,UAAU,gBAM3B1J,GAAS,CAAEuH,KAAMmC,UAAU,6BAxBpBrE,EAAAA,mBAAgB6D,K,+BC1B1B,MAAQnJ,cAAa,GAAEC,SAAQA,KAAKC,EAAAA,EAAAA,oBAAmB,IAAAkiB,GAAA,IAAAnd,GAAA,IAAAC,QAYvD,MAAAmd,WAG4B/c,EAAAA,iBAA+CC,WAAAA,GAAA,SAAAC,YACzEC,EAAAA,EAAAA,GAAA,KAAAR,GAAAmZ,GAAA,OAAAC,GAAA,uBAISG,GAAa,OAAAvY,EAAAA,EAAAA,GAAAhB,GAAA,uBAAbuZ,CAAatY,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,CAEtBE,MAAAA,GACE,OAAOvF,IAAAA,cAACyhB,GAAsB,CAAC9D,cAAelY,KAAKkY,eACrD,EAGK,SAAS8D,GAAuB7hB,GACrC,MAAM,cAAE+d,GAAkB/d,GAEnBse,GAAWD,GAA4BN,GAE9C,OACE3d,IAAAA,cAAA,OAAKU,UAAU,gBACbV,IAAAA,cAAA,OAAKU,UAAU,0BACbV,IAAAA,cAAA,QAAMgI,IAAKkW,KAInB,CAdCwD,GAAAF,KAAAzd,GAAAwZ,GAAAC,IAAAnV,GAAAkZ,GAAAjZ,MAAAC,EAAAA,EAAAA,GAAAmZ,GAAA,CAbAviB,GAAc,kBAAmB,CAChCqJ,WAAY,CAACI,GAAAA,MACb,EAKCxJ,GAAS,CAAEuH,KAAMmC,UAAU,6BAJFrE,EAAAA,mBAAgB6D,K,eCrB5C,MACA,GADiB1I,GAASI,EAAAA,cAAA,OAAAE,EAAAA,EAAAA,GAAA,CAAKyhB,MAAM,6BAA6B1gB,MAAO,GAAIyG,OAAQ,GAAIka,QAAQ,aAAgBhiB,GAAOI,EAAAA,cAAA,KAAG6hB,KAAK,OAAOC,SAAS,WAAU9hB,EAAAA,cAAA,QAAM+hB,EAAE,kBAAkB/hB,EAAAA,cAAA,QAAM6hB,KAAK,UAAUC,SAAS,UAAUC,EAAE,2OCC9N,GADmBniB,GAASI,EAAAA,cAAA,OAAAE,EAAAA,EAAAA,GAAA,CAAKyhB,MAAM,6BAA6B1gB,MAAO,GAAIyG,OAAQ,GAAIka,QAAQ,aAAgBhiB,GAAOI,EAAAA,cAAA,KAAG6hB,KAAK,OAAOC,SAAS,WAAU9hB,EAAAA,cAAA,QAAM+hB,EAAE,kBAAkB/hB,EAAAA,cAAA,QAAM6hB,KAAK,UAAUC,SAAS,UAAUC,EAAE,8X,eCDzN,IAAKpK,GAAC,SAADA,GAAC,OAADA,EAAC,kDAADA,EAAC,oCAADA,EAAC,oCAADA,CAAC,MAMb,MAYa3O,GAAK,wB,+DCoBlBD,EAAAA,EAAAA,qBAAoBC,GDlBG,CAAE4O,GAdN,CACjBoK,iBAAkB,mBAClBC,iBAAkB,mBAClBC,wBAAyB,uBAWEpK,GARV,CACjBkK,iBAAkB,OAClBC,iBAAkB,OAClBC,wBAAyB,kBCyB3B,MAAQ/iB,cAAa,GAAEC,SAAQ,GAAEiC,MAAKA,KAAKhC,EAAAA,EAAAA,oBAErC8iB,IAAiB5iB,EAAAA,EAAAA,WAAmC,cACpD6L,IAAc7L,EAAAA,EAAAA,WAAyC,WAAW,IAAA6iB,GAAA,IAAAhe,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAuK,GAAA,IAAAvK,QAAAwK,GAAA,IAAAxK,QAAAge,GAAA,IAAApT,QAAAqT,GAAA,IAAAje,QAAAyK,GAAA,IAAAzK,QAAAke,GAAA,IAAAle,QAyBxE,MAAAme,WAGwB/d,EAAAA,iBAA2CC,WAAAA,GAAA,SAAAC,YAAA2K,EAAAA,GAAAA,GAAA,KAAA+S,KACjEzd,EAAAA,EAAAA,GAAA,KAAAR,GAAAS,GAAA,QAMAD,EAAAA,EAAAA,GAAA,KAAAN,IAAAQ,GAAA,MAAA2d,GAAA,SAMA7d,EAAAA,EAAAA,GAAA,KAAAL,IAAAme,GAAA,MAAAC,GAAA,SAMA/d,EAAAA,EAAAA,GAAA,KAAAgK,IAAAgU,GAAA,MAAA7I,GAAA,SAQAnV,EAAAA,EAAAA,GAAA,KAAAiK,IAAAmL,GAAA,MAAA6I,GAAA,SAMAje,EAAAA,EAAAA,GAAA,KAAA0d,IAAwBQ,GAAA,MAAIC,KAC1BxS,EAAAA,GAAAA,GAAA8R,GAAA5c,KAAKud,IAAwBvS,KAAKsS,EAAY,KAGhDne,EAAAA,EAAAA,GAAA,KAAAkK,GAAAmU,GAAA,QAMAre,EAAAA,EAAAA,GAAA,KAAA2d,IAA0BW,GAAA,MAAIC,IAC5B1d,KAAK2a,cAAgB+C,GACrB5S,EAAAA,GAAAA,GAAA8R,GAAA5c,KAAK2d,IAA0B3S,KAAK0S,EAAM,GAC1C,SAzCOhe,GAAI,OAAAC,EAAAA,EAAAA,GAAAhB,GAAA,cAAJe,CAAIE,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,oBAMJge,GAAe,OAAAje,EAAAA,EAAAA,GAAAd,GAAA,yBAAf+e,CAAehe,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,kBAMf+a,GAAa,OAAAhb,EAAAA,EAAAA,GAAAb,GAAA,uBAAb6b,CAAa/a,IAAAC,EAAAA,EAAAA,GAAAf,GAAA,KAAAc,EAAA,aAQbiV,GAAQ,OAAAlV,EAAAA,EAAAA,GAAAwJ,GAAA,kBAAR0L,CAAQjV,IAAAC,EAAAA,EAAAA,GAAAsJ,GAAA,KAAAvJ,EAAA,CAuBjBE,MAAAA,GACE,OACEvF,IAAAA,cAACsjB,GAAkB,CACjBne,KAAMM,KAAKN,KACXib,cAAe3a,KAAK2a,cACpBiD,gBAAiB5d,KAAK4d,gBACtB/I,SAAU7U,KAAK6U,SACfiJ,qBAAqBne,EAAAA,EAAAA,GAAKkd,GAAL7c,MACrB+d,uBAAuBpe,EAAAA,EAAAA,GAAKmd,GAAL9c,OAG7B,EAQK,SAAS6d,GAAmB1jB,GACjC,MAAM,IAAQ8Y,EAAAA,EAAAA,gBAAe1P,KACvB,KACJ7D,EAAI,gBACJke,EAAe,SACf/I,EAAQ,oBACRiJ,EAAmB,sBACnBC,GACE5jB,EAEE6jB,EAAsBzjB,IAAAA,SAC1B,SAAAsK,EAAA,OAAkB,QAAlBA,GAAMI,EAAAA,EAAAA,qBAAY,IAAAJ,OAAA,EAAZA,EAAcK,kBAAkB,iCAAiC,GACvE,IAGIyI,GAAU7M,EAAAA,EAAAA,UAAQ,IAAM,IAAI8M,GAAAA,EAAYC,eAAe,IACvD5N,GAAUC,EAAAA,EAAAA,cACVgO,GAAaC,EAAAA,GAAAA,kBACZ9N,EAAUC,IAAelC,EAAAA,EAAAA,UAAS6B,EAAQI,WAC3C,SAAEM,EAAQ,OAAEC,GAAWP,GAEtB4d,EAAoBC,IAAyB9f,EAAAA,EAAAA,WACjDuP,EAAQmB,QAAQqK,MAEZgF,EAAmBC,IAAwBhgB,EAAAA,EAAAA,aAC3CigB,EAAUC,IAAelgB,EAAAA,EAAAA,aACzBuc,EAAe4D,IAAoBngB,EAAAA,EAAAA,UACxCjE,EAAMwgB,eACJhN,EAAQmB,QAAQsK,KAChBE,GAAcsB,WAGZ4D,EAAYR,EAAsBte,aAAI,EAAJA,EAAM2H,KAAO6G,aAAU,EAAVA,EAAY/F,UAE3D,aAAEhH,EAAY,WAAE0Y,EAAU,YAAEC,IAAgBhZ,EAAAA,EAAAA,UAAQ,KAAM,IAAAC,EAC9D,OAAOK,EAAAA,EAAAA,IACU,QADyBL,EACxCrB,aAAI,EAAJA,EAAMmB,iBAAS,IAAAE,EAAAA,EAAI,GACnBJ,EACAC,EACA,GACD,GACA,CAAClB,aAAI,EAAJA,EAAMmB,UAAWF,EAAUC,KAE/BS,EAAAA,EAAAA,YAAU,KACR,MAAMC,EAA+BrB,EAAQsB,QAAQlB,IACnDC,EAAYD,EAAS,IAEvB,OAAOiB,CAAQ,GACd,CAACrB,IAEJ,MAAMwe,GAA8Bre,EAAAA,EAAAA,QAAuB,OAE3DiB,EAAAA,EAAAA,YAAU,KACR,GAAIod,EAA4Bjd,QAAS,CACvC,MAAMkd,EAAW,IAAIC,sBAClBC,IACCA,EAAQ/F,SAASgG,IACXA,EAAMzO,SAAWqO,EAA4Bjd,SAC/C4c,GAAsBS,EAAMC,eAC9B,GACA,GAEJ,CAAEC,UAAW,IAKf,OAFAL,EAASvc,QAAQsc,EAA4Bjd,SAEtC,KACLkd,EAAStc,YAAY,CAEzB,IACC,KAEHf,EAAAA,EAAAA,YAAU,KACRkd,EACEpkB,EAAMwgB,eACJhN,EAAQmB,QAAQsK,KAChBE,GAAcsB,UACjB,GACA,CAACzgB,EAAMwgB,iBAEVtZ,EAAAA,EAAAA,YAAU,KACRsM,EAAQkC,QACNuJ,GACAuB,IAAkBrB,GAAc0F,SAC5B1F,GAAc0F,SACd1F,GAAcsB,UACnB,GACA,CAACD,IAEJ,MAeOsE,EAAeC,IAAoB9gB,EAAAA,EAAAA,WAAiB,KAEzD,IAAI+gB,EAAiB3F,SAAS7L,EAAQmB,QAAQuK,IAAwB,IAItE,OAHI8F,EAAiB5F,IAAgB9Y,OAAO2e,MAAMD,MAChDA,EAAiB5F,IAEZ4F,CAAc,KAGvB9d,EAAAA,EAAAA,YAAU,KACRsM,EAAQkC,QAAQwJ,GAAuB4F,EAAc,GACpD,CAACA,IAEJ,MAAMI,GAAejf,EAAAA,EAAAA,QAAuB,MA8BtCkf,EAAmBA,KACvBf,GAAkBb,IAChB,MAAM6B,EACJ7B,IAAUpE,GAAc0F,SACpB1F,GAAc0F,SACd1F,GAAckG,QAGpB,OADAD,IAAa7B,IAASK,SAAAA,EAAwBwB,IACvCA,CAAQ,GACf,EAGEE,EAAmBA,KACvBlB,GAAkBb,IAChB,MAAM6B,EACJ7B,IAAUpE,GAAc0F,SACpB1F,GAAc0F,SACd1F,GAAcsB,UAGpB,OADA2E,IAAa7B,IAASK,SAAAA,EAAwBwB,IACvCA,CAAQ,GACf,EAGEG,GAAqB5e,EAAAA,EAAAA,UAAQ,IAC1B6Z,IAAkBrB,GAAc0F,SACnCC,EACAvF,IACH,CAACiB,EAAesE,KAEnB5d,EAAAA,EAAAA,YAAU,KACRyc,SAAAA,EAAsB4B,EAAmB,GACxC,CAAC5B,EAAqB4B,IAEzB,MAAMC,EAAqBC,GAGR,WAAb/K,EACK8F,IAAkBrB,GAAc0F,UACpCY,GAASjF,IAAkBrB,GAAckG,QACxCP,EACAvF,GAECiB,IAAkBrB,GAAcsB,UACnClB,GACAuF,EAcN,OAXA5d,EAAAA,EAAAA,YAAU,KACR,MAAMwe,EAAYR,EAAa7d,QAI/B,OAHAqe,SAAAA,EAAWnQ,iBAAiB,aAAc4P,GAC1CO,SAAAA,EAAWnQ,iBAAiB,aAAc+P,GAEnC,KACLI,SAAAA,EAAWlQ,oBAAoB,aAAc2P,GAC7CO,SAAAA,EAAWlQ,oBAAoB,aAAc8P,EAAiB,CAC/D,GACA,IAGDllB,IAAAA,cAAA,OACEU,UAAWoK,IAAW,oBAAqB,SAASsV,IAAiB,CACnE0D,aAEFliB,MAAO,CAAEX,MAAOmkB,KAChBpd,IAAK8c,EACL,cAAY,YAEZ9kB,IAAAA,cAAA,OAAKU,UAAU,QAAQkB,MAAO,CAAEX,MAAOmkB,GAAkB,KACvDplB,IAAAA,cAAA,OAAKU,UAAU,UACbV,IAAAA,cAAA,OAAKU,UAAU,cACbV,IAAAA,cAAA,OAAKU,UAAWoK,IAAW,8BACxBmZ,EACCjkB,IAAAA,cAACoL,IAAWlL,EAAAA,EAAAA,GAAA,GACL+jB,EAAS,CACdvjB,UAAU,qBAGZV,IAAAA,cAAA,QAAMU,UAAU,sBAGpBV,IAAAA,cAAA,OAAKU,UAAU,kBAAkBE,MAAOuE,aAAI,EAAJA,EAAMvE,OAC3CuE,aAAI,EAAJA,EAAMvE,SAKbZ,IAAAA,cAAA,OACEU,UAAWoK,IAAW,UAAW,CAC/B,cAAe8Y,KAGjB5jB,IAAAA,cAACmgB,GAAW,CACVvZ,aAAcA,EACd0Y,WAAYA,EACZC,YAAaA,EACbpa,KAAMA,EACNib,cAAeA,IAEjBpgB,IAAAA,cAAA,OAAKgI,IAAKkc,KAGZlkB,IAAAA,cAAA,OAAKU,UAAU,WACX2iB,GACArjB,IAAAA,cAACmiB,GAAc,CACboD,QACGnF,IAAkBrB,GAAc0F,SAC7Bf,EACEjL,EAAEd,GAAEuK,wBAAyB,CAC3B1V,OAAQiM,EAAEd,GAAEqK,oBAEdvJ,EAAEd,GAAEqK,kBACN0B,EACEjL,EAAEd,GAAEuK,wBAAyB,CAC3B1V,OAAQiM,EAAEd,GAAEsK,oBAEdxJ,EAAEd,GAAEsK,mBAGZjiB,IAAAA,cAAA,KAAGU,UAAU,aAAaoD,QAjLT0hB,KAC3B7B,GAAsB,GACtBvQ,EAAQkC,QAAQsJ,IAAwB,GAExCoF,GAAkBb,IAChB,MAAM6B,EACJ7B,IAAUpE,GAAc0F,SACpB1F,GAAcsB,UACdtB,GAAc0F,SAGpB,OADAO,IAAa7B,IAASK,SAAAA,EAAwBwB,IACvCA,CAAQ,GACf,GAsKUhlB,IAAAA,cAACylB,GAAQ,CACP7jB,MAAO,CACL8jB,QACEtF,IAAkBrB,GAAc0F,cAC5BlS,EACA,UAGVvS,IAAAA,cAAC2lB,GAAU,CACT/jB,MAAO,CACL8jB,QACEtF,IAAkBrB,GAAc0F,SAC5B,YACAlS,QAOjB6N,IAAkBrB,GAAc0F,UAC/BzkB,IAAAA,cAAA,QAAMU,UAAU,cAAcwY,YAzKOnV,IAAM,IAAA6hB,EAAAC,EACjD9B,GAAY,GAGRhgB,EAAE+hB,YACJ/hB,EAAEqG,iBAGJ,MAAM2b,EAA4D,QAArDH,EAAuB,QAAvBC,EAAGf,EAAa7d,eAAO,IAAA4e,OAAA,EAApBA,EAAsBG,wBAAwBC,YAAI,IAAAL,EAAAA,EAAI,EAEhEM,GAAOC,EAAAA,GAAAA,IAA0BpiB,IACrC,MAAMqiB,EAAIriB,EAAEsiB,QAAUN,EAGtBpB,EAFcyB,GAAKpH,GAAeoH,EAAIpH,GAEf,IAEnBsH,EAAWviB,IACfggB,GAAY,GACZhgB,EAAEqG,iBAEF7I,OAAO6T,oBAAoB,YAAa8Q,GACxC3kB,OAAO6T,oBAAoB,UAAWkR,EAAQ,EAGhD/kB,OAAO4T,iBAAiB,YAAa+Q,EAAM,CAAEK,SAAS,IACtDhlB,OAAO4T,iBAAiB,UAAWmR,EAAQ,KAqJ/C,CA7SCE,GAAAhE,KAAAze,GAAAc,GAAAC,GAAA2d,GAAAC,GAAAC,GAAAC,GAAA7I,GAAAC,GAAA6I,GAAAG,GAAAyD,GAAA3D,GAAAG,GAAAG,GAAAsD,GAAAxD,IAAA7a,GAAA+Z,GAAA9Z,MAAAC,EAAAA,EAAAA,GAAAie,GAAA,CA/DArnB,GAAc,aAAc,CAC3BqJ,WAAY,CAACI,GAAAA,MACb,EAKCxJ,GAAS,CAAEyJ,WAAW,IAAQ,WAM9BzJ,GAAS,CAAEuH,KAAMmC,UAAU,sBAM3B1J,KAAU,oBAQVA,KAAU,eAOViC,GAAM,CAAEsF,KAAM,wBAAwB,2BAAAiM,IAAAxN,EAAAA,EAAAA,GAAAyJ,GAAA+D,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAAuJ,GAAA+D,EAAAvN,IAAA,CAUtChE,GAAM,CAAEsF,KAAM,0BAA0B,6BAAAiM,IAAAxN,EAAAA,EAAAA,GAAA0J,GAAA8D,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAAwJ,GAAA8D,EAAAvN,KAAA,GAAAwN,GAAA0P,GAAAzP,KAAAC,EAAAA,GAAAA,GAAAF,KAzCnBpO,EAAAA,mBAAgB6D,K,+BCpCxC,MAAM8C,IAAc7L,EAAAA,EAAAA,WAAyC,WAEvDonB,IAAcpnB,EAAAA,EAAAA,WAA8B,WAE5CqnB,IAAmBrnB,EAAAA,EAAAA,WAA4B,iBAE/CsnB,IAAyBtnB,EAAAA,EAAAA,WAC7B,yBAGID,IAAkBC,EAAAA,EAAAA,WAAwC,gBAE1DunB,IAAkBvnB,EAAAA,EAAAA,WAA2B,YAO3CJ,cAAa,GAAEC,SAAQA,KAAKC,EAAAA,EAAAA,oBAEpC,IAAA0nB,GAAA,IAAA3iB,GAAA,IAAAC,QAKA,MAAA2iB,WAG+BviB,EAAAA,iBAAiBC,WAAAA,GAAA,SAAAC,YAC9CC,EAAAA,EAAAA,GAAA,KAAAR,GAAAS,GAAA,OAAAC,GAAA,cAMSK,GAAI,OAAAC,EAAAA,EAAAA,GAAAhB,GAAA,cAAJe,CAAIE,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,CAEbE,MAAAA,GACE,OAAOvF,IAAAA,cAACinB,GAAyB,CAAC9hB,KAAMM,KAAKN,MAC/C,EAGK,SAAS8hB,GAA0BrnB,GAGxC,MAAM,KAAEuF,GAASvF,EAEX8F,GAAUC,EAAAA,EAAAA,eACTG,EAAUC,IAAelC,EAAAA,EAAAA,UAAS6B,EAAQI,WAC3C,SAAEM,EAAQ,OAAEC,GAAWP,GAEtBrF,EAAaymB,IAAkBrjB,EAAAA,EAAAA,UAAmB,KAClDyb,EAAY6H,IAAiBtjB,EAAAA,EAAAA,UAAmB,IAEjDujB,GAAc7a,EAAAA,EAAAA,cAAY,KAAY,IAAA/F,EAC1C,MAAM,aAAEI,EAAY,WAAE0Y,IAAezY,EAAAA,EAAAA,IACpB,QADuDL,EACtErB,aAAI,EAAJA,EAAMmB,iBAAS,IAAAE,EAAAA,EAAI,GACnBJ,EACAC,EACA,IAEF6gB,EAAetgB,GACfugB,EAAc7H,EAAW,GACxB,CAACna,aAAI,EAAJA,EAAMmB,UAAWF,EAAUC,KAE/BS,EAAAA,EAAAA,YAAU,KACR,MAAMC,EAA+BrB,EAAQsB,QAAQlB,IACnDC,EAAYD,EAAS,IAGvB,OADAshB,IACOrgB,CAAQ,GACd,CAACrB,EAAS0hB,IAEb,MAAMC,GAAoB9a,EAAAA,EAAAA,cAAa1M,IAAkC,IAAAynB,EACvE,OAAwD,KAAvC,QAATA,EAACznB,EAAKc,WAAG,IAAA2mB,GAAY,QAAZA,EAARA,EAAUC,MAAM,YAAI,IAAAD,OAAA,EAApBA,EAAsBnlB,QAAoB,EAAO,GACzD,IAgFH,SAASqlB,EACP3nB,EACAwX,GAMA,OAAOvX,EAAAA,EAAAA,IAAUD,GAnDQA,KAA2B,IAAAoC,EAEpD,IAAc,QAAVA,EAAApC,EAAKqC,aAAK,IAAAD,OAAA,EAAVA,EAAYE,QAAS,EACvB,OACEnC,IAAAA,cAAC6mB,GAAsB,CACrBnmB,UAAU,gBACVoM,KAAMjN,EAAKiN,KACX2a,WAAY,CAAEC,YAAaL,EAAkBxnB,IAC7C8nB,UAAW,CAAED,YAAaL,EAAkBxnB,GAAQ,GACpDqgB,WAAYZ,EAAWve,SAASlB,EAAKc,MAErCX,IAAAA,cAAA,QAAM4C,KAAK,SAAS/C,EAAKe,OACxBf,EAAKqC,MAAMY,KAAKC,GACf/C,IAAAA,cAACA,IAAAA,SAAc,CAACW,IAAKoC,EAAUpC,KAC5B6mB,EAAezkB,EAAW,CACzB2a,WAAW,OAMvB,EA+BIkK,CAAkB/nB,IAClBM,EAAAA,EAAAA,IAAQN,GA7BeA,KAA2B,IAAAoD,EAEtD,IAAc,QAAVA,EAAApD,EAAKqC,aAAK,IAAAe,OAAA,EAAVA,EAAYd,QAAS,EACvB,OACEnC,IAAAA,cAAC4mB,GAAgB,KACf5mB,IAAAA,cAAA,QAAM4C,KAAK,SAAS/C,EAAKe,OAExBf,EAAKqC,MAAMY,KAAKC,GAEb/C,IAAAA,cAACA,IAAAA,SAAc,CAACW,IAAKoC,EAAUpC,KAC5B6mB,EAAezkB,MAM5B,EAcM8kB,CAAoBhoB,GAzFCioB,EAC3BjoB,EACAwX,IAKErX,IAAAA,cAACV,GAAe,CACdoB,UAAWoK,IAAW,YAAa,CACjC,aAAcuM,aAAO,EAAPA,EAASqG,YAEzB9b,MAAO,CAAE8lB,YAAaL,EAAkBxnB,IAAS,IACjDiN,KAAMjN,EAAKiN,KACXhM,SAAQjB,EAAKc,KAAMF,EAAYM,SAASlB,EAAKc,MAE7CX,IAAAA,cAAC8mB,GAAe,CACdpmB,UAAU,iBACViG,KAAK,QACL8G,IAAK5N,EAAKyc,GACV1G,KAAM/V,EAAK+V,KACXhV,MAAOf,EAAKgB,KACZgV,OAAQhW,EAAKgW,QAEb7V,IAAAA,cAAA,QACEU,UAAWoK,IAAW,iBAAkB,CACtC,gBAAiBjL,EAAKiN,QAGvBjN,EAAKgB,QA8DRinB,CAAqBjoB,EAAMwX,EACnC,CAEA,OACErX,IAAAA,cAAC2mB,GAAW,CAACjmB,UAAU,iBAAiBqnB,KAAK,aAC1C5iB,aAAI,EAAJA,EAAMvE,QACLZ,IAAAA,cAAA,OAAKU,UAAU,WACZyE,aAAI,EAAJA,EAAM2H,OAAQ9M,IAAAA,cAACoL,GAAiBjG,aAAI,EAAJA,EAAM2H,MACvC9M,IAAAA,cAAA,QAAMU,UAAU,SAASyE,aAAI,EAAJA,EAAMvE,QAGnCZ,IAAAA,cAAA,OAAKU,UAAU,WACZyE,aAAI,EAAJA,EAAMmB,UAAUxD,KAAKjD,GAElBG,IAAAA,cAACA,IAAAA,SAAc,CAACW,IAAKd,EAAKc,KACvB6mB,EAAe3nB,OAO9B,CArJCmoB,GAAAhB,KAAAjjB,GAAAc,GAAAC,IAAAuD,GAAA0e,GAAAze,MAAAC,EAAAA,EAAAA,GAAAyf,GAAA,CAfA7oB,GAAc,sBAAuB,CACpCqJ,WAAY,CAACI,GAAAA,MACb,EAKCxJ,GAAS,CACRyJ,WAAW,IACX,oBAN2BpE,EAAAA,mBAAgB6D,K,qFClD/C,MAAQnJ,cAAa,GAAEC,SAAQ,GAAEiC,MAAKA,KAAKhC,EAAAA,EAAAA,oBACrC+L,IAAc7L,EAAAA,EAAAA,WAAyC,WACvD4iB,IAAiB5iB,EAAAA,EAAAA,WAAmC,cAE1D,IAAA0oB,GAAA,IAAA7jB,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAuK,GAAA,IAAAvK,QAAAwK,GAAA,IAAAxK,QAAAyK,GAAA,IAAAzK,QAAA0K,GAAA,IAAA1K,QAAA6jB,GAAA,IAAAjZ,QAAAC,GAAA,IAAA7K,QAAA8jB,GAAA,IAAA9jB,QAAA+jB,GAAA,IAAA/jB,QAIA,MAAAgkB,WAG0B5jB,EAAAA,iBAA6CC,WAAAA,GAAA,SAAAC,YAAA2K,EAAAA,GAAAA,GAAA,KAAA4Y,KACrEtjB,EAAAA,EAAAA,GAAA,KAAAR,GAAA2V,GAAA,KAMwC,WAExCnV,EAAAA,EAAAA,GAAA,KAAAN,IAAA0V,GAAA,MAAAsO,GAAA,SAMA1jB,EAAAA,EAAAA,GAAA,KAAAL,IAAAgkB,GAAA,MAAAC,GAAA,KAMiC,OAEjC5jB,EAAAA,EAAAA,GAAA,KAAAgK,IAAA6Z,GAAA,MAAAC,GAAA,MAIoC,MAEpC9jB,EAAAA,EAAAA,GAAA,KAAAiK,IAAA8Z,GAAA,MAAAC,GAAA,SAQAhkB,EAAAA,EAAAA,GAAA,KAAAkK,IAAA+Z,GAAA,MAAAC,GAAA,SAKAlkB,EAAAA,EAAAA,GAAA,KAAAmK,IAAAga,GAAA,MAAA5Y,GAAA,SAMAvL,EAAAA,EAAAA,GAAA,KAAAsK,IAAAkB,GAAA,MAAA4Y,GAAA,SAOApkB,EAAAA,EAAAA,GAAA,KAAAujB,IAAcc,GAAA,MAAIvd,KAChB6E,EAAAA,GAAAA,GAAA2X,GAAAziB,KAAK+K,IAAoBC,KAAK/E,EAAK,KAErC9G,EAAAA,EAAAA,GAAA,KAAAwjB,IAAoBznB,KAClB4P,EAAAA,GAAAA,GAAA2X,GAAAziB,KAAKyjB,IAAsBzY,KAAK,CAAE9P,OAAM,GACxC,aArDO2Z,GAAQ,OAAAlV,EAAAA,EAAAA,GAAAhB,GAAA,kBAARkW,CAAQjV,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,mBAMR8jB,GAAc,OAAA/jB,EAAAA,EAAAA,GAAAd,GAAA,wBAAd6kB,CAAc9jB,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,cAQdiB,GAAS,OAAAlB,EAAAA,EAAAA,GAAAb,GAAA,mBAAT+B,CAASjB,IAAAC,EAAAA,EAAAA,GAAAf,GAAA,KAAAc,EAAA,oBAMT+jB,GAAe,OAAAhkB,EAAAA,EAAAA,GAAAwJ,GAAA,yBAAfwa,CAAe/jB,IAAAC,EAAAA,EAAAA,GAAAsJ,GAAA,KAAAvJ,EAAA,gBAQfgkB,GAAW,OAAAjkB,EAAAA,EAAAA,GAAAyJ,GAAA,qBAAXwa,CAAWhkB,IAAAC,EAAAA,EAAAA,GAAAuJ,GAAA,KAAAxJ,EAAA,wBAMXikB,GAAmB,OAAAlkB,EAAAA,EAAAA,GAAA0J,GAAA,6BAAnBwa,CAAmBjkB,IAAAC,EAAAA,EAAAA,GAAAwJ,GAAA,KAAAzJ,EAAA,CAqB5BE,MAAAA,GACE,OACEvF,IAAAA,cAACupB,GAAoB,CACnBjjB,UAAWb,KAAKa,UAChB6iB,eAAgB1jB,KAAK0jB,eACrBC,gBAAiB3jB,KAAK2jB,gBACtBI,iBAAiBpkB,EAAAA,EAAAA,GAAKgjB,GAAL3iB,MACjBgkB,eAAerkB,EAAAA,EAAAA,GAAK+iB,GAAL1iB,MACf6jB,oBAAqB7jB,KAAK6jB,oBAC1BD,YAAa5jB,KAAK4jB,aAGxB,EAoCK,SAASE,GAAqB3pB,GACnC,MAAM,UACJ0G,EAAS,eACT6iB,EAAc,gBACdC,EAAe,cACfK,EAAa,gBACbD,EAAe,oBACfF,EAAmB,YACnBD,GACEzpB,EAEJ,OACEI,IAAAA,cAAA,OACEU,UAAWoK,IAAW,sBAAuB,CAC3C,iCAAkCse,KAGnCD,GACCnpB,IAAAA,cAAA,OAAKU,UAAU,kBAAkBE,MAAOuoB,GACrCA,GAGLnpB,IAAAA,cAAA,OAAKU,UAAU,uBACZ4F,EAAUxD,KAAI,CAACjD,EAAMS,KAAU,IAAAopB,EAC9B,OACE1pB,IAAAA,cAAA,OACEU,UAAWoK,IAAW,YAAa,aAAajL,EAAK8G,QACrDhG,IAAK,GAAGd,EAAKc,OAAOL,KAEpBN,IAAAA,cAAA,OACEU,UAAWoK,IAAW,mBAAmBjL,EAAK8G,QAC9C7C,QAASA,IACO,SAAdjE,EAAK8G,OAAmB8iB,aAAa,EAAbA,EAAgB,CAAE/d,KAAM7L,MAGlDG,IAAAA,cAAA,QACEU,UAAWoK,IAAW,kBAAmB,CACvC,yBAA0Bwe,aAAmB,EAAnBA,EAAqBvoB,SAC7ClB,EAAKc,QAIRd,EAAKe,OAEPyoB,SAAAA,EAAaM,SACZ3pB,IAAAA,cAAC4pB,GAAAA,uBAAsB,CACrBD,SAAUN,EAAYM,SACtBje,KAAM,CAAEA,KAAM7L,KAEd,KACHA,EAAKgqB,YACJ7pB,IAAAA,cAACmiB,GAAc,CACboD,QAAS1lB,EAAKiqB,kBACdtnB,UAAU,OAEVxC,IAAAA,cAACoL,IAAWlL,EAAAA,EAAAA,GAAA,GACLL,EAAKgqB,WAAU,CACpBnpB,UAAWoK,IAAW,8BAA+B,CACnD,uCACEjL,EAAKkqB,qBAETjmB,QAAUC,IACRA,EAAEC,kBACEnE,EAAKkqB,mBACPhmB,EAAEqG,iBAEFof,SAAAA,EAAkB3pB,EAAKc,IACzB,OAMK,UAAdd,EAAK8G,QACW,QAAd+iB,EAAC7pB,EAAKmqB,gBAAQ,IAAAN,IAAbA,EAAevnB,SACjBtC,EAAKmqB,SAASlnB,KAAI,CAACmnB,EAAOziB,IAEtBxH,IAAAA,cAAA,OACEU,UAAU,uBACVoD,QAASA,IACP2lB,aAAa,EAAbA,EAAgB,CAAE/d,KAAMue,EAAOC,SAAUrqB,EAAKc,MAEhDA,IAAK,GAAGspB,EAAMtpB,OAAO6G,KAErBxH,IAAAA,cAAA,QACEU,UAAWoK,IAAW,kBAAmB,CACvC,yBACEwe,aAAmB,EAAnBA,EAAqBvoB,SAASkpB,EAAMtpB,QAGvCspB,EAAMrpB,UAKb,KAMlB,CAxICupB,GAAA9B,KAAAtkB,GAAAgW,GAAAC,GAAAsO,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA5Y,GAAAK,GAAAkC,GAAAtC,GAAA4Y,GAAAE,GAAAkB,GAAAnB,IAAA5gB,GAAA4f,GAAA3f,MAAAC,EAAAA,EAAAA,GAAA4hB,GAAA,CA9EAhrB,GAAc,eAAgB,CAC7BqJ,WAAY,CAACI,GAAAA,MACb,EAOCxJ,KAAU,eAMVA,KAAU,qBAQVA,GAAS,CAAEyJ,WAAW,IAAQ,gBAM9BzJ,GAAS,CAAEuH,KAAMmC,UAAU,sBAM3B1J,GAAS,CACRyJ,WAAW,IACX,kBAMDzJ,GAAS,CAAEyJ,WAAW,IAAQ,0BAM9BxH,GAAM,CAAEsF,KAAM,oBAAoB,uBAAAiM,IAAAxN,EAAAA,EAAAA,GAAA2J,GAAA6D,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAAyJ,GAAA6D,EAAAvN,IAAA,CAMlChE,GAAM,CAAEsF,KAAM,sBAAsB,yBAAAiM,IAAAxN,EAAAA,EAAAA,GAAA8J,GAAA0D,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAA4J,GAAA0D,EAAAvN,KAAA,GAAAwN,GAAAuV,GAAAtV,KAAAC,EAAAA,GAAAA,GAAAF,KApDbpO,EAAAA,mBAAgB6D,K,eCbnC,MAAM+hB,GAAuBrqB,IAAAA,cAClC,CACEsqB,gBAAiB,IAAItM,IACrBuM,gBAAiB,IAAIvM,IACrBwM,SAAUA,OACVC,SAAUA,SAIDC,GAA0BA,IACrC1qB,IAAAA,WAAiBqqB,ICHbM,IAAkBprB,EAAAA,EAAAA,WAKtB,yBAA0B,CAC1BkrB,SAAU,WAENG,IAA0BrrB,EAAAA,EAAAA,WAK9B,kCAAmC,CACnCirB,SAAU,SACVC,SAAU,WAOZ,SAASI,GAASjrB,GAChB,MAAM,SAAEkrB,GAAalrB,GACf,KAAE8L,EAAI,MAAEpL,EAAK,MAAEyqB,GAAUD,GACzB,gBAAEP,EAAe,SAAEE,EAAQ,YAAEpB,GAAgBqB,KAE7CM,GAAWzkB,EAAAA,EAAAA,UACf,KAAM,CAAGmF,OAAMpL,QAAOyqB,WACtB,CAACrf,EAAMpL,EAAOyqB,IAGhB,OACE/qB,IAAAA,cAAC2qB,GAAe,CACdI,MAAOA,EACPtN,SAAU8M,EAAgBzX,IAAIpH,EAAK/K,KACnCmM,KAAMpB,EAAKoB,KACXme,MAAOvf,EAAKuf,MACZR,SAAUA,KACR,MAAMS,EAAO,CAACxf,EAAK/K,KACnB8pB,EAAS,CAAES,OAAMC,KAAMH,GAAW,EAEpCtqB,UAAWoK,IAAW,CACpB,yBAAgD,WAAtBue,aAAW,EAAXA,EAAa+B,SAGzCprB,IAAAA,cAAA,QAAMY,MAAO8K,EAAK9K,OAAQ8K,EAAK9K,QAC9ByoB,aAAW,EAAXA,EAAaM,WACZ3pB,IAAAA,cAAA,OAAKU,UAAU,SAASkC,KAAK,UAC3B5C,IAAAA,cAAC4pB,GAAAA,uBAAsB,CACrBD,SAAUN,EAAYM,SACtBje,KAAMsf,KAMlB,CAMA,SAASK,GAAiBzrB,GACxB,MAAM,SAAEkrB,GAAalrB,GACf,KAAE8L,EAAI,MAAEpL,EAAK,MAAEyqB,GAAUD,GACzB,gBACJR,EAAe,SACfE,EAAQ,gBACRD,EAAe,SACfE,EAAQ,uBACRa,EAAsB,YACtBjC,GACEqB,KAEEM,GAAWzkB,EAAAA,EAAAA,UACf,KAAM,CAAGmF,OAAMpL,QAAOyqB,WACtB,CAACrf,EAAMpL,EAAOyqB,IAGhB,OACE/qB,IAAAA,cAAC4qB,GAAuB,CACtBG,MAAOA,EACPQ,WAAYD,EACZxe,KAAMpB,EAAKoB,KACXme,MAAOvf,EAAKuf,MACZnd,SAAUwc,EAAgBxX,IAAIpH,EAAK/K,KACnC8c,SAAU8M,EAAgBzX,IAAIpH,EAAK/K,KACnC6pB,SAAWzmB,IACLA,EAAElC,OACJyoB,EAAgBkB,IAAI9f,EAAK/K,KAEzB2pB,EAAgBmB,OAAO/f,EAAK/K,KAE9B,MAAMuqB,EAAO,IAAIZ,GACjBE,EAAS,CAAEU,OAAMC,KAAMH,GAAW,EAEpCP,SAAUA,KACR,MAAMS,EAAO,CAACxf,EAAK/K,KACnB8pB,EAAS,CAAES,OAAMC,KAAMH,GAAW,EAEpCtqB,UAAWoK,IAAW,CACpB,yBAAgD,WAAtBue,aAAW,EAAXA,EAAa+B,SAGzCprB,IAAAA,cAAA,QAAM4C,KAAK,QAAQhC,MAAO8K,EAAK9K,OAC5B8K,EAAK9K,QAEPyoB,aAAW,EAAXA,EAAaM,WACZ3pB,IAAAA,cAAA,OAAKU,UAAU,SAASkC,KAAK,UAC3B5C,IAAAA,cAAC4pB,GAAAA,uBAAsB,CACrBD,SAAUN,EAAYM,SACtBje,KAAMsf,KAMlB,CAMA,SAASU,GAAS9rB,GAChB,MAAM,SAAEkrB,GAAalrB,EAGrB,OAFgB+rB,MAAMC,QAAQd,EAASd,UAKrChqB,IAAAA,cAACqrB,GAAgB,CAACP,SAAUA,IAF5B9qB,IAAAA,cAAC6qB,GAAQ,CAACC,SAAUA,GAIxB,CAMO,SAASe,GAAKjsB,GACnB,MAAM,SAAEkrB,GAAalrB,EAErB,OAAOkrB,EAAShoB,KAAKuC,GACZrF,IAAAA,cAAC0rB,GAAQ,CAAC/qB,IAAK0E,EAAE1E,IAAKmqB,SAAUzlB,KAE3C,CCjKO,SAASymB,GAAqBpgB,GACnC,OAAOA,EAAKqgB,QAAO,CAACC,EAAKC,KAGvB,IAFgBN,MAAMC,QAAQK,EAAIjC,UAQhC,OAAOgC,EANI,CACX,MAAMd,EAAO,CAACe,EAAItrB,KAAKurB,OACrBJ,GAAqBG,EAAIjC,WAE3B,OAAOgC,EAAIE,OAAOhB,EACpB,CAEA,GACC,GACL,CAEO,SAASiB,GACdzgB,EACA6e,GAEA,OAAO7e,EAAKqgB,QAAO,CAACC,EAAKC,KAGvB,IAFgBN,MAAMC,QAAQK,EAAIjC,UAgBhC,OAAOgC,EAdI,KAAAI,EACX,MAAMC,EAA8B,QAAfD,EAAGH,EAAIjC,gBAAQ,IAAAoC,OAAA,EAAZA,EAAcjb,MAAM8Y,GAC1CM,EAAgBzX,IAAImX,EAAMtpB,OAEtB2rB,EAAyBH,GAC7BF,EAAIjC,SACJO,GAGIW,EAAOoB,EAAuBJ,OAClCG,GAAmBC,EAAuBnqB,OAAS,CAAC8pB,EAAItrB,KAAO,IAEjE,OAAOqrB,EAAIE,OAAOhB,EACpB,CAEA,GACC,GACL,CAEO,SAASqB,GACd7gB,EACA6M,EACAiU,GAEA,IAAKjU,EACH,MAAO,CAAE7M,OAAM+gB,aAAc,IAG/B,MAAMC,EAASnU,EAAEoU,cACXC,EAA0B,GAC1BC,EAAQnhB,EACX5I,KAAKjD,IACJ,MAAMitB,EA+BZ,SACEjtB,EACA6sB,EACAF,GAOA,GALiBA,EAAahb,SAASub,GACrCC,IAAkBxe,EAAAA,GAAAA,KAAI3O,EAAMktB,MAEL5b,MAAM9L,GAAMA,EAAEsnB,cAAc5rB,SAAS2rB,KAG5D,OAAO7sB,CAGX,CA7C0BotB,CAAUptB,EAAM6sB,EAAQF,GAE5C,GAAIb,MAAMC,QAAQ/rB,EAAKmqB,UAAW,CAChC,MAAMkD,EAAuBX,GAC3B1sB,EAAKmqB,SACL0C,EACAF,GAEIW,EAAmBD,EAAqBxhB,KAG9C,GAF0ByhB,SAAAA,EAAkBhrB,OAK1C,OAFAyqB,EAAc9tB,KAAKe,EAAKc,OAAQusB,EAAqBT,cAE9C,IACF5sB,EACHmqB,SAAUmD,EAGhB,CAEA,GAAIL,EACF,OAAOjtB,CAGO,IAEjB4G,OAAOqC,SACV,MAAO,CAAE4C,KAAMmhB,EAAOJ,aAAcG,EACtC,CAkBA,SAASI,GAAkB/V,GACzB,MAAMmW,EAAS,GACf,IAAIC,EAAAA,GAAAA,OAAMpW,SAEH,GAAI0U,MAAMC,QAAQ3U,GACvBA,EAAMnU,KAAKuC,GAAM+nB,EAAOtuB,KAAKkuB,GAAkB3nB,WAC1C,GAA8C,oBAA1CioB,OAAOC,UAAUtuB,SAASuuB,KAAKvW,GACxC,IAAK,MAAMwW,KAAKxW,EACdmW,EAAOtuB,KACLyP,OAAOkf,GACPT,GAAmB/V,EAA8BwW,UAKrDL,EAAOtuB,KAAKyP,OAAO0I,IAGrB,OAAOmW,EAAOM,KAAKC,KAAUlnB,OAAOqC,QACtC,C,+FCrGA,MAAQ3J,cAAa,GAAEC,SAAQ,UAAEwuB,GAAQvsB,MAAKA,KAAKhC,EAAAA,EAAAA,oBAE7CwuB,IAAgBtuB,EAAAA,EAAAA,WAKpB,YAAa,CACbuZ,SAAU,SACVgV,SAAU,WA6BZ,IAAAC,GAAA,IAAA3pB,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAuK,GAAA,IAAAvK,QAAAwK,GAAA,IAAAxK,QAAAyK,GAAA,IAAAzK,QAAA0K,GAAA,IAAA1K,QAAA6K,GAAA,IAAA7K,QAAA2pB,GAAA,IAAA3pB,QAAA4pB,GAAA,IAAA5pB,QAAA6pB,GAAA,IAAAjf,QAAAkf,GAAA,IAAA9pB,QAAA+pB,GAAA,IAAA/pB,QAAAgqB,GAAA,IAAAhqB,QAsCA,MAAAiqB,WAG8B7pB,EAAAA,iBAAiBC,WAAAA,GAAA,SAAAC,YAAA2K,EAAAA,GAAAA,GAAA,KAAA4e,KAC7CtpB,EAAAA,EAAAA,GAAA,KAAAR,IAAAmqB,GAAA,MAAAC,GAAA,KAM4B,OAE5B5pB,EAAAA,EAAAA,GAAA,KAAAN,IAAAmqB,GAAA,MAAAnG,GAAA,SAMA1jB,EAAAA,EAAAA,GAAA,KAAAL,IAAAgkB,GAAA,MAAAmG,GAAA,SAMA9pB,EAAAA,EAAAA,GAAA,KAAAgK,IAAA+f,GAAA,MAAAC,GAAA,SAQAhqB,EAAAA,EAAAA,GAAA,KAAAiK,IAAAggB,GAAA,MAAAC,GAAA,SAMAlqB,EAAAA,EAAAA,GAAA,KAAAkK,IAAAigB,GAAA,MAAAC,GAAA,SAQApqB,EAAAA,EAAAA,GAAA,KAAAmK,IAAAkgB,GAAA,MAAArG,GAAA,SAQAhkB,EAAAA,EAAAA,GAAA,KAAAsK,IAAA2Z,GAAA,MAAAqG,GAAA,SAQAtqB,EAAAA,EAAAA,GAAA,KAAAopB,IAAAmB,GAAA,MAAAC,GAAA,SAmCAxqB,EAAAA,EAAAA,GAAA,KAAAqpB,IAAAoB,GAAA,MAAAC,GAAA,SAMA1qB,EAAAA,EAAAA,GAAA,KAAAupB,IAAaoB,GAAA,MAAI7jB,IACfjG,KAAKgnB,aAAe/gB,EAAKwf,MACzB3a,EAAAA,GAAAA,GAAA2d,GAAAzoB,KAAK+pB,IAAa/e,KAAK/E,EAAK,KAG9B9G,EAAAA,EAAAA,GAAA,KAAAwpB,GAAAqB,GAAA,QAMA7qB,EAAAA,EAAAA,GAAA,KAAAypB,IAAaqB,GAAA,MAAIhkB,IACfjG,KAAKmB,aAAe8E,EAAKwf,MACzB3a,EAAAA,GAAAA,GAAA2d,GAAAzoB,KAAKkqB,IAAalf,KAAK/E,EAAK,GAC5B,SA3GOA,GAAI,OAAAtG,EAAAA,EAAAA,GAAAhB,GAAA,cAAJsH,CAAIrG,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,mBAMJ8jB,GAAc,OAAA/jB,EAAAA,EAAAA,GAAAd,GAAA,wBAAd6kB,CAAc9jB,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,2BAMdimB,GAAsB,OAAAlmB,EAAAA,EAAAA,GAAAb,GAAA,gCAAtB+mB,CAAsBjmB,IAAAC,EAAAA,EAAAA,GAAAf,GAAA,KAAAc,EAAA,eAQtBuqB,GAAU,OAAAxqB,EAAAA,EAAAA,GAAAwJ,GAAA,oBAAVghB,CAAUvqB,IAAAC,EAAAA,EAAAA,GAAAsJ,GAAA,KAAAvJ,EAAA,gBAMVwT,GAAW,OAAAzT,EAAAA,EAAAA,GAAAyJ,GAAA,qBAAXgK,CAAWxT,IAAAC,EAAAA,EAAAA,GAAAuJ,GAAA,KAAAxJ,EAAA,iBAQXmnB,GAAY,OAAApnB,EAAAA,EAAAA,GAAA0J,GAAA,sBAAZ0d,CAAYnnB,IAAAC,EAAAA,EAAAA,GAAAwJ,GAAA,KAAAzJ,EAAA,gBAQZgkB,GAAW,OAAAjkB,EAAAA,EAAAA,GAAA2J,GAAA,qBAAXsa,CAAWhkB,IAAAC,EAAAA,EAAAA,GAAAyJ,GAAA,KAAA1J,EAAA,iBAQXuB,GAAY,OAAAxB,EAAAA,EAAAA,GAAA8J,GAAA,sBAAZtI,CAAYvB,IAAAC,EAAAA,EAAAA,GAAA4J,GAAA,KAAA7J,EAAA,CAUrB,gBAFSonB,GAAY,OAAArnB,EAAAA,EAAAA,GAAA4oB,GAAA,sBAAZvB,CAAYpnB,IAAAC,EAAAA,EAAAA,GAAA0oB,GAAA,KAAA3oB,EAAA,CAMrBwqB,SAAAA,GACEpqB,KAAKgnB,aAAeX,GAAqBrmB,KAAKiG,KAChD,CAMAokB,WAAAA,GACErqB,KAAKgnB,aAAe,EACtB,CAMAsD,6BAAAA,GACEtqB,KAAKgnB,aAAeN,GAClB1mB,KAAKiG,KACL,IAAIsS,IAAIvY,KAAKmB,cAEjB,CAwBArB,MAAAA,GACE,OACEvF,IAAAA,cAACgwB,GAAwB,CACvBxR,QAAS/Y,KACTiG,KAAMjG,KAAKiG,KACXyd,eAAgB1jB,KAAK0jB,eACrBmC,uBAAwB7lB,KAAK6lB,uBAC7BzS,YAAapT,KAAKoT,YAClB+W,WAAYnqB,KAAKmqB,WACjBpD,aAAc/mB,KAAK+mB,aACnBnD,YAAa5jB,KAAK4jB,YAClBziB,aAAcnB,KAAKmB,aACnB6lB,aAAchnB,KAAKgnB,aACnBjC,UAAUplB,EAAAA,EAAAA,GAAK+oB,GAAL1oB,MACVglB,UAAUrlB,EAAAA,EAAAA,GAAKipB,GAAL5oB,OAGhB,EASK,SAASuqB,GAAyBpwB,GACvC,MAAM,QACJ4e,EAAO,KACP9S,EAAI,eACJyd,EAAc,uBACdmC,EAAsB,WACtBsE,EAAU,aACVpD,EAAY,YACZ3T,EAAW,YACXwQ,EAAW,SACXoB,EAAQ,SACRD,GACE5qB,EAEE0qB,GAAkB/jB,EAAAA,EAAAA,UACtB,IAAM,IAAIyX,IAAIpe,EAAM6sB,eACpB,CAAC7sB,EAAM6sB,eAEHlC,GAAkBhkB,EAAAA,EAAAA,UACtB,IAAM,IAAIyX,IAAIpe,EAAMgH,eACpB,CAAChH,EAAMgH,gBAGF2R,EAAGC,IAAQ3U,EAAAA,EAAAA,UAAS,IAMrBosB,GAAe1pB,EAAAA,EAAAA,UAAQ,KAC3B,MAAM6mB,EAASb,GAAW7gB,EAAM6M,GAAIiU,GAAgB,IAAIN,OAAO,UAI/D,OAHI3T,IACFiG,EAAQiO,aAAeW,EAAOX,cAEzBW,EAAO1hB,IAAI,GACjB,CAACA,EAAM6M,EAAGiU,IAEP1B,GAAWvkB,EAAAA,EAAAA,UAAQ,ID3JpB,SACL2pB,EACA5F,GAEA,MAAM6F,EAA0B,GAgChC,OA9BA,SAASC,EAAIC,EAAkBC,GAC7B,OAAOD,EAAKvtB,KAAI,CAACytB,EAAUjwB,KACzB,MAAMkwB,EAAMF,EAAS,GAAGA,EAAOE,OAAOlwB,IAAUiO,OAAOjO,GAEjDmwB,EAAwB,CAC5B7vB,MAAO2vB,EAAS3vB,MAChBD,IAAK4vB,EAAS5vB,IACd6vB,MACAzF,MAAOyF,EAAIjJ,MAAM,KAAKplB,OAAS,EAC/B7B,QACAoL,KAAM6kB,EACND,UAaF,OAVAH,EAAYrxB,KAAK2xB,GAEb9E,MAAMC,QAAQ2E,EAASvG,UACzByG,EAAYzG,SAAWM,EAAgBxX,IAAIyd,EAAS5vB,KAChDyvB,EAAIG,EAASvG,SAAUyG,GACvB,GAEJA,EAAYzG,cAAWzX,EAGlBke,CAAW,GAEtB,CAEAL,CAAIF,GAEGC,CACT,CCuHWO,CAAmBT,EAAc3F,IACvC,CAAC2F,EAAc3F,IAElB,OACEtqB,IAAAA,cAACqqB,GAAqBrT,SAAQ,CAC5BC,MAAO,CACLqT,kBACAC,kBACAe,yBACAb,WACAD,WACAnB,gBAGFrpB,IAAAA,cAAA,OAAKU,UAAU,uBACZyoB,GACCnpB,IAAAA,cAAA,OAAKU,UAAU,6BACbV,IAAAA,cAAA,OAAKU,UAAU,kBAAkBE,MAAOuoB,GACrCA,GAEHnpB,IAAAA,cAAA,OAAKU,UAAU,2BACbV,IAAAA,cAAA,QAAMmI,KAAK,cAIhBynB,GACC5vB,IAAAA,cAAC6tB,GAAa,CACZntB,UAAU,mBACV+N,MAAI,EACJoK,YAAaA,EACbiV,SA3CY/pB,IACpByU,EAAKzU,EAAElC,OAAO,IA6CV7B,IAAAA,cAAA,OAAKU,UAAU,QACbV,IAAAA,cAAC6rB,GAAI,CAACf,SAAUA,MAK1B,CArFC6F,GAAArC,KAAAvqB,GAAAyqB,GAAAC,GAAAnG,GAAAC,GAAAmG,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAArG,GAAAC,GAAAqG,GAAAC,GAAAC,GAAAC,GAAAC,GAAAE,GAAAoB,GAAArB,GAAAE,GAAAE,GAAAkB,GAAAnB,GAAAnB,IAAAlmB,GAAA0lB,GAAAzlB,MAAAC,EAAAA,EAAAA,GAAAooB,GAAA,CAzIAxxB,GAAc,oBAAqB,CAClCqJ,WAAY,CAACI,GAAAA,MACb,EAKCxJ,GAAS,CACRyJ,WAAW,IACX,WAMDzJ,KAAU,qBAMVA,GAAS,CAAEuH,KAAMmC,UAAU,6BAM3B1J,GAAS,CACRuH,KAAMmC,UACN,iBAMD1J,KAAU,kBAMVA,GAAS,CACRyJ,WAAW,IACX,mBAMDzJ,GAAS,CACRyJ,WAAW,IACX,kBAMDzJ,GAAS,CACRyJ,WAAW,IACX,mBAMDzJ,GAAS,CACRyJ,WAAW,IACX,mBAMD+kB,KAAQ,gBAQRA,KAAQ,kBAQRA,KAAQ,oCAYRvsB,GAAM,CAAEsF,KAAM,WAAW,gBAAAiM,IAAAxN,EAAAA,EAAAA,GAAA6oB,GAAArb,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAA2oB,GAAArb,EAAAvN,IAAA,CAWzBhE,GAAM,CAAEsF,KAAM,WAAW,gBAAAiM,IAAAxN,EAAAA,EAAAA,GAAAgpB,GAAAxb,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAA8oB,GAAAxb,EAAAvN,KAAA,GAAAwN,GAAAwb,GAAAvb,KAAAC,EAAAA,GAAAA,GAAAF,KA7GEpO,EAAAA,mBAAgB6D,K,6DC1F9C,MAAQnJ,cAAa,GAAEC,SAAQ,GAAEiC,MAAKA,KAAKhC,EAAAA,EAAAA,oBAErCyxB,IAAgBvxB,EAAAA,EAAAA,WAAyC,WAAW,IAAAwxB,GAAA,IAAA3sB,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAuK,GAAA,IAAAvK,QAAAwK,GAAA,IAAAxK,QAAA2sB,GAAA,IAAA/hB,QAAAof,GAAA,IAAAhqB,QAqB1E,MAAA4sB,WAGkCxsB,EAAAA,iBAAiBC,WAAAA,GAAA,SAAAC,YAAA2K,EAAAA,GAAAA,GAAA,KAAA0hB,KACjDpsB,EAAAA,EAAAA,GAAA,KAAAR,GAAA8sB,GAAA,KAMyB,KAEzBtsB,EAAAA,EAAAA,GAAA,KAAAN,IAAA6sB,GAAA,MAAAhU,GAAA,SAQAvY,EAAAA,EAAAA,GAAA,KAAAL,IAAA6Y,GAAA,MAAAH,GAAA,SAIArY,EAAAA,EAAAA,GAAA,KAAAgK,IAAAsO,GAAA,MAAAkU,GAAA,SAIAxsB,EAAAA,EAAAA,GAAA,KAAAiK,IAAAwiB,GAAA,MAAA5B,GAAA,SAMA7qB,EAAAA,EAAAA,GAAA,KAAAypB,IAAaqB,GAAA,MAAG,MACdnf,EAAAA,GAAAA,GAAAygB,GAAAvrB,KAAKkqB,IAAalf,MAAM,GACxB,UA1BOsa,GAAK,OAAA3lB,EAAAA,EAAAA,GAAAhB,GAAA,eAAL2mB,CAAK1lB,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,aAQLoY,GAAQ,OAAArY,EAAAA,EAAAA,GAAAd,GAAA,kBAARmZ,CAAQpY,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,SAIRyH,GAAI,OAAA1H,EAAAA,EAAAA,GAAAb,GAAA,cAAJuI,CAAIzH,IAAAC,EAAAA,EAAAA,GAAAf,GAAA,KAAAc,EAAA,UAIJ4lB,GAAK,OAAA7lB,EAAAA,EAAAA,GAAAwJ,GAAA,eAALqc,CAAK5lB,IAAAC,EAAAA,EAAAA,GAAAsJ,GAAA,KAAAvJ,EAAA,CAYdE,MAAAA,GACE,OACEvF,IAAAA,cAACsxB,GAA4B,CAC3BvG,MAAOtlB,KAAKslB,MACZje,KAAMrH,KAAKqH,KACX2d,UAAUrlB,EAAAA,EAAAA,GAAKipB,GAAL5oB,OAGhB,EAQK,SAAS6rB,GAA4BtvB,GAIN,IAJO,MAC3C+oB,EAAK,KACLje,EAAI,SACJ2d,GACkCzoB,EAClC,MAAMuvB,GAAc1rB,EAAAA,EAAAA,QAAuB,MACrC2rB,GAAY3rB,EAAAA,EAAAA,QAAuB,MA4BzC,OA1BAiB,EAAAA,EAAAA,YAAU,KACR,MAAMypB,EAAWgB,EAAYtqB,QACvBwqB,EAAeA,KACnBhH,GAAU,EAKZ,OAFA8F,SAAAA,EAAUpb,iBAAiB,QAASsc,GAE7B,KACLlB,SAAAA,EAAUnb,oBAAoB,QAASqc,EAAa,CACrD,GACA,CAAChH,KAEJ3jB,EAAAA,EAAAA,YAAU,KACR,MAAM4qB,EAASF,EAAUvqB,QACnB0qB,EAAqB5tB,IACzBA,EAAEC,iBAAiB,EAKrB,OAFA0tB,SAAAA,EAAQvc,iBAAiB,QAASwc,GAE3B,KACLD,SAAAA,EAAQtc,oBAAoB,QAASuc,EAAkB,CACxD,GACA,IAGD3xB,IAAAA,cAAA,OAAKU,UAAU,YAAYsH,IAAKupB,GAC9BvxB,IAAAA,cAAA,OACEU,UAAU,wBACVkB,MAAO,CACLX,MC/HgB,GD+HI8pB,KAGxB/qB,IAAAA,cAAA,OAAKU,UAAU,qBACbV,IAAAA,cAAA,OAAKU,UAAU,4BACdoM,GAAQ9M,IAAAA,cAAC8wB,IAAa5wB,EAAAA,EAAAA,GAAA,GAAK4M,EAAI,CAAEpM,UAAU,oBAC5CV,IAAAA,cAAA,OAAKU,UAAU,mBACbV,IAAAA,cAAA,eAGJA,IAAAA,cAAA,OAAKU,UAAU,mBAAmBsH,IAAKwpB,GACrCxxB,IAAAA,cAAA,QAAMmI,KAAK,YAInB,CA7DCypB,GAAAX,KAAAltB,GAAAmtB,GAAAC,GAAAhU,GAAAC,GAAAH,GAAAC,GAAAkU,GAAAC,GAAA5B,GAAAE,GAAAkB,GAAAnB,IAAArnB,GAAA0oB,GAAAzoB,MAAAC,EAAAA,EAAAA,GAAAqpB,GAAA,CA/CAzyB,GAAc,yBAA0B,CACvCqJ,WAAY,CAACI,GAAAA,MACb,EAKCxJ,GAAS,CACRuH,KAAMT,SACN,YAMD9G,GAAS,CACRuH,KAAMmC,UACN,eAID1J,GAAS,CAAEyJ,WAAW,IAAQ,WAI9BzJ,GAAS,CAAEuH,KAAMmC,QAASvD,QAAQ,IAAQ,YAM1ClE,GAAM,CAAEsF,KAAM,WAAW,gBAAAiM,IAAAxN,EAAAA,EAAAA,GAAAyJ,GAAA+D,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAAuJ,GAAA+D,EAAAvN,KAAA,GAAAwN,GAAAwb,GAAAvb,KAAAC,EAAAA,GAAAA,GAAAF,KA5BMpO,EAAAA,mBAAgB6D,K,eEpClD,MACA,GADiB1I,GAASI,EAAAA,cAAA,OAAAE,EAAAA,EAAAA,GAAA,CAAKyhB,MAAM,6BAA6B1gB,MAAO,GAAIyG,OAAQ,GAAIka,QAAQ,aAAgBhiB,GAAOI,EAAAA,cAAA,QAAM6hB,KAAK,eAAeC,SAAS,UAAUC,EAAE,oH,0ECWvK,MAAQ5iB,cAAa,GAAEC,SAAQ,GAAEiC,MAAKA,KAAKhC,EAAAA,EAAAA,oBAErCyxB,IAAgBvxB,EAAAA,EAAAA,WAAyC,WAAW,IAAAsyB,GAAA,IAAAztB,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAuK,GAAA,IAAAvK,QAAAwK,GAAA,IAAAxK,QAAAyK,GAAA,IAAAzK,QAAA0K,GAAA,IAAA1K,QAAAytB,GAAA,IAAA7iB,QAAAkf,GAAA,IAAA9pB,QAAA6K,GAAA,IAAA7K,QAAAgqB,GAAA,IAAAhqB,QAyB1E,MAAA0tB,WAG0CttB,EAAAA,iBAAiBC,WAAAA,GAAA,SAAAC,YAAA2K,EAAAA,GAAAA,GAAA,KAAAwiB,KACzDltB,EAAAA,EAAAA,GAAA,KAAAR,GAAA8sB,GAAA,KAMyB,KAEzBtsB,EAAAA,EAAAA,GAAA,KAAAN,IAAA6sB,GAAA,MAAAa,GAAA,SAQAptB,EAAAA,EAAAA,GAAA,KAAAL,IAAA0tB,GAAA,MAAAC,GAAA,SAQAttB,EAAAA,EAAAA,GAAA,KAAAgK,IAAAujB,GAAA,MAAAhV,GAAA,SAQAvY,EAAAA,EAAAA,GAAA,KAAAiK,IAAAuO,GAAA,MAAAH,GAAA,SAIArY,EAAAA,EAAAA,GAAA,KAAAkK,IAAAoO,GAAA,MAAAkU,GAAA,SAIAxsB,EAAAA,EAAAA,GAAA,KAAAmK,IAAAsiB,GAAA,MAAA/B,GAAA,SAMA1qB,EAAAA,EAAAA,GAAA,KAAAupB,IAAaoB,GAAA,MAAG,MACdhf,EAAAA,GAAAA,GAAAuhB,GAAArsB,KAAK+pB,IAAa/e,MAAMhL,KAAKqI,SAAS,KAGxClJ,EAAAA,EAAAA,GAAA,KAAAsK,GAAAugB,GAAA,QAKA7qB,EAAAA,EAAAA,GAAA,KAAAypB,IAAaqB,GAAA,MAAG,MACdnf,EAAAA,GAAAA,GAAAuhB,GAAArsB,KAAKkqB,IAAalf,MAAM,GACxB,UAnDOsa,GAAK,OAAA3lB,EAAAA,EAAAA,GAAAhB,GAAA,eAAL2mB,CAAK1lB,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,aAQLyI,GAAQ,OAAA1I,EAAAA,EAAAA,GAAAd,GAAA,kBAARwJ,CAAQzI,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,eAQRkmB,GAAU,OAAAnmB,EAAAA,EAAAA,GAAAb,GAAA,oBAAVgnB,CAAUlmB,IAAAC,EAAAA,EAAAA,GAAAf,GAAA,KAAAc,EAAA,aAQVoY,GAAQ,OAAArY,EAAAA,EAAAA,GAAAwJ,GAAA,kBAAR6O,CAAQpY,IAAAC,EAAAA,EAAAA,GAAAsJ,GAAA,KAAAvJ,EAAA,SAIRyH,GAAI,OAAA1H,EAAAA,EAAAA,GAAAyJ,GAAA,cAAJ/B,CAAIzH,IAAAC,EAAAA,EAAAA,GAAAuJ,GAAA,KAAAxJ,EAAA,UAIJ4lB,GAAK,OAAA7lB,EAAAA,EAAAA,GAAA0J,GAAA,eAALmc,CAAK5lB,IAAAC,EAAAA,EAAAA,GAAAwJ,GAAA,KAAAzJ,EAAA,CAqBdE,MAAAA,GACE,OACEvF,IAAAA,cAACoyB,GAAoC,CACnCrH,MAAOtlB,KAAKslB,MACZQ,WAAY9lB,KAAK8lB,WACjBzd,SAAUrI,KAAKqI,SACfhB,KAAMrH,KAAKqH,KACX0d,UAAUplB,EAAAA,EAAAA,GAAK+oB,GAAL1oB,MACVglB,UAAUrlB,EAAAA,EAAAA,GAAKipB,GAAL5oB,OAGhB,EASK,SAAS2sB,GAAoCpwB,GAMN,IANO,MACnD+oB,EAAK,WACLQ,EAAU,KACVze,EAAI,SACJ0d,EAAQ,SACRC,GAC0CzoB,EAC1C,MAAMuvB,GAAc1rB,EAAAA,EAAAA,QAAuB,MACrCwsB,GAAkBxsB,EAAAA,EAAAA,QAAuB,MACzC2rB,GAAY3rB,EAAAA,EAAAA,QAAuB,MAgDzC,OA9CAiB,EAAAA,EAAAA,YAAU,KACR,GAAIykB,EAAY,CACd,MAAMgF,EAAWgB,EAAYtqB,QACvBqrB,EAAeD,EAAgBprB,QAC/BwqB,EAAeA,KACnBhH,GAAU,EAEN8H,EAAgBxuB,IACpBA,EAAEC,kBACFwmB,GAAU,EAMZ,OAHA+F,SAAAA,EAAUpb,iBAAiB,QAASsc,GACpCa,SAAAA,EAAcnd,iBAAiB,QAASod,GAEjC,KACLhC,SAAAA,EAAUnb,oBAAoB,QAASqc,GACvCa,SAAAA,EAAcld,oBAAoB,QAASmd,EAAa,CAE5D,CAAO,CACL,MAAMhC,EAAWgB,EAAYtqB,QACvBsrB,EAAeA,KACnB/H,GAAU,EAKZ,OAFA+F,SAAAA,EAAUpb,iBAAiB,QAASod,GAE7B,KACLhC,SAAAA,EAAUnb,oBAAoB,QAASmd,EAAa,CAExD,IACC,CAAChH,EAAYd,EAAUD,KAE1B1jB,EAAAA,EAAAA,YAAU,KACR,MAAM4qB,EAASF,EAAUvqB,QACnB0qB,EAAqB5tB,IACzBA,EAAEC,iBAAiB,EAKrB,OAFA0tB,SAAAA,EAAQvc,iBAAiB,QAASwc,GAE3B,KACLD,SAAAA,EAAQtc,oBAAoB,QAASuc,EAAkB,CACxD,GACA,IAGD3xB,IAAAA,cAAAA,IAAAA,SAAA,KACEA,IAAAA,cAAA,OAAKU,UAAU,YAAYsH,IAAKupB,GAC9BvxB,IAAAA,cAAA,OACEU,UAAU,wBACVkB,MAAO,CACLX,MFzLc,GEyLM8pB,KAGxB/qB,IAAAA,cAAA,OAAKU,UAAU,qBACbV,IAAAA,cAAA,OAAKU,UAAU,0BAA0BsH,IAAKqqB,GAC5CryB,IAAAA,cAACwyB,GAAK,CAAC9xB,UAAU,4BAElBoM,GAAQ9M,IAAAA,cAAC8wB,IAAa5wB,EAAAA,EAAAA,GAAA,GAAK4M,EAAI,CAAEpM,UAAU,oBAC5CV,IAAAA,cAAA,OAAKU,UAAU,mBACbV,IAAAA,cAAA,QAAMmI,KAAK,YAGfnI,IAAAA,cAAA,OAAKU,UAAU,mBAAmBsH,IAAKwpB,GACrCxxB,IAAAA,cAAA,QAAMmI,KAAK,aAGfnI,IAAAA,cAAA,OAAKU,UAAU,sBACbV,IAAAA,cAAA,OAAKU,UAAU,mBACbV,IAAAA,cAAA,eAKV,CA9FCyyB,GAAAV,KAAAhuB,GAAAmtB,GAAAC,GAAAa,GAAAC,GAAAC,GAAAC,GAAAhV,GAAAC,GAAAH,GAAAC,GAAAkU,GAAAC,GAAA/B,GAAAE,GAAAoB,GAAArB,GAAAE,GAAAE,GAAAkB,GAAAnB,IAAArnB,GAAAwpB,GAAAvpB,MAAAC,EAAAA,EAAAA,GAAAkqB,GAAA,CA3EAtzB,GAAc,kCAAmC,CAChDqJ,WAAY,CAACI,GAAAA,MACb,EAKCxJ,GAAS,CACRuH,KAAMT,SACN,YAMD9G,GAAS,CACRuH,KAAMmC,UACN,eAMD1J,GAAS,CACRuH,KAAMmC,UACN,iBAMD1J,GAAS,CACRuH,KAAMmC,UACN,eAID1J,GAAS,CAAEyJ,WAAW,IAAQ,WAI9BzJ,GAAS,CAAEuH,KAAMmC,QAASvD,QAAQ,IAAQ,YAO1ClE,GAAM,CAAEsF,KAAM,WAAW,gBAAAiM,IAAAxN,EAAAA,EAAAA,GAAA2J,GAAA6D,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAAyJ,GAAA6D,EAAAvN,IAAA,CASzBhE,GAAM,CAAEsF,KAAM,WAAW,gBAAAiM,IAAAxN,EAAAA,EAAAA,GAAA8J,GAAA0D,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAA4J,GAAA0D,EAAAvN,KAAA,GAAAwN,GAAAwb,GAAAvb,KAAAC,EAAAA,GAAAA,GAAAF,KAtDcpO,EAAAA,mBAAgB6D,K,yBC9B1D,MAAQnJ,cAAaA,KAAKE,EAAAA,EAAAA,oBAEb+L,IAAc7L,EAAAA,EAAAA,WAAyC,WACvD8L,IAAc9L,EAAAA,EAAAA,WAA2B,WAEtD,IAAAmzB,GAIA,MAAAC,WAGsBluB,EAAAA,iBACpBc,MAAAA,GACE,OAAOvF,IAAAA,cAAC4yB,GAAgB,KAC1B,EAGK,SAASA,KACd,MAAMC,GAAQnoB,EAAAA,EAAAA,cAAaooB,mBAErBC,GAAWxsB,EAAAA,EAAAA,UAAQ,IAChBssB,EAAMG,kBACXhzB,IAAAA,cAAA,OAAKizB,IAAKJ,EAAMG,kBAAmBtyB,UAAU,sBAE7CV,IAAAA,cAACoL,GAAW,CACV8nB,SAAS,YACTpmB,KAAK,UACLD,IAAI,UACJnM,UAAU,kBAGb,CAACmyB,EAAMG,oBAEV,OACEhzB,IAAAA,cAAA,OAAKU,UAAU,kBACoB,SAAhCmyB,EAAMM,sBACLJ,EAEA/yB,IAAAA,cAACqL,GAAW,CAAC1E,KAAK,QAAQ8G,IAAI,IAAI/M,UAAU,aACzCqyB,GAKX,CA7BCK,GAAAT,IAAAD,GAAApqB,KAAAC,EAAAA,EAAAA,GAAA6qB,GAAA,CAPAj0B,GAAc,eAAgB,CAC7BqJ,WAAY,CAACI,GAAAA,MACb,YACoBnE,EAAAA,kBAAgB4D,EAAAC,K,gDCvB/B,IAAKqP,GAAC,SAADA,GAAC,OAADA,EAAC,4BAADA,EAAC,kBAADA,CAAC,MAKb,MAUa3O,GAAK,2B,0BCLd,GAAU,CAAC,EAEf,GAAQsO,kBAAoB,KAC5B,GAAQC,cAAgB,KACxB,GAAQC,OAAS,UAAc,KAAM,QACrC,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKnB,SAAe,MAAW,KAAQxY,OAAS,KAAQA,YAASqT,E,mDCLnExJ,EAAAA,EAAAA,qBAAoBC,GFDG,CAAE4O,GAZN,CACjByb,aAAc,eACdC,QAAS,WAUkBxb,GAPV,CACjBub,aAAc,OACdC,QAAS,QEQX,MAAQn0B,cAAa,GAAEC,SAAQ,GAAEiC,MAAKA,KAAKhC,EAAAA,EAAAA,oBAErCk0B,IAAmBhqB,EAAAA,GAAAA,gBACvB,2BAGIiqB,GAAqB,IAAIxV,IAAc,IAAAyV,GAAA,IAAArvB,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAqvB,GAAA,IAAAzkB,QAAA0kB,GAAA,IAAAtvB,QAAAuK,GAAA,IAAAvK,QAAAuvB,GAAA,IAAAvvB,QAwB7C,MAAAwvB,WAG2BpvB,EAAAA,iBAA8CC,WAAAA,GAAA,SAAAC,YAAA2K,EAAAA,GAAAA,GAAA,KAAAokB,KACvE9uB,EAAAA,EAAAA,GAAA,KAAAR,GAAA0vB,GAAA,QAWAlvB,EAAAA,EAAAA,GAAA,KAAAN,IAAAyvB,GAAA,MAAAC,GAAA,SAMApvB,EAAAA,EAAAA,GAAA,KAAAL,IAAA0vB,GAAA,MAAAC,GAAA,SAMAtvB,EAAAA,EAAAA,GAAA,KAAA+uB,IAAYQ,GAAA,MAAG,MACb5jB,EAAAA,GAAAA,GAAAmjB,GAAAjuB,KAAK2uB,IAAY3jB,MAAM,KAGzB7L,EAAAA,EAAAA,GAAA,KAAAgK,GAAAylB,GAAA,QAMAzvB,EAAAA,EAAAA,GAAA,KAAAgvB,IAAWU,GAAA,MAAG,MACZ/jB,EAAAA,GAAAA,GAAAmjB,GAAAjuB,KAAK8uB,IAAW9jB,MAAM,GACtB,gBA1BO+jB,GAAW,OAAApvB,EAAAA,EAAAA,GAAAhB,GAAA,qBAAXowB,CAAWnvB,IAAAC,EAAAA,EAAAA,GAAAlB,GAAA,KAAAiB,EAAA,oBAMXovB,GAAe,OAAArvB,EAAAA,EAAAA,GAAAd,GAAA,yBAAfmwB,CAAepvB,IAAAC,EAAAA,EAAAA,GAAAhB,GAAA,KAAAe,EAAA,CAsBxBE,MAAAA,GACE,OACEvF,IAAAA,cAAC00B,GAAqB,CACpBF,YAAa/uB,KAAK+uB,YAClBC,gBAAiBhvB,KAAKgvB,gBACtBE,QAAQvvB,EAAAA,EAAAA,GAAKwuB,GAALnuB,MACRkQ,SAASvQ,EAAAA,EAAAA,GAAKuuB,GAALluB,OAGf,EAQFmvB,eAAeC,GAAgB7yB,EAE7B2T,GACA,IAFA,MAAE/U,EAAK,KAAE8K,EAAI,WAAEsB,GAAqBhL,EAGpC,MAAM6qB,EAAQnhB,EACX0C,QAAQ,oBAAqB,QAC7BA,QAAQ,aAAc,KACtBA,QAAQ,aAAc,KAEnB0mB,EAAcjI,EAAM1qB,OAAS,IAAM0qB,EAAM9kB,MAAM,EAAG,KAAO8kB,EAE/D,UACQ0G,GAAiB,CACrB/wB,UAAW,WACXsK,KAAM,CACJD,IAAK,OACLoM,MAAO,SACPnM,KAAM,QACNlL,MAAO,CACLmzB,MAAO,8BAGXn0B,QACAk0B,YAAa,eAAeE,GAAOC,YAAYH,UAC/Cpf,UAAU,EACVwf,aAAa,EACbC,YAAaC,GAAAA,KAAK3c,EAAE,GAAGzP,MAAM2O,GAAE0b,gBAC/BgC,YAAa,CACX5nB,IAAK,kEAAkET,IACvE6I,OAAQ,UAEVyf,YAAY,EACZC,WAAYH,GAAAA,KAAK3c,EAAE,GAAGzP,MAAM2O,GAAE2b,YAElC,CAAE,MACA,CACA,QACA,IAAKE,GAAmB1gB,IAAI9F,GAAa,CACvCwmB,GAAmBhI,IAAIxe,GACvB,UACQwoB,EAAAA,GAAAA,GAA2B,CAC/BC,YAAa,CAACzoB,KAEhB2I,GACF,CAAE,MAAO5R,GAEP2xB,QAAQC,MAAM,0BAA2B5xB,EAC3C,CACF,CACF,CACF,CAEO,SAAS2wB,GAAqB1xB,GAKN,IALO,YACpCwxB,EAAW,gBACXC,EAAe,OACfE,EAAM,QACNhf,GAC2B3S,EA0D3B,OAzDA8D,EAAAA,EAAAA,YACE,KACgC8tB,WAC5B,MAAMvE,SAAcuF,EAAAA,GAAAA,GAAkC,CAAC,IACpDvF,KACCA,EAAKluB,QACPkuB,EACG5pB,QAAQ5G,GAASA,EAAKg2B,UACtBC,UACAxX,SAASze,IACRg1B,GAAiBh1B,EAAM8V,EAAQ,GAErC,EAEFogB,EAAuB,GAGzB,KAGFjvB,EAAAA,EAAAA,YAAU,MACH0tB,GAAeC,GAClBI,GAAiBJ,EAAiB9e,EACpC,GACC,CAACA,EAAS6e,EAAaC,KAE1B3tB,EAAAA,EAAAA,YAAU,KACR,IAAK0tB,EACH,OAEF,IAAIwB,GAAU,EACd,MAAMC,EAAerB,UACnB,IAAIoB,EAGJ,IAMEnB,SALqBqB,EAAAA,GAAAA,GAAyB,CAC5CC,kBAAmB,CACjBC,kBAAkB,KAGczgB,GACpCgf,IACAsB,GACF,CAAE,MAAON,GAAO,IAAAU,EACd,MAAMC,GAAMC,EAAAA,EAAAA,mBAAkBZ,GAC1BW,SAAkB,QAAfD,EAAHC,EAAK3J,qBAAa,IAAA0J,GAAlBA,EAAoBt1B,SAAS,YAC/Bk1B,GAEJ,GAGF,OADAA,IACO,KACLD,GAAU,CAAI,CACf,GACA,CAACrgB,EAASgf,EAAQH,IAEd,IACT,CA3HCgC,GAAA3C,KAAA9vB,GAAA+vB,GAAAC,GAAAC,GAAAC,GAAAC,GAAAE,GAAAqC,GAAAtC,GAAAE,GAAAE,GAAAmC,GAAApC,IAAAjsB,GAAAorB,GAAAnrB,MAAAC,EAAAA,EAAAA,GAAAiuB,GAAA,CAnDAr3B,GAAc,oBAAqB,CAClCqJ,WAAY,CAACI,GAAAA,MACb,EAUCxJ,GAAS,CAAEuH,KAAMmC,UAAU,kBAM3B1J,GAAS,CAAEyJ,WAAW,IAAQ,sBAM9BxH,GAAM,CAAEsF,KAAM,uBAAuB,eAAAiM,IAAAxN,EAAAA,EAAAA,GAAAb,GAAAqO,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAAf,GAAAqO,EAAAvN,IAAA,CAUrChE,GAAM,CAAEsF,KAAM,sBAAsB,cAAAiM,IAAAxN,EAAAA,EAAAA,GAAAwJ,GAAAgE,GAAA,CAAAA,EAAAvN,KAAAC,EAAAA,EAAAA,GAAAsJ,GAAAgE,EAAAvN,KAAA,GAAAwN,GAAA+gB,GAAA9gB,KAAAC,EAAAA,GAAAA,GAAAF,KA/BZpO,EAAAA,mBAAgB6D,K,qCCtC3C,MAAMquB,GAAkB,IAAI3Y,IAAI,CAAC,OAAQ,KAAM,WAAY,eAKpD,SAAS4Y,GACdh2B,EACAi2B,EACAC,GAEA,GAAqB,iBAAVl2B,EAAX,CAGA,IAAIm2B,EAAAA,GAAAA,aAAYn2B,GAAQ,CAEtB,IAAIo2B,EACJ,MAAMC,EAAqC,CACzCC,eAAgB,IAAIlZ,IACpBmZ,mBAAmB,GAErB,IACEH,GAAYI,EAAAA,GAAAA,aAAYx2B,EAAO,CAC7By2B,YAAY,EACZC,MAAO,CACLC,mBAAmBC,EAAAA,GAAAA,yBAAwBP,EAAU,CAAC,UAG5D,CAAE,MAAOtB,GAEPD,QAAQC,MAAM,gCAAgC/0B,aAAkB+0B,EAClE,CAEA,GACEqB,KACEA,EAAUS,sBAAsB3kB,IAAI,QACnCgkB,IACEG,EAASE,mBACV,IAAIF,EAASC,gBAAgB5lB,OAAOomB,GAClCf,GAAgB7jB,IAAI4kB,MAE1B,CACA,MAAMC,EAAmC,CAAC,EAC1C,IAAK,MAAMh3B,KAAOq2B,EAAUS,sBAC1B,OAAQ92B,GACN,IAAK,OACHg3B,EAAQh3B,GAAOy0B,GAAAA,KAAKwC,UAClB,KACA,CAACf,GAAepwB,OAAOqC,UAEzB,MACF,IAAK,MACH6uB,EAAQh3B,GAAO,IACVm2B,EACHra,WAAYqa,aAAW,EAAXA,EAAa3uB,MAKjC,MAAM0vB,GAAkBC,EAAAA,GAAAA,QAAOd,EAAUS,sBAAuBE,GAEhE,IAAII,GAAa,EACjB,IAAK,MAAMp3B,KAAOq2B,EAAUS,sBAC1B,KAAKO,EAAAA,GAAAA,gBAAeH,EAAiBl3B,GAAM,CACzCo3B,GAAa,EACb,KACF,CAGF,GAAIA,EACF,IACE,MAAM3K,GAAS6K,EAAAA,GAAAA,MAAKjB,EAAUkB,WAAYlB,EAAUmB,OAAQ,CAC1DC,gBAAiBP,IAEnB,GAAsB,iBAAXzK,EACT,OAAOA,EAGTsI,QAAQC,MACN,wCAAwC/0B,sBACxCwsB,EAEJ,CAAE,MAAOuI,GAEPD,QAAQC,MACN,mCAAmC/0B,aACnC+0B,EAEJ,CAEJ,CACF,MAAO,GAAImB,EAET,OAAOl2B,EAAMwN,QACX,+CACA,IAAM0oB,EAAY3uB,OAGtB,OAAOvH,CArFP,CAsFF,CAEO,SAASy3B,GAAmBC,GACjC,MAAMC,EAAe,IAAIl0B,QACnBm0B,EAAgD,GAEtD,IAAK,MAAMrzB,KAAQmzB,EAAU,KAAAG,EAC3B,MAAMC,EAAoB,kBAAkBvzB,EAAKwzB,UAAUxzB,EAAKyzB,IAAI,GAAGC,SACrE1zB,EAAK6H,aAGPsgB,OAAOjJ,QAAiB,QAAVoU,EAACtzB,EAAKiwB,YAAI,IAAAqD,EAAAA,EAAI,CAAC,GAAGna,SAAQtc,IAAuB,IAArB82B,EAAMC,GAAU/2B,EACxDozB,GAAAA,KAAK4D,kBAAkBF,EAAMJ,EAAmBK,EAAU,IAE5DR,EAAaU,IAAI9zB,EAAMuzB,EACzB,CAEA,MAAO,CACLH,eACAW,QAASA,KACP,IAAK,MAAOJ,EAAMK,KAAOX,EACvBpD,GAAAA,KAAKgE,qBAAqBN,EAAMK,EAClC,EAGN,CCnIA,MAAME,GAA0BC,OAAO,qBACjCC,GAAoBD,OAAO,eA4D3BE,GAAe,CACnB3sB,IAAK,KACLC,KAAM,QA4FR,SAAS2sB,GAAQ3sB,GAEf,OAAIA,SAAAA,EAAM4sB,OACDF,GAEF1sB,QAAAA,EAAQ0sB,EACjB,CAEA,SAASG,GACPz3B,EACAiD,EACAy0B,EACArB,GAEA,OAAOr2B,aAAK,EAALA,EAAOY,KAAKjD,IAAS,IAAAg6B,EAC1B,MAAMC,EACJj6B,EAAKk6B,SAAWH,EAAgBprB,IAAI3O,EAAKk6B,SAM3C,OALID,GAGFF,EAAgBnO,OAAO5rB,EAAKk6B,SAEvB,IACFl6B,EACHmqB,UAMG,QANO6P,EACRF,GACE95B,EAAKmqB,SACL7kB,EACAy0B,EACArB,UACD,IAAAsB,EAAAA,EAAK,IACN3N,OACA4N,EACIA,EAAoBtoB,SACjBwoB,GAECL,GACEK,EAAc93B,MACd83B,EACAJ,EACArB,KAGL,IAEP,CAACgB,IAAoBp0B,EAAK2xB,YAC1B,CAACuC,IAA0Bd,EAAa/pB,IAAIrJ,GAC7C,GAEL,CAEA,SAAS80B,GACP5J,GAEA,OAMF,SAAuBA,GACrB,OAAO6J,EAAAA,GAAAA,QAAO7J,GAAOxwB,IAAI,IAAAs6B,EAAA,OAAc,QAAdA,EAAKt6B,EAAKu6B,YAAI,IAAAD,EAAAA,GAAI,GAAS,GAAE,OACxD,CARSE,CAAchK,GAAMvtB,KAAKjD,IAAI,IAC/BA,EACHmqB,SAAUiQ,GAAiBp6B,EAAKmqB,aAEpC,CAMAsQ,eAAeC,OACb,4BACAC,EAAAA,GAAAA,sBAtJK5F,eACL0D,GACqB,IAAAmC,EACrB,MAAMvP,EAAiB,GA0BjBwP,EAAWpC,EAASqC,MAAMx1B,GAAuB,SAAdA,EAAKwB,OAC9C,IAAK+zB,EACH,MAAO,GAGT,MAAME,EAA+B,GAC/BhB,EAAkB,IAAIiB,KACtB,aAAEtC,EAAY,QAAEW,GAAYb,GAAmBC,GAErD,IAAK,MAAMnzB,KAAQmzB,EAAU,KAAAwC,EAC3B,KAAM31B,EAAK41B,eAAgB51B,EAAK61B,eAA2B,QAAdF,EAAI31B,EAAKjD,aAAK,IAAA44B,GAAVA,EAAY34B,OAC3D,GAAkB,WAAdgD,EAAKwB,MAAqBxB,EAAK81B,kBAAmB,CACpD,IAAIC,EAAiBtB,EAAgBprB,IAAIrJ,EAAK81B,mBACzCC,IACHA,EAAiB,GACjBtB,EAAgBX,IAAI9zB,EAAK81B,kBAAmBC,IAE9CA,EAAep8B,KAAKqG,EACtB,MACEy1B,EAAc97B,KAAKqG,EAGzB,CAEA+lB,EAAKpsB,KAAK,KAEV,MAAMq8B,EAAkBlB,GACtBW,EAAcppB,SACXrM,GAECw0B,GAAmBx0B,EAAKjD,MAAOiD,EAAMy0B,EAAiBrB,MAItD6C,EAAmB,CACvB,CACEz6B,IAAK,IACL06B,OAAQnQ,EACRtqB,MAKG,QALE65B,EACH7D,GACE8D,EAAS95B,MACT23B,EAAa/pB,IAAIksB,GACjBA,EAAS5D,oBACV,IAAA2D,EAAAA,EAAIC,EAAS/B,OAChBjtB,KAAMgvB,EACN5tB,KAAM2sB,GAAQiB,EAAS5tB,MACvBkd,SAtEJ,SAASsR,EACPp5B,EACAq5B,GAEA,MAAMvR,EAAW9nB,aAAK,EAALA,EAAOY,KAAc,CAACjD,EAAM27B,KAAM,IAAAC,EACjD,MAAM96B,EAAM,GAAG46B,KAAaC,IAE5B,OADAtQ,EAAKpsB,KAAK6B,GACH,CACLA,MACAC,MAKG,QALE66B,EACH7E,GACE/2B,EAAKgB,KACLhB,EAAKw5B,IACLx5B,EAAK05B,YACN,IAAAkC,EAAAA,EAAI,GACP/vB,KAAM7L,EACNiN,KAAM2sB,GAAQ55B,EAAKiN,MACnBme,MAAOprB,EAAKU,OACZypB,SAAUsR,EAAYz7B,EAAKmqB,SAAUrpB,GACtC,IAEH,OAAOqpB,SAAAA,EAAU7nB,OAAS6nB,OAAWzX,CACvC,CAgDc+oB,CAAYH,EAAiB,OAM3C,OAFAjC,IAEOkC,CACT,KC7HAd,eAAeC,OACb,+BACAC,EAAAA,GAAAA,sBArBK5F,eACL0D,GAEA,MAAMjhB,EAAwB,IAExB,aAAEkhB,EAAY,QAAEW,GAAYb,GAAmBC,GAErD,IAAK,MAAMnzB,KAAQmzB,EAAU,KAAAmD,EAC3BpkB,EAAQvY,KAAK,CACX2W,MAAO,GAAiF,QAAjFgmB,EAAG7E,GAAyBzxB,EAAKvE,MAAO23B,EAAa/pB,IAAIrJ,GAAOA,EAAK2xB,oBAAY,IAAA2E,EAAAA,EAAI,OAAOt2B,EAAKwzB,UACxG1hB,MAAO9R,EAAKwzB,QAEhB,CAIA,OAFAO,IAEO7hB,CACT,KChCO,IAAKM,GAAC,SAADA,GAAC,OAADA,EAAC,oCAADA,EAAC,sBAADA,EAAC,8BAADA,EAAC,sDAADA,EAAC,8CAADA,EAAC,4DAADA,EAAC,sCAADA,EAAC,8BAADA,EAAC,sCAADA,EAAC,oCAADA,CAAC,MAab,MA4Ba3O,GAAK,0BAILyP,GAAI2c,GAAAA,KAAKwC,UAAU,KAAM5uB,I,iFCVtC0yB,EAAAA,GAAAA,gBAAe1yB,GDQQ,CAAE4O,GA9BN,CACjB+jB,iBAAkB,mBAClBC,UAAW,YACXC,cAAe,gBACfC,0BAA2B,+CAC3BC,sBACE,gFACFC,6BACE,6EACFC,kBAAmB,YACnBC,cAAe,gBACfC,kBAAmB,oBACnBC,iBAAkB,6BAkBStkB,GAfV,CACjB6jB,iBAAkB,OAClBC,UAAW,OACXC,cAAe,OACfC,0BAA2B,gBAC3BC,sBAAuB,sBACvBC,6BAA8B,sBAC9BC,kBAAmB,OACnBC,cAAe,OACfC,kBAAmB,SACnBC,iBAAkB,sBCDpB,MAAQj9B,cAAaA,KAAKE,EAAAA,EAAAA,oBAGpBg9B,GAAU,IAAIhpB,GAAAA,EAAYC,cAC1BgpB,GAAgB,wBAChBC,GAAgB,8BAIhBnxB,IAAc7L,EAAAA,EAAAA,WAAyC,WACvDi9B,IAAgBj9B,EAAAA,EAAAA,WAA+B,aAU/Ck9B,KATuBl9B,EAAAA,EAAAA,WAK3B,YAAa,CACbuZ,SAAU,SACVgV,SAAU,YAEWvuB,EAAAA,EAAAA,WAAmC,eAE1D,IAAAm9B,GAIA,MAAAC,WAG0Bl4B,EAAAA,iBACxBc,MAAAA,GACE,OAAOvF,IAAAA,cAAC48B,GAAoB,CAACC,WAAYp3B,KAAKo3B,YAChD,EACDC,GAAAH,IAAAD,GAAAp0B,KAAAC,EAAAA,EAAAA,GAAAu0B,GAAA,CAPA39B,GAAc,mBAAoB,CACjCqJ,WAAY,CAACI,GAAAA,MACb,YACwBnE,EAAAA,kBAAgB4D,EAAAC,KAAA,IAUrCy0B,GAAY,SAAZA,GAAY,OAAZA,EAAY,oBAAZA,EAAY,gCAAZA,EAAY,gCAAZA,EAAY,YAAZA,EAAY,oBAAZA,CAAY,EAAZA,IAAY,IA4BjB,MAAMC,GAAWA,KAAA,IAAAC,EAAA,OAAqB,QAAfA,EAACjrB,GAAAA,KAAK8B,iBAAS,IAAAmpB,OAAA,EAAfA,EAA4ClpB,MAAO,EAAE,EACtEmpB,GAAqBA,IAAM,gCAAgCF,OAC3DG,GAAwBA,IAAM,0BAA0BH,OAEvD,SAASJ,GAAqBh9B,GAAkC,IAAAw9B,EACrE,MAAM,WAAEP,GAAej9B,EACjBy9B,GAAWx3B,EAAAA,EAAAA,QAAyB,MACpCif,GAAejf,EAAAA,EAAAA,QAAuB,MAEtCgzB,GAAoC,QAA5BuE,GAAA1yB,EAAAA,EAAAA,cAAa4yB,uBAAe,IAAAF,OAAA,EAA5BA,EAA8Bp+B,KAAM,GAC5Cu+B,GAAeC,EAAAA,GAAAA,oBAQdC,EAAWC,IAAgB75B,EAAAA,EAAAA,UAAyB,OACpD85B,EAAWC,IAAgB/5B,EAAAA,EAAAA,UAAiB,KAC5Cg6B,EAAQC,IAAaj6B,EAAAA,EAAAA,UAAmB,KAGxCk6B,EAAaC,IAAkBn6B,EAAAA,EAAAA,UAAoB,KACnDo6B,EAAgBC,IAAqBr6B,EAAAA,EAAAA,UAA0B,KAC/Ds6B,EAAiBC,IAAsBv6B,EAAAA,EAAAA,YAGxCw6B,GAAQ93B,EAAAA,EAAAA,UAAQ,KAAM+3B,EAAAA,GAAAA,OAAe,IAGrCC,GAAoBhyB,EAAAA,EAAAA,cAAY,KAAe,IAAAiyB,EACnD,MAAMC,GAAc5B,SAAgB,QAAN2B,EAAV3B,EAAYhzB,YAAI,IAAA20B,GAAe,QAAfA,EAAhBA,EAAkBE,qBAAa,IAAAF,OAAA,EAA/BA,EAAiC78B,cAAe,EACpE,OAAOF,SAASk9B,gBAAgBh9B,YAAc88B,EAAc,IAAM,GAAG,GACpE,CAAC5B,IAGE+B,GAAoBryB,EAAAA,EAAAA,cACvBgM,IAAe,IAAAsmB,EAEd,MAAMC,EACJrB,SAAaU,GAAuB,QAARU,EAAfV,EAAiBY,cAAM,IAAAF,GAAvBA,EAAyBpxB,IAClC0wB,EAAgBY,OAAOtxB,IACvB8uB,GACAyC,EAAWF,EAAU1sB,WAAW,KAAO0sB,EAAY,IAAMA,EACzDG,EAAY1mB,GAAKolB,GAAa,GAC9BrhB,EAAK0iB,EAASE,WAAW,QAASD,IACxCt5B,EAAAA,EAAAA,cAAa7G,KAAKwd,EAAG,GAEvB,CAACmhB,EAAWU,EAAiBR,IAsO/B,OA/NA72B,EAAAA,EAAAA,YAAU,KACR,MAAMq4B,EAAuBp7B,KACb,uBAAuBq7B,KAAKC,UAAUC,WAC7Bv7B,EAAEw7B,QAAUx7B,EAAEy7B,UAEb,MAAVz7B,EAAEpD,MACdoD,EAAEqG,iBAEFszB,GAAc+B,GACPA,IAEClB,KAMK,KAUTA,MAAwBd,IAE1BmB,IACAlB,GAAa,IAEjB,EAIF,OADAn8B,OAAO4T,iBAAiB,UAAWgqB,GAC5B,IAAM59B,OAAO6T,oBAAoB,UAAW+pB,EAAoB,GACtE,CAACZ,EAAmBK,KAIvB93B,EAAAA,EAAAA,YAAU,KAAM,IAAA44B,EACd,IAAKjC,EAAW,OAGA,QAAhBiC,EAAArC,EAASp2B,eAAO,IAAAy4B,GAAhBA,EAAkBrnB,QAElB,MAAMsnB,EAAsB57B,IAExB+gB,EAAa7d,UACZlD,EAAE67B,eAAe7+B,SAAS+jB,EAAa7d,UAExCy2B,GAAa,EACf,EAGImC,EAAgB97B,IACN,WAAVA,EAAEpD,KAA8B,QAAVoD,EAAEpD,KAC1B+8B,GAAa,EACf,EAOF,OAHAn8B,OAAO4T,iBAAiB,QAASwqB,GAAoB,GACrDp+B,OAAO4T,iBAAiB,UAAW0qB,GAE5B,KAELt+B,OAAO6T,oBAAoB,QAASuqB,GAAoB,GACxDp+B,OAAO6T,oBAAoB,UAAWyqB,EAAa,CACpD,GACA,CAACpC,KAIJ32B,EAAAA,EAAAA,YAAU,KAEJ22B,GAAoC,IAAvBM,EAAY57B,QACLyyB,WACpB,MAAMkL,EAA6B,CACjC,CACEn5B,KAAMo2B,GAAagD,SACnB53B,KAAMsQ,GAAEd,GAAEgkB,kBACVvuB,UAAU,EACV4yB,WAAY,GACZjB,OAAQ,CAAEtxB,IAAK6uB,GAAe2D,kBAAmB,KAEnD,CACEt5B,KAAMo2B,GAAamD,SACnB/3B,KAAMsQ,GAAEd,GAAEikB,WACVxuB,UAAU,EACV4yB,WAAY,GACZjB,OAAQ,CAAEtxB,IAAK8uB,GAAe0D,kBAAmB,KAEnD,CACEt5B,KAAMo2B,GAAavnB,KACnBrN,KAAMsQ,GAAEd,GAAEkkB,eACVzuB,UAAU,EACV4yB,WAAY,GACZjB,OAAQ,CACNtxB,IAzNU,0CA0NVwyB,kBAAmBxnB,GAAEd,GAAEmkB,8BAK7B,IAAI,IAAAqE,EACF,MAMMC,GACI,QAARD,SAPgBE,EAAAA,GAAAA,GAAyB,yBAA0B,CACnEC,KAAM,EACNC,UAAW,IACXC,OAAQ,CAAC,OAAQ,OAAQ,WAAY,SAAU,iBAI3CnQ,YAAI,IAAA8P,OAAA,EAARA,EAAUr9B,KAAKjD,IACb,MAAM2H,EAAI3H,EACJk/B,EAAwBv3B,EAAEu3B,QAAU,CACxCtxB,IAAK,GACLwyB,kBAAmB,IAcrB,OAXIz4B,EAAEb,OAASo2B,GAAagD,SAAUhB,EAAOtxB,IAAM6uB,GAC1C90B,EAAEb,OAASo2B,GAAamD,SAC/BnB,EAAOtxB,IAAM8uB,GAEb,CACEQ,GAAa0D,eACb1D,GAAa2D,gBACb3/B,SAASyG,EAAEb,QAEbo4B,EAAOtxB,IAAM,2CAAyBjG,EAAEW,gBAEnC,IAAKX,EAAGu3B,SAAQ,MACnB,GAERf,EACEoC,EAAYj+B,OAAS,EAAIi+B,EAAcN,EAE3C,CAAE,MACA9B,EAAe8B,EACjB,GAEFa,EACF,GACC,CAAClD,EAAWM,EAAY57B,UAI3B2E,EAAAA,EAAAA,YAAU,KACR,GAA2B,IAAvBi3B,EAAY57B,OAAc,OAE9B,MAAMkV,EAAU0mB,EACbt3B,QACEe,IAAC,IAAAo5B,EAAA,OACCp5B,EAAE4F,aAA0B,QAAbwzB,EAACp5B,EAAEw4B,kBAAU,IAAAY,GAAZA,EAAcz+B,SAAUqF,EAAEw4B,WAAWj/B,SAAS83B,GAAO,IAEzE/1B,KAAK0E,IAAC,IAAWA,EAAGiO,MAAOjO,EAAEW,KAAM8O,MAAOzP,EAAEW,SAE/C+1B,EAAkB7mB,GAGlB,MAAMwpB,EAAmBxE,GAAQ9nB,QAAQ4oB,MACnC2D,EAAUzpB,EAAQsjB,MAAMnzB,GAAMA,EAAEW,OAAS04B,IACzCE,EACJ1pB,EAAQsjB,MAAMnzB,GAAMA,EAAEb,OAASo2B,GAAamD,YAAa7oB,EAAQ,GAEnE+mB,EAAmB0C,GAAWC,EAAc,GAC3C,CAAChD,EAAalF,KAGjB/xB,EAAAA,EAAAA,YAAU,KACR,GAAIq3B,EAAiB,KAAA6C,EACnB,MAAMC,EAAa,GAAG/D,QAAwBiB,EAAgBh2B,OAC9D21B,EAAqC,QAA5BkD,EAAC3E,GAAQ9nB,QAAQ0sB,UAAW,IAAAD,EAAAA,EAAI,GAC3C,IACC,CAAC7C,IAiDFn+B,IAAAA,cAACkhC,GAAAA,GAAc,CACbjoB,MAAO,CACLkoB,UACmB,YAAjB5D,EACItkB,GAAAA,EAAMmoB,cACNnoB,GAAAA,EAAMooB,mBAGdrhC,IAAAA,cAACshC,GAAAA,GAAa,CACZhc,UAAWuX,EACXwB,MAAOA,EACPkD,aAAa,QAEbvhC,IAAAA,cAAA,OAAK4B,MAAO,CAAE0Y,SAAU,YAActS,IAAK8c,GACzC9kB,IAAAA,cAAA,OACEU,UAAWoK,IAAW,YAAa,CACjC02B,mBAAoB/D,EACpBgE,sBAAoC,IAAdhE,IAExB35B,QAAUC,GAAMA,EAAEC,mBAElBhE,IAAAA,cAAA,OACEU,UAAWoK,IAAW,eAAgB,CACpC42B,oBAAqBjE,EACrBgE,sBAAoC,IAAdhE,KAGxBz9B,IAAAA,cAAA,OAAKU,UAAU,uBACbV,IAAAA,cAAA,QAAMU,UAAU,uBACdV,IAAAA,cAAA,QAAMU,UAAU,sBACdV,IAAAA,cAAC2hC,GAAAA,EAAM,CACL1qB,MAAOknB,aAAe,EAAfA,EAAiBlnB,MACxB2qB,kBAAoBr/B,GAAYA,EAAQm8B,cACxCmD,YAAU,EACVj2B,QAAQ,aACRhK,MAAO,CAAEX,MAAO,SAChBoW,QAAS4mB,EACTnlB,SAlFSgpB,IAC3BzF,GAAQ/mB,QAAQ6nB,KAAyB2E,GACzC1D,EAAmBH,EAAetD,MAAMnzB,GAAMA,EAAEW,OAAS25B,IAAK,KAmFhD9hC,IAAAA,cAAA,SACE6Y,YAnDZslB,SAAuB,QAAR4D,EAAf5D,EAAiBY,cAAM,IAAAgD,GAAvBA,EAAyB9B,kBACpB9B,EAAgBY,OAAOkB,mBAC5B9B,aAAe,EAAfA,EAAiBx3B,QAASo2B,GAAamD,SAClCznB,GAAEd,GAAEokB,wBACToC,aAAe,EAAfA,EAAiBx3B,QAASo2B,GAAagD,SAClCtnB,GAAEd,GAAEqkB,8BACN,GA8CSh0B,IAAKq1B,EACLpmB,MAAO0mB,EACP7kB,SA3EI/U,GACpB65B,EAAa75B,EAAE8R,OAAOoB,OA2EN+qB,UArFUj+B,IAC1B,GAAc,UAAVA,EAAEpD,KAAmBg9B,GAAaQ,EAAiB,CACrD,MAAM8C,EAAa,GAAG/D,QAAwBiB,EAAgBh2B,OAC9Dk0B,GAAQ/mB,QAAQ2rB,GAAYgB,EAAAA,GAAAA,MAAK,CAACtE,KAAcE,GAAQ91B,MAAM,EAAG,KACjE62B,GACF,OAkFiBjB,GACD39B,IAAAA,cAAA,QAAMU,UAAU,gBACdV,IAAAA,cAACoL,GAAW,CACV1K,UAAU,mBACVmM,IAAI,OACJC,KAAK,eACLmM,MAAM,SACNnV,QAtFFo+B,IAAMtE,EAAa,WA8F3BH,GACAz9B,IAAAA,cAACy8B,GAAc,CAAClX,QAAS9M,GAAEd,GAAEskB,mBAAoBz5B,UAAU,QACzDxC,IAAAA,cAACw8B,GAAa,CACZ14B,QA7FUq+B,KACpB5D,IACFK,IAEAlB,GAAa,EACf,EAyFch9B,UAAWoK,IAAW,SAAU,CAC9Bs3B,gBAA8B,IAAd3E,IAElB4E,MAAM,SACN17B,KAAK,QACL27B,YAAa,CACXC,OAAQ,OACRC,WAAY,OACZC,SAAU,QAEZ31B,KAAM,CAAEA,KAAM,SAAUmM,MAAO,WAAYpM,IAAK,YAMxD7M,IAAAA,cAAA,OACEU,UAAWoK,IAAW,yBAA0B,CAC9C43B,8BAA+BjF,EAC/BkF,gCAA8C,IAAdlF,KAGlCz9B,IAAAA,cAAA,OAAKU,UAAU,wBACbV,IAAAA,cAAA,OAAKU,UAAU,oBAAoB+X,GAAEd,GAAEukB,gBACvCl8B,IAAAA,cAAA,OAAKU,UAAU,4BACZm9B,EAAO/6B,KAAK0E,GACXxH,IAAAA,cAAA,QACEW,IAAK6G,EACL9G,UAAU,yBACVoD,QAASA,IAnHI8+B,KAC7B,GAAIzE,EAAiB,CACnB,MAAM8C,EAAa,GAAG/D,QAAwBiB,EAAgBh2B,OAC9Dk0B,GAAQ/mB,QAAQ2rB,GAAYgB,EAAAA,GAAAA,MAAK,CAACW,KAAQ/E,GAAQ91B,MAAM,EAAG,KAC3D62B,EAAkBgE,EACpB,GA8G+BC,CAAsBr7B,IAErCxH,IAAAA,cAAA,QAAMU,UAAU,sBAAsBE,MAAO4G,GAC1CA,OAILq2B,EAAO17B,QACPnC,IAAAA,cAAA,OAAKU,UAAU,aAAa+X,GAAEd,GAAEwkB,sBAItCn8B,IAAAA,cAAA,OAAKU,UAAU,kBAAkB+X,GAAEd,GAAEykB,uBAtHxB0G,IAAMf,CA4H/B,C,kEChfIljC,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,ooBAAqoB,KAE9qB,QAAeH,EAAwBI,U,kECJnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,6jBAC0V,KAEnY,QAAeH,EAAwBI,U,kECLnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,2DAA4D,KAErG,QAAeH,EAAwBI,U,kECJnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,ulBAAwlB,KAEjoB,QAAeH,EAAwBI,U,kECJnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,wYAAyY,KAElb,QAAeH,EAAwBI,U,kECJnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,yKACkD,KAE3F,S,kECLIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,s+BAE8hB,KAEvkB,QAAeH,EAAwBI,U,kECNnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,4iFAGgyC,KAEz0C,QAAeH,EAAwBI,U,kECPnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,kqGAG0lE,KAEnoE,QAAeH,EAAwBI,U,kECPnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,k4DAEw6C,KAEj9C,QAAeH,EAAwBI,U,kECNnCJ,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,4nGACo3D,KAE75D,QAAeH,EAAwBI,U","sources":["webpack:///./src/launchpad-quick-access/styles.shadow.css","webpack:///./src/sidebar-sub-menu/styles.shadow.css","webpack:///./src/poll-announce/notification.module.css","webpack:///./src/sidebar/sidebar-menu/styles.shadow.css","webpack:///./src/frame-breadcrumb/styles.shadow.css","webpack:///./src/directory/styles.shadow.css","webpack:///./src/sidebar/styles.shadow.css","webpack:///./src/search-launchpad/styles.shadow.css","webpack:///./src/launchpad-config/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-item/styles.shadow.css","webpack:///./src/nav-logo/styles.shadow.css","webpack:///./src/nav-menu/index.tsx","webpack:///./src/launchpad/index.tsx","webpack:///./src/launchpad-button-v2/index.tsx","webpack:///./src/launchpad-config/wrapped-bricks.ts","webpack:///./src/launchpad-config/MenuGroup.tsx","webpack:///./src/launchpad-config/index.tsx","webpack:///./src/easyops-navbar-alerts/index.tsx","webpack:///./src/launchpad-quick-access/index.tsx","webpack:///./src/search-launchpad/host-context.css?4d0b","webpack:///./src/search-launchpad/i18n.ts","webpack:///./src/search-launchpad/index.tsx","webpack:///./src/launchpad-recent-visits/index.tsx","webpack:///./src/app-bar-wrapper/index.tsx","webpack:///./src/frame-breadcrumb/index.tsx","webpack:///./src/sidebar/sidebar-menu-item/index.tsx","webpack:///./src/sidebar/utils.tsx","webpack:///./src/sidebar/sidebar-menu-group/index.tsx","webpack:///./src/sidebar/sidebar-menu-submenu/index.tsx","webpack:///./src/sidebar/sidebar-menu/index.tsx","webpack:///./src/images/fixed.svg","webpack:///./src/images/toFixed.svg","webpack:///./src/sidebar/i18n.ts","webpack:///./src/sidebar/index.tsx","webpack:///./src/sidebar-sub-menu/index.tsx","webpack:///./src/directory/index.tsx","webpack:///./src/directory-tree/DirectoryTreeContext.ts","webpack:///./src/directory-tree/Tree.tsx","webpack:///./src/directory-tree/utils.ts","webpack:///./src/directory-tree/index.tsx","webpack:///./src/directory-tree/directory-tree-leaf/index.tsx","webpack:///./src/directory-tree/constants.ts","webpack:///./src/directory-tree/directory-tree-internal-node/arrow.svg","webpack:///./src/directory-tree/directory-tree-internal-node/index.tsx","webpack:///./src/nav-logo/index.tsx","webpack:///./src/poll-announce/i18n.ts","webpack:///./src/poll-announce/notification.module.css?4226","webpack:///./src/poll-announce/index.tsx","webpack:///./src/data-providers/shared/smartDisplayForMenuTitle.ts","webpack:///./src/data-providers/get-menu-config-tree.ts","webpack:///./src/data-providers/get-menu-config-options.ts","webpack:///./src/query-search/i18n.ts","webpack:///./src/query-search/index.tsx","webpack:///./src/directory-tree/styles.shadow.css","webpack:///./src/app-bar-wrapper/styles.shadow.css","webpack:///./src/poll-announce/styles.shadow.css","webpack:///./src/launchpad-recent-visits/styles.shadow.css","webpack:///./src/easyops-navbar-alerts/styles.shadow.css","webpack:///./src/search-launchpad/host-context.css","webpack:///./src/directory-tree/directory-tree-leaf/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-group/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-submenu/styles.shadow.css","webpack:///./src/directory-tree/directory-tree-internal-node/styles.shadow.css","webpack:///./src/query-search/styles.shadow.css"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.quick-access-list{display:grid;gap:14px;grid-template-columns:repeat(2,1fr);list-style:none;margin:0;padding:0}.sidebar-menu-item{display:flex;align-items:center;justify-content:space-between;overflow:hidden}.sidebar-menu-item > eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link){display:flex;align-items:center;height:20px;gap:8px;color:var(--color-header-text)}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-item-remove{color:var(--color-secondary-text);cursor:pointer}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon{color:var(--color-brand-hover)}@supports not (inset: 0){.sidebar-menu-item,\n .sidebar-menu-item > eo-link::part(link){gap:0}.sidebar-menu-icon{margin-right:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.menu-container{box-sizing:border-box;background:var(--third-menu-default-bg);border:1px solid var(--stroke-color-default);border-width:0 1px 0 0;border-radius:0px;padding:20px 0px;height:100%}.menu-container .header{display:flex;gap:10px;align-items:center;font-size:var(--title-font-size);padding:0 20px 16px 20px;line-height:26px;color:var(--color-header-text)}.menu-container .header .title{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-wrap:break-word}.menu-container .content{padding:0 12px}.menu-container .menu-item,.menu-container .menu-sub-item::part(sub-menu-item-title){margin:0;padding-right:16px;height:40px;line-height:40px;border-radius:4px;margin-bottom:4px}.menu-container .menu-item::part(menu-item-icon),.menu-container .menu-sub-item::part(menu-item-icon){color:var(--color-secondary-text)}.menu-container .menu-item-link{width:100%;color:var(--color-secondary-text)}.menu-container .menu-item-text,.menu-container .menu-group-text,.menu-container .menu-item-link{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-container .menu-item-text{display:block;box-sizing:border-box;color:var(--antd-text-color)}.menu-container .menu-item:hover{background:var(--third-menu-item-hover-bg);color:var(--color-header-text)}.menu-container .menu-item:hover .menu-item-text{color:var(--color-header-text);font-weight:var(--font-weight-400)}.menu-container .in-submenu .menu-item-text{color:var(--color-normal-text)}.menu-container .menu-sub-item::part(sub-menu-item-title):hover{color:var(--color-header-text)}.menu-container .menu-item-text.item-has-icon{margin-left:6px}.menu-container .menu-item[active]{color:var(--color-brand);background-color:var(--third-menu-item-selected-bg)}.menu-container .menu-item[active] .menu-item-text{color:var(--color-brand);font-weight:var(--font-weight-500)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `.message--Fxvh9j9V{color:var(--color-normal-text);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"message\": `message--Fxvh9j9V`\n};\nexport default ___CSS_LOADER_EXPORT___;\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;transition:width var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.sidebar-menu-item-list slot::slotted(*){margin-top:6px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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:flex;height:22px;align-items:center}:host([hidden]){display:none}.breadcrumb-item-prefix-icon{font-size:14px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.directory-container{padding:20px 8px 24px 24px;background:var(--color-fill-global-bg-2);border-right:1px solid var(--color-text-divider-line);height:calc(100vh - var(--app-bar-height) - 44px);overflow-y:auto;scrollbar-width:none}.directory-container-not-border{border-right:none}.directory-title{font-size:var(--sub-menu-title-font-size);margin-bottom:24px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.directory-menu-list > .menu-item-group{padding-top:14px}.directory-menu-list > .menu-item-group:first-child{padding-top:0}.directory-menu-list .menu-item-title-group,\n.directory-menu-list .menu-item-title-item{display:flex;align-items:center;justify-content:space-between}.directory-menu-list .menu-item-title-group{color:#8c8c8c;font-size:12px;margin-bottom:2px}.directory-menu-list .menu-item-title-item{font-size:14px;cursor:pointer;line-height:24px;padding:3px 0}.directory-menu-list .menu-item-title-suffix-icon{width:24px;height:24px;display:flex;justify-content:center;align-items:center;font-size:14px;border-radius:var(--small-border-radius);cursor:pointer}.directory-menu-list\n .menu-item-title-suffix-icon:not(\n .menu-item-title-suffix-icon-disabled\n ):hover{background:var(--color-info-icon-bg);color:var(--color-brand-hover)}.directory-menu-list .menu-item-title-item > .menu-title-text:hover{color:var(--color-brand-hover)}.directory-menu-list .menu-item-title-item > .menu-title-text-active{color:var(--color-brand)}.directory-menu-list .menu-item-title-suffix-icon-disabled{color:var(--color-disabled-text);cursor:not-allowed}.directory-menu-list .menu-title-text{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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","// 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}.container{position:relative}.dropdown{margin-top:5px;position:absolute;top:100%;left:0px;width:100%;z-index:1050;padding:20px 24px 24px;overflow:hidden;box-sizing:border-box;background-color:var(--antd-select-dropdown-bg);border-radius:4px;box-shadow:var(--antd-box-shadow-base);display:none}.dropdown-active{display:block}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.dropdown-content{min-width:0;display:flex;flex-direction:column;gap:24px;max-height:260px;overflow-y:auto}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.loading > :not(.spinner){display:none}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-groups,\n.menu,\n.sub-menu{list-style:none;margin:0;padding:0}.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-item > eo-link{display:block;min-width:0}.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-groups{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--eo-search-launchpad-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-star{cursor:pointer}.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}@supports not (inset: 0){.search-box,\n .menu,\n .sub-menu,\n .menu-item:not(.folder),\n .menu-item > eo-link::part(link){gap:0}.dropdown-content{display:grid;grid-auto-flow:row}.dropdown-content:not(.loading){height:min-content}.menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none;--local-menu-icon-color:rgba(255,255,255,0.45)}ul{list-style:none;margin:0;padding:0}.menu-groups{display:grid;gap:32px 16px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{display:block}.menu-folder-label-wrapper > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-group-label-wrapper,\n.menu-folder-label-wrapper,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-group-label-wrapper{gap:3px}.menu-group:not(.empty) .menu-group-label-wrapper{margin-bottom:14px}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text)}.menu-icon{color:var(--local-menu-icon-color)}.menu-group.blocked .menu-group-label,\n.menu-item.blocked > .menu-folder-label-wrapper .menu-item-label,\n.menu-item.blocked > .menu-folder-label-wrapper .menu-icon,\n.menu-item.blocked > .menu-folder-label-wrapper .menu-item-toggle,\n.menu-item.disabled > eo-link::part(link),\n.menu-item.disabled .menu-icon{color:var(--color-disabled-text)}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{max-width:100%;width:-moz-fit-content;width:fit-content;min-width:0}.sub-menu:not(.expanded){display:none}.sub-menu{margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item:not(.empty) .sub-menu{margin-top:14px}.menu-item-toggle{color:var(--color-secondary-text)}.menu-config{visibility:hidden;color:var(--color-brand);cursor:pointer;display:flex;justify-content:center;align-items:center;height:24px;width:0}.menu-config.active,\n.menu-group-label-wrapper:hover .menu-config,\n.menu-item:not(.folder):not(.disabled):hover .menu-config,\n.menu-item:not(.folder):not(.blocked):hover .menu-config,\n.menu-folder-label-wrapper:hover .menu-config{visibility:visible;width:24px}.menu-config:hover,\n.menu-item:not(.disabled) > eo-link:hover::part(link),\n.menu-item:not(.disabled) > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover::part(link),\n.menu-folder-label-wrapper > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}@supports not (inset: 0){.sub-menu,\n .menu,\n .menu-group-label-wrapper,\n .menu-folder-label-wrapper,\n .menu-item:not(.folder),\n .menu-item > eo-link::part(link){gap:0}.menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.menu-icon{margin-right:8px}eo-dropdown-actions,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}eo-link{display:block}.menu-item{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-sidebar-item-normal-color);border-radius:var(--medius-border-radius);cursor:pointer;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-item-icon-container{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);font-size:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color)}:host([in-submenu]):host(:not([selected])) .menu-item{color:var(--left-sidebar-item-collapsed-color)}.menu-item-text{flex:1;margin-left:14px;margin-right:12px;font-size:14px;overflow:hidden;white-space:nowrap;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-item:hover{background:var(--left-sidebar-item-hover-bg)}:host([selected]) .menu-item{color:var(--left-sidebar-item-selected-color);background:var(--left-sidebar-item-selected-bg);box-shadow:0px 2px 12px 0px rgba(26,122,255,0.30196)}:host([selected]) .menu-item-icon-container{color:var(--left-sidebar-item-selected-color)}:host([selected]) .menu-item:hover{background-color:var(--left-sidebar-item-selected-hover-bg)}:host([menu-collapsed]) .menu-item{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host([menu-collapsed]) .menu-item-text{opacity:0}:host(:not([menu-collapsed])) .menu-item-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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:inline-block}:host([hidden]){display:none}.logo-container{position:relative;display:flex;justify-content:flex-start;align-items:center}.logo-link{cursor:pointer}.personalized-logo{height:24px;vertical-align:top}.easyops-icon{display:block;font-size:24px;color:var(--color-brand)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import React, {\n CSSProperties,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport styleText from \"./nav-menu.shadow.css\";\nimport { UnregisterCallback } from \"history\";\nimport type { SidebarMenu } from \"@next-bricks/basic/menu\";\nimport type {\n MenuItem as MenuItemComponent,\n MenuComponentProps,\n} from \"@next-bricks/basic/menu-item\";\nimport { isSubMenu, isGroup, renderLinkCom, renderSpanCom } from \"./utils.js\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n Placement,\n} from \"@next-bricks/basic/popover\";\nimport \"@next-core/theme\";\nimport classnames from \"classnames\";\nimport { ThreeLevelMenuPopoverContent } from \"./ThreeLevelMenuPopoverContent.js\";\nimport { SiteMapItem } from \"./site-map/SiteMapItem.js\";\nimport SiteMapStyleText from \"../nav-menu/site-map/SiteMapItem.shadow.css\";\nimport ItemTagStyleText from \"../nav-menu/site-map/ItemTag.shadow.css\";\nimport GroupItemStyleText from \"../nav-menu/site-map/GroupItem.shadow.css\";\nimport \"./host-context.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedMenuItem = wrapBrick<MenuItemComponent, MenuComponentProps>(\n \"eo-menu-item\"\n);\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n onBeforeVisibleChange: \"before.visible.change\",\n});\n\nconst GAP_WIDTH = 8;\n\ninterface NavMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n mainMenuTitleStyle: CSSProperties | undefined;\n}\n\ninterface MenuItemComProps {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuItem;\n topData?: boolean;\n selectedKey?: string[];\n showTooltip?: boolean;\n overflow?: boolean;\n mainMenuTitleStyle?: CSSProperties;\n}\ninterface SimpleMenuItemComProps extends MenuItemComProps {\n item: SidebarMenuSimpleItem;\n}\ninterface MenuGroupComProps extends MenuItemComProps {\n item: SidebarMenuGroup;\n}\nfunction RenderMenuItemCom(props: MenuItemComProps) {\n const { item } = props;\n return isSubMenu(item as SidebarMenuGroup, props.topData) ? (\n <SubMenuItemCom {...props} item={item as SidebarMenuGroup}></SubMenuItemCom>\n ) : isGroup(item) ? (\n <GroupMenuItemCom {...props} item={item as SidebarMenuGroup} />\n ) : (\n <SimpleMenuItemCom\n {...props}\n item={item as SidebarMenuSimpleItem}\n ></SimpleMenuItemCom>\n );\n}\nfunction SimpleMenuItemCom(props: SimpleMenuItemComProps) {\n const { item, index, hidden, showTooltip, selectedKey = [] } = props;\n return (\n <WrappedMenuItem\n data-index={index}\n className={hidden ? \"overflow-menu-item\" : \"\"}\n key={item.key}\n title={showTooltip ? item.text : \"\"}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n {renderLinkCom(item, { width: \"100%\" }, props.mainMenuTitleStyle)}\n </WrappedMenuItem>\n );\n}\n\nlet scrollWidth: number;\n// istanbul ignore next;\nconst handlePopupVisibleChange = (event: CustomEvent<boolean>) => {\n // 当用户设置滚动条一直显示时,来回切换 overflow: hidden 会导致滚动条显示或隐藏\n // 造成页面宽度变化而导致的抖动的问题\n const paddingRight =\n scrollWidth ??\n (scrollWidth = window.innerWidth - document.body.clientWidth);\n\n document.body.style.paddingRight = event.detail ? paddingRight + \"px\" : \"\";\n document.body.style.overflow = event.detail ? \"hidden\" : \"\";\n document.body.style.touchAction = event.detail ? \"none\" : \"\";\n};\n\nfunction SubMenuItemCom({\n index,\n hidden,\n item,\n topData,\n showTooltip,\n selectedKey = [],\n overflow,\n mainMenuTitleStyle,\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n subprime: !topData,\n \"overflow-menu-item\": hidden,\n })}\n arrow={false}\n trigger=\"hover\"\n placement={topData ? \"bottom-start\" : \"right-start\"}\n distance={0}\n anchorDisplay=\"block\"\n strategy=\"fixed\"\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label 22\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, !topData, { ...mainMenuTitleStyle })}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-wrapper\", {\n \"overflow-menu-wrapper\": overflow,\n })}\n >\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n />\n </React.Fragment>\n ))}\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction GroupMenuItemCom({\n item,\n showTooltip,\n selectedKey = [],\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n item.childLayout === \"category\" ? (\n <ThreeLevelMenuCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n />\n ) : (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n topData={false}\n />\n ) : (\n <>\n <div className=\"group-label\">{item.title}</div>\n <div className=\"group-wrapper\">\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n </React.Fragment>\n );\n })}\n </div>\n </>\n )\n ) : null;\n}\n\nfunction ThreeLevelMenuCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n mainMenuTitleStyle,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n mainMenuTitleStyle?: CSSProperties;\n}) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"three-level-menu-popover\", \"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n arrow={false}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n anchorDisplay={anchorDisplay}\n onBeforeVisibleChange={handlePopupVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, false, mainMenuTitleStyle)}\n </WrappedMenuItem>\n <div className=\"sub-menu-wrapper\">\n <ThreeLevelMenuPopoverContent\n menuItem={item}\n selectedKey={selectedKey}\n ></ThreeLevelMenuPopoverContent>\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction SitMapMenCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n topData,\n mainMenuTitleStyle,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n topData?: boolean;\n mainMenuTitleStyle?: CSSProperties;\n}) {\n const [visible, setVisible] = useState<boolean>();\n\n const handleVisibleChange = (event: CustomEvent<boolean>): void => {\n setVisible(event.detail);\n handlePopupVisibleChange(event);\n };\n\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n arrow={false}\n anchorDisplay={anchorDisplay}\n onBeforeVisibleChange={handleVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, false, mainMenuTitleStyle)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-sit-map-wrapper\", {\n \"in-group-site-map\": !topData,\n })}\n onClick={(e) => e.stopPropagation()}\n >\n <SiteMapItem\n menuGroup={item}\n selectedKey={selectedKey}\n visible={visible}\n />\n </div>\n </WrappedPopover>\n ) : null;\n}\n\n/**\n * 菜单构件\n * @author sailor\n * @category navigation\n */\n@defineElement(\"eo-nav-menu\", {\n styleTexts: [\n SiteMapStyleText,\n ItemTagStyleText,\n GroupItemStyleText,\n styleText,\n ],\n})\nclass NavMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n /**\n * 主菜单标题文字的自定义样式\n */\n @property({\n attribute: false,\n })\n accessor mainMenuTitleStyle: CSSProperties | undefined;\n\n /**\n * 是否显示 tooltip\n */\n @property({\n type: Boolean,\n })\n accessor showTooltip: boolean | undefined;\n\n render() {\n return (\n <NavMenuComponent\n menu={this.menu}\n showTooltip={this.showTooltip}\n mainMenuTitleStyle={this.mainMenuTitleStyle}\n />\n );\n }\n}\n\nfunction NavMenuComponent(props: NavMenuProps) {\n const { menu, showTooltip } = props;\n\n const history = getHistory();\n const navMenuWrapperRef = useRef<HTMLDivElement>(null);\n const [location, setLocation] = useState(history.location);\n const [overflowIndex, setOverflowIndex] = useState<number>(\n Number.MAX_SAFE_INTEGER\n );\n const { pathname, search } = location;\n\n const menuItems = useMemo(() => {\n return (menu?.menuItems ?? []).filter(\n (item) =>\n // 默认\n item.type === \"default\" ||\n // 没有类型\n !item.type ||\n // 分组类型并且没有子项,过滤\n ([\"group\", \"subMenu\"].includes(item.type) &&\n (item as SidebarMenuGroup).items?.length)\n );\n }, [menu?.menuItems]);\n\n const selectedKey = useMemo(() => {\n const { selectedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n return selectedKeys;\n }, [menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n return unListen;\n }, []);\n\n useEffect(() => {\n if (navMenuWrapperRef.current) {\n const resizeObserver = new ResizeObserver(() => {\n if (navMenuWrapperRef.current) {\n const { width } = navMenuWrapperRef.current.getClientRects()[0] ?? {};\n const childNodes = navMenuWrapperRef.current.childNodes;\n\n if (childNodes.length && width) {\n let wrapperWidth = width;\n let overflowIndex = childNodes.length;\n\n for (let i = 0; i < childNodes.length; i++) {\n const { width: childWidth, height: childHeight } = (\n childNodes[i] as HTMLElement\n ).getClientRects()[0];\n\n if (!childHeight && wrapperWidth - 40 < 0) {\n overflowIndex = i - 1;\n break;\n }\n\n wrapperWidth =\n wrapperWidth - childWidth - (i > 0 ? GAP_WIDTH : 0);\n if (wrapperWidth < 0) {\n overflowIndex = i;\n break;\n }\n }\n\n setOverflowIndex(overflowIndex < 0 ? 0 : overflowIndex);\n }\n }\n });\n resizeObserver.observe(navMenuWrapperRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, []);\n\n // istanbul ignore next;\n const overflowMenu = useMemo(\n (): SidebarMenuItem => ({\n type: \"subMenu\",\n title: \"···\",\n items: menuItems.slice(overflowIndex, menuItems.length).map((i) => ({\n ...i,\n type: i.type === \"group\" && i.items.length ? \"subMenu\" : i.type,\n })) as SidebarMenuItem[],\n }),\n [menuItems, overflowIndex]\n );\n\n return (\n <div ref={navMenuWrapperRef} className=\"nav-menu-wrapper\">\n {menuItems.map((item, index) => {\n const isHidden = overflowIndex <= index;\n return (\n <React.Fragment key={item.key}>\n {isSubMenu(item as SidebarMenuGroup, true) &&\n (item as SidebarMenuGroup).childLayout === \"category\" &&\n (item as SidebarMenuGroup).items?.length ? (\n <ThreeLevelMenuCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n ) : (item as SidebarMenuGroup).type === \"group\" &&\n (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n ) : (\n <RenderMenuItemCom\n index={index}\n hidden={isHidden}\n item={item}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n )}\n </React.Fragment>\n );\n })}\n <RenderMenuItemCom\n hidden={overflowIndex > menuItems.length}\n item={overflowMenu}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n overflow={true}\n topData={true}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n <slot name=\"afterMenu\" />\n </div>\n );\n}\n\nexport { NavMenu };\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { LaunchpadButton as LaunchpadButtonComponent } from \"./LaunchpadButton/LaunchpadButton.js\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport \"@next-core/theme\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./LaunchpadButton/LaunchpadButton.shadow.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\n/**\n * Launchpad 按钮构件\n * @author sailor\n * @insider\n */\n@defineElement(\"eo-launchpad-button\", {\n styleTexts: [styleText],\n})\nclass LaunchpadButton extends ReactNextElement {\n render() {\n return <LaunchpadButtonComponent />;\n }\n}\n\nexport { LaunchpadButton };\n","import React, { useEffect, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { getHistory, getRuntime } from \"@next-core/runtime\";\nimport type { lockBodyScroll as _lockBodyScroll } from \"@next-bricks/basic/data-providers/lock-body-scroll/lock-body-scroll\";\n// import { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport hotkeys from \"hotkeys-js\";\nimport classNames from \"classnames\";\n// import { K, NS, locales } from \"./i18n.js\";\nimport LaunchpadSvg from \"../images/launchpad.svg\";\nimport styleText from \"./styles.shadow.css\";\nimport platformCategoryStyleText from \"./PlatformCategory.shadow.css\";\nimport { Launchpad } from \"./Launchpad\";\nimport {\n deferredFavorites,\n deferredLaunchpadInfo,\n deferredPlatformCategories,\n} from \"./useLaunchpadInfo\";\nimport launchpadStyleText from \"./Launchpad.shadow.css\";\nimport \"./host-context.css\";\n\n// initializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\nconst lockBodyScroll = unwrapProvider<typeof _lockBodyScroll>(\n \"basic.lock-body-scroll\"\n);\n\n/**\n * Launchpad 启动台按钮(v2),点击后展开 Launchpad 面板,支持快捷键 Alt+L 开关、Esc 关闭。\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-button-v2\", {\n styleTexts: [styleText, platformCategoryStyleText, launchpadStyleText],\n})\nclass EoLaunchpadButtonV2 extends ReactNextElement {\n disconnectedCallback(): void {\n super.disconnectedCallback();\n lockBodyScroll(this, false);\n }\n\n render() {\n return <EoLaunchpadButtonV2Component host={this} />;\n }\n}\n\nexport function EoLaunchpadButtonV2Component({ host }: { host: HTMLElement }) {\n const [initialized, setInitialized] = useState(false);\n const [active, setActive] = useState(false);\n const toggleLaunchpad = (): void => {\n setActive((previous) => !previous);\n };\n\n useEffect(() => {\n // 当切换页面时,关闭Launchpad。\n const unlisten = getHistory().listen(() => {\n setActive(false);\n });\n return unlisten;\n }, []);\n\n useEffect(() => {\n // 打开一次 launchpad 后,保留 DOM。\n if (active && !initialized) {\n setInitialized(true);\n }\n }, [active, initialized]);\n\n // istanbul ignore next\n useEffect(() => {\n hotkeys.filter = function () {\n return true;\n };\n\n // 快捷打开/关闭 Launchpad\n hotkeys(\"alt+l\", (event) => {\n event.preventDefault();\n setActive((previous) => !previous);\n });\n\n // 按 Esc 关闭 Launchpad\n hotkeys(\"esc\", () => {\n setActive(false);\n });\n\n return () => {\n hotkeys.unbind(\"alt+l\");\n hotkeys.unbind(\"esc\");\n };\n }, []);\n\n useEffect(() => {\n lockBodyScroll(host, active);\n }, [active, host]);\n\n useEffect(() => {\n deferredLaunchpadInfo.schedulePrefetch();\n deferredFavorites.schedulePrefetch();\n getRuntime()?.getFeatureFlags()[\"launchpad-show-platform-category\"] &&\n deferredPlatformCategories.schedulePrefetch();\n }, []);\n\n return (\n <>\n <a\n role=\"button\"\n className={classNames(\"launchpad-button\", { active })}\n onClick={toggleLaunchpad}\n >\n <LaunchpadSvg />\n </a>\n <div\n className={classNames(\"mask\", { active })}\n onClick={toggleLaunchpad}\n ></div>\n {initialized && <Launchpad active={active} />}\n </>\n );\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping,\n} from \"@next-bricks/basic/dropdown-actions\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nexport const WrappedDropdownActions = wrapBrick<\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping\n>(\"eo-dropdown-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { get, pick } from \"lodash\";\nimport classNames from \"classnames\";\nimport { __secret_internals, checkIfByTransform } from \"@next-core/runtime\";\nimport type { SimpleAction } from \"@next-bricks/basic/actions\";\nimport {\n WrappedDropdownActions,\n WrappedIcon,\n WrappedLink,\n} from \"./wrapped-bricks\";\nimport type {\n ConfigMenuGroup,\n ConfigMenuItemDir,\n ConfigMenuItemNormal,\n ConfigVariant,\n MenuAction,\n MenuActionEventDetail,\n} from \"./interfaces\";\nimport { getLocaleName } from \"../shared/getLocaleName\";\n\nexport type ProcessedConfigMenuItemNormal = ConfigMenuItemNormal & {\n __pathname?: string;\n};\n\nexport interface MenuGroupProps {\n data: ConfigMenuGroup;\n actions?: MenuAction[];\n variant?: ConfigVariant;\n urlTemplate?: string;\n customUrlTemplate?: string;\n onMenuItemClick?(item: ProcessedConfigMenuItemNormal): void;\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function MenuGroup({\n data,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\n onMenuItemClick,\n onActionClick,\n}: MenuGroupProps) {\n // Make it compatible\n data.type ??= \"group\";\n const { name, locales, items } = data;\n const [dropdownActive, setDropdownActive] = useState(false);\n\n const filteredActions = useMemo(() => {\n return __secret_internals.legacyDoTransform(\n data,\n actions?.filter((item) => checkIfByTransform(item, data))\n ) as MenuAction[] | undefined;\n }, [actions, data]);\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li\n className={classNames(\"menu-group\", {\n empty: items.length === 0,\n blocked: data.allBlocked,\n })}\n >\n <div className=\"menu-group-label-wrapper\">\n <span className=\"menu-group-label\">{getLocaleName(locales, name)}</span>\n {variant !== \"menu-config\" && !!filteredActions?.length && (\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", {\n active: dropdownActive,\n })}\n />\n </WrappedDropdownActions>\n )}\n </div>\n <ul className=\"menu\">\n {items.map((item) =>\n item.type === \"dir\" ? (\n <MenuItemFolder\n key={item.instanceId}\n data={item}\n actions={actions}\n variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\n onMenuItemClick={onMenuItemClick}\n onActionClick={onActionClick}\n />\n ) : (\n <MenuItem\n key={`${item.type}-${item.id}`}\n data={item}\n actions={actions}\n variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\n onClick={(data) => {\n onMenuItemClick?.({ ...item, ...data });\n }}\n onActionClick={onActionClick}\n />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n data: ConfigMenuItemNormal;\n actions?: MenuAction[];\n variant?: ConfigVariant;\n urlTemplate?: string;\n customUrlTemplate?: string;\n onClick?(data: { __pathname?: string }): void;\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function MenuItem({\n data,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\n onClick,\n onActionClick,\n}: MenuItemProps) {\n const name = useMemo(() => getLocaleName(data.locales, data.name), [data]);\n\n const [dropdownActive, setDropdownActive] = useState(false);\n\n const filteredActions = useMemo(\n () =>\n __secret_internals.legacyDoTransform(\n data,\n actions?.filter((item) => checkIfByTransform(item, data))\n ) as MenuAction[] | undefined,\n [actions, data]\n );\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n let __pathname: string;\n let disabled = false;\n let linkUrl = \"\";\n\n if (variant === \"launchpad-config\" || variant === \"menu-config\") {\n if (data.type === \"app\") {\n linkUrl = parseUrlTemplate(urlTemplate, data, \"\")!;\n } else {\n // 禁用外链菜单项\n const urlObject = new URL(data.url, location.origin);\n __pathname = urlObject.pathname;\n disabled = urlObject.origin !== location.origin;\n linkUrl = disabled\n ? \"\"\n : parseUrlTemplate(\n customUrlTemplate,\n {\n ...data,\n __pathname,\n },\n \"\"\n )!;\n }\n }\n\n return (\n <li\n className={classNames(\"menu-item\", {\n disabled: disabled || data.allBlocked,\n })}\n onClick={() => {\n onClick?.({ __pathname });\n }}\n >\n <WrappedLink\n tooltip={disabled ? \"该菜单项为外链,不支持配置\" : \"\"}\n url={linkUrl}\n >\n <WrappedIcon\n className=\"menu-icon\"\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(data.menuIcon?.lib && data.menuIcon.icon\n ? (pick(data.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{name}</span>\n </WrappedLink>\n {variant !== \"menu-config\" && !!filteredActions?.length && (\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onClick={(event) => {\n event.stopPropagation();\n }}\n onActionClick={handleActionClick}\n data-testid={`menu-item-actions-${data.id}`}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", { active: dropdownActive })}\n />\n </WrappedDropdownActions>\n )}\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n data: ConfigMenuItemDir;\n actions?: MenuAction[];\n variant?: ConfigVariant;\n urlTemplate?: string;\n customUrlTemplate?: string;\n onMenuItemClick?(item: ProcessedConfigMenuItemNormal): void;\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nfunction MenuItemFolder({\n data,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\n onMenuItemClick,\n onActionClick,\n}: MenuItemFolderProps) {\n const { name, locales, items } = data;\n const [dropdownActive, setDropdownActive] = useState(false);\n const [expanded, setExpanded] = useState(false);\n\n const filteredActions = useMemo(\n () =>\n __secret_internals.legacyDoTransform(\n data,\n actions?.filter((item) => checkIfByTransform(item, data))\n ) as MenuAction[] | undefined,\n [actions, data]\n );\n\n const toggle = useCallback(() => {\n setExpanded((previous) => !previous);\n }, []);\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li\n className={classNames(\"menu-item folder\", {\n empty: items.length === 0,\n blocked: data.allBlocked,\n })}\n >\n <div className=\"menu-folder-label-wrapper\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">\n {getLocaleName(locales, name)}\n </span>\n <WrappedIcon\n lib=\"antd\"\n icon={expanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n {variant !== \"menu-config\" && !!filteredActions?.length && (\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", {\n active: dropdownActive,\n })}\n />\n </WrappedDropdownActions>\n )}\n </div>\n <ul className={classNames(\"sub-menu\", { expanded })}>\n {items.map((item) => (\n <MenuItem\n key={item.instanceId}\n data={item}\n actions={actions}\n variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\n onClick={(data) => {\n onMenuItemClick?.({ ...item, ...data });\n }}\n onActionClick={onActionClick}\n />\n ))}\n </ul>\n </li>\n );\n}\n\nfunction parseUrlTemplate(\n urlTemplate: string | undefined,\n data: unknown,\n fallback?: string\n) {\n return (\n urlTemplate?.replace(/{{(.*?)}}/g, (_match, key) =>\n encodeURIComponent(String(get(data, key.trim())))\n ) ?? fallback\n );\n}\n","import React, { useMemo } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport \"@next-core/theme\";\nimport type {\n ConfigMenuGroup,\n ConfigMenuItem,\n ConfigMenuItemApp,\n ConfigMenuItemCustom,\n ConfigMenuItemDir,\n ConfigMenuItemNormal,\n ConfigVariant,\n MenuAction,\n MenuActionEventDetail,\n} from \"./interfaces\";\nimport { MenuGroup, MenuGroupProps } from \"./MenuGroup\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst BASE_PATH = \"/next/\";\n\n/**\n * 进行 Launchpad 配置。\n *\n * 也可用于菜单自定义显示产品功能清单。\n *\n * @insider\n */\nexport\n@defineElement(\"nav.launchpad-config\", {\n styleTexts: [styleText],\n})\nclass LaunchpadConfig extends ReactNextElement implements LaunchpadConfigProps {\n /** Launchpad 配置菜单分组数据 */\n @property({ attribute: false })\n accessor menuGroups: ConfigMenuGroup[] | undefined;\n\n /** 菜单操作按钮配置列表 */\n @property({ attribute: false })\n accessor actions: MenuAction[] | undefined;\n\n /**\n * @default \"launchpad-config\"\n * @description 显示变体:launchpad-config(Launchpad 配置)、factory-launchpad-config(工厂配置)、menu-config(菜单配置)、blacklist-config(黑名单配置)\n */\n @property()\n accessor variant: ConfigVariant | undefined;\n\n /**\n * 菜单项 APP 类型的链接模板,例如可配置为 `/app/{{ id }}`。\n *\n * 注:仅用于 variant: \"menu-config\"。\n */\n @property()\n accessor urlTemplate: string | undefined;\n\n /**\n * 菜单项自定义类型的链接模板,例如可配置为 `/custom?url={{ __pathname }}`。\n *\n * 注:仅用于 variant: \"menu-config\"。\n * 外链菜单链接会设置为禁用。\n * `__pathname` 是运行时变量,表示 url 解析后的 pathname。\n */\n @property()\n accessor customUrlTemplate: string | undefined;\n\n /**\n * 屏蔽的 URL 列表,例如可配置为 `[\"/app/1\", \"/app/2\"]`。\n *\n * 注:仅用于 variant: \"blacklist-config\"。\n */\n @property({ attribute: false })\n accessor blacklist: string[] | undefined;\n\n /**\n * @description 点击菜单项时触发\n * @detail 被点击的菜单项数据(app 或 custom 类型)\n */\n @event({ type: \"menu-item.click\" })\n accessor #menuItemClickEvent!: EventEmitter<ConfigMenuItemNormal>;\n\n /**\n * @description 点击菜单操作按钮时触发\n * @detail { data: 操作关联的菜单项或分组, action: 被点击的操作按钮配置 }\n */\n @event({ type: \"action.click\" })\n accessor #actionClickEvent!: EventEmitter<MenuActionEventDetail>;\n\n #handleMenuItemClick = (item: ConfigMenuItemNormal) => {\n this.#menuItemClickEvent.emit(item);\n };\n\n #onActionClick = (detail: MenuActionEventDetail) => {\n this.#actionClickEvent.emit(detail);\n };\n\n render() {\n return (\n <LaunchpadConfigComponent\n menuGroups={this.menuGroups}\n actions={this.actions}\n variant={this.variant ?? \"launchpad-config\"}\n urlTemplate={this.urlTemplate}\n customUrlTemplate={this.customUrlTemplate}\n blacklist={this.blacklist}\n onMenuItemClick={this.#handleMenuItemClick}\n onActionClick={this.#onActionClick}\n />\n );\n }\n}\n\nexport interface LaunchpadConfigProps\n extends Pick<\n MenuGroupProps,\n \"actions\" | \"variant\" | \"urlTemplate\" | \"customUrlTemplate\"\n > {\n menuGroups?: ConfigMenuGroup[];\n blacklist?: string[];\n}\n\nexport interface LaunchpadConfigEventsMapping {\n onMenuItemClick: \"menu-item.click\";\n onActionClick: \"action.click\";\n}\n\nexport interface LaunchpadConfigComponentProps\n extends LaunchpadConfigProps,\n Pick<MenuGroupProps, \"onMenuItemClick\" | \"onActionClick\"> {}\n\nexport function LaunchpadConfigComponent({\n menuGroups,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\n blacklist,\n onMenuItemClick,\n onActionClick,\n}: LaunchpadConfigComponentProps) {\n const processedMenuGroup = useMemo<ConfigMenuGroup[] | undefined>(() => {\n if (variant === \"blacklist-config\") {\n return menuGroups?.map((group) => {\n const items = group.items.map((item) =>\n getMenuItemWithBlockInfo(item, blacklist)\n );\n const blockable = items.some((item) => item.blockable);\n const hasBlocked = blockable && items.some((item) => item.hasBlocked);\n const hasUnblocked =\n blockable && items.some((item) => item.hasUnblocked);\n const allBlocked =\n items.length > 0 && items.every((item) => item.allBlocked);\n const blockableUrls = items.flatMap((item) =>\n item.blockable\n ? ((item as ConfigMenuItemDir).blockableUrls ??\n (item as ConfigMenuItemCustom).blockableUrl ??\n (item as ConfigMenuItemApp).url)\n : []\n );\n return {\n ...group,\n type: \"group\",\n items,\n blockable,\n hasBlocked,\n hasUnblocked,\n allBlocked,\n blockableUrls,\n };\n });\n } else if (variant === \"launchpad-config\") {\n return getMenuGroupsWithoutBlockedItems(menuGroups)?.filter(Boolean);\n } else {\n return menuGroups;\n }\n }, [variant, menuGroups, blacklist]);\n\n return (\n <ul className=\"menu-groups\">\n {processedMenuGroup?.map((group) => (\n <MenuGroup\n key={group.instanceId}\n data={group}\n actions={actions}\n variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\n onMenuItemClick={onMenuItemClick}\n onActionClick={onActionClick}\n />\n ))}\n </ul>\n );\n}\n\nfunction getMenuGroupsWithoutBlockedItems<T extends ConfigMenuGroup>(\n menuGroups: T[] | undefined\n): T[] | undefined {\n return menuGroups\n ?.map<T | null>((group) => {\n const items = group.items\n .map((item) => getMenuItemWithoutBlockedItems(item))\n .filter(Boolean) as ConfigMenuItem[];\n return { ...group, items };\n })\n .filter(Boolean) as T[];\n}\n\nfunction getMenuItemWithoutBlockedItems<T extends ConfigMenuItem>(\n item: T\n): T | null {\n if (item.type === \"dir\") {\n const subItems = item.items\n .map((subItem) => getMenuItemWithoutBlockedItems(subItem))\n .filter(Boolean) as T[];\n return { ...item, items: subItems };\n }\n if (item.type === \"app\") {\n return item.url && auth.isBlockedPath(item.url) ? null : item;\n }\n return item.url && auth.isBlockedHref(item.url) ? null : item;\n}\n\nfunction getMenuItemWithBlockInfo<T extends ConfigMenuItem>(\n item: T,\n blacklist: string[] | undefined\n): T {\n if (item.type === \"dir\") {\n const subItems = item.items.map((subItem) =>\n getMenuItemWithBlockInfo(subItem, blacklist)\n );\n const blockable = subItems.some((subItem) => subItem.blockable);\n const hasBlocked = subItems.some((subItem) => subItem.hasBlocked);\n const hasUnblocked =\n blockable && subItems.some((subItem) => subItem.hasUnblocked);\n const allBlocked =\n subItems.length > 0 && subItems.every((subItem) => subItem.allBlocked);\n const blockableUrls = subItems.flatMap((subItem) =>\n subItem.blockable\n ? ((subItem as unknown as ConfigMenuItemDir).blockableUrls ??\n (subItem as ConfigMenuItemCustom).blockableUrl ??\n subItem.url)\n : []\n );\n return {\n ...item,\n items: subItems,\n blockable,\n hasBlocked,\n hasUnblocked,\n allBlocked,\n blockableUrls,\n };\n }\n\n if (item.type === \"app\") {\n const blockable = !!item.url;\n const hasBlocked = blockable && blacklist?.includes(item.url);\n const hasUnblocked = blockable && !hasBlocked;\n return {\n ...item,\n blockable,\n hasBlocked,\n hasUnblocked,\n allBlocked: hasBlocked,\n };\n }\n\n const { blockable, blockableUrl } = getBlockableUrl(item.url);\n const hasBlocked = blockable && blacklist?.includes(blockableUrl!);\n const hasUnblocked = blockable && !hasBlocked;\n return {\n ...item,\n blockable,\n hasBlocked,\n hasUnblocked,\n allBlocked: hasBlocked,\n blockableUrl,\n };\n}\n\nfunction getBlockableUrl(url: string | undefined) {\n let blockable = !!url?.startsWith(BASE_PATH);\n let blockableUrl: string | undefined;\n if (blockable) {\n const urlObj = new URL(url!, location.origin);\n if (\n urlObj.origin === location.origin &&\n urlObj.pathname.startsWith(BASE_PATH)\n ) {\n blockableUrl = urlObj.pathname.substring(BASE_PATH.length - 1);\n } else {\n blockable = false;\n blockableUrl = undefined;\n }\n }\n return { blockable, blockableUrl };\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport \"@next-core/theme\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport moment from \"moment\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport styleText from \"./styles.shadow.css\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement } = createDecorators();\n\n/**\n * 导航栏告警提示组件,用于显示 License 到期提醒和页面性能问题警告。\n * @insider\n */\nexport\n@defineElement(\"nav.easyops-navbar-alerts\", {\n styleTexts: [styleText],\n})\nclass EasyopsNavbarAlerts extends ReactNextElement {\n render() {\n return <EasyopsNavbarAlertsComponent />;\n }\n}\n\ninterface SlowRenderInfo {\n renderTime: number;\n suggestTime: number;\n suggestUrl?: string;\n}\n\nconst storage = new JsonStorage(localStorage);\n\nexport function EasyopsNavbarAlertsComponent() {\n const [licenseHide, setLienceseHide] = useState<boolean>(false);\n const [slowRender, setSlowRender] = useState<SlowRenderInfo | null>(null);\n const currentApp = useCurrentApp();\n const licenseDismissedKey = useMemo(() => {\n const authInfo = auth.getAuth();\n return `license:${authInfo.org}`;\n }, []);\n\n const licenseDaysLeft = useMemo(() => {\n const authInfo = auth.getAuth();\n const validDaysLeft = authInfo.license?.validDaysLeft;\n let dismissExpireAt: number;\n if (licenseHide) {\n return null;\n }\n if (\n validDaysLeft &&\n validDaysLeft <= 15 &&\n authInfo.isAdmin &&\n ((dismissExpireAt = storage.getItem(licenseDismissedKey)),\n !dismissExpireAt || moment().unix() > dismissExpireAt)\n ) {\n return validDaysLeft;\n }\n return null;\n }, [licenseDismissedKey, licenseHide]);\n\n useEffect(() => {\n const handelRouteRender = (e: Event): void => {\n const renderTime = (e as CustomEvent<{ renderTime: number }>).detail\n .renderTime;\n const { loadTime, loadInfoPage } = getRuntime().getMiscSettings() as {\n loadTime: number;\n loadInfoPage?: string;\n };\n if (currentApp?.isBuildPush && loadTime > 0 && renderTime > loadTime) {\n setSlowRender({\n renderTime: millisecondToSecond(renderTime),\n suggestTime: millisecondToSecond(loadTime),\n suggestUrl: loadInfoPage,\n });\n }\n };\n window.addEventListener(\"route.render\", handelRouteRender);\n return () => {\n window.removeEventListener(\"route.render\", handelRouteRender);\n };\n }, [currentApp]);\n\n const handleLicenseAlertDismiss = useCallback(() => {\n // 一天内不再显示。\n storage.setItem(licenseDismissedKey, moment().unix() + 86400);\n setLienceseHide(true);\n }, [licenseDismissedKey]);\n\n return (\n <>\n {slowRender && (\n <Alert\n text={`您的页面存在性能问题, 当前页面渲染时间 ${slowRender.renderTime} 秒, 规定阈值为: ${slowRender.suggestTime} 秒, 您已超过。请您针对该页面进行性能优化!`}\n type=\"warning\"\n link={\n slowRender.suggestUrl\n ? {\n label: \"建议解决思路\",\n url: slowRender.suggestUrl,\n }\n : undefined\n }\n />\n )}\n {licenseDaysLeft !== null && (\n <Alert\n text={`离 License 过期还有 ${licenseDaysLeft} 天`}\n type=\"info\"\n closable\n onClose={handleLicenseAlertDismiss}\n />\n )}\n </>\n );\n}\n\ninterface AlertProps {\n text: string;\n type: \"info\" | \"warning\";\n closable?: boolean;\n link?: {\n label: string;\n url: string;\n };\n onClose?: () => void;\n}\n\nfunction Alert({ text, type, closable, link, onClose }: AlertProps) {\n return (\n <div className={`alert ${type}`}>\n <span className=\"text\">{text}</span>\n {link && (\n <WrappedLink className=\"link\" href={link.url} target=\"_blank\">\n {link.label}\n </WrappedLink>\n )}\n {closable && (\n <WrappedIcon\n lib=\"antd\"\n icon=\"close\"\n className=\"icon\"\n role=\"button\"\n onClick={onClose}\n />\n )}\n </div>\n );\n}\n\nfunction millisecondToSecond(millisecond: number) {\n return Math.floor(millisecond * 100) / 1e5;\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport { LaunchpadsContext } from \"../launchpad-button-v2/LaunchpadContext\";\nimport { SidebarMenuItem } from \"../launchpad-button-v2/MenuGroup\";\nimport { SidebarMenuItemData } from \"../launchpad-button-v2/interfaces\";\nimport { Target } from \"@next-bricks/basic/link\";\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 快捷访问\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-quick-access\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadQuickAccess extends ReactNextElement {\n /**\n * 是否为只读模式(隐藏收藏切换按钮)\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n /**\n * 菜单项链接打开的目标\n */\n @property()\n accessor target: Target | undefined;\n\n render() {\n return (\n <EoLaunchpadQuickAccessComponent\n readonly={this.readonly}\n target={this.target}\n />\n );\n }\n}\n\ninterface EoLaunchpadQuickAccessComponentProps {\n readonly?: boolean;\n target?: Target;\n}\n\nexport function EoLaunchpadQuickAccessComponent({\n readonly,\n target,\n}: EoLaunchpadQuickAccessComponentProps) {\n const {\n favorites,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(true);\n\n return (\n <LaunchpadsContext.Provider\n value={{\n searching: false,\n loadingFavorites,\n readonly,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <ul className=\"quick-access-list\">\n {favorites.map((item, index) => (\n <SidebarMenuItem\n key={index}\n target={target}\n item={item as SidebarMenuItemData}\n />\n ))}\n </ul>\n </LaunchpadsContext.Provider>\n );\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","export enum K {\n SEARCH_PLACEHOLDER = \"SEARCH_PLACEHOLDER\"\n}\n\nconst en: Locale = {\n SEARCH_PLACEHOLDER: \"Search products/micro-applications\"\n};\n\nconst zh: Locale = {\n SEARCH_PLACEHOLDER: \"搜索产品/微应用\"\n};\n\nexport const NS = \"bricks/nav/search-launchpad\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};","import React, { useCallback, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport classNames from \"classnames\";\nimport { LaunchpadsContext } from \"../launchpad-button-v2/LaunchpadContext\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport { MenuGroup } from \"../launchpad-button-v2/MenuGroup\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport \"./host-context.css\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\n\ninitializeReactI18n(NS, locales);\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * launchpad 搜索\n * @insider\n */\nexport\n@defineElement(\"eo-search-launchpad\", {\n styleTexts: [styleText],\n})\nclass EoSearchLaunchpad extends ReactNextElement {\n /**\n * 简约模式\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n render() {\n return <EoSearchLaunchpadComponent readonly={this.readonly} />;\n }\n}\n\ninterface EoSearchLaunchpadComponentProps {\n readonly?: boolean;\n}\n\nexport function EoSearchLaunchpadComponent({\n readonly,\n}: EoSearchLaunchpadComponentProps) {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const [active, setActive] = useState(false);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(active);\n const searching = !!q;\n const { t } = useTranslation(NS);\n\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQ(e.target.value);\n },\n [setQ]\n );\n\n const clearSearch = useCallback(() => {\n setQ(\"\");\n }, [setQ]);\n\n return (\n <LaunchpadsContext.Provider\n value={{\n searching,\n loadingFavorites,\n readonly,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <div className=\"container\">\n <div className=\"search-box\" onClick={handleClickSearchBox}>\n <WrappedIcon\n lib=\"fa\"\n icon=\"magnifying-glass\"\n className=\"search-icon\"\n />\n <input\n ref={searchInputRef}\n placeholder={t(K.SEARCH_PLACEHOLDER) as string}\n value={q}\n onChange={handleSearch}\n className=\"search-input\"\n onFocus={() => setActive(true)}\n onBlur={() => setActive(false)}\n />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n onMouseDown={(e) => e.preventDefault()}\n />\n </div>\n <div\n className={classNames(\"dropdown\", { \"dropdown-active\": active })}\n onMouseDown={(e) => e.preventDefault()}\n >\n <div className={classNames(\"dropdown-content\", { loading })}>\n <Loading loading={loading} />\n <ul className=\"menu-groups\">\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.name}\n items={group.items}\n />\n ))}\n </ul>\n </div>\n </div>\n </div>\n </LaunchpadsContext.Provider>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport type { Link, LinkProps, Target } from \"@next-bricks/basic/link\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * launchpad 最近访问\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-recent-visits\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadRecentVisits extends ReactNextElement {\n /**\n * 菜单项链接打开的目标(仅对应用类型的访问项生效,自定义链接类型始终在新标签打开)\n */\n @property({\n attribute: false,\n })\n accessor target: Target | undefined;\n\n render() {\n return <EoLaunchpadRecentVisitsComponent target={this.target} />;\n }\n}\n\ninterface EoLaunchpadRecentVisitsComponentProps {\n target?: Target;\n}\nexport function EoLaunchpadRecentVisitsComponent({\n target,\n}: EoLaunchpadRecentVisitsComponentProps) {\n const { recentVisits, pushRecentVisit } = useLaunchpadInfo(true);\n\n return (\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n <WrappedLink\n onClick={() => pushRecentVisit(item)}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n target,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <span>{item.name}</span>\n </WrappedLink>\n </li>\n ))}\n </ul>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport classNames from \"classnames\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface AppBarWrapperProps {\n isFixed?: boolean;\n position?: \"static\" | \"fixed\";\n displayCenter?: boolean;\n extraAppBarContentStyle?: React.CSSProperties;\n}\n\n/**\n * 应用顶部容器\n * @slot left - 左侧内容区\n * @slot right - 右侧内容区\n */\nexport\n@defineElement(\"eo-app-bar-wrapper\", {\n styleTexts: [styleText],\n alias: [\"basic.app-bar-wrapper\"],\n})\nclass EoAppBarWrapper extends ReactNextElement implements AppBarWrapperProps {\n /**\n * 是否固定定位。\n *\n * @default true\n * @deprecated 使用 `position` 属性代替\n */\n @property({\n type: Boolean,\n })\n accessor isFixed: boolean | undefined;\n\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * 设置时优先级高于 `isFixed`。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" | undefined;\n\n /**\n * 居中显示\n * @default false\n */\n @property({\n type: Boolean,\n })\n accessor displayCenter: boolean | undefined;\n\n /** 自定义样式 */\n @property({\n attribute: false,\n })\n accessor extraAppBarContentStyle: React.CSSProperties | undefined;\n\n render() {\n return (\n <EoAppBarWrapperComponent\n displayCenter={this.displayCenter}\n isFixed={this.isFixed}\n position={this.position}\n extraAppBarContentStyle={this.extraAppBarContentStyle}\n />\n );\n }\n}\n\nexport function EoAppBarWrapperComponent({\n isFixed = true,\n position,\n displayCenter = false,\n extraAppBarContentStyle = {},\n}: AppBarWrapperProps) {\n React.useEffect(() => {\n const mainElement = document.getElementById(\"main-mount-point\");\n const iframeMainElement = document.getElementById(\n \"legacy-iframe-mount-point\"\n );\n mainElement && (mainElement.style.marginTop = \"\");\n iframeMainElement && (iframeMainElement.style.marginTop = \"\");\n }, []);\n\n return (\n <div className=\"app-bar-container\">\n <div\n className={classNames(\n \"app-bar\",\n position === \"static\"\n ? \"static\"\n : position === \"fixed\" || isFixed\n ? \"fixed\"\n : \"absolute\"\n )}\n >\n {/* TODO: need AppBarTips */}\n <div\n className=\"app-bar-content\"\n style={{\n justifyContent: displayCenter ? \"space-around\" : \"space-between\",\n ...extraAppBarContentStyle,\n }}\n >\n <div className=\"left\">\n <slot name=\"left\" />\n </div>\n <div className=\"right\">\n <slot name=\"right\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { getRealValue } from \"@next-core/runtime\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { useCurrentApp, useNavConfig } from \"@next-core/react-runtime\";\nimport { BreadcrumbItemConf } from \"@next-core/types\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type { EoBreadcrumb } from \"@next-bricks/basic/breadcrumb\";\nimport type {\n EoBreadcrumbItem,\n BreadcrumbItemProps,\n} from \"@next-bricks/basic/breadcrumb-item\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { ExtendedLocationDescriptor } from \"@next-bricks/basic/link\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedBreadcrumb = wrapBrick<EoBreadcrumb, unknown>(\"eo-breadcrumb\");\nconst WrappedBreadcrumbItem = wrapBrick<EoBreadcrumbItem, BreadcrumbItemProps>(\n \"eo-breadcrumb-item\"\n);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface Menu {\n title: string;\n icon?: GeneralIconProps;\n link?: ExtendedLocationDescriptor;\n}\n\nexport interface EoFrameBreadcrumbProps {\n breadcrumb?: BreadcrumbItemConf[];\n noCurrentApp?: boolean;\n menu?: Menu;\n}\n\n/**\n * 面包屑\n */\nexport\n@defineElement(\"eo-frame-breadcrumb\", {\n styleTexts: [styleText],\n})\nclass EoFrameBreadcrumb\n extends ReactNextElement\n implements EoFrameBreadcrumbProps\n{\n /**\n * 面包屑配置\n */\n @property({\n attribute: false,\n })\n accessor breadcrumb: BreadcrumbItemConf[] | undefined;\n\n /**\n * 是否隐藏当前应用名称\n */\n @property({ type: Boolean })\n accessor noCurrentApp: boolean | undefined;\n\n /**\n * 菜单配置\n */\n @property({\n attribute: false,\n })\n accessor menu: Menu | undefined;\n\n render() {\n return (\n <EoFrameBreadcrumbComponent\n breadcrumb={this.breadcrumb}\n noCurrentApp={this.noCurrentApp}\n menu={this.menu}\n />\n );\n }\n}\n\nexport function EoFrameBreadcrumbComponent(props: EoFrameBreadcrumbProps) {\n const { menu } = props;\n\n const navConfig = useNavConfig();\n const currentApp = useCurrentApp();\n const curAppBreadcrumb = currentApp?.breadcrumb;\n // 处理面包屑文本中的动态计算表达式\n const currentAppBreadcrumbItems = curAppBreadcrumb?.items?.map((item) => ({\n ...item,\n text: getRealValue(item.text),\n })) as Array<BreadcrumbItemConf & { icon: GeneralIconProps }>;\n const breadcrumbItems = props.breadcrumb?.length\n ? props.breadcrumb\n : navConfig?.breadcrumb;\n\n const noCurrentApp = props.noCurrentApp ?? curAppBreadcrumb?.noCurrentApp;\n const useCurrentMenuTitle = curAppBreadcrumb?.useCurrentMenuTitle;\n\n return (\n <WrappedBreadcrumb>\n <span slot=\"separator\">/</span>\n {currentAppBreadcrumbItems?.map((item, index) => {\n return (\n <WrappedBreadcrumbItem key={index} url={item.to}>\n {item.icon ? (\n <WrappedIcon\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n {...item.icon}\n />\n ) : (\n index === 0 && (\n <WrappedIcon\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n lib=\"antd\"\n icon=\"home\"\n theme=\"outlined\"\n />\n )\n )}\n {item.text}\n </WrappedBreadcrumbItem>\n );\n })}\n {currentApp && !noCurrentApp ? (\n <WrappedBreadcrumbItem\n url={\n breadcrumbItems?.length &&\n currentApp.homepage &&\n !currentApp.internal\n ? currentApp.homepage\n : undefined\n }\n >\n {!currentAppBreadcrumbItems?.length && (\n <WrappedIcon\n {...currentApp.menuIcon}\n slot=\"prefix\"\n className=\"breadcrumb-item-prefix-icon\"\n />\n )}\n {currentApp.localeName}\n </WrappedBreadcrumbItem>\n ) : null}\n {useCurrentMenuTitle && menu ? (\n <WrappedBreadcrumbItem url={menu.link}>\n {menu.icon && (\n <WrappedIcon\n {...menu.icon}\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n />\n )}\n {menu.title}\n </WrappedBreadcrumbItem>\n ) : null}\n {breadcrumbItems?.map((item, index) => (\n <WrappedBreadcrumbItem key={index} url={item.to}>\n {item.text}\n </WrappedBreadcrumbItem>\n ))}\n </WrappedBreadcrumb>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarMenuItemProps {\n url?: LinkProps[\"url\"];\n href?: LinkProps[\"href\"];\n icon?: GeneralIconProps;\n target?: LinkProps[\"target\"];\n selected?: boolean;\n inSubmenu?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单项\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-item\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuItem\n extends ReactNextElement\n implements EoSidebarMenuItemProps\n{\n /**\n * 菜单项对应的系统内地址\n */\n @property({ attribute: false })\n accessor url: LinkProps[\"url\"] | undefined;\n\n /**\n * 菜单项对应的外部链接地址\n */\n @property()\n accessor href: LinkProps[\"href\"] | undefined;\n\n /**\n * 菜单项链接打开的目标\n */\n @property()\n accessor target: LinkProps[\"target\"] | undefined;\n\n /**\n * 菜单项的图标\n */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /**\n * 是否选中\n */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 是否在二级菜单中\n */\n @property({ type: Boolean })\n accessor inSubmenu: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n render() {\n return (\n <EoSidebarMenuItemComponent\n url={this.url}\n href={this.href}\n target={this.target}\n icon={this.icon}\n selected={this.selected}\n />\n );\n }\n}\n\nexport function EoSidebarMenuItemComponent(props: EoSidebarMenuItemProps) {\n const { url, href, target, icon, selected } = props;\n\n return (\n <WrappedLink type=\"plain\" url={url} href={href} target={target}>\n <div className={\"menu-item\"}>\n <span className=\"menu-item-icon-container\">\n <WrappedIcon\n {...icon}\n className=\"menu-item-icon\"\n {...(icon && \"imgSrc\" in icon\n ? { imgStyle: { filter: selected ? \"brightness(7)\" : undefined } }\n : {})}\n />\n </span>\n <span className=\"menu-item-text\">\n <slot />\n </span>\n </div>\n </WrappedLink>\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","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\nimport classNames from \"classnames\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface EoSidebarMenuGroupProps {\n selected?: boolean;\n collapsable?: boolean;\n collapsed?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单分组\n * @slot title - 分组标题\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-group\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuGroup\n extends ReactNextElement\n implements EoSidebarMenuGroupProps\n{\n /**\n * 是否允许折叠\n */\n @property({ type: Boolean })\n accessor collapsable: boolean | undefined;\n\n /**\n * 是否折叠\n */\n @property({ type: Boolean })\n accessor collapsed: boolean | undefined;\n\n /**\n * 是否选中\n * */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n #handleCollapseChang = (collapsed: boolean) => {\n this.collapsed = collapsed;\n };\n\n render() {\n return (\n <EoSidebarMenuGroupComponent\n collapsable={this.collapsable}\n selected={this.selected}\n collapsed={this.collapsed}\n menuCollapsed={this.menuCollapsed}\n onCollapseChange={this.#handleCollapseChang}\n />\n );\n }\n}\n\ninterface EoSidebarMenuGroupComponentProps extends EoSidebarMenuGroupProps {\n onCollapseChange?: (collapsed: boolean) => void;\n}\n\nexport function EoSidebarMenuGroupComponent(\n props: EoSidebarMenuGroupComponentProps\n) {\n const {\n collapsable = false,\n collapsed,\n menuCollapsed,\n onCollapseChange,\n } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n const titleRef = useRef<HTMLDivElement>(null);\n\n const handleClick = useCallback(() => {\n !menuCollapsed && onCollapseChange?.(!collapsed);\n }, [menuCollapsed, onCollapseChange, collapsed]);\n\n useEffect(() => {\n const titleElem = titleRef.current;\n titleElem?.addEventListener(\"click\", handleClick);\n\n return () => {\n titleElem?.removeEventListener(\"click\", handleClick);\n };\n }, [handleClick]);\n\n return (\n <div\n className={classNames(\"menu-group\", {\n \"menu-group-collapsed\": menuCollapsed ? true : collapsed,\n })}\n >\n <div className=\"menu-group-title\" ref={titleRef}>\n <span className=\"menu-group-title-icon-container\">\n <span className=\"menu-group-title-icon\"></span>\n </span>\n <div className=\"menu-group-title-text\">\n <slot name=\"title\" />\n </div>\n {collapsable && <span className=\"menu-group-arrow\" />}\n </div>\n <div className=\"menu-group-list\">\n <div className=\"menu-group-list-inner\">\n <slot ref={slotRef} />\n </div>\n </div>\n </div>\n );\n}\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport classNames from \"classnames\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarMenuSubmenuProps {\n icon?: GeneralIconProps;\n selected?: boolean;\n collapsed?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单子菜单\n * @slot title - 子菜单标题\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-submenu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuSubmenu\n extends ReactNextElement\n implements EoSidebarMenuSubmenuProps\n{\n /**\n * 菜单的图标\n */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /**\n * 是否选中\n * */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 是否折叠\n */\n @property({ type: Boolean })\n accessor collapsed: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n #handleCollapseChang = (collapsed: boolean) => {\n this.collapsed = collapsed;\n };\n\n render() {\n return (\n <EoSidebarMenuSubmenuComponent\n icon={this.icon}\n selected={this.selected}\n collapsed={this.collapsed}\n menuCollapsed={this.menuCollapsed}\n onCollapseChange={this.#handleCollapseChang}\n />\n );\n }\n}\n\ninterface EoSidebarMenuSubmenuComponentProps extends EoSidebarMenuSubmenuProps {\n onCollapseChange?: (collapsed: boolean) => void;\n}\n\nexport function EoSidebarMenuSubmenuComponent(\n props: EoSidebarMenuSubmenuComponentProps\n) {\n const { icon, collapsed, menuCollapsed, onCollapseChange } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n const titleRef = useRef<HTMLDivElement>(null);\n\n const handleClick = useCallback(() => {\n !menuCollapsed && onCollapseChange?.(!collapsed);\n }, [menuCollapsed, onCollapseChange, collapsed]);\n\n useEffect(() => {\n const titleElem = titleRef.current;\n titleElem?.addEventListener(\"click\", handleClick);\n\n return () => {\n titleElem?.removeEventListener(\"click\", handleClick);\n };\n }, [handleClick]);\n\n return (\n <div\n className={classNames(\"menu-submenu\", {\n \"menu-submenu-collapsed\": menuCollapsed ? true : collapsed,\n })}\n >\n <div className=\"menu-submenu-title\" ref={titleRef}>\n <span className=\"menu-submenu-title-icon-container\">\n <WrappedIcon {...icon!} className=\"menu-submenu-title-icon\" />\n </span>\n <span className=\"menu-submenu-title-text\">\n <slot name=\"title\" />\n </span>\n <span className=\"menu-submenu-arrow\" />\n </div>\n <div className=\"menu-sub\">\n <div className=\"menu-sub-inner\">\n <slot ref={slotRef} />\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface EoSidebarMenuProps {\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单\n *\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenu extends ReactNextElement implements EoSidebarMenuProps {\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n render() {\n return <EoSidebarMenuComponent menuCollapsed={this.menuCollapsed} />;\n }\n}\n\nexport function EoSidebarMenuComponent(props: EoSidebarMenuProps) {\n const { menuCollapsed } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n return (\n <div className=\"sidebar-menu\">\n <div className=\"sidebar-menu-item-list\">\n <slot ref={slotRef} />\n </div>\n </div>\n );\n}\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 * 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;","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 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","import React, { useState, useEffect, useCallback } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport { UnregisterCallback } from \"history\";\nimport \"@next-core/theme\";\nimport {\n SidebarMenuSimpleItem,\n SidebarMenuGroup,\n SidebarMenuItem,\n} from \"@next-shared/general/types\";\nimport {\n initMenuItemAndMatchCurrentPathKeys,\n isGroup,\n isSubMenu,\n} from \"@next-shared/general/menu\";\nimport { Menu as MenuComponent, SidebarMenu } from \"@next-bricks/basic/menu\";\nimport { Link, LinkProps, Target } from \"@next-bricks/basic/link\";\nimport {\n EoMenuItemSubMenu,\n EoMenuSubMenuProps,\n} from \"@next-bricks/basic/menu-item-sub-menu\";\nimport { EoMenuGroup } from \"@next-bricks/basic/menu-group\";\nimport { MenuComponentProps, MenuItem } from \"@next-bricks/basic/menu-item\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport classNames from \"classnames\";\n\n// --- NOTE: uncomment these lines below to enable i18n for your brick ---\n// import { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\n// import { K, NS, locales } from \"./i18n.js\";\n// initializeReactI18n(NS, locales);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedMenu = wrapBrick<MenuComponent, any>(\"eo-menu\");\n\nconst WrappedMenuGroup = wrapBrick<EoMenuGroup, any>(\"eo-menu-group\");\n\nconst WrapperMenuItemSubMenu = wrapBrick<EoMenuItemSubMenu, EoMenuSubMenuProps>(\n \"eo-menu-item-sub-menu\"\n);\n\nconst WrappedMenuItem = wrapBrick<MenuItem, MenuComponentProps>(\"eo-menu-item\");\n\nconst WrappedLinkItem = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport interface SidebarSubMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n}\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 侧边栏子菜单,支持简单菜单项、分组和子菜单的嵌套渲染\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-sub-menu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarSubMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n render() {\n return <EoSidebarSubMenuComponent menu={this.menu} />;\n }\n}\n\nexport function EoSidebarSubMenuComponent(props: SidebarSubMenuProps) {\n // const { t } = useTranslation(NS);\n // const hello = t(K.HELLO);\n const { menu } = props;\n\n const history = getHistory();\n const [location, setLocation] = useState(history.location);\n const { pathname, search } = location;\n\n const [selectedKey, setSelectedKey] = useState<string[]>([]);\n const [openedKeys, setOpenedKeys] = useState<string[]>([]);\n\n const setSelected = useCallback((): void => {\n const { selectedKeys, openedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n setSelectedKey(selectedKeys);\n setOpenedKeys(openedKeys);\n }, [menu?.menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n setSelected();\n return unListen;\n }, [history, setSelected]);\n\n const getMenuItemIndent = useCallback((item: SidebarMenuItem): number => {\n return ((item.key?.split(\".\")?.length as number) - 1) * 16;\n }, []);\n\n const renderSimpleMenuItem = (\n item: SidebarMenuSimpleItem,\n options?: {\n inSubmenu?: boolean;\n }\n ) => {\n return (\n <WrappedMenuItem\n className={classNames(\"menu-item\", {\n \"in-submenu\": options?.inSubmenu,\n })}\n style={{ paddingLeft: getMenuItemIndent(item) || 16 }}\n icon={item.icon}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n <WrappedLinkItem\n className=\"menu-item-link\"\n type=\"plain\"\n url={item.to as string}\n href={item.href}\n title={item.text}\n target={item.target as Target}\n >\n <span\n className={classNames(\"menu-item-text\", {\n \"item-has-icon\": item.icon,\n })}\n >\n {item.text}\n </span>\n </WrappedLinkItem>\n </WrappedMenuItem>\n );\n };\n\n const renderSubMenuItem = (item: SidebarMenuGroup) => {\n // istanbul ignore else\n if (item.items?.length > 0) {\n return (\n <WrapperMenuItemSubMenu\n className=\"menu-sub-item\"\n icon={item.icon}\n titleStyle={{ paddingLeft: getMenuItemIndent(item) }}\n bodyStyle={{ paddingLeft: getMenuItemIndent(item) / 2 }}\n collapsed={!openedKeys.includes(item.key!)}\n >\n <span slot=\"title\">{item.title}</span>\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n {renderMenuItem(innerItem, {\n inSubmenu: true,\n })}\n </React.Fragment>\n ))}\n </WrapperMenuItemSubMenu>\n );\n }\n };\n\n const renderGroupMenuItem = (item: SidebarMenuGroup) => {\n // istanbul ignore else\n if (item.items?.length > 0) {\n return (\n <WrappedMenuGroup>\n <span slot=\"title\">{item.title}</span>\n\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n {renderMenuItem(innerItem)}\n </React.Fragment>\n );\n })}\n </WrappedMenuGroup>\n );\n }\n };\n\n function renderMenuItem(\n item: SidebarMenuItem,\n options?:\n | {\n inSubmenu?: boolean;\n }\n | undefined\n ) {\n return isSubMenu(item as SidebarMenuGroup)\n ? renderSubMenuItem(item as SidebarMenuGroup)\n : isGroup(item)\n ? renderGroupMenuItem(item)\n : renderSimpleMenuItem(item, options);\n }\n\n return (\n <WrappedMenu className=\"menu-container\" mode=\"vertical\">\n {menu?.title && (\n <div className=\"header\">\n {menu?.icon && <WrappedIcon {...(menu?.icon as GeneralIconProps)} />}\n <span className=\"title\">{menu?.title}</span>\n </div>\n )}\n <div className=\"content\">\n {menu?.menuItems.map((item) => {\n return (\n <React.Fragment key={item.key}>\n {renderMenuItem(item)}\n </React.Fragment>\n );\n })}\n </div>\n </WrappedMenu>\n );\n}\n","import React from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport classNames from \"classnames\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { UseBrickConfOrRenderFunction } from \"@next-core/react-runtime\";\n\nconst { defineElement, property, event } = createDecorators();\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\n/**\n * 目录\n */\nexport\n@defineElement(\"eo-directory\", {\n styleTexts: [styleText],\n})\nclass EoDirectory extends ReactNextElement implements EoDirectoryProps {\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" = \"fixed\";\n\n /**\n * 目录标题\n */\n @property()\n accessor directoryTitle: string | undefined;\n\n /**\n * 菜单数据\n * @default []\n * @required\n */\n @property({ attribute: false })\n accessor menuItems: MenuItem[] = [];\n\n /**\n * 是否隐藏右边线\n */\n @property({ type: Boolean })\n accessor hideRightBorder: boolean = false;\n\n /**\n * 后缀 useBrick\n */\n @property({\n attribute: false,\n })\n accessor suffixBrick: { useBrick: UseBrickConfOrRenderFunction } | undefined;\n\n /**\n * 默认选中高亮的菜单项\n */\n @property({ attribute: false })\n accessor defaultSelectedKeys: string[] | undefined;\n /**\n * @description 菜单项点击时触发\n * @detail { groupKey: 对应分组的 key(仅分组子项有值), data: 被点击的菜单项 }\n */\n @event({ type: \"menu.item.click\" })\n accessor #menuItemClickEvent!: EventEmitter<MenuItemClickEventDetail>;\n /**\n * @description 点击菜单项后缀图标时触发\n * @detail { key: 对应菜单项或分组的 key }\n */\n @event({ type: \"suffix.icon.click\" })\n accessor #suffixIconClickEvent!: EventEmitter<{ key: string }>;\n\n #menuItemClick = (data: MenuItemClickEventDetail) => {\n this.#menuItemClickEvent.emit(data);\n };\n #suffixIconClick = (key: string) => {\n this.#suffixIconClickEvent.emit({ key });\n };\n\n render() {\n return (\n <EoDirectoryComponent\n menuItems={this.menuItems}\n directoryTitle={this.directoryTitle}\n hideRightBorder={this.hideRightBorder}\n suffixIconClick={this.#suffixIconClick}\n menuItemClick={this.#menuItemClick}\n defaultSelectedKeys={this.defaultSelectedKeys}\n suffixBrick={this.suffixBrick}\n />\n );\n }\n}\nexport interface EoDirectoryProps {\n position?: \"static\" | \"fixed\";\n suffixBrick?: { useBrick: UseBrickConfOrRenderFunction };\n directoryTitle: string | undefined;\n menuItems: MenuItem[];\n hideRightBorder?: boolean;\n menuItemClick?: (data: MenuItemClickEventDetail) => void;\n suffixIconClick?: (key: string) => void;\n defaultSelectedKeys?: string[] | undefined;\n}\n\nexport interface EoDirectoryEventsMapping {\n onMenuItemClick: \"menu.item.click\";\n onSuffixIconClick: \"suffix.icon.click\";\n}\ninterface MenuChildrenItem {\n title: string;\n key: string;\n [key: string]: any;\n}\ninterface MenuItem {\n title: string;\n key: string;\n type: \"group\" | \"item\";\n children?: MenuChildrenItem[];\n suffixIcon?: GeneralIconProps;\n suffixIconTooltip?: string;\n suffixIconDisabled?: boolean;\n}\ninterface MenuItemClickEventDetail {\n data: MenuChildrenItem;\n groupKey?: string;\n}\n\nexport function EoDirectoryComponent(props: EoDirectoryProps) {\n const {\n menuItems,\n directoryTitle,\n hideRightBorder,\n menuItemClick,\n suffixIconClick,\n defaultSelectedKeys,\n suffixBrick,\n } = props;\n\n return (\n <div\n className={classNames(\"directory-container\", {\n \"directory-container-not-border\": hideRightBorder,\n })}\n >\n {directoryTitle && (\n <div className=\"directory-title\" title={directoryTitle}>\n {directoryTitle}\n </div>\n )}\n <div className=\"directory-menu-list\">\n {menuItems.map((item, index) => {\n return (\n <div\n className={classNames(\"menu-item\", `menu-item-${item.type}`)}\n key={`${item.key}-${index}`}\n >\n <div\n className={classNames(`menu-item-title-${item.type}`)}\n onClick={() =>\n item.type === \"item\" && menuItemClick?.({ data: item })\n }\n >\n <span\n className={classNames(\"menu-title-text\", {\n \"menu-title-text-active\": defaultSelectedKeys?.includes(\n item.key\n ),\n })}\n >\n {item.title}\n </span>\n {suffixBrick?.useBrick ? (\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={{ data: item }}\n />\n ) : null}\n {item.suffixIcon && (\n <WrappedTooltip\n content={item.suffixIconTooltip}\n placement=\"top\"\n >\n <WrappedIcon\n {...(item.suffixIcon as GeneralIconProps)}\n className={classNames(\"menu-item-title-suffix-icon\", {\n \"menu-item-title-suffix-icon-disabled\":\n item.suffixIconDisabled,\n })}\n onClick={(e) => {\n e.stopPropagation();\n if (item.suffixIconDisabled) {\n e.preventDefault();\n } else {\n suffixIconClick?.(item.key);\n }\n }}\n />\n </WrappedTooltip>\n )}\n </div>\n {item.type === \"group\" &&\n !!item.children?.length &&\n item.children.map((child, i) => {\n return (\n <div\n className=\"menu-item-title-item\"\n onClick={() =>\n menuItemClick?.({ data: child, groupKey: item.key })\n }\n key={`${child.key}-${i}`}\n >\n <span\n className={classNames(\"menu-title-text\", {\n \"menu-title-text-active\":\n defaultSelectedKeys?.includes(child.key),\n })}\n >\n {child.title}\n </span>\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport type { NodeData, SuffixBrickConf } from \".\";\n\nexport interface ContextOfDirectoryTree {\n expandedKeysSet: Set<string>;\n selectedKeysSet: Set<string>;\n internalNodeSelectable?: boolean;\n onExpand: (data: { keys: string[]; node: NodeData }) => void;\n onSelect: (data: { keys: string[]; node: NodeData }) => void;\n suffixBrick?: SuffixBrickConf;\n}\n\nexport const DirectoryTreeContext = React.createContext<ContextOfDirectoryTree>(\n {\n expandedKeysSet: new Set(),\n selectedKeysSet: new Set(),\n onExpand: () => {},\n onSelect: () => {},\n }\n);\n\nexport const useDirectoryTreeContext = (): ContextOfDirectoryTree =>\n React.useContext(DirectoryTreeContext);\n","import React, { useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport classNames from \"classnames\";\nimport {\n EoDirectoryTreeLeaf,\n EoDirectoryTreeLeafEvents,\n EoDirectoryTreeLeafEventsMap,\n EoDirectoryTreeLeafProps,\n} from \"./directory-tree-leaf\";\nimport {\n EoDirectoryTreeInternalNode,\n EoDirectoryTreeInternalNodeEvents,\n EoDirectoryTreeInternalNodeEventsMap,\n EoDirectoryTreeInternalNodeProps,\n} from \"./directory-tree-internal-node\";\nimport { useDirectoryTreeContext } from \"./DirectoryTreeContext\";\nimport { TreeData } from \"./\";\n\nconst WrappedTreeLeaf = wrapBrick<\n EoDirectoryTreeLeaf,\n EoDirectoryTreeLeafProps,\n EoDirectoryTreeLeafEvents,\n EoDirectoryTreeLeafEventsMap\n>(\"eo-directory-tree-leaf\", {\n onSelect: \"select\",\n});\nconst WrappedTreeInternalNode = wrapBrick<\n EoDirectoryTreeInternalNode,\n EoDirectoryTreeInternalNodeProps,\n EoDirectoryTreeInternalNodeEvents,\n EoDirectoryTreeInternalNodeEventsMap\n>(\"eo-directory-tree-internal-node\", {\n onExpand: \"expand\",\n onSelect: \"select\",\n});\n\ninterface TreeLeafProps {\n treeData: TreeData;\n}\n\nfunction TreeLeaf(props: TreeLeafProps) {\n const { treeData } = props;\n const { data, index, depth } = treeData;\n const { selectedKeysSet, onSelect, suffixBrick } = useDirectoryTreeContext();\n\n const nodeData = useMemo(\n () => ({ data, index, depth }),\n [data, index, depth]\n );\n\n return (\n <WrappedTreeLeaf\n depth={depth}\n selected={selectedKeysSet.has(data.key)}\n icon={data.icon}\n faded={data.faded}\n onSelect={() => {\n const keys = [data.key];\n onSelect({ keys, node: nodeData });\n }}\n className={classNames({\n \"show-suffix-when-hover\": suffixBrick?.when === \"hover\",\n })}\n >\n <span title={data.title}>{data.title}</span>\n {suffixBrick?.useBrick && (\n <div className=\"suffix\" slot=\"suffix\">\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={nodeData}\n />\n </div>\n )}\n </WrappedTreeLeaf>\n );\n}\n\ninterface TreeInternalNodeProps {\n treeData: TreeData;\n}\n\nfunction TreeInternalNode(props: TreeInternalNodeProps) {\n const { treeData } = props;\n const { data, index, depth } = treeData;\n const {\n expandedKeysSet,\n onExpand,\n selectedKeysSet,\n onSelect,\n internalNodeSelectable,\n suffixBrick,\n } = useDirectoryTreeContext();\n\n const nodeData = useMemo(\n () => ({ data, index, depth }),\n [data, index, depth]\n );\n\n return (\n <WrappedTreeInternalNode\n depth={depth}\n selectable={internalNodeSelectable}\n icon={data.icon}\n faded={data.faded}\n expanded={expandedKeysSet.has(data.key)}\n selected={selectedKeysSet.has(data.key)}\n onExpand={(e) => {\n if (e.detail) {\n expandedKeysSet.add(data.key);\n } else {\n expandedKeysSet.delete(data.key);\n }\n const keys = [...expandedKeysSet];\n onExpand({ keys, node: nodeData });\n }}\n onSelect={() => {\n const keys = [data.key];\n onSelect({ keys, node: nodeData });\n }}\n className={classNames({\n \"show-suffix-when-hover\": suffixBrick?.when === \"hover\",\n })}\n >\n <span slot=\"label\" title={data.title}>\n {data.title}\n </span>\n {suffixBrick?.useBrick && (\n <div className=\"suffix\" slot=\"suffix\">\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={nodeData}\n />\n </div>\n )}\n </WrappedTreeInternalNode>\n );\n}\n\ninterface TreeNodeProps {\n treeData: TreeData;\n}\n\nfunction TreeNode(props: TreeNodeProps) {\n const { treeData } = props;\n const isLeaf = !Array.isArray(treeData.children);\n\n return isLeaf ? (\n <TreeLeaf treeData={treeData} />\n ) : (\n <TreeInternalNode treeData={treeData} />\n );\n}\n\ninterface TreeProps {\n treeData: TreeData[];\n}\n\nexport function Tree(props: TreeProps) {\n const { treeData } = props;\n\n return treeData.map((v) => {\n return <TreeNode key={v.key} treeData={v} />;\n });\n}\n","import { get, isNil } from \"lodash\";\nimport { TreeData, TreeItem } from \"./index\";\n\nexport function getAllExpandableKeys(data: TreeItem[]): string[] {\n return data.reduce((pre, cur) => {\n const isLeaf = !Array.isArray(cur.children);\n\n if (!isLeaf) {\n const keys = [cur.key].concat(\n getAllExpandableKeys(cur.children as TreeItem[])\n );\n return pre.concat(keys);\n } else {\n return pre;\n }\n }, [] as string[]);\n}\n\nexport function getExpandableKeysAccordingToSelectedKeys(\n data: TreeItem[],\n selectedKeysSet: Set<string>\n): string[] {\n return data.reduce((pre, cur) => {\n const isLeaf = !Array.isArray(cur.children);\n\n if (!isLeaf) {\n const childrenMatched = cur.children?.some((child) =>\n selectedKeysSet.has(child.key)\n );\n const childrenExpandableKeys = getExpandableKeysAccordingToSelectedKeys(\n cur.children as TreeItem[],\n selectedKeysSet\n );\n\n const keys = childrenExpandableKeys.concat(\n childrenMatched || childrenExpandableKeys.length ? [cur.key] : []\n );\n return pre.concat(keys);\n } else {\n return pre;\n }\n }, [] as string[]);\n}\n\nexport function searchTree(\n data: TreeItem[],\n q: string,\n searchFields: (string | string[])[]\n): { data: TreeItem[]; expandedKeys: string[] } {\n if (!q) {\n return { data, expandedKeys: [] };\n }\n\n const lowerQ = q.toLowerCase();\n const _expandedKeys: string[] = [];\n const _data = data\n .map((item) => {\n const selfMatched = matchItem(item, lowerQ, searchFields);\n\n if (Array.isArray(item.children)) {\n const childrenSearchResult = searchTree(\n item.children,\n lowerQ,\n searchFields\n );\n const filteredChildren = childrenSearchResult.data;\n const childrenMatched = !!filteredChildren?.length;\n\n if (childrenMatched) {\n _expandedKeys.push(item.key, ...childrenSearchResult.expandedKeys);\n\n return {\n ...item,\n children: filteredChildren,\n };\n }\n }\n\n if (selfMatched) {\n return item;\n }\n\n return undefined;\n })\n .filter(Boolean) as TreeItem[];\n return { data: _data, expandedKeys: _expandedKeys };\n}\n\nfunction matchItem(\n item: TreeItem,\n lowerQ: string,\n searchFields: (string | string[])[]\n): TreeItem | undefined {\n const keywords = searchFields.flatMap((field) =>\n getSearchKeywords(get(item, field))\n );\n const matched = keywords.some((v) => v.toLowerCase().includes(lowerQ));\n\n if (matched) {\n return item;\n }\n return undefined;\n}\n\nfunction getSearchKeywords(value: unknown): string[] {\n const result = [];\n if (isNil(value)) {\n // do nothing\n } else if (Array.isArray(value)) {\n value.map((v) => result.push(getSearchKeywords(v)));\n } else if (Object.prototype.toString.call(value) === \"[object Object]\") {\n for (const k in value as Record<string, any>) {\n result.push(\n String(k),\n getSearchKeywords((value as Record<string, any>)[k])\n );\n }\n } else {\n // string, number, bigint, boolean...\n result.push(String(value));\n }\n\n return result.flat(Infinity).filter(Boolean) as string[];\n}\n\nexport function getFlattenTreeData(\n treeItems: TreeItem[],\n expandedKeysSet: Set<string>\n) {\n const flattenList: TreeData[] = [];\n\n function dig(list: TreeItem[], parent?: TreeData): TreeData[] {\n return list.map((treeItem, index) => {\n const pos = parent ? `${parent.pos}-${index}` : String(index);\n\n const flattenData: TreeData = {\n title: treeItem.title,\n key: treeItem.key,\n pos,\n depth: pos.split(\"-\").length - 1,\n index,\n data: treeItem,\n parent,\n };\n\n flattenList.push(flattenData);\n\n if (Array.isArray(treeItem.children)) {\n flattenData.children = expandedKeysSet.has(treeItem.key)\n ? dig(treeItem.children, flattenData)\n : [];\n } else {\n flattenData.children = undefined;\n }\n\n return flattenData;\n });\n }\n\n dig(treeItems);\n\n return flattenList;\n}\n","import React, { useMemo, useState } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap,\n} from \"@next-bricks/form/search\";\nimport { Tree } from \"./Tree\";\nimport {\n getFlattenTreeData,\n getAllExpandableKeys,\n getExpandableKeysAccordingToSelectedKeys,\n searchTree,\n} from \"./utils\";\nimport { DirectoryTreeContext } from \"./DirectoryTreeContext\";\nimport { UseBrickConfOrRenderFunction } from \"@next-core/react-runtime\";\nimport type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\n\nconst { defineElement, property, method, event } = createDecorators();\n\nconst WrappedSearch = wrapBrick<\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap\n>(\"eo-search\", {\n onChange: \"change\",\n onSearch: \"search\",\n});\n\n/**\n * 传入的 data 类型\n */\nexport interface TreeItem {\n key: string;\n title: string;\n icon?: GeneralIconProps;\n faded?: boolean;\n children?: TreeItem[];\n [key: string]: any;\n}\n\n/**\n * 内部格式化后的类型\n */\nexport interface TreeData {\n title: string;\n key: string;\n pos: string;\n depth: number;\n index: number;\n data: TreeItem;\n parent?: TreeData;\n children?: TreeData[];\n}\n\n/**\n * useBrick、事件使用的类型\n */\nexport interface NodeData {\n depth: number;\n index: number;\n data: TreeItem;\n}\n\nexport interface EoDirectoryTreeProps {\n data: TreeItem[];\n directoryTitle?: string;\n internalNodeSelectable?: boolean;\n searchable?: boolean;\n placeholder?: string;\n selectedKeys?: string[];\n expandedKeys?: string[];\n searchFields?: (string | string[])[];\n suffixBrick?: { useBrick: UseBrickConfOrRenderFunction };\n}\n\nexport interface EoDirectoryTreeEventsMapping {\n onExpand: \"expand\";\n onSelect: \"select\";\n}\n\nexport interface SuffixBrickConf {\n /**\n * @default \"always\"\n */\n when?: \"always\" | \"hover\";\n useBrick: UseBrickConfOrRenderFunction;\n}\n\n/**\n * 目录树\n */\nexport\n@defineElement(\"eo-directory-tree\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTree extends ReactNextElement {\n /**\n * 数据源\n */\n @property({\n attribute: false,\n })\n accessor data: TreeItem[] = [];\n\n /**\n * 目录标题\n */\n @property()\n accessor directoryTitle: string | undefined;\n\n /**\n * 设置中间节点是否可选,默认只有叶子节点可选\n */\n @property({ type: Boolean })\n accessor internalNodeSelectable: boolean | undefined;\n\n /**\n * 可搜索\n */\n @property({\n type: Boolean,\n })\n accessor searchable: boolean | undefined;\n\n /**\n * 搜索占位说明\n */\n @property()\n accessor placeholder: string | undefined;\n\n /**\n * 除了 title 以外,额外的搜索字段\n */\n @property({\n attribute: false,\n })\n accessor searchFields: (string | string[])[] | undefined;\n\n /**\n * 后缀 useBrick\n */\n @property({\n attribute: false,\n })\n accessor suffixBrick: SuffixBrickConf | undefined;\n\n /**\n * 选中的 keys\n */\n @property({\n attribute: false,\n })\n accessor selectedKeys: string[] | undefined;\n\n /**\n * 展开的 keys\n */\n @property({\n attribute: false,\n })\n accessor expandedKeys: string[] | undefined;\n\n /**\n * 展开全部\n */\n @method()\n expandAll() {\n this.expandedKeys = getAllExpandableKeys(this.data);\n }\n\n /**\n * 收起全部\n */\n @method()\n collapseAll() {\n this.expandedKeys = [];\n }\n\n /**\n * 根据选择项展开\n */\n @method()\n expandAccordingToSelectedKeys() {\n this.expandedKeys = getExpandableKeysAccordingToSelectedKeys(\n this.data,\n new Set(this.selectedKeys)\n );\n }\n\n /**\n * 展开事件\n * @detail { keys: 展开的 keys 列表, node: 触发展开的节点数据 }\n */\n @event({ type: \"expand\" })\n accessor #expandEvent!: EventEmitter<{ keys: string[]; node: NodeData }>;\n #handleExpand = (data: { keys: string[]; node: NodeData }) => {\n this.expandedKeys = data.keys;\n this.#expandEvent.emit(data);\n };\n\n /**\n * 选择事件\n * @detail { keys: 选中的 keys 列表, node: 触发选择的节点数据 }\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<{ keys: string[]; node: NodeData }>;\n #handleSelect = (data: { keys: string[]; node: NodeData }) => {\n this.selectedKeys = data.keys;\n this.#selectEvent.emit(data);\n };\n\n render() {\n return (\n <EoDirectoryTreeComponent\n element={this}\n data={this.data}\n directoryTitle={this.directoryTitle}\n internalNodeSelectable={this.internalNodeSelectable}\n placeholder={this.placeholder}\n searchable={this.searchable}\n searchFields={this.searchFields}\n suffixBrick={this.suffixBrick}\n selectedKeys={this.selectedKeys}\n expandedKeys={this.expandedKeys}\n onExpand={this.#handleExpand}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\ninterface EoDirectoryTreeComponentProps extends EoDirectoryTreeProps {\n element: EoDirectoryTree;\n onExpand: (data: { keys: string[]; node: NodeData }) => void;\n onSelect: (data: { keys: string[]; node: NodeData }) => void;\n}\n\nexport function EoDirectoryTreeComponent(props: EoDirectoryTreeComponentProps) {\n const {\n element,\n data,\n directoryTitle,\n internalNodeSelectable,\n searchable,\n searchFields,\n placeholder,\n suffixBrick,\n onSelect,\n onExpand,\n } = props;\n\n const expandedKeysSet = useMemo(\n () => new Set(props.expandedKeys),\n [props.expandedKeys]\n );\n const selectedKeysSet = useMemo(\n () => new Set(props.selectedKeys),\n [props.selectedKeys]\n );\n\n const [q, setQ] = useState(\"\");\n\n const handleSearch = (e: CustomEvent<string>) => {\n setQ(e.detail);\n };\n\n const searchedData = useMemo(() => {\n const result = searchTree(data, q, (searchFields || []).concat(\"title\"));\n if (q) {\n element.expandedKeys = result.expandedKeys;\n }\n return result.data;\n }, [data, q, searchFields]);\n\n const treeData = useMemo(() => {\n return getFlattenTreeData(searchedData, expandedKeysSet);\n }, [searchedData, expandedKeysSet]);\n\n return (\n <DirectoryTreeContext.Provider\n value={{\n expandedKeysSet,\n selectedKeysSet,\n internalNodeSelectable,\n onSelect,\n onExpand,\n suffixBrick,\n }}\n >\n <div className=\"directory-container\">\n {directoryTitle && (\n <div className=\"directory-title-container\">\n <div className=\"directory-title\" title={directoryTitle}>\n {directoryTitle}\n </div>\n <div className=\"directory-title-toolbar\">\n <slot name=\"toolbar\" />\n </div>\n </div>\n )}\n {searchable && (\n <WrappedSearch\n className=\"directory-search\"\n trim\n placeholder={placeholder}\n onSearch={handleSearch}\n />\n )}\n <div className=\"tree\">\n <Tree treeData={treeData} />\n </div>\n </div>\n </DirectoryTreeContext.Provider>\n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { IndentSize } from \"../constants\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedEoIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoDirectoryTreeLeafProps {\n depth: number;\n selected?: boolean;\n icon?: GeneralIconProps;\n faded?: boolean;\n}\n\nexport interface EoDirectoryTreeLeafEvents {\n select: CustomEvent<void>;\n}\n\nexport interface EoDirectoryTreeLeafEventsMap {\n onSelect: \"select\";\n}\n\n/**\n * 目录树叶子节点\n */\nexport\n@defineElement(\"eo-directory-tree-leaf\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTreeLeaf extends ReactNextElement {\n /**\n * 深度\n */\n @property({\n type: Number,\n })\n accessor depth: number = 0;\n\n /**\n * 是否选中\n */\n @property({\n type: Boolean,\n })\n accessor selected: boolean | undefined;\n\n /** 节点图标 */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /** 节点是否淡化显示 */\n @property({ type: Boolean, render: false })\n accessor faded: boolean | undefined;\n\n /**\n * 节点被选中时触发\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<void>;\n\n #handleSelect = () => {\n this.#selectEvent.emit();\n };\n\n render() {\n return (\n <EoDirectoryTreeLeafComponent\n depth={this.depth}\n icon={this.icon}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\nexport interface EoDirectoryTreeLeafComponentProps\n extends EoDirectoryTreeLeafProps {\n onSelect: () => void;\n}\n\nexport function EoDirectoryTreeLeafComponent({\n depth,\n icon,\n onSelect,\n}: EoDirectoryTreeLeafComponentProps) {\n const treeItemRef = useRef<HTMLDivElement>(null);\n const suffixRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const treeItem = treeItemRef.current;\n const handleSelect = () => {\n onSelect();\n };\n\n treeItem?.addEventListener(\"click\", handleSelect);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleSelect);\n };\n }, [onSelect]);\n\n useEffect(() => {\n const suffix = suffixRef.current;\n const handleSuffixClick = (e: MouseEvent) => {\n e.stopPropagation();\n };\n\n suffix?.addEventListener(\"click\", handleSuffixClick);\n\n return () => {\n suffix?.removeEventListener(\"click\", handleSuffixClick);\n };\n }, []);\n\n return (\n <div className=\"tree-item\" ref={treeItemRef}>\n <div\n className=\"tree-item-indentation\"\n style={{\n width: IndentSize * depth,\n }}\n />\n <div className=\"tree-item-content\">\n <div className=\"tree-item-expand-button\"></div>\n {icon && <WrappedEoIcon {...icon} className=\"tree-item-icon\" />}\n <div className=\"tree-item-label\">\n <slot />\n </div>\n </div>\n <div className=\"tree-item-suffix\" ref={suffixRef}>\n <slot name=\"suffix\" />\n </div>\n </div>\n );\n}\n","export const IndentSize = 10;\n","import * as React from \"react\";\nconst SvgArrow = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={14} height={14} viewBox=\"0 0 14 14\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"m11.743 9.42-4.49-5.206a.34.34 0 0 0-.506 0L2.257 9.42c-.167.194-.016.478.253.478h8.98c.27 0 .42-.284.253-.478\" /></svg>;\nexport default SvgArrow;","import React, { useEffect, useRef } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport Arrow from \"./arrow.svg\";\nimport { IndentSize } from \"../constants\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedEoIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoDirectoryTreeInternalNodeProps {\n depth: number;\n expanded?: boolean;\n selectable?: boolean;\n selected?: boolean;\n icon?: GeneralIconProps;\n faded?: boolean;\n}\n\nexport interface EoDirectoryTreeInternalNodeEvents {\n expand: CustomEvent<boolean>;\n select: CustomEvent<void>;\n}\n\nexport interface EoDirectoryTreeInternalNodeEventsMap {\n onExpand: \"expand\";\n onSelect: \"select\";\n}\n\n/**\n * 目录树中间节点\n */\nexport\n@defineElement(\"eo-directory-tree-internal-node\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTreeInternalNode extends ReactNextElement {\n /**\n * 深度\n */\n @property({\n type: Number,\n })\n accessor depth: number = 0;\n\n /**\n * 是否展开\n */\n @property({\n type: Boolean,\n })\n accessor expanded: boolean | undefined;\n\n /**\n * 可选择\n */\n @property({\n type: Boolean,\n })\n accessor selectable: boolean | undefined;\n\n /**\n * 是否选中\n */\n @property({\n type: Boolean,\n })\n accessor selected: boolean | undefined;\n\n /** 节点图标 */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /** 节点是否淡化显示 */\n @property({ type: Boolean, render: false })\n accessor faded: boolean | undefined;\n\n /**\n * 节点展开/收起时触发\n * @detail 展开后的状态(true 表示展开,false 表示收起)\n */\n @event({ type: \"expand\" })\n accessor #expandEvent!: EventEmitter<boolean>;\n #handleExpand = () => {\n this.#expandEvent.emit(!this.expanded);\n };\n\n /**\n * 节点被选中时触发\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<void>;\n #handleSelect = () => {\n this.#selectEvent.emit();\n };\n\n render() {\n return (\n <EoDirectoryTreeInternalNodeComponent\n depth={this.depth}\n selectable={this.selectable}\n expanded={this.expanded}\n icon={this.icon}\n onExpand={this.#handleExpand}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\nexport interface EoDirectoryTreeInternalNodeComponentProps\n extends EoDirectoryTreeInternalNodeProps {\n onExpand: () => void;\n onSelect: () => void;\n}\n\nexport function EoDirectoryTreeInternalNodeComponent({\n depth,\n selectable,\n icon,\n onExpand,\n onSelect,\n}: EoDirectoryTreeInternalNodeComponentProps) {\n const treeItemRef = useRef<HTMLDivElement>(null);\n const expandBottomRef = useRef<HTMLDivElement>(null);\n const suffixRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (selectable) {\n const treeItem = treeItemRef.current;\n const expandBottom = expandBottomRef.current;\n const handleSelect = () => {\n onSelect();\n };\n const handleExpand = (e: MouseEvent) => {\n e.stopPropagation();\n onExpand();\n };\n\n treeItem?.addEventListener(\"click\", handleSelect);\n expandBottom?.addEventListener(\"click\", handleExpand);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleSelect);\n expandBottom?.removeEventListener(\"click\", handleExpand);\n };\n } else {\n const treeItem = treeItemRef.current;\n const handleExpand = () => {\n onExpand();\n };\n\n treeItem?.addEventListener(\"click\", handleExpand);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleExpand);\n };\n }\n }, [selectable, onSelect, onExpand]);\n\n useEffect(() => {\n const suffix = suffixRef.current;\n const handleSuffixClick = (e: MouseEvent) => {\n e.stopPropagation();\n };\n\n suffix?.addEventListener(\"click\", handleSuffixClick);\n\n return () => {\n suffix?.removeEventListener(\"click\", handleSuffixClick);\n };\n }, []);\n\n return (\n <>\n <div className=\"tree-item\" ref={treeItemRef}>\n <div\n className=\"tree-item-indentation\"\n style={{\n width: IndentSize * depth,\n }}\n />\n <div className=\"tree-item-content\">\n <div className=\"tree-item-expand-button\" ref={expandBottomRef}>\n <Arrow className=\"tree-item-expand-arrow\" />\n </div>\n {icon && <WrappedEoIcon {...icon} className=\"tree-item-icon\" />}\n <div className=\"tree-item-label\">\n <slot name=\"label\" />\n </div>\n </div>\n <div className=\"tree-item-suffix\" ref={suffixRef}>\n <slot name=\"suffix\" />\n </div>\n </div>\n <div className=\"tree-item-children\">\n <div className=\"tree-item-inner\">\n <slot />\n </div>\n </div>\n </>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { wrapBrick, ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst { defineElement } = createDecorators();\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\n/**\n * 导航栏图标\n */\nexport\n@defineElement(\"nav.nav-logo\", {\n styleTexts: [styleText],\n})\nclass NavLogo extends ReactNextElement {\n render() {\n return <NavLogoComponent />;\n }\n}\n\nexport function NavLogoComponent() {\n const brand = getRuntime().getBrandSettings();\n\n const logoNode = useMemo(() => {\n return brand.menu_bar_logo_url ? (\n <img src={brand.menu_bar_logo_url} className=\"personalized-logo\" />\n ) : (\n <WrappedIcon\n category=\"blueprint\"\n icon=\"easyops\"\n lib=\"easyops\"\n className=\"easyops-icon\"\n />\n );\n }, [brand.menu_bar_logo_url]);\n\n return (\n <div className=\"logo-container\">\n {brand.menu_bar_logo_no_link === \"true\" ? (\n logoNode\n ) : (\n <WrappedLink type=\"plain\" url=\"/\" className=\"logo-link\">\n {logoNode}\n </WrappedLink>\n )}\n </div>\n );\n}\n","/* istanbul ignore file */\nexport enum K {\n VIEW_DETAILS = \"VIEW_DETAILS\",\n DISMISS = \"DISMISS\",\n}\n\nconst en: Locale = {\n VIEW_DETAILS: \"View details\",\n DISMISS: \"Dismiss\",\n};\n\nconst zh: Locale = {\n VIEW_DETAILS: \"查看详情\",\n DISMISS: \"忽略\",\n};\n\nexport const NS = \"bricks/nav/poll-announce\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./notification.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./notification.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","/* istanbul ignore file */\nimport React, { useEffect } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { httpErrorToString } from \"@next-core/runtime\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { i18n } from \"@next-core/i18n\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\nimport {\n AnnounceApi_ignoreAnnounce,\n AnnounceApi_listEffectiveAnnounce,\n AnnounceApi_pollAnnounce,\n} from \"@next-api-sdk/sys-setting-sdk\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport styles from \"./notification.module.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n\nconst ignoredInstanceIds = new Set<string>();\n\nexport interface PollAnnounceProps {\n pollEnabled?: boolean;\n realTimeMessage?: Message;\n}\n\nexport interface Message {\n title: string;\n data: string;\n instanceId: string;\n}\n\nexport interface PollAnnounceEventsMapping {\n onNotificationClose: \"notification.close\";\n onNotificationOpen: \"notification.open\";\n}\n\n/**\n * 轮询获取通知消息并展示。\n *\n * 从 v2 构件 `nav-legacy.poll-announce` 迁移而来\n */\nexport\n@defineElement(\"nav.poll-announce\", {\n styleTexts: [styleText],\n})\nclass PollAnnounce extends ReactNextElement implements PollAnnounceProps {\n /**\n * 是否启用轮询\n *\n * - 启用时,将会不断轮询通知列表接口\n * - 未启用时,通过 `realTimeMessage` 属性传入实时通知消息\n *\n * 注意:v2 构件 `nav-legacy.poll-announce` 该属性名称为 `pollDisabled`,但其实际意义却是 `pollEnabled`,因此在迁移时进行了重命名。\n */\n @property({ type: Boolean })\n accessor pollEnabled: boolean | undefined;\n\n /**\n * 实时通知消息(通常通过 WebSocket 消息得到)\n */\n @property({ attribute: false })\n accessor realTimeMessage: Message | undefined;\n\n /**\n * 通知框关闭后,调用忽略通知接口完成后触发\n */\n @event({ type: \"notification.close\" })\n accessor #closeEvent!: EventEmitter<void>;\n\n #handleClose = () => {\n this.#closeEvent.emit();\n };\n\n /**\n * 轮询得到新的通知时触发。\n */\n @event({ type: \"notification.open\" })\n accessor #openEvent!: EventEmitter<void>;\n\n #handleOpen = () => {\n this.#openEvent.emit();\n };\n\n render() {\n return (\n <PollAnnounceComponent\n pollEnabled={this.pollEnabled}\n realTimeMessage={this.realTimeMessage}\n onOpen={this.#handleOpen}\n onClose={this.#handleClose}\n />\n );\n }\n}\n\nexport interface PollAnnounceComponentProps extends PollAnnounceProps {\n onOpen: () => void;\n onClose: () => void;\n}\n\nasync function openNotification(\n { title, data, instanceId }: Message,\n onClose: () => void\n) {\n const _data = data\n .replace(/<[^>]+>|&nbsp;/gim, \"\\r\\n\")\n .replace(/&ldquo;/gim, \"“\")\n .replace(/&rdquo;/gim, \"”\");\n\n const htmlMessage = _data.length > 100 ? _data.slice(0, 100) : _data;\n\n try {\n await showNotification({\n placement: \"topRight\",\n icon: {\n lib: \"antd\",\n theme: \"filled\",\n icon: \"sound\",\n style: {\n color: \"var(--theme-orange-color)\",\n },\n },\n title,\n htmlMessage: `<div class=\"${styles.message}\">${htmlMessage}</div>`,\n closable: true,\n showConfirm: true,\n confirmText: i18n.t(`${NS}:${K.VIEW_DETAILS}`),\n confirmLink: {\n url: `/announcement-management/announcement-front/content?instanceId=${instanceId}`,\n target: \"_blank\",\n },\n showCancel: true,\n cancelText: i18n.t(`${NS}:${K.DISMISS}`),\n });\n } catch {\n // ignore\n } finally {\n if (!ignoredInstanceIds.has(instanceId)) {\n ignoredInstanceIds.add(instanceId);\n try {\n await AnnounceApi_ignoreAnnounce({\n instanceIds: [instanceId],\n });\n onClose();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"ignore announce failed:\", e);\n }\n }\n }\n}\n\nexport function PollAnnounceComponent({\n pollEnabled,\n realTimeMessage,\n onOpen,\n onClose,\n}: PollAnnounceComponentProps) {\n useEffect(\n () => {\n const listEffectiveAnnounce = async (): Promise<void> => {\n const list = (await AnnounceApi_listEffectiveAnnounce({}))\n .list as (Message & { isPopup: boolean })[];\n if (list.length) {\n list\n .filter((item) => item.isPopup)\n .reverse()\n .forEach((item) => {\n openNotification(item, onClose);\n });\n }\n };\n listEffectiveAnnounce();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n useEffect(() => {\n if (!pollEnabled && realTimeMessage) {\n openNotification(realTimeMessage, onClose);\n }\n }, [onClose, pollEnabled, realTimeMessage]);\n\n useEffect(() => {\n if (!pollEnabled) {\n return;\n }\n let ignored = false;\n const pollAnnounce = async (): Promise<void> => {\n if (ignored) {\n return;\n }\n try {\n const result = await AnnounceApi_pollAnnounce({\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n });\n openNotification(result as Message, onClose);\n onOpen();\n pollAnnounce();\n } catch (error) {\n const err = httpErrorToString(error);\n if (err?.toLowerCase()?.includes(\"timeout\")) {\n pollAnnounce();\n }\n }\n };\n pollAnnounce();\n return () => {\n ignored = true;\n };\n }, [onClose, onOpen, pollEnabled]);\n\n return null;\n}\n","import type { MicroApp } from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport {\n cook,\n isEvaluable,\n preevaluate,\n type PreevaluateResult,\n} from \"@next-core/cook\";\nimport { supply } from \"@next-core/supply\";\nimport {\n beforeVisitGlobalMember,\n type MemberUsageInExpressions,\n} from \"@next-core/utils/storyboard\";\nimport type { MenuRawData } from \"../get-menu-config-tree\";\n\nconst allowedAppProps = new Set([\"name\", \"id\", \"homepage\", \"localeName\"]);\n\n/**\n * 对菜单标题进行表达式解析,支持 I18N 和 APP。\n */\nexport function smartDisplayForMenuTitle(\n title: unknown,\n i18nNamespace: string | undefined,\n overrideApp: MicroApp | undefined\n): string | undefined {\n if (typeof title !== \"string\") {\n return;\n }\n if (isEvaluable(title)) {\n // A `SyntaxError` maybe thrown.\n let precooked: PreevaluateResult | undefined;\n const appUsage: MemberUsageInExpressions = {\n usedProperties: new Set(),\n hasNonStaticUsage: false,\n };\n try {\n precooked = preevaluate(title, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(appUsage, [\"APP\"]),\n },\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Parse menu title expression \"${title}\" failed:`, error);\n }\n\n if (\n precooked &&\n (!precooked.attemptToVisitGlobals.has(\"APP\") ||\n (overrideApp &&\n !appUsage.hasNonStaticUsage &&\n [...appUsage.usedProperties].every((prop) =>\n allowedAppProps.has(prop)\n )))\n ) {\n const globals: Record<string, unknown> = {};\n for (const key of precooked.attemptToVisitGlobals) {\n switch (key) {\n case \"I18N\":\n globals[key] = i18n.getFixedT(\n null,\n [i18nNamespace].filter(Boolean) as string[]\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","import { createProviderClass } from \"@next-core/utils/general\";\nimport type { MenuRawData } from \"./get-menu-config-tree\";\nimport {\n initializeMenuI18n,\n smartDisplayForMenuTitle,\n} from \"./shared/smartDisplayForMenuTitle\";\n\nexport interface MenuOption {\n label: string;\n value: string;\n}\n\n/**\n * 构造用于菜单自定义的下拉选项数据。\n *\n * 将对菜单标题进行表达式解析,支持 I18N 和 APP。\n */\nexport async function getMenuConfigOptions(\n menuList: MenuRawData[]\n): Promise<MenuOption[]> {\n const options: MenuOption[] = [];\n\n const { menuWithI18n, dispose } = initializeMenuI18n(menuList);\n\n for (const menu of menuList) {\n options.push({\n label: `${smartDisplayForMenuTitle(menu.title, menuWithI18n.get(menu), menu.overrideApp) ?? \"\"} (${menu.menuId})`,\n value: menu.menuId,\n });\n }\n\n dispose();\n\n return options;\n}\n\ncustomElements.define(\n \"nav.get-menu-config-options\",\n createProviderClass(getMenuConfigOptions)\n);\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n FULL_TEXT_SEARCH = \"FULL_TEXT_SEARCH\",\n IP_SEARCH = \"IP_SEARCH\",\n TICKET_SEARCH = \"TICKET_SEARCH\",\n TICKET_SEARCH_PLACEHOLDER = \"TICKET_SEARCH_PLACEHOLDER\",\n IP_SEARCH_PLACEHOLDER = \"IP_SEARCH_PLACEHOLDER\",\n FULL_TEXT_SEARCH_PLACEHOLDER = \"FULL_TEXT_SEARCH_PLACEHOLDER\",\n IP_SEARCH_TOOLTIP = \"IP_SEARCH_TOOLTIP\",\n RECENT_SEARCH = \"RECENT_SEARCH\",\n NO_SEARCH_HISTORY = \"NO_SEARCH_HISTORY\",\n QUICK_SEARCH_TIP = \"QUICK_SEARCH_TIP\",\n}\n\nconst en: Locale = {\n FULL_TEXT_SEARCH: \"Full-text search\",\n IP_SEARCH: \"IP search\",\n TICKET_SEARCH: \"Ticket search\",\n TICKET_SEARCH_PLACEHOLDER: \"Enter ticket number/title and other keywords\",\n IP_SEARCH_PLACEHOLDER:\n \"Enter IP to query hosts and related applications, systems and other resources\",\n FULL_TEXT_SEARCH_PLACEHOLDER:\n 'Search applications, hosts and other information, supports \"\" exact search',\n IP_SEARCH_TOOLTIP: \"IP Search\",\n RECENT_SEARCH: \"Recent Search\",\n NO_SEARCH_HISTORY: \"No search history\",\n QUICK_SEARCH_TIP: \"Quick Search (Cmd/Ctrl+K)\",\n};\n\nconst zh: Locale = {\n FULL_TEXT_SEARCH: \"全文搜索\",\n IP_SEARCH: \"ip搜索\",\n TICKET_SEARCH: \"工单搜索\",\n TICKET_SEARCH_PLACEHOLDER: \"输入工单编号/标题等关键字\",\n IP_SEARCH_PLACEHOLDER: \"输入IP查询主机关联的应用、系统等资源\",\n FULL_TEXT_SEARCH_PLACEHOLDER: '搜索应用、主机等信息,支持\"\"精确搜索',\n IP_SEARCH_TOOLTIP: \"IP搜索\",\n RECENT_SEARCH: \"最近搜索\",\n NO_SEARCH_HISTORY: \"暂无搜索记录\",\n QUICK_SEARCH_TIP: \"快捷搜索(Cmd/Ctrl+K)\",\n};\n\nexport const NS = \"bricks/nav/query-search\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import React, {\n useEffect,\n useState,\n useMemo,\n useRef,\n useCallback,\n} from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport { NS, locales, K, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\nimport type { Button, ButtonProps } from \"@next-bricks/basic/button\";\nimport classNames from \"classnames\";\nimport type {\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap,\n} from \"@next-bricks/form/search\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\n\nimport { getRuntime, getHistory } from \"@next-core/runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { uniq } from \"lodash\";\nimport { Select, ConfigProvider, theme } from \"antd\";\nimport { StyleProvider, createCache } from \"@ant-design/cssinjs\";\nimport { InstanceApi_postSearchV3 } from \"@next-api-sdk/cmdb-sdk\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { useCurrentTheme } from \"@next-core/react-runtime\";\n\ninitializeI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\n// --- 常量定义 ---\nconst STORAGE = new JsonStorage(localStorage);\nconst FULL_TEXT_URL = \"search/result?q=%{q}%\";\nconst IP_SEARCH_URL = \"search/new/ipSearch?q=%{q}%\";\nconst ITSM_SEARCH_URL = \"/itsc-ticket-center/ticket-list?q=%{q}%\";\nconst INSTANCE_SEARCH_URL = \"search/instance-or-relation-path/search/\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedButton = wrapBrick<Button, ButtonProps>(\"eo-button\");\nexport const WrappedSearch = wrapBrick<\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap\n>(\"eo-search\", {\n onChange: \"change\",\n onSearch: \"search\",\n});\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\n/**\n * 综合搜索入口,支持全文检索、IP 搜索、工单搜索等多种查询模式,带搜索历史记录功能\n */\nexport\n@defineElement(\"nav.query-search\", {\n styleTexts: [styleText],\n})\nclass QuerySearch extends ReactNextElement {\n render() {\n return <QuerySearchComponent shadowRoot={this.shadowRoot} />;\n }\n}\n\nexport interface QuerySearchComponentProps {\n shadowRoot: ShadowRoot | null;\n}\n\nenum QuerierTypes {\n fullText = \"fullText\",\n instanceSearch = \"instanceSearch\",\n relationSearch = \"relationSearch\",\n link = \"link\",\n ipSearch = \"ipSearch\",\n}\n\ninterface QuerierConfig {\n url: string;\n searchPlaceholder: string;\n}\n\ninterface Querier {\n name: string;\n type: QuerierTypes;\n disabled: boolean;\n showInApps: string[];\n instanceId?: string;\n config: QuerierConfig;\n}\n\ninterface QuerierOption extends Querier {\n label: string;\n value: string;\n}\n\n// 获取 Storage Key 的辅助函数\nconst getOrgId = () => (auth.getAuth() as Record<string, string>)?.org || \"\";\nconst getRecentVisitsKey = () => `querier-search-recent-visits:${getOrgId()}`;\nconst getSelectedQuerierKey = () => `querier-search-querier:${getOrgId()}`;\n\nexport function QuerySearchComponent(props: QuerySearchComponentProps) {\n const { shadowRoot } = props;\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const appId = getRuntime().getCurrentApp()?.id || \"\";\n const currentTheme = useCurrentTheme();\n\n // State\n /**\n * null: 初始化(无动画)\n * false: 收起(播放收起动画)\n * true: 展开\n */\n const [showInput, setShowInput] = useState<boolean | null>(null);\n const [searchKey, setSearchKey] = useState<string>(\"\");\n const [visits, setVisits] = useState<string[]>([]);\n\n // Data State\n const [querierList, setQuerierList] = useState<Querier[]>([]);\n const [querierOptions, setQuerierOptions] = useState<QuerierOption[]>([]);\n const [selectedQuerier, setSelectedQuerier] = useState<QuerierOption>();\n\n // Style Cache\n const cache = useMemo(() => createCache(), []);\n\n // 检测是否应该直接跳转 (响应式布局逻辑)\n const checkIsDirectJump = useCallback((): boolean => {\n const parentWidth = shadowRoot?.host?.parentElement?.clientWidth || 0;\n return document.documentElement.clientWidth - parentWidth - 500 < 200;\n }, [shadowRoot]);\n\n // 处理跳转逻辑\n const handleHistoryPush = useCallback(\n (q?: string) => {\n // 如果还没加载 querier,默认去 IP 搜索\n const targetUrl =\n showInput && selectedQuerier?.config?.url\n ? selectedQuerier.config.url\n : IP_SEARCH_URL;\n const cleanUrl = targetUrl.startsWith(\"/\") ? targetUrl : \"/\" + targetUrl;\n const queryTerm = q || searchKey || \"\";\n const to = cleanUrl.replaceAll(\"%{q}%\", queryTerm);\n getHistory().push(to);\n },\n [showInput, selectedQuerier, searchKey]\n );\n\n // --- 核心逻辑优化 1: 分离键盘事件监听 ---\n\n // 1.1 全局快捷键监听 (Cmd/Ctrl + K) - 只绑定一次\n // istanbul ignore next\n useEffect(() => {\n const handleGlobalKeyDown = (e: KeyboardEvent) => {\n const isMac = /Mac|iPod|iPhone|iPad/.test(navigator.userAgent);\n const modKey = isMac ? e.metaKey : e.ctrlKey;\n\n if (modKey && e.key === \"k\") {\n e.preventDefault();\n // 使用 functional update 获取最新状态,避免频繁解绑\n setShowInput((prevShow) => {\n if (!prevShow) {\n // 如果当前是关闭状态,检查是否直接跳转\n if (checkIsDirectJump()) {\n // 注意:这里可能取不到最新的 selectedQuerier,如果依赖它,需要调整逻辑\n // 但 checkIsDirectJump 路径下通常走 IP Search 或默认\n // 为简化,此处仅触发打开,或需将 historyPush 移出 effect\n // *修正*: 为了保持原逻辑,这里若 directJump 为 true,我们在 state 变化副作用里处理,或者简单地只设为 true\n // 原逻辑是: 没 showInput -> directJump ? jump : show\n return true;\n }\n return true;\n }\n return prevShow;\n });\n\n // 特殊处理 DirectJump: 如果变为 true 后需要立即跳转,\n // 最好是在点击 button 时判断。快捷键场景下,先打开 Input 也是合理的交互。\n // 如果严格遵循原逻辑,需要在 effect 外部处理 jump。\n if (checkIsDirectJump() && !showInput) {\n // 这里 showInput 是闭包旧值,需小心\n handleHistoryPush();\n setShowInput(false); // 保持关闭\n }\n }\n };\n\n window.addEventListener(\"keydown\", handleGlobalKeyDown);\n return () => window.removeEventListener(\"keydown\", handleGlobalKeyDown);\n }, [checkIsDirectJump, handleHistoryPush]); // 依赖项较少\n\n // 1.2 局部交互监听 (点击外部关闭, ESC) - 仅当 showInput 为 true 时生效\n // istanbul ignore next\n useEffect(() => {\n if (!showInput) return;\n\n // 自动聚焦\n inputRef.current?.focus();\n\n const handleClickOutside = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !e.composedPath().includes(containerRef.current)\n ) {\n setShowInput(false);\n }\n };\n\n const handleEscKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" || e.key === \"Esc\") {\n setShowInput(false);\n }\n };\n\n // 关键修复:添加时使用了 capture: true\n window.addEventListener(\"click\", handleClickOutside, true);\n window.addEventListener(\"keydown\", handleEscKey);\n\n return () => {\n // 关键修复:移除时必须保持 capture: true,否则无法移除\n window.removeEventListener(\"click\", handleClickOutside, true);\n window.removeEventListener(\"keydown\", handleEscKey);\n };\n }, [showInput]);\n\n // --- 核心逻辑优化 2: 数据获取 (Lazy Loading) ---\n\n useEffect(() => {\n // 只有在打开输入框且列表为空时才加载\n if (showInput && querierList.length === 0) {\n const fetchQueriers = async () => {\n const defaultQueriers: Querier[] = [\n {\n type: QuerierTypes.fullText,\n name: t(K.FULL_TEXT_SEARCH),\n disabled: false,\n showInApps: [],\n config: { url: FULL_TEXT_URL, searchPlaceholder: \"\" },\n },\n {\n type: QuerierTypes.ipSearch,\n name: t(K.IP_SEARCH),\n disabled: false,\n showInApps: [],\n config: { url: IP_SEARCH_URL, searchPlaceholder: \"\" },\n },\n {\n type: QuerierTypes.link,\n name: t(K.TICKET_SEARCH),\n disabled: false,\n showInApps: [],\n config: {\n url: ITSM_SEARCH_URL,\n searchPlaceholder: t(K.TICKET_SEARCH_PLACEHOLDER),\n },\n },\n ];\n\n try {\n const res = await InstanceApi_postSearchV3(\"QUERIER_CONFIG@EASYOPS\", {\n page: 1,\n page_size: 100,\n fields: [\"name\", \"type\", \"disabled\", \"config\", \"showInApps\"],\n });\n\n const apiQueriers =\n res.list?.map((item) => {\n const i = item as Querier;\n const config: QuerierConfig = i.config || {\n url: \"\",\n searchPlaceholder: \"\",\n };\n\n if (i.type === QuerierTypes.fullText) config.url = FULL_TEXT_URL;\n else if (i.type === QuerierTypes.ipSearch)\n config.url = IP_SEARCH_URL;\n else if (\n [\n QuerierTypes.instanceSearch,\n QuerierTypes.relationSearch,\n ].includes(i.type)\n ) {\n config.url = `${INSTANCE_SEARCH_URL}${i.name}?q=%{q}%`;\n }\n return { ...i, config };\n }) || [];\n\n setQuerierList(\n apiQueriers.length > 0 ? apiQueriers : defaultQueriers\n );\n } catch {\n setQuerierList(defaultQueriers);\n }\n };\n fetchQueriers();\n }\n }, [showInput, querierList.length]);\n\n // --- 逻辑优化 3: 选项过滤与选中状态 ---\n\n useEffect(() => {\n if (querierList.length === 0) return;\n\n const options = querierList\n .filter(\n (i) =>\n !i.disabled && (!i.showInApps?.length || i.showInApps.includes(appId))\n )\n .map((i) => ({ ...i, label: i.name, value: i.name }));\n\n setQuerierOptions(options);\n\n // 恢复上次选中的 Querier\n const lastSelectedName = STORAGE.getItem(getSelectedQuerierKey());\n const matched = options.find((i) => i.name === lastSelectedName);\n const defaultOption =\n options.find((i) => i.type === QuerierTypes.ipSearch) || options[0];\n\n setSelectedQuerier(matched || defaultOption);\n }, [querierList, appId]);\n\n // 读取历史记录\n useEffect(() => {\n if (selectedQuerier) {\n const historyKey = `${getRecentVisitsKey()}-${selectedQuerier.name}`;\n setVisits(STORAGE.getItem(historyKey) ?? []);\n }\n }, [selectedQuerier]);\n\n // --- 事件处理 ---\n\n const handleQuerierSelect = (val: string) => {\n STORAGE.setItem(getSelectedQuerierKey(), val);\n setSelectedQuerier(querierOptions.find((i) => i.name === val));\n };\n // istanbul ignore next\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && searchKey && selectedQuerier) {\n const historyKey = `${getRecentVisitsKey()}-${selectedQuerier.name}`;\n STORAGE.setItem(historyKey, uniq([searchKey, ...visits].slice(0, 5)));\n handleHistoryPush();\n }\n };\n\n const handleClear = () => setSearchKey(\"\");\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) =>\n setSearchKey(e.target.value);\n\n const handleSearchClick = () => {\n if (checkIsDirectJump()) {\n handleHistoryPush();\n } else {\n setShowInput(true);\n }\n };\n // istanbul ignore next\n const handleHistoryTagClick = (tag: string) => {\n if (selectedQuerier) {\n const historyKey = `${getRecentVisitsKey()}-${selectedQuerier.name}`;\n STORAGE.setItem(historyKey, uniq([tag, ...visits].slice(0, 5)));\n handleHistoryPush(tag);\n }\n };\n\n // 计算 Placeholder\n const getPlaceholder = () => {\n if (selectedQuerier?.config?.searchPlaceholder)\n return selectedQuerier.config.searchPlaceholder;\n if (selectedQuerier?.type === QuerierTypes.ipSearch)\n return t(K.IP_SEARCH_PLACEHOLDER);\n if (selectedQuerier?.type === QuerierTypes.fullText)\n return t(K.FULL_TEXT_SEARCH_PLACEHOLDER);\n return \"\";\n };\n\n return (\n <ConfigProvider\n theme={{\n algorithm:\n currentTheme === \"dark-v2\"\n ? theme.darkAlgorithm\n : theme.defaultAlgorithm,\n }}\n >\n <StyleProvider\n container={shadowRoot as ShadowRoot}\n cache={cache}\n hashPriority=\"high\"\n >\n <div style={{ position: \"relative\" }} ref={containerRef}>\n <div\n className={classNames(\"container\", {\n containerShowInput: showInput,\n inputContentSlideout: showInput === false,\n })}\n onClick={(e) => e.stopPropagation()}\n >\n <div\n className={classNames(\"inputContent\", {\n inputContentSlidein: showInput,\n inputContentSlideout: showInput === false,\n })}\n >\n <div className=\"input-addon-wrapper\">\n <span className=\"input-affix-wrapper\">\n <span className=\"input-before-addon\">\n <Select\n value={selectedQuerier?.value}\n getPopupContainer={(trigger) => trigger.parentElement}\n showSearch\n variant=\"borderless\"\n style={{ width: \"100px\" }}\n options={querierOptions}\n onChange={handleQuerierSelect}\n />\n </span>\n <input\n placeholder={getPlaceholder()}\n ref={inputRef}\n value={searchKey}\n onChange={handleChange}\n onKeyDown={handleInputKeyDown}\n />\n {!!searchKey && (\n <span className=\"input-suffix\">\n <WrappedIcon\n className=\"input-clear-icon\"\n lib=\"antd\"\n icon=\"close-circle\"\n theme=\"filled\"\n onClick={handleClear}\n />\n </span>\n )}\n </span>\n </div>\n </div>\n\n {!showInput && (\n <WrappedToolTip content={t(K.IP_SEARCH_TOOLTIP)} placement=\"left\">\n <WrappedButton\n onClick={handleSearchClick}\n className={classNames(\"button\", {\n buttonSildeint: showInput === false,\n })}\n shape=\"circle\"\n type=\"ghost\"\n buttonStyle={{\n border: \"none\",\n background: \"none\",\n fontSize: \"16px\",\n }}\n icon={{ icon: \"search\", theme: \"outlined\", lib: \"antd\" }}\n />\n </WrappedToolTip>\n )}\n </div>\n\n <div\n className={classNames(\"historySearchContainer\", {\n historySearchContainerSlidein: showInput,\n historySearchContainerSlideout: showInput === false,\n })}\n >\n <div className=\"historySearchContent\">\n <div className=\"latestSearchText\">{t(K.RECENT_SEARCH)}</div>\n <div className=\"latestSearchTagContainer\">\n {visits.map((i) => (\n <span\n key={i}\n className=\"latestSearchTagContent\"\n onClick={() => handleHistoryTagClick(i)}\n >\n <span className=\"latestSearchTagText\" title={i}>\n {i}\n </span>\n </span>\n ))}\n {!visits.length && (\n <div className=\"emptyText\">{t(K.NO_SEARCH_HISTORY)}</div>\n )}\n </div>\n </div>\n <div className=\"quickSearchTip\">{t(K.QUICK_SEARCH_TIP)}</div>\n </div>\n </div>\n </StyleProvider>\n </ConfigProvider>\n );\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:inline-block}:host([hidden]){display:none}.directory-container{background-color:var(--color-fill-global-bg-3)}.directory-container .directory-title-container{margin-bottom:24px;display:flex;align-items:center;justify-content:space-between;gap:8px}.directory-container .directory-title-container .directory-title{font-size:16px;color:var(--text-color-title);line-height:24px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.directory-container .directory-search{display:block;margin-bottom:12px}.directory-container .tree > *:not(:last-child){margin-bottom:8px}.show-suffix-when-hover:not(:hover) .suffix{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.app-bar-container{height:var(--app-bar-height)}.app-bar{position:relative;z-index:999;box-shadow:var(--top-nav-shadow)}.app-bar.fixed,\n.app-bar.absolute{right:0;left:0;top:0}.app-bar.fixed{position:fixed}.app-bar.absolute{position:absolute}.app-bar-content{display:flex;justify-content:space-between;align-items:center;height:var(--app-bar-height);background-color:var(--top-navigation-bg);padding:0 16px;transition:var(--launchpad-backdrop-transition)}.left{display:flex;flex:1}.right{display:flex;justify-content:end}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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:inline-block}:host([hidden]){display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.recent-visits{list-style:none;margin:0;padding:0;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));max-height:56px;overflow:hidden}.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-visits eo-link{display:block;min-width:0}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.alert{height:32px;padding:0 20px;display:flex;justify-content:center;align-items:center}.text{color:var(--antd-text-color);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{margin-left:20px;cursor:pointer;color:#8c8c8c}.info{background-color:var(--palette-blue-1)}.warning{background-color:var(--palette-amber-1)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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, `:root{--eo-search-launchpad-menu-icon-color:#8c8c8c}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--eo-search-launchpad-menu-icon-color:rgba(255,255,255,0.45)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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}.tree-item{min-height:24px;display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:3px}.tree-item-indentation{flex-shrink:0}.tree-item-content{min-width:0;flex:1;display:flex;align-items:center}.tree-item-icon,\n.tree-item-expand-button{padding:3px;width:12px;height:12px;font-size:12px;flex-shrink:0}.tree-item-icon,\n.tree-item-label{color:var(--color-header-text)}.tree-item-icon{margin-right:4px}.tree-item-expand-button{margin:0 4px}.tree-item-label{min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-item-suffix{flex-shrink:0}:host([selected]) .tree-item{background-color:var(--palette-blue-1)}:host([faded]) .tree-item-icon,:host([faded]) .tree-item-label{color:var(--color-disabled-text)}:host(:not([selected])) .tree-item:hover .tree-item-icon{color:var(--palette-blue-4)}:host(:not([selected])) .tree-item:hover .tree-item-label{color:var(--palette-blue-4)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.menu-group-title{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-secondary-text-color);border-radius:var(--larger-border-radius);transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-title-icon-container{flex-shrink:0;margin-right:14px;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color);font-size:var(--menu-item-icon-size);transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-title-icon{width:1em;height:1em;border-bottom:2px solid var(--left-sidebar-group-border-color)}.menu-group-title-text{flex:1;font-size:12px;overflow:hidden;white-space:nowrap;margin-right:12px}.menu-group-list slot::slotted(*){margin-top:2px}.menu-group-arrow{position:absolute;top:50%;right:12px;width:10px;transform:translateY(-2px);transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-group-arrow::before,\n.menu-group-arrow::after{content:\"\";position:absolute;width:6px;height:1.5px;background-color:currentColor;border-radius:2px;transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-group-arrow::before{transform:rotate(45deg) translateX(2.5px)}.menu-group-arrow::after{transform:rotate(-45deg) translateX(-2.5px)}.menu-group-collapsed .menu-group-arrow{transform:translateY(-50%)}.menu-group-collapsed .menu-group-arrow::before{transform:rotate(-45deg) translateX(2.5px)}.menu-group-collapsed .menu-group-arrow::after{transform:rotate(45deg) translateX(-2.5px)}.menu-group-list{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-list-inner{overflow:hidden}:host([menu-collapsed]) .menu-group-title{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host(:not([menu-collapsed])) .menu-group-title-icon-container{width:0;margin-right:0;opacity:0}:host([menu-collapsed]) .menu-group-title-text{opacity:0}:host([menu-collapsed]) .menu-group-arrow{opacity:0}:host(:not([menu-collapsed])) .menu-group-title-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis;color:#7f8ba6}:host([collapsable]) .menu-group-collapsed .menu-group-list{grid-template-rows:0fr;opacity:0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.menu-submenu-title{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-sidebar-item-normal-color);border-radius:var(--larger-border-radius);cursor:pointer;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-submenu-title-icon-container{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);font-size:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color)}.menu-submenu-title-text{flex:1;margin-left:14px;margin-right:12px;font-size:14px;overflow:hidden;white-space:nowrap}.menu-submenu-arrow{position:absolute;top:50%;right:12px;width:10px;color:var(--left-sidebar-item-arrow-color);transform:translateY(-2px);transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-submenu-arrow::before,\n.menu-submenu-arrow::after{content:\"\";position:absolute;width:6px;height:1.5px;background-color:currentColor;border-radius:2px;transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-submenu-arrow::before{transform:rotate(45deg) translateX(2.5px)}.menu-submenu-arrow::after{transform:rotate(-45deg) translateX(-2.5px)}.menu-submenu-collapsed .menu-submenu-arrow{transform:translateY(-50%)}.menu-submenu-collapsed .menu-submenu-arrow::before{transform:rotate(-45deg) translateX(2.5px)}.menu-submenu-collapsed .menu-submenu-arrow::after{transform:rotate(45deg) translateX(-2.5px)}.menu-submenu-title:hover{background:var(--left-sidebar-item-hover-bg)}.menu-sub{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-submenu-collapsed .menu-sub{grid-template-rows:0fr;opacity:0}.menu-sub-inner{overflow:hidden}.menu-sub-inner slot::slotted(*){margin-top:2px}:host([menu-collapsed]) .menu-submenu-title{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host([menu-collapsed]) .menu-submenu-title-text{opacity:0}:host([menu-collapsed]) .menu-submenu-arrow{opacity:0}:host(:not([menu-collapsed])) .menu-submenu-title-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis}:host([selected]):host([menu-collapsed]) .menu-submenu-title{background:var(--left-sidebar-item-selected-bg);color:var(--left-sidebar-item-selected-color)}:host([selected]):host([collapsed]) .menu-submenu-title{background:var(--left-sidebar-item-selected-bg);color:var(--left-sidebar-item-selected-color)}:host([selected]):host([menu-collapsed]) .menu-submenu-title-icon-container{color:var(--left-sidebar-item-selected-color)}:host([selected]):host([collapsed]) .menu-submenu-title-icon-container{color:var(--left-sidebar-item-selected-color)}:host([selected]):host([menu-collapsed]) .menu-submenu-arrow{color:var(--left-sidebar-item-selected-color)}:host([selected]):host([collapsed]) .menu-submenu-arrow{color:var(--left-sidebar-item-selected-color)}:host([selected]) .menu-submenu-title-text{font-weight:var(--font-weight-500)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}.tree-item{min-height:24px;display:flex;align-items:center;-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:3px}.tree-item-indentation{flex-shrink:0}.tree-item-content{min-width:0;flex:1;display:flex;align-items:center}.tree-item-icon,\n.tree-item-expand-button{padding:3px;position:relative;width:12px;height:12px;font-size:12px;flex-shrink:0}.tree-item-icon,\n.tree-item-label{color:var(--color-header-text)}.tree-item-icon{margin-right:4px}.tree-item-expand-button{margin:0 4px}.tree-item-expand-button .tree-item-expand-arrow{color:var(--color-header-text);width:12px;height:12px;position:absolute;left:50%;top:50%;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.tree-item-label{min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-item-suffix{flex-shrink:0}.tree-item-children{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.tree-item-children .tree-item-inner{overflow:hidden}.tree-item-children .tree-item-inner slot::slotted(*){margin-top:8px}:host(:not([expanded])) .tree-item-children{grid-template-rows:0fr;opacity:0}:host([expanded]) .tree-item-expand-arrow{transform:translate(-50%,-50%) rotate(180deg)}:host(:not([expanded])) .tree-item-expand-arrow{transform:translate(-50%,-50%) rotate(90deg)}:host([selectable]) .tree-item-expand-button:hover{background-color:var(--color-fill-bg-base-1)}:host([selectable][selected]) .tree-item{background-color:var(--palette-blue-1)}:host([faded]) .tree-item-icon,:host([faded]) .tree-item-label{color:var(--color-disabled-text)}:host(:not([selected])) .tree-item:hover .tree-item-icon{color:var(--palette-blue-4)}:host(:not([selected])) .tree-item:hover .tree-item-label{color:var(--palette-blue-4)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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:inline-block}:host([hidden]){display:none}.container{position:relative;width:32px;height:32px}.containerShowInput{width:500px}.inputContent{background:rgba(204,209,219,0.3);border-radius:3px;height:30px;position:absolute;right:0;width:0px;overflow:hidden}.inputContentSlidein{overflow:visible;animation:slidein 0.4s ease-in-out forwards}.inputContentSlideout{width:500px;animation:slideout 0.4s 0.2s ease-in-out forwards}input{flex:1;padding:0;margin:0;border:none;outline:none;font-size:14px;line-height:20px;color:inherit;background-color:transparent;cursor:inherit;width:100%}select{border:none;outline:none;width:150px;background:transparent}input:focus{border:none!important}input::placeholder{color:var(--color-disabled-text)}.button{position:absolute;right:0;top:0}.buttonSildeint{opacity:0;animation:btnSlidein 0.1ms 0.6s ease-in-out forwards}@keyframes btnSlidein{from{opacity:0}to{opacity:1}}@keyframes slidein{from{width:0px}to{width:500px}}@keyframes slideout{from{width:500px}to{width:0px}}.input-addon-wrapper{display:table;width:100%;line-height:22px}.input-affix-wrapper{display:inline-flex;position:relative;padding-bottom:4px;width:100%;transition:border-color 0.3s,box-shadow 0.3s;overflow:visible}.input-suffix,\n.input-before-addon{display:flex;flex:none;align-items:center;margin-left:4px;margin-right:4px;width:16px}.input-before-addon{width:100px}.input-clear-icon{margin-left:4px;font-size:12px;color:var(--text-color-disabled);cursor:pointer}.input-clear-icon:hover{color:var(--antd-text-color-secondary)}.historySearchContainer{width:500px;height:160px;box-shadow:0px 2px 6px 0px rgba(0,0,0,0.15);background-color:var(--antd-dropdown-menu-bg);top:35px;position:absolute;height:0px;right:0;overflow:hidden;border-radius:6px;z-index:1000}.historySearchContainerSlidein{top:35px;animation:historySlidein 0.4s 0.2s ease-in-out forwards}.historySearchContainerSlideout{animation:historySlideout 0.4s ease-in-out forwards}@keyframes historySlidein{from{height:0px}to{height:160px}}@keyframes historySlideout{from{height:160px}to{height:0px}}.quickSearchTip{width:140px;height:17px;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:12px;color:var(--color-auxiliary-text);line-height:17px;text-align:left;font-style:normal;padding:8px 16px 8px 16px;width:484px;border-top:1px solid var(--color-border-divider-line)}.historySearchContent{height:103px;padding:16px 16px 8px 16px;overflow:auto}.latestSearchText{width:56px;height:20px;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:14px;color:var(--local-card-description-color);line-height:20px;text-align:left;font-style:normal;margin-bottom:10px}.latestSearchTagText{height:17px;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:14px;color:var(--color-strong-text);line-height:17px;text-align:center;font-style:normal;white-space:nowrap}.latestSearchTagContainer{display:flex;flex-wrap:wrap;row-gap:8px;column-gap:10px}.latestSearchTagContent{height:20px;background:var(--color-fill-bg-base-1);border-radius:3px;padding:1.5px 8px;cursor:pointer;max-width:480px;overflow:hidden;text-overflow:ellipsis}.emptyText{color:var(--text-color-secondary);text-align:center;width:100%}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","toString","locals","defineElement","property","createDecorators","WrappedMenuItem","wrapBrick","WrappedPopover","onVisibleChange","onBeforeVisibleChange","RenderMenuItemCom","props","item","isSubMenu","topData","React","SubMenuItemCom","_extends","isGroup","GroupMenuItemCom","SimpleMenuItemCom","index","hidden","showTooltip","selectedKey","className","key","title","text","active","includes","renderLinkCom","width","mainMenuTitleStyle","scrollWidth","handlePopupVisibleChange","event","paddingRight","window","innerWidth","document","body","clientWidth","style","detail","overflow","touchAction","_ref","_item$items","items","length","classnames","subprime","arrow","trigger","placement","distance","anchorDisplay","strategy","slot","renderSpanCom","map","innerItem","_ref2","_item$items2","childLayout","ThreeLevelMenuCom","SitMapMenCom","_ref3","_item$items3","ThreeLevelMenuPopoverContent","menuItem","_ref4","_item$items4","visible","setVisible","useState","onClick","e","stopPropagation","SiteMapItem","menuGroup","_NavMenu","_A","WeakMap","_B","_C","NavMenu","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","_init_menu","_init_extra_menu","_init_mainMenuTitleStyle","_init_extra_mainMenuTitleStyle","_init_showTooltip","_init_extra_showTooltip","menu","_classPrivateFieldGet","v","_classPrivateFieldSet","render","NavMenuComponent","this","history","getHistory","navMenuWrapperRef","useRef","location","setLocation","overflowIndex","setOverflowIndex","Number","MAX_SAFE_INTEGER","pathname","search","menuItems","useMemo","_menu$menuItems","filter","_items","type","selectedKeys","initMenuItemAndMatchCurrentPathKeys","useEffect","unListen","listen","current","resizeObserver","ResizeObserver","_navMenuWrapperRef$cu","getClientRects","childNodes","wrapperWidth","i","childWidth","height","childHeight","observe","disconnect","overflowMenu","slice","ref","_items2","isHidden","name","_NavMenu2","c","_initClass","_applyDecs","styleTexts","SiteMapStyleText","ItemTagStyleText","GroupItemStyleText","styleText","attribute","Boolean","initializeReactI18n","NS","locales","_LaunchpadButton","LaunchpadButton","LaunchpadButtonComponent","_LaunchpadButton2","lockBodyScroll","unwrapProvider","_EoLaunchpadButtonV","EoLaunchpadButtonV2","disconnectedCallback","super","EoLaunchpadButtonV2Component","host","initialized","setInitialized","setActive","toggleLaunchpad","previous","hotkeys","preventDefault","unbind","_getRuntime","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","getRuntime","getFeatureFlags","deferredPlatformCategories","role","classNames","LaunchpadSvg","Launchpad","_EoLaunchpadButtonV2","platformCategoryStyleText","launchpadStyleText","WrappedIcon","WrappedLink","WrappedDropdownActions","onActionClick","MenuGroup","_data$type","data","actions","variant","urlTemplate","customUrlTemplate","onMenuItemClick","dropdownActive","setDropdownActive","filteredActions","__secret_internals","legacyDoTransform","checkIfByTransform","handleActionClick","useCallback","action","empty","blocked","allBlocked","getLocaleName","lib","icon","MenuItemFolder","instanceId","MenuItem","_data$menuIcon","__pathname","disabled","linkUrl","parseUrlTemplate","urlObject","URL","url","origin","tooltip","menuIcon","pick","expanded","setExpanded","toggle","prefix","fallback","_urlTemplate$replace","replace","_match","encodeURIComponent","String","get","trim","BASE_PATH","_LaunchpadConfig","_D","_E","_F","_G","_LaunchpadConfig_brand","WeakSet","_H","_handleMenuItemClick","_onActionClick","LaunchpadConfig","_classPrivateMethodInitSpec","_init_menuGroups","_init_extra_menuGroups","_init_actions","_init_extra_actions","_init_variant","_init_extra_variant","_init_urlTemplate","_init_extra_urlTemplate","_init_customUrlTemplate","_init_extra_customUrlTemplate","_init_blacklist","_init_extra_blacklist","_init_menuItemClickEvent","_init_extra_menuItemClickEvent","_init_actionClickEvent","_init_extra_actionClickEvent","_classPrivateGetter","_get_menuItemClickEvent","emit","_get_actionClickEvent","menuGroups","blacklist","_this$variant","LaunchpadConfigComponent","processedMenuGroup","group","getMenuItemWithBlockInfo","blockable","some","hasBlocked","hasUnblocked","every","blockableUrls","flatMap","_blockableUrls","blockableUrl","_getMenuGroupsWithout","getMenuItemWithoutBlockedItems","getMenuGroupsWithoutBlockedItems","subItems","subItem","auth","isBlockedPath","isBlockedHref","_blockableUrls2","startsWith","urlObj","substring","undefined","getBlockableUrl","_LaunchpadConfig2","_set_menuItemClickEvent","_set_actionClickEvent","o","_","has","_checkInRHS","_EasyopsNavbarAlerts","EasyopsNavbarAlerts","EasyopsNavbarAlertsComponent","_EasyopsNavbarAlerts2","storage","JsonStorage","localStorage","licenseHide","setLienceseHide","slowRender","setSlowRender","currentApp","useCurrentApp","licenseDismissedKey","getAuth","org","licenseDaysLeft","_authInfo$license","authInfo","validDaysLeft","license","dismissExpireAt","isAdmin","getItem","moment","unix","handelRouteRender","renderTime","loadTime","loadInfoPage","getMiscSettings","isBuildPush","millisecondToSecond","suggestTime","suggestUrl","addEventListener","removeEventListener","handleLicenseAlertDismiss","setItem","Alert","link","label","closable","onClose","href","target","millisecond","Math","floor","_EoLaunchpadQuickAcce","EoLaunchpadQuickAccess","_init_readonly","_init_extra_readonly","_init_target","_init_extra_target","readonly","EoLaunchpadQuickAccessComponent","favorites","loadingFavorites","pushRecentVisit","toggleStar","isStarred","useLaunchpadInfo","LaunchpadsContext","Provider","value","searching","SidebarMenuItem","_EoLaunchpadQuickAccess","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","K","en","SEARCH_PLACEHOLDER","zh","_EoSearchLaunchpad","EoSearchLaunchpad","EoSearchLaunchpadComponent","searchInputRef","handleClickSearchBox","_searchInputRef$curre","focus","loading","q","setQ","t","useTranslation","handleSearch","clearSearch","placeholder","onChange","onFocus","onBlur","theme","onMouseDown","Loading","spinning","_EoSearchLaunchpad2","_EoLaunchpadRecentVis","EoLaunchpadRecentVisits","EoLaunchpadRecentVisitsComponent","recentVisits","_EoLaunchpadRecentVisits","_EoAppBarWrapper","EoAppBarWrapper","_init_isFixed","_init_extra_isFixed","_init_position","_init_extra_position","_init_displayCenter","_init_extra_displayCenter","_init_extraAppBarContentStyle","_init_extra_extraAppBarContentStyle","isFixed","position","displayCenter","extraAppBarContentStyle","EoAppBarWrapperComponent","mainElement","getElementById","iframeMainElement","marginTop","justifyContent","_EoAppBarWrapper2","alias","WrappedBreadcrumb","WrappedBreadcrumbItem","_EoFrameBreadcrumb","EoFrameBreadcrumb","_init_breadcrumb","_init_extra_breadcrumb","_init_noCurrentApp","_init_extra_noCurrentApp","breadcrumb","noCurrentApp","EoFrameBreadcrumbComponent","_curAppBreadcrumb$ite","_props$breadcrumb","_props$noCurrentApp","navConfig","useNavConfig","curAppBreadcrumb","currentAppBreadcrumbItems","getRealValue","breadcrumbItems","useCurrentMenuTitle","to","homepage","internal","localeName","_EoFrameBreadcrumb2","_EoSidebarMenuItem","EoSidebarMenuItem","_init_url","_init_extra_url","_init_href","_init_extra_href","_init_icon","_init_extra_icon","_init_selected","_init_extra_selected","_init_inSubmenu","_init_extra_inSubmenu","_init_menuCollapsed","_init_extra_menuCollapsed","selected","inSubmenu","menuCollapsed","EoSidebarMenuItemComponent","imgStyle","_EoSidebarMenuItem2","sidebarMenuItemTagNameSet","Set","useUpdateMenuCollapsedState","slotRef","updateChildrenMenuCollapsedState","_slotRef$current","assignedElements","forEach","ele","element","tagName","slotElem","handleSlotchange","SIDE_BAR_HAS_BEEN_USED","SIDE_BAR_EXPAND_STATE","SIDE_BAR_RESIZE_WIDTH","ExpandedState","sideBarWidth","parseInt","getCssPropertyValue","sideBarCollapsedWidth","SidebarMenuContext","createContext","openedKeys","matchedKeys","WrappedSidebarMenu","WrappedSidebarMenuItem","WrappedSidebarMenuGroup","WrappedSidebarMenuSubmenu","MenuSimpleItem","useContext","top","isSelected","collapsable","MenuSubmenu","collapsed","SidebarMenu","expandedState","Collapsed","_EoSidebarMenuGroup","_handleCollapseChang","EoSidebarMenuGroup","_init_collapsable","_init_extra_collapsable","_init_collapsed","_init_extra_collapsed","EoSidebarMenuGroupComponent","onCollapseChange","titleRef","handleClick","titleElem","_EoSidebarMenuGroup2","_EoSidebarMenuSubmenu","EoSidebarMenuSubmenu","EoSidebarMenuSubmenuComponent","_EoSidebarMenuSubmenu2","_EoSidebarMenu","EoSidebarMenu","EoSidebarMenuComponent","_EoSidebarMenu2","xmlns","viewBox","fill","fillRule","d","UNPIN_NAVIGATION","FIXED_NAVIGATION","CLICK_TO_FIX_NAVIGATION","WrappedTooltip","_EoSidebar","_EoSidebar_brand","_handleActualWidthChange","_handleExpandedStateChange","EoSidebar","_init_hiddenFixedIcon","_init_extra_hiddenFixedIcon","_init_expandedState","_init_extra_expandedState","_init_actualWidthChangeEvent","_init_extra_actualWidthChangeEvent","actualWidth","_get_actualWidthChangeEvent","_init_expandedStateChangeEvent","_init_extra_expandedStateChangeEvent","state","_get_expandedStateChangeEvent","hiddenFixedIcon","EoSidebarComponent","onActualWidthChange","onExpandedStateChange","showUserDefinedIcon","isFirstUsedTooltip","setIsFirstUsedTooltip","showContentShadow","setShowContentShadow","dragging","setDragging","setExpandedState","titleIcon","contentBottomPlaceholderRef","observer","IntersectionObserver","entries","entry","isIntersecting","threshold","Expanded","expandedWidth","setExpandedWidth","memorizedWidth","isNaN","containerRef","handleMouseEnter","newState","Hovered","handleMouseLeave","sidebarActualWidth","getContainerWidth","inner","container","content","handleFixedIconClick","FixedSvg","display","ToFixedSvg","_containerRef$current","_containerRef$current2","cancelable","offsetX","getBoundingClientRect","left","drag","debounceByAnimationFrame","x","clientX","dragEnd","passive","_EoSidebar2","_set_actualWidthChangeEvent","_set_expandedStateChangeEvent","WrappedMenu","WrappedMenuGroup","WrapperMenuItemSubMenu","WrappedLinkItem","_EoSidebarSubMenu","EoSidebarSubMenu","EoSidebarSubMenuComponent","setSelectedKey","setOpenedKeys","setSelected","getMenuItemIndent","_item$key","split","renderMenuItem","titleStyle","paddingLeft","bodyStyle","renderSubMenuItem","renderGroupMenuItem","renderSimpleMenuItem","mode","_EoSidebarSubMenu2","_EoDirectory","_EoDirectory_brand","_menuItemClick","_suffixIconClick","EoDirectory","_init_directoryTitle","_init_extra_directoryTitle","_init_menuItems","_init_extra_menuItems","_init_hideRightBorder","_init_extra_hideRightBorder","_init_suffixBrick","_init_extra_suffixBrick","_init_defaultSelectedKeys","_init_extra_defaultSelectedKeys","_init_suffixIconClickEvent","_init_extra_suffixIconClickEvent","_get_suffixIconClickEvent","directoryTitle","hideRightBorder","suffixBrick","defaultSelectedKeys","EoDirectoryComponent","suffixIconClick","menuItemClick","_item$children","useBrick","ReactUseMultipleBricks","suffixIcon","suffixIconTooltip","suffixIconDisabled","children","child","groupKey","_EoDirectory2","_set_suffixIconClickEvent","DirectoryTreeContext","expandedKeysSet","selectedKeysSet","onExpand","onSelect","useDirectoryTreeContext","WrappedTreeLeaf","WrappedTreeInternalNode","TreeLeaf","treeData","depth","nodeData","faded","keys","node","when","TreeInternalNode","internalNodeSelectable","selectable","add","delete","TreeNode","Array","isArray","Tree","getAllExpandableKeys","reduce","pre","cur","concat","getExpandableKeysAccordingToSelectedKeys","_cur$children","childrenMatched","childrenExpandableKeys","searchTree","searchFields","expandedKeys","lowerQ","toLowerCase","_expandedKeys","_data","selfMatched","field","getSearchKeywords","matchItem","childrenSearchResult","filteredChildren","result","isNil","Object","prototype","call","k","flat","Infinity","method","WrappedSearch","onSearch","_EoDirectoryTree","_I","_J","_EoDirectoryTree_brand","_handleExpand","_K","_handleSelect","EoDirectoryTree","_initProto","_init_data","_init_extra_data","_init_internalNodeSelectable","_init_extra_internalNodeSelectable","_init_searchable","_init_extra_searchable","_init_placeholder","_init_extra_placeholder","_init_searchFields","_init_extra_searchFields","_init_selectedKeys","_init_extra_selectedKeys","_init_expandedKeys","_init_extra_expandedKeys","_init_expandEvent","_init_extra_expandEvent","_get_expandEvent","_init_selectEvent","_init_extra_selectEvent","_get_selectEvent","searchable","expandAll","collapseAll","expandAccordingToSelectedKeys","EoDirectoryTreeComponent","searchedData","treeItems","flattenList","dig","list","parent","treeItem","pos","flattenData","getFlattenTreeData","_EoDirectoryTree2","_set_expandEvent","_set_selectEvent","WrappedEoIcon","_EoDirectoryTreeLeaf","_EoDirectoryTreeLeaf_brand","EoDirectoryTreeLeaf","_init_depth","_init_extra_depth","_init_faded","_init_extra_faded","EoDirectoryTreeLeafComponent","treeItemRef","suffixRef","handleSelect","suffix","handleSuffixClick","_EoDirectoryTreeLeaf2","_EoDirectoryTreeInter","_EoDirectoryTreeInternalNode_brand","EoDirectoryTreeInternalNode","_init_expanded","_init_extra_expanded","_init_selectable","_init_extra_selectable","EoDirectoryTreeInternalNodeComponent","expandBottomRef","expandBottom","handleExpand","Arrow","_EoDirectoryTreeInternalNode","_NavLogo","NavLogo","NavLogoComponent","brand","getBrandSettings","logoNode","menu_bar_logo_url","src","category","menu_bar_logo_no_link","_NavLogo2","VIEW_DETAILS","DISMISS","showNotification","ignoredInstanceIds","_PollAnnounce","_PollAnnounce_brand","_handleClose","_handleOpen","PollAnnounce","_init_pollEnabled","_init_extra_pollEnabled","_init_realTimeMessage","_init_extra_realTimeMessage","_init_closeEvent","_init_extra_closeEvent","_get_closeEvent","_init_openEvent","_init_extra_openEvent","_get_openEvent","pollEnabled","realTimeMessage","PollAnnounceComponent","onOpen","async","openNotification","htmlMessage","color","styles","message","showConfirm","confirmText","i18n","confirmLink","showCancel","cancelText","AnnounceApi_ignoreAnnounce","instanceIds","console","error","AnnounceApi_listEffectiveAnnounce","isPopup","reverse","listEffectiveAnnounce","ignored","pollAnnounce","AnnounceApi_pollAnnounce","interceptorParams","ignoreLoadingBar","_err$toLowerCase","err","httpErrorToString","_PollAnnounce2","_set_closeEvent","_set_openEvent","allowedAppProps","smartDisplayForMenuTitle","i18nNamespace","overrideApp","isEvaluable","precooked","appUsage","usedProperties","hasNonStaticUsage","preevaluate","withParent","hooks","beforeVisitGlobal","beforeVisitGlobalMember","attemptToVisitGlobals","prop","globals","getFixedT","suppliedGlobals","supply","computable","hasOwnProperty","cook","expression","source","globalVariables","initializeMenuI18n","menuList","menuWithI18n","menuI18nBundles","_menu$i18n","menuI18nNamespace","menuId","app","appId","lang","resources","addResourceBundle","set","dispose","ns","removeResourceBundle","symbolMenuI18nNamespace","Symbol","symbolOverrideApp","DEFAULT_ICON","getIcon","imgSrc","processGroupInject","injectWithMenus","_processGroupInject","foundInjectingMenus","groupId","injectingMenu","reorderMenuItems","sortBy","_item$sort","sort","sortMenuItems","customElements","define","createProviderClass","_smartDisplayForMenuT2","mainMenu","find","validMenuList","Map","_menu$items","dynamicItems","itemsResolve","injectMenuGroupId","injectingMenus","firstLevelItems","tree","__keys","getChildren","prefixKey","j","_smartDisplayForMenuT","initializeI18n","FULL_TEXT_SEARCH","IP_SEARCH","TICKET_SEARCH","TICKET_SEARCH_PLACEHOLDER","IP_SEARCH_PLACEHOLDER","FULL_TEXT_SEARCH_PLACEHOLDER","IP_SEARCH_TOOLTIP","RECENT_SEARCH","NO_SEARCH_HISTORY","QUICK_SEARCH_TIP","STORAGE","FULL_TEXT_URL","IP_SEARCH_URL","WrappedButton","WrappedToolTip","_QuerySearch","QuerySearch","QuerySearchComponent","shadowRoot","_QuerySearch2","QuerierTypes","getOrgId","_auth$getAuth","getRecentVisitsKey","getSelectedQuerierKey","_getRuntime$getCurren","inputRef","getCurrentApp","currentTheme","useCurrentTheme","showInput","setShowInput","searchKey","setSearchKey","visits","setVisits","querierList","setQuerierList","querierOptions","setQuerierOptions","selectedQuerier","setSelectedQuerier","cache","createCache","checkIsDirectJump","_shadowRoot$host","parentWidth","parentElement","documentElement","handleHistoryPush","_selectedQuerier$conf","targetUrl","config","cleanUrl","queryTerm","replaceAll","handleGlobalKeyDown","test","navigator","userAgent","metaKey","ctrlKey","prevShow","_inputRef$current","handleClickOutside","composedPath","handleEscKey","defaultQueriers","fullText","showInApps","searchPlaceholder","ipSearch","_res$list","apiQueriers","InstanceApi_postSearchV3","page","page_size","fields","instanceSearch","relationSearch","fetchQueriers","_i$showInApps","lastSelectedName","matched","defaultOption","_STORAGE$getItem","historyKey","ConfigProvider","algorithm","darkAlgorithm","defaultAlgorithm","StyleProvider","hashPriority","containerShowInput","inputContentSlideout","inputContentSlidein","Select","getPopupContainer","showSearch","val","_selectedQuerier$conf2","onKeyDown","uniq","handleClear","handleSearchClick","buttonSildeint","shape","buttonStyle","border","background","fontSize","historySearchContainerSlidein","historySearchContainerSlideout","tag","handleHistoryTagClick","getPlaceholder"],"sourceRoot":""}