@next-bricks/nav 0.9.5 → 0.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/bricks.json +18 -18
  2. package/dist/chunks/2108.80e8c3db.js +2 -0
  3. package/dist/chunks/2108.80e8c3db.js.map +1 -0
  4. package/dist/chunks/{3458.073732ce.js → 3458.763e9cba.js} +2 -2
  5. package/dist/chunks/{8691.e63ca3d2.js.map → 3458.763e9cba.js.map} +1 -1
  6. package/dist/chunks/3556.4d471160.js +2 -0
  7. package/dist/chunks/{3556.124f67dd.js.map → 3556.4d471160.js.map} +1 -1
  8. package/dist/chunks/5381.b04e981c.js +2 -0
  9. package/dist/chunks/{5381.0e42999e.js.map → 5381.b04e981c.js.map} +1 -1
  10. package/dist/chunks/{5636.f8a78a72.js → 5636.bfbebc5c.js} +2 -2
  11. package/dist/chunks/{5636.f8a78a72.js.map → 5636.bfbebc5c.js.map} +1 -1
  12. package/dist/chunks/5951.a9b5d4f4.js +3 -0
  13. package/dist/chunks/{5951.90bbabea.js.map → 5951.a9b5d4f4.js.map} +1 -1
  14. package/dist/chunks/6205.0941831d.js +2 -0
  15. package/dist/chunks/{6205.ef7db407.js.map → 6205.0941831d.js.map} +1 -1
  16. package/dist/chunks/{6482.43778fc8.js → 6482.0233f6b3.js} +2 -2
  17. package/dist/chunks/{6482.43778fc8.js.map → 6482.0233f6b3.js.map} +1 -1
  18. package/dist/chunks/{6653.f362381f.js → 6653.2517488a.js} +2 -2
  19. package/dist/chunks/6653.2517488a.js.map +1 -0
  20. package/dist/chunks/6660.a82b89da.js +2 -0
  21. package/dist/chunks/{6660.c602b475.js.map → 6660.a82b89da.js.map} +1 -1
  22. package/dist/chunks/7164.e99820c6.js +2 -0
  23. package/dist/chunks/{7164.eadd694e.js.map → 7164.e99820c6.js.map} +1 -1
  24. package/dist/chunks/7632.09ef6cfd.js +2 -0
  25. package/dist/chunks/{7632.51556511.js.map → 7632.09ef6cfd.js.map} +1 -1
  26. package/dist/chunks/{8498.a28abe48.js → 8498.8f868bed.js} +2 -2
  27. package/dist/chunks/8498.8f868bed.js.map +1 -0
  28. package/dist/chunks/8561.cf7fa894.js +2 -0
  29. package/dist/chunks/8561.cf7fa894.js.map +1 -0
  30. package/dist/chunks/{8691.e63ca3d2.js → 8691.e40a405e.js} +2 -2
  31. package/dist/chunks/{3458.073732ce.js.map → 8691.e40a405e.js.map} +1 -1
  32. package/dist/chunks/9102.5753212f.js +3 -0
  33. package/dist/chunks/9102.5753212f.js.map +1 -0
  34. package/dist/chunks/easyops-navbar-alerts.30421c13.js +2 -0
  35. package/dist/chunks/{easyops-navbar-alerts.fa60bb70.js.map → easyops-navbar-alerts.30421c13.js.map} +1 -1
  36. package/dist/chunks/{eo-app-bar-wrapper.7d8078ce.js → eo-app-bar-wrapper.ab56f5e0.js} +3 -3
  37. package/dist/chunks/{eo-app-bar-wrapper.7d8078ce.js.map → eo-app-bar-wrapper.ab56f5e0.js.map} +1 -1
  38. package/dist/chunks/eo-frame-breadcrumb.6ba70210.js +2 -0
  39. package/dist/chunks/{eo-frame-breadcrumb.f2a2e95c.js.map → eo-frame-breadcrumb.6ba70210.js.map} +1 -1
  40. package/dist/chunks/eo-launchpad-button-v2.a9c5a09c.js +3 -0
  41. package/dist/chunks/{eo-launchpad-button-v2.be462f60.js.map → eo-launchpad-button-v2.a9c5a09c.js.map} +1 -1
  42. package/dist/chunks/{eo-launchpad-button.b3c99c9f.js → eo-launchpad-button.61e98e00.js} +2 -2
  43. package/dist/chunks/{eo-launchpad-button.b3c99c9f.js.map → eo-launchpad-button.61e98e00.js.map} +1 -1
  44. package/dist/chunks/{eo-launchpad-quick-access.85d36072.js → eo-launchpad-quick-access.dd62321c.js} +3 -3
  45. package/dist/chunks/{eo-launchpad-quick-access.85d36072.js.map → eo-launchpad-quick-access.dd62321c.js.map} +1 -1
  46. package/dist/chunks/{eo-launchpad-recent-visits.17e740c5.js → eo-launchpad-recent-visits.d9b94328.js} +3 -3
  47. package/dist/chunks/{eo-launchpad-recent-visits.17e740c5.js.map → eo-launchpad-recent-visits.d9b94328.js.map} +1 -1
  48. package/dist/chunks/eo-nav-menu.c1409276.js +2 -0
  49. package/dist/chunks/{eo-nav-menu.639feb5c.js.map → eo-nav-menu.c1409276.js.map} +1 -1
  50. package/dist/chunks/{eo-search-launchpad.9d81749e.js → eo-search-launchpad.d3ff5389.js} +2 -2
  51. package/dist/chunks/{eo-search-launchpad.9d81749e.js.map → eo-search-launchpad.d3ff5389.js.map} +1 -1
  52. package/dist/chunks/eo-sidebar-menu-group.48c8fcfe.js +3 -0
  53. package/dist/chunks/{eo-sidebar-menu-group.ab7d3a0d.js.map → eo-sidebar-menu-group.48c8fcfe.js.map} +1 -1
  54. package/dist/chunks/{eo-sidebar-menu-item.ffaa073d.js → eo-sidebar-menu-item.f0618eae.js} +2 -2
  55. package/dist/chunks/{eo-sidebar-menu-item.ffaa073d.js.map → eo-sidebar-menu-item.f0618eae.js.map} +1 -1
  56. package/dist/chunks/eo-sidebar-menu-submenu.c91b05ea.js +3 -0
  57. package/dist/chunks/{eo-sidebar-menu-submenu.d62608cc.js.map → eo-sidebar-menu-submenu.c91b05ea.js.map} +1 -1
  58. package/dist/chunks/eo-sidebar-menu.c9528614.js +2 -0
  59. package/dist/chunks/{eo-sidebar-menu.084e4c74.js.map → eo-sidebar-menu.c9528614.js.map} +1 -1
  60. package/dist/chunks/eo-sidebar-sub-menu.d3cf4519.js +3 -0
  61. package/dist/chunks/{eo-sidebar-sub-menu.170d5571.js.map → eo-sidebar-sub-menu.d3cf4519.js.map} +1 -1
  62. package/dist/chunks/eo-sidebar.4d6738bc.js +3 -0
  63. package/dist/chunks/{eo-sidebar.71b94d5f.js.map → eo-sidebar.4d6738bc.js.map} +1 -1
  64. package/dist/chunks/launchpad-config.ed43ee70.js +3 -0
  65. package/dist/chunks/{launchpad-config.26ce1aba.js.map → launchpad-config.ed43ee70.js.map} +1 -1
  66. package/dist/chunks/main.42938b1c.js +2 -0
  67. package/dist/chunks/main.42938b1c.js.map +1 -0
  68. package/dist/examples.json +24 -0
  69. package/dist/index.ccf3d5e6.js +2 -0
  70. package/dist/index.ccf3d5e6.js.map +1 -0
  71. package/dist/manifest.json +51 -51
  72. package/dist/types.json +55 -55
  73. package/docs/eo-app-bar-wrapper.md +46 -0
  74. package/docs/eo-frame-breadcrumb.md +14 -0
  75. package/docs/eo-sidebar-menu-group.md +38 -0
  76. package/docs/eo-sidebar-menu-item.md +17 -0
  77. package/docs/eo-sidebar-menu-submenu.md +42 -0
  78. package/docs/eo-sidebar-menu.md +93 -0
  79. package/docs/eo-sidebar-sub-menu.md +100 -0
  80. package/docs/eo-sidebar.md +100 -0
  81. package/package.json +2 -2
  82. package/dist/chunks/2108.7a0883a8.js +0 -2
  83. package/dist/chunks/2108.7a0883a8.js.map +0 -1
  84. package/dist/chunks/3556.124f67dd.js +0 -2
  85. package/dist/chunks/4417.743ff94f.js +0 -2
  86. package/dist/chunks/4417.743ff94f.js.map +0 -1
  87. package/dist/chunks/5381.0e42999e.js +0 -2
  88. package/dist/chunks/5951.90bbabea.js +0 -3
  89. package/dist/chunks/6205.ef7db407.js +0 -2
  90. package/dist/chunks/6653.f362381f.js.map +0 -1
  91. package/dist/chunks/6660.c602b475.js +0 -2
  92. package/dist/chunks/7164.eadd694e.js +0 -2
  93. package/dist/chunks/7632.51556511.js +0 -2
  94. package/dist/chunks/8498.a28abe48.js.map +0 -1
  95. package/dist/chunks/9102.db2516db.js +0 -3
  96. package/dist/chunks/9102.db2516db.js.map +0 -1
  97. package/dist/chunks/easyops-navbar-alerts.fa60bb70.js +0 -2
  98. package/dist/chunks/eo-frame-breadcrumb.f2a2e95c.js +0 -2
  99. package/dist/chunks/eo-launchpad-button-v2.be462f60.js +0 -3
  100. package/dist/chunks/eo-nav-menu.639feb5c.js +0 -2
  101. package/dist/chunks/eo-sidebar-menu-group.ab7d3a0d.js +0 -3
  102. package/dist/chunks/eo-sidebar-menu-submenu.d62608cc.js +0 -3
  103. package/dist/chunks/eo-sidebar-menu.084e4c74.js +0 -2
  104. package/dist/chunks/eo-sidebar-sub-menu.170d5571.js +0 -3
  105. package/dist/chunks/eo-sidebar.71b94d5f.js +0 -3
  106. package/dist/chunks/launchpad-config.26ce1aba.js +0 -3
  107. package/dist/chunks/main.842837fa.js +0 -2
  108. package/dist/chunks/main.842837fa.js.map +0 -1
  109. package/dist/index.353bfdc3.js +0 -2
  110. package/dist/index.353bfdc3.js.map +0 -1
  111. /package/dist/chunks/{5951.90bbabea.js.LICENSE.txt → 5951.a9b5d4f4.js.LICENSE.txt} +0 -0
  112. /package/dist/chunks/{9102.db2516db.js.LICENSE.txt → 9102.5753212f.js.LICENSE.txt} +0 -0
  113. /package/dist/chunks/{eo-app-bar-wrapper.7d8078ce.js.LICENSE.txt → eo-app-bar-wrapper.ab56f5e0.js.LICENSE.txt} +0 -0
  114. /package/dist/chunks/{eo-launchpad-button-v2.be462f60.js.LICENSE.txt → eo-launchpad-button-v2.a9c5a09c.js.LICENSE.txt} +0 -0
  115. /package/dist/chunks/{eo-launchpad-quick-access.85d36072.js.LICENSE.txt → eo-launchpad-quick-access.dd62321c.js.LICENSE.txt} +0 -0
  116. /package/dist/chunks/{eo-launchpad-recent-visits.17e740c5.js.LICENSE.txt → eo-launchpad-recent-visits.d9b94328.js.LICENSE.txt} +0 -0
  117. /package/dist/chunks/{eo-sidebar-menu-group.ab7d3a0d.js.LICENSE.txt → eo-sidebar-menu-group.48c8fcfe.js.LICENSE.txt} +0 -0
  118. /package/dist/chunks/{eo-sidebar-menu-submenu.d62608cc.js.LICENSE.txt → eo-sidebar-menu-submenu.c91b05ea.js.LICENSE.txt} +0 -0
  119. /package/dist/chunks/{eo-sidebar-sub-menu.170d5571.js.LICENSE.txt → eo-sidebar-sub-menu.d3cf4519.js.LICENSE.txt} +0 -0
  120. /package/dist/chunks/{eo-sidebar.71b94d5f.js.LICENSE.txt → eo-sidebar.4d6738bc.js.LICENSE.txt} +0 -0
  121. /package/dist/chunks/{launchpad-config.26ce1aba.js.LICENSE.txt → launchpad-config.ed43ee70.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[3458,8691],{3458:(e,t,r)=>{function n(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function(o,a){if("string"==typeof t?o.name===t:t.includes(o.name)){for(var i=[],s=1;s<=r;s++){var c=a[a.length-s];if("MemberExpression"===(null==c?void 0:c.node.type)&&"object"===c.key){var u=c.node;u.computed||"Identifier"!==u.property.type?u.computed&&"Literal"===u.property.type&&"string"==typeof u.property.value?i.push(n?"".concat(o.name,".").concat(u.property.value):u.property.value):e.hasNonStaticUsage=!0:i.push(n?"".concat(o.name,".").concat(u.property.name):u.property.name)}else e.hasNonStaticUsage=!0}i.length===r&&e.usedProperties.add(i.join("."))}}}function o(e,t){return function(r,n,o){if(n.name===e){var a=o[o.length-1],i=o[o.length-2];if("CallExpression"===(null==i?void 0:i.node.type)&&"callee"===(null==i?void 0:i.key)&&"MemberExpression"===(null==a?void 0:a.node.type)&&"object"===a.key&&(a.node.computed?"Literal"===a.node.property.type&&a.node.property.value===t:"Identifier"===a.node.property.type&&a.node.property.name===t)){var s=i.node.arguments;if(s.length>0){var c=s[0];"Literal"===c.type&&"string"==typeof c.value?r.usedArgs.add(c.value):r.hasNonStaticUsage=!0}}}}}r.r(t),r.d(t,{beforeVisitGlobalMember:()=>n,collectAppGetMenuUsage:()=>a,collectInstalledAppsHasUsage:()=>i,collectMemberUsage:()=>p,collectMemberUsageInFunction:()=>g,createProviderClass:()=>c.createProviderClass,scanPermissionActionsInAny:()=>m,scanPermissionActionsInStoryboard:()=>b,strictCollectMemberUsage:()=>l,track:()=>d,trackAll:()=>f,traverseStoryboardExpressions:()=>u,traverseStoryboardFunction:()=>v,traverseStoryboardFunctions:()=>y,unwrapProvider:()=>c.unwrapProvider});var a=o("APP","getMenu"),i=o("INSTALLED_APPS","has"),s=r(4187),c=r(9171);function u(e,t,r){var n=new WeakSet,{matchExpressionString:o,visitNotMatchedExpressionString:a,visitNonExpressionString:i,visitObject:u}="string"==typeof r?{matchExpressionString:e=>e.includes(r)}:r;!function e(r){if("string"==typeof r)if((0,s.isEvaluable)(r))if(o(r))try{(0,s.preevaluate)(r,{withParent:!0,hooks:{beforeVisitGlobal(e,n){t(e,n,r)}}})}catch(e){console.error("Parse storyboard expression failed:",e)}else null==a||a(r);else null==i||i(r);else if((0,c.isObject)(r)){if(n.has(r))return;for(var l of(n.add(r),null==u||u(r),Array.isArray(r)?r:Object.values(r)))e(l)}}(e)}function l(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,{hasNonStaticUsage:n,nonStaticUsage:o,usedProperties:a}=p(e,t,r);if(n)throw new Error("Non-static usage of ".concat(t,' is prohibited, check your expression: "').concat(o,'"'));return a}function p(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,o={usedProperties:new Set,hasNonStaticUsage:!1},a=n(o,t,r);return u(e,((e,t,r)=>{a(e,t),o.hasNonStaticUsage&&(o.nonStaticUsage=r)}),t),o}function d(e,t,r){if(e.includes(t)){var o,a={usedProperties:new Set,hasNonStaticUsage:!1},{expression:i}=(0,s.preevaluate)(e,{withParent:!0,hooks:{beforeVisitGlobal:n(a,r)}});if("SequenceExpression"===i.type&&(o=i.expressions[0])&&"Literal"===o.type&&o.value===t){if(a.usedProperties.size>0)return a.usedProperties;console.warn('You are using "'.concat(t,'" but no `').concat(r,"` usage found in your expression: ").concat(JSON.stringify(e)))}}return!1}function f(e){if(e){var t={usedProperties:new Set,hasNonStaticUsage:!1};if((0,s.preevaluate)(e,{withParent:!0,hooks:{beforeVisitGlobal:n(t,["CTX","STATE","FORM_STATE"],1,!0)}}),t.usedProperties.size>0){var r=[...t.usedProperties],o={context:!1,state:!1,formState:!1},a={CTX:"context",STATE:"state",FORM_STATE:"formState"};return r.forEach((e=>{var[t,r]=e.split(".");o[a[t]]||(o[a[t]]=[]),o[a[t]].push(r)})),o}console.warn('You are using track all but no "CTX" or "STATE" or "FORM_STATE" usage found in your expression: '.concat(JSON.stringify(e)))}return!1}function y(e,t){if(Array.isArray(e))for(var r of e)v(r,t)}function v(e,t,r){try{(0,s.precookFunction)(e.source,{typescript:e.typescript,withParent:!0,hooks:{beforeVisitGlobal:t}})}catch(t){r||console.error('Parse storyboard function "'.concat(e.name,'" failed:'),t)}}function g(e,t,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a={usedProperties:new Set,hasNonStaticUsage:!1};if(v(e,n(a,t,o),r),a.hasNonStaticUsage&&!r)throw new Error("Non-static usage of ".concat(t,' is prohibited, check your function: "').concat(e.name,'"'));return a.usedProperties.delete(e.name),a.usedProperties}var h="PERMISSIONS",S="check";function b(e){var t,r=new Set,n=P(r),{customTemplates:o,functions:a}=null!==(t=e.meta)&&void 0!==t?t:{};return u([e.routes,o],n,h),y(a,n),Array.from(r)}function m(e){var t=new Set;return u(e,P(t),h),Array.from(t)}function P(e){return function(t,r){if(t.name===h){var n=r[r.length-1],o=r[r.length-2];if("CallExpression"===(null==o?void 0:o.node.type)&&"callee"===(null==o?void 0:o.key)&&"MemberExpression"===(null==n?void 0:n.node.type)&&"object"===n.key&&(n.node.computed?"Literal"===n.node.property.type&&n.node.property.value===S:"Identifier"===n.node.property.type&&n.node.property.name===S))for(var a of o.node.arguments)"Literal"===a.type&&"string"==typeof a.value&&e.add(a.value)}}}}}]);
2
- //# sourceMappingURL=3458.073732ce.js.map
1
+ "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[3458,8691],{3458:(e,t,r)=>{function n(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function(o,a){if("string"==typeof t?o.name===t:t.includes(o.name)){for(var i=[],s=1;s<=r;s++){var c=a[a.length-s];if("MemberExpression"===(null==c?void 0:c.node.type)&&"object"===c.key){var u=c.node;u.computed||"Identifier"!==u.property.type?u.computed&&"Literal"===u.property.type&&"string"==typeof u.property.value?i.push(n?"".concat(o.name,".").concat(u.property.value):u.property.value):e.hasNonStaticUsage=!0:i.push(n?"".concat(o.name,".").concat(u.property.name):u.property.name)}else e.hasNonStaticUsage=!0}i.length===r&&e.usedProperties.add(i.join("."))}}}function o(e,t){return function(r,n,o){if(n.name===e){var a=o[o.length-1],i=o[o.length-2];if("CallExpression"===(null==i?void 0:i.node.type)&&"callee"===(null==i?void 0:i.key)&&"MemberExpression"===(null==a?void 0:a.node.type)&&"object"===a.key&&(a.node.computed?"Literal"===a.node.property.type&&a.node.property.value===t:"Identifier"===a.node.property.type&&a.node.property.name===t)){var s=i.node.arguments;if(s.length>0){var c=s[0];"Literal"===c.type&&"string"==typeof c.value?r.usedArgs.add(c.value):r.hasNonStaticUsage=!0}}}}}r.r(t),r.d(t,{beforeVisitGlobalMember:()=>n,collectAppGetMenuUsage:()=>a,collectInstalledAppsHasUsage:()=>i,collectMemberUsage:()=>p,collectMemberUsageInFunction:()=>g,createProviderClass:()=>c.createProviderClass,scanPermissionActionsInAny:()=>m,scanPermissionActionsInStoryboard:()=>b,strictCollectMemberUsage:()=>l,track:()=>d,trackAll:()=>f,traverseStoryboardExpressions:()=>u,traverseStoryboardFunction:()=>v,traverseStoryboardFunctions:()=>y,unwrapProvider:()=>c.unwrapProvider});var a=o("APP","getMenu"),i=o("INSTALLED_APPS","has"),s=r(4187),c=r(2071);function u(e,t,r){var n=new WeakSet,{matchExpressionString:o,visitNotMatchedExpressionString:a,visitNonExpressionString:i,visitObject:u}="string"==typeof r?{matchExpressionString:e=>e.includes(r)}:r;!function e(r){if("string"==typeof r)if((0,s.isEvaluable)(r))if(o(r))try{(0,s.preevaluate)(r,{withParent:!0,hooks:{beforeVisitGlobal(e,n){t(e,n,r)}}})}catch(e){console.error("Parse storyboard expression failed:",e)}else null==a||a(r);else null==i||i(r);else if((0,c.isObject)(r)){if(n.has(r))return;for(var l of(n.add(r),null==u||u(r),Array.isArray(r)?r:Object.values(r)))e(l)}}(e)}function l(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,{hasNonStaticUsage:n,nonStaticUsage:o,usedProperties:a}=p(e,t,r);if(n)throw new Error("Non-static usage of ".concat(t,' is prohibited, check your expression: "').concat(o,'"'));return a}function p(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,o={usedProperties:new Set,hasNonStaticUsage:!1},a=n(o,t,r);return u(e,((e,t,r)=>{a(e,t),o.hasNonStaticUsage&&(o.nonStaticUsage=r)}),t),o}function d(e,t,r){if(e.includes(t)){var o,a={usedProperties:new Set,hasNonStaticUsage:!1},{expression:i}=(0,s.preevaluate)(e,{withParent:!0,hooks:{beforeVisitGlobal:n(a,r)}});if("SequenceExpression"===i.type&&(o=i.expressions[0])&&"Literal"===o.type&&o.value===t){if(a.usedProperties.size>0)return a.usedProperties;console.warn('You are using "'.concat(t,'" but no `').concat(r,"` usage found in your expression: ").concat(JSON.stringify(e)))}}return!1}function f(e){if(e){var t={usedProperties:new Set,hasNonStaticUsage:!1};if((0,s.preevaluate)(e,{withParent:!0,hooks:{beforeVisitGlobal:n(t,["CTX","STATE","FORM_STATE"],1,!0)}}),t.usedProperties.size>0){var r=[...t.usedProperties],o={context:!1,state:!1,formState:!1},a={CTX:"context",STATE:"state",FORM_STATE:"formState"};return r.forEach((e=>{var[t,r]=e.split(".");o[a[t]]||(o[a[t]]=[]),o[a[t]].push(r)})),o}console.warn('You are using track all but no "CTX" or "STATE" or "FORM_STATE" usage found in your expression: '.concat(JSON.stringify(e)))}return!1}function y(e,t){if(Array.isArray(e))for(var r of e)v(r,t)}function v(e,t,r){try{(0,s.precookFunction)(e.source,{typescript:e.typescript,withParent:!0,hooks:{beforeVisitGlobal:t}})}catch(t){r||console.error('Parse storyboard function "'.concat(e.name,'" failed:'),t)}}function g(e,t,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a={usedProperties:new Set,hasNonStaticUsage:!1};if(v(e,n(a,t,o),r),a.hasNonStaticUsage&&!r)throw new Error("Non-static usage of ".concat(t,' is prohibited, check your function: "').concat(e.name,'"'));return a.usedProperties.delete(e.name),a.usedProperties}var h="PERMISSIONS",S="check";function b(e){var t,r=new Set,n=P(r),{customTemplates:o,functions:a}=null!==(t=e.meta)&&void 0!==t?t:{};return u([e.routes,o],n,h),y(a,n),Array.from(r)}function m(e){var t=new Set;return u(e,P(t),h),Array.from(t)}function P(e){return function(t,r){if(t.name===h){var n=r[r.length-1],o=r[r.length-2];if("CallExpression"===(null==o?void 0:o.node.type)&&"callee"===(null==o?void 0:o.key)&&"MemberExpression"===(null==n?void 0:n.node.type)&&"object"===n.key&&(n.node.computed?"Literal"===n.node.property.type&&n.node.property.value===S:"Identifier"===n.node.property.type&&n.node.property.name===S))for(var a of o.node.arguments)"Literal"===a.type&&"string"==typeof a.value&&e.add(a.value)}}}}}]);
2
+ //# sourceMappingURL=3458.763e9cba.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/8691.e63ca3d2.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/beforeVisitGlobalMember.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberCallUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/track.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/collectMemberUsageInFunction.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/permissions.js"],"sourcesContent":["export function beforeVisitGlobalMember(usage, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var rememberObjectName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n return function beforeVisitGlobal(node, parent) {\n if (typeof objectName === \"string\" ? node.name === objectName : objectName.includes(node.name)) {\n var segments = [];\n for (var i = 1; i <= level; i++) {\n var memberParent = parent[parent.length - i];\n if ((memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\") {\n var memberNode = memberParent.node;\n if (!memberNode.computed && memberNode.property.type === \"Identifier\") {\n segments.push(rememberObjectName ? \"\".concat(node.name, \".\").concat(memberNode.property.name) : memberNode.property.name);\n } else if (memberNode.computed && memberNode.property.type === \"Literal\" && typeof memberNode.property.value === \"string\") {\n segments.push(rememberObjectName ? \"\".concat(node.name, \".\").concat(memberNode.property.value) : memberNode.property.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n if (segments.length === level) {\n usage.usedProperties.add(segments.join(\".\"));\n }\n }\n };\n}\n//# sourceMappingURL=beforeVisitGlobalMember.js.map","function collectMemberCallUsageFactory(object, property) {\n return function collectMemberCallUsage(usage, node, parent) {\n if (node.name === object) {\n var memberParent = parent[parent.length - 1];\n var callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === property : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === property)) {\n var args = callParent.node.arguments;\n if (args.length > 0) {\n var firstArg = args[0];\n if (firstArg.type === \"Literal\" && typeof firstArg.value === \"string\") {\n usage.usedArgs.add(firstArg.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n }\n }\n };\n}\nexport var collectAppGetMenuUsage = collectMemberCallUsageFactory(\"APP\", \"getMenu\");\nexport var collectInstalledAppsHasUsage = collectMemberCallUsageFactory(\"INSTALLED_APPS\", \"has\");\n//# sourceMappingURL=collectMemberCallUsage.js.map","import { isEvaluable, preevaluate } from \"@next-core/cook\";\nimport { isObject } from \"@next-core/utils/general\";\nexport function traverseStoryboardExpressions(data, beforeVisitGlobal,\n// If `options` is a string, it means the *keyword*.\noptions) {\n var memo = new WeakSet();\n var {\n matchExpressionString,\n visitNotMatchedExpressionString,\n visitNonExpressionString,\n visitObject\n } = typeof options === \"string\" ? {\n matchExpressionString: v => v.includes(options)\n } : options;\n function traverse(value) {\n if (typeof value === \"string\") {\n if (isEvaluable(value)) {\n if (matchExpressionString(value)) {\n try {\n preevaluate(value, {\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n beforeVisitGlobal(node, parent, value);\n }\n }\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Parse storyboard expression failed:\", error);\n }\n } else {\n visitNotMatchedExpressionString === null || visitNotMatchedExpressionString === void 0 || visitNotMatchedExpressionString(value);\n }\n } else {\n visitNonExpressionString === null || visitNonExpressionString === void 0 || visitNonExpressionString(value);\n }\n } else if (isObject(value)) {\n // Avoid call stack overflow.\n if (memo.has(value)) {\n return;\n }\n memo.add(value);\n visitObject === null || visitObject === void 0 || visitObject(value);\n for (var item of Array.isArray(value) ? value : Object.values(value)) {\n traverse(item);\n }\n }\n }\n traverse(data);\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nimport { traverseStoryboardExpressions } from \"./traverse.js\";\nexport function strictCollectMemberUsage(data, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var {\n hasNonStaticUsage,\n nonStaticUsage,\n usedProperties\n } = collectMemberUsage(data, objectName, level);\n if (hasNonStaticUsage) {\n throw new Error(\"Non-static usage of \".concat(objectName, \" is prohibited, check your expression: \\\"\").concat(nonStaticUsage, \"\\\"\"));\n }\n return usedProperties;\n}\nexport function collectMemberUsage(data, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n var beforeVisitGlobal = beforeVisitGlobalMember(usage, objectName, level);\n traverseStoryboardExpressions(data, (node, parent, expr) => {\n beforeVisitGlobal(node, parent);\n if (usage.hasNonStaticUsage) {\n usage.nonStaticUsage = expr;\n }\n }, objectName);\n return usage;\n}\n//# sourceMappingURL=collectMemberUsage.js.map","import { preevaluate } from \"@next-core/cook\";\nimport { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nexport function track(raw, trackText, variableName) {\n if (raw.includes(trackText)) {\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n var {\n expression\n } = preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, variableName)\n }\n });\n var trackCtxExp;\n if (expression.type === \"SequenceExpression\" && (trackCtxExp = expression.expressions[0]) && trackCtxExp.type === \"Literal\" && trackCtxExp.value === trackText) {\n if (usage.usedProperties.size > 0) {\n return usage.usedProperties;\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"You are using \\\"\".concat(trackText, \"\\\" but no `\").concat(variableName, \"` usage found in your expression: \").concat(JSON.stringify(raw)));\n }\n }\n }\n return false;\n}\nexport function trackAll(raw) {\n if (raw) {\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, [\"CTX\", \"STATE\", \"FORM_STATE\"], 1, true)\n }\n });\n if (usage.usedProperties.size > 0) {\n var usedProperites = [...usage.usedProperties];\n var result = {\n context: false,\n state: false,\n formState: false\n };\n var keyMap = {\n CTX: \"context\",\n STATE: \"state\",\n FORM_STATE: \"formState\"\n };\n usedProperites.forEach(item => {\n var [key, name] = item.split(\".\");\n if (!result[keyMap[key]]) {\n result[keyMap[key]] = [];\n }\n result[keyMap[key]].push(name);\n });\n return result;\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"You are using track all but no \\\"CTX\\\" or \\\"STATE\\\" or \\\"FORM_STATE\\\" usage found in your expression: \".concat(JSON.stringify(raw)));\n }\n }\n return false;\n}\n//# sourceMappingURL=track.js.map","import { precookFunction } from \"@next-core/cook\";\nexport function traverseStoryboardFunctions(functions, beforeVisitGlobal) {\n if (Array.isArray(functions)) {\n for (var fn of functions) {\n traverseStoryboardFunction(fn, beforeVisitGlobal);\n }\n }\n}\nexport function traverseStoryboardFunction(fn, beforeVisitGlobal, silentErrors) {\n try {\n precookFunction(fn.source, {\n typescript: fn.typescript,\n withParent: true,\n hooks: {\n beforeVisitGlobal\n }\n });\n } catch (error) {\n if (!silentErrors) {\n // eslint-disable-next-line no-console\n console.error(\"Parse storyboard function \\\"\".concat(fn.name, \"\\\" failed:\"), error);\n }\n }\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"../expressions/beforeVisitGlobalMember.js\";\nimport { traverseStoryboardFunction } from \"./traverse.js\";\nexport function collectMemberUsageInFunction(fn, objectName, silentErrors) {\n var level = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n traverseStoryboardFunction(fn, beforeVisitGlobalMember(usage, objectName, level), silentErrors);\n if (usage.hasNonStaticUsage && !silentErrors) {\n throw new Error(\"Non-static usage of \".concat(objectName, \" is prohibited, check your function: \\\"\").concat(fn.name, \"\\\"\"));\n }\n usage.usedProperties.delete(fn.name);\n return usage.usedProperties;\n}\n//# sourceMappingURL=collectMemberUsageInFunction.js.map","import { traverseStoryboardExpressions } from \"./expressions/index.js\";\nimport { traverseStoryboardFunctions } from \"./functions/index.js\";\nvar PERMISSIONS = \"PERMISSIONS\";\nvar check = \"check\";\nexport function scanPermissionActionsInStoryboard(storyboard) {\n var _storyboard$meta;\n var collection = new Set();\n var beforeVisitPermissions = beforeVisitPermissionsFactory(collection);\n var {\n customTemplates,\n functions\n } = (_storyboard$meta = storyboard.meta) !== null && _storyboard$meta !== void 0 ? _storyboard$meta : {};\n traverseStoryboardExpressions([storyboard.routes, customTemplates], beforeVisitPermissions, PERMISSIONS);\n traverseStoryboardFunctions(functions, beforeVisitPermissions);\n return Array.from(collection);\n}\nexport function scanPermissionActionsInAny(data) {\n var collection = new Set();\n traverseStoryboardExpressions(data, beforeVisitPermissionsFactory(collection), PERMISSIONS);\n return Array.from(collection);\n}\nfunction beforeVisitPermissionsFactory(collection) {\n return function beforeVisitPermissions(node, parent) {\n if (node.name === PERMISSIONS) {\n var memberParent = parent[parent.length - 1];\n var callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === check : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === check)) {\n for (var arg of callParent.node.arguments) {\n if (arg.type === \"Literal\" && typeof arg.value === \"string\") {\n collection.add(arg.value);\n }\n }\n }\n }\n };\n}\n//# sourceMappingURL=permissions.js.map"],"names":["beforeVisitGlobalMember","usage","objectName","level","arguments","length","undefined","rememberObjectName","node","parent","name","includes","segments","i","memberParent","type","key","memberNode","computed","property","value","push","concat","hasNonStaticUsage","usedProperties","add","join","collectMemberCallUsageFactory","object","callParent","args","firstArg","usedArgs","collectAppGetMenuUsage","collectInstalledAppsHasUsage","traverseStoryboardExpressions","data","beforeVisitGlobal","options","memo","WeakSet","matchExpressionString","visitNotMatchedExpressionString","visitNonExpressionString","visitObject","v","traverse","isEvaluable","preevaluate","withParent","hooks","error","console","isObject","has","item","Array","isArray","Object","values","strictCollectMemberUsage","nonStaticUsage","collectMemberUsage","Error","Set","expr","track","raw","trackText","variableName","trackCtxExp","expression","expressions","size","warn","JSON","stringify","trackAll","usedProperites","result","context","state","formState","keyMap","CTX","STATE","FORM_STATE","forEach","split","traverseStoryboardFunctions","functions","fn","traverseStoryboardFunction","silentErrors","precookFunction","source","typescript","collectMemberUsageInFunction","delete","PERMISSIONS","check","scanPermissionActionsInStoryboard","storyboard","_storyboard$meta","collection","beforeVisitPermissions","beforeVisitPermissionsFactory","customTemplates","meta","routes","from","scanPermissionActionsInAny","arg"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/3458.763e9cba.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/beforeVisitGlobalMember.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberCallUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/track.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/collectMemberUsageInFunction.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/permissions.js"],"sourcesContent":["export function beforeVisitGlobalMember(usage, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var rememberObjectName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n return function beforeVisitGlobal(node, parent) {\n if (typeof objectName === \"string\" ? node.name === objectName : objectName.includes(node.name)) {\n var segments = [];\n for (var i = 1; i <= level; i++) {\n var memberParent = parent[parent.length - i];\n if ((memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\") {\n var memberNode = memberParent.node;\n if (!memberNode.computed && memberNode.property.type === \"Identifier\") {\n segments.push(rememberObjectName ? \"\".concat(node.name, \".\").concat(memberNode.property.name) : memberNode.property.name);\n } else if (memberNode.computed && memberNode.property.type === \"Literal\" && typeof memberNode.property.value === \"string\") {\n segments.push(rememberObjectName ? \"\".concat(node.name, \".\").concat(memberNode.property.value) : memberNode.property.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n if (segments.length === level) {\n usage.usedProperties.add(segments.join(\".\"));\n }\n }\n };\n}\n//# sourceMappingURL=beforeVisitGlobalMember.js.map","function collectMemberCallUsageFactory(object, property) {\n return function collectMemberCallUsage(usage, node, parent) {\n if (node.name === object) {\n var memberParent = parent[parent.length - 1];\n var callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === property : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === property)) {\n var args = callParent.node.arguments;\n if (args.length > 0) {\n var firstArg = args[0];\n if (firstArg.type === \"Literal\" && typeof firstArg.value === \"string\") {\n usage.usedArgs.add(firstArg.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n }\n }\n };\n}\nexport var collectAppGetMenuUsage = collectMemberCallUsageFactory(\"APP\", \"getMenu\");\nexport var collectInstalledAppsHasUsage = collectMemberCallUsageFactory(\"INSTALLED_APPS\", \"has\");\n//# sourceMappingURL=collectMemberCallUsage.js.map","import { isEvaluable, preevaluate } from \"@next-core/cook\";\nimport { isObject } from \"@next-core/utils/general\";\nexport function traverseStoryboardExpressions(data, beforeVisitGlobal,\n// If `options` is a string, it means the *keyword*.\noptions) {\n var memo = new WeakSet();\n var {\n matchExpressionString,\n visitNotMatchedExpressionString,\n visitNonExpressionString,\n visitObject\n } = typeof options === \"string\" ? {\n matchExpressionString: v => v.includes(options)\n } : options;\n function traverse(value) {\n if (typeof value === \"string\") {\n if (isEvaluable(value)) {\n if (matchExpressionString(value)) {\n try {\n preevaluate(value, {\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n beforeVisitGlobal(node, parent, value);\n }\n }\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Parse storyboard expression failed:\", error);\n }\n } else {\n visitNotMatchedExpressionString === null || visitNotMatchedExpressionString === void 0 || visitNotMatchedExpressionString(value);\n }\n } else {\n visitNonExpressionString === null || visitNonExpressionString === void 0 || visitNonExpressionString(value);\n }\n } else if (isObject(value)) {\n // Avoid call stack overflow.\n if (memo.has(value)) {\n return;\n }\n memo.add(value);\n visitObject === null || visitObject === void 0 || visitObject(value);\n for (var item of Array.isArray(value) ? value : Object.values(value)) {\n traverse(item);\n }\n }\n }\n traverse(data);\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nimport { traverseStoryboardExpressions } from \"./traverse.js\";\nexport function strictCollectMemberUsage(data, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var {\n hasNonStaticUsage,\n nonStaticUsage,\n usedProperties\n } = collectMemberUsage(data, objectName, level);\n if (hasNonStaticUsage) {\n throw new Error(\"Non-static usage of \".concat(objectName, \" is prohibited, check your expression: \\\"\").concat(nonStaticUsage, \"\\\"\"));\n }\n return usedProperties;\n}\nexport function collectMemberUsage(data, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n var beforeVisitGlobal = beforeVisitGlobalMember(usage, objectName, level);\n traverseStoryboardExpressions(data, (node, parent, expr) => {\n beforeVisitGlobal(node, parent);\n if (usage.hasNonStaticUsage) {\n usage.nonStaticUsage = expr;\n }\n }, objectName);\n return usage;\n}\n//# sourceMappingURL=collectMemberUsage.js.map","import { preevaluate } from \"@next-core/cook\";\nimport { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nexport function track(raw, trackText, variableName) {\n if (raw.includes(trackText)) {\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n var {\n expression\n } = preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, variableName)\n }\n });\n var trackCtxExp;\n if (expression.type === \"SequenceExpression\" && (trackCtxExp = expression.expressions[0]) && trackCtxExp.type === \"Literal\" && trackCtxExp.value === trackText) {\n if (usage.usedProperties.size > 0) {\n return usage.usedProperties;\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"You are using \\\"\".concat(trackText, \"\\\" but no `\").concat(variableName, \"` usage found in your expression: \").concat(JSON.stringify(raw)));\n }\n }\n }\n return false;\n}\nexport function trackAll(raw) {\n if (raw) {\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, [\"CTX\", \"STATE\", \"FORM_STATE\"], 1, true)\n }\n });\n if (usage.usedProperties.size > 0) {\n var usedProperites = [...usage.usedProperties];\n var result = {\n context: false,\n state: false,\n formState: false\n };\n var keyMap = {\n CTX: \"context\",\n STATE: \"state\",\n FORM_STATE: \"formState\"\n };\n usedProperites.forEach(item => {\n var [key, name] = item.split(\".\");\n if (!result[keyMap[key]]) {\n result[keyMap[key]] = [];\n }\n result[keyMap[key]].push(name);\n });\n return result;\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"You are using track all but no \\\"CTX\\\" or \\\"STATE\\\" or \\\"FORM_STATE\\\" usage found in your expression: \".concat(JSON.stringify(raw)));\n }\n }\n return false;\n}\n//# sourceMappingURL=track.js.map","import { precookFunction } from \"@next-core/cook\";\nexport function traverseStoryboardFunctions(functions, beforeVisitGlobal) {\n if (Array.isArray(functions)) {\n for (var fn of functions) {\n traverseStoryboardFunction(fn, beforeVisitGlobal);\n }\n }\n}\nexport function traverseStoryboardFunction(fn, beforeVisitGlobal, silentErrors) {\n try {\n precookFunction(fn.source, {\n typescript: fn.typescript,\n withParent: true,\n hooks: {\n beforeVisitGlobal\n }\n });\n } catch (error) {\n if (!silentErrors) {\n // eslint-disable-next-line no-console\n console.error(\"Parse storyboard function \\\"\".concat(fn.name, \"\\\" failed:\"), error);\n }\n }\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"../expressions/beforeVisitGlobalMember.js\";\nimport { traverseStoryboardFunction } from \"./traverse.js\";\nexport function collectMemberUsageInFunction(fn, objectName, silentErrors) {\n var level = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n traverseStoryboardFunction(fn, beforeVisitGlobalMember(usage, objectName, level), silentErrors);\n if (usage.hasNonStaticUsage && !silentErrors) {\n throw new Error(\"Non-static usage of \".concat(objectName, \" is prohibited, check your function: \\\"\").concat(fn.name, \"\\\"\"));\n }\n usage.usedProperties.delete(fn.name);\n return usage.usedProperties;\n}\n//# sourceMappingURL=collectMemberUsageInFunction.js.map","import { traverseStoryboardExpressions } from \"./expressions/index.js\";\nimport { traverseStoryboardFunctions } from \"./functions/index.js\";\nvar PERMISSIONS = \"PERMISSIONS\";\nvar check = \"check\";\nexport function scanPermissionActionsInStoryboard(storyboard) {\n var _storyboard$meta;\n var collection = new Set();\n var beforeVisitPermissions = beforeVisitPermissionsFactory(collection);\n var {\n customTemplates,\n functions\n } = (_storyboard$meta = storyboard.meta) !== null && _storyboard$meta !== void 0 ? _storyboard$meta : {};\n traverseStoryboardExpressions([storyboard.routes, customTemplates], beforeVisitPermissions, PERMISSIONS);\n traverseStoryboardFunctions(functions, beforeVisitPermissions);\n return Array.from(collection);\n}\nexport function scanPermissionActionsInAny(data) {\n var collection = new Set();\n traverseStoryboardExpressions(data, beforeVisitPermissionsFactory(collection), PERMISSIONS);\n return Array.from(collection);\n}\nfunction beforeVisitPermissionsFactory(collection) {\n return function beforeVisitPermissions(node, parent) {\n if (node.name === PERMISSIONS) {\n var memberParent = parent[parent.length - 1];\n var callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === check : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === check)) {\n for (var arg of callParent.node.arguments) {\n if (arg.type === \"Literal\" && typeof arg.value === \"string\") {\n collection.add(arg.value);\n }\n }\n }\n }\n };\n}\n//# sourceMappingURL=permissions.js.map"],"names":["beforeVisitGlobalMember","usage","objectName","level","arguments","length","undefined","rememberObjectName","node","parent","name","includes","segments","i","memberParent","type","key","memberNode","computed","property","value","push","concat","hasNonStaticUsage","usedProperties","add","join","collectMemberCallUsageFactory","object","callParent","args","firstArg","usedArgs","collectAppGetMenuUsage","collectInstalledAppsHasUsage","traverseStoryboardExpressions","data","beforeVisitGlobal","options","memo","WeakSet","matchExpressionString","visitNotMatchedExpressionString","visitNonExpressionString","visitObject","v","traverse","isEvaluable","preevaluate","withParent","hooks","error","console","isObject","has","item","Array","isArray","Object","values","strictCollectMemberUsage","nonStaticUsage","collectMemberUsage","Error","Set","expr","track","raw","trackText","variableName","trackCtxExp","expression","expressions","size","warn","JSON","stringify","trackAll","usedProperites","result","context","state","formState","keyMap","CTX","STATE","FORM_STATE","forEach","split","traverseStoryboardFunctions","functions","fn","traverseStoryboardFunction","silentErrors","precookFunction","source","typescript","collectMemberUsageInFunction","delete","PERMISSIONS","check","scanPermissionActionsInStoryboard","storyboard","_storyboard$meta","collection","beforeVisitPermissions","beforeVisitPermissionsFactory","customTemplates","meta","routes","from","scanPermissionActionsInAny","arg"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[3556],{3132:(e,t,n)=>{n.d(t,{L:()=>c,Z:()=>i});var a=n(8657),r=n.n(a),i=r().createContext({}),c=()=>r().useContext(i)},3697:(e,t,n)=>{n.d(t,{L:()=>d,k:()=>m});var a=n(7896),r=n(8657),i=n.n(r),c=n(5178),s=n(2779),o=n.n(s),l=n(2892),u=n(3132);function m(e){var{name:t,items:n}=e;return i().createElement("li",{className:"menu-group"},i().createElement("div",{className:"menu-group-label"},t),i().createElement("ul",{className:"menu"},n.map((e=>"dir"===e.type?i().createElement(f,{key:"".concat(e.type,"-").concat(e.id),name:e.name,items:e.items}):i().createElement(p,{key:"".concat(e.type,"-").concat(e.id),item:e})))))}function p(e){var t,{item:n}=e,{loadingFavorites:s,pushRecentVisit:m,toggleStar:p,isStarred:d}=(0,u.L)(),f=(0,r.useMemo)((()=>d(n)),[d,n]),h=(0,r.useCallback)((()=>{p(n)}),[n,p]),v=(0,r.useCallback)((()=>{m(n)}),[n,m]);return i().createElement("li",{className:o()("menu-item",{starred:f,"can-star":!s})},i().createElement(l.kk,(0,a.Z)({onClick:v},"app"===n.type?{url:n.url}:{href:n.url,target:"_blank"}),i().createElement(l.V3,(0,a.Z)({className:"menu-icon",lib:"easyops",icon:"micro-app-center"},null!==(t=n.menuIcon)&&void 0!==t&&t.lib&&n.menuIcon.icon?(0,c.pick)(n.menuIcon,["lib","icon","theme","category","prefix"]):null)),i().createElement("span",{className:"menu-item-label"},n.name)),i().createElement(l.V3,{lib:"fa",prefix:f?"fas":"far",icon:"star",className:"menu-item-star",title:f?"取消收藏":"收藏",onClick:h}))}function d(e){var t,{item:n}=e,{pushRecentVisit:s,toggleStar:o}=(0,u.L)(),m=(0,r.useCallback)((()=>{"link"!==n.type&&s(n)}),[n,s]),p=(0,r.useCallback)((()=>{o(n)}),[n,o]);return i().createElement("li",{className:"sidebar-menu-item"},i().createElement(l.kk,(0,a.Z)({onClick:m},"app"===n.type?{url:n.url}:{href:n.url,target:"_blank"}),i().createElement(l.V3,(0,a.Z)({className:"sidebar-menu-icon",lib:"easyops",icon:"micro-app-center"},null!==(t=n.menuIcon)&&void 0!==t&&t.lib&&n.menuIcon.icon?(0,c.pick)(n.menuIcon,["lib","icon","theme","category","prefix"]):null)),i().createElement("span",{className:"menu-item-label"},n.name)),i().createElement(l.V3,{lib:"fa",icon:"xmark",className:"menu-item-remove",onClick:p}))}function f(e){var{name:t,items:n}=e,{searching:a}=(0,u.L)(),[c,s]=(0,r.useState)(!1),[m,d]=(0,r.useState)(!1),f=(0,r.useCallback)((()=>{a?d((e=>!e)):s((e=>!e))}),[a]);(0,r.useEffect)((()=>{d(!0)}),[a]);var h=a?m:c;return i().createElement("li",{className:"menu-item folder"},i().createElement(l.kk,{onClick:f},i().createElement(l.V3,{lib:"fa",prefix:"far",icon:"folder-open",className:"menu-icon"}),i().createElement("span",{className:"menu-item-label"},t),i().createElement(l.V3,{lib:"antd",icon:h?"up":"down",className:"menu-item-toggle"})),i().createElement("ul",{className:o()("sub-menu",{expanded:h})},n.map((e=>i().createElement(p,{key:"".concat(e.type,"-").concat(e.id),item:e})))))}},6176:(e,t,n)=>{n.d(t,{sK:()=>M,yp:()=>_,m1:()=>R});var a,r=n(3028),i=n(4795),c=n(8657),s=n(1343),o=n(27),l=n(2890),u=n(2301),m=n(2892),p=n(2106),d=n(4008),f=n(8685),h=n(5003),v=10,I=10,y=n(107);function g(){return(g=(0,i.Z)((function*(){var e=yield(0,p.u)({},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0}),t=new Map;for(var n of e.storyboards){var a=n.app;a.localeName=(0,y.d)(a.locales,a.name),t.set(a.id,a)}var i=[],c=new Map;for(var s of e.desktops){var o=[];for(var l of s.items)switch(l.type){case"app":var u=t.get(l.id);u&&o.push((0,r.Z)((0,r.Z)({},l),{},{name:u.localeName,url:u.homepage,menuIcon:u.menuIcon}));break;case"custom":o.push(l),c.set(l.id,l);break;case"dir":var m=[];for(var d of l.items)if("app"===d.type){var f=t.get(d.id);f&&m.push((0,r.Z)((0,r.Z)({},d),{},{name:f.localeName,url:f.homepage,menuIcon:f.menuIcon}))}else"custom"===d.type&&(m.push(d),c.set(d.id,d));m.length>0&&o.push((0,r.Z)((0,r.Z)({},l),{},{items:m}))}o.length>0&&i.push((0,r.Z)((0,r.Z)({},s),{},{items:o}))}return{menuGroups:i,microAppsById:t,customLinksById:c}}))).apply(this,arguments)}function k(){return b.apply(this,arguments)}function b(){return(b=(0,i.Z)((function*(){return(yield(0,d.$)({page:1,pageSize:v},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0})).list}))).apply(this,arguments)}function Z(){return(Z=(0,i.Z)((function*(){var e=yield k(),t=[];for(var n of e)if("microApp"===n.type){var a=n.relatedApp;a.localeName=(0,y.d)(a.locales,a.name),t.push({favoriteId:n.instanceId,type:"app",name:a.localeName,id:a.appId,url:a.homepage,instanceId:a.instanceId,menuIcon:a.menuIcon})}else if("customItem"===n.type){var r=n.relatedCustomItem;t.push({favoriteId:n.instanceId,type:"custom",name:r.name,id:r.id,url:r.url,menuIcon:r.menuIcon})}else"link"===n.type&&t.push({favoriteId:n.instanceId,type:"link",name:n.name,url:n.link,menuIcon:n.icon});return t}))).apply(this,arguments)}function C(){return(C=(0,i.Z)((function*(e){return(0,f.i)({type:"app"===e.type?"microApp":"customItem",relatedInstanceId:e.instanceId},{interceptorParams:{ignoreLoadingBar:!0}})}))).apply(this,arguments)}function E(){return(E=(0,i.Z)((function*(e){return e.favoriteId?(0,h.I)(e.favoriteId):k().then((t=>{var n,a=null===(n=t.find((t=>{var n,a;return"app"===e.type?"microApp"===t.type&&(null===(n=t.relatedApp)||void 0===n?void 0:n.appId)===e.id:"custom"===e.type&&(null===(a=t.relatedCustomItem)||void 0===a?void 0:a.id)===e.id})))||void 0===n?void 0:n.instanceId;if(a)return(0,h.I)(a);console.error("Menu item to unstar not found:",e)}))}))).apply(this,arguments)}function w(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)?e:null}function N(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)?e:null}var S="launchpad-recent-visits:".concat(null===(a=o.auth.getAuth())||void 0===a?void 0:a.org),F=new l.o(localStorage),x=[],L=new Map,B=new Map,P=!1,V=[],A=!1,_=new u.i((0,i.Z)((function*(){({menuGroups:x,microAppsById:L,customLinksById:B}=yield function(){return g.apply(this,arguments)}()),P=!0}))),M=new u.i((0,i.Z)((function*(){V=yield function(){return Z.apply(this,arguments)}(),A=!0}))),O=e=>(0,m.c0)({type:"error",message:(0,s.httpErrorToString)(e)});function R(e){var[t,n]=(0,c.useState)(x),[a,o]=(0,c.useState)(L),[l,u]=(0,c.useState)(B),[p,d]=(0,c.useState)(""),[f,h]=(0,c.useState)(!P),[y,g]=(0,c.useState)(!A),[k,b]=(0,c.useState)([]),[Z,R]=(0,c.useState)([]),[q,G]=(0,c.useState)(V);(0,c.useEffect)((()=>{e&&!f&&(n(x),o(L),u(B))}),[e,f]),(0,c.useEffect)((()=>{e&&!y&&G(V)}),[e,y]),(0,c.useEffect)((()=>{var t;e&&b(null!==(t=F.getItem(S))&&void 0!==t?t:[])}),[e]),(0,c.useEffect)((()=>{if(e){var t=function(){var e=(0,i.Z)((function*(){try{yield _.fetch(),h(!1)}catch(e){(0,s.handleHttpError)(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,c.useEffect)((()=>{if(e){var t=function(){var e=(0,i.Z)((function*(){try{yield M.fetch(),g(!1)}catch(e){g(!1),O(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,c.useEffect)((()=>{if(!f){var e=k.map((e=>{if("app"===e.type){var t=a.get(e.id);return t?{type:"app",name:t.localeName,id:t.id,url:t.homepage,instanceId:t.instanceId,menuIcon:t.menuIcon}:null}return l.get(e.id)})).filter(Boolean);R(e)}}),[l,f,a,k]);var j=(0,c.useCallback)((e=>{var t,{type:n,id:a}=e,r=null!==(t=F.getItem(S))&&void 0!==t?t:[],i=r.findIndex((e=>e.type===n&&e.id===a));i>-1&&r.splice(i,1),r.unshift({type:n,id:a}),r.length>I&&r.pop(),F.setItem(S,r)}),[]),J=(0,c.useCallback)((e=>q.some((t=>T(e,t)))),[q]),z=(0,c.useCallback)((e=>{var t,n=q.findIndex((t=>"link"===e.type?t.favoriteId===e.favoriteId:T(e,t)));if(n>-1){var a=q[n];t=q.slice(0,n).concat(q.slice(n+1)),function(e){return E.apply(this,arguments)}(a).catch(O)}else{if(q.length>=v)return void(0,m.vC)({type:"warn",title:"收藏数量已达上限",content:"当前收藏链接数量已达上限(".concat(v,"个),请删除部分收藏后再添加。")});var i=(0,r.Z)({},e);t=q.concat(i),function(e){return C.apply(this,arguments)}(e).then((e=>{e&&(i.favoriteId=e.instanceId)}),O)}G(t),V=t}),[q]),H=(0,c.useMemo)((()=>function(e,t){if(!t)return e;var n=t.toLowerCase();return e.map((e=>(0,r.Z)((0,r.Z)({},e),{},{items:e.items.map((e=>{switch(e.type){case"app":return w(e,n);case"custom":return N(e,n);case"dir":var t=e.items.map((e=>"app"===e.type?w(e,n):"custom"===e.type?N(e,n):null)).filter(Boolean);return t.length>0?(0,r.Z)((0,r.Z)({},e),{},{items:t}):null}})).filter(Boolean)}))).filter((e=>e.items.length>0))}(t,p)),[t,p]);return{loading:f,q:p,setQ:d,menuGroups:H,loadingFavorites:y,favorites:q,recentVisits:Z,pushRecentVisit:j,isStarred:J,toggleStar:z}}function T(e,t){return e.instanceId&&t.instanceId?t.instanceId===e.instanceId:t.type===e.type&&t.id===e.id}},2892:(e,t,n)=>{n.d(t,{V3:()=>i,c0:()=>o,kk:()=>c,vC:()=>s});var a=n(2354),r=n(2071),i=(0,a.wrapBrick)("eo-icon"),c=(0,a.wrapBrick)("eo-link"),s=(0,r.unwrapProvider)("basic.show-dialog"),o=(0,r.unwrapProvider)("basic.show-notification")},2301:(e,t,n)=>{n.d(t,{i:()=>i});var a=n(4795),r=n(6666);class i{constructor(e){(0,r.Z)(this,"preFetchId",null),(0,r.Z)(this,"preFetchScheduled",!1),(0,r.Z)(this,"firstFetchPromise",null),(0,r.Z)(this,"isFetching",!1),(0,r.Z)(this,"task",void 0),this.task=e}schedulePrefetch(){var e=this;if(!this.preFetchScheduled){this.preFetchScheduled=!0;var t=function(){var t=(0,a.Z)((function*(){e.preFetchId=null,e.fetch()}));return function(){return t.apply(this,arguments)}}();"function"==typeof window.requestIdleCallback?this.preFetchId=window.requestIdleCallback(t):this.preFetchId=setTimeout(t)}}fetch(e){var t;return this.preFetchId&&("function"==typeof window.cancelIdleCallback?cancelIdleCallback(this.preFetchId):clearTimeout(this.preFetchId),this.preFetchId=null),this.isFetching&&!e||(this.isFetching=!0,(t=this.task()).catch((e=>{console.error(e),this.firstFetchPromise=null})).finally((()=>{this.isFetching=!1})),this.firstFetchPromise||(this.firstFetchPromise=t),!e)?this.firstFetchPromise:t}}},107:(e,t,n)=>{n.d(t,{d:()=>r});var a=n(1965);function r(e,t){var n;if(!e)return t;var r=Object.fromEntries(Object.entries(e).filter((e=>{var[t,n]=e;return n.name})).map((e=>{var[t,n]=e;return[t,n.name]})));return null!==(n=(0,a.i18nText)(r))&&void 0!==n?n:t}},2890:(e,t,n)=>{n.d(t,{o:()=>a});class a{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"brick-next-";this.storage=e,this.prefix=t}setItem(e,t){this.storage.setItem(this.prefix+e,JSON.stringify(t))}getItem(e){return JSON.parse(this.storage.getItem(this.prefix+e))}removeItem(e){return this.storage.removeItem(this.prefix+e)}clear(){return this.storage.clear()}}}}]);
2
+ //# sourceMappingURL=3556.4d471160.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/3556.124f67dd.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/LaunchpadContext.ts","webpack:///./src/launchpad-button-v2/MenuGroup.tsx","webpack:///./src/launchpad-button-v2/constants.ts","webpack:///./src/launchpad-button-v2/api.ts","webpack:///./src/launchpad-button-v2/search.ts","webpack:///./src/launchpad-button-v2/useLaunchpadInfo.ts","webpack:///./src/launchpad-button-v2/wrapped-bricks.ts","webpack:///./src/shared/DeferredService.ts","webpack:///./src/shared/getLocaleName.ts","webpack:///../../src/JsonStorage.ts"],"sourcesContent":["import React from \"react\";\nimport type { MenuItemDataLink, MenuItemDataNormal } from \"./interfaces\";\n\nexport interface LaunchpadContextData {\n searching: boolean;\n loadingFavorites: 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","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\";\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.name}\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 { loadingFavorites, 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 target: \"_blank\",\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.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n prefix={starred ? \"fas\" : \"far\"}\n icon=\"star\"\n className=\"menu-item-star\"\n title={starred ? \"取消收藏\" : \"收藏\"}\n onClick={handleStarClick}\n />\n </li>\n );\n}\n\nexport interface SidebarMenuItemProps {\n item: SidebarMenuItemData;\n}\n\nexport function SidebarMenuItem({ item }: SidebarMenuItemProps) {\n const { 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 target: \"_blank\",\n })}\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 <WrappedIcon\n lib=\"fa\"\n icon=\"xmark\"\n className=\"menu-item-remove\"\n onClick={handleRemoveStar}\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","export const FAVORITES_LIMIT = 10;\nexport const RECENT_VISITS_LIMIT = 10;\n","import type { Storyboard } from \"@next-core/types\";\nimport { LaunchpadApi_getLaunchpadInfo } from \"@next-api-sdk/micro-app-standalone-sdk\";\nimport {\n LaunchpadApi_createCollectionV2,\n LaunchpadApi_deleteCollectionV2,\n LaunchpadApi_listCollectionV2,\n} from \"@next-api-sdk/user-service-sdk\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataDir,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n} from \"./interfaces\";\nimport { FAVORITES_LIMIT } from \"./constants\";\nimport { getAppLocaleName } from \"../shared/getLocaleName\";\n\nexport async function fetchLaunchpadInfo() {\n const launchpadInfo = await LaunchpadApi_getLaunchpadInfo(\n {},\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n );\n\n const microAppsById = new Map<string, MicroAppWithInstanceId>();\n for (const storyboard of launchpadInfo.storyboards as Storyboard[]) {\n const app = storyboard.app as unknown as MicroAppWithInstanceId;\n app.localeName = getAppLocaleName(app.locales, app.name);\n microAppsById.set(app.id, app);\n }\n\n const menuGroups: MenuGroupData[] = [];\n const customLinksById = new Map<string, MenuItemDataCustom>();\n\n for (const group of launchpadInfo.desktops as unknown as MenuGroupData[]) {\n const items: MenuItemData[] = [];\n for (const item of group.items) {\n switch (item.type) {\n case \"app\": {\n const app = microAppsById.get(item.id);\n if (app) {\n items.push({\n ...item,\n name: app.localeName,\n url: app.homepage,\n menuIcon: app.menuIcon,\n } as MenuItemDataApp);\n }\n break;\n }\n case \"custom\":\n items.push(item);\n customLinksById.set(item.id, item);\n break;\n case \"dir\": {\n const subItems: MenuItemDataNormal[] = [];\n for (const subItem of item.items) {\n if (subItem.type === \"app\") {\n const app = microAppsById.get(subItem.id);\n if (app) {\n subItems.push({\n ...subItem,\n name: app.localeName,\n url: app.homepage,\n menuIcon: app.menuIcon,\n } as MenuItemDataApp);\n }\n } else if (subItem.type === \"custom\") {\n subItems.push(subItem as MenuItemDataCustom);\n customLinksById.set(subItem.id, subItem);\n }\n }\n if (subItems.length > 0) {\n items.push({\n ...item,\n items: subItems,\n } as MenuItemDataDir);\n }\n break;\n }\n }\n }\n if (items.length > 0) {\n menuGroups.push({ ...group, items });\n }\n }\n\n return { menuGroups, microAppsById, customLinksById };\n}\n\nasync function fetchRawFavorites() {\n return (\n await LaunchpadApi_listCollectionV2(\n { page: 1, pageSize: FAVORITES_LIMIT },\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n )\n ).list;\n}\n\nexport async function fetchFavorites() {\n const list = await fetchRawFavorites();\n const stored: FavMenuItem[] = [];\n for (const fav of list) {\n if (fav.type === \"microApp\") {\n const app = fav.relatedApp as Omit<MicroAppWithInstanceId, \"id\"> & {\n appId: string;\n };\n app.localeName = getAppLocaleName(app.locales, app.name);\n stored.push({\n favoriteId: fav.instanceId,\n type: \"app\",\n name: app.localeName,\n id: app.appId,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"customItem\") {\n const customItem = fav.relatedCustomItem!;\n stored.push({\n favoriteId: fav.instanceId,\n type: \"custom\",\n name: customItem.name,\n id: customItem.id,\n url: customItem.url,\n menuIcon: customItem.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"link\") {\n stored.push({\n favoriteId: fav.instanceId,\n type: \"link\",\n name: fav.name,\n // id: fav.id,\n url: fav.link,\n menuIcon: fav.icon,\n } as FavMenuItem);\n }\n }\n return stored;\n}\n\nexport async function favorite(\n item: MenuItemDataNormal\n): Promise<{ instanceId?: string }> {\n return LaunchpadApi_createCollectionV2(\n {\n type: item.type === \"app\" ? \"microApp\" : \"customItem\",\n relatedInstanceId: item.instanceId,\n },\n {\n interceptorParams: { ignoreLoadingBar: true },\n }\n );\n}\n\nexport async function undoFavorite(item: FavMenuItem) {\n if (item.favoriteId) {\n return LaunchpadApi_deleteCollectionV2(item.favoriteId);\n }\n\n return fetchRawFavorites().then((list) => {\n const foundId = list.find((fav) =>\n item.type === \"app\"\n ? fav.type === \"microApp\" && fav.relatedApp?.appId === item.id\n : item.type === \"custom\" && fav.relatedCustomItem?.id === item.id\n )?.instanceId;\n\n if (foundId) {\n return LaunchpadApi_deleteCollectionV2(foundId);\n }\n // eslint-disable-next-line no-console\n console.error(\"Menu item to unstar not found:\", item);\n });\n}\n","import type {\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n} from \"./interfaces\";\n\nexport function search(\n allMenuGroups: MenuGroupData[],\n q: string\n): MenuGroupData[] {\n if (!q) {\n return allMenuGroups;\n }\n const lowerQ = q.toLowerCase();\n const groups: MenuGroupData[] = allMenuGroups\n .map((group) => ({\n ...group,\n items: group.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItemApp(item, lowerQ);\n case \"custom\":\n return matchMenuItemCustom(item, lowerQ);\n case \"dir\": {\n const filteredSubItems = item.items\n .map((sub) =>\n sub.type === \"app\"\n ? matchMenuItemApp(sub, lowerQ)\n : sub.type === \"custom\"\n ? matchMenuItemCustom(sub, lowerQ)\n : null\n )\n .filter(Boolean) as MenuItemData[];\n return filteredSubItems.length > 0\n ? {\n ...item,\n items: filteredSubItems,\n }\n : null;\n }\n }\n })\n // Ignore not matched items\n .filter(Boolean) as MenuItemData[],\n }))\n // ignore empty desktops\n .filter((group) => group.items.length > 0);\n return groups;\n}\n\nfunction matchMenuItemApp(item: MenuItemDataApp, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n\nfunction matchMenuItemCustom(item: MenuItemDataCustom, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { handleHttpError, httpErrorToString } from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { DeferredService } from \"../shared/DeferredService\";\nimport { showDialog, showNotification } from \"./wrapped-bricks\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemDataCustom,\n MenuItemDataLink,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n StoredMenuItem,\n} from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n undoFavorite,\n} from \"./api\";\nimport { search } from \"./search\";\nimport { FAVORITES_LIMIT, RECENT_VISITS_LIMIT } from \"./constants\";\n\nconst storageKey = `launchpad-recent-visits:${(\n auth.getAuth() as Record<string, string>\n)?.org}`;\nconst storage = new JsonStorage(localStorage);\n\nlet candidateDesktops: MenuGroupData[] = [];\nlet candidateMicroAppsById = new Map<string, MicroAppWithInstanceId>();\nlet candidateCustomLinksById = new Map<string, MenuItemDataCustom>();\nlet preLoaded = false;\n\nlet candidateFavorites: FavMenuItem[] = [];\nlet preLoadedFavorites = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n ({\n menuGroups: candidateDesktops,\n microAppsById: candidateMicroAppsById,\n customLinksById: candidateCustomLinksById,\n } = await fetchLaunchpadInfo());\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\nconst showErrorAsNotification = (error: unknown) =>\n showNotification({\n type: \"error\",\n message: httpErrorToString(error),\n });\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<MenuItemDataNormal[]>([]);\n\n const [favorites, setFavorites] = useState<FavMenuItem[]>(candidateFavorites);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n setLoadingFavorites(false);\n showErrorAsNotification(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n // Remembered recent visits maybe no longer existed in launchpad\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app\n ? {\n type: \"app\",\n name: app.localeName,\n id: app.id,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n }\n : null;\n }\n return customLinksById.get(item.id);\n })\n .filter(Boolean) as MenuItemDataNormal[];\n setRecentVisits(visits);\n }, [customLinksById, loading, microAppsById, storedRecentVisits]);\n\n const pushRecentVisit = useCallback(({ type, id }: StoredMenuItem) => {\n const visits: StoredMenuItem[] = storage.getItem(storageKey) ?? [];\n const index = visits.findIndex(\n (visit) => visit.type === type && visit.id === id\n );\n if (index > -1) {\n visits.splice(index, 1);\n }\n visits.unshift({ type, id });\n if (visits.length > RECENT_VISITS_LIMIT) {\n visits.pop();\n }\n // setStoredRecentVisits(visits);\n storage.setItem(storageKey, visits);\n }, []);\n\n const isStarred = useCallback(\n (item: MenuItemDataNormal) =>\n favorites.some((fav) => matchFavorite(item, fav)),\n [favorites]\n );\n\n const toggleStar = useCallback(\n (item: MenuItemDataNormal | MenuItemDataLink) => {\n const index = favorites.findIndex((fav) =>\n item.type === \"link\"\n ? fav.favoriteId === item.favoriteId\n : matchFavorite(item, fav)\n );\n let newFavorites: FavMenuItem[];\n if (index > -1) {\n const removed = favorites[index];\n newFavorites = favorites\n .slice(0, index)\n .concat(favorites.slice(index + 1));\n undoFavorite(removed).catch(showErrorAsNotification);\n } else {\n if (favorites.length >= FAVORITES_LIMIT) {\n showDialog({\n type: \"warn\",\n title: \"收藏数量已达上限\",\n content: `当前收藏链接数量已达上限(${FAVORITES_LIMIT}个),请删除部分收藏后再添加。`,\n });\n return;\n }\n // Assert: no link item\n const fav: FavMenuItem = { ...(item as MenuItemDataNormal) };\n newFavorites = favorites.concat(fav);\n favorite(item as MenuItemDataNormal).then((result) => {\n if (result) {\n fav.favoriteId = result.instanceId;\n }\n }, showErrorAsNotification);\n }\n setFavorites(newFavorites);\n candidateFavorites = newFavorites;\n },\n [favorites]\n );\n\n const menuGroups: MenuGroupData[] = useMemo(\n () => search(desktops, q),\n [desktops, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n };\n}\n\nexport function matchFavorite(item: MenuItemDataNormal, fav: FavMenuItem) {\n return item.instanceId && fav.instanceId\n ? fav.instanceId === item.instanceId\n : fav.type === item.type && fav.id === item.id;\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n","export class DeferredService {\n private preFetchId: number | null = null;\n private preFetchScheduled = false;\n private firstFetchPromise: Promise<unknown> | null = null;\n private isFetching = false;\n private readonly task: () => Promise<unknown>;\n\n constructor(task: () => Promise<unknown>) {\n this.task = task;\n }\n\n schedulePrefetch(): void {\n if (!this.preFetchScheduled) {\n this.preFetchScheduled = true;\n const preFetchLaunchpadInfo = async (): Promise<void> => {\n this.preFetchId = null;\n this.fetch();\n };\n // istanbul ignore if\n if (typeof window.requestIdleCallback === \"function\") {\n this.preFetchId = window.requestIdleCallback(preFetchLaunchpadInfo);\n } else {\n this.preFetchId = setTimeout(\n preFetchLaunchpadInfo\n ) as unknown as number;\n }\n }\n }\n\n fetch(eager?: boolean): Promise<unknown> {\n if (this.preFetchId) {\n // istanbul ignore if\n if (typeof window.cancelIdleCallback === \"function\") {\n cancelIdleCallback(this.preFetchId);\n } else {\n clearTimeout(this.preFetchId);\n }\n this.preFetchId = null;\n }\n\n let promise: Promise<unknown>;\n if (!this.isFetching || eager) {\n this.isFetching = true;\n promise = this.task();\n promise\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(error);\n this.firstFetchPromise = null;\n })\n .finally(() => {\n this.isFetching = false;\n });\n if (!this.firstFetchPromise) {\n this.firstFetchPromise = promise;\n }\n if (eager) {\n return promise;\n }\n }\n return this.firstFetchPromise!;\n }\n}\n","import { i18nText } from \"@next-core/i18n\";\nimport type { AppLocales, I18nData } from \"@next-core/types\";\n\nexport function getAppLocaleName(\n locales: AppLocales | undefined,\n name: string\n) {\n if (!locales) {\n return name;\n }\n const i18nData = Object.fromEntries(\n Object.entries(locales)\n .filter(([lang, resources]) => resources.name)\n .map(([lang, resources]) => [lang, resources.name])\n ) as I18nData;\n return i18nText(i18nData) ?? name;\n}\n","export class JsonStorage {\n constructor(\n private storage: Storage,\n private prefix: string = \"brick-next-\"\n ) {}\n\n setItem<T = any>(name: string, value: T): void {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n\n getItem<T = any>(name: string): T {\n return JSON.parse(this.storage.getItem(this.prefix + name) as string) as T;\n }\n\n removeItem(name: string): void {\n return this.storage.removeItem(this.prefix + name);\n }\n\n clear(): void {\n return this.storage.clear();\n }\n}\n"],"names":["LaunchpadsContext","React","useLaunchpadContext","MenuGroup","_ref","name","items","className","map","item","type","MenuItemFolder","key","concat","id","MenuItem","_ref2","_item$menuIcon","loadingFavorites","pushRecentVisit","toggleStar","isStarred","starred","useMemo","handleStarClick","useCallback","handleClick","classNames","WrappedLink","_extends","onClick","url","href","target","WrappedIcon","lib","icon","menuIcon","pick","prefix","title","SidebarMenuItem","_ref3","_item$menuIcon2","handleRemoveStar","_ref4","searching","expanded","setExpanded","useState","searchingExpanded","setSearchingExpanded","toggle","previous","useEffect","actualExpanded","FAVORITES_LIMIT","RECENT_VISITS_LIMIT","_fetchLaunchpadInfo","_asyncToGenerator","launchpadInfo","LaunchpadApi_getLaunchpadInfo","interceptorParams","ignoreLoadingBar","noAbortOnRouteChange","microAppsById","Map","storyboard","storyboards","app","localeName","getAppLocaleName","locales","set","menuGroups","customLinksById","group","desktops","get","push","_objectSpread","homepage","subItems","subItem","length","apply","arguments","fetchRawFavorites","_fetchRawFavorites","LaunchpadApi_listCollectionV2","page","pageSize","list","_fetchFavorites","stored","fav","relatedApp","favoriteId","instanceId","appId","customItem","relatedCustomItem","link","_favorite","LaunchpadApi_createCollectionV2","relatedInstanceId","_undoFavorite","LaunchpadApi_deleteCollectionV2","then","_list$find","foundId","find","_fav$relatedApp","_fav$relatedCustomIte","console","error","matchMenuItemApp","lowerQ","toLowerCase","includes","matchMenuItemCustom","storageKey","_auth$getAuth","auth","getAuth","org","storage","JsonStorage","localStorage","candidateDesktops","candidateMicroAppsById","candidateCustomLinksById","preLoaded","candidateFavorites","preLoadedFavorites","deferredLaunchpadInfo","DeferredService","fetchLaunchpadInfo","deferredFavorites","fetchFavorites","showErrorAsNotification","showNotification","message","httpErrorToString","useLaunchpadInfo","active","setDesktops","setMicroAppsById","setCustomLinksById","q","setQ","loading","setLoading","setLoadingFavorites","storedRecentVisits","setStoredRecentVisits","recentVisits","setRecentVisits","favorites","setFavorites","_storage$getItem","getItem","startFetchLaunchpadInfo","fetch","handleHttpError","startFetchFavorites","visits","filter","Boolean","_ref5","_storage$getItem2","index","findIndex","visit","splice","unshift","pop","setItem","some","matchFavorite","newFavorites","removed","slice","_x2","undoFavorite","catch","showDialog","content","_x","favorite","result","allMenuGroups","filteredSubItems","sub","search","wrapBrick","unwrapProvider","constructor","task","_defineProperty","this","schedulePrefetch","_this","preFetchScheduled","preFetchLaunchpadInfo","preFetchId","window","requestIdleCallback","setTimeout","eager","promise","cancelIdleCallback","clearTimeout","isFetching","firstFetchPromise","finally","_i18nText","i18nData","Object","fromEntries","entries","lang","resources","i18nText","undefined","value","JSON","stringify","parse","removeItem","clear"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/3556.4d471160.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/LaunchpadContext.ts","webpack:///./src/launchpad-button-v2/MenuGroup.tsx","webpack:///./src/launchpad-button-v2/constants.ts","webpack:///./src/launchpad-button-v2/api.ts","webpack:///./src/launchpad-button-v2/search.ts","webpack:///./src/launchpad-button-v2/useLaunchpadInfo.ts","webpack:///./src/launchpad-button-v2/wrapped-bricks.ts","webpack:///./src/shared/DeferredService.ts","webpack:///./src/shared/getLocaleName.ts","webpack:///../../src/JsonStorage.ts"],"sourcesContent":["import React from \"react\";\nimport type { MenuItemDataLink, MenuItemDataNormal } from \"./interfaces\";\n\nexport interface LaunchpadContextData {\n searching: boolean;\n loadingFavorites: 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","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\";\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.name}\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 { loadingFavorites, 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 target: \"_blank\",\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.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n prefix={starred ? \"fas\" : \"far\"}\n icon=\"star\"\n className=\"menu-item-star\"\n title={starred ? \"取消收藏\" : \"收藏\"}\n onClick={handleStarClick}\n />\n </li>\n );\n}\n\nexport interface SidebarMenuItemProps {\n item: SidebarMenuItemData;\n}\n\nexport function SidebarMenuItem({ item }: SidebarMenuItemProps) {\n const { 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 target: \"_blank\",\n })}\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 <WrappedIcon\n lib=\"fa\"\n icon=\"xmark\"\n className=\"menu-item-remove\"\n onClick={handleRemoveStar}\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","export const FAVORITES_LIMIT = 10;\nexport const RECENT_VISITS_LIMIT = 10;\n","import type { Storyboard } from \"@next-core/types\";\nimport { LaunchpadApi_getLaunchpadInfo } from \"@next-api-sdk/micro-app-standalone-sdk\";\nimport {\n LaunchpadApi_createCollectionV2,\n LaunchpadApi_deleteCollectionV2,\n LaunchpadApi_listCollectionV2,\n} from \"@next-api-sdk/user-service-sdk\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataDir,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n} from \"./interfaces\";\nimport { FAVORITES_LIMIT } from \"./constants\";\nimport { getAppLocaleName } from \"../shared/getLocaleName\";\n\nexport async function fetchLaunchpadInfo() {\n const launchpadInfo = await LaunchpadApi_getLaunchpadInfo(\n {},\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n );\n\n const microAppsById = new Map<string, MicroAppWithInstanceId>();\n for (const storyboard of launchpadInfo.storyboards as Storyboard[]) {\n const app = storyboard.app as unknown as MicroAppWithInstanceId;\n app.localeName = getAppLocaleName(app.locales, app.name);\n microAppsById.set(app.id, app);\n }\n\n const menuGroups: MenuGroupData[] = [];\n const customLinksById = new Map<string, MenuItemDataCustom>();\n\n for (const group of launchpadInfo.desktops as unknown as MenuGroupData[]) {\n const items: MenuItemData[] = [];\n for (const item of group.items) {\n switch (item.type) {\n case \"app\": {\n const app = microAppsById.get(item.id);\n if (app) {\n items.push({\n ...item,\n name: app.localeName,\n url: app.homepage,\n menuIcon: app.menuIcon,\n } as MenuItemDataApp);\n }\n break;\n }\n case \"custom\":\n items.push(item);\n customLinksById.set(item.id, item);\n break;\n case \"dir\": {\n const subItems: MenuItemDataNormal[] = [];\n for (const subItem of item.items) {\n if (subItem.type === \"app\") {\n const app = microAppsById.get(subItem.id);\n if (app) {\n subItems.push({\n ...subItem,\n name: app.localeName,\n url: app.homepage,\n menuIcon: app.menuIcon,\n } as MenuItemDataApp);\n }\n } else if (subItem.type === \"custom\") {\n subItems.push(subItem as MenuItemDataCustom);\n customLinksById.set(subItem.id, subItem);\n }\n }\n if (subItems.length > 0) {\n items.push({\n ...item,\n items: subItems,\n } as MenuItemDataDir);\n }\n break;\n }\n }\n }\n if (items.length > 0) {\n menuGroups.push({ ...group, items });\n }\n }\n\n return { menuGroups, microAppsById, customLinksById };\n}\n\nasync function fetchRawFavorites() {\n return (\n await LaunchpadApi_listCollectionV2(\n { page: 1, pageSize: FAVORITES_LIMIT },\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n )\n ).list;\n}\n\nexport async function fetchFavorites() {\n const list = await fetchRawFavorites();\n const stored: FavMenuItem[] = [];\n for (const fav of list) {\n if (fav.type === \"microApp\") {\n const app = fav.relatedApp as Omit<MicroAppWithInstanceId, \"id\"> & {\n appId: string;\n };\n app.localeName = getAppLocaleName(app.locales, app.name);\n stored.push({\n favoriteId: fav.instanceId,\n type: \"app\",\n name: app.localeName,\n id: app.appId,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"customItem\") {\n const customItem = fav.relatedCustomItem!;\n stored.push({\n favoriteId: fav.instanceId,\n type: \"custom\",\n name: customItem.name,\n id: customItem.id,\n url: customItem.url,\n menuIcon: customItem.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"link\") {\n stored.push({\n favoriteId: fav.instanceId,\n type: \"link\",\n name: fav.name,\n // id: fav.id,\n url: fav.link,\n menuIcon: fav.icon,\n } as FavMenuItem);\n }\n }\n return stored;\n}\n\nexport async function favorite(\n item: MenuItemDataNormal\n): Promise<{ instanceId?: string }> {\n return LaunchpadApi_createCollectionV2(\n {\n type: item.type === \"app\" ? \"microApp\" : \"customItem\",\n relatedInstanceId: item.instanceId,\n },\n {\n interceptorParams: { ignoreLoadingBar: true },\n }\n );\n}\n\nexport async function undoFavorite(item: FavMenuItem) {\n if (item.favoriteId) {\n return LaunchpadApi_deleteCollectionV2(item.favoriteId);\n }\n\n return fetchRawFavorites().then((list) => {\n const foundId = list.find((fav) =>\n item.type === \"app\"\n ? fav.type === \"microApp\" && fav.relatedApp?.appId === item.id\n : item.type === \"custom\" && fav.relatedCustomItem?.id === item.id\n )?.instanceId;\n\n if (foundId) {\n return LaunchpadApi_deleteCollectionV2(foundId);\n }\n // eslint-disable-next-line no-console\n console.error(\"Menu item to unstar not found:\", item);\n });\n}\n","import type {\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n} from \"./interfaces\";\n\nexport function search(\n allMenuGroups: MenuGroupData[],\n q: string\n): MenuGroupData[] {\n if (!q) {\n return allMenuGroups;\n }\n const lowerQ = q.toLowerCase();\n const groups: MenuGroupData[] = allMenuGroups\n .map((group) => ({\n ...group,\n items: group.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItemApp(item, lowerQ);\n case \"custom\":\n return matchMenuItemCustom(item, lowerQ);\n case \"dir\": {\n const filteredSubItems = item.items\n .map((sub) =>\n sub.type === \"app\"\n ? matchMenuItemApp(sub, lowerQ)\n : sub.type === \"custom\"\n ? matchMenuItemCustom(sub, lowerQ)\n : null\n )\n .filter(Boolean) as MenuItemData[];\n return filteredSubItems.length > 0\n ? {\n ...item,\n items: filteredSubItems,\n }\n : null;\n }\n }\n })\n // Ignore not matched items\n .filter(Boolean) as MenuItemData[],\n }))\n // ignore empty desktops\n .filter((group) => group.items.length > 0);\n return groups;\n}\n\nfunction matchMenuItemApp(item: MenuItemDataApp, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n\nfunction matchMenuItemCustom(item: MenuItemDataCustom, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { handleHttpError, httpErrorToString } from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { DeferredService } from \"../shared/DeferredService\";\nimport { showDialog, showNotification } from \"./wrapped-bricks\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemDataCustom,\n MenuItemDataLink,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n StoredMenuItem,\n} from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n undoFavorite,\n} from \"./api\";\nimport { search } from \"./search\";\nimport { FAVORITES_LIMIT, RECENT_VISITS_LIMIT } from \"./constants\";\n\nconst storageKey = `launchpad-recent-visits:${(\n auth.getAuth() as Record<string, string>\n)?.org}`;\nconst storage = new JsonStorage(localStorage);\n\nlet candidateDesktops: MenuGroupData[] = [];\nlet candidateMicroAppsById = new Map<string, MicroAppWithInstanceId>();\nlet candidateCustomLinksById = new Map<string, MenuItemDataCustom>();\nlet preLoaded = false;\n\nlet candidateFavorites: FavMenuItem[] = [];\nlet preLoadedFavorites = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n ({\n menuGroups: candidateDesktops,\n microAppsById: candidateMicroAppsById,\n customLinksById: candidateCustomLinksById,\n } = await fetchLaunchpadInfo());\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\nconst showErrorAsNotification = (error: unknown) =>\n showNotification({\n type: \"error\",\n message: httpErrorToString(error),\n });\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<MenuItemDataNormal[]>([]);\n\n const [favorites, setFavorites] = useState<FavMenuItem[]>(candidateFavorites);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n setLoadingFavorites(false);\n showErrorAsNotification(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n // Remembered recent visits maybe no longer existed in launchpad\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app\n ? {\n type: \"app\",\n name: app.localeName,\n id: app.id,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n }\n : null;\n }\n return customLinksById.get(item.id);\n })\n .filter(Boolean) as MenuItemDataNormal[];\n setRecentVisits(visits);\n }, [customLinksById, loading, microAppsById, storedRecentVisits]);\n\n const pushRecentVisit = useCallback(({ type, id }: StoredMenuItem) => {\n const visits: StoredMenuItem[] = storage.getItem(storageKey) ?? [];\n const index = visits.findIndex(\n (visit) => visit.type === type && visit.id === id\n );\n if (index > -1) {\n visits.splice(index, 1);\n }\n visits.unshift({ type, id });\n if (visits.length > RECENT_VISITS_LIMIT) {\n visits.pop();\n }\n // setStoredRecentVisits(visits);\n storage.setItem(storageKey, visits);\n }, []);\n\n const isStarred = useCallback(\n (item: MenuItemDataNormal) =>\n favorites.some((fav) => matchFavorite(item, fav)),\n [favorites]\n );\n\n const toggleStar = useCallback(\n (item: MenuItemDataNormal | MenuItemDataLink) => {\n const index = favorites.findIndex((fav) =>\n item.type === \"link\"\n ? fav.favoriteId === item.favoriteId\n : matchFavorite(item, fav)\n );\n let newFavorites: FavMenuItem[];\n if (index > -1) {\n const removed = favorites[index];\n newFavorites = favorites\n .slice(0, index)\n .concat(favorites.slice(index + 1));\n undoFavorite(removed).catch(showErrorAsNotification);\n } else {\n if (favorites.length >= FAVORITES_LIMIT) {\n showDialog({\n type: \"warn\",\n title: \"收藏数量已达上限\",\n content: `当前收藏链接数量已达上限(${FAVORITES_LIMIT}个),请删除部分收藏后再添加。`,\n });\n return;\n }\n // Assert: no link item\n const fav: FavMenuItem = { ...(item as MenuItemDataNormal) };\n newFavorites = favorites.concat(fav);\n favorite(item as MenuItemDataNormal).then((result) => {\n if (result) {\n fav.favoriteId = result.instanceId;\n }\n }, showErrorAsNotification);\n }\n setFavorites(newFavorites);\n candidateFavorites = newFavorites;\n },\n [favorites]\n );\n\n const menuGroups: MenuGroupData[] = useMemo(\n () => search(desktops, q),\n [desktops, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n };\n}\n\nexport function matchFavorite(item: MenuItemDataNormal, fav: FavMenuItem) {\n return item.instanceId && fav.instanceId\n ? fav.instanceId === item.instanceId\n : fav.type === item.type && fav.id === item.id;\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n","export class DeferredService {\n private preFetchId: number | null = null;\n private preFetchScheduled = false;\n private firstFetchPromise: Promise<unknown> | null = null;\n private isFetching = false;\n private readonly task: () => Promise<unknown>;\n\n constructor(task: () => Promise<unknown>) {\n this.task = task;\n }\n\n schedulePrefetch(): void {\n if (!this.preFetchScheduled) {\n this.preFetchScheduled = true;\n const preFetchLaunchpadInfo = async (): Promise<void> => {\n this.preFetchId = null;\n this.fetch();\n };\n // istanbul ignore if\n if (typeof window.requestIdleCallback === \"function\") {\n this.preFetchId = window.requestIdleCallback(preFetchLaunchpadInfo);\n } else {\n this.preFetchId = setTimeout(\n preFetchLaunchpadInfo\n ) as unknown as number;\n }\n }\n }\n\n fetch(eager?: boolean): Promise<unknown> {\n if (this.preFetchId) {\n // istanbul ignore if\n if (typeof window.cancelIdleCallback === \"function\") {\n cancelIdleCallback(this.preFetchId);\n } else {\n clearTimeout(this.preFetchId);\n }\n this.preFetchId = null;\n }\n\n let promise: Promise<unknown>;\n if (!this.isFetching || eager) {\n this.isFetching = true;\n promise = this.task();\n promise\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(error);\n this.firstFetchPromise = null;\n })\n .finally(() => {\n this.isFetching = false;\n });\n if (!this.firstFetchPromise) {\n this.firstFetchPromise = promise;\n }\n if (eager) {\n return promise;\n }\n }\n return this.firstFetchPromise!;\n }\n}\n","import { i18nText } from \"@next-core/i18n\";\nimport type { AppLocales, I18nData } from \"@next-core/types\";\n\nexport function getAppLocaleName(\n locales: AppLocales | undefined,\n name: string\n) {\n if (!locales) {\n return name;\n }\n const i18nData = Object.fromEntries(\n Object.entries(locales)\n .filter(([lang, resources]) => resources.name)\n .map(([lang, resources]) => [lang, resources.name])\n ) as I18nData;\n return i18nText(i18nData) ?? name;\n}\n","export class JsonStorage {\n constructor(\n private storage: Storage,\n private prefix: string = \"brick-next-\"\n ) {}\n\n setItem<T = any>(name: string, value: T): void {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n\n getItem<T = any>(name: string): T {\n return JSON.parse(this.storage.getItem(this.prefix + name) as string) as T;\n }\n\n removeItem(name: string): void {\n return this.storage.removeItem(this.prefix + name);\n }\n\n clear(): void {\n return this.storage.clear();\n }\n}\n"],"names":["LaunchpadsContext","React","useLaunchpadContext","MenuGroup","_ref","name","items","className","map","item","type","MenuItemFolder","key","concat","id","MenuItem","_ref2","_item$menuIcon","loadingFavorites","pushRecentVisit","toggleStar","isStarred","starred","useMemo","handleStarClick","useCallback","handleClick","classNames","WrappedLink","_extends","onClick","url","href","target","WrappedIcon","lib","icon","menuIcon","pick","prefix","title","SidebarMenuItem","_ref3","_item$menuIcon2","handleRemoveStar","_ref4","searching","expanded","setExpanded","useState","searchingExpanded","setSearchingExpanded","toggle","previous","useEffect","actualExpanded","FAVORITES_LIMIT","RECENT_VISITS_LIMIT","_fetchLaunchpadInfo","_asyncToGenerator","launchpadInfo","LaunchpadApi_getLaunchpadInfo","interceptorParams","ignoreLoadingBar","noAbortOnRouteChange","microAppsById","Map","storyboard","storyboards","app","localeName","getAppLocaleName","locales","set","menuGroups","customLinksById","group","desktops","get","push","_objectSpread","homepage","subItems","subItem","length","apply","arguments","fetchRawFavorites","_fetchRawFavorites","LaunchpadApi_listCollectionV2","page","pageSize","list","_fetchFavorites","stored","fav","relatedApp","favoriteId","instanceId","appId","customItem","relatedCustomItem","link","_favorite","LaunchpadApi_createCollectionV2","relatedInstanceId","_undoFavorite","LaunchpadApi_deleteCollectionV2","then","_list$find","foundId","find","_fav$relatedApp","_fav$relatedCustomIte","console","error","matchMenuItemApp","lowerQ","toLowerCase","includes","matchMenuItemCustom","storageKey","_auth$getAuth","auth","getAuth","org","storage","JsonStorage","localStorage","candidateDesktops","candidateMicroAppsById","candidateCustomLinksById","preLoaded","candidateFavorites","preLoadedFavorites","deferredLaunchpadInfo","DeferredService","fetchLaunchpadInfo","deferredFavorites","fetchFavorites","showErrorAsNotification","showNotification","message","httpErrorToString","useLaunchpadInfo","active","setDesktops","setMicroAppsById","setCustomLinksById","q","setQ","loading","setLoading","setLoadingFavorites","storedRecentVisits","setStoredRecentVisits","recentVisits","setRecentVisits","favorites","setFavorites","_storage$getItem","getItem","startFetchLaunchpadInfo","fetch","handleHttpError","startFetchFavorites","visits","filter","Boolean","_ref5","_storage$getItem2","index","findIndex","visit","splice","unshift","pop","setItem","some","matchFavorite","newFavorites","removed","slice","_x2","undoFavorite","catch","showDialog","content","_x","favorite","result","allMenuGroups","filteredSubItems","sub","search","wrapBrick","unwrapProvider","constructor","task","_defineProperty","this","schedulePrefetch","_this","preFetchScheduled","preFetchLaunchpadInfo","preFetchId","window","requestIdleCallback","setTimeout","eager","promise","cancelIdleCallback","clearTimeout","isFetching","firstFetchPromise","finally","_i18nText","i18nData","Object","fromEntries","entries","lang","resources","i18nText","undefined","value","JSON","stringify","parse","removeItem","clear"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[5381,6660],{4795:(e,r,t)=>{function n(e,r,t,n,u,a,i){try{var c=e[a](i),s=c.value}catch(e){return void t(e)}c.done?r(s):Promise.resolve(s).then(n,u)}function u(e){return function(){var r=this,t=arguments;return new Promise((function(u,a){var i=e.apply(r,t);function c(e){n(i,u,a,c,s,"next",e)}function s(e){n(i,u,a,c,s,"throw",e)}c(void 0)}))}}t.d(r,{Z:()=>u})},6660:(e,r,t)=>{t.r(r),t.d(r,{ReactUseBrick:()=>i,ReactUseMultipleBricks:()=>c,useCurrentApp:()=>f,useCurrentTheme:()=>d,useRecentApps:()=>v,useRouteRender:()=>_});var n=t(4795),u=t(8657),a=t(1343),i=function(e){var{useBrick:r,data:t}=e,[i,c]=(0,u.useState)(null),s=(0,u.useRef)(),[o,l]=(0,u.useState)(),d=(0,u.useRef)(0),v=(0,u.useMemo)((()=>{var e;return null===(e=a.__secret_internals.getRenderId)||void 0===e?void 0:e.call(a.__secret_internals)}),[]);(0,u.useEffect)((()=>{var e=!1;function u(){return u=(0,n.Z)((function*(){try{var n=yield a.__secret_internals.renderUseBrick(r,t);if(e)return;c(n),l(++d.current)}catch(e){(function(e){var r,t=null===(r=a.__secret_internals.getRenderId)||void 0===r?void 0:r.call(a.__secret_internals);return!e||!t||e===t})(v)&&(console.error("Render useBrick failed:",r,"with data:",t),(0,a.handleHttpError)(e))}})),u.apply(this,arguments)}return function(){u.apply(this,arguments)}(),()=>{e=!0}}),[t,r,v]);var f=(0,u.useCallback)((e=>{e?s.current=a.__secret_internals.mountUseBrick(i,e):(a.__secret_internals.unmountUseBrick(i,s.current),s.current=void 0)}),[i]);if(!i)return null;var{tagName:_}=i;if(null===_)return null;var p=_;return u.createElement(p,{key:o,ref:f})},c=function(e){var{useBrick:r,data:t}=e;return Array.isArray(r)?u.createElement(u.Fragment,null,r.map(((e,r)=>u.createElement(i,{key:r,useBrick:e,data:t})))):u.createElement(i,{useBrick:r,data:t})},s=(0,a.getV2RuntimeFromDll)();if(s){var{SingleBrickAsComponentFactory:o,BrickAsComponentFactory:l}=s;o&&l&&(i=o(u),c=l(u))}function d(){var[e,r]=(0,u.useState)(a.getCurrentTheme);return(0,u.useEffect)((()=>{var e=e=>{r(e.detail)};return window.addEventListener("theme.change",e),()=>{window.removeEventListener("theme.change",e)}}),[]),e}function v(){var[e,r]=u.useState((()=>(0,a.getRuntime)().getRecentApps()));return u.useEffect((()=>{var e=e=>{r(e.detail)};return window.addEventListener("app.change",e),()=>window.removeEventListener("app.change",e)}),[]),e}function f(){return v().currentApp}function _(){var[e,r]=u.useState(null);return u.useEffect((()=>{var e=e=>{r(e.detail)};return window.addEventListener("route.render",e),()=>window.removeEventListener("route.render",e)}),[]),e}}}]);
2
+ //# sourceMappingURL=5381.b04e981c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/5381.0e42999e.js","mappings":"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","sources":["webpack:///../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/ReactUseBrick.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useCurrentTheme.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useRecentApps.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useCurrentApp.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useRouteRender.js"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { __secret_internals, handleHttpError, getV2RuntimeFromDll } from \"@next-core/runtime\";\n// Note: always synchronize code in LegacyUseBrick:\n// `bricks/v2-adapter/src/data-providers/legacy-brick-kit/getLegacyUseBrick.ts`\nvar ReactUseBrick = function ReactUseBrick(_ref) {\n var {\n useBrick,\n data\n } = _ref;\n var [renderResult, setRenderResult] = useState(null);\n var mountResult = useRef();\n var [renderKey, setRenderKey] = useState();\n var IdCounterRef = useRef(0);\n var initialRenderId = useMemo(() => {\n var _secret_internals$ge;\n return (_secret_internals$ge = __secret_internals.getRenderId) === null || _secret_internals$ge === void 0 ? void 0 : _secret_internals$ge.call(__secret_internals);\n }, []);\n useEffect(() => {\n var ignore = false;\n function init() {\n return _init.apply(this, arguments);\n }\n function _init() {\n _init = _asyncToGenerator(function* () {\n try {\n var newRender = yield __secret_internals.renderUseBrick(useBrick, data);\n if (ignore) {\n return;\n }\n setRenderResult(newRender);\n setRenderKey(getUniqueId(IdCounterRef));\n } catch (error) {\n if (isTheSameRender(initialRenderId)) {\n // eslint-disable-next-line no-console\n console.error(\"Render useBrick failed:\", useBrick, \"with data:\", data);\n handleHttpError(error);\n }\n }\n });\n return _init.apply(this, arguments);\n }\n init();\n return () => {\n ignore = true;\n };\n }, [data, useBrick, initialRenderId]);\n var refCallback = useCallback(element => {\n if (element) {\n mountResult.current = __secret_internals.mountUseBrick(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n renderResult, element);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n __secret_internals.unmountUseBrick(renderResult, mountResult.current);\n mountResult.current = undefined;\n }\n }, [renderResult]);\n if (!renderResult) {\n // Fallback when loading/\n return null;\n // return <span>🌀 Loading...</span>;\n }\n\n var {\n tagName\n } = renderResult;\n if (tagName === null) {\n return null;\n }\n var WebComponent = tagName;\n return /*#__PURE__*/React.createElement(WebComponent, {\n key: renderKey,\n ref: refCallback\n });\n};\nfunction getUniqueId(ref) {\n return ++ref.current;\n}\nfunction isTheSameRender(initialRenderId) {\n var _secret_internals$ge2;\n var newRenderId = (_secret_internals$ge2 = __secret_internals.getRenderId) === null || _secret_internals$ge2 === void 0 ? void 0 : _secret_internals$ge2.call(__secret_internals);\n return !initialRenderId || !newRenderId || initialRenderId === newRenderId;\n}\nvar ReactUseMultipleBricks = function ReactUseMultipleBricks(_ref2) {\n var {\n useBrick,\n data\n } = _ref2;\n if (Array.isArray(useBrick)) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, useBrick.map((item, index) => /*#__PURE__*/React.createElement(ReactUseBrick, {\n key: index,\n useBrick: item,\n data: data\n })));\n }\n return /*#__PURE__*/React.createElement(ReactUseBrick, {\n useBrick: useBrick,\n data: data\n });\n};\n\n// Make v3 bricks compatible with Brick Next v2.\n// istanbul ignore next\nvar v2Kit = getV2RuntimeFromDll();\n// istanbul ignore next\nif (v2Kit) {\n var {\n SingleBrickAsComponentFactory,\n BrickAsComponentFactory\n } = v2Kit;\n if (SingleBrickAsComponentFactory && BrickAsComponentFactory) {\n ReactUseBrick = SingleBrickAsComponentFactory(React);\n ReactUseMultipleBricks = BrickAsComponentFactory(React);\n }\n}\nexport { ReactUseBrick, ReactUseMultipleBricks };\n//# sourceMappingURL=ReactUseBrick.js.map","import { useEffect, useState } from \"react\";\nimport { getCurrentTheme } from \"@next-core/runtime\";\nexport function useCurrentTheme() {\n var [currentTheme, setCurrentTheme] = useState(getCurrentTheme);\n useEffect(() => {\n var listenToThemeChange = event => {\n setCurrentTheme(event.detail);\n };\n window.addEventListener(\"theme.change\", listenToThemeChange);\n return () => {\n window.removeEventListener(\"theme.change\", listenToThemeChange);\n };\n }, []);\n return currentTheme;\n}\n//# sourceMappingURL=useCurrentTheme.js.map","import React from \"react\";\nimport { getRuntime } from \"@next-core/runtime\";\nexport function useRecentApps() {\n var [recentApps, setRecentApps] = React.useState(() => getRuntime().getRecentApps());\n React.useEffect(() => {\n var listener = event => {\n setRecentApps(event.detail);\n };\n window.addEventListener(\"app.change\", listener);\n return () => window.removeEventListener(\"app.change\", listener);\n }, []);\n return recentApps;\n}\n//# sourceMappingURL=useRecentApps.js.map","import { useRecentApps } from \"./useRecentApps.js\";\n\n/**\n * 获取当前所在微应用信息的 React hooks。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const app = useCurrentApp();\n * return <div>{app.id}</div>;\n * }\n * ```\n *\n * @returns 当前所在微应用的信息。\n */\nexport function useCurrentApp() {\n return useRecentApps().currentApp;\n}\n//# sourceMappingURL=useCurrentApp.js.map","import React from \"react\";\nexport function useRouteRender() {\n var [routeRender, setRouteRender] = React.useState(null);\n React.useEffect(() => {\n var listener = event => {\n setRouteRender(event.detail);\n };\n window.addEventListener(\"route.render\", listener);\n return () => window.removeEventListener(\"route.render\", listener);\n }, []);\n return routeRender;\n}\n//# sourceMappingURL=useRouteRender.js.map"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","this","args","arguments","apply","err","undefined","ReactUseBrick","_ref","useBrick","data","renderResult","setRenderResult","useState","mountResult","useRef","renderKey","setRenderKey","IdCounterRef","initialRenderId","useMemo","_secret_internals$ge","__secret_internals","getRenderId","call","useEffect","ignore","_init","newRender","renderUseBrick","current","_secret_internals$ge2","newRenderId","isTheSameRender","console","handleHttpError","init","refCallback","useCallback","element","mountUseBrick","unmountUseBrick","tagName","WebComponent","ref","ReactUseMultipleBricks","_ref2","Array","isArray","map","item","index","v2Kit","getV2RuntimeFromDll","SingleBrickAsComponentFactory","BrickAsComponentFactory","useCurrentTheme","currentTheme","setCurrentTheme","getCurrentTheme","listenToThemeChange","event","detail","window","addEventListener","removeEventListener","useRecentApps","recentApps","setRecentApps","getRuntime","getRecentApps","listener","useCurrentApp","currentApp","useRouteRender","routeRender","setRouteRender"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/5381.b04e981c.js","mappings":"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","sources":["webpack:///../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/ReactUseBrick.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useCurrentTheme.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useRecentApps.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useCurrentApp.js","webpack:///../../node_modules/@next-core/react-runtime/dist/esm/useRouteRender.js"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { __secret_internals, handleHttpError, getV2RuntimeFromDll } from \"@next-core/runtime\";\n// Note: always synchronize code in LegacyUseBrick:\n// `bricks/v2-adapter/src/data-providers/legacy-brick-kit/getLegacyUseBrick.ts`\nvar ReactUseBrick = function ReactUseBrick(_ref) {\n var {\n useBrick,\n data\n } = _ref;\n var [renderResult, setRenderResult] = useState(null);\n var mountResult = useRef();\n var [renderKey, setRenderKey] = useState();\n var IdCounterRef = useRef(0);\n var initialRenderId = useMemo(() => {\n var _secret_internals$ge;\n return (_secret_internals$ge = __secret_internals.getRenderId) === null || _secret_internals$ge === void 0 ? void 0 : _secret_internals$ge.call(__secret_internals);\n }, []);\n useEffect(() => {\n var ignore = false;\n function init() {\n return _init.apply(this, arguments);\n }\n function _init() {\n _init = _asyncToGenerator(function* () {\n try {\n var newRender = yield __secret_internals.renderUseBrick(useBrick, data);\n if (ignore) {\n return;\n }\n setRenderResult(newRender);\n setRenderKey(getUniqueId(IdCounterRef));\n } catch (error) {\n if (isTheSameRender(initialRenderId)) {\n // eslint-disable-next-line no-console\n console.error(\"Render useBrick failed:\", useBrick, \"with data:\", data);\n handleHttpError(error);\n }\n }\n });\n return _init.apply(this, arguments);\n }\n init();\n return () => {\n ignore = true;\n };\n }, [data, useBrick, initialRenderId]);\n var refCallback = useCallback(element => {\n if (element) {\n mountResult.current = __secret_internals.mountUseBrick(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n renderResult, element);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n __secret_internals.unmountUseBrick(renderResult, mountResult.current);\n mountResult.current = undefined;\n }\n }, [renderResult]);\n if (!renderResult) {\n // Fallback when loading/\n return null;\n // return <span>🌀 Loading...</span>;\n }\n\n var {\n tagName\n } = renderResult;\n if (tagName === null) {\n return null;\n }\n var WebComponent = tagName;\n return /*#__PURE__*/React.createElement(WebComponent, {\n key: renderKey,\n ref: refCallback\n });\n};\nfunction getUniqueId(ref) {\n return ++ref.current;\n}\nfunction isTheSameRender(initialRenderId) {\n var _secret_internals$ge2;\n var newRenderId = (_secret_internals$ge2 = __secret_internals.getRenderId) === null || _secret_internals$ge2 === void 0 ? void 0 : _secret_internals$ge2.call(__secret_internals);\n return !initialRenderId || !newRenderId || initialRenderId === newRenderId;\n}\nvar ReactUseMultipleBricks = function ReactUseMultipleBricks(_ref2) {\n var {\n useBrick,\n data\n } = _ref2;\n if (Array.isArray(useBrick)) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, useBrick.map((item, index) => /*#__PURE__*/React.createElement(ReactUseBrick, {\n key: index,\n useBrick: item,\n data: data\n })));\n }\n return /*#__PURE__*/React.createElement(ReactUseBrick, {\n useBrick: useBrick,\n data: data\n });\n};\n\n// Make v3 bricks compatible with Brick Next v2.\n// istanbul ignore next\nvar v2Kit = getV2RuntimeFromDll();\n// istanbul ignore next\nif (v2Kit) {\n var {\n SingleBrickAsComponentFactory,\n BrickAsComponentFactory\n } = v2Kit;\n if (SingleBrickAsComponentFactory && BrickAsComponentFactory) {\n ReactUseBrick = SingleBrickAsComponentFactory(React);\n ReactUseMultipleBricks = BrickAsComponentFactory(React);\n }\n}\nexport { ReactUseBrick, ReactUseMultipleBricks };\n//# sourceMappingURL=ReactUseBrick.js.map","import { useEffect, useState } from \"react\";\nimport { getCurrentTheme } from \"@next-core/runtime\";\nexport function useCurrentTheme() {\n var [currentTheme, setCurrentTheme] = useState(getCurrentTheme);\n useEffect(() => {\n var listenToThemeChange = event => {\n setCurrentTheme(event.detail);\n };\n window.addEventListener(\"theme.change\", listenToThemeChange);\n return () => {\n window.removeEventListener(\"theme.change\", listenToThemeChange);\n };\n }, []);\n return currentTheme;\n}\n//# sourceMappingURL=useCurrentTheme.js.map","import React from \"react\";\nimport { getRuntime } from \"@next-core/runtime\";\nexport function useRecentApps() {\n var [recentApps, setRecentApps] = React.useState(() => getRuntime().getRecentApps());\n React.useEffect(() => {\n var listener = event => {\n setRecentApps(event.detail);\n };\n window.addEventListener(\"app.change\", listener);\n return () => window.removeEventListener(\"app.change\", listener);\n }, []);\n return recentApps;\n}\n//# sourceMappingURL=useRecentApps.js.map","import { useRecentApps } from \"./useRecentApps.js\";\n\n/**\n * 获取当前所在微应用信息的 React hooks。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const app = useCurrentApp();\n * return <div>{app.id}</div>;\n * }\n * ```\n *\n * @returns 当前所在微应用的信息。\n */\nexport function useCurrentApp() {\n return useRecentApps().currentApp;\n}\n//# sourceMappingURL=useCurrentApp.js.map","import React from \"react\";\nexport function useRouteRender() {\n var [routeRender, setRouteRender] = React.useState(null);\n React.useEffect(() => {\n var listener = event => {\n setRouteRender(event.detail);\n };\n window.addEventListener(\"route.render\", listener);\n return () => window.removeEventListener(\"route.render\", listener);\n }, []);\n return routeRender;\n}\n//# sourceMappingURL=useRouteRender.js.map"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","this","args","arguments","apply","err","undefined","ReactUseBrick","_ref","useBrick","data","renderResult","setRenderResult","useState","mountResult","useRef","renderKey","setRenderKey","IdCounterRef","initialRenderId","useMemo","_secret_internals$ge","__secret_internals","getRenderId","call","useEffect","ignore","_init","newRender","renderUseBrick","current","_secret_internals$ge2","newRenderId","isTheSameRender","console","handleHttpError","init","refCallback","useCallback","element","mountUseBrick","unmountUseBrick","tagName","WebComponent","ref","ReactUseMultipleBricks","_ref2","Array","isArray","map","item","index","v2Kit","getV2RuntimeFromDll","SingleBrickAsComponentFactory","BrickAsComponentFactory","useCurrentTheme","currentTheme","setCurrentTheme","getCurrentTheme","listenToThemeChange","event","detail","window","addEventListener","removeEventListener","useRecentApps","recentApps","setRecentApps","getRuntime","getRecentApps","listener","useCurrentApp","currentApp","useRouteRender","routeRender","setRouteRender"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[5636],{5636:(n,i,e)=>{e.r(i),e.d(i,{initializeReactI18n:()=>c,useTranslation:()=>a.useTranslation});var t=e(199),a=e(2341),s=!1;function c(n,i){(0,t.initializeI18n)(n,i),s||(s=!0,a.initReactI18next.init(t.i18n))}}}]);
2
- //# sourceMappingURL=5636.f8a78a72.js.map
1
+ "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[5636],{5636:(n,i,e)=>{e.r(i),e.d(i,{initializeReactI18n:()=>c,useTranslation:()=>a.useTranslation});var t=e(1965),a=e(2341),s=!1;function c(n,i){(0,t.initializeI18n)(n,i),s||(s=!0,a.initReactI18next.init(t.i18n))}}}]);
2
+ //# sourceMappingURL=5636.bfbebc5c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/5636.f8a78a72.js","mappings":"yNAEIA,GAAc,EACX,SAASC,EAAoBC,EAAIC,IACtC,IAAAC,gBAAeF,EAAIC,GACdH,IACHA,GAAc,EACd,EAAAK,iBAAiBC,KAAK,EAAAC,MAE1B,C","sources":["webpack:///../../node_modules/@next-core/i18n/dist/esm/react.js"],"sourcesContent":["import { i18n, initializeI18n } from \"@next-core/i18n\";\nimport { initReactI18next, useTranslation } from \"react-i18next\";\nvar initialized = false;\nexport function initializeReactI18n(NS, locales) {\n initializeI18n(NS, locales);\n if (!initialized) {\n initialized = true;\n initReactI18next.init(i18n);\n }\n}\nexport { useTranslation };\n//# sourceMappingURL=react.js.map"],"names":["initialized","initializeReactI18n","NS","locales","initializeI18n","initReactI18next","init","i18n"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/5636.bfbebc5c.js","mappings":"0NAEIA,GAAc,EACX,SAASC,EAAoBC,EAAIC,IACtC,IAAAC,gBAAeF,EAAIC,GACdH,IACHA,GAAc,EACd,EAAAK,iBAAiBC,KAAK,EAAAC,MAE1B,C","sources":["webpack:///../../node_modules/@next-core/i18n/dist/esm/react.js"],"sourcesContent":["import { i18n, initializeI18n } from \"@next-core/i18n\";\nimport { initReactI18next, useTranslation } from \"react-i18next\";\nvar initialized = false;\nexport function initializeReactI18n(NS, locales) {\n initializeI18n(NS, locales);\n if (!initialized) {\n initialized = true;\n initReactI18next.init(i18n);\n }\n}\nexport { useTranslation };\n//# sourceMappingURL=react.js.map"],"names":["initialized","initializeReactI18n","NS","locales","initializeI18n","initReactI18next","init","i18n"],"sourceRoot":""}