@multiplatform.one/backoffice 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +310 -0
  3. package/dist/cjs/chrome/BackofficeAwesomebar.cjs +95 -0
  4. package/dist/cjs/chrome/BackofficeAwesomebar.native.js +106 -0
  5. package/dist/cjs/chrome/BackofficeAwesomebar.native.js.map +1 -0
  6. package/dist/cjs/chrome/CommandPalette.cjs +453 -0
  7. package/dist/cjs/chrome/CommandPalette.native.js +505 -0
  8. package/dist/cjs/chrome/CommandPalette.native.js.map +1 -0
  9. package/dist/cjs/chrome/HelpMenu.cjs +131 -0
  10. package/dist/cjs/chrome/HelpMenu.native.js +145 -0
  11. package/dist/cjs/chrome/HelpMenu.native.js.map +1 -0
  12. package/dist/cjs/chrome/NotificationsButton.cjs +112 -0
  13. package/dist/cjs/chrome/NotificationsButton.native.js +115 -0
  14. package/dist/cjs/chrome/NotificationsButton.native.js.map +1 -0
  15. package/dist/cjs/chrome/UserMenu.cjs +158 -0
  16. package/dist/cjs/chrome/UserMenu.native.js +186 -0
  17. package/dist/cjs/chrome/UserMenu.native.js.map +1 -0
  18. package/dist/cjs/chrome/awesomebar-data.cjs +173 -0
  19. package/dist/cjs/chrome/awesomebar-data.native.js +233 -0
  20. package/dist/cjs/chrome/awesomebar-data.native.js.map +1 -0
  21. package/dist/cjs/chrome/command-palette-model.cjs +208 -0
  22. package/dist/cjs/chrome/command-palette-model.native.js +301 -0
  23. package/dist/cjs/chrome/command-palette-model.native.js.map +1 -0
  24. package/dist/cjs/chrome/help-about-dialog.cjs +136 -0
  25. package/dist/cjs/chrome/help-about-dialog.native.js +146 -0
  26. package/dist/cjs/chrome/help-about-dialog.native.js.map +1 -0
  27. package/dist/cjs/chrome/help-shortcuts-dialog.cjs +155 -0
  28. package/dist/cjs/chrome/help-shortcuts-dialog.native.js +168 -0
  29. package/dist/cjs/chrome/help-shortcuts-dialog.native.js.map +1 -0
  30. package/dist/cjs/chrome/notifications-data.cjs +190 -0
  31. package/dist/cjs/chrome/notifications-data.native.js +271 -0
  32. package/dist/cjs/chrome/notifications-data.native.js.map +1 -0
  33. package/dist/cjs/chrome/notifications-panel.cjs +171 -0
  34. package/dist/cjs/chrome/notifications-panel.native.js +189 -0
  35. package/dist/cjs/chrome/notifications-panel.native.js.map +1 -0
  36. package/dist/cjs/chrome/notifications-utils.cjs +43 -0
  37. package/dist/cjs/chrome/notifications-utils.native.js +46 -0
  38. package/dist/cjs/chrome/notifications-utils.native.js.map +1 -0
  39. package/dist/cjs/chrome/shortcuts.cjs +58 -0
  40. package/dist/cjs/chrome/shortcuts.native.js +72 -0
  41. package/dist/cjs/chrome/shortcuts.native.js.map +1 -0
  42. package/dist/cjs/chrome/user-session.cjs +100 -0
  43. package/dist/cjs/chrome/user-session.native.js +120 -0
  44. package/dist/cjs/chrome/user-session.native.js.map +1 -0
  45. package/dist/cjs/config/BackofficeProvider.cjs +164 -0
  46. package/dist/cjs/config/BackofficeProvider.native.js +217 -0
  47. package/dist/cjs/config/BackofficeProvider.native.js.map +1 -0
  48. package/dist/cjs/config/capabilities.cjs +123 -0
  49. package/dist/cjs/config/capabilities.native.js +155 -0
  50. package/dist/cjs/config/capabilities.native.js.map +1 -0
  51. package/dist/cjs/config/events.cjs +18 -0
  52. package/dist/cjs/config/events.native.js +21 -0
  53. package/dist/cjs/config/events.native.js.map +1 -0
  54. package/dist/cjs/config/slots.cjs +18 -0
  55. package/dist/cjs/config/slots.native.js +21 -0
  56. package/dist/cjs/config/slots.native.js.map +1 -0
  57. package/dist/cjs/i18n/en.cjs +101 -0
  58. package/dist/cjs/i18n/en.native.js +104 -0
  59. package/dist/cjs/i18n/en.native.js.map +1 -0
  60. package/dist/cjs/i18n/index.cjs +77 -0
  61. package/dist/cjs/i18n/index.native.js +102 -0
  62. package/dist/cjs/i18n/index.native.js.map +1 -0
  63. package/dist/cjs/index.cjs +109 -0
  64. package/dist/cjs/index.native.js +112 -0
  65. package/dist/cjs/index.native.js.map +1 -0
  66. package/dist/cjs/navigation/navigator.cjs +144 -0
  67. package/dist/cjs/navigation/navigator.native.js +307 -0
  68. package/dist/cjs/navigation/navigator.native.js.map +1 -0
  69. package/dist/cjs/navigation/paths.cjs +103 -0
  70. package/dist/cjs/navigation/paths.native.js +143 -0
  71. package/dist/cjs/navigation/paths.native.js.map +1 -0
  72. package/dist/cjs/oneAdapter/index.cjs +53 -0
  73. package/dist/cjs/oneAdapter/index.native.js +64 -0
  74. package/dist/cjs/oneAdapter/index.native.js.map +1 -0
  75. package/dist/cjs/shared/useFrappeApp.cjs +56 -0
  76. package/dist/cjs/shared/useFrappeApp.native.js +60 -0
  77. package/dist/cjs/shared/useFrappeApp.native.js.map +1 -0
  78. package/dist/cjs/shell/BackofficeShell.cjs +194 -0
  79. package/dist/cjs/shell/BackofficeShell.native.js +223 -0
  80. package/dist/cjs/shell/BackofficeShell.native.js.map +1 -0
  81. package/dist/cjs/shell/WorkspaceSidebar.cjs +115 -0
  82. package/dist/cjs/shell/WorkspaceSidebar.native.js +143 -0
  83. package/dist/cjs/shell/WorkspaceSidebar.native.js.map +1 -0
  84. package/dist/cjs/shell/useWorkspaces.cjs +131 -0
  85. package/dist/cjs/shell/useWorkspaces.native.js +173 -0
  86. package/dist/cjs/shell/useWorkspaces.native.js.map +1 -0
  87. package/dist/cjs/shell/workspaceIcons.cjs +64 -0
  88. package/dist/cjs/shell/workspaceIcons.native.js +67 -0
  89. package/dist/cjs/shell/workspaceIcons.native.js.map +1 -0
  90. package/dist/esm/chrome/BackofficeAwesomebar.mjs +70 -0
  91. package/dist/esm/chrome/BackofficeAwesomebar.mjs.map +1 -0
  92. package/dist/esm/chrome/BackofficeAwesomebar.native.js +78 -0
  93. package/dist/esm/chrome/BackofficeAwesomebar.native.js.map +1 -0
  94. package/dist/esm/chrome/CommandPalette.mjs +428 -0
  95. package/dist/esm/chrome/CommandPalette.mjs.map +1 -0
  96. package/dist/esm/chrome/CommandPalette.native.js +477 -0
  97. package/dist/esm/chrome/CommandPalette.native.js.map +1 -0
  98. package/dist/esm/chrome/HelpMenu.mjs +106 -0
  99. package/dist/esm/chrome/HelpMenu.mjs.map +1 -0
  100. package/dist/esm/chrome/HelpMenu.native.js +117 -0
  101. package/dist/esm/chrome/HelpMenu.native.js.map +1 -0
  102. package/dist/esm/chrome/NotificationsButton.mjs +87 -0
  103. package/dist/esm/chrome/NotificationsButton.mjs.map +1 -0
  104. package/dist/esm/chrome/NotificationsButton.native.js +87 -0
  105. package/dist/esm/chrome/NotificationsButton.native.js.map +1 -0
  106. package/dist/esm/chrome/UserMenu.mjs +133 -0
  107. package/dist/esm/chrome/UserMenu.mjs.map +1 -0
  108. package/dist/esm/chrome/UserMenu.native.js +147 -0
  109. package/dist/esm/chrome/UserMenu.native.js.map +1 -0
  110. package/dist/esm/chrome/awesomebar-data.mjs +144 -0
  111. package/dist/esm/chrome/awesomebar-data.mjs.map +1 -0
  112. package/dist/esm/chrome/awesomebar-data.native.js +190 -0
  113. package/dist/esm/chrome/awesomebar-data.native.js.map +1 -0
  114. package/dist/esm/chrome/command-palette-model.mjs +183 -0
  115. package/dist/esm/chrome/command-palette-model.mjs.map +1 -0
  116. package/dist/esm/chrome/command-palette-model.native.js +273 -0
  117. package/dist/esm/chrome/command-palette-model.native.js.map +1 -0
  118. package/dist/esm/chrome/help-about-dialog.mjs +111 -0
  119. package/dist/esm/chrome/help-about-dialog.mjs.map +1 -0
  120. package/dist/esm/chrome/help-about-dialog.native.js +118 -0
  121. package/dist/esm/chrome/help-about-dialog.native.js.map +1 -0
  122. package/dist/esm/chrome/help-shortcuts-dialog.mjs +130 -0
  123. package/dist/esm/chrome/help-shortcuts-dialog.mjs.map +1 -0
  124. package/dist/esm/chrome/help-shortcuts-dialog.native.js +140 -0
  125. package/dist/esm/chrome/help-shortcuts-dialog.native.js.map +1 -0
  126. package/dist/esm/chrome/notifications-data.mjs +165 -0
  127. package/dist/esm/chrome/notifications-data.mjs.map +1 -0
  128. package/dist/esm/chrome/notifications-data.native.js +232 -0
  129. package/dist/esm/chrome/notifications-data.native.js.map +1 -0
  130. package/dist/esm/chrome/notifications-panel.mjs +146 -0
  131. package/dist/esm/chrome/notifications-panel.mjs.map +1 -0
  132. package/dist/esm/chrome/notifications-panel.native.js +161 -0
  133. package/dist/esm/chrome/notifications-panel.native.js.map +1 -0
  134. package/dist/esm/chrome/notifications-utils.mjs +17 -0
  135. package/dist/esm/chrome/notifications-utils.mjs.map +1 -0
  136. package/dist/esm/chrome/notifications-utils.native.js +17 -0
  137. package/dist/esm/chrome/notifications-utils.native.js.map +1 -0
  138. package/dist/esm/chrome/shortcuts.mjs +33 -0
  139. package/dist/esm/chrome/shortcuts.mjs.map +1 -0
  140. package/dist/esm/chrome/shortcuts.native.js +44 -0
  141. package/dist/esm/chrome/shortcuts.native.js.map +1 -0
  142. package/dist/esm/chrome/user-session.mjs +73 -0
  143. package/dist/esm/chrome/user-session.mjs.map +1 -0
  144. package/dist/esm/chrome/user-session.native.js +79 -0
  145. package/dist/esm/chrome/user-session.native.js.map +1 -0
  146. package/dist/esm/config/BackofficeProvider.mjs +132 -0
  147. package/dist/esm/config/BackofficeProvider.mjs.map +1 -0
  148. package/dist/esm/config/BackofficeProvider.native.js +171 -0
  149. package/dist/esm/config/BackofficeProvider.native.js.map +1 -0
  150. package/dist/esm/config/capabilities.mjs +97 -0
  151. package/dist/esm/config/capabilities.mjs.map +1 -0
  152. package/dist/esm/config/capabilities.native.js +126 -0
  153. package/dist/esm/config/capabilities.native.js.map +1 -0
  154. package/dist/esm/config/events.mjs +2 -0
  155. package/dist/esm/config/events.mjs.map +1 -0
  156. package/dist/esm/config/events.native.js +2 -0
  157. package/dist/esm/config/events.native.js.map +1 -0
  158. package/dist/esm/config/slots.mjs +2 -0
  159. package/dist/esm/config/slots.mjs.map +1 -0
  160. package/dist/esm/config/slots.native.js +2 -0
  161. package/dist/esm/config/slots.native.js.map +1 -0
  162. package/dist/esm/i18n/en.mjs +76 -0
  163. package/dist/esm/i18n/en.mjs.map +1 -0
  164. package/dist/esm/i18n/en.native.js +76 -0
  165. package/dist/esm/i18n/en.native.js.map +1 -0
  166. package/dist/esm/i18n/index.mjs +40 -0
  167. package/dist/esm/i18n/index.mjs.map +1 -0
  168. package/dist/esm/i18n/index.native.js +62 -0
  169. package/dist/esm/i18n/index.native.js.map +1 -0
  170. package/dist/esm/index.mjs +26 -0
  171. package/dist/esm/index.mjs.map +1 -0
  172. package/dist/esm/index.native.js +26 -0
  173. package/dist/esm/index.native.js.map +1 -0
  174. package/dist/esm/navigation/navigator.mjs +115 -0
  175. package/dist/esm/navigation/navigator.mjs.map +1 -0
  176. package/dist/esm/navigation/navigator.native.js +275 -0
  177. package/dist/esm/navigation/navigator.native.js.map +1 -0
  178. package/dist/esm/navigation/paths.mjs +66 -0
  179. package/dist/esm/navigation/paths.mjs.map +1 -0
  180. package/dist/esm/navigation/paths.native.js +103 -0
  181. package/dist/esm/navigation/paths.native.js.map +1 -0
  182. package/dist/esm/oneAdapter/index.mjs +28 -0
  183. package/dist/esm/oneAdapter/index.mjs.map +1 -0
  184. package/dist/esm/oneAdapter/index.native.js +36 -0
  185. package/dist/esm/oneAdapter/index.native.js.map +1 -0
  186. package/dist/esm/shared/useFrappeApp.mjs +31 -0
  187. package/dist/esm/shared/useFrappeApp.mjs.map +1 -0
  188. package/dist/esm/shared/useFrappeApp.native.js +32 -0
  189. package/dist/esm/shared/useFrappeApp.native.js.map +1 -0
  190. package/dist/esm/shell/BackofficeShell.mjs +169 -0
  191. package/dist/esm/shell/BackofficeShell.mjs.map +1 -0
  192. package/dist/esm/shell/BackofficeShell.native.js +195 -0
  193. package/dist/esm/shell/BackofficeShell.native.js.map +1 -0
  194. package/dist/esm/shell/WorkspaceSidebar.mjs +89 -0
  195. package/dist/esm/shell/WorkspaceSidebar.mjs.map +1 -0
  196. package/dist/esm/shell/WorkspaceSidebar.native.js +114 -0
  197. package/dist/esm/shell/WorkspaceSidebar.native.js.map +1 -0
  198. package/dist/esm/shell/useWorkspaces.mjs +104 -0
  199. package/dist/esm/shell/useWorkspaces.mjs.map +1 -0
  200. package/dist/esm/shell/useWorkspaces.native.js +143 -0
  201. package/dist/esm/shell/useWorkspaces.native.js.map +1 -0
  202. package/dist/esm/shell/workspaceIcons.mjs +39 -0
  203. package/dist/esm/shell/workspaceIcons.mjs.map +1 -0
  204. package/dist/esm/shell/workspaceIcons.native.js +39 -0
  205. package/dist/esm/shell/workspaceIcons.native.js.map +1 -0
  206. package/dist/jsx/chrome/BackofficeAwesomebar.mjs +70 -0
  207. package/dist/jsx/chrome/BackofficeAwesomebar.mjs.map +1 -0
  208. package/dist/jsx/chrome/BackofficeAwesomebar.native.js +106 -0
  209. package/dist/jsx/chrome/BackofficeAwesomebar.native.js.map +1 -0
  210. package/dist/jsx/chrome/CommandPalette.mjs +428 -0
  211. package/dist/jsx/chrome/CommandPalette.mjs.map +1 -0
  212. package/dist/jsx/chrome/CommandPalette.native.js +505 -0
  213. package/dist/jsx/chrome/CommandPalette.native.js.map +1 -0
  214. package/dist/jsx/chrome/HelpMenu.mjs +106 -0
  215. package/dist/jsx/chrome/HelpMenu.mjs.map +1 -0
  216. package/dist/jsx/chrome/HelpMenu.native.js +145 -0
  217. package/dist/jsx/chrome/HelpMenu.native.js.map +1 -0
  218. package/dist/jsx/chrome/NotificationsButton.mjs +87 -0
  219. package/dist/jsx/chrome/NotificationsButton.mjs.map +1 -0
  220. package/dist/jsx/chrome/NotificationsButton.native.js +115 -0
  221. package/dist/jsx/chrome/NotificationsButton.native.js.map +1 -0
  222. package/dist/jsx/chrome/UserMenu.mjs +133 -0
  223. package/dist/jsx/chrome/UserMenu.mjs.map +1 -0
  224. package/dist/jsx/chrome/UserMenu.native.js +186 -0
  225. package/dist/jsx/chrome/UserMenu.native.js.map +1 -0
  226. package/dist/jsx/chrome/awesomebar-data.mjs +144 -0
  227. package/dist/jsx/chrome/awesomebar-data.mjs.map +1 -0
  228. package/dist/jsx/chrome/awesomebar-data.native.js +233 -0
  229. package/dist/jsx/chrome/awesomebar-data.native.js.map +1 -0
  230. package/dist/jsx/chrome/command-palette-model.mjs +183 -0
  231. package/dist/jsx/chrome/command-palette-model.mjs.map +1 -0
  232. package/dist/jsx/chrome/command-palette-model.native.js +301 -0
  233. package/dist/jsx/chrome/command-palette-model.native.js.map +1 -0
  234. package/dist/jsx/chrome/help-about-dialog.mjs +111 -0
  235. package/dist/jsx/chrome/help-about-dialog.mjs.map +1 -0
  236. package/dist/jsx/chrome/help-about-dialog.native.js +146 -0
  237. package/dist/jsx/chrome/help-about-dialog.native.js.map +1 -0
  238. package/dist/jsx/chrome/help-shortcuts-dialog.mjs +130 -0
  239. package/dist/jsx/chrome/help-shortcuts-dialog.mjs.map +1 -0
  240. package/dist/jsx/chrome/help-shortcuts-dialog.native.js +168 -0
  241. package/dist/jsx/chrome/help-shortcuts-dialog.native.js.map +1 -0
  242. package/dist/jsx/chrome/notifications-data.mjs +165 -0
  243. package/dist/jsx/chrome/notifications-data.mjs.map +1 -0
  244. package/dist/jsx/chrome/notifications-data.native.js +271 -0
  245. package/dist/jsx/chrome/notifications-data.native.js.map +1 -0
  246. package/dist/jsx/chrome/notifications-panel.mjs +146 -0
  247. package/dist/jsx/chrome/notifications-panel.mjs.map +1 -0
  248. package/dist/jsx/chrome/notifications-panel.native.js +189 -0
  249. package/dist/jsx/chrome/notifications-panel.native.js.map +1 -0
  250. package/dist/jsx/chrome/notifications-utils.mjs +17 -0
  251. package/dist/jsx/chrome/notifications-utils.mjs.map +1 -0
  252. package/dist/jsx/chrome/notifications-utils.native.js +46 -0
  253. package/dist/jsx/chrome/notifications-utils.native.js.map +1 -0
  254. package/dist/jsx/chrome/shortcuts.mjs +33 -0
  255. package/dist/jsx/chrome/shortcuts.mjs.map +1 -0
  256. package/dist/jsx/chrome/shortcuts.native.js +72 -0
  257. package/dist/jsx/chrome/shortcuts.native.js.map +1 -0
  258. package/dist/jsx/chrome/user-session.mjs +73 -0
  259. package/dist/jsx/chrome/user-session.mjs.map +1 -0
  260. package/dist/jsx/chrome/user-session.native.js +120 -0
  261. package/dist/jsx/chrome/user-session.native.js.map +1 -0
  262. package/dist/jsx/config/BackofficeProvider.mjs +132 -0
  263. package/dist/jsx/config/BackofficeProvider.mjs.map +1 -0
  264. package/dist/jsx/config/BackofficeProvider.native.js +217 -0
  265. package/dist/jsx/config/BackofficeProvider.native.js.map +1 -0
  266. package/dist/jsx/config/capabilities.mjs +97 -0
  267. package/dist/jsx/config/capabilities.mjs.map +1 -0
  268. package/dist/jsx/config/capabilities.native.js +155 -0
  269. package/dist/jsx/config/capabilities.native.js.map +1 -0
  270. package/dist/jsx/config/events.mjs +2 -0
  271. package/dist/jsx/config/events.mjs.map +1 -0
  272. package/dist/jsx/config/events.native.js +21 -0
  273. package/dist/jsx/config/events.native.js.map +1 -0
  274. package/dist/jsx/config/slots.mjs +2 -0
  275. package/dist/jsx/config/slots.mjs.map +1 -0
  276. package/dist/jsx/config/slots.native.js +21 -0
  277. package/dist/jsx/config/slots.native.js.map +1 -0
  278. package/dist/jsx/i18n/en.mjs +76 -0
  279. package/dist/jsx/i18n/en.mjs.map +1 -0
  280. package/dist/jsx/i18n/en.native.js +104 -0
  281. package/dist/jsx/i18n/en.native.js.map +1 -0
  282. package/dist/jsx/i18n/index.mjs +40 -0
  283. package/dist/jsx/i18n/index.mjs.map +1 -0
  284. package/dist/jsx/i18n/index.native.js +102 -0
  285. package/dist/jsx/i18n/index.native.js.map +1 -0
  286. package/dist/jsx/index.js +26 -0
  287. package/dist/jsx/index.js.map +1 -0
  288. package/dist/jsx/index.mjs +26 -0
  289. package/dist/jsx/index.mjs.map +1 -0
  290. package/dist/jsx/index.native.js +112 -0
  291. package/dist/jsx/index.native.js.map +1 -0
  292. package/dist/jsx/navigation/navigator.mjs +115 -0
  293. package/dist/jsx/navigation/navigator.mjs.map +1 -0
  294. package/dist/jsx/navigation/navigator.native.js +307 -0
  295. package/dist/jsx/navigation/navigator.native.js.map +1 -0
  296. package/dist/jsx/navigation/paths.mjs +66 -0
  297. package/dist/jsx/navigation/paths.mjs.map +1 -0
  298. package/dist/jsx/navigation/paths.native.js +143 -0
  299. package/dist/jsx/navigation/paths.native.js.map +1 -0
  300. package/dist/jsx/oneAdapter/index.mjs +28 -0
  301. package/dist/jsx/oneAdapter/index.mjs.map +1 -0
  302. package/dist/jsx/oneAdapter/index.native.js +64 -0
  303. package/dist/jsx/oneAdapter/index.native.js.map +1 -0
  304. package/dist/jsx/shared/useFrappeApp.mjs +31 -0
  305. package/dist/jsx/shared/useFrappeApp.mjs.map +1 -0
  306. package/dist/jsx/shared/useFrappeApp.native.js +60 -0
  307. package/dist/jsx/shared/useFrappeApp.native.js.map +1 -0
  308. package/dist/jsx/shell/BackofficeShell.mjs +169 -0
  309. package/dist/jsx/shell/BackofficeShell.mjs.map +1 -0
  310. package/dist/jsx/shell/BackofficeShell.native.js +223 -0
  311. package/dist/jsx/shell/BackofficeShell.native.js.map +1 -0
  312. package/dist/jsx/shell/WorkspaceSidebar.mjs +89 -0
  313. package/dist/jsx/shell/WorkspaceSidebar.mjs.map +1 -0
  314. package/dist/jsx/shell/WorkspaceSidebar.native.js +143 -0
  315. package/dist/jsx/shell/WorkspaceSidebar.native.js.map +1 -0
  316. package/dist/jsx/shell/useWorkspaces.mjs +104 -0
  317. package/dist/jsx/shell/useWorkspaces.mjs.map +1 -0
  318. package/dist/jsx/shell/useWorkspaces.native.js +173 -0
  319. package/dist/jsx/shell/useWorkspaces.native.js.map +1 -0
  320. package/dist/jsx/shell/workspaceIcons.mjs +39 -0
  321. package/dist/jsx/shell/workspaceIcons.mjs.map +1 -0
  322. package/dist/jsx/shell/workspaceIcons.native.js +67 -0
  323. package/dist/jsx/shell/workspaceIcons.native.js.map +1 -0
  324. package/package.json +123 -0
  325. package/src/chrome/BackofficeAwesomebar.tsx +89 -0
  326. package/src/chrome/CommandPalette.spec.tsx +252 -0
  327. package/src/chrome/CommandPalette.tsx +520 -0
  328. package/src/chrome/HelpMenu.tsx +119 -0
  329. package/src/chrome/NotificationsButton.tsx +87 -0
  330. package/src/chrome/UserMenu.tsx +173 -0
  331. package/src/chrome/awesomebar-data.tsx +252 -0
  332. package/src/chrome/command-palette-model.ts +291 -0
  333. package/src/chrome/help-about-dialog.tsx +130 -0
  334. package/src/chrome/help-shortcuts-dialog.tsx +144 -0
  335. package/src/chrome/notifications-data.tsx +287 -0
  336. package/src/chrome/notifications-panel.tsx +175 -0
  337. package/src/chrome/notifications-utils.tsx +44 -0
  338. package/src/chrome/shortcuts.ts +53 -0
  339. package/src/chrome/user-session.tsx +116 -0
  340. package/src/config/BackofficeProvider.spec.tsx +126 -0
  341. package/src/config/BackofficeProvider.tsx +315 -0
  342. package/src/config/capabilities.ts +172 -0
  343. package/src/config/events.ts +19 -0
  344. package/src/config/slots.ts +28 -0
  345. package/src/i18n/en.ts +83 -0
  346. package/src/i18n/index.ts +69 -0
  347. package/src/index.ts +150 -0
  348. package/src/navigation/navigator.spec.ts +106 -0
  349. package/src/navigation/navigator.ts +209 -0
  350. package/src/navigation/paths.ts +146 -0
  351. package/src/oneAdapter/index.tsx +61 -0
  352. package/src/shared/useFrappeApp.ts +39 -0
  353. package/src/shell/BackofficeShell.tsx +222 -0
  354. package/src/shell/WorkspaceSidebar.tsx +119 -0
  355. package/src/shell/useWorkspaces.ts +202 -0
  356. package/src/shell/workspaceIcons.ts +76 -0
  357. package/types/chrome/BackofficeAwesomebar.d.ts +12 -0
  358. package/types/chrome/BackofficeAwesomebar.d.ts.map +1 -0
  359. package/types/chrome/CommandPalette.d.ts +6 -0
  360. package/types/chrome/CommandPalette.d.ts.map +1 -0
  361. package/types/chrome/HelpMenu.d.ts +2 -0
  362. package/types/chrome/HelpMenu.d.ts.map +1 -0
  363. package/types/chrome/NotificationsButton.d.ts +2 -0
  364. package/types/chrome/NotificationsButton.d.ts.map +1 -0
  365. package/types/chrome/UserMenu.d.ts +6 -0
  366. package/types/chrome/UserMenu.d.ts.map +1 -0
  367. package/types/chrome/awesomebar-data.d.ts +52 -0
  368. package/types/chrome/awesomebar-data.d.ts.map +1 -0
  369. package/types/chrome/command-palette-model.d.ts +47 -0
  370. package/types/chrome/command-palette-model.d.ts.map +1 -0
  371. package/types/chrome/help-about-dialog.d.ts +12 -0
  372. package/types/chrome/help-about-dialog.d.ts.map +1 -0
  373. package/types/chrome/help-shortcuts-dialog.d.ts +6 -0
  374. package/types/chrome/help-shortcuts-dialog.d.ts.map +1 -0
  375. package/types/chrome/notifications-data.d.ts +34 -0
  376. package/types/chrome/notifications-data.d.ts.map +1 -0
  377. package/types/chrome/notifications-panel.d.ts +11 -0
  378. package/types/chrome/notifications-panel.d.ts.map +1 -0
  379. package/types/chrome/notifications-utils.d.ts +21 -0
  380. package/types/chrome/notifications-utils.d.ts.map +1 -0
  381. package/types/chrome/shortcuts.d.ts +6 -0
  382. package/types/chrome/shortcuts.d.ts.map +1 -0
  383. package/types/chrome/user-session.d.ts +19 -0
  384. package/types/chrome/user-session.d.ts.map +1 -0
  385. package/types/config/BackofficeProvider.d.ts +128 -0
  386. package/types/config/BackofficeProvider.d.ts.map +1 -0
  387. package/types/config/capabilities.d.ts +109 -0
  388. package/types/config/capabilities.d.ts.map +1 -0
  389. package/types/config/events.d.ts +39 -0
  390. package/types/config/events.d.ts.map +1 -0
  391. package/types/config/slots.d.ts +32 -0
  392. package/types/config/slots.d.ts.map +1 -0
  393. package/types/i18n/en.d.ts +83 -0
  394. package/types/i18n/en.d.ts.map +1 -0
  395. package/types/i18n/index.d.ts +27 -0
  396. package/types/i18n/index.d.ts.map +1 -0
  397. package/types/index.d.ts +55 -0
  398. package/types/index.d.ts.map +1 -0
  399. package/types/navigation/navigator.d.ts +98 -0
  400. package/types/navigation/navigator.d.ts.map +1 -0
  401. package/types/navigation/paths.d.ts +60 -0
  402. package/types/navigation/paths.d.ts.map +1 -0
  403. package/types/oneAdapter/index.d.ts +8 -0
  404. package/types/oneAdapter/index.d.ts.map +1 -0
  405. package/types/shared/useFrappeApp.d.ts +10 -0
  406. package/types/shared/useFrappeApp.d.ts.map +1 -0
  407. package/types/shell/BackofficeShell.d.ts +10 -0
  408. package/types/shell/BackofficeShell.d.ts.map +1 -0
  409. package/types/shell/WorkspaceSidebar.d.ts +9 -0
  410. package/types/shell/WorkspaceSidebar.d.ts.map +1 -0
  411. package/types/shell/useWorkspaces.d.ts +43 -0
  412. package/types/shell/useWorkspaces.d.ts.map +1 -0
  413. package/types/shell/workspaceIcons.d.ts +9 -0
  414. package/types/shell/workspaceIcons.d.ts.map +1 -0
@@ -0,0 +1,146 @@
1
+ import { Avatar, Button, EmptyState, Separator, SizableText, Skeleton, SkeletonCircle, Text, View, XStack, YStack } from "@multiplatform.one/components";
2
+ import { formatRelativeTimestamp } from "@multiplatform.one/theme";
3
+ import { GearSixIcon } from "@phosphor-icons/react";
4
+ import { useTranslation } from "react-i18next";
5
+ import { BACKOFFICE_I18N_NAMESPACE } from "../i18n/index.mjs";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ function NotificationRow({
8
+ item,
9
+ onPress
10
+ }) {
11
+ const {
12
+ t
13
+ } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
14
+ const subject = item.subjectText || t("notifications.untitled", "Notification");
15
+ const relative = formatRelativeTimestamp(item.timestampMs ?? item.creation);
16
+ return /* @__PURE__ */jsxs(XStack, {
17
+ alignItems: "flex-start",
18
+ gap: "$3",
19
+ paddingHorizontal: "$3",
20
+ paddingVertical: "$2.5",
21
+ backgroundColor: item.unread ? "$color2" : "transparent",
22
+ hoverStyle: {
23
+ backgroundColor: "$color3"
24
+ },
25
+ pressStyle: {
26
+ backgroundColor: "$color4"
27
+ },
28
+ cursor: "pointer",
29
+ onPress,
30
+ role: "button",
31
+ "aria-label": subject,
32
+ "data-testid": "backoffice-notification-row",
33
+ children: [/* @__PURE__ */jsx(Avatar, {
34
+ name: item.from_user || "?",
35
+ size: "$2.5"
36
+ }), /* @__PURE__ */jsxs(YStack, {
37
+ flex: 1,
38
+ minWidth: 0,
39
+ gap: "$1",
40
+ children: [/* @__PURE__ */jsx(Text, {
41
+ fontSize: "$3",
42
+ fontWeight: item.unread ? "600" : "400",
43
+ color: item.unread ? "$color12" : "$color11",
44
+ numberOfLines: 2,
45
+ children: subject
46
+ }), relative ? /* @__PURE__ */jsx(Text, {
47
+ fontSize: "$2",
48
+ color: "$color9",
49
+ children: relative
50
+ }) : null]
51
+ }), item.unread && /* @__PURE__ */jsx(View, {
52
+ width: 8,
53
+ height: 8,
54
+ borderRadius: 1e3,
55
+ backgroundColor: "$accentBackground",
56
+ marginTop: "$1.5",
57
+ flexShrink: 0,
58
+ "aria-hidden": true
59
+ })]
60
+ });
61
+ }
62
+ function NotificationSkeletonRows() {
63
+ return /* @__PURE__ */jsx(YStack, {
64
+ "data-testid": "backoffice-notifications-loading",
65
+ children: Array.from({
66
+ length: 3
67
+ }, (_, index) => /* @__PURE__ */jsxs(XStack, {
68
+ alignItems: "center",
69
+ gap: "$3",
70
+ paddingHorizontal: "$3",
71
+ paddingVertical: "$2.5",
72
+ children: [/* @__PURE__ */jsx(SkeletonCircle, {
73
+ size: 28
74
+ }), /* @__PURE__ */jsxs(YStack, {
75
+ flex: 1,
76
+ gap: "$1.5",
77
+ children: [/* @__PURE__ */jsx(Skeleton, {
78
+ height: 12,
79
+ width: "85%"
80
+ }), /* @__PURE__ */jsx(Skeleton, {
81
+ height: 10,
82
+ width: 64
83
+ })]
84
+ })]
85
+ }, index))
86
+ });
87
+ }
88
+ function NotificationsPanel({
89
+ items,
90
+ isLoading,
91
+ width,
92
+ onItemPress,
93
+ onMarkAllRead
94
+ }) {
95
+ const {
96
+ t
97
+ } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
98
+ const hasUnread = items.some(item => item.unread);
99
+ return /* @__PURE__ */jsxs(YStack, {
100
+ width,
101
+ maxWidth: "100%",
102
+ paddingVertical: "$2",
103
+ "data-testid": "backoffice-notifications-panel",
104
+ children: [/* @__PURE__ */jsxs(XStack, {
105
+ alignItems: "center",
106
+ gap: "$2",
107
+ paddingHorizontal: "$3",
108
+ paddingBottom: "$2",
109
+ children: [/* @__PURE__ */jsx(SizableText, {
110
+ size: "$4",
111
+ fontWeight: "700",
112
+ flex: 1,
113
+ numberOfLines: 1,
114
+ children: t("notifications.title", "Notifications")
115
+ }), /* @__PURE__ */jsx(Button, {
116
+ chromeless: true,
117
+ size: "$2",
118
+ disabled: !hasUnread,
119
+ opacity: hasUnread ? 1 : 0.5,
120
+ onPress: onMarkAllRead,
121
+ "data-testid": "backoffice-notifications-mark-all",
122
+ children: t("notifications.markAllRead", "Mark all as read")
123
+ }), /* @__PURE__ */jsx(Button, {
124
+ chromeless: true,
125
+ circular: true,
126
+ size: "$2",
127
+ icon: GearSixIcon,
128
+ disabled: true,
129
+ opacity: 0.5,
130
+ "aria-label": t("notifications.settingsUnavailable", "Notification settings (not available yet)")
131
+ })]
132
+ }), /* @__PURE__ */jsx(Separator, {}), isLoading ? /* @__PURE__ */jsx(NotificationSkeletonRows, {}) : items.length === 0 ? /* @__PURE__ */jsx(EmptyState, {
133
+ compact: true,
134
+ paddingVertical: "$6",
135
+ title: t("notifications.emptyTitle", "No new notifications"),
136
+ description: t("notifications.emptyDescription", "Mentions, assignments, and shares will show up here.")
137
+ }) : /* @__PURE__ */jsx(YStack, {
138
+ children: items.map(item => /* @__PURE__ */jsx(NotificationRow, {
139
+ item,
140
+ onPress: () => onItemPress(item)
141
+ }, item.name))
142
+ })]
143
+ });
144
+ }
145
+ export { NotificationsPanel };
146
+ //# sourceMappingURL=notifications-panel.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Avatar","Button","EmptyState","Separator","SizableText","Skeleton","SkeletonCircle","Text","View","XStack","YStack","formatRelativeTimestamp","GearSixIcon","useTranslation","BACKOFFICE_I18N_NAMESPACE","jsx","jsxs","NotificationRow","item","onPress","t","subject","subjectText","relative","timestampMs","creation","alignItems","gap","paddingHorizontal","paddingVertical","backgroundColor","unread","hoverStyle","pressStyle","cursor","role","children","name","from_user","size","flex","minWidth","fontSize","fontWeight","color","numberOfLines","width","height","borderRadius","marginTop","flexShrink","NotificationSkeletonRows","Array","from","length","_","index","NotificationsPanel","items","isLoading","onItemPress","onMarkAllRead","hasUnread","some","maxWidth","paddingBottom","chromeless","disabled","opacity","circular","icon","compact","title","description","map"],"sources":["../../../src/chrome/notifications-panel.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,161 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Avatar, Button, EmptyState, Separator, SizableText, Skeleton, SkeletonCircle, Text, View, XStack, YStack } from "@multiplatform.one/components";
3
+ import { formatRelativeTimestamp } from "@multiplatform.one/theme";
4
+ import { GearSixIcon } from "@phosphor-icons/react";
5
+ import { useTranslation } from "react-i18next";
6
+ import { BACKOFFICE_I18N_NAMESPACE } from "../i18n/index.native.js";
7
+ function NotificationRow(param) {
8
+ var {
9
+ item,
10
+ onPress
11
+ } = param;
12
+ var _item_timestampMs;
13
+ var {
14
+ t
15
+ } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
16
+ var subject = item.subjectText || t("notifications.untitled", "Notification");
17
+ var relative = formatRelativeTimestamp((_item_timestampMs = item.timestampMs) !== null && _item_timestampMs !== void 0 ? _item_timestampMs : item.creation);
18
+ return /* @__PURE__ */_jsxs(XStack, {
19
+ alignItems: "flex-start",
20
+ gap: "$3",
21
+ paddingHorizontal: "$3",
22
+ paddingVertical: "$2.5",
23
+ backgroundColor: item.unread ? "$color2" : "transparent",
24
+ hoverStyle: {
25
+ backgroundColor: "$color3"
26
+ },
27
+ pressStyle: {
28
+ backgroundColor: "$color4"
29
+ },
30
+ cursor: "pointer",
31
+ onPress,
32
+ role: "button",
33
+ "aria-label": subject,
34
+ "data-testid": "backoffice-notification-row",
35
+ children: [/* @__PURE__ */_jsx(Avatar, {
36
+ name: item.from_user || "?",
37
+ size: "$2.5"
38
+ }), /* @__PURE__ */_jsxs(YStack, {
39
+ flex: 1,
40
+ minWidth: 0,
41
+ gap: "$1",
42
+ children: [/* @__PURE__ */_jsx(Text, {
43
+ fontSize: "$3",
44
+ fontWeight: item.unread ? "600" : "400",
45
+ color: item.unread ? "$color12" : "$color11",
46
+ numberOfLines: 2,
47
+ children: subject
48
+ }), relative ? /* @__PURE__ */_jsx(Text, {
49
+ fontSize: "$2",
50
+ color: "$color9",
51
+ children: relative
52
+ }) : null]
53
+ }), item.unread && /* @__PURE__ */_jsx(View, {
54
+ width: 8,
55
+ height: 8,
56
+ borderRadius: 1e3,
57
+ backgroundColor: "$accentBackground",
58
+ marginTop: "$1.5",
59
+ flexShrink: 0,
60
+ "aria-hidden": true
61
+ })]
62
+ });
63
+ }
64
+ function NotificationSkeletonRows() {
65
+ return /* @__PURE__ */_jsx(YStack, {
66
+ "data-testid": "backoffice-notifications-loading",
67
+ children: Array.from({
68
+ length: 3
69
+ }, function (_, index) {
70
+ return /* @__PURE__ */_jsxs(XStack, {
71
+ alignItems: "center",
72
+ gap: "$3",
73
+ paddingHorizontal: "$3",
74
+ paddingVertical: "$2.5",
75
+ children: [/* @__PURE__ */_jsx(SkeletonCircle, {
76
+ size: 28
77
+ }), /* @__PURE__ */_jsxs(YStack, {
78
+ flex: 1,
79
+ gap: "$1.5",
80
+ children: [/* @__PURE__ */_jsx(Skeleton, {
81
+ height: 12,
82
+ width: "85%"
83
+ }), /* @__PURE__ */_jsx(Skeleton, {
84
+ height: 10,
85
+ width: 64
86
+ })]
87
+ })]
88
+ }, index);
89
+ })
90
+ });
91
+ }
92
+ function NotificationsPanel(param) {
93
+ var {
94
+ items,
95
+ isLoading,
96
+ width,
97
+ onItemPress,
98
+ onMarkAllRead
99
+ } = param;
100
+ var {
101
+ t
102
+ } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
103
+ var hasUnread = items.some(function (item) {
104
+ return item.unread;
105
+ });
106
+ return /* @__PURE__ */_jsxs(YStack, {
107
+ width,
108
+ maxWidth: "100%",
109
+ paddingVertical: "$2",
110
+ "data-testid": "backoffice-notifications-panel",
111
+ children: [/* @__PURE__ */_jsxs(XStack, {
112
+ alignItems: "center",
113
+ gap: "$2",
114
+ paddingHorizontal: "$3",
115
+ paddingBottom: "$2",
116
+ children: [/* @__PURE__ */_jsx(SizableText, {
117
+ size: "$4",
118
+ fontWeight: "700",
119
+ flex: 1,
120
+ numberOfLines: 1,
121
+ children: t("notifications.title", "Notifications")
122
+ }), /* @__PURE__ */_jsx(Button, {
123
+ chromeless: true,
124
+ size: "$2",
125
+ disabled: !hasUnread,
126
+ opacity: hasUnread ? 1 : 0.5,
127
+ onPress: onMarkAllRead,
128
+ "data-testid": "backoffice-notifications-mark-all",
129
+ children: t("notifications.markAllRead", "Mark all as read")
130
+ }),
131
+ /* Desk links to /app/notification-settings; the backoffice has no
132
+ settings surface yet — disabled placeholder documents the gap. */
133
+ /* @__PURE__ */
134
+ _jsx(Button, {
135
+ chromeless: true,
136
+ circular: true,
137
+ size: "$2",
138
+ icon: GearSixIcon,
139
+ disabled: true,
140
+ opacity: 0.5,
141
+ "aria-label": t("notifications.settingsUnavailable", "Notification settings (not available yet)")
142
+ })]
143
+ }), /* @__PURE__ */_jsx(Separator, {}), isLoading ? /* @__PURE__ */_jsx(NotificationSkeletonRows, {}) : items.length === 0 ? /* @__PURE__ */_jsx(EmptyState, {
144
+ compact: true,
145
+ paddingVertical: "$6",
146
+ title: t("notifications.emptyTitle", "No new notifications"),
147
+ description: t("notifications.emptyDescription", "Mentions, assignments, and shares will show up here.")
148
+ }) : /* @__PURE__ */_jsx(YStack, {
149
+ children: items.map(function (item) {
150
+ return /* @__PURE__ */_jsx(NotificationRow, {
151
+ item,
152
+ onPress: function onPress() {
153
+ return onItemPress(item);
154
+ }
155
+ }, item.name);
156
+ })
157
+ })]
158
+ });
159
+ }
160
+ export { NotificationsPanel };
161
+ //# sourceMappingURL=notifications-panel.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Avatar","Button","EmptyState","Separator","SizableText","Skeleton","SkeletonCircle","Text","View","XStack","YStack","formatRelativeTimestamp","GearSixIcon","useTranslation","BACKOFFICE_I18N_NAMESPACE","NotificationRow","param","item","onPress","_item_timestampMs","t","subject","subjectText","relative","timestampMs","creation","alignItems","gap","paddingHorizontal","paddingVertical","backgroundColor","unread","hoverStyle","pressStyle","cursor","role","children","name","from_user","size","flex","minWidth","fontSize","fontWeight","color","numberOfLines","width","height","borderRadius","marginTop","flexShrink","NotificationSkeletonRows","Array","from","length","_","index","NotificationsPanel","items","isLoading","onItemPress","onMarkAllRead","hasUnread","some","maxWidth","paddingBottom","chromeless","disabled","opacity","circular","icon","compact","title"],"sources":["../../../src/chrome/notifications-panel.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ function stripHtmlToText(html) {
2
+ if (!html) return "";
3
+ const withBreaks = html.replace(/<\s*(?:br|\/p|\/div|\/li|\/tr|\/h[1-6])\s*\/?\s*>/gi, " ");
4
+ const withoutTags = withBreaks.replace(/<[^>]*>/g, "");
5
+ const decoded = withoutTags.replace(/&nbsp;/gi, " ").replace(/&lt;/gi, "<").replace(/&gt;/gi, ">").replace(/&quot;/gi, '"').replace(/&#39;|&apos;/gi, "'").replace(/&amp;/gi, "&");
6
+ return decoded.replace(/\s+/g, " ").trim();
7
+ }
8
+ function parseFrappeTimestamp(value) {
9
+ if (!value) return void 0;
10
+ const isoish = value.trim().replace(" ", "T").replace(/(\.\d{3})\d+$/, "$1");
11
+ const parsed = new Date(isoish).getTime();
12
+ if (!Number.isNaN(parsed)) return parsed;
13
+ const fallback = new Date(value).getTime();
14
+ return Number.isNaN(fallback) ? void 0 : fallback;
15
+ }
16
+ export { parseFrappeTimestamp, stripHtmlToText };
17
+ //# sourceMappingURL=notifications-utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["stripHtmlToText","html","withBreaks","replace","withoutTags","decoded","trim","parseFrappeTimestamp","value","isoish","parsed","Date","getTime","Number","isNaN","fallback"],"sources":["../../../src/chrome/notifications-utils.tsx"],"sourcesContent":[null],"mappings":"AAYO,SAASA,gBAAgBC,IAAA,EAAyC;EACvE,IAAI,CAACA,IAAA,EAAM,OAAO;EAClB,MAAMC,UAAA,GAAaD,IAAA,CAAKE,OAAA,CAAQ,uDAAuD,GAAG;EAC1F,MAAMC,WAAA,GAAcF,UAAA,CAAWC,OAAA,CAAQ,YAAY,EAAE;EACrD,MAAME,OAAA,GAAUD,WAAA,CACbD,OAAA,CAAQ,YAAY,GAAG,EACvBA,OAAA,CAAQ,UAAU,GAAG,EACrBA,OAAA,CAAQ,UAAU,GAAG,EACrBA,OAAA,CAAQ,YAAY,GAAG,EACvBA,OAAA,CAAQ,kBAAkB,GAAG,EAC7BA,OAAA,CAAQ,WAAW,GAAG;EACzB,OAAOE,OAAA,CAAQF,OAAA,CAAQ,QAAQ,GAAG,EAAEG,IAAA,CAAK;AAC3C;AASO,SAASC,qBAAqBC,KAAA,EAAsD;EACzF,IAAI,CAACA,KAAA,EAAO,OAAO;EACnB,MAAMC,MAAA,GAASD,KAAA,CACZF,IAAA,CAAK,EACLH,OAAA,CAAQ,KAAK,GAAG,EAChBA,OAAA,CAAQ,iBAAiB,IAAI;EAChC,MAAMO,MAAA,GAAS,IAAIC,IAAA,CAAKF,MAAM,EAAEG,OAAA,CAAQ;EACxC,IAAI,CAACC,MAAA,CAAOC,KAAA,CAAMJ,MAAM,GAAG,OAAOA,MAAA;EAClC,MAAMK,QAAA,GAAW,IAAIJ,IAAA,CAAKH,KAAK,EAAEI,OAAA,CAAQ;EACzC,OAAOC,MAAA,CAAOC,KAAA,CAAMC,QAAQ,IAAI,SAAYA,QAAA;AAC9C","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ function stripHtmlToText(html) {
2
+ if (!html) return "";
3
+ var withBreaks = html.replace(/<\s*(?:br|\/p|\/div|\/li|\/tr|\/h[1-6])\s*\/?\s*>/gi, " ");
4
+ var withoutTags = withBreaks.replace(/<[^>]*>/g, "");
5
+ var decoded = withoutTags.replace(/&nbsp;/gi, " ").replace(/&lt;/gi, "<").replace(/&gt;/gi, ">").replace(/&quot;/gi, '"').replace(/&#39;|&apos;/gi, "'").replace(/&amp;/gi, "&");
6
+ return decoded.replace(/\s+/g, " ").trim();
7
+ }
8
+ function parseFrappeTimestamp(value) {
9
+ if (!value) return void 0;
10
+ var isoish = value.trim().replace(" ", "T").replace(/(\.\d{3})\d+$/, "$1");
11
+ var parsed = new Date(isoish).getTime();
12
+ if (!Number.isNaN(parsed)) return parsed;
13
+ var fallback = new Date(value).getTime();
14
+ return Number.isNaN(fallback) ? void 0 : fallback;
15
+ }
16
+ export { parseFrappeTimestamp, stripHtmlToText };
17
+ //# sourceMappingURL=notifications-utils.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["stripHtmlToText","html","withBreaks","replace","withoutTags","decoded","trim","parseFrappeTimestamp","value","isoish","parsed","Date","getTime","Number","isNaN","fallback"],"sources":["../../../src/chrome/notifications-utils.tsx"],"sourcesContent":[null],"mappings":"AAYO,SAASA,gBAAgBC,IAAA,EAAyC;EACvE,IAAI,CAACA,IAAA,EAAM,OAAO;EAClB,IAAAC,UAAM,GAAAD,IAAa,CAAAE,OAAK,sDAAQ,KAAuD;EACvF,IAAAC,WAAM,GAAAF,UAAc,CAAAC,OAAW,WAAQ,IAAY;EACnD,IAAAE,OAAM,GAAAD,WAAU,CAAAD,OACb,WAAQ,KAAY,EAAGA,OACvB,SAAQ,KAAU,EAAGA,OACrB,SAAQ,KAAU,EAAGA,OACrB,WAAQ,KAAY,EAAGA,OACvB,iBAAQ,KAAkB,EAAGA,OAC7B,UAAQ,KAAW;EACtB,OAAOE,OAAA,CAAQF,OAAA,CAAQ,QAAQ,GAAG,EAAEG,IAAA,CAAK;AAC3C;AASO,SAASC,qBAAqBC,KAAA,EAAsD;EACzF,IAAI,CAACA,KAAA,EAAO,OAAO;EACnB,IAAAC,MAAM,GAAAD,KAAS,CAAAF,IACZ,GAAKH,OACL,IAAQ,KAAK,EAAGA,OAChB,gBAAQ,MAAiB;EAC5B,IAAAO,MAAM,OAASC,IAAI,CAAAF,MAAK,EAAMG,OAAE;EAChC,IAAI,CAACC,MAAA,CAAOC,KAAA,CAAMJ,MAAM,GAAG,OAAOA,MAAA;EAClC,IAAAK,QAAM,OAAWJ,IAAI,CAAAH,KAAK,EAAKI,OAAE;EACjC,OAAOC,MAAA,CAAOC,KAAA,CAAMC,QAAQ,IAAI,SAAYA,QAAA;AAC9C","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ import { useEffect, useRef } from "react";
2
+ function isEditableTarget(target) {
3
+ if (typeof HTMLElement === "undefined" || !(target instanceof HTMLElement)) return false;
4
+ if (target.isContentEditable) return true;
5
+ const tag = target.tagName;
6
+ return tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT";
7
+ }
8
+ function useBackofficeShortcuts(handlers) {
9
+ const handlersRef = useRef(handlers);
10
+ handlersRef.current = handlers;
11
+ useEffect(() => {
12
+ if (typeof document === "undefined" || typeof document.addEventListener !== "function") {
13
+ return;
14
+ }
15
+ const onKeyDown = event => {
16
+ if (!(event.metaKey || event.ctrlKey) || event.altKey || event.shiftKey) return;
17
+ if (event.repeat || isEditableTarget(event.target)) return;
18
+ const key = event.key.toLowerCase();
19
+ if (key === "k" || key === "g") {
20
+ const {
21
+ onFocusSearch
22
+ } = handlersRef.current;
23
+ if (!onFocusSearch) return;
24
+ event.preventDefault();
25
+ onFocusSearch();
26
+ }
27
+ };
28
+ document.addEventListener("keydown", onKeyDown);
29
+ return () => document.removeEventListener("keydown", onKeyDown);
30
+ }, []);
31
+ }
32
+ export { useBackofficeShortcuts };
33
+ //# sourceMappingURL=shortcuts.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","isEditableTarget","target","HTMLElement","isContentEditable","tag","tagName","useBackofficeShortcuts","handlers","handlersRef","current","document","addEventListener","onKeyDown","event","metaKey","ctrlKey","altKey","shiftKey","repeat","key","toLowerCase","onFocusSearch","preventDefault","removeEventListener"],"sources":["../../../src/chrome/shortcuts.ts"],"sourcesContent":[null],"mappings":"AAeA,SAASA,SAAA,EAAWC,MAAA,QAAc;AAOlC,SAASC,iBAAiBC,MAAA,EAAqC;EAC7D,IAAI,OAAOC,WAAA,KAAgB,eAAe,EAAED,MAAA,YAAkBC,WAAA,GAAc,OAAO;EACnF,IAAID,MAAA,CAAOE,iBAAA,EAAmB,OAAO;EACrC,MAAMC,GAAA,GAAMH,MAAA,CAAOI,OAAA;EACnB,OAAOD,GAAA,KAAQ,WAAWA,GAAA,KAAQ,cAAcA,GAAA,KAAQ;AAC1D;AAEO,SAASE,uBAAuBC,QAAA,EAA4C;EAEjF,MAAMC,WAAA,GAAcT,MAAA,CAAOQ,QAAQ;EACnCC,WAAA,CAAYC,OAAA,GAAUF,QAAA;EAEtBT,SAAA,CAAU,MAAM;IACd,IAAI,OAAOY,QAAA,KAAa,eAAe,OAAOA,QAAA,CAASC,gBAAA,KAAqB,YAAY;MACtF;IACF;IACA,MAAMC,SAAA,GAAaC,KAAA,IAAyB;MAC1C,IAAI,EAAEA,KAAA,CAAMC,OAAA,IAAWD,KAAA,CAAME,OAAA,KAAYF,KAAA,CAAMG,MAAA,IAAUH,KAAA,CAAMI,QAAA,EAAU;MACzE,IAAIJ,KAAA,CAAMK,MAAA,IAAUlB,gBAAA,CAAiBa,KAAA,CAAMZ,MAAM,GAAG;MACpD,MAAMkB,GAAA,GAAMN,KAAA,CAAMM,GAAA,CAAIC,WAAA,CAAY;MAClC,IAAID,GAAA,KAAQ,OAAOA,GAAA,KAAQ,KAAK;QAC9B,MAAM;UAAEE;QAAc,IAAIb,WAAA,CAAYC,OAAA;QACtC,IAAI,CAACY,aAAA,EAAe;QACpBR,KAAA,CAAMS,cAAA,CAAe;QACrBD,aAAA,CAAc;MAChB;IACF;IACAX,QAAA,CAASC,gBAAA,CAAiB,WAAWC,SAAS;IAC9C,OAAO,MAAMF,QAAA,CAASa,mBAAA,CAAoB,WAAWX,SAAS;EAChE,GAAG,EAAE;AACP","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ import { useEffect, useRef } from "react";
2
+ function _instanceof(left, right) {
3
+ "@swc/helpers - instanceof";
4
+
5
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
6
+ return !!right[Symbol.hasInstance](left);
7
+ } else {
8
+ return left instanceof right;
9
+ }
10
+ }
11
+ function isEditableTarget(target) {
12
+ if (typeof HTMLElement === "undefined" || !_instanceof(target, HTMLElement)) return false;
13
+ if (target.isContentEditable) return true;
14
+ var tag = target.tagName;
15
+ return tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT";
16
+ }
17
+ function useBackofficeShortcuts(handlers) {
18
+ var handlersRef = useRef(handlers);
19
+ handlersRef.current = handlers;
20
+ useEffect(function () {
21
+ if (typeof document === "undefined" || typeof document.addEventListener !== "function") {
22
+ return;
23
+ }
24
+ var onKeyDown = function onKeyDown2(event) {
25
+ if (!(event.metaKey || event.ctrlKey) || event.altKey || event.shiftKey) return;
26
+ if (event.repeat || isEditableTarget(event.target)) return;
27
+ var key = event.key.toLowerCase();
28
+ if (key === "k" || key === "g") {
29
+ var {
30
+ onFocusSearch
31
+ } = handlersRef.current;
32
+ if (!onFocusSearch) return;
33
+ event.preventDefault();
34
+ onFocusSearch();
35
+ }
36
+ };
37
+ document.addEventListener("keydown", onKeyDown);
38
+ return function () {
39
+ return document.removeEventListener("keydown", onKeyDown);
40
+ };
41
+ }, []);
42
+ }
43
+ export { useBackofficeShortcuts };
44
+ //# sourceMappingURL=shortcuts.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","_instanceof","left","right","Symbol","hasInstance","isEditableTarget","target","HTMLElement","isContentEditable","tag","tagName","useBackofficeShortcuts","handlers","handlersRef","current","document","addEventListener","onKeyDown","onKeyDown2","event","metaKey","ctrlKey","altKey","shiftKey","repeat","key","toLowerCase","onFocusSearch"],"sources":["../../../src/chrome/shortcuts.ts"],"sourcesContent":[null],"mappings":"AAeA,SAASA,SAAA,EAAWC,MAAA,QAAc;AAOlC,SAASC,YAAAC,IAAA,EAAiBC,KAAA,EAAqC;EAC7D,2BAA2B;;EAC3B,IAAIA,KAAA,IAAO,eAAAC,MAAmB,KAAO,eAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA;IACrC,OAAM,EAAAF,KAAM,CAAAC,MAAO,CAAAC,WAAA,EAAAH,IAAA;EACnB,OAAO;IACT,OAAAA,IAAA,YAAAC,KAAA;EAEO;AAEL;AACA,SAAAG,gBAAsBA,CAAAC,MAAA;EAEtB,WAAUC,WAAM,qBAAAP,WAAA,CAAAM,MAAA,EAAAC,WAAA;EACd,IAAAD,MAAI,CAAAE,iBAAoB,aAAe;EACrC,IAAAC,GAAA,GAAAH,MAAA,CAAAI,OAAA;EAAA,OACFD,GAAA,gBAAAA,GAAA,mBAAAA,GAAA;AACA;AACE,SAAAE,sBAAuBA,CAAAC,QAAM;EAC7B,IAAAC,WAAU,GAAAd,MAAU,CAAAa,QAAA;EACpBC,WAAM,CAAAC,OAAM,GAAMF,QAAI;EACtBd,SAAI,aAAQ;IACV,WAAMiB,QAAE,gBAAkB,WAAYA,QAAA,CAAAC,gBAAA;MACtC;IACA;IACA,IAAAC,SAAA,YAAcC,WAAAC,KAAA;MAChB,MAAAA,KAAA,CAAAC,OAAA,IAAAD,KAAA,CAAAE,OAAA,KAAAF,KAAA,CAAAG,MAAA,IAAAH,KAAA,CAAAI,QAAA;MACF,IAAAJ,KAAA,CAAAK,MAAA,IAAAnB,gBAAA,CAAAc,KAAA,CAAAb,MAAA;MACA,IAAAmB,GAAS,GAAAN,KAAA,CAAAM,GAAA,CAAAC,WAAiB;MAC1B,IAAAD,GAAO,KAAM,OAAAA,GAAS;QACnB;UAAAE;QAAA,IAAAd,WAAA,CAAAC,OAAA;QACP,KAAAa,aAAA","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ import { useFrappeConfig } from "@multiplatform.one/frappe-ui";
2
+ import { useEffect, useMemo, useState } from "react";
3
+ import { useFrappeApp } from "../shared/useFrappeApp.mjs";
4
+ let sessionCache = /* @__PURE__ */new WeakMap();
5
+ function clearSessionUserCache() {
6
+ sessionCache = /* @__PURE__ */new WeakMap();
7
+ }
8
+ function resolveUserImageUrl(userImage, baseURL) {
9
+ if (!userImage) return void 0;
10
+ if (/^[a-z][a-z0-9+.-]*:/i.test(userImage)) return userImage;
11
+ return `${baseURL.replace(/\/+$/, "")}${userImage.startsWith("/") ? "" : "/"}${userImage}`;
12
+ }
13
+ async function fetchSessionUserInfo(app, baseURL) {
14
+ const user = await app.auth().getLoggedInUser();
15
+ if (!user) throw new Error("No session user");
16
+ const res = await app.call().get("frappe.client.get_value", {
17
+ doctype: "User",
18
+ filters: user,
19
+ fieldname: ["full_name", "user_image", "email"]
20
+ });
21
+ const bits = res.payload?.message ?? {};
22
+ return {
23
+ user,
24
+ fullName: bits.full_name || user,
25
+ email: bits.email || (user.includes("@") ? user : void 0),
26
+ imageUrl: resolveUserImageUrl(bits.user_image, baseURL)
27
+ };
28
+ }
29
+ function useSessionUserInfo() {
30
+ const app = useFrappeApp();
31
+ const config = useFrappeConfig();
32
+ const baseURL = config?.baseURL ?? "";
33
+ const [info, setInfo] = useState(void 0);
34
+ const [loading, setLoading] = useState(true);
35
+ const [error, setError] = useState(void 0);
36
+ useEffect(() => {
37
+ if (!app) {
38
+ setInfo(void 0);
39
+ setLoading(false);
40
+ return;
41
+ }
42
+ let cancelled = false;
43
+ let promise = sessionCache.get(app);
44
+ if (!promise) {
45
+ promise = fetchSessionUserInfo(app, baseURL);
46
+ sessionCache.set(app, promise);
47
+ promise.catch(() => {
48
+ if (sessionCache.get(app) === promise) sessionCache.delete(app);
49
+ });
50
+ }
51
+ setLoading(true);
52
+ setError(void 0);
53
+ promise.then(value => {
54
+ if (cancelled) return;
55
+ setInfo(value);
56
+ setLoading(false);
57
+ }).catch(err => {
58
+ if (cancelled) return;
59
+ setError(err);
60
+ setLoading(false);
61
+ });
62
+ return () => {
63
+ cancelled = true;
64
+ };
65
+ }, [app, baseURL]);
66
+ return useMemo(() => ({
67
+ info,
68
+ loading,
69
+ error
70
+ }), [info, loading, error]);
71
+ }
72
+ export { clearSessionUserCache, resolveUserImageUrl, useSessionUserInfo };
73
+ //# sourceMappingURL=user-session.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useFrappeConfig","useEffect","useMemo","useState","useFrappeApp","sessionCache","WeakMap","clearSessionUserCache","resolveUserImageUrl","userImage","baseURL","test","replace","startsWith","fetchSessionUserInfo","app","user","auth","getLoggedInUser","Error","res","call","get","doctype","filters","fieldname","bits","payload","message","fullName","full_name","email","includes","imageUrl","user_image","useSessionUserInfo","config","info","setInfo","loading","setLoading","error","setError","cancelled","promise","set","catch","delete","then","value","err"],"sources":["../../../src/chrome/user-session.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ import React from "react";
2
+ import { useFrappeConfig } from "@multiplatform.one/frappe-ui";
3
+ import { useEffect, useMemo, useState } from "react";
4
+ import { useFrappeApp } from "../shared/useFrappeApp.native.js";
5
+ var sessionCache = /* @__PURE__ */new WeakMap();
6
+ function clearSessionUserCache() {
7
+ sessionCache = /* @__PURE__ */new WeakMap();
8
+ }
9
+ function resolveUserImageUrl(userImage, baseURL) {
10
+ if (!userImage) return void 0;
11
+ if (/^[a-z][a-z0-9+.-]*:/i.test(userImage)) return userImage;
12
+ return `${baseURL.replace(/\/+$/, "")}${userImage.startsWith("/") ? "" : "/"}${userImage}`;
13
+ }
14
+ async function fetchSessionUserInfo(app, baseURL) {
15
+ var _ref;
16
+ var _res_payload;
17
+ var user = await app.auth().getLoggedInUser();
18
+ if (!user) throw new Error("No session user");
19
+ var res = await app.call().get("frappe.client.get_value", {
20
+ doctype: "User",
21
+ filters: user,
22
+ fieldname: ["full_name", "user_image", "email"]
23
+ });
24
+ var bits = (_ref = (_res_payload = res.payload) === null || _res_payload === void 0 ? void 0 : _res_payload.message) !== null && _ref !== void 0 ? _ref : {};
25
+ return {
26
+ user,
27
+ fullName: bits.full_name || user,
28
+ email: bits.email || (user.includes("@") ? user : void 0),
29
+ imageUrl: resolveUserImageUrl(bits.user_image, baseURL)
30
+ };
31
+ }
32
+ function useSessionUserInfo() {
33
+ var _ref;
34
+ var app = useFrappeApp();
35
+ var config = useFrappeConfig();
36
+ var baseURL = (_ref = config === null || config === void 0 ? void 0 : config.baseURL) !== null && _ref !== void 0 ? _ref : "";
37
+ var [info, setInfo] = useState(void 0);
38
+ var [loading, setLoading] = useState(true);
39
+ var [error, setError] = useState(void 0);
40
+ useEffect(function () {
41
+ if (!app) {
42
+ setInfo(void 0);
43
+ setLoading(false);
44
+ return;
45
+ }
46
+ var cancelled = false;
47
+ var promise = sessionCache.get(app);
48
+ if (!promise) {
49
+ promise = fetchSessionUserInfo(app, baseURL);
50
+ sessionCache.set(app, promise);
51
+ promise.catch(function () {
52
+ if (sessionCache.get(app) === promise) sessionCache.delete(app);
53
+ });
54
+ }
55
+ setLoading(true);
56
+ setError(void 0);
57
+ promise.then(function (value) {
58
+ if (cancelled) return;
59
+ setInfo(value);
60
+ setLoading(false);
61
+ }).catch(function (err) {
62
+ if (cancelled) return;
63
+ setError(err);
64
+ setLoading(false);
65
+ });
66
+ return function () {
67
+ cancelled = true;
68
+ };
69
+ }, [app, baseURL]);
70
+ return useMemo(function () {
71
+ return {
72
+ info,
73
+ loading,
74
+ error
75
+ };
76
+ }, [info, loading, error]);
77
+ }
78
+ export { clearSessionUserCache, resolveUserImageUrl, useSessionUserInfo };
79
+ //# sourceMappingURL=user-session.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useFrappeConfig","useEffect","useMemo","useState","useFrappeApp","sessionCache","WeakMap","clearSessionUserCache","resolveUserImageUrl","userImage","baseURL","test","replace","startsWith","fetchSessionUserInfo","app","_ref","_res_payload","user","auth","getLoggedInUser","Error","res","call","get","doctype","filters","fieldname","bits","payload","message","fullName","full_name","email","includes","imageUrl","user_image","useSessionUserInfo","config","info","setInfo","loading","setLoading","error","setError","cancelled","promise","set","catch","delete","then","value","err"],"sources":["../../../src/chrome/user-session.tsx"],"sourcesContent":[null],"mappings":"AASA,OAAAA,KAAS;AACT,SAASC,eAAW,QAAS,8BAAgB;AAC7C,SAASC,SAAA,EAAAC,OAAA,EAAoBC,QAAA;AAoB7B,SAAIC,YAAe,0CAAiD;AAG7D,IAAAC,YAAS,kBAA8B,IAAAC,OAAA;AAC5C,SAAAC,qBAAeA,CAAA;EACjBF,YAAA,sBAAAC,OAAA;AAGO;AAIL,SAAKE,mBAAkBA,CAAAC,SAAA,EAAAC,OAAA;EAEvB,IAAI,CAAAD,SAAA,cAAuB;EAC3B,0BAA0B,CAAAE,IAAA,CAAAF,SAAc,UAAUA,SAAA;EACpD,UAAAC,OAAA,CAAAE,OAAA,eAAAH,SAAA,CAAAI,UAAA,mBAAAJ,SAAA;AAEA;AACE,eAAaK,oBAAiBA,CAAAC,GAAA,EAAAL,OAAgB;EAC9C,IAAIM,IAAC;EAGL,IAAAC,YAAY;EAA2E,IACrFC,IAAA,GAAS,MAAAH,GAAA,CAAAI,IAAA,GAAAC,eAAA;EAAA,IACT,CAAAF,IAAA,EAAS,UAAAG,KAAA;EAAA,IACTC,GAAA,SAAYP,GAAA,CAAAQ,IAAA,GAAaC,GAAA,0BAAqB;IAC/CC,OAAA;IACDC,OAAM,EAAAR,IAAO;IACbS,SAAO,GACL,aACA,YAAU,EACV,OAAO;EAET;EACF,IAAAC,IAAA,IAAAZ,IAAA,IAAAC,YAAA,GAAAK,GAAA,CAAAO,OAAA,cAAAZ,YAAA,uBAAAA,YAAA,CAAAa,OAAA,cAAAd,IAAA,cAAAA,IAAA;EAGO,OAAS;IAKdE,IAAM;IACNa,QAAM,EAAAH,IAAS,CAAAI,SAAA,IAAAd,IAAgB;IAC/Be,KAAM,EAAAL,IAAA,CAAAK,KAAU,KAAQf,IAAA,CAAAgB,QAAW,QAAAhB,IAAA;IACnCiB,QAAO,EAAA3B,mBAAiB,CAAAoB,IAAsC,CAAAQ,UAAS,EAAA1B,OAAA;EACvE;AACA;AAEA,SAAA2B,kBAAgBA,CAAA;EACd,IAAArB,IAAK;EACH,IAAAD,GAAA,GAAAX,YAAiB;EACjB,IAAAkC,MAAA,GAAAtC,eAAgB;EAChB,IAAAU,OAAA,IAAAM,IAAA,GAAAsB,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAA5B,OAAA,cAAAM,IAAA,cAAAA,IAAA;EAAA,IACF,CAAAuB,IAAA,EAAAC,OAAA,IAAArC,QAAA;EACA,KAAAsC,OAAI,EAAAC,UAAY,IAAAvC,QAAA;EAChB,KAAAwC,KAAI,EAAAC,QAAU,IAAAzC,QAAa,CAAI,KAAG;EAClCF,SAAK,aAAS;IACZ,KAAAc,GAAA;MACAyB,OAAA,MAAa;MACbE,UAAQ,MAAM;MACZ;IAA8D;IAElE,IAAAG,SAAA;IACA,IAAAC,OAAW,GAAAzC,YAAI,CAAAmB,GAAA,CAAAT,GAAA;IACf,KAAA+B,OAAS;MACTA,OACG,GAAAhC,oBAAgB,CAAAC,GAAA,EAAAL,OAAA;MACfL,YAAI,CAAA0C,GAAW,CAAAhC,GAAA,EAAA+B,OAAA;MACfA,OAAA,CAAQE,KAAK;QACb,IAAA3C,YAAgB,CAAAmB,GAAA,CAAAT,GAAA,MAAA+B,OAAA,EAAAzC,YAAA,CAAA4C,MAAA,CAAAlC,GAAA;MACjB,CACA;IACC;IACA2B,UAAA,CAAS,IAAG;IACZE,QAAA,MAAW;IACbE,OAAC,CAAAI,IAAA,WAAAC,KAAA;MACH,IAAAN,SAAa;MACXL,OAAA,CAAAW,KAAY;MACdT,UAAA;IACF,CAAG,CAAC,CAAAM,KAAK,WAAQI,GAAA;MAEjB,IAAOP,SAAQ;MACjBD,QAAA,CAAAQ,GAAA","ignoreList":[]}