@next-bricks/nav 1.24.10 → 1.25.0

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 (129) hide show
  1. package/dist/bricks.json +12 -12
  2. package/dist/chunks/1685.437940d7.js +2 -0
  3. package/dist/chunks/1685.437940d7.js.map +1 -0
  4. package/dist/chunks/3944.a7f7cffe.js +2 -0
  5. package/dist/chunks/3944.a7f7cffe.js.map +1 -0
  6. package/dist/chunks/{4837.b5ed600d.js → 4837.d06f1908.js} +2 -2
  7. package/dist/chunks/{7218.6547d083.js.map → 4837.d06f1908.js.map} +1 -1
  8. package/dist/chunks/5655.a02d92d1.js +2 -0
  9. package/dist/chunks/5655.a02d92d1.js.map +1 -0
  10. package/dist/chunks/6128.3912671f.js +2 -0
  11. package/dist/chunks/6128.3912671f.js.map +1 -0
  12. package/dist/chunks/6502.9ac6b169.js +2 -0
  13. package/dist/chunks/6502.9ac6b169.js.map +1 -0
  14. package/dist/chunks/{7218.6547d083.js → 7218.623deb5b.js} +2 -2
  15. package/dist/chunks/{4837.b5ed600d.js.map → 7218.623deb5b.js.map} +1 -1
  16. package/dist/chunks/easyops-navbar-alerts.cc7090db.js +2 -0
  17. package/dist/chunks/easyops-navbar-alerts.cc7090db.js.map +1 -0
  18. package/dist/chunks/{eo-app-bar-wrapper.6fcc11f1.js → eo-app-bar-wrapper.743025bd.js} +3 -3
  19. package/dist/chunks/eo-app-bar-wrapper.743025bd.js.map +1 -0
  20. package/dist/chunks/eo-directory-tree-internal-node.e1fd8680.js +2 -0
  21. package/dist/chunks/eo-directory-tree-internal-node.e1fd8680.js.map +1 -0
  22. package/dist/chunks/eo-directory-tree-leaf.315a4f71.js +2 -0
  23. package/dist/chunks/eo-directory-tree-leaf.315a4f71.js.map +1 -0
  24. package/dist/chunks/eo-directory-tree.2ba780f8.js +3 -0
  25. package/dist/chunks/eo-directory-tree.2ba780f8.js.map +1 -0
  26. package/dist/chunks/eo-directory.a0e99853.js +3 -0
  27. package/dist/chunks/eo-directory.a0e99853.js.map +1 -0
  28. package/dist/chunks/{eo-frame-breadcrumb.88ef9279.js → eo-frame-breadcrumb.a2d98877.js} +2 -2
  29. package/dist/chunks/{eo-frame-breadcrumb.88ef9279.js.map → eo-frame-breadcrumb.a2d98877.js.map} +1 -1
  30. package/dist/chunks/eo-launchpad-button-v2.aa05077e.js +3 -0
  31. package/dist/chunks/eo-launchpad-button-v2.aa05077e.js.map +1 -0
  32. package/dist/chunks/eo-launchpad-button.b8b7bcff.js +3 -0
  33. package/dist/chunks/eo-launchpad-button.b8b7bcff.js.map +1 -0
  34. package/dist/chunks/eo-launchpad-quick-access.b0a48525.js +3 -0
  35. package/dist/chunks/eo-launchpad-quick-access.b0a48525.js.map +1 -0
  36. package/dist/chunks/{eo-launchpad-recent-visits.dad50d61.js → eo-launchpad-recent-visits.1a7c6e2c.js} +3 -3
  37. package/dist/chunks/eo-launchpad-recent-visits.1a7c6e2c.js.map +1 -0
  38. package/dist/chunks/{eo-nav-menu.640648bb.js → eo-nav-menu.64183ee8.js} +2 -2
  39. package/dist/chunks/{eo-nav-menu.640648bb.js.map → eo-nav-menu.64183ee8.js.map} +1 -1
  40. package/dist/chunks/eo-search-launchpad.8d4e293c.js +2 -0
  41. package/dist/chunks/eo-search-launchpad.8d4e293c.js.map +1 -0
  42. package/dist/chunks/{eo-sidebar-menu-group.66decf41.js → eo-sidebar-menu-group.01ac76d3.js} +3 -3
  43. package/dist/chunks/{eo-sidebar-menu-group.66decf41.js.map → eo-sidebar-menu-group.01ac76d3.js.map} +1 -1
  44. package/dist/chunks/eo-sidebar-menu-item.cc8a849b.js +2 -0
  45. package/dist/chunks/eo-sidebar-menu-item.cc8a849b.js.map +1 -0
  46. package/dist/chunks/eo-sidebar-menu-submenu.5cb414f6.js +3 -0
  47. package/dist/chunks/eo-sidebar-menu-submenu.5cb414f6.js.map +1 -0
  48. package/dist/chunks/{eo-sidebar-menu.39722013.js → eo-sidebar-menu.48f4f3a7.js} +2 -2
  49. package/dist/chunks/{eo-sidebar-menu.39722013.js.map → eo-sidebar-menu.48f4f3a7.js.map} +1 -1
  50. package/dist/chunks/{eo-sidebar-sub-menu.d8255f31.js → eo-sidebar-sub-menu.70c71ea9.js} +3 -3
  51. package/dist/chunks/eo-sidebar-sub-menu.70c71ea9.js.map +1 -0
  52. package/dist/chunks/eo-sidebar.ad2491ee.js +3 -0
  53. package/dist/chunks/eo-sidebar.ad2491ee.js.map +1 -0
  54. package/dist/chunks/{get-menu-config-options.77e554ca.js → get-menu-config-options.5803223a.js} +2 -2
  55. package/dist/chunks/{get-menu-config-options.77e554ca.js.map → get-menu-config-options.5803223a.js.map} +1 -1
  56. package/dist/chunks/{get-menu-config-tree.d422a3a5.js → get-menu-config-tree.d139c301.js} +2 -2
  57. package/dist/chunks/{get-menu-config-tree.d422a3a5.js.map → get-menu-config-tree.d139c301.js.map} +1 -1
  58. package/dist/chunks/launchpad-config.bd938fce.js +3 -0
  59. package/dist/chunks/launchpad-config.bd938fce.js.map +1 -0
  60. package/dist/chunks/{main.0a22c3de.js → main.7c9a2c63.js} +2 -2
  61. package/dist/chunks/{main.0a22c3de.js.map → main.7c9a2c63.js.map} +1 -1
  62. package/dist/chunks/{nav-logo.8d4c94b9.js → nav-logo.96de5e52.js} +2 -2
  63. package/dist/chunks/{nav-logo.8d4c94b9.js.map → nav-logo.96de5e52.js.map} +1 -1
  64. package/dist/chunks/{poll-announce.e1c07541.js → poll-announce.bb9bd6d1.js} +3 -3
  65. package/dist/chunks/{poll-announce.e1c07541.js.map → poll-announce.bb9bd6d1.js.map} +1 -1
  66. package/dist/chunks/{query-search.1f1900d6.js → query-search.0c3c3518.js} +3 -3
  67. package/dist/chunks/query-search.0c3c3518.js.map +1 -0
  68. package/dist/examples.json +3 -3
  69. package/dist/index.715d54c7.js +2 -0
  70. package/dist/{index.4abc895c.js.map → index.715d54c7.js.map} +1 -1
  71. package/dist/manifest.json +39 -39
  72. package/dist/types.json +66 -66
  73. package/dist-types/search-launchpad/i18n.d.ts +14 -0
  74. package/package.json +3 -3
  75. package/dist/chunks/2133.7a40ebb2.js +0 -2
  76. package/dist/chunks/2133.7a40ebb2.js.map +0 -1
  77. package/dist/chunks/4433.a908e194.js +0 -2
  78. package/dist/chunks/4433.a908e194.js.map +0 -1
  79. package/dist/chunks/4727.d9082275.js +0 -2
  80. package/dist/chunks/4727.d9082275.js.map +0 -1
  81. package/dist/chunks/6595.eae95c18.js +0 -2
  82. package/dist/chunks/6595.eae95c18.js.map +0 -1
  83. package/dist/chunks/9149.6aa0810a.js +0 -2
  84. package/dist/chunks/9149.6aa0810a.js.map +0 -1
  85. package/dist/chunks/easyops-navbar-alerts.2aa70f37.js +0 -2
  86. package/dist/chunks/easyops-navbar-alerts.2aa70f37.js.map +0 -1
  87. package/dist/chunks/eo-app-bar-wrapper.6fcc11f1.js.map +0 -1
  88. package/dist/chunks/eo-directory-tree-internal-node.73444da5.js +0 -2
  89. package/dist/chunks/eo-directory-tree-internal-node.73444da5.js.map +0 -1
  90. package/dist/chunks/eo-directory-tree-leaf.18f2d847.js +0 -2
  91. package/dist/chunks/eo-directory-tree-leaf.18f2d847.js.map +0 -1
  92. package/dist/chunks/eo-directory-tree.73e83674.js +0 -3
  93. package/dist/chunks/eo-directory-tree.73e83674.js.map +0 -1
  94. package/dist/chunks/eo-directory.a271465b.js +0 -3
  95. package/dist/chunks/eo-directory.a271465b.js.map +0 -1
  96. package/dist/chunks/eo-launchpad-button-v2.e035fd94.js +0 -3
  97. package/dist/chunks/eo-launchpad-button-v2.e035fd94.js.map +0 -1
  98. package/dist/chunks/eo-launchpad-button.ee733f67.js +0 -3
  99. package/dist/chunks/eo-launchpad-button.ee733f67.js.map +0 -1
  100. package/dist/chunks/eo-launchpad-quick-access.b7dc8eea.js +0 -3
  101. package/dist/chunks/eo-launchpad-quick-access.b7dc8eea.js.map +0 -1
  102. package/dist/chunks/eo-launchpad-recent-visits.dad50d61.js.map +0 -1
  103. package/dist/chunks/eo-search-launchpad.877d14b1.js +0 -2
  104. package/dist/chunks/eo-search-launchpad.877d14b1.js.map +0 -1
  105. package/dist/chunks/eo-sidebar-menu-item.aa1f6f66.js +0 -2
  106. package/dist/chunks/eo-sidebar-menu-item.aa1f6f66.js.map +0 -1
  107. package/dist/chunks/eo-sidebar-menu-submenu.5308ee43.js +0 -3
  108. package/dist/chunks/eo-sidebar-menu-submenu.5308ee43.js.map +0 -1
  109. package/dist/chunks/eo-sidebar-sub-menu.d8255f31.js.map +0 -1
  110. package/dist/chunks/eo-sidebar.ed2833ef.js +0 -3
  111. package/dist/chunks/eo-sidebar.ed2833ef.js.map +0 -1
  112. package/dist/chunks/launchpad-config.1c537f55.js +0 -3
  113. package/dist/chunks/launchpad-config.1c537f55.js.map +0 -1
  114. package/dist/chunks/query-search.1f1900d6.js.map +0 -1
  115. package/dist/index.4abc895c.js +0 -2
  116. /package/dist/chunks/{eo-app-bar-wrapper.6fcc11f1.js.LICENSE.txt → eo-app-bar-wrapper.743025bd.js.LICENSE.txt} +0 -0
  117. /package/dist/chunks/{eo-directory-tree.73e83674.js.LICENSE.txt → eo-directory-tree.2ba780f8.js.LICENSE.txt} +0 -0
  118. /package/dist/chunks/{eo-directory.a271465b.js.LICENSE.txt → eo-directory.a0e99853.js.LICENSE.txt} +0 -0
  119. /package/dist/chunks/{eo-launchpad-button-v2.e035fd94.js.LICENSE.txt → eo-launchpad-button-v2.aa05077e.js.LICENSE.txt} +0 -0
  120. /package/dist/chunks/{eo-launchpad-button.ee733f67.js.LICENSE.txt → eo-launchpad-button.b8b7bcff.js.LICENSE.txt} +0 -0
  121. /package/dist/chunks/{eo-launchpad-quick-access.b7dc8eea.js.LICENSE.txt → eo-launchpad-quick-access.b0a48525.js.LICENSE.txt} +0 -0
  122. /package/dist/chunks/{eo-launchpad-recent-visits.dad50d61.js.LICENSE.txt → eo-launchpad-recent-visits.1a7c6e2c.js.LICENSE.txt} +0 -0
  123. /package/dist/chunks/{eo-sidebar-menu-group.66decf41.js.LICENSE.txt → eo-sidebar-menu-group.01ac76d3.js.LICENSE.txt} +0 -0
  124. /package/dist/chunks/{eo-sidebar-menu-submenu.5308ee43.js.LICENSE.txt → eo-sidebar-menu-submenu.5cb414f6.js.LICENSE.txt} +0 -0
  125. /package/dist/chunks/{eo-sidebar-sub-menu.d8255f31.js.LICENSE.txt → eo-sidebar-sub-menu.70c71ea9.js.LICENSE.txt} +0 -0
  126. /package/dist/chunks/{eo-sidebar.ed2833ef.js.LICENSE.txt → eo-sidebar.ad2491ee.js.LICENSE.txt} +0 -0
  127. /package/dist/chunks/{launchpad-config.1c537f55.js.LICENSE.txt → launchpad-config.bd938fce.js.LICENSE.txt} +0 -0
  128. /package/dist/chunks/{poll-announce.e1c07541.js.LICENSE.txt → poll-announce.bb9bd6d1.js.LICENSE.txt} +0 -0
  129. /package/dist/chunks/{query-search.1f1900d6.js.LICENSE.txt → query-search.0c3c3518.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/6595.eae95c18.js","mappings":"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","sources":["webpack:///./src/launchpad/LaunchpadButton/LaunchpadButton.shadow.css","webpack:///./src/launchpad/FavoriteDesktopCell/FavoriteDesktopCell.module.css","webpack:///./src/launchpad/DesktopSlider/DesktopSlider.module.css","webpack:///./src/launchpad/DesktopCustom/DesktopCustom.module.css","webpack:///./src/launchpad/DesktopDirContent/DesktopDirContent.module.css","webpack:///./src/images/launchpad.svg","webpack:///./src/launchpad/DesktopCell/DesktopCell.module.css","webpack:///./src/launchpad/DesktopDir/DesktopDir.module.css","webpack:///./src/launchpad/DesktopApp/DesktopApp.module.css","webpack:///./src/launchpad/Launchpad/Launchpad.module.css","webpack:///./src/launchpad/LaunchpadWrapper/LaunchpadWrapper.module.css","webpack:///./src/launchpad/SearchBar/SearchBar.module.css","webpack:///./src/launchpad/SearchBar/SearchBar.module.css?483e","webpack:///./src/launchpad/common/wrapBrick.tsx","webpack:///./src/launchpad/SearchBar/SearchBar.tsx","webpack:///./src/launchpad/DesktopCell/DesktopCell.module.css?0d52","webpack:///./src/launchpad/DesktopApp/DesktopApp.module.css?89de","webpack:///./src/launchpad/utils/getImageUrl.tsx","webpack:///./src/launchpad/DesktopApp/DesktopApp.tsx","webpack:///./src/launchpad/DesktopDirContext.ts","webpack:///./src/launchpad/DesktopDir/DesktopDir.module.css?ef5b","webpack:///./src/launchpad/DesktopDir/DesktopDir.tsx","webpack:///./src/launchpad/DesktopCustom/DesktopCustom.module.css?b0be","webpack:///./src/launchpad/DesktopCustom/DesktopCustom.tsx","webpack:///./src/launchpad/LaunchpadService.ts","webpack:///./src/launchpad/DesktopCell/DesktopCell.tsx","webpack:///./src/launchpad/LaunchpadSettingsContext.ts","webpack:///./src/launchpad/Desktop/Desktop.module.css?26dc","webpack:///./src/launchpad/Desktop/Desktop.tsx","webpack:///./src/launchpad/DesktopSlider/DesktopSlider.module.css?8883","webpack:///./src/launchpad/MyDesktop/MyDesktop.module.css?82d4","webpack:///./src/launchpad/FavoriteDesktopCell/FavoriteDesktopCell.module.css?3e83","webpack:///./src/launchpad/FavoriteDesktopCell/FavoriteDesktopCell.tsx","webpack:///./src/launchpad/site-map/SiteMap.module.css?cc0f","webpack:///./src/launchpad/site-map/SiteMap.tsx","webpack:///./src/launchpad/MyDesktop/MyDesktop.tsx","webpack:///./src/launchpad/DesktopSlider/desktopCursor.ts","webpack:///./src/launchpad/DesktopSlider/DesktopSlider.tsx","webpack:///./src/launchpad/DesktopDirContent/DesktopDirContent.module.css?8ba4","webpack:///./src/launchpad/DesktopDirContent/DesktopDirContent.tsx","webpack:///./src/launchpad/Launchpad/Launchpad.module.css?c690","webpack:///./src/launchpad/Launchpad/Launchpad.tsx","webpack:///./src/launchpad/LaunchpadWrapper/LaunchpadWrapper.module.css?ec6f","webpack:///./src/launchpad/LaunchpadWrapper/LaunchpadWrapper.tsx","webpack:///./src/launchpad/LaunchpadPortal/LaunchpadPortal.tsx","webpack:///./src/launchpad/LaunchpadButton/LaunchpadButton.tsx","webpack:///./src/launchpad/MyDesktop/MyDesktop.module.css","webpack:///./src/launchpad/site-map/SiteMap.module.css","webpack:///./src/launchpad/Desktop/Desktop.module.css","webpack:///./src/launchpad/i18n.ts"],"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, `.launchpadLink{width:24px;height:24px;display:flex;justify-content:center;align-items:center}.launchpadLink svg{vertical-align:top;filter:grayscale(100%);opacity:0.6;width:16px;height:16px;cursor:pointer}.launchpadLink:hover svg{color:var(--color-brand-hover)!important;filter:none;opacity: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, `.cellWrapper--celYo8CM{display:flex;align-items:center;position:relative;transform-origin:0 0}.cellWrapper--celYo8CM:hover{background-color:rgba(255,255,255,0.1);border-radius:10px;cursor:pointer}.cellWrapper--celYo8CM:hover .closeIcon--kqBgSmBL{display:block}.cellWrapper--celYo8CM.disabled--SXwx9i_9{color:#d8d8d8;opacity:0.5;cursor:no-drop}.cellWrapper--celYo8CM.disabled--SXwx9i_9 .appLink--xxDzS__h,.cellWrapper--celYo8CM.disabled--SXwx9i_9 .name--gT42Hr47{cursor:no-drop}.cellWrapper--celYo8CM.disabled--SXwx9i_9:hover{background:none;border-radius:0}.cellWrapper--celYo8CM.disabled--SXwx9i_9:hover .closeIcon--kqBgSmBL{display:none}.cellItem--JZfNDEVv{height:144px;padding:10px;min-width:120px;display:flex;justify-content:space-between;align-items:center;flex-direction:column}.appLink--xxDzS__h{display:flex;width:46px;height:46px;color:#fff;justify-content:center;align-items:center;position:relative}.appLink--xxDzS__h.circle--wjMEocD_,.appLink--xxDzS__h.square--lOfLBD3x{background-color:rgba(255,255,255,0.1)}.appLink--xxDzS__h.circle--wjMEocD_{border-radius:40px}.appLink--xxDzS__h.square--lOfLBD3x{border-radius:10px}.appLink--xxDzS__h.installing--drkxXY1n{opacity:0.5}.addIcon--ruhiXc4_{position:absolute;font-size:25px;color:white}.circleIcon--nexpPxUz{right:-6px;bottom:5px}.squareIcon--BkpShWWs{right:-6px;bottom:5px}.appLink--xxDzS__h:hover{color:#fff}.appIcon--w9kHpYGc{width:95%}.appName--CLwLdUBP{display:block;font-size:16px;line-height:1.5;height:24px;text-align:center}.link--bllF9zn6{display:flex;justify-content:center;align-items:center}.name--gT42Hr47{flex:1;padding-left:20px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;color:white}.closeIcon--kqBgSmBL{font-size:12px;position:absolute;top:-5px;right:-3px;color:rgba(255,255,255,0.7);display:none}@media (max-height: 860px), (max-width: 1280px){.cellWrapper--celYo8CM{transform:scale(0.8)}}@media (max-height: 700px), (max-width: 1024px){.cellWrapper--celYo8CM{transform:scale(0.7)}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"cellWrapper\": `cellWrapper--celYo8CM`,\n\t\"closeIcon\": `closeIcon--kqBgSmBL`,\n\t\"disabled\": `disabled--SXwx9i_9`,\n\t\"appLink\": `appLink--xxDzS__h`,\n\t\"name\": `name--gT42Hr47`,\n\t\"cellItem\": `cellItem--JZfNDEVv`,\n\t\"circle\": `circle--wjMEocD_`,\n\t\"square\": `square--lOfLBD3x`,\n\t\"installing\": `installing--drkxXY1n`,\n\t\"addIcon\": `addIcon--ruhiXc4_`,\n\t\"circleIcon\": `circleIcon--nexpPxUz`,\n\t\"squareIcon\": `squareIcon--BkpShWWs`,\n\t\"appIcon\": `appIcon--w9kHpYGc`,\n\t\"appName\": `appName--CLwLdUBP`,\n\t\"link\": `link--bllF9zn6`\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, `.desktopSlider--AScHB1Kd{flex:1;position:relative;padding-top:110px;padding-bottom:50px}.filtered--OQSTba5B .desktopList--nOFGKtg0,.filtered--OQSTba5B .arrowLeft--xkZ60z9A,.filtered--OQSTba5B .arrowRight--SFdZw31z,.filtered--OQSTba5B .desktopSelector--rYqx7sAu{display:none}.scrollContainer--PyCfQg85{width:100%;height:100%;overflow:hidden}.desktopList--nOFGKtg0{display:flex;height:100%}.filteredList--qgFcXHyE{display:flex;height:100%}.arrowLeft--xkZ60z9A,\n.arrowRight--SFdZw31z{position:absolute;top:110px;bottom:50px;justify-content:center;align-items:center;display:none}.available--yspNdU90.arrowLeft--xkZ60z9A,.available--yspNdU90.arrowRight--SFdZw31z{display:flex}.arrowLeft--xkZ60z9A{left:0}.arrowRight--SFdZw31z{right:0}.arrowButton--MHbxtjNQ{width:70px;height:70px;font-size:36px;display:flex;justify-content:center;align-items:center;color:#e6e6e6;background-color:rgba(255,255,255,0.1);border-radius:6px;visibility:hidden}.arrowLeft--xkZ60z9A:hover .arrowButton--MHbxtjNQ,\n.arrowRight--SFdZw31z:hover .arrowButton--MHbxtjNQ{visibility:visible}.desktopSelector--rYqx7sAu{position:absolute;top:0;left:0;right:0;height:110px;padding:36px 0;display:flex;justify-content:center;align-items:center;flex-wrap:wrap}.desktopName--M1GlY6Xe{display:block;color:rgba(255,255,255,0.65);border-radius:6px;font-size:12px;line-height:38px;padding:0 16px}.desktopName--M1GlY6Xe:hover{color:#fff}.desktopName--M1GlY6Xe.active--gh6q8Xsv{color:#fff;background-color:rgba(18,21,26,0.3)}.selectorSeparator--tLrL2o9J{display:block;margin:0 8px;width:1px;height:16px;border-left:1px dashed rgba(255,255,255,0.15)}@media (max-height: 860px), (max-width: 1280px){.arrowButton--MHbxtjNQ{width:60px;height:60px;font-size:30px}.desktopSlider--AScHB1Kd{padding-top:98px}.desktopSelector--rYqx7sAu{padding:30px 0;height:98px}}@media (max-height: 700px), (max-width: 1024px){.arrowButton--MHbxtjNQ{width:50px;height:50px;font-size:25px}.desktopSlider--AScHB1Kd{padding-top:86px}.desktopSelector--rYqx7sAu{padding:24px 0;height:86px}}@media (max-height: 640px), (max-width: 900px){.arrowButton--MHbxtjNQ{width:40px;height:40px;font-size:20px}.desktopSlider--AScHB1Kd{padding-top:74px}.desktopSelector--rYqx7sAu{padding:18px 0;height:74px}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"desktopSlider\": `desktopSlider--AScHB1Kd`,\n\t\"filtered\": `filtered--OQSTba5B`,\n\t\"desktopList\": `desktopList--nOFGKtg0`,\n\t\"arrowLeft\": `arrowLeft--xkZ60z9A`,\n\t\"arrowRight\": `arrowRight--SFdZw31z`,\n\t\"desktopSelector\": `desktopSelector--rYqx7sAu`,\n\t\"scrollContainer\": `scrollContainer--PyCfQg85`,\n\t\"filteredList\": `filteredList--qgFcXHyE`,\n\t\"available\": `available--yspNdU90`,\n\t\"arrowButton\": `arrowButton--MHbxtjNQ`,\n\t\"desktopName\": `desktopName--M1GlY6Xe`,\n\t\"active\": `active--gh6q8Xsv`,\n\t\"selectorSeparator\": `selectorSeparator--tLrL2o9J`\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, `.appLink--XvctrW4d{display:flex;width:80px;height:80px;color:#fff;justify-content:center;align-items:center;position:relative}.appLink--XvctrW4d.circle--ZQ_SHyEN,.appLink--XvctrW4d.square--C8X1afGq{background-color:rgba(255,255,255,0.1)}.appLink--XvctrW4d.small--Mux_F8QK{width:56px;height:56px}@media (max-height: 860px), (max-width: 1280px){.appLink--XvctrW4d.small--Mux_F8QK.appLink--XvctrW4d{transform:scale(0.8)}.appLink--XvctrW4d.small--Mux_F8QK + .appName--wsBI2CZC{font-size:14px;height:21px}}@media (max-height: 700px), (max-width: 1024px){.appLink--XvctrW4d.small--Mux_F8QK.appLink--XvctrW4d{transform:scale(0.7)}.appLink--XvctrW4d.small--Mux_F8QK + .appName--wsBI2CZC{font-size:12px;height:18px}}.appLink--XvctrW4d.circle--ZQ_SHyEN{border-radius:40px}.appLink--XvctrW4d.square--C8X1afGq{border-radius:10px}.addIcon--DHJxfx2l{position:absolute;display:none;font-size:20px;color:white}.circleIcon--NoKu04zb{right:-7px;bottom:5px}.squareIcon--JeHz5VMI{right:-3px;bottom:5px}.appLink--XvctrW4d:hover{color:#fff}.appIcon--K35YGQTl{width:100%}.appName--wsBI2CZC{display:block;font-size:16px;line-height:1.5;height:24px;text-align:center}@media (max-height: 860px), (max-width: 1280px){.appLink--XvctrW4d{transform:scale(0.75)}.appName--wsBI2CZC{font-size:14px;height:21px}}@media (max-height: 700px), (max-width: 1024px){.appLink--XvctrW4d{transform:scale(0.6)}.appName--wsBI2CZC{font-size:12px;height:18px}}@media (max-height: 640px), (max-width: 900px){.appLink--XvctrW4d{transform:scale(0.5)}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"appLink\": `appLink--XvctrW4d`,\n\t\"circle\": `circle--ZQ_SHyEN`,\n\t\"square\": `square--C8X1afGq`,\n\t\"small\": `small--Mux_F8QK`,\n\t\"appName\": `appName--wsBI2CZC`,\n\t\"addIcon\": `addIcon--DHJxfx2l`,\n\t\"circleIcon\": `circleIcon--NoKu04zb`,\n\t\"squareIcon\": `squareIcon--JeHz5VMI`,\n\t\"appIcon\": `appIcon--K35YGQTl`\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, `.dirContainer--yobNkKHJ{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;position:absolute;left:0;top:0;transition:transform 150ms ease-out}.dirName--S6uKBACL{margin-bottom:40px;font-size:24px;line-height:32px;text-align:center}.dirContent--zQ9gweDn{display:grid;background-color:rgba(18,21,26,0.4);border-radius:20px;width:100%}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"dirContainer\": `dirContainer--yobNkKHJ`,\n\t\"dirName\": `dirName--S6uKBACL`,\n\t\"dirContent\": `dirContent--zQ9gweDn`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import * as React from \"react\";\nconst SvgLaunchpad = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} viewBox=\"0 0 16 16\" {...props}><g fill=\"currentColor\" fillRule=\"nonzero\"><path d=\"M0 0h4v4H0zM0 6h4v4H0zM6 0h4v4H6zM6 6h4v4H6zM12 0h4v4h-4zM12 6h4v4h-4zM0 12h4v4H0zM6 12h4v4H6zM12 12h4v4h-4z\" /></g></svg>;\nexport default SvgLaunchpad;","// 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, `.cellWrapper--NydKY8Uu{display:flex;justify-content:center;align-items:center;overflow:hidden}.cellWrapper--NydKY8Uu.positionLeft--VreE62uh{justify-content:flex-start}.cellItem--Se6r55Ne{height:144px;padding:10px;min-width:120px;display:flex;justify-content:space-between;align-items:center;flex-direction:column}.cellItem--Se6r55Ne.small--QJ2gld44{height:110px}.cellItem--Se6r55Ne.active--KANJZK5a{background-color:rgba(0,0,0,0.3);border-radius:6px}@media (max-height: 860px), (max-width: 1280px){.cellItem--Se6r55Ne{height:134px;min-width:100px;justify-content:normal}.cellItem--Se6r55Ne.small--QJ2gld44{height:110px;min-width:76px;justify-content:normal}}@media (max-height: 700px), (max-width: 1024px){.cellItem--Se6r55Ne{height:129px;min-width:80px;justify-content:normal}.cellItem--Se6r55Ne.small--QJ2gld44{height:100px;min-width:60px;justify-content:normal}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"cellWrapper\": `cellWrapper--NydKY8Uu`,\n\t\"positionLeft\": `positionLeft--VreE62uh`,\n\t\"cellItem\": `cellItem--Se6r55Ne`,\n\t\"small\": `small--QJ2gld44`,\n\t\"active\": `active--KANJZK5a`\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, `.dirLink--Ezp7L944{display:grid;grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr);width:80px;height:80px;color:#fff;justify-content:center;align-items:center;background-color:rgba(0,0,0,0.15);border-radius:10px;font-size:21px;padding:7px}.dirLink--Ezp7L944.small--S5JXqzG8{width:56px;height:56px}.dirLink--Ezp7L944 .appIcon--TdWlSNU2,.dirLink--Ezp7L944 .anticon{width:33px;height:33px}.dirLink--Ezp7L944 .anticon{display:flex;justify-content:center;align-items:center;overflow:hidden}.dirLink--Ezp7L944:hover{color:#fff}.dirName--zvy885aK{display:block;font-size:16px;line-height:1.5;height:24px;text-align:center}@media (max-height: 860px), (max-width: 1280px){.dirLink--Ezp7L944{transform:scale(0.75)}.dirName--zvy885aK{font-size:14px;height:21px}}@media (max-height: 700px), (max-width: 1024px){.dirLink--Ezp7L944{transform:scale(0.6)}.dirName--zvy885aK{font-size:12px;height:18px}}@media (max-height: 640px), (max-width: 900px){.dirLink--Ezp7L944{transform:scale(0.5)}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"dirLink\": `dirLink--Ezp7L944`,\n\t\"small\": `small--S5JXqzG8`,\n\t\"appIcon\": `appIcon--TdWlSNU2`,\n\t\"dirName\": `dirName--zvy885aK`\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, `.appLink--lI6ZH8_J{display:flex;width:80px;height:80px;color:#fff;justify-content:center;align-items:center;position:relative}.appLink--lI6ZH8_J.circle--CqDDCO2g,.appLink--lI6ZH8_J.square--KkzxvIhL{background-color:rgba(255,255,255,0.1)}.appLink--lI6ZH8_J.small--oHLIwdUo{width:56px;height:56px}@media (max-height: 860px), (max-width: 1280px){.appLink--lI6ZH8_J.small--oHLIwdUo.appLink--lI6ZH8_J{transform:scale(0.8)}.appLink--lI6ZH8_J.small--oHLIwdUo + .appName--YMtvoP3g{font-size:14px;height:21px}}@media (max-height: 700px), (max-width: 1024px){.appLink--lI6ZH8_J.small--oHLIwdUo.appLink--lI6ZH8_J{transform:scale(0.7)}.appLink--lI6ZH8_J.small--oHLIwdUo + .appName--YMtvoP3g{font-size:12px;height:18px}}.appLink--lI6ZH8_J.circle--CqDDCO2g{border-radius:40px}.appLink--lI6ZH8_J.square--KkzxvIhL{border-radius:10px}.appLink--lI6ZH8_J.installing--wQF5JcJn{opacity:0.5}.appLink--lI6ZH8_J:hover .addIcon--EM1rukmN{display:block}.addIcon--EM1rukmN{position:absolute;font-size:20px;color:white;display:none}.circleIcon--C6tDgTcK{right:-7px;bottom:5px}.squareIcon--Vl9EHU0t{right:-3px;bottom:5px}.appLink--lI6ZH8_J:hover{color:#fff;opacity:0.6}.appIcon--CfrDjC_d{width:100%}.appName--YMtvoP3g{display:block;font-size:16px;line-height:1.5;height:24px;text-align:center}@media (max-height: 860px), (max-width: 1280px){.appLink--lI6ZH8_J{transform:scale(0.75)}.appName--YMtvoP3g{font-size:14px;height:21px}}@media (max-height: 700px), (max-width: 1024px){.appLink--lI6ZH8_J{transform:scale(0.6)}.appName--YMtvoP3g{font-size:12px;height:18px}}@media (max-height: 640px), (max-width: 900px){.appLink--lI6ZH8_J{transform:scale(0.5)}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"appLink\": `appLink--lI6ZH8_J`,\n\t\"circle\": `circle--CqDDCO2g`,\n\t\"square\": `square--KkzxvIhL`,\n\t\"small\": `small--oHLIwdUo`,\n\t\"appName\": `appName--YMtvoP3g`,\n\t\"installing\": `installing--wQF5JcJn`,\n\t\"addIcon\": `addIcon--EM1rukmN`,\n\t\"circleIcon\": `circleIcon--C6tDgTcK`,\n\t\"squareIcon\": `squareIcon--Vl9EHU0t`,\n\t\"appIcon\": `appIcon--CfrDjC_d`\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, `.launchpad--jiWBelji{background:rgba(36,41,51,0.93);position:fixed;top:0;bottom:0;left:0;right:0;z-index:5000;overflow:hidden;overflow-y:auto;color:#fff;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}.launchpadContainer--_vrKLUwW{display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden}.fadeEnter--lOmmReOY{opacity:0;transform:scale(0.95)}.fadeEnterActive--PRkux5Hj{opacity:1;transform:translateX(0);transition:opacity 100ms ease-out,transform 100ms ease-out}.fadeExit--egWs3z_Z{opacity:1}.fadeExitActive--Emt0ZO0f{opacity:0;transform:scale(0.95);transition:opacity 100ms ease-out,transform 100ms ease-out}.fadeExitDone--KS8Y8j_i{display:none}.loadingWrapper--a0uhMogW{display:flex;justify-content:center;align-items:center;height:100%;font-size:58px;color:var(--theme-cyan-color)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"launchpad\": `launchpad--jiWBelji`,\n\t\"launchpadContainer\": `launchpadContainer--_vrKLUwW`,\n\t\"fadeEnter\": `fadeEnter--lOmmReOY`,\n\t\"fadeEnterActive\": `fadeEnterActive--PRkux5Hj`,\n\t\"fadeExit\": `fadeExit--egWs3z_Z`,\n\t\"fadeExitActive\": `fadeExitActive--Emt0ZO0f`,\n\t\"fadeExitDone\": `fadeExitDone--KS8Y8j_i`,\n\t\"loadingWrapper\": `loadingWrapper--a0uhMogW`\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, `.appear--fTt52aoG{opacity:0;transform:scale(1.05)}.appearActive--VTTHohOa{opacity:1;transform:translateX(0);transition:opacity 100ms ease-out,transform 100ms ease-out}.exit--xJVirpkU{opacity:1}.exitActive--JBRp0ETG{opacity:0;transform:scale(1.05);transition:opacity 100ms ease-out,transform 100ms ease-out}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"appear\": `appear--fTt52aoG`,\n\t\"appearActive\": `appearActive--VTTHohOa`,\n\t\"exit\": `exit--xJVirpkU`,\n\t\"exitActive\": `exitActive--JBRp0ETG`\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, `.searchBar--k7ys_9bU{display:flex;justify-content:center;align-items:flex-end;height:10%}.searchBar--k7ys_9bU .inputAffixWrapper--r90ghnJb{position:relative;width:100%;min-width:0;padding:4px 11px;color:var(--antd-input-color);font-size:14px;line-height:1.5715;background-image:none;display:inline-flex;height:42px;border-radius:21px;padding-left:54px;padding-right:4px;border:2px solid rgba(255,255,255,0.1);background-color:rgba(0,0,0,0.06);transition:padding-left 150ms ease-out;box-sizing:border-box}.searchBar--k7ys_9bU .inputAffixWrapper--r90ghnJb:hover{border-color:#0071eb;border-right-width:2px!important}.searchBar--k7ys_9bU .inputAffixWrapper--r90ghnJb .antInputPrefix--vr3ceVIR{width:30px;margin-left:0;margin-right:6px;display:flex;justify-content:center;color:rgba(255,255,255,0.65);flex:none;align-items:center;box-sizing:border-box}.searchBar--k7ys_9bU .inputAffixWrapper--r90ghnJb::before{width:0;visibility:hidden;content:\"\\\\a0\"}.searchBar--k7ys_9bU.focus--rcoZCXD5 .inputAffixWrapper--r90ghnJb,.searchBar--k7ys_9bU .inputAffixWrapperFocused--ym85u9fT{padding-left:4px;border-color:#2893f7;border-right-width:2px!important}.inputContainer--spZyJlDc{width:300px}.input--LvcE67vF{padding:0;border:none;outline:none;color:#fff;background-color:transparent;text-overflow:ellipsis;border-radius:3px}.input--LvcE67vF::placeholder{color:rgba(255,255,255,0.25)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"searchBar\": `searchBar--k7ys_9bU`,\n\t\"inputAffixWrapper\": `inputAffixWrapper--r90ghnJb`,\n\t\"antInputPrefix\": `antInputPrefix--vr3ceVIR`,\n\t\"focus\": `focus--rcoZCXD5`,\n\t\"inputAffixWrapperFocused\": `inputAffixWrapperFocused--ym85u9fT`,\n\t\"inputContainer\": `inputContainer--spZyJlDc`,\n\t\"input\": `input--LvcE67vF`\n};\nexport default ___CSS_LOADER_EXPORT___;\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]!./SearchBar.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]!./SearchBar.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\n\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nexport const WrappedGeneralIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\n \"eo-icon\"\n);\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./SearchBar.module.css\";\nimport { WrappedGeneralIcon } from \"../common/wrapBrick.js\";\nimport { K, NS } from \"../i18n.js\";\nimport { useTranslation } from \"@next-core/i18n/react\";\nexport interface SearchBarProps {\n onChange: (value: string) => void;\n}\n\nexport function SearchBar(props: SearchBarProps): React.ReactElement {\n const { t } = useTranslation(NS);\n const [focus, setFocus] = React.useState(false);\n\n const searchInputRef = React.useCallback((element: HTMLInputElement) => {\n if (element) {\n // Wait for portal mounted first.\n Promise.resolve().then(() => {\n try {\n element.focus();\n } catch (e) {\n // Do nothing.\n }\n });\n }\n }, []);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n props.onChange(e.target.value);\n };\n\n const handleClick = (e: React.MouseEvent): void => {\n e.stopPropagation();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent): void => {\n const key =\n e.key ||\n /* istanbul ignore next: compatibility */ e.keyCode ||\n /* istanbul ignore next: compatibility */ e.which;\n if (\n [\n \"Tab\",\n \"Enter\",\n \"ArrowLeft\",\n \"ArrowUp\",\n \"ArrowRight\",\n \"ArrowDown\",\n 9,\n 13,\n 37,\n 38,\n 39,\n 40,\n ].includes(key)\n ) {\n e.preventDefault();\n }\n };\n\n const handleFocus = (): void => {\n setFocus(true);\n };\n\n const handleBlur = (): void => {\n setFocus(false);\n };\n\n return (\n <div\n className={classNames(styles.searchBar, {\n [styles.focus]: focus,\n })}\n >\n <div\n className={styles.inputContainer}\n role=\"inputContainer\"\n onClick={handleClick}\n >\n <span\n className={classNames(styles.inputAffixWrapper, {\n [styles.inputAffixWrapperFocused]: focus,\n })}\n >\n <span className={styles.antInputPrefix}>\n <WrappedGeneralIcon icon=\"search\" lib=\"antd\" theme=\"outlined\" />\n </span>\n <input\n role=\"input\"\n className={styles.input}\n placeholder={t(K.SEARCH_BY_NAME_KEYWORD) as string}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n ref={searchInputRef}\n />\n </span>\n </div>\n </div>\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[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./DesktopCell.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]!./DesktopCell.module.css\";\n export default content && content.locals ? content.locals : undefined;\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]!./DesktopApp.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]!./DesktopApp.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { MicroApp } from \"@next-core/types\";\n\nexport function getImageUrl(app: MicroApp, defaultAppIcon: string): string {\n return app.icons && app.icons.large\n ? /^(?:https?|data):|^\\//.test(app.icons.large)\n ? app.icons.large\n : `${\n window.STANDALONE_MICRO_APPS\n ? // 如果是独立打包模式\n app.standaloneMode\n ? // 如果是独立打包模式下的standalone app, 则使用 PUBLIC_ROOT 再去掉末尾的 '-/'\n // 例如: sa-static/my-app/versions/1.1.1/webroot/-/micro-apps/my-app/large.png (没设置cdn)\n // 例如: https://cdn-air.uwintech.cn/next/sa-static/my-app/versions/1.1.1/webroot/-/micro-apps/my-app/large.png (设置了cdn)\n `${window.PUBLIC_ROOT?.replace(/-\\/$/, \"\")}${app.id}/versions/${\n app.currentVersion\n }/webroot/-/micro-apps/${app.id}/${app.icons.large}`\n : // 如果是独立打包模式下的普通app,则使用PUBLIC_CDN + 默认前缀micro-apps\n `${window.PUBLIC_CDN || \"\"}micro-apps/${app.id}/${\n app.icons.large\n }`\n : // 非独立打包应用使用旧模式进行设置\n `${window.PUBLIC_ROOT || \"\"}micro-apps/${app.id}/${\n app.icons.large\n }`\n }`\n : defaultAppIcon;\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { MicroApp } from \"@next-core/types\";\nimport styles from \"./DesktopApp.module.css\";\nimport defaultAppIcon from \"../../images/default-app-icon.png\";\nimport { getImageUrl } from \"../utils/getImageUrl.js\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedGeneralIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\ninterface DesktopAppProps {\n app: MicroApp;\n isFavorite?: boolean;\n showAddIcon?: boolean;\n onAddClick?: () => void;\n onClick?: () => void;\n size?: string;\n}\n\nexport function DesktopApp({\n app,\n onAddClick,\n onClick,\n isFavorite,\n showAddIcon,\n size,\n}: DesktopAppProps): React.ReactElement {\n const installing = app.installStatus === \"running\";\n\n const handleAppClick = (e: React.MouseEvent): void => {\n e.stopPropagation();\n if (installing) {\n e.preventDefault();\n }\n onClick?.();\n };\n\n const handleAddIconClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n onAddClick?.();\n };\n\n return (\n <>\n <WrappedLink\n className={classNames(\n styles.appLink,\n styles[size as string],\n app.iconBackground === \"circle\" ? styles.circle : styles.square,\n {\n [styles.installing]: installing,\n }\n )}\n url={app.homepage}\n onClick={handleAppClick}\n >\n <img\n className={styles.appIcon}\n src={getImageUrl(app, defaultAppIcon)}\n />\n\n {showAddIcon && isFavorite && (\n <WrappedGeneralIcon\n className={classNames(\n styles.addIcon,\n app.iconBackground === \"circle\"\n ? styles.circleIcon\n : styles.squareIcon\n )}\n icon=\"plus\"\n lib=\"antd\"\n theme=\"outlined\"\n onClick={handleAddIconClick}\n />\n )}\n </WrappedLink>\n <span className={styles.appName}>\n {installing && (\n <WrappedGeneralIcon\n style={{ paddingRight: 5 }}\n icon=\"loading-3-quarters\"\n lib=\"antd\"\n theme=\"outlined\"\n />\n )}\n {app.localeName}\n </span>\n </>\n );\n}\n","import React from \"react\";\nimport { NormalizedDesktopDir } from \"./interfaces.js\";\n\nexport interface DirWithCoordinates {\n dir: NormalizedDesktopDir;\n coordinates: {\n x: number;\n y: number;\n };\n activeIndex: number;\n}\n\nexport interface ContextOfDesktopDir {\n desktopDir?: DirWithCoordinates;\n setDesktopDir?: React.Dispatch<DirWithCoordinates | undefined>;\n}\n\nexport const DesktopDirContext = React.createContext<ContextOfDesktopDir>({});\n\nexport const useDesktopDirContext = (): ContextOfDesktopDir =>\n React.useContext(DesktopDirContext);\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]!./DesktopDir.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]!./DesktopDir.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { useDesktopDirContext } from \"../DesktopDirContext.js\";\nimport styles from \"./DesktopDir.module.css\";\nimport defaultAppIcon from \"../../images/default-app-icon.png\";\nimport { NormalizedDesktopDir } from \"../interfaces.js\";\nimport { getImageUrl } from \"../utils/getImageUrl.js\";\nimport { MicroApp } from \"@next-core/types\";\n\nexport function DesktopDir(props: NormalizedDesktopDir): React.ReactElement {\n const { setDesktopDir } = useDesktopDirContext();\n const handleDirClick = (e: React.MouseEvent): void => {\n e.stopPropagation();\n // 记录鼠标点击的位置,在文件夹展开时以此为原点做动画。\n setDesktopDir?.({\n dir: {\n name: props.name,\n items: props.items,\n },\n coordinates: {\n x: e.clientX,\n y: e.clientY,\n },\n activeIndex: -1,\n });\n };\n\n return (\n <>\n <a\n className={classNames(styles.dirLink, {\n [styles[props.size as string]]: !!props.size,\n })}\n onClick={handleDirClick}\n role=\"button\"\n >\n {props.items\n .slice(0, 4)\n .map((item) =>\n item.type === \"app\" ? (\n <img\n className={styles.appIcon}\n key={item.id}\n src={getImageUrl(item.app as MicroApp, defaultAppIcon)}\n />\n ) : (\n <img\n className={styles.appIcon}\n key={item.id}\n src={defaultAppIcon}\n />\n )\n )}\n </a>\n <span className={styles.dirName}>{props.name}</span>\n </>\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[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./DesktopCustom.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]!./DesktopCustom.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./DesktopCustom.module.css\";\nimport defaultAppIcon from \"../../images/default-app-icon.png\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedGeneralIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\ninterface DesktopCustomProps {\n name: string;\n url: string;\n isFavorite?: boolean;\n showAddIcon?: boolean;\n onAddClick: () => void;\n onClick?: () => void;\n size?: string;\n responsive?: boolean;\n}\n\nexport function DesktopCustom({\n name,\n url,\n showAddIcon,\n isFavorite,\n onClick,\n onAddClick,\n size,\n responsive = true,\n}: DesktopCustomProps): React.ReactElement {\n const handleItemClick = (e: React.MouseEvent): void => {\n e.stopPropagation();\n onClick?.();\n };\n\n const handleAddIconClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n onAddClick?.();\n };\n return (\n <>\n <WrappedLink\n className={classNames(\n styles.appLink,\n styles.circle,\n styles[size as string],\n {\n [styles.responsive]: responsive,\n }\n )}\n href={url}\n target=\"_blank\"\n onClick={handleItemClick}\n >\n <img className={styles.appIcon} src={defaultAppIcon} />\n {showAddIcon && isFavorite && (\n <WrappedGeneralIcon\n className={classNames(styles.addIcon, styles.circleIcon)}\n icon=\"plus-circle-filled\"\n lib=\"antd\"\n theme=\"outlined\"\n onClick={handleAddIconClick}\n />\n )}\n </WrappedLink>\n <span className={styles.appName}>{name}</span>\n </>\n );\n}\n","import { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { MicroApp, Storyboard } from \"@next-core/types\";\nimport {\n LaunchpadApi_ListCollectionResponseItem,\n LaunchpadApi_listCollection,\n LaunchpadApi_CreateCollectionRequestBody,\n LaunchpadApi_createCollection,\n LaunchpadApi_deleteCollection,\n} from \"@next-api-sdk/user-service-sdk\";\nimport { LaunchpadApi_getLaunchpadInfo } from \"@next-api-sdk/micro-app-standalone-sdk\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { pick } from \"lodash\";\nimport { i18n } from \"@next-core/i18n\";\nimport { LaunchpadSettings } from \"./LaunchpadSettingsContext.js\";\nimport {\n DesktopData,\n DesktopItemApp,\n DesktopItemCustom,\n SiteMapItem,\n} from \"./interfaces.js\";\nimport { DeferredService } from \"../shared/DeferredService.js\";\n\ninterface LaunchpadBaseInfo {\n settings: LaunchpadSettings;\n microApps: MicroApp[];\n desktops: DesktopData[];\n siteSort: SiteMapItem[];\n}\n\nexport class LaunchpadService {\n readonly storageKey = `launchpad-recently-visited:${(\n auth.getAuth() as Record<string, string>\n )?.org}`;\n private storage: JsonStorage;\n private favoriteList: LaunchpadApi_ListCollectionResponseItem[] = [];\n private filteredFavoriteList: LaunchpadApi_ListCollectionResponseItem[] = [];\n private microApps: MicroApp[] = [];\n private customList: DesktopItemCustom[] = [];\n private maxVisitorLength = 7;\n private baseInfo: LaunchpadBaseInfo = {\n settings: {\n columns: 7,\n rows: 4,\n },\n microApps: [],\n desktops: [],\n siteSort: [],\n };\n public loaded = false;\n public favoritesLoaded = false;\n\n private readonly deferredLaunchpadInfo: DeferredService;\n private readonly deferredFavorites: DeferredService;\n\n constructor() {\n this.storage = new JsonStorage(localStorage);\n this.deferredLaunchpadInfo = new DeferredService(this.doFetchLaunchpadInfo);\n this.deferredFavorites = new DeferredService(this.doFetchFavorites);\n\n this.init();\n }\n\n init(): void {\n const runtime = getRuntime();\n this.baseInfo = {\n desktops: runtime.getDesktops() as DesktopData[],\n microApps: [runtime.getCurrentApp() as MicroApp],\n settings: runtime.getLaunchpadSettings(),\n siteSort: runtime.getLaunchpadSiteMap() as SiteMapItem[],\n };\n\n this.initValue();\n }\n\n private initValue(): void {\n this.customList = this.baseInfo.desktops\n .map((desktop) => desktop.items.filter((i) => i.type === \"custom\"))\n .flat() as DesktopItemCustom[];\n\n const microApps = this.baseInfo.microApps\n // 兼容较老版本接口未返回 `status` 的情况。\n .filter(\n (item) =>\n item &&\n (!item.status ||\n item.status === \"enabled\" ||\n item.status === \"developing\")\n );\n\n this.setMicroApps(microApps);\n }\n\n setMaxVisitorLength(value: number) {\n this.maxVisitorLength = value;\n }\n\n preFetchFavorites(): void {\n this.deferredFavorites.schedulePrefetch();\n }\n\n async fetchFavoriteList(\n eager?: boolean\n ): Promise<LaunchpadApi_ListCollectionResponseItem[]> {\n await this.deferredFavorites.fetch(eager);\n return this.favoriteList;\n }\n\n private doFetchFavorites = async (): Promise<void> => {\n const result = (\n await LaunchpadApi_listCollection(\n { page: 1, pageSize: 25 },\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n )\n ).list;\n this.setFavorites(result);\n this.favoritesLoaded = true;\n };\n\n preFetchLaunchpadInfo(): void {\n if (window.STANDALONE_MICRO_APPS) {\n this.deferredLaunchpadInfo.schedulePrefetch();\n }\n }\n\n fetchLaunchpadInfo(): Promise<unknown> {\n return this.deferredLaunchpadInfo.fetch();\n }\n\n private doFetchLaunchpadInfo = async (): Promise<void> => {\n const launchpadInfo = await LaunchpadApi_getLaunchpadInfo(\n {},\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n );\n\n for (const storyboard of launchpadInfo.storyboards as Storyboard[]) {\n const app = storyboard.app as unknown as MicroApp;\n if (app) {\n if (app.locales) {\n // Prefix to avoid conflict between brick package's i18n namespace.\n const ns = `$tmp-${app.id}`;\n // Support any languages in `app.locales`.\n Object.entries(app.locales).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, ns, resources);\n });\n // Use `app.name` as the fallback `app.localeName`.\n app.localeName = i18n.getFixedT(null, ns)(\"name\", app.name) as string;\n // Remove the temporary i18n resource bundles.\n Object.keys(app.locales).forEach((lang) => {\n i18n.removeResourceBundle(lang, ns);\n });\n } else {\n app.localeName = app.name;\n }\n }\n }\n\n this.baseInfo = {\n ...launchpadInfo,\n settings: (launchpadInfo.settings as Record<string, unknown>)\n .launchpad as LaunchpadSettings,\n microApps: (launchpadInfo.storyboards as Storyboard[])\n .map((storyboard) => storyboard.app)\n .filter(Boolean) as unknown as MicroApp[],\n } as unknown as LaunchpadBaseInfo;\n this.initValue();\n this.loaded = true;\n };\n\n getBaseInfo(): LaunchpadBaseInfo {\n return this.baseInfo;\n }\n\n getFavoritesLength(): number {\n return this.favoriteList.length;\n }\n\n typeAdaptor(type: string): string {\n if (type === \"customItem\") {\n return \"custom\";\n }\n\n if (type === \"microApp\") {\n return \"app\";\n }\n\n return type;\n }\n\n setFavorites(list: LaunchpadApi_ListCollectionResponseItem[]): void {\n this.filteredFavoriteList =\n list?.filter(\n (v) =>\n v.launchpadCollection?.type === \"microApp\" ||\n (v.launchpadCollection as any).type === \"customItem\"\n ) ?? [];\n\n this.favoriteList = list;\n }\n\n setMicroApps(microApps: MicroApp[]) {\n this.microApps = microApps;\n this.syncValidRecentlyVisitor();\n }\n\n syncValidRecentlyVisitor() {\n if (window.STANDALONE_MICRO_APPS) {\n // standalone模式时,刷新页面不会请求launchpad数据,拿不全microApps和customList,所以 syncValidRecentlyVisitor 直接返回\n return;\n }\n const visitors = this.getAllVisitors();\n const result = visitors.filter((v) => {\n if (v.type === \"app\") {\n return this.microApps.some((app) => app.id === v.id);\n } else {\n return this.customList.some((f) => f.type === v.type && f.id === v.id);\n }\n });\n\n this.setAllVisitors(result);\n }\n\n async setAsFavorite(params: LaunchpadApi_CreateCollectionRequestBody) {\n await LaunchpadApi_createCollection(params, {\n interceptorParams: { ignoreLoadingBar: true },\n });\n }\n\n async deleteFavorite(id: string | number) {\n await LaunchpadApi_deleteCollection(id, {\n interceptorParams: { ignoreLoadingBar: true },\n });\n }\n\n isFavorite(item: DesktopItemApp | DesktopItemCustom) {\n if (item.type === \"app\") {\n return this.filteredFavoriteList.some(\n (f) =>\n this.typeAdaptor((f.launchpadCollection as any).type) === \"app\" &&\n f.microAppId === item.id\n );\n }\n\n return this.filteredFavoriteList.some(\n (f) =>\n this.typeAdaptor((f.launchpadCollection as any).type) === \"custom\" &&\n (f as any).customItemId === item.id\n );\n }\n\n getItem(\n type: \"app\" | \"custom\",\n id: string\n ): DesktopItemApp | DesktopItemCustom {\n return (this.storage.getItem(this.storageKey) || []).find(\n (v: DesktopItemApp | DesktopItemCustom) => v.id === id && v.type === type\n );\n }\n\n getItemIndex(type: \"app\" | \"custom\", id: string): number {\n return (this.storage.getItem(this.storageKey) || []).findIndex(\n (v: DesktopItemApp | DesktopItemCustom) => v.id === id && v.type === type\n );\n }\n\n hasItem(type: \"app\" | \"custom\", id: string): boolean {\n return (this.storage.getItem(this.storageKey) || []).some(\n (v: DesktopItemApp | DesktopItemCustom) => v.id === id && v.type === type\n );\n }\n\n getAllVisitors(): (DesktopItemApp | DesktopItemCustom)[] {\n return this.storage.getItem(this.storageKey) || [];\n }\n\n setItem(\n type: \"app\" | \"custom\",\n item: DesktopItemApp | DesktopItemCustom\n ): void {\n const visitors = this.getAllVisitors();\n\n if (!this.hasItem(type, item.id)) {\n visitors.unshift(item);\n } else {\n const index = this.getItemIndex(type, item.id);\n visitors.splice(index, 1);\n visitors.unshift(item);\n }\n\n // 默认只保存一行\n if (visitors.length > this.maxVisitorLength) {\n visitors.pop();\n }\n this.setAllVisitors(visitors);\n }\n\n setAllVisitors(visitors: (DesktopItemApp | DesktopItemCustom)[]) {\n this.storage.setItem(this.storageKey, visitors);\n }\n\n pushVisitor(\n type: \"app\" | \"custom\",\n item: MicroApp | DesktopItemCustom\n ): void {\n if (type === \"app\") {\n const app = item as MicroApp;\n item = {\n id: app.id,\n app: {\n name: app.name,\n icons: app.icons,\n localeName: app.localeName,\n id: app.id,\n homepage: app.homepage,\n currentVersion: app.currentVersion,\n standaloneMode: (app as MicroApp & { standaloneMode: boolean })\n .standaloneMode,\n } as MicroApp,\n type: \"app\",\n } as any;\n }\n\n this.setItem(type, item as DesktopItemApp | DesktopItemCustom);\n }\n\n getVisitor(\n type: \"app\" | \"custom\",\n id: string\n ): DesktopItemApp | DesktopItemCustom | undefined {\n return this.getItem(type, id);\n }\n\n getRealDesktopItem(\n item: LaunchpadApi_ListCollectionResponseItem\n ): MicroApp | DesktopItemCustom {\n if (item.launchpadCollection?.type === \"microApp\") {\n return this.microApps.find(\n (app) => app.id === item.microAppId\n ) as MicroApp;\n } else {\n return this.customList.find(\n (custom) => custom.id === (item as any).customItemId\n ) as DesktopItemCustom;\n }\n }\n\n setFavoriteAsVisitor(item: LaunchpadApi_ListCollectionResponseItem) {\n const type = this.typeAdaptor(item.launchpadCollection?.type as string);\n if (type === \"link\") return;\n const data = this.getRealDesktopItem(item);\n if (data) {\n this.pushVisitor(type as \"custom\" | \"app\", data);\n }\n }\n\n getSitemapList() {\n const curMicroApps = this.baseInfo.microApps.filter((app) => !app.internal);\n const siteMapList = this.baseInfo.siteSort;\n\n return siteMapList?.map((item) => ({\n ...item,\n apps: (item.apps || []).map((row) => {\n const find = curMicroApps.find((item) => item.id === row.id) || {};\n return {\n ...row,\n ...pick(find, [\n \"name\",\n \"icons\",\n \"localeName\",\n \"homepage\",\n \"currentVersion\",\n \"standaloneMode\",\n ]),\n };\n }),\n }));\n }\n}\n\nconst service = new LaunchpadService();\nexport const launchpadService = service;\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./DesktopCell.module.css\";\nimport { DesktopApp } from \"../DesktopApp/DesktopApp.js\";\nimport { DesktopDir } from \"../DesktopDir/DesktopDir.js\";\nimport { DesktopCustom } from \"../DesktopCustom/DesktopCustom.js\";\nimport { launchpadService } from \"../LaunchpadService.js\";\nimport { Dialog } from \"@next-core/runtime\";\nimport {\n DesktopItem,\n DesktopItemApp,\n DesktopItemCustom,\n} from \"../interfaces.js\";\nimport { MicroApp } from \"@next-core/types\";\n\ninterface DesktopCellProps {\n item: DesktopItem;\n active?: boolean;\n showAddIcon?: boolean;\n position?: \"left\" | \"center\" | \"right\";\n onSetAsFavorite?: () => void;\n isFavorite?: boolean;\n size?: string;\n}\n\nexport function DesktopCell(props: DesktopCellProps): React.ReactElement {\n const checkFavoriteUpperLimit = () => {\n const favoriteLength = launchpadService.getFavoritesLength();\n if (favoriteLength >= 25) {\n Dialog.show({\n title: \"收藏数量已达上限\",\n content: \"当前收藏链接数量已达上限(25个),请删除部分链接后再添加。\",\n contentStyle: {\n zIndex: 5001,\n },\n });\n\n return false;\n }\n return true;\n };\n\n const addItemToFavorite = async () => {\n if (checkFavoriteUpperLimit()) {\n let params: any;\n if (props.item.type === \"app\") {\n const app = props.item as Partial<DesktopItemApp>;\n params = {\n microAppId: app.id,\n launchpadCollection: {\n type: \"microApp\",\n name: (app.app as MicroApp).name,\n },\n };\n } else {\n const custom = props.item as DesktopItemCustom;\n params = {\n customItemId: custom.id,\n launchpadCollection: {\n type: \"customItem\",\n name: custom.name,\n },\n };\n }\n try {\n await launchpadService.setAsFavorite(params);\n props?.onSetAsFavorite?.();\n } catch (e) {\n // Noting to cache\n }\n }\n };\n\n const handleAppClick = () => {\n const app = (props.item as DesktopItemApp).app;\n launchpadService.pushVisitor(\"app\", app as MicroApp);\n };\n\n const handleCustomClick = () => {\n const custom = props.item as DesktopItemCustom;\n launchpadService.pushVisitor(\"custom\", custom);\n };\n\n return (\n <div\n className={classNames(styles.cellWrapper, {\n [styles.positionLeft]: props?.position === \"left\",\n })}\n >\n <div\n className={classNames(styles.cellItem, styles[props.size as string], {\n [styles.active]: props.active,\n })}\n >\n {props.item.type === \"app\" ? (\n <DesktopApp\n showAddIcon={props.showAddIcon}\n isFavorite={props.isFavorite}\n app={props.item.app as MicroApp}\n onClick={handleAppClick}\n onAddClick={addItemToFavorite}\n size={props.size}\n />\n ) : props.item.type === \"custom\" ? (\n <DesktopCustom\n showAddIcon={props.showAddIcon}\n isFavorite={props.isFavorite}\n name={props.item.name}\n url={props.item.url}\n onClick={handleCustomClick}\n onAddClick={addItemToFavorite}\n size={props.size}\n />\n ) : (\n <DesktopDir\n name={props.item.name}\n items={props.item.items}\n size={props.size}\n />\n )}\n </div>\n </div>\n );\n}\n","import React from \"react\";\n\nexport interface LaunchpadSettings {\n columns: number;\n rows: number;\n}\n\nexport const LaunchpadSettingsContext = React.createContext<LaunchpadSettings>({\n columns: 7,\n rows: 4,\n});\n\nexport const useLaunchpadSettingsContext = (): LaunchpadSettings =>\n React.useContext(LaunchpadSettingsContext);\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]!./Desktop.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]!./Desktop.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { DesktopCell } from \"../DesktopCell/DesktopCell.js\";\nimport { useLaunchpadSettingsContext } from \"../LaunchpadSettingsContext.js\";\nimport styles from \"./Desktop.module.css\";\nimport { DesktopData } from \"../interfaces.js\";\n\ninterface DesktopProps {\n desktop: DesktopData;\n desktopCount: number;\n arrowWidthPercent: number;\n activeIndex: number;\n}\n\nexport function Desktop(props: DesktopProps): React.ReactElement {\n const { columns, rows } = useLaunchpadSettingsContext();\n\n return (\n <div\n className={styles.desktop}\n style={{\n padding: `0 ${props.arrowWidthPercent / props.desktopCount}%`,\n gridTemplateColumns: `repeat(${columns},1fr)`,\n gridTemplateRows: `repeat(${rows},1fr)`,\n }}\n >\n {props.desktop.items.map((item, index) => (\n <DesktopCell\n key={index}\n item={item}\n active={index === props.activeIndex}\n />\n ))}\n </div>\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[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./DesktopSlider.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]!./DesktopSlider.module.css\";\n export default content && content.locals ? content.locals : undefined;\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]!./MyDesktop.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]!./MyDesktop.module.css\";\n export default content && content.locals ? content.locals : undefined;\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]!./FavoriteDesktopCell.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]!./FavoriteDesktopCell.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport styles from \"./FavoriteDesktopCell.module.css\";\nimport { LaunchpadApi_ListCollectionResponseItem } from \"@next-api-sdk/user-service-sdk\";\nimport { launchpadService } from \"../LaunchpadService.js\";\nimport { WrappedGeneralIcon, WrappedLink } from \"../common/wrapBrick.js\";\nimport { omit } from \"lodash\";\nimport type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\n\ninterface FavoriteDesktopCellProps {\n item: LaunchpadApi_ListCollectionResponseItem;\n onDelete?: (item: LaunchpadApi_ListCollectionResponseItem) => void;\n}\n\nexport function FavoriteDesktopCell({\n item,\n}: FavoriteDesktopCellProps): React.ReactElement {\n const disabled = useMemo(\n () =>\n item.launchpadCollection?.type === \"microApp\"\n ? !item.microAppId\n : (item.launchpadCollection as any)?.type === \"customItem\"\n ? !(item as any)?.customItemId\n : false,\n [item]\n );\n\n const setAsVisitor = () => {\n if (item.launchpadCollection?.type === \"link\") return;\n launchpadService.setFavoriteAsVisitor(item);\n };\n const handleCellClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n setAsVisitor();\n\n if (\n (item.launchpadCollection?.link?.startsWith(\"https://\") ||\n item.launchpadCollection?.link?.startsWith(\"http://\")) &&\n !item.launchpadCollection?.link?.startsWith(document.baseURI)\n ) {\n e.preventDefault();\n window.open(item.launchpadCollection.link, \"_blank\");\n }\n };\n\n const realLink = useMemo(() => {\n const link = item.launchpadCollection?.link;\n if (item.launchpadCollection?.type === \"microApp\") return link;\n const baseUrl = document.baseURI;\n if (link?.startsWith(baseUrl)) return link?.replace(baseUrl, \"/\");\n return item.launchpadCollection?.link;\n }, [item]);\n\n return (\n <div>\n <div\n className={classNames(styles.cellWrapper, {\n [styles.disabled]: disabled,\n })}\n >\n <WrappedLink\n className={styles.link}\n url={realLink}\n onClick={handleCellClick}\n >\n <>\n <span className={classNames(styles.appLink, styles.square)}>\n <WrappedGeneralIcon\n {...((omit(item?.launchpadCollection?.icon, [\n \"prefix\",\n \"type\",\n ]) ?? {}) as GeneralIconProps)}\n style={{ fontSize: 18 }}\n />\n </span>\n <span className={styles.name}>\n {item?.launchpadCollection?.name}\n </span>\n </>\n </WrappedLink>\n </div>\n </div>\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[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./SiteMap.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]!./SiteMap.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { forwardRef, useEffect } from \"react\";\nimport styles from \"./SiteMap.module.css\";\nimport { MicroApp } from \"@next-core/types\";\nimport { launchpadService } from \"../LaunchpadService.js\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\ninterface SiteCategory {\n name: string;\n id: string;\n order: string;\n apps: {\n id?: string;\n sort?: string;\n name?: string;\n homepage?: string;\n }[];\n}\nexport interface SiteMapProps {\n categoryList: SiteCategory[];\n containerStyle?: React.CSSProperties;\n onLoad?: () => void;\n}\n\nexport function LeacySiteMap(\n props: SiteMapProps,\n ref: any\n): React.ReactElement {\n const handleWheel = (e: React.WheelEvent) => {\n e.stopPropagation();\n };\n\n useEffect(() => {\n props.onLoad?.();\n }, []);\n\n const handleClick = (app: MicroApp): void => {\n launchpadService.pushVisitor(\"app\", app);\n };\n\n return (\n <div\n className={styles.scrollContainer}\n style={props.containerStyle}\n ref={ref}\n onWheel={handleWheel}\n >\n <div className={styles.siteMapContainer}>\n {props.categoryList?.map((item) => (\n <div className={styles.groupWrapper} key={item.name}>\n <div>{item.name}</div>\n <ul className={styles.group}>\n {item.apps?.map((row, index) => (\n <li className={styles.item} key={index}>\n <WrappedLink\n type=\"plain\"\n url={row.homepage}\n onClick={() => handleClick(row as MicroApp)}\n >\n {row.name}\n </WrappedLink>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nexport const SiteMap = forwardRef(LeacySiteMap);\n","import React, { createRef, useEffect, useMemo, useRef, useState } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport type { LaunchpadApi_ListCollectionResponseItem } from \"@next-api-sdk/user-service-sdk\";\nimport classNames from \"classnames\";\nimport { isEmpty } from \"lodash\";\nimport { DesktopCell } from \"../DesktopCell/DesktopCell.js\";\nimport styles from \"./MyDesktop.module.css\";\nimport { FavoriteDesktopCell } from \"../FavoriteDesktopCell/FavoriteDesktopCell.js\";\nimport { launchpadService } from \"../LaunchpadService.js\";\nimport { SiteMap } from \"../site-map/SiteMap.js\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedGeneralIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\ninterface MyDesktopProps {\n desktopCount: number;\n arrowWidthPercent: number;\n}\n\nenum ModeType {\n Favorities = \"favorities\",\n Sitemap = \"sitemap\",\n}\n\nlet remberMode = ModeType.Sitemap;\n\nexport function MyDesktop(props: MyDesktopProps, ref: any): React.ReactElement {\n const [recentlyVisitedList] = useState(launchpadService.getAllVisitors());\n const [favoriteList, setFavoriteList] = useState<\n LaunchpadApi_ListCollectionResponseItem[]\n >([]);\n const [isLoading, setIsLoading] = useState(!launchpadService.favoritesLoaded);\n // const [firstRendered, setFirstRendered] = useState(true);\n const [mode, setMode] = useState<ModeType>(remberMode);\n const siteMapRef = createRef<HTMLDivElement>();\n const deskContainerRef = useRef<HTMLDivElement>(null);\n const [siteMapHeight, setSiteMapHeight] = useState<number>();\n\n const getFavoriteList = async (eager?: boolean): Promise<void> => {\n const favoriteList = await launchpadService.fetchFavoriteList(eager);\n setIsLoading(false);\n setFavoriteList(favoriteList);\n };\n\n const handleMode = (e: React.MouseEvent, mode: ModeType): void => {\n e.stopPropagation();\n remberMode = mode;\n setMode(mode);\n };\n useEffect(() => {\n (async () => {\n getFavoriteList();\n })();\n }, []);\n\n const handleOnSetAsFavorite = (): void => {\n getFavoriteList(true);\n };\n\n const handleSiteMapLoad = () => {\n const siteMap = siteMapRef.current;\n const deskContainer = deskContainerRef.current;\n if (siteMap && deskContainer) {\n // wait for launchpad open\n Promise.resolve().then(() => {\n const siteMapDom = siteMap.getBoundingClientRect();\n const deskContainerDom = deskContainer.getBoundingClientRect();\n const siteMapHeight = deskContainerDom.bottom - siteMapDom.top;\n\n setSiteMapHeight(siteMapHeight);\n });\n }\n };\n\n const renderRecentlyVisited = useMemo(() => {\n return (\n <div className={styles.visited}>\n <div className={styles.title}>最近访问</div>\n <div className={styles.desktop}>\n {recentlyVisitedList?.map((item, index) => (\n <DesktopCell\n size=\"small\"\n key={index}\n item={item}\n showAddIcon={true}\n isFavorite={!launchpadService.isFavorite(item)}\n onSetAsFavorite={handleOnSetAsFavorite}\n />\n ))}\n </div>\n </div>\n );\n }, [recentlyVisitedList, isLoading]);\n\n const renderMyFavorites = useMemo(() => {\n return (\n <div className={classNames([styles.section, styles.favorites])}>\n {isLoading && (\n <div className={styles.spin}>\n <WrappedGeneralIcon\n lib=\"antd\"\n icon=\"loading\"\n theme=\"outlined\"\n style={{ fontSize: \"2.5rem\" }}\n spinning\n />\n </div>\n )}\n {!isEmpty(favoriteList) ? (\n <div className={styles.favoriteContainer}>\n {favoriteList?.map((item, index) => (\n <FavoriteDesktopCell key={index} item={item} />\n ))}\n </div>\n ) : (\n !isLoading && (\n <div className={styles.emptyTips}>\n 把常用的页面链接加入收藏夹,方便快速访问 ~{\" \"}\n <WrappedLink\n url=\"/launchpad-collection\"\n style={{ marginLeft: 30 }}\n >\n 管理我的收藏\n </WrappedLink>\n </div>\n )\n )}\n </div>\n );\n }, [favoriteList, isLoading]);\n\n const renderSiteMap = useMemo(() => {\n const categoryList = launchpadService\n .getSitemapList()\n ?.filter((item) => item.apps?.length > 0);\n\n return (\n <SiteMap\n ref={siteMapRef}\n categoryList={categoryList}\n containerStyle={{\n height: siteMapHeight,\n overflow: \"auto\",\n }}\n onLoad={handleSiteMapLoad}\n />\n );\n }, [siteMapHeight]);\n\n return (\n <div\n ref={deskContainerRef}\n style={{\n flex: 1,\n padding: `0 ${\n props.desktopCount ? props.arrowWidthPercent / props.desktopCount : 10\n }%`,\n }}\n >\n {!!recentlyVisitedList?.length && renderRecentlyVisited}\n <div className={styles.modeWrapper}>\n <div className={styles.header}>\n {mode === ModeType.Favorities ? (\n <div className={styles.title}>\n {\" \"}\n 我的收藏\n <WrappedGeneralIcon\n className={styles.modeIcon}\n icon=\"launchpad-sitmap\"\n lib=\"easyops\"\n category=\"app\"\n onClick={(e) => handleMode(e, ModeType.Sitemap)}\n />\n </div>\n ) : (\n <div className={styles.title}>\n 系统地图\n <WrappedGeneralIcon\n className={styles.modeIcon}\n icon=\"launchpad-collection\"\n lib=\"easyops\"\n category=\"app\"\n onClick={(e) => handleMode(e, ModeType.Favorities)}\n />\n </div>\n )}\n {mode === ModeType.Favorities && (\n <div className={styles.settingsContainer}>\n <WrappedLink url={\"/launchpad-collection\"}>\n <WrappedGeneralIcon\n className={styles.settings}\n icon=\"launchpad-setting\"\n lib=\"easyops\"\n category=\"app\"\n />\n 管理收藏\n </WrappedLink>\n </div>\n )}\n </div>\n\n {mode === ModeType.Favorities ? renderMyFavorites : renderSiteMap}\n </div>\n </div>\n );\n}\n","// See https://github.com/facebook/jest/issues/11471\n// Open launchpad with the previous visited desktop.\nlet rememberedDesktopCursor = 0;\n\nexport function getRememberedDesktopCursor(): number {\n return rememberedDesktopCursor;\n}\n\nexport function setRememberedDesktopCursor(newValue: number): void {\n rememberedDesktopCursor = newValue;\n}\n","import React, { useEffect } from \"react\";\nimport { chunk } from \"lodash\";\nimport classNames from \"classnames\";\nimport { MicroApp } from \"@next-core/types\";\nimport { getHistory } from \"@next-core/runtime\";\nimport { Desktop } from \"../Desktop/Desktop.js\";\nimport { useLaunchpadSettingsContext } from \"../LaunchpadSettingsContext.js\";\nimport { useDesktopDirContext } from \"../DesktopDirContext.js\";\nimport styles from \"./DesktopSlider.module.css\";\nimport { MyDesktop } from \"../MyDesktop/MyDesktop.js\";\nimport { launchpadService } from \"../LaunchpadService.js\";\nimport {\n getRememberedDesktopCursor,\n setRememberedDesktopCursor,\n} from \"./desktopCursor.js\";\nimport { DesktopData, DesktopItemCustom } from \"../interfaces.js\";\nimport { WrappedGeneralIcon } from \"../common/wrapBrick.js\";\n\ntype appItem = MicroApp & { type?: \"app\" | \"custom\" };\n\ninterface DesktopSliderProps {\n microApps: MicroApp[];\n q?: string;\n desktops?: DesktopData[];\n arrowWidthPercent: number;\n}\n\nexport function DesktopSlider(props: DesktopSliderProps): React.ReactElement {\n const enableMyDesktop = true;\n const [desktopCursor, setDesktopCursor] = React.useState(\n getRememberedDesktopCursor()\n );\n const [appCursor, setAppCursor] = React.useState(-1);\n const { columns, rows } = useLaunchpadSettingsContext();\n const { setDesktopDir } = useDesktopDirContext();\n const slideDuration = 400;\n\n useEffect(() => {\n enableMyDesktop && launchpadService.setMaxVisitorLength(8);\n }, [columns, enableMyDesktop]);\n const mapItemToDesktop = (apps: appItem[]): DesktopData => ({\n name: \"-\",\n items: apps.map((app) => {\n if (app.type === \"custom\") {\n return {\n id: app.id,\n name: app.name,\n url: app.homepage,\n type: \"custom\",\n app,\n };\n }\n return {\n type: \"app\",\n id: app.id,\n app,\n };\n }),\n });\n\n const transformCustomItem = (item: DesktopItemCustom): appItem => ({\n localeName: item.name,\n homepage: item.url,\n ...item,\n type: \"custom\",\n });\n\n let desktops: DesktopData[] = [];\n let validItems = props.microApps;\n\n if (typeof props?.desktops === \"object\" && props.desktops.length > 0) {\n validItems = [];\n\n const id2app = props.microApps.reduce((acc, app) => {\n acc.set(app.id, app);\n return acc;\n }, new Map<string, appItem>());\n\n desktops = props.desktops\n .map((desktop) => ({\n name: desktop.name,\n items: desktop.items\n .map((item) => {\n if (item.type === \"app\") {\n if (id2app.has(item.id)) {\n const app = id2app.get(item.id);\n validItems.push(app as MicroApp);\n id2app.delete(item.id);\n return {\n type: item.type,\n id: item.id,\n app,\n };\n }\n // ignore not found apps\n } else if (item.type === \"dir\") {\n const items = item.items\n .map((item) => {\n if (item.type === \"app\") {\n if (id2app.has(item.id)) {\n const app = id2app.get(item.id);\n validItems.push(app as MicroApp);\n id2app.delete(item.id);\n return {\n type: item.type,\n id: item.id,\n app,\n };\n }\n } else if (item.type === \"custom\") {\n validItems.push(transformCustomItem(item));\n return item;\n }\n })\n .filter(Boolean);\n // ignore empty dirs\n if (items.length > 0) {\n return {\n type: item.type,\n id: item.id,\n name: item.name,\n items,\n };\n }\n } else if (item.type === \"custom\") {\n validItems.push(transformCustomItem(item));\n return item;\n }\n })\n .filter(Boolean)\n .slice(0, columns * rows),\n }))\n // ignore empty desktops\n .filter((desktop) => desktop.items.length > 0) as DesktopData[];\n } else if (!props.desktops) {\n // 如果没有定义桌面列表(例如本地开发模式),则自动按数量切割。\n desktops = chunk(props.microApps, columns * rows).map(mapItemToDesktop);\n }\n let filteredDesktop: DesktopData = {} as DesktopData;\n if (props.q) {\n const lowerQ = props.q.toLowerCase();\n filteredDesktop = mapItemToDesktop(\n validItems\n .filter(\n (app) =>\n (app.localeName as string).toLowerCase().includes(lowerQ) ||\n app.name.toLowerCase().includes(lowerQ) ||\n app.id.toLowerCase().includes(lowerQ)\n )\n .slice(0, columns * rows)\n );\n }\n\n // When sliding desktop, reset app cursor.\n React.useEffect(() => {\n setAppCursor(-1);\n }, [desktopCursor]);\n\n // When making search, set app cursor to the first app.\n React.useEffect(() => {\n setAppCursor(\n props.q && filteredDesktop && filteredDesktop.items.length > 0 ? 0 : -1\n );\n }, [props.q]);\n\n const lockRef = React.useRef(false);\n\n const throttledSetDesktopCursor = (index: number): void => {\n if (lockRef.current) {\n return;\n }\n setRememberedDesktopCursor(index);\n setDesktopCursor(index);\n // 一次滑动一个屏幕,锁定期间内,不能继续滑动屏幕。\n lockRef.current = true;\n setTimeout(() => {\n lockRef.current = false;\n }, slideDuration);\n };\n\n const slideLeft = React.useCallback((): void => {\n if (desktopCursor > 0) {\n throttledSetDesktopCursor(desktopCursor - 1);\n }\n }, [desktopCursor]);\n\n const slideRight = React.useCallback((): void => {\n const length = desktops.length;\n if (desktopCursor < length) {\n throttledSetDesktopCursor(desktopCursor + 1);\n }\n }, [desktopCursor, desktops.length]);\n\n const handleSlideLeft = (e: React.MouseEvent): void => {\n e.stopPropagation();\n slideLeft();\n };\n\n const handleSlideRight = (e: React.MouseEvent): void => {\n e.stopPropagation();\n slideRight();\n };\n\n const handleSlideTo = (e: React.MouseEvent, index: number): void => {\n e.stopPropagation();\n if (desktopCursor !== index) {\n throttledSetDesktopCursor(index);\n }\n };\n\n // Press arrow key to select an app.\n React.useEffect(() => {\n const onKeydown = (event: KeyboardEvent): void => {\n // 第一栏为我的面板,须过滤掉(PS: 但是搜索时 desktopCursor 为0是可以的)\n if (enableMyDesktop && desktopCursor === 0 && !props.q) return;\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n const currentDesktop = props.q\n ? filteredDesktop\n : desktops[desktopCursor - 1];\n if (key === \"Enter\" || key === 13) {\n event.preventDefault();\n if (appCursor >= 0 && appCursor < currentDesktop.items.length) {\n const cell = currentDesktop.items[appCursor];\n if (cell.type === \"app\") {\n launchpadService.pushVisitor(\"app\", cell.app as MicroApp);\n getHistory().push((cell.app as MicroApp).homepage);\n } else if (cell.type === \"custom\") {\n launchpadService.pushVisitor(\"custom\", cell);\n window.open(cell.url);\n } else if (cell.type === \"dir\") {\n // Calculate the approximate coordinates of a dir.\n const x = appCursor % columns;\n const y = Math.floor(appCursor / columns);\n setDesktopDir?.({\n activeIndex: 0,\n dir: {\n name: cell.name,\n items: cell.items,\n },\n coordinates: {\n x: (window.innerWidth * (x + 1)) / (columns + 1),\n y: (window.innerHeight * (y + 1)) / (rows + 1),\n },\n });\n }\n }\n } else {\n let offset = 0;\n if (key === \"ArrowRight\" || key === 39) {\n offset = 1;\n } else if (key === \"ArrowLeft\" || key === 37) {\n offset = appCursor === -1 ? currentDesktop.items.length : -1;\n } else if (key === \"ArrowDown\" || key === 40) {\n offset = appCursor === -1 ? 1 : columns;\n } else if (key === \"ArrowUp\" || key === 38) {\n offset = appCursor === -1 ? currentDesktop.items.length : -columns;\n }\n if (offset !== 0) {\n event.preventDefault();\n const next = appCursor + offset;\n if (next >= 0 && next < currentDesktop.items.length) {\n setAppCursor(next);\n }\n }\n }\n };\n window.addEventListener(\"keydown\", onKeydown);\n return () => {\n window.removeEventListener(\"keydown\", onKeydown);\n };\n }, [desktopCursor, appCursor, props.q, columns, setDesktopDir]);\n\n const deltaXRef = React.useRef(0);\n const deltaYRef = React.useRef(0);\n const responsibleRef = React.useRef(true);\n\n const tryToSlideByWheel = (): void => {\n // Mac 的 trackpad,部分鼠标滚轮会有“拖尾效应”,拖尾期间,不再响应滚轮事件。\n if (!responsibleRef.current) {\n return;\n }\n // 取绝对值较大的方向\n const axisRef =\n Math.abs(deltaYRef.current) > Math.abs(deltaXRef.current)\n ? deltaYRef\n : deltaXRef;\n // 经测试,滚轮纵轴一次位移 4,横轴一次位移 40。\n const threshold = axisRef === deltaYRef ? 4 : 40;\n if (axisRef.current >= threshold) {\n slideRight();\n } else if (axisRef.current <= -threshold) {\n slideLeft();\n } else {\n return;\n }\n // 触发滑动后,重设 delta,拖尾期间,不再响应滚轮事件。\n deltaXRef.current = 0;\n deltaYRef.current = 0;\n responsibleRef.current = false;\n };\n\n const resetDeltaTimeoutRef = React.useRef<any>();\n\n const handleWheel = (e: React.WheelEvent): void => {\n deltaXRef.current += e.deltaX;\n deltaYRef.current += e.deltaY;\n tryToSlideByWheel();\n if (resetDeltaTimeoutRef.current) {\n clearTimeout(resetDeltaTimeoutRef.current);\n }\n // 间隔 50ms 内的连续滚轮事件被认作一次滚动。\n resetDeltaTimeoutRef.current = setTimeout(() => {\n deltaXRef.current = 0;\n deltaYRef.current = 0;\n responsibleRef.current = true;\n }, 50);\n };\n\n const sliderChildrenLength = desktops.length + 1;\n\n return (\n <div\n onWheel={handleWheel}\n className={classNames(styles.desktopSlider, {\n [styles.filtered]: props.q,\n })}\n >\n <div className={styles.desktopSelector}>\n {[\n ...[\n {\n name: (\n <WrappedGeneralIcon lib=\"antd\" theme=\"filled\" icon=\"home\" />\n ),\n },\n ],\n ...desktops,\n ].map((desktop, index) => (\n <React.Fragment key={index}>\n {index !== 0 && <span className={styles.selectorSeparator} />}\n <a\n className={classNames(styles.desktopName, {\n [styles.active]: desktopCursor === index,\n })}\n onClick={(e) => handleSlideTo(e, index)}\n role=\"button\"\n >\n {desktop.name}\n </a>\n </React.Fragment>\n ))}\n </div>\n <div className={styles.scrollContainer}>\n <div\n className={styles.desktopList}\n style={{\n width: `${sliderChildrenLength * 100}%`,\n marginLeft: `${desktopCursor * -100}%`,\n transition: `margin-left ${slideDuration}ms ease-out`,\n }}\n >\n {enableMyDesktop && (\n <MyDesktop\n desktopCount={desktops.length}\n arrowWidthPercent={props.arrowWidthPercent}\n />\n )}\n {desktops.map((desktop, index) => (\n <Desktop\n key={index}\n desktop={desktop}\n desktopCount={desktops.length}\n arrowWidthPercent={props.arrowWidthPercent}\n activeIndex={desktopCursor - 1 === index ? appCursor : -1}\n />\n ))}\n </div>\n {\n // Show filtered apps as a single desktop.\n props.q && (\n <div className={styles.filteredList}>\n <Desktop\n desktop={filteredDesktop}\n desktopCount={1}\n arrowWidthPercent={props.arrowWidthPercent}\n activeIndex={appCursor}\n />\n </div>\n )\n }\n </div>\n <a\n className={classNames(styles.arrowLeft, {\n [styles.available]: desktopCursor > 0,\n })}\n style={{ width: `${props.arrowWidthPercent}%` }}\n onClick={handleSlideLeft}\n role=\"button\"\n >\n <span className={styles.arrowButton}>\n <WrappedGeneralIcon lib=\"antd\" theme=\"outlined\" icon=\"left\" />\n </span>\n </a>\n <a\n className={classNames(styles.arrowRight, {\n [styles.available]: desktopCursor < sliderChildrenLength - 1,\n })}\n style={{ width: `${props.arrowWidthPercent}%` }}\n onClick={handleSlideRight}\n role=\"button\"\n >\n <span className={styles.arrowButton}>\n <WrappedGeneralIcon lib=\"antd\" theme=\"outlined\" icon=\"right\" />\n </span>\n </a>\n </div>\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[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./DesktopDirContent.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]!./DesktopDirContent.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { getHistory } from \"@next-core/runtime\";\nimport {\n useDesktopDirContext,\n DirWithCoordinates,\n} from \"../DesktopDirContext.js\";\nimport { DesktopCell } from \"../DesktopCell/DesktopCell.js\";\nimport { useLaunchpadSettingsContext } from \"../LaunchpadSettingsContext.js\";\nimport styles from \"./DesktopDirContent.module.css\";\nimport { MicroApp } from \"@next-core/types\";\n\ninterface DesktopDirContentProps extends DirWithCoordinates {\n arrowWidthPercent: number;\n}\n\nexport function DesktopDirContent(\n props: DesktopDirContentProps\n): React.ReactElement {\n const { columns, rows } = useLaunchpadSettingsContext();\n const { setDesktopDir } = useDesktopDirContext();\n const [entering, setEntering] = React.useState(false);\n const [appCursor, setAppCursor] = React.useState(props.activeIndex);\n\n const items = props.dir.items.slice(0, columns * rows);\n // 展开的文件夹容器的大小即 DOM 容器的大小,以其中心为基准,变换至鼠标点击的位置,\n // 以模拟出一种从鼠标点击处展开的动画效果。\n const translateX =\n props.coordinates.x - document.documentElement.clientWidth / 2;\n const translateY =\n props.coordinates.y - document.documentElement.clientHeight / 2;\n\n React.useEffect(() => {\n const onKeydown = (event: KeyboardEvent): void => {\n event.stopPropagation();\n event.preventDefault();\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n if (key === \"Escape\" || key === 27) {\n setDesktopDir?.(undefined);\n } else if (key === \"Enter\" || key === 13) {\n if (appCursor >= 0 && appCursor < items.length) {\n const item = items[appCursor];\n if (item.type === \"app\") {\n getHistory().push((item.app as MicroApp).homepage);\n } else {\n window.open(item.url);\n }\n }\n } else {\n let offset = 0;\n if (key === \"ArrowRight\" || key === 39) {\n offset = 1;\n } else if (key === \"ArrowLeft\" || key === 37) {\n offset = appCursor === -1 ? items.length : -1;\n } else if (key === \"ArrowDown\" || key === 40) {\n offset = appCursor === -1 ? 1 : columns;\n } else if (key === \"ArrowUp\" || key === 38) {\n offset = appCursor === -1 ? items.length : -columns;\n }\n if (offset !== 0) {\n const next = appCursor + offset;\n if (next >= 0 && next < items.length) {\n setAppCursor(next);\n }\n }\n }\n };\n document.addEventListener(\"keydown\", onKeydown);\n return () => {\n document.removeEventListener(\"keydown\", onKeydown);\n };\n }, [props.dir, appCursor, columns, rows, setDesktopDir]);\n\n const handleCloseDir = (e: React.MouseEvent): void => {\n e.stopPropagation();\n setDesktopDir?.(undefined);\n };\n\n const handleEntering = (): void => {\n setEntering(true);\n };\n\n const rowsInDir = Math.ceil(items.length / columns);\n\n return (\n <CSSTransition\n in={true}\n timeout={150}\n appear={true}\n classNames=\"no-rules-class-name\"\n onEntering={handleEntering}\n >\n <div\n className={styles.dirContainer}\n onClick={handleCloseDir}\n style={{\n padding: `0 ${props.arrowWidthPercent}% 36px`,\n transform: entering\n ? \"none\"\n : `translate(${translateX}px,${translateY}px) scale(0.01)`,\n }}\n >\n <div className={styles.dirName}>{props.dir.name}</div>\n <div\n className={styles.dirContent}\n style={{\n height: `${((rowsInDir + 0.2) * 100) / (rows + 1)}%`,\n gridTemplateColumns: `repeat(${columns},1fr)`,\n gridTemplateRows: `repeat(${rowsInDir},1fr)`,\n }}\n >\n {items.map((item, index) => (\n <DesktopCell\n key={item.id}\n item={item}\n active={appCursor === index}\n />\n ))}\n </div>\n </div>\n </CSSTransition>\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[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./Launchpad.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]!./Launchpad.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport { MicroApp } from \"@next-core/types\";\nimport { SearchBar } from \"../SearchBar/SearchBar.js\";\nimport { DesktopSlider } from \"../DesktopSlider/DesktopSlider.js\";\nimport { DesktopDirContext, DirWithCoordinates } from \"../DesktopDirContext.js\";\nimport { LaunchpadSettingsContext } from \"../LaunchpadSettingsContext.js\";\nimport { DesktopDirContent } from \"../DesktopDirContent/DesktopDirContent.js\";\nimport { launchpadService } from \"../LaunchpadService.js\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport styles from \"./Launchpad.module.css\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface LaunchpadProps {\n onWillClose?: () => void;\n}\n\nexport function Launchpad(props: LaunchpadProps): React.ReactElement {\n const { settings, desktops } = launchpadService.getBaseInfo();\n\n const getFilterMicroApps = (): MicroApp[] =>\n // 过滤掉状态为开发中的小产品\n launchpadService\n .getBaseInfo()\n .microApps // 兼容较老版本接口未返回 `status` 的情况。\n .filter(\n (item) =>\n item &&\n (!item.status ||\n item.status === \"enabled\" ||\n item.status === \"developing\")\n );\n\n const [q, setQ] = React.useState(\"\");\n const [microApps, setMicroApps] = React.useState(getFilterMicroApps());\n const [desktopDir, setDesktopDir] = React.useState<DirWithCoordinates>();\n const [loading, setLoading] = React.useState(\n !!window.STANDALONE_MICRO_APPS && !launchpadService.loaded\n );\n\n React.useEffect(() => {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await launchpadService.fetchLaunchpadInfo();\n setLoading(false);\n setMicroApps(getFilterMicroApps());\n } catch (error) {\n props.onWillClose?.();\n handleHttpError(error);\n }\n };\n if (window.STANDALONE_MICRO_APPS) {\n startFetchLaunchpadInfo();\n } else {\n launchpadService.init();\n }\n }, []);\n\n React.useEffect(() => {\n const onKeydown = (event: KeyboardEvent): void => {\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n if (key === \"Escape\" || key === 27) {\n props.onWillClose?.();\n }\n };\n window.addEventListener(\"keydown\", onKeydown);\n return () => {\n window.removeEventListener(\"keydown\", onKeydown);\n };\n }, [props.onWillClose]);\n\n const handleChange = (value: string): void => {\n setQ(value);\n };\n\n const arrowWidthPercent = 9;\n\n return (\n <LaunchpadSettingsContext.Provider value={settings}>\n <DesktopDirContext.Provider\n value={{\n desktopDir,\n setDesktopDir,\n }}\n >\n <div className={styles.launchpad} onClick={props.onWillClose}>\n {loading ? (\n <div className={styles.loadingWrapper}>\n <WrappedIcon\n icon=\"loading\"\n lib=\"antd\"\n theme=\"outlined\"\n spinning\n />\n </div>\n ) : (\n <>\n <CSSTransition\n in={!desktopDir}\n timeout={100}\n classNames={{\n enter: styles.fadeEnter,\n enterActive: styles.fadeEnterActive,\n exit: styles.fadeExit,\n exitActive: styles.fadeExitActive,\n exitDone: styles.fadeExitDone,\n }}\n >\n <div className={styles.launchpadContainer}>\n <SearchBar onChange={handleChange} />\n <DesktopSlider\n q={q}\n microApps={microApps}\n desktops={desktops}\n arrowWidthPercent={arrowWidthPercent}\n />\n </div>\n </CSSTransition>\n {desktopDir && (\n <DesktopDirContent\n {...desktopDir}\n arrowWidthPercent={arrowWidthPercent}\n />\n )}\n </>\n )}\n </div>\n </DesktopDirContext.Provider>\n </LaunchpadSettingsContext.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[3].use[1]!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./LaunchpadWrapper.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]!./LaunchpadWrapper.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { Launchpad, LaunchpadProps } from \"../Launchpad/Launchpad.js\";\nimport styles from \"./LaunchpadWrapper.module.css\";\n\nexport interface LaunchpadWrapperProps extends LaunchpadProps {\n onClose?: () => void;\n}\n\nexport function LaunchpadWrapper(\n props: LaunchpadWrapperProps\n): React.ReactElement {\n const [fadeIn, setFadeIn] = React.useState(true);\n\n const handleWillClose = (): void => {\n setFadeIn(false);\n props.onWillClose?.();\n };\n\n const onExited = (): void => {\n props.onClose?.();\n };\n\n return (\n <CSSTransition\n in={fadeIn}\n timeout={100}\n appear={true}\n classNames={{ ...styles }}\n onExited={onExited}\n >\n <Launchpad onWillClose={handleWillClose} />\n </CSSTransition>\n );\n}\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n LaunchpadWrapper,\n LaunchpadWrapperProps,\n} from \"../LaunchpadWrapper/LaunchpadWrapper.js\";\n\nexport interface LaunchpadPortalProps extends LaunchpadWrapperProps {\n visible: boolean;\n}\n\nexport function LaunchpadPortal(\n props: LaunchpadPortalProps\n): React.ReactPortal | null {\n const elem = document.createElement(\"div\");\n\n // Currently the `useEffect()` can't be covered when shallow rendering.\n // Ref https://github.com/airbnb/enzyme/issues/2086\n // Todo(steve): check issue status and remove ignore.\n /* istanbul ignore next */\n React.useEffect(() => {\n document.body.appendChild(elem);\n return () => {\n document.body.removeChild(elem);\n };\n });\n\n if (!props.visible) {\n return null;\n }\n\n return createPortal(\n <LaunchpadWrapper\n onWillClose={props.onWillClose}\n onClose={props.onClose}\n />,\n elem\n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { getRuntime, getHistory } from \"@next-core/runtime\";\nimport LaunchpadSvg from \"../../images/launchpad.svg\";\nimport { LaunchpadPortal } from \"../LaunchpadPortal/LaunchpadPortal.js\";\nimport hotkeys from \"hotkeys-js\";\nimport { launchpadService } from \"../LaunchpadService.js\";\n\nexport function LaunchpadButton(): React.ReactElement {\n const [visible, setVisible] = useState(false);\n const openLaunchpad = (): void => {\n setVisible(true);\n };\n\n const handleLaunchpadClose = (): void => {\n setVisible(false);\n };\n const handleLaunchpadWillClose = useCallback((): void => {\n getRuntime().toggleLaunchpadEffect(false);\n }, []);\n\n useEffect(() => {\n const unlisten = getHistory().listen(() => {\n // 当切换页面时,关闭 Launchpad。\n handleLaunchpadWillClose();\n setVisible(false);\n });\n return unlisten;\n }, [handleLaunchpadWillClose]);\n\n useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n hotkeys.filter = function () {\n return true;\n };\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n hotkeys(\"alt+l\", (event) => {\n event.preventDefault();\n setVisible((preVisble) => {\n const curVisble = !preVisble;\n if (!curVisble) handleLaunchpadWillClose();\n return curVisble;\n });\n });\n\n return () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n hotkeys.unbind(\"alt+l\");\n };\n }, [handleLaunchpadWillClose]);\n\n useEffect(() => {\n // 当打开/关闭 Launchpad 时,切换背景模糊,切换悬浮展开模式;\n getRuntime().toggleLaunchpadEffect(visible);\n }, [visible]);\n\n useEffect(() => {\n launchpadService.preFetchLaunchpadInfo();\n launchpadService.preFetchFavorites();\n }, []);\n\n return (\n <>\n <a role=\"button\" className=\"launchpadLink\" onClick={openLaunchpad}>\n <LaunchpadSvg />\n </a>\n <LaunchpadPortal\n visible={visible}\n onWillClose={handleLaunchpadWillClose}\n onClose={handleLaunchpadClose}\n />\n </>\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, `.desktop--ou0P6iGf{display:grid;grid-template-columns:repeat(8,1fr)}.desktop--ou0P6iGf .cellWrapper{justify-content:flex-start}.title--waO4P2iB{color:#fff;font-size:16px;padding-bottom:6px}.visited--tdY4xwnJ{padding-bottom:24px;margin-bottom:20px;border-bottom:1px rgba(255,255,255,0.25) solid}.favorites--lfUhBPuB .ant-spin-blur{opacity:1}.favorites--lfUhBPuB .ant-spin-blur::after{opacity:0}.modeWrapper--L03hs70G{height:0}.modeWrapper--L03hs70G .header--sdla4qan{display:flex;justify-content:space-between}.modeWrapper--L03hs70G .section--zyFAea1p{padding:10px 30px 20px}.modeWrapper--L03hs70G .modeIcon--CE2TFixF{margin-left:15px;padding:3px;border-radius:50%;opacity:0.8;background:rgba(255,255,255,0.1)}.modeWrapper--L03hs70G .modeIcon--CE2TFixF:hover{opacity:1}.modeWrapper--L03hs70G .emptyTips--IvkqCJZN{font-size:16px;line-height:24px}.modeWrapper--L03hs70G .emptyTips--IvkqCJZN a{color:#52a6f9}.modeWrapper--L03hs70G .emptyTips--IvkqCJZN a:hover{color:var(--antd-link-hover-color)}.spin--wMvBU9Kg{color:#8c8c8c;width:100%;height:200px;line-height:200px;display:flex;align-items:center;justify-content:center}.settingsContainer--Z_f8juq_ a{color:#fff}.settingsContainer--Z_f8juq_ .settings--nnLSnU29{cursor:pointer;margin-right:10px;color:rgba(255,255,255,0.7);font-size:13px;transition-duration:0.8s;transition-property:transform}.settingsContainer--Z_f8juq_:hover .settings--nnLSnU29{transform:rotate(180deg)}.favoriteContainer--CjB0c4Dt{display:grid;grid-template-columns:repeat(5,1fr);gap:2.5rem 7%}@media (max-height: 860px), (max-width: 1280px){.favoriteContainer--CjB0c4Dt{gap:1.7rem 4%}}@media (max-height: 720px), (max-width: 1024px){.favoriteContainer--CjB0c4Dt{gap:1rem 3%}.visited--tdY4xwnJ{padding-bottom:18px;margin-bottom:15px}}@media (max-height: 640px), (max-width: 900px){.favoriteContainer--CjB0c4Dt{gap:0.8rem 2%}}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"desktop\": `desktop--ou0P6iGf`,\n\t\"title\": `title--waO4P2iB`,\n\t\"visited\": `visited--tdY4xwnJ`,\n\t\"favorites\": `favorites--lfUhBPuB`,\n\t\"modeWrapper\": `modeWrapper--L03hs70G`,\n\t\"header\": `header--sdla4qan`,\n\t\"section\": `section--zyFAea1p`,\n\t\"modeIcon\": `modeIcon--CE2TFixF`,\n\t\"emptyTips\": `emptyTips--IvkqCJZN`,\n\t\"spin\": `spin--wMvBU9Kg`,\n\t\"settingsContainer\": `settingsContainer--Z_f8juq_`,\n\t\"settings\": `settings--nnLSnU29`,\n\t\"favoriteContainer\": `favoriteContainer--CjB0c4Dt`\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, `.scrollContainer--dNX8Cn8d::-webkit-scrollbar{width:6px}.scrollContainer--dNX8Cn8d::-webkit-scrollbar-thumb{visibility:hidden;border-radius:3px;background-color:rgba(69,69,73,0.45)}.scrollContainer--dNX8Cn8d::-webkit-scrollbar-track{visibility:hidden;width:12px;background-color:rgb(140,140,140,0.2)}.scrollContainer--dNX8Cn8d:hover{background:rgba(18,21,26,0.4);box-shadow:0px 5px 10px 4px rgba(0,0,0,0.1);border-radius:6px}.scrollContainer--dNX8Cn8d:hover::-webkit-scrollbar-thumb,.scrollContainer--dNX8Cn8d:hover::-webkit-scrollbar-track{visibility:visible}.siteMapContainer--oPV4617W{padding-top:10px;column-count:5}.siteMapContainer--oPV4617W .groupWrapper--vg8DzjpO{margin:0 30px;page-break-inside:avoid;break-inside:avoid}.siteMapContainer--oPV4617W .groupWrapper--vg8DzjpO .group--ojLUh6U2{margin:0;padding:9px 0 58px}.siteMapContainer--oPV4617W .groupWrapper--vg8DzjpO .item--UDV8jW76{list-style-type:none;font-size:12px;padding:5px 0px}.siteMapContainer--oPV4617W .groupWrapper--vg8DzjpO .item--UDV8jW76 > eo-link{cursor:pointer;color:rgba(255,255,255,0.65)}.siteMapContainer--oPV4617W .groupWrapper--vg8DzjpO .item--UDV8jW76 > eo-link:hover{color:var(--antd-link-hover-color)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"scrollContainer\": `scrollContainer--dNX8Cn8d`,\n\t\"siteMapContainer\": `siteMapContainer--oPV4617W`,\n\t\"groupWrapper\": `groupWrapper--vg8DzjpO`,\n\t\"group\": `group--ojLUh6U2`,\n\t\"item\": `item--UDV8jW76`\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, `.desktop--LCHJxkdK{flex:1;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(4,1fr)}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"desktop\": `desktop--LCHJxkdK`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","export enum K {\n SEARCH_BY_NAME_KEYWORD = \"SEARCH_BY_NAME_KEYWORD\",\n}\n\nconst en: Locale = {\n SEARCH_BY_NAME_KEYWORD: \"Search by name/keyword\",\n};\n\nconst zh: Locale = {\n SEARCH_BY_NAME_KEYWORD: \"通过名称/关键字搜索\",\n};\n\nexport const NS = \"bricks/basic/launchpad\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [key in K]: string };\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","toString","locals","props","React","_extends","xmlns","width","height","viewBox","fill","fillRule","d","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","WrappedLink","wrapBrick","WrappedGeneralIcon","SearchBar","useTranslation","NS","focus","setFocus","searchInputRef","element","Promise","resolve","then","e","className","classNames","styles","searchBar","inputContainer","role","onClick","stopPropagation","inputAffixWrapper","inputAffixWrapperFocused","antInputPrefix","icon","lib","theme","input","placeholder","t","K","SEARCH_BY_NAME_KEYWORD","onChange","target","value","onKeyDown","key","keyCode","which","includes","preventDefault","onFocus","handleFocus","onBlur","handleBlur","ref","getImageUrl","app","defaultAppIcon","_window$PUBLIC_ROOT","icons","large","test","window","STANDALONE_MICRO_APPS","standaloneMode","PUBLIC_ROOT","replace","currentVersion","PUBLIC_CDN","DesktopApp","_ref","onAddClick","isFavorite","showAddIcon","size","installing","installStatus","appLink","iconBackground","circle","square","url","homepage","appIcon","src","addIcon","circleIcon","squareIcon","appName","style","paddingRight","localeName","DesktopDirContext","useDesktopDirContext","DesktopDir","setDesktopDir","dirLink","dir","name","items","coordinates","x","clientX","y","clientY","activeIndex","slice","map","item","type","dirName","DesktopCustom","responsive","href","launchpadService","constructor","_auth$getAuth","_defineProperty","auth","getAuth","org","settings","columns","rows","microApps","desktops","siteSort","async","result","LaunchpadApi_listCollection","page","pageSize","interceptorParams","ignoreLoadingBar","noAbortOnRouteChange","list","this","setFavorites","favoritesLoaded","launchpadInfo","LaunchpadApi_getLaunchpadInfo","storyboard","storyboards","locales","ns","Object","entries","forEach","lang","resources","i18n","addResourceBundle","getFixedT","keys","removeResourceBundle","baseInfo","launchpad","filter","Boolean","initValue","loaded","storage","JsonStorage","localStorage","deferredLaunchpadInfo","DeferredService","doFetchLaunchpadInfo","deferredFavorites","doFetchFavorites","init","runtime","getRuntime","getDesktops","getCurrentApp","getLaunchpadSettings","getLaunchpadSiteMap","customList","desktop","i","flat","status","setMicroApps","setMaxVisitorLength","maxVisitorLength","preFetchFavorites","schedulePrefetch","fetchFavoriteList","eager","fetch","favoriteList","preFetchLaunchpadInfo","fetchLaunchpadInfo","getBaseInfo","getFavoritesLength","length","typeAdaptor","_list$filter","filteredFavoriteList","v","_v$launchpadCollectio","launchpadCollection","syncValidRecentlyVisitor","getAllVisitors","some","f","setAllVisitors","setAsFavorite","params","LaunchpadApi_createCollection","deleteFavorite","LaunchpadApi_deleteCollection","microAppId","customItemId","getItem","storageKey","find","getItemIndex","findIndex","hasItem","setItem","visitors","index","splice","unshift","pop","pushVisitor","getVisitor","getRealDesktopItem","_item$launchpadCollec","custom","setFavoriteAsVisitor","_item$launchpadCollec2","data","getSitemapList","curMicroApps","internal","siteMapList","apps","row","pick","DesktopCell","addItemToFavorite","Dialog","show","title","content","contentStyle","zIndex","_props$onSetAsFavorit","onSetAsFavorite","call","cellWrapper","positionLeft","position","cellItem","active","handleAppClick","handleCustomClick","LaunchpadSettingsContext","useLaunchpadSettingsContext","Desktop","padding","arrowWidthPercent","desktopCount","gridTemplateColumns","gridTemplateRows","FavoriteDesktopCell","_omit","_item$launchpadCollec0","_item$launchpadCollec1","disabled","useMemo","realLink","_item$launchpadCollec7","_item$launchpadCollec8","_item$launchpadCollec9","link","baseUrl","document","baseURI","startsWith","_item$launchpadCollec4","_item$launchpadCollec5","_item$launchpadCollec6","_item$launchpadCollec3","open","omit","fontSize","LeacySiteMap","_props$categoryList","useEffect","_props$onLoad","onLoad","scrollContainer","containerStyle","onWheel","siteMapContainer","categoryList","_item$apps","groupWrapper","group","handleClick","SiteMap","forwardRef","ModeType","remberMode","Sitemap","MyDesktop","recentlyVisitedList","useState","setFavoriteList","isLoading","setIsLoading","mode","setMode","siteMapRef","createRef","deskContainerRef","useRef","siteMapHeight","setSiteMapHeight","getFavoriteList","handleMode","handleOnSetAsFavorite","handleSiteMapLoad","siteMap","current","deskContainer","siteMapDom","getBoundingClientRect","bottom","top","renderRecentlyVisited","visited","renderMyFavorites","section","favorites","spin","spinning","isEmpty","emptyTips","marginLeft","favoriteContainer","renderSiteMap","_launchpadService$get","overflow","flex","modeWrapper","header","Favorities","modeIcon","category","settingsContainer","rememberedDesktopCursor","DesktopSlider","desktopCursor","setDesktopCursor","appCursor","setAppCursor","mapItemToDesktop","transformCustomItem","validItems","id2app","reduce","acc","set","Map","has","get","delete","chunk","filteredDesktop","q","lowerQ","toLowerCase","lockRef","throttledSetDesktopCursor","setTimeout","slideLeft","slideRight","onKeydown","event","currentDesktop","cell","getHistory","Math","floor","innerWidth","innerHeight","offset","next","addEventListener","removeEventListener","deltaXRef","deltaYRef","responsibleRef","resetDeltaTimeoutRef","sliderChildrenLength","deltaX","deltaY","tryToSlideByWheel","axisRef","abs","threshold","clearTimeout","desktopSlider","filtered","desktopSelector","selectorSeparator","desktopName","handleSlideTo","desktopList","transition","filteredList","arrowLeft","available","arrowButton","arrowRight","DesktopDirContent","entering","setEntering","translateX","documentElement","clientWidth","translateY","clientHeight","rowsInDir","ceil","CSSTransition","in","timeout","appear","onEntering","handleEntering","dirContainer","transform","dirContent","WrappedIcon","Launchpad","getFilterMicroApps","setQ","desktopDir","loading","setLoading","error","_props$onWillClose","onWillClose","handleHttpError","startFetchLaunchpadInfo","_props$onWillClose2","Provider","loadingWrapper","enter","fadeEnter","enterActive","fadeEnterActive","exit","fadeExit","exitActive","fadeExitActive","exitDone","fadeExitDone","launchpadContainer","LaunchpadWrapper","fadeIn","setFadeIn","onExited","_props$onClose","onClose","handleWillClose","LaunchpadPortal","elem","createElement","body","appendChild","removeChild","visible","createPortal","LaunchpadButton","setVisible","handleLaunchpadWillClose","useCallback","toggleLaunchpadEffect","listen","hotkeys","preVisble","curVisble","unbind","openLaunchpad","LaunchpadSvg","handleLaunchpadClose","en","zh"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_nav=globalThis.webpackChunk_next_bricks_nav||[]).push([[9149],{1724:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(6758),l=a.n(n),i=a(935),r=a.n(i)()(l());r.push([e.id,':root{--eo-launchpad-v2-background:#fff;--eo-launchpad-v2-menu-icon-color:#8c8c8c}html[data-theme="dark"],\nhtml[data-theme="dark-v2"]{--eo-launchpad-v2-background:#26262a;--eo-launchpad-v2-menu-icon-color:rgba(255,255,255,0.45)}',""]);const o=r},3693:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(6758),l=a.n(n),i=a(935),r=a.n(i)()(l());r.push([e.id,".platform-category-name,\n.platform-category-sidebar-menu-item-label,\n.platform-item-name,\n.platform-item-description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.platform-category-sidebar-menu-item{display:flex;gap:8px;align-items:center;padding:0px 12px 0px 16px}.platform-category-sidebar-menu-item > eo-link{display:block;min-width:0px;color:var(--color-header-text);cursor:pointer}.platform-category-sidebar-menu-item > eo-link:hover,\n.platform-category-sidebar-menu-item\n > eo-link:hover\n .platform-category-sidebar-menu-icon{color:var(--color-brand-hover)}.platform-category-sidebar-menu-item > eo-link.active,\n.platform-category-sidebar-menu-item\n > eo-link.active\n .platform-category-sidebar-menu-icon{color:var(--color-brand-active)}.platform-category-sidebar-menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px}.platform-category-sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.platform-category-name{font-size:18px;font-weight:500;color:var(--text-color-secondary);flex-shrink:0}.platform-items{display:grid;grid-template-columns:repeat(2,1fr);gap:0 54px}.platform-items > li{min-width:0}.platform-items > li > eo-link{width:100%;cursor:pointer}.platform-item{padding:12px 0;display:flex;flex-direction:column}.platform-item:hover .platform-item-icon,\n.platform-item:hover .platform-item-name{color:var(--color-brand-hover)}.platform-item-title{display:flex;align-items:center;margin-bottom:4px}.platform-item-icon{margin-right:8px;font-size:14px;color:var(--text-color-secondary);flex-shrink:0}.platform-item-name{font-weight:500;color:var(--text-color-title);line-height:18px}.platform-item-description{margin-left:22px;color:var(--text-color-secondary);line-height:18px}",""]);const o=r.toString()},5924:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(6758),l=a.n(n),i=a(935),r=a.n(i)()(l());r.push([e.id,":host{display:inline-block;width:32px;height:32px;--eo-launchpad-v2-max-height:calc(100vh - var(--app-bar-height) - 36px)}:host([hidden]){display:none}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:3px}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1110px;max-width:calc(100vw - 100px);height:var(--eo-launchpad-v2-max-height);background-color:var(--eo-launchpad-v2-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:190px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-size:205px 205px;background-repeat:no-repeat;background-position:left 52px bottom 27px}.sidebar > *:not(:last-child){border-bottom:1px solid var(--stroke-color-default)}.quick-nav-label,\n.platform-nav-label,\n.jump-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:auto;white-space:normal;word-break:break-word;width:90px}.recent-visits span{width:100%}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits,\n.platform-items{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link,\n.recent-visits eo-link{display:block;min-width:0;height:100%}.sidebar-menu-item > eo-link::part(link),\n.menu-item > eo-link::part(link){display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.sidebar-menu-item{padding:0 12px 0 16px;justify-content:space-between}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.union{flex:1;display:flex;flex-direction:column;overflow-y:auto}.quick-nav,\n.platform-nav{display:flex;flex-direction:column;padding:20px 0 24px}.platform-nav{padding:0 0 24px}.quick-nav-label,\n.platform-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.quick-nav-menu,\n.platform-nav-menu{flex:1}.jump-nav > eo-link{display:block;cursor:pointer}.jump-nav > eo-link::part(link){padding:10px 16px;display:flex;justify-content:space-between;align-items:center}.jump-nav-label{flex:1;color:var(--color-header-text);font-weight:500}.jump-nav > eo-icon{font-size:14px;color:var(--text-color-default)}.content{flex:1;padding:20px 24px 24px;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;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)}.menu-groups,\n.recent-visits{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-groups-en{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.menu-groups-en .menu-item-label{width:190px}.sidebar-en{width:220px}.launchpad-en{width:1210px}.platform-nav-label-en{width:110px}.sidebar-en .sidebar-menu-item .menu-item-label{width:140px}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px;width:100%}.sidebar-menu-item,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--eo-launchpad-v2-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-remove,\n.menu-item-star{cursor:pointer}.menu-item-remove,\n.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.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)}.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)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;gap:8px}.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:100%;padding:0 8px}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}@supports not (inset: 0){.content,\n .search-box,\n .sidebar-menu,\n .menu,\n .sub-menu,\n .sidebar-menu-item,\n .menu-item:not(.folder),\n .sidebar-menu-item > eo-link::part(link),\n .menu-item > eo-link::part(link){gap:0}.sidebar-menu > :not(:first-child),\n .menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .sidebar-menu-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}.content > :not(:last-child){margin-bottom:24px}}",""]);const o=r.toString()},8356:(e,t,a)=>{a.d(t,{P:()=>r,z:()=>i});var n=a(8769),l=a.n(n);const i=l().createContext({}),r=()=>l().useContext(i)},8776:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(6758),l=a.n(n),i=a(935),r=a.n(i)()(l());r.push([e.id,".fadeEnter{opacity:0;transform:scale(0.95)}.fadeEnterActive{opacity:1;transform:translateX(0);transition:opacity 100ms ease-out,transform 100ms ease-out}.fadeExit{transform:translate(-30px,0)}.fadeExitActive{transform:translate(-100%,0);transition:transform 300ms ease-out}.fadeExitDone{display:none}",""]);const o=r.toString()},8839:(e,t,a)=>{a.d(t,{F:()=>g,r:()=>d});var n=a(9575),l=a(8769),i=a.n(l),r=a(1030),o=a(3373),c=a.n(o),m=a(9393),s=a(8356),p=a(8002),u=a(403);function d(e){let{name:t,items:a}=e;return i().createElement("li",{className:"menu-group"},i().createElement("div",{className:"menu-group-label"},t),i().createElement("ul",{className:"menu"},a.map((e=>"dir"===e.type?i().createElement(f,{key:`${e.type}-${e.id}`,name:e.localeName,items:e.items}):i().createElement(v,{key:`${e.type}-${e.id}`,item:e})))))}function v(e){var t;let{item:a}=e;const{t:o}=(0,p.useTranslation)(u.NS),{loadingFavorites:d,readonly:v,pushRecentVisit:g,toggleStar:f,isStarred:h}=(0,s.P)(),b=(0,l.useMemo)((()=>h(a)),[h,a]),x=(0,l.useCallback)((()=>{f(a)}),[a,f]),y=(0,l.useCallback)((()=>{g(a)}),[a,g]);return i().createElement("li",{className:c()("menu-item",{starred:b,"can-star":!d})},i().createElement(m.EM,(0,n.A)({onClick:y},"app"===a.type?{url:a.url}:{href:a.url}),i().createElement(m.Bj,(0,n.A)({className:"menu-icon",lib:"easyops",icon:"micro-app-center"},null!==(t=a.menuIcon)&&void 0!==t&&t.lib&&a.menuIcon.icon?(0,r.pick)(a.menuIcon,["lib","icon","theme","category","prefix"]):null)),i().createElement("span",{className:"menu-item-label"},a.localeName)),!v&&i().createElement(m.Bj,{lib:"fa",prefix:b?"fas":"far",icon:"star",className:"menu-item-star",title:o(b?u.K.UNFAVORITE:u.K.FAVORITE),onClick:x,"data-testid":"menu-item-star"}))}function g(e){var t;let{item:a,target:o}=e;const{readonly:c,pushRecentVisit:p,toggleStar:u}=(0,s.P)(),d=(0,l.useCallback)((()=>{"link"!==a.type&&p(a)}),[a,p]),v=(0,l.useCallback)((()=>{u(a)}),[a,u]);return i().createElement("li",{className:"sidebar-menu-item"},i().createElement(m.EM,(0,n.A)({onClick:d},"app"===a.type?{url:a.url}:{href:a.url},o?{target:o}:null),i().createElement(m.Bj,(0,n.A)({className:"sidebar-menu-icon",lib:"easyops",icon:"micro-app-center"},null!==(t=a.menuIcon)&&void 0!==t&&t.lib&&a.menuIcon.icon?(0,r.pick)(a.menuIcon,["lib","icon","theme","category","prefix"]):null)),i().createElement("span",{className:"menu-item-label"},a.name)),!c&&i().createElement(m.Bj,{lib:"fa",icon:"xmark",className:"menu-item-remove",onClick:v}))}function f(e){let{name:t,items:a}=e;const{searching:n}=(0,s.P)(),[r,o]=(0,l.useState)(!1),[p,u]=(0,l.useState)(!1),d=(0,l.useCallback)((()=>{n?u((e=>!e)):o((e=>!e))}),[n]);(0,l.useEffect)((()=>{u(!0)}),[n]);const g=n?p:r;return i().createElement("li",{className:"menu-item folder"},i().createElement(m.EM,{onClick:d},i().createElement(m.Bj,{lib:"fa",prefix:"far",icon:"folder-open",className:"menu-icon"}),i().createElement("span",{className:"menu-item-label"},t),i().createElement(m.Bj,{lib:"antd",icon:g?"up":"down",className:"menu-item-toggle"})),i().createElement("ul",{className:c()("sub-menu",{expanded:g})},a.map((e=>i().createElement(v,{key:`${e.type}-${e.id}`,item:e})))))}(0,p.initializeReactI18n)(u.NS,u.I)},9262:(e,t,a)=>{var n=a(2591),l=a.n(n),i=a(1740),r=a.n(i),o=a(8128),c=a.n(o),m=a(855),s=a.n(m),p=a(3051),u=a.n(p),d=a(3656),v=a.n(d),g=a(1724),f={};f.styleTagTransform=v(),f.setAttributes=s(),f.insert=c().bind(null,"head"),f.domAPI=r(),f.insertStyleElement=u(),l()(g.A,f),g.A&&g.A.locals&&g.A.locals},9302:(e,t,a)=>{a.d(t,{r:()=>E});var n=a(9575),l=a(8769),i=a.n(l),r=a(3373),o=a.n(r),c=a(9393),m=a(2133),s=a(8839),p=a(8356),u=a(1030);function d(e){var t;let{item:a,active:l,onClick:r}=e;return i().createElement("li",{className:"platform-category-sidebar-menu-item"},i().createElement(c.EM,{type:"plain",className:o()({active:l}),onClick:()=>null==r?void 0:r(a)},i().createElement(c.Bj,(0,n.A)({className:"platform-category-sidebar-menu-icon",lib:"easyops",category:"second-menu",icon:"serve-second-menu"},null!==(t=a.icon)&&void 0!==t&&t.lib&&a.icon.icon?(0,u.pick)(a.icon,["lib","icon","theme","category","prefix"]):null)),i().createElement("span",{className:"platform-category-sidebar-menu-item-label"},a.name)))}function v(e){var t;let{item:a}=e;return i().createElement("li",null,i().createElement(c.EM,(0,n.A)({type:"plain"},"app"===a.type?{url:a.url}:{href:a.url,target:"_blank"}),i().createElement("div",{className:"platform-item"},i().createElement("div",{className:"platform-item-title"},i().createElement(c.Bj,(0,n.A)({className:"platform-item-icon",lib:"easyops",category:"third-menu",icon:"deploy-orchestration-tasks-third-menu"},null!==(t=a.menuIcon)&&void 0!==t&&t.lib&&a.menuIcon.icon?(0,u.pick)(a.menuIcon,["lib","icon","theme","category","prefix"]):null)),i().createElement("div",{className:"platform-item-name"},a.name)),i().createElement("div",{className:"platform-item-description"},a.description))))}var g=a(1921),f=a(1675),h=a(2865),b=a(8002),x=a(403),y=a(8443);function E(e){let{active:t}=e;const{t:a}=(0,b.useTranslation)(x.NS),r=(0,l.useRef)(null),[u,E]=(0,l.useState)([]),N=y.i18n.language&&"en"===y.i18n.language.split("-")[0],w=(0,l.useCallback)((()=>{var e;null===(e=r.current)||void 0===e||e.focus()}),[]),[A,C]=(0,l.useState)("#all"),j=i().useMemo((()=>{var e;return null===(e=(0,g.getRuntime)())||void 0===e?void 0:e.getFeatureFlags()["launchpad-show-platform-category"]}),[]),S=i().useMemo((()=>{var e;return null===(e=(0,g.getRuntime)())||void 0===e?void 0:e.getFeatureFlags()["launchpad-show-scenario-center"]}),[]),I=i().useMemo((()=>{var e;return null===(e=(0,g.getRuntime)())||void 0===e?void 0:e.getFeatureFlags()["launchpad-show-solution-center"]}),[]),R=i().useMemo((()=>{var e;return null===(e=(0,g.getRuntime)())||void 0===e?void 0:e.getFeatureFlags()["launchpad-show-open-platform"]}),[]),{loading:F,q:M,setQ:z,menuGroups:B,favorites:T,loadingFavorites:_,recentVisits:K,pushRecentVisit:P,toggleStar:O,isStarred:q,platformCategories:V}=(0,m.sZ)(t),$=!!M,L=(0,l.useCallback)((e=>{z(e.target.value)}),[z]),D=(0,l.useCallback)((()=>{z("")}),[z]);(0,l.useEffect)((()=>{var e;t&&(null===(e=r.current)||void 0===e||e.focus())}),[t]);const U=(0,l.useCallback)((e=>{C(e.id)}),[]),H=(0,l.useMemo)((()=>V.find((e=>e.id===A))),[A,V]);return(0,l.useEffect)((()=>{T.length>u.length?E(T):setTimeout((()=>{E(T)}),300)}),[T,u.length]),i().createElement("div",{className:o()("launchpad",{active:t,"launchpad-en":N})},i().createElement(p.z.Provider,{value:{searching:$,loadingFavorites:_,pushRecentVisit:P,toggleStar:O,isStarred:q}},i().createElement("div",{className:o()("sidebar",{"sidebar-en":N})},i().createElement("div",{className:"union"},i().createElement("div",{className:"quick-nav"},i().createElement("div",{className:"quick-nav-label"},a(x.K.QUICK_ACCESS)),i().createElement(f.A,null,i().createElement("ul",{className:"sidebar-menu quick-nav-menu"},u.map(((e,t)=>i().createElement(h.A,{key:t,timeout:300,in:!!T.find((t=>t.id===e.id)),classNames:{enter:"fadeEnter",enterActive:"fadeEnterActive",exit:"fadeExit",exitActive:"fadeExitActive",exitDone:"fadeExitDone"}},i().createElement(s.F,{key:t,item:e}))))))),j&&i().createElement("div",{className:"platform-nav"},i().createElement("div",{className:o()("platform-nav-label",{"platform-nav-label-en":N})},a(x.K.PLATFORM_BASE)),i().createElement("ul",{className:"sidebar-menu platform-nav-menu"},V.map(((e,t)=>i().createElement(d,{key:t,onClick:U,item:e,active:A===e.id})))))),S&&i().createElement("div",{className:"jump-nav"},i().createElement(c.EM,{type:"plain",url:"/portal/scenario"},i().createElement("div",{className:"jump-nav-label"},a(x.K.SCENARIO_CENTER)),i().createElement(c.Bj,{lib:"antd",icon:"right",theme:"outlined"}))),I&&i().createElement("div",{className:"jump-nav"},i().createElement(c.EM,{type:"plain",url:"/portal/solution"},i().createElement("div",{className:"jump-nav-label"},a(x.K.SOLUTIONS)),i().createElement(c.Bj,{lib:"antd",icon:"right",theme:"outlined"}))),R&&i().createElement("div",{className:"jump-nav"},i().createElement(c.EM,{type:"plain",url:"/developers"},i().createElement("div",{className:"jump-nav-label"},a(x.K.OPEN_PLATFORM)),i().createElement(c.Bj,{lib:"antd",icon:"right",theme:"outlined"})))),i().createElement("div",{className:o()("content",{loading:F})},i().createElement(k,{loading:F}),"#all"!==A&&i().createElement("div",{className:"platform-category-name"},null==H?void 0:H.name),i().createElement("div",{className:"search-box",onClick:w},i().createElement(c.Bj,{lib:"fa",icon:"magnifying-glass",className:"search-icon"}),i().createElement("input",{ref:r,placeholder:a(x.K.SEARCH_PLACEHOLDER),value:M,onChange:L,className:"search-input"}),i().createElement(c.Bj,{lib:"antd",theme:"filled",icon:"close-circle",className:o()("search-clear",{searching:$}),onClick:D})),"#all"===A&&i().createElement("div",{className:o()({empty:0===K.length})},i().createElement("div",{className:"recent-visits-label"},a(x.K.RECENT_VISITS)),i().createElement("ul",{className:"recent-visits"},K.map(((e,t)=>i().createElement("li",{key:t},i().createElement(c.EM,(0,n.A)({onClick:()=>P(e)},"app"===e.type?{url:e.url}:{href:e.url,target:"_blank"}),i().createElement("span",null,e.name))))))),"#all"===A&&i().createElement("ul",{className:o()("menu-groups",{"menu-groups-en":N})},B.map((e=>i().createElement(s.r,{key:e.name,name:e.localeName,items:e.items})))),"#all"!==A&&i().createElement("ul",{className:o()("platform-items",{empty:0===(null==H?void 0:H.items.length)})},null==H?void 0:H.items.map(((e,t)=>i().createElement(v,{item:e,key:t})))))))}function k(e){let{loading:t}=e;return t&&i().createElement("div",{className:"spinner"},i().createElement(c.Bj,{lib:"fa",icon:"spinner",spinning:!0}))}(0,b.initializeReactI18n)(x.NS,x.I)}}]);
2
- //# sourceMappingURL=9149.6aa0810a.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/9149.6aa0810a.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/host-context.css","webpack:///./src/launchpad-button-v2/PlatformCategory.shadow.css","webpack:///./src/launchpad-button-v2/styles.shadow.css","webpack:///./src/launchpad-button-v2/LaunchpadContext.ts","webpack:///./src/launchpad-button-v2/Launchpad.shadow.css","webpack:///./src/launchpad-button-v2/MenuGroup.tsx","webpack:///./src/launchpad-button-v2/host-context.css?59a8","webpack:///./src/launchpad-button-v2/PlatformCategory.tsx","webpack:///./src/launchpad-button-v2/Launchpad.tsx"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--eo-launchpad-v2-background:#fff;--eo-launchpad-v2-menu-icon-color:#8c8c8c}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--eo-launchpad-v2-background:#26262a;--eo-launchpad-v2-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, `.platform-category-name,\n.platform-category-sidebar-menu-item-label,\n.platform-item-name,\n.platform-item-description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.platform-category-sidebar-menu-item{display:flex;gap:8px;align-items:center;padding:0px 12px 0px 16px}.platform-category-sidebar-menu-item > eo-link{display:block;min-width:0px;color:var(--color-header-text);cursor:pointer}.platform-category-sidebar-menu-item > eo-link:hover,\n.platform-category-sidebar-menu-item\n > eo-link:hover\n .platform-category-sidebar-menu-icon{color:var(--color-brand-hover)}.platform-category-sidebar-menu-item > eo-link.active,\n.platform-category-sidebar-menu-item\n > eo-link.active\n .platform-category-sidebar-menu-icon{color:var(--color-brand-active)}.platform-category-sidebar-menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px}.platform-category-sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.platform-category-name{font-size:18px;font-weight:500;color:var(--text-color-secondary);flex-shrink:0}.platform-items{display:grid;grid-template-columns:repeat(2,1fr);gap:0 54px}.platform-items > li{min-width:0}.platform-items > li > eo-link{width:100%;cursor:pointer}.platform-item{padding:12px 0;display:flex;flex-direction:column}.platform-item:hover .platform-item-icon,\n.platform-item:hover .platform-item-name{color:var(--color-brand-hover)}.platform-item-title{display:flex;align-items:center;margin-bottom:4px}.platform-item-icon{margin-right:8px;font-size:14px;color:var(--text-color-secondary);flex-shrink:0}.platform-item-name{font-weight:500;color:var(--text-color-title);line-height:18px}.platform-item-description{margin-left:22px;color:var(--text-color-secondary);line-height:18px}`, \"\"]);\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;width:32px;height:32px;--eo-launchpad-v2-max-height:calc(100vh - var(--app-bar-height) - 36px)}:host([hidden]){display:none}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:3px}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1110px;max-width:calc(100vw - 100px);height:var(--eo-launchpad-v2-max-height);background-color:var(--eo-launchpad-v2-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:190px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-size:205px 205px;background-repeat:no-repeat;background-position:left 52px bottom 27px}.sidebar > *:not(:last-child){border-bottom:1px solid var(--stroke-color-default)}.quick-nav-label,\n.platform-nav-label,\n.jump-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:auto;white-space:normal;word-break:break-word;width:90px}.recent-visits span{width:100%}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits,\n.platform-items{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link,\n.recent-visits eo-link{display:block;min-width:0;height:100%}.sidebar-menu-item > eo-link::part(link),\n.menu-item > eo-link::part(link){display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.sidebar-menu-item{padding:0 12px 0 16px;justify-content:space-between}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.union{flex:1;display:flex;flex-direction:column;overflow-y:auto}.quick-nav,\n.platform-nav{display:flex;flex-direction:column;padding:20px 0 24px}.platform-nav{padding:0 0 24px}.quick-nav-label,\n.platform-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.quick-nav-menu,\n.platform-nav-menu{flex:1}.jump-nav > eo-link{display:block;cursor:pointer}.jump-nav > eo-link::part(link){padding:10px 16px;display:flex;justify-content:space-between;align-items:center}.jump-nav-label{flex:1;color:var(--color-header-text);font-weight:500}.jump-nav > eo-icon{font-size:14px;color:var(--text-color-default)}.content{flex:1;padding:20px 24px 24px;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;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)}.menu-groups,\n.recent-visits{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-groups-en{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.menu-groups-en .menu-item-label{width:190px}.sidebar-en{width:220px}.launchpad-en{width:1210px}.platform-nav-label-en{width:110px}.sidebar-en .sidebar-menu-item .menu-item-label{width:140px}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px;width:100%}.sidebar-menu-item,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--eo-launchpad-v2-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-remove,\n.menu-item-star{cursor:pointer}.menu-item-remove,\n.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.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)}.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)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;gap:8px}.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:100%;padding:0 8px}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}@supports not (inset: 0){.content,\n .search-box,\n .sidebar-menu,\n .menu,\n .sub-menu,\n .sidebar-menu-item,\n .menu-item:not(.folder),\n .sidebar-menu-item > eo-link::part(link),\n .menu-item > eo-link::part(link){gap:0}.sidebar-menu > :not(:first-child),\n .menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .sidebar-menu-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}.content > :not(:last-child){margin-bottom:24px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import React from \"react\";\nimport type { MenuItemDataLink, MenuItemDataNormal } from \"./interfaces\";\n\nexport interface LaunchpadContextData {\n searching: boolean;\n loadingFavorites: boolean;\n readonly?: boolean;\n pushRecentVisit(item: MenuItemDataNormal): void;\n toggleStar(item: MenuItemDataNormal | MenuItemDataLink): void;\n isStarred(item: MenuItemDataNormal): boolean;\n}\n\nexport const LaunchpadsContext = React.createContext<LaunchpadContextData>(\n {} as LaunchpadContextData\n);\n\nexport const useLaunchpadContext = (): LaunchpadContextData =>\n React.useContext(LaunchpadsContext);\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, `.fadeEnter{opacity:0;transform:scale(0.95)}.fadeEnterActive{opacity:1;transform:translateX(0);transition:opacity 100ms ease-out,transform 100ms ease-out}.fadeExit{transform:translate(-30px,0)}.fadeExitActive{transform:translate(-100%,0);transition:transform 300ms ease-out}.fadeExitDone{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { pick } from \"lodash\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadContext } from \"./LaunchpadContext\";\nimport type {\n MenuItemData,\n MenuItemDataNormal,\n SidebarMenuItemData,\n} from \"./interfaces\";\nimport { Target } from \"@next-bricks/basic/link\";\nimport { initializeReactI18n, useTranslation } from \"@next-core/i18n/react\";\nimport { K, NS, locales } from \"./i18n\";\n\ninitializeReactI18n(NS, locales);\n\nexport interface MenuGroupProps {\n name: string;\n items: MenuItemData[];\n}\n\nexport function MenuGroup({ name, items }: MenuGroupProps) {\n return (\n <li className=\"menu-group\">\n <div className=\"menu-group-label\">{name}</div>\n <ul className=\"menu\">\n {items.map((item) =>\n item.type === \"dir\" ? (\n <MenuItemFolder\n key={`${item.type}-${item.id}`}\n name={item.localeName as string}\n items={item.items}\n />\n ) : (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n item: MenuItemDataNormal;\n}\n\nfunction MenuItem({ item }: MenuItemProps) {\n const { t } = useTranslation(NS);\n const { loadingFavorites, readonly, pushRecentVisit, toggleStar, isStarred } =\n useLaunchpadContext();\n\n const starred = useMemo(() => isStarred(item), [isStarred, item]);\n\n const handleStarClick = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n const handleClick = useCallback(() => {\n pushRecentVisit(item);\n }, [item, pushRecentVisit]);\n\n return (\n <li\n className={classNames(\"menu-item\", {\n starred,\n \"can-star\": !loadingFavorites,\n })}\n >\n <WrappedLink\n onClick={handleClick}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n })}\n >\n <WrappedIcon\n className=\"menu-icon\"\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(item.menuIcon?.lib && item.menuIcon.icon\n ? (pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{item.localeName}</span>\n </WrappedLink>\n {!readonly && (\n <WrappedIcon\n lib=\"fa\"\n prefix={starred ? \"fas\" : \"far\"}\n icon=\"star\"\n className=\"menu-item-star\"\n title={(starred ? t(K.UNFAVORITE) : t(K.FAVORITE)) as string}\n onClick={handleStarClick}\n data-testid=\"menu-item-star\"\n />\n )}\n </li>\n );\n}\n\nexport interface SidebarMenuItemProps {\n item: SidebarMenuItemData;\n target?: Target;\n}\n\nexport function SidebarMenuItem({ item, target }: SidebarMenuItemProps) {\n const { readonly, pushRecentVisit, toggleStar } = useLaunchpadContext();\n\n const handleClick = useCallback(() => {\n if (item.type !== \"link\") {\n pushRecentVisit(item);\n }\n }, [item, pushRecentVisit]);\n\n const handleRemoveStar = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n return (\n <li className=\"sidebar-menu-item\">\n <WrappedLink\n onClick={handleClick}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n })}\n {...(target\n ? {\n target,\n }\n : null)}\n >\n <WrappedIcon\n className={`sidebar-menu-icon`}\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(item.menuIcon?.lib && item.menuIcon.icon\n ? (pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n {!readonly && (\n <WrappedIcon\n lib=\"fa\"\n icon=\"xmark\"\n className=\"menu-item-remove\"\n onClick={handleRemoveStar}\n />\n )}\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n name: string;\n items: MenuItemDataNormal[];\n}\n\nfunction MenuItemFolder({ name, items }: MenuItemFolderProps) {\n const { searching } = useLaunchpadContext();\n const [expanded, setExpanded] = useState(false);\n const [searchingExpanded, setSearchingExpanded] = useState(false);\n\n const toggle = useCallback(() => {\n // Use separated expanded states for searching and non-searching.\n if (searching) {\n setSearchingExpanded((previous) => !previous);\n } else {\n setExpanded((previous) => !previous);\n }\n }, [searching]);\n\n useEffect(() => {\n // Each time when start searching, set it as expanded.\n setSearchingExpanded(true);\n }, [searching]);\n\n const actualExpanded = searching ? searchingExpanded : expanded;\n\n return (\n <li className=\"menu-item folder\">\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\">{name}</span>\n <WrappedIcon\n lib=\"antd\"\n icon={actualExpanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n <ul className={classNames(\"sub-menu\", { expanded: actualExpanded })}>\n {items.map((item) => (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n ))}\n </ul>\n </li>\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","import React from \"react\";\nimport { WrappedLink, WrappedIcon } from \"./wrapped-bricks\";\nimport { MenuItemDataNormal, PlatformCategoryItem } from \"./interfaces\";\nimport { pick } from \"lodash\";\nimport classNames from \"classnames\";\n\nexport interface PlatformCategorySidebarMenuItemProps {\n item: PlatformCategoryItem;\n active?: boolean;\n onClick?: (item: PlatformCategoryItem) => void;\n}\n\nexport function PlatformCategorySidebarMenuItem({\n item,\n active,\n onClick,\n}: PlatformCategorySidebarMenuItemProps) {\n return (\n <li className=\"platform-category-sidebar-menu-item\">\n <WrappedLink\n type=\"plain\"\n className={classNames({ active })}\n onClick={() => onClick?.(item)}\n >\n <WrappedIcon\n className={\"platform-category-sidebar-menu-icon\"}\n lib=\"easyops\"\n category=\"second-menu\"\n icon=\"serve-second-menu\"\n {...(item.icon?.lib && item.icon.icon\n ? (pick(item.icon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"platform-category-sidebar-menu-item-label\">\n {item.name}\n </span>\n </WrappedLink>\n </li>\n );\n}\n\nexport interface PlatformItemProps {\n item: MenuItemDataNormal;\n}\n\nexport function PlatformItem({ item }: PlatformItemProps) {\n return (\n <li>\n <WrappedLink\n type=\"plain\"\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <div className=\"platform-item\">\n <div className=\"platform-item-title\">\n <WrappedIcon\n className=\"platform-item-icon\"\n lib=\"easyops\"\n category=\"third-menu\"\n icon=\"deploy-orchestration-tasks-third-menu\"\n {...(item.menuIcon?.lib && item.menuIcon.icon\n ? (pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <div className=\"platform-item-name\">{item.name}</div>\n </div>\n <div className=\"platform-item-description\">{item.description}</div>\n </div>\n </WrappedLink>\n </li>\n );\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadInfo } from \"./useLaunchpadInfo.js\";\nimport { MenuGroup, SidebarMenuItem } from \"./MenuGroup.js\";\nimport { LaunchpadsContext } from \"./LaunchpadContext.js\";\nimport {\n FavMenuItem,\n PlatformCategoryItem,\n SidebarMenuItemData,\n} from \"./interfaces\";\nimport {\n PlatformItem,\n PlatformCategorySidebarMenuItem,\n} from \"./PlatformCategory\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\nimport { initializeReactI18n, useTranslation } from \"@next-core/i18n/react\";\nimport { K, NS, locales } from \"./i18n\";\nimport { i18n, i18nText } from \"@next-core/i18n\";\n\ninitializeReactI18n(NS, locales);\n\nexport function Launchpad({ active }: { active?: boolean }) {\n const { t } = useTranslation(NS);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const [favorites, setFavorites] = useState<FavMenuItem[]>([]);\n const isEn = i18n.language && i18n.language.split(\"-\")[0] === \"en\";\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n const [platform, setPlatform] = useState(\"#all\");\n\n const showPlatformCategory = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"launchpad-show-platform-category\"],\n []\n );\n\n const showScenarioCenter = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"launchpad-show-scenario-center\"],\n []\n );\n\n const showSolutionCenter = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"launchpad-show-solution-center\"],\n []\n );\n\n const showOpenPlatform = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"launchpad-show-open-platform\"],\n []\n );\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n favorites: _favorites,\n loadingFavorites,\n recentVisits,\n pushRecentVisit,\n toggleStar,\n isStarred,\n platformCategories,\n } = useLaunchpadInfo(active);\n const searching = !!q;\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 useEffect(() => {\n if (active) {\n searchInputRef.current?.focus();\n }\n }, [active]);\n\n const handlePlatformCategoryClick = useCallback(\n (item: PlatformCategoryItem) => {\n setPlatform(item.id);\n },\n []\n );\n\n const curCategory = useMemo(() => {\n return platformCategories.find((v) => v.id === platform);\n }, [platform, platformCategories]);\n\n useEffect(() => {\n if (_favorites.length > favorites.length) {\n // 新增无需等待直接更新列表 \n setFavorites(_favorites);\n } else {\n // 删除操作需要等待动画执行完后才更新列表数据\n setTimeout(() => {\n setFavorites(_favorites);\n }, 300);\n }\n }, [_favorites, favorites.length]);\n\n return (\n <div className={classNames(\"launchpad\", { active, \"launchpad-en\": isEn })}>\n <LaunchpadsContext.Provider\n value={{\n searching,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <div className={classNames(\"sidebar\", { \"sidebar-en\": isEn })}>\n <div className=\"union\">\n <div className=\"quick-nav\">\n <div className=\"quick-nav-label\">{t(K.QUICK_ACCESS)}</div>\n {/* <Loading loading={loading || loadingFavorites} /> */}\n <TransitionGroup>\n <ul className=\"sidebar-menu quick-nav-menu\">\n {favorites.map((item, index) => (\n <CSSTransition\n key={index}\n timeout={300}\n in={!!_favorites.find((i) => i.id === item.id)}\n classNames={{\n enter: \"fadeEnter\",\n enterActive: \"fadeEnterActive\",\n exit: \"fadeExit\",\n exitActive: \"fadeExitActive\",\n exitDone: \"fadeExitDone\",\n }}\n >\n <SidebarMenuItem\n key={index}\n item={item as SidebarMenuItemData}\n />\n </CSSTransition>\n ))}\n </ul>\n </TransitionGroup>\n </div>\n\n {showPlatformCategory && (\n <div className=\"platform-nav\">\n <div className={classNames(\"platform-nav-label\", { \"platform-nav-label-en\": isEn })}>{t(K.PLATFORM_BASE)}</div>\n <ul className=\"sidebar-menu platform-nav-menu\">\n {platformCategories.map((item, index) => (\n <PlatformCategorySidebarMenuItem\n key={index}\n onClick={handlePlatformCategoryClick}\n item={item}\n active={platform === item.id}\n />\n ))}\n </ul>\n </div>\n )}\n </div>\n {showScenarioCenter && (\n <div className=\"jump-nav\">\n <WrappedLink type=\"plain\" url={\"/portal/scenario\"}>\n <div className=\"jump-nav-label\">{t(K.SCENARIO_CENTER)}</div>\n <WrappedIcon lib=\"antd\" icon=\"right\" theme=\"outlined\" />\n </WrappedLink>\n </div>\n )}\n\n {showSolutionCenter && (\n <div className=\"jump-nav\">\n <WrappedLink type=\"plain\" url={\"/portal/solution\"}>\n <div className=\"jump-nav-label\">{t(K.SOLUTIONS)}</div>\n <WrappedIcon lib=\"antd\" icon=\"right\" theme=\"outlined\" />\n </WrappedLink>\n </div>\n )}\n {showOpenPlatform && (\n <div className=\"jump-nav\">\n <WrappedLink type=\"plain\" url={\"/developers\"}>\n <div className=\"jump-nav-label\">{t(K.OPEN_PLATFORM)}</div>\n <WrappedIcon lib=\"antd\" icon=\"right\" theme=\"outlined\" />\n </WrappedLink>\n </div>\n )}\n </div>\n <div className={classNames(\"content\", { loading })}>\n <Loading loading={loading} />\n {platform !== \"#all\" && (\n <div className=\"platform-category-name\">{curCategory?.name}</div>\n )}\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 />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n />\n </div>\n {platform === \"#all\" && (\n <div className={classNames({ empty: recentVisits.length === 0 })}>\n <div className=\"recent-visits-label\">{t(K.RECENT_VISITS)}</div>\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 ? { url: item.url }\n : { href: item.url, target: \"_blank\" })}\n >\n <span>{item.name}</span>\n </WrappedLink>\n </li>\n ))}\n </ul>\n </div>\n )}\n {platform === \"#all\" && (\n <ul\n className={classNames(\"menu-groups\", { \"menu-groups-en\": isEn })}\n >\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.localeName as string}\n items={group.items}\n />\n ))}\n </ul>\n )}\n {platform !== \"#all\" && (\n <ul\n className={classNames(\"platform-items\", {\n empty: curCategory?.items.length === 0,\n })}\n >\n {curCategory?.items.map((item, index) => (\n <PlatformItem item={item} key={index} />\n ))}\n </ul>\n )}\n </div>\n </LaunchpadsContext.Provider>\n </div>\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}\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","toString","LaunchpadsContext","React","useLaunchpadContext","MenuGroup","_ref","name","items","className","map","item","type","MenuItemFolder","key","localeName","MenuItem","_ref2","_item$menuIcon","t","useTranslation","NS","loadingFavorites","readonly","pushRecentVisit","toggleStar","isStarred","starred","useMemo","handleStarClick","useCallback","handleClick","classNames","WrappedLink","_extends","onClick","url","href","WrappedIcon","lib","icon","menuIcon","pick","prefix","title","K","UNFAVORITE","FAVORITE","SidebarMenuItem","_ref3","_item$menuIcon2","target","handleRemoveStar","_ref4","searching","expanded","setExpanded","useState","searchingExpanded","setSearchingExpanded","toggle","previous","useEffect","actualExpanded","initializeReactI18n","locales","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","PlatformCategorySidebarMenuItem","_item$icon","active","category","PlatformItem","description","Launchpad","searchInputRef","useRef","favorites","setFavorites","isEn","i18n","language","split","handleClickSearchBox","_searchInputRef$curre","current","focus","platform","setPlatform","showPlatformCategory","_getRuntime","getRuntime","getFeatureFlags","showScenarioCenter","_getRuntime2","showSolutionCenter","_getRuntime3","showOpenPlatform","_getRuntime4","loading","q","setQ","menuGroups","_favorites","recentVisits","platformCategories","useLaunchpadInfo","handleSearch","e","value","clearSearch","_searchInputRef$curre2","handlePlatformCategoryClick","curCategory","find","v","length","setTimeout","Provider","QUICK_ACCESS","TransitionGroup","index","CSSTransition","timeout","in","i","enter","enterActive","exit","exitActive","exitDone","PLATFORM_BASE","SCENARIO_CENTER","theme","SOLUTIONS","OPEN_PLATFORM","Loading","ref","placeholder","SEARCH_PLACEHOLDER","onChange","empty","RECENT_VISITS","group","spinning"],"sourceRoot":""}