@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.
- package/LICENSE +201 -0
- package/README.md +310 -0
- package/dist/cjs/chrome/BackofficeAwesomebar.cjs +95 -0
- package/dist/cjs/chrome/BackofficeAwesomebar.native.js +106 -0
- package/dist/cjs/chrome/BackofficeAwesomebar.native.js.map +1 -0
- package/dist/cjs/chrome/CommandPalette.cjs +453 -0
- package/dist/cjs/chrome/CommandPalette.native.js +505 -0
- package/dist/cjs/chrome/CommandPalette.native.js.map +1 -0
- package/dist/cjs/chrome/HelpMenu.cjs +131 -0
- package/dist/cjs/chrome/HelpMenu.native.js +145 -0
- package/dist/cjs/chrome/HelpMenu.native.js.map +1 -0
- package/dist/cjs/chrome/NotificationsButton.cjs +112 -0
- package/dist/cjs/chrome/NotificationsButton.native.js +115 -0
- package/dist/cjs/chrome/NotificationsButton.native.js.map +1 -0
- package/dist/cjs/chrome/UserMenu.cjs +158 -0
- package/dist/cjs/chrome/UserMenu.native.js +186 -0
- package/dist/cjs/chrome/UserMenu.native.js.map +1 -0
- package/dist/cjs/chrome/awesomebar-data.cjs +173 -0
- package/dist/cjs/chrome/awesomebar-data.native.js +233 -0
- package/dist/cjs/chrome/awesomebar-data.native.js.map +1 -0
- package/dist/cjs/chrome/command-palette-model.cjs +208 -0
- package/dist/cjs/chrome/command-palette-model.native.js +301 -0
- package/dist/cjs/chrome/command-palette-model.native.js.map +1 -0
- package/dist/cjs/chrome/help-about-dialog.cjs +136 -0
- package/dist/cjs/chrome/help-about-dialog.native.js +146 -0
- package/dist/cjs/chrome/help-about-dialog.native.js.map +1 -0
- package/dist/cjs/chrome/help-shortcuts-dialog.cjs +155 -0
- package/dist/cjs/chrome/help-shortcuts-dialog.native.js +168 -0
- package/dist/cjs/chrome/help-shortcuts-dialog.native.js.map +1 -0
- package/dist/cjs/chrome/notifications-data.cjs +190 -0
- package/dist/cjs/chrome/notifications-data.native.js +271 -0
- package/dist/cjs/chrome/notifications-data.native.js.map +1 -0
- package/dist/cjs/chrome/notifications-panel.cjs +171 -0
- package/dist/cjs/chrome/notifications-panel.native.js +189 -0
- package/dist/cjs/chrome/notifications-panel.native.js.map +1 -0
- package/dist/cjs/chrome/notifications-utils.cjs +43 -0
- package/dist/cjs/chrome/notifications-utils.native.js +46 -0
- package/dist/cjs/chrome/notifications-utils.native.js.map +1 -0
- package/dist/cjs/chrome/shortcuts.cjs +58 -0
- package/dist/cjs/chrome/shortcuts.native.js +72 -0
- package/dist/cjs/chrome/shortcuts.native.js.map +1 -0
- package/dist/cjs/chrome/user-session.cjs +100 -0
- package/dist/cjs/chrome/user-session.native.js +120 -0
- package/dist/cjs/chrome/user-session.native.js.map +1 -0
- package/dist/cjs/config/BackofficeProvider.cjs +164 -0
- package/dist/cjs/config/BackofficeProvider.native.js +217 -0
- package/dist/cjs/config/BackofficeProvider.native.js.map +1 -0
- package/dist/cjs/config/capabilities.cjs +123 -0
- package/dist/cjs/config/capabilities.native.js +155 -0
- package/dist/cjs/config/capabilities.native.js.map +1 -0
- package/dist/cjs/config/events.cjs +18 -0
- package/dist/cjs/config/events.native.js +21 -0
- package/dist/cjs/config/events.native.js.map +1 -0
- package/dist/cjs/config/slots.cjs +18 -0
- package/dist/cjs/config/slots.native.js +21 -0
- package/dist/cjs/config/slots.native.js.map +1 -0
- package/dist/cjs/i18n/en.cjs +101 -0
- package/dist/cjs/i18n/en.native.js +104 -0
- package/dist/cjs/i18n/en.native.js.map +1 -0
- package/dist/cjs/i18n/index.cjs +77 -0
- package/dist/cjs/i18n/index.native.js +102 -0
- package/dist/cjs/i18n/index.native.js.map +1 -0
- package/dist/cjs/index.cjs +109 -0
- package/dist/cjs/index.native.js +112 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/navigation/navigator.cjs +144 -0
- package/dist/cjs/navigation/navigator.native.js +307 -0
- package/dist/cjs/navigation/navigator.native.js.map +1 -0
- package/dist/cjs/navigation/paths.cjs +103 -0
- package/dist/cjs/navigation/paths.native.js +143 -0
- package/dist/cjs/navigation/paths.native.js.map +1 -0
- package/dist/cjs/oneAdapter/index.cjs +53 -0
- package/dist/cjs/oneAdapter/index.native.js +64 -0
- package/dist/cjs/oneAdapter/index.native.js.map +1 -0
- package/dist/cjs/shared/useFrappeApp.cjs +56 -0
- package/dist/cjs/shared/useFrappeApp.native.js +60 -0
- package/dist/cjs/shared/useFrappeApp.native.js.map +1 -0
- package/dist/cjs/shell/BackofficeShell.cjs +194 -0
- package/dist/cjs/shell/BackofficeShell.native.js +223 -0
- package/dist/cjs/shell/BackofficeShell.native.js.map +1 -0
- package/dist/cjs/shell/WorkspaceSidebar.cjs +115 -0
- package/dist/cjs/shell/WorkspaceSidebar.native.js +143 -0
- package/dist/cjs/shell/WorkspaceSidebar.native.js.map +1 -0
- package/dist/cjs/shell/useWorkspaces.cjs +131 -0
- package/dist/cjs/shell/useWorkspaces.native.js +173 -0
- package/dist/cjs/shell/useWorkspaces.native.js.map +1 -0
- package/dist/cjs/shell/workspaceIcons.cjs +64 -0
- package/dist/cjs/shell/workspaceIcons.native.js +67 -0
- package/dist/cjs/shell/workspaceIcons.native.js.map +1 -0
- package/dist/esm/chrome/BackofficeAwesomebar.mjs +70 -0
- package/dist/esm/chrome/BackofficeAwesomebar.mjs.map +1 -0
- package/dist/esm/chrome/BackofficeAwesomebar.native.js +78 -0
- package/dist/esm/chrome/BackofficeAwesomebar.native.js.map +1 -0
- package/dist/esm/chrome/CommandPalette.mjs +428 -0
- package/dist/esm/chrome/CommandPalette.mjs.map +1 -0
- package/dist/esm/chrome/CommandPalette.native.js +477 -0
- package/dist/esm/chrome/CommandPalette.native.js.map +1 -0
- package/dist/esm/chrome/HelpMenu.mjs +106 -0
- package/dist/esm/chrome/HelpMenu.mjs.map +1 -0
- package/dist/esm/chrome/HelpMenu.native.js +117 -0
- package/dist/esm/chrome/HelpMenu.native.js.map +1 -0
- package/dist/esm/chrome/NotificationsButton.mjs +87 -0
- package/dist/esm/chrome/NotificationsButton.mjs.map +1 -0
- package/dist/esm/chrome/NotificationsButton.native.js +87 -0
- package/dist/esm/chrome/NotificationsButton.native.js.map +1 -0
- package/dist/esm/chrome/UserMenu.mjs +133 -0
- package/dist/esm/chrome/UserMenu.mjs.map +1 -0
- package/dist/esm/chrome/UserMenu.native.js +147 -0
- package/dist/esm/chrome/UserMenu.native.js.map +1 -0
- package/dist/esm/chrome/awesomebar-data.mjs +144 -0
- package/dist/esm/chrome/awesomebar-data.mjs.map +1 -0
- package/dist/esm/chrome/awesomebar-data.native.js +190 -0
- package/dist/esm/chrome/awesomebar-data.native.js.map +1 -0
- package/dist/esm/chrome/command-palette-model.mjs +183 -0
- package/dist/esm/chrome/command-palette-model.mjs.map +1 -0
- package/dist/esm/chrome/command-palette-model.native.js +273 -0
- package/dist/esm/chrome/command-palette-model.native.js.map +1 -0
- package/dist/esm/chrome/help-about-dialog.mjs +111 -0
- package/dist/esm/chrome/help-about-dialog.mjs.map +1 -0
- package/dist/esm/chrome/help-about-dialog.native.js +118 -0
- package/dist/esm/chrome/help-about-dialog.native.js.map +1 -0
- package/dist/esm/chrome/help-shortcuts-dialog.mjs +130 -0
- package/dist/esm/chrome/help-shortcuts-dialog.mjs.map +1 -0
- package/dist/esm/chrome/help-shortcuts-dialog.native.js +140 -0
- package/dist/esm/chrome/help-shortcuts-dialog.native.js.map +1 -0
- package/dist/esm/chrome/notifications-data.mjs +165 -0
- package/dist/esm/chrome/notifications-data.mjs.map +1 -0
- package/dist/esm/chrome/notifications-data.native.js +232 -0
- package/dist/esm/chrome/notifications-data.native.js.map +1 -0
- package/dist/esm/chrome/notifications-panel.mjs +146 -0
- package/dist/esm/chrome/notifications-panel.mjs.map +1 -0
- package/dist/esm/chrome/notifications-panel.native.js +161 -0
- package/dist/esm/chrome/notifications-panel.native.js.map +1 -0
- package/dist/esm/chrome/notifications-utils.mjs +17 -0
- package/dist/esm/chrome/notifications-utils.mjs.map +1 -0
- package/dist/esm/chrome/notifications-utils.native.js +17 -0
- package/dist/esm/chrome/notifications-utils.native.js.map +1 -0
- package/dist/esm/chrome/shortcuts.mjs +33 -0
- package/dist/esm/chrome/shortcuts.mjs.map +1 -0
- package/dist/esm/chrome/shortcuts.native.js +44 -0
- package/dist/esm/chrome/shortcuts.native.js.map +1 -0
- package/dist/esm/chrome/user-session.mjs +73 -0
- package/dist/esm/chrome/user-session.mjs.map +1 -0
- package/dist/esm/chrome/user-session.native.js +79 -0
- package/dist/esm/chrome/user-session.native.js.map +1 -0
- package/dist/esm/config/BackofficeProvider.mjs +132 -0
- package/dist/esm/config/BackofficeProvider.mjs.map +1 -0
- package/dist/esm/config/BackofficeProvider.native.js +171 -0
- package/dist/esm/config/BackofficeProvider.native.js.map +1 -0
- package/dist/esm/config/capabilities.mjs +97 -0
- package/dist/esm/config/capabilities.mjs.map +1 -0
- package/dist/esm/config/capabilities.native.js +126 -0
- package/dist/esm/config/capabilities.native.js.map +1 -0
- package/dist/esm/config/events.mjs +2 -0
- package/dist/esm/config/events.mjs.map +1 -0
- package/dist/esm/config/events.native.js +2 -0
- package/dist/esm/config/events.native.js.map +1 -0
- package/dist/esm/config/slots.mjs +2 -0
- package/dist/esm/config/slots.mjs.map +1 -0
- package/dist/esm/config/slots.native.js +2 -0
- package/dist/esm/config/slots.native.js.map +1 -0
- package/dist/esm/i18n/en.mjs +76 -0
- package/dist/esm/i18n/en.mjs.map +1 -0
- package/dist/esm/i18n/en.native.js +76 -0
- package/dist/esm/i18n/en.native.js.map +1 -0
- package/dist/esm/i18n/index.mjs +40 -0
- package/dist/esm/i18n/index.mjs.map +1 -0
- package/dist/esm/i18n/index.native.js +62 -0
- package/dist/esm/i18n/index.native.js.map +1 -0
- package/dist/esm/index.mjs +26 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +26 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/navigation/navigator.mjs +115 -0
- package/dist/esm/navigation/navigator.mjs.map +1 -0
- package/dist/esm/navigation/navigator.native.js +275 -0
- package/dist/esm/navigation/navigator.native.js.map +1 -0
- package/dist/esm/navigation/paths.mjs +66 -0
- package/dist/esm/navigation/paths.mjs.map +1 -0
- package/dist/esm/navigation/paths.native.js +103 -0
- package/dist/esm/navigation/paths.native.js.map +1 -0
- package/dist/esm/oneAdapter/index.mjs +28 -0
- package/dist/esm/oneAdapter/index.mjs.map +1 -0
- package/dist/esm/oneAdapter/index.native.js +36 -0
- package/dist/esm/oneAdapter/index.native.js.map +1 -0
- package/dist/esm/shared/useFrappeApp.mjs +31 -0
- package/dist/esm/shared/useFrappeApp.mjs.map +1 -0
- package/dist/esm/shared/useFrappeApp.native.js +32 -0
- package/dist/esm/shared/useFrappeApp.native.js.map +1 -0
- package/dist/esm/shell/BackofficeShell.mjs +169 -0
- package/dist/esm/shell/BackofficeShell.mjs.map +1 -0
- package/dist/esm/shell/BackofficeShell.native.js +195 -0
- package/dist/esm/shell/BackofficeShell.native.js.map +1 -0
- package/dist/esm/shell/WorkspaceSidebar.mjs +89 -0
- package/dist/esm/shell/WorkspaceSidebar.mjs.map +1 -0
- package/dist/esm/shell/WorkspaceSidebar.native.js +114 -0
- package/dist/esm/shell/WorkspaceSidebar.native.js.map +1 -0
- package/dist/esm/shell/useWorkspaces.mjs +104 -0
- package/dist/esm/shell/useWorkspaces.mjs.map +1 -0
- package/dist/esm/shell/useWorkspaces.native.js +143 -0
- package/dist/esm/shell/useWorkspaces.native.js.map +1 -0
- package/dist/esm/shell/workspaceIcons.mjs +39 -0
- package/dist/esm/shell/workspaceIcons.mjs.map +1 -0
- package/dist/esm/shell/workspaceIcons.native.js +39 -0
- package/dist/esm/shell/workspaceIcons.native.js.map +1 -0
- package/dist/jsx/chrome/BackofficeAwesomebar.mjs +70 -0
- package/dist/jsx/chrome/BackofficeAwesomebar.mjs.map +1 -0
- package/dist/jsx/chrome/BackofficeAwesomebar.native.js +106 -0
- package/dist/jsx/chrome/BackofficeAwesomebar.native.js.map +1 -0
- package/dist/jsx/chrome/CommandPalette.mjs +428 -0
- package/dist/jsx/chrome/CommandPalette.mjs.map +1 -0
- package/dist/jsx/chrome/CommandPalette.native.js +505 -0
- package/dist/jsx/chrome/CommandPalette.native.js.map +1 -0
- package/dist/jsx/chrome/HelpMenu.mjs +106 -0
- package/dist/jsx/chrome/HelpMenu.mjs.map +1 -0
- package/dist/jsx/chrome/HelpMenu.native.js +145 -0
- package/dist/jsx/chrome/HelpMenu.native.js.map +1 -0
- package/dist/jsx/chrome/NotificationsButton.mjs +87 -0
- package/dist/jsx/chrome/NotificationsButton.mjs.map +1 -0
- package/dist/jsx/chrome/NotificationsButton.native.js +115 -0
- package/dist/jsx/chrome/NotificationsButton.native.js.map +1 -0
- package/dist/jsx/chrome/UserMenu.mjs +133 -0
- package/dist/jsx/chrome/UserMenu.mjs.map +1 -0
- package/dist/jsx/chrome/UserMenu.native.js +186 -0
- package/dist/jsx/chrome/UserMenu.native.js.map +1 -0
- package/dist/jsx/chrome/awesomebar-data.mjs +144 -0
- package/dist/jsx/chrome/awesomebar-data.mjs.map +1 -0
- package/dist/jsx/chrome/awesomebar-data.native.js +233 -0
- package/dist/jsx/chrome/awesomebar-data.native.js.map +1 -0
- package/dist/jsx/chrome/command-palette-model.mjs +183 -0
- package/dist/jsx/chrome/command-palette-model.mjs.map +1 -0
- package/dist/jsx/chrome/command-palette-model.native.js +301 -0
- package/dist/jsx/chrome/command-palette-model.native.js.map +1 -0
- package/dist/jsx/chrome/help-about-dialog.mjs +111 -0
- package/dist/jsx/chrome/help-about-dialog.mjs.map +1 -0
- package/dist/jsx/chrome/help-about-dialog.native.js +146 -0
- package/dist/jsx/chrome/help-about-dialog.native.js.map +1 -0
- package/dist/jsx/chrome/help-shortcuts-dialog.mjs +130 -0
- package/dist/jsx/chrome/help-shortcuts-dialog.mjs.map +1 -0
- package/dist/jsx/chrome/help-shortcuts-dialog.native.js +168 -0
- package/dist/jsx/chrome/help-shortcuts-dialog.native.js.map +1 -0
- package/dist/jsx/chrome/notifications-data.mjs +165 -0
- package/dist/jsx/chrome/notifications-data.mjs.map +1 -0
- package/dist/jsx/chrome/notifications-data.native.js +271 -0
- package/dist/jsx/chrome/notifications-data.native.js.map +1 -0
- package/dist/jsx/chrome/notifications-panel.mjs +146 -0
- package/dist/jsx/chrome/notifications-panel.mjs.map +1 -0
- package/dist/jsx/chrome/notifications-panel.native.js +189 -0
- package/dist/jsx/chrome/notifications-panel.native.js.map +1 -0
- package/dist/jsx/chrome/notifications-utils.mjs +17 -0
- package/dist/jsx/chrome/notifications-utils.mjs.map +1 -0
- package/dist/jsx/chrome/notifications-utils.native.js +46 -0
- package/dist/jsx/chrome/notifications-utils.native.js.map +1 -0
- package/dist/jsx/chrome/shortcuts.mjs +33 -0
- package/dist/jsx/chrome/shortcuts.mjs.map +1 -0
- package/dist/jsx/chrome/shortcuts.native.js +72 -0
- package/dist/jsx/chrome/shortcuts.native.js.map +1 -0
- package/dist/jsx/chrome/user-session.mjs +73 -0
- package/dist/jsx/chrome/user-session.mjs.map +1 -0
- package/dist/jsx/chrome/user-session.native.js +120 -0
- package/dist/jsx/chrome/user-session.native.js.map +1 -0
- package/dist/jsx/config/BackofficeProvider.mjs +132 -0
- package/dist/jsx/config/BackofficeProvider.mjs.map +1 -0
- package/dist/jsx/config/BackofficeProvider.native.js +217 -0
- package/dist/jsx/config/BackofficeProvider.native.js.map +1 -0
- package/dist/jsx/config/capabilities.mjs +97 -0
- package/dist/jsx/config/capabilities.mjs.map +1 -0
- package/dist/jsx/config/capabilities.native.js +155 -0
- package/dist/jsx/config/capabilities.native.js.map +1 -0
- package/dist/jsx/config/events.mjs +2 -0
- package/dist/jsx/config/events.mjs.map +1 -0
- package/dist/jsx/config/events.native.js +21 -0
- package/dist/jsx/config/events.native.js.map +1 -0
- package/dist/jsx/config/slots.mjs +2 -0
- package/dist/jsx/config/slots.mjs.map +1 -0
- package/dist/jsx/config/slots.native.js +21 -0
- package/dist/jsx/config/slots.native.js.map +1 -0
- package/dist/jsx/i18n/en.mjs +76 -0
- package/dist/jsx/i18n/en.mjs.map +1 -0
- package/dist/jsx/i18n/en.native.js +104 -0
- package/dist/jsx/i18n/en.native.js.map +1 -0
- package/dist/jsx/i18n/index.mjs +40 -0
- package/dist/jsx/i18n/index.mjs.map +1 -0
- package/dist/jsx/i18n/index.native.js +102 -0
- package/dist/jsx/i18n/index.native.js.map +1 -0
- package/dist/jsx/index.js +26 -0
- package/dist/jsx/index.js.map +1 -0
- package/dist/jsx/index.mjs +26 -0
- package/dist/jsx/index.mjs.map +1 -0
- package/dist/jsx/index.native.js +112 -0
- package/dist/jsx/index.native.js.map +1 -0
- package/dist/jsx/navigation/navigator.mjs +115 -0
- package/dist/jsx/navigation/navigator.mjs.map +1 -0
- package/dist/jsx/navigation/navigator.native.js +307 -0
- package/dist/jsx/navigation/navigator.native.js.map +1 -0
- package/dist/jsx/navigation/paths.mjs +66 -0
- package/dist/jsx/navigation/paths.mjs.map +1 -0
- package/dist/jsx/navigation/paths.native.js +143 -0
- package/dist/jsx/navigation/paths.native.js.map +1 -0
- package/dist/jsx/oneAdapter/index.mjs +28 -0
- package/dist/jsx/oneAdapter/index.mjs.map +1 -0
- package/dist/jsx/oneAdapter/index.native.js +64 -0
- package/dist/jsx/oneAdapter/index.native.js.map +1 -0
- package/dist/jsx/shared/useFrappeApp.mjs +31 -0
- package/dist/jsx/shared/useFrappeApp.mjs.map +1 -0
- package/dist/jsx/shared/useFrappeApp.native.js +60 -0
- package/dist/jsx/shared/useFrappeApp.native.js.map +1 -0
- package/dist/jsx/shell/BackofficeShell.mjs +169 -0
- package/dist/jsx/shell/BackofficeShell.mjs.map +1 -0
- package/dist/jsx/shell/BackofficeShell.native.js +223 -0
- package/dist/jsx/shell/BackofficeShell.native.js.map +1 -0
- package/dist/jsx/shell/WorkspaceSidebar.mjs +89 -0
- package/dist/jsx/shell/WorkspaceSidebar.mjs.map +1 -0
- package/dist/jsx/shell/WorkspaceSidebar.native.js +143 -0
- package/dist/jsx/shell/WorkspaceSidebar.native.js.map +1 -0
- package/dist/jsx/shell/useWorkspaces.mjs +104 -0
- package/dist/jsx/shell/useWorkspaces.mjs.map +1 -0
- package/dist/jsx/shell/useWorkspaces.native.js +173 -0
- package/dist/jsx/shell/useWorkspaces.native.js.map +1 -0
- package/dist/jsx/shell/workspaceIcons.mjs +39 -0
- package/dist/jsx/shell/workspaceIcons.mjs.map +1 -0
- package/dist/jsx/shell/workspaceIcons.native.js +67 -0
- package/dist/jsx/shell/workspaceIcons.native.js.map +1 -0
- package/package.json +123 -0
- package/src/chrome/BackofficeAwesomebar.tsx +89 -0
- package/src/chrome/CommandPalette.spec.tsx +252 -0
- package/src/chrome/CommandPalette.tsx +520 -0
- package/src/chrome/HelpMenu.tsx +119 -0
- package/src/chrome/NotificationsButton.tsx +87 -0
- package/src/chrome/UserMenu.tsx +173 -0
- package/src/chrome/awesomebar-data.tsx +252 -0
- package/src/chrome/command-palette-model.ts +291 -0
- package/src/chrome/help-about-dialog.tsx +130 -0
- package/src/chrome/help-shortcuts-dialog.tsx +144 -0
- package/src/chrome/notifications-data.tsx +287 -0
- package/src/chrome/notifications-panel.tsx +175 -0
- package/src/chrome/notifications-utils.tsx +44 -0
- package/src/chrome/shortcuts.ts +53 -0
- package/src/chrome/user-session.tsx +116 -0
- package/src/config/BackofficeProvider.spec.tsx +126 -0
- package/src/config/BackofficeProvider.tsx +315 -0
- package/src/config/capabilities.ts +172 -0
- package/src/config/events.ts +19 -0
- package/src/config/slots.ts +28 -0
- package/src/i18n/en.ts +83 -0
- package/src/i18n/index.ts +69 -0
- package/src/index.ts +150 -0
- package/src/navigation/navigator.spec.ts +106 -0
- package/src/navigation/navigator.ts +209 -0
- package/src/navigation/paths.ts +146 -0
- package/src/oneAdapter/index.tsx +61 -0
- package/src/shared/useFrappeApp.ts +39 -0
- package/src/shell/BackofficeShell.tsx +222 -0
- package/src/shell/WorkspaceSidebar.tsx +119 -0
- package/src/shell/useWorkspaces.ts +202 -0
- package/src/shell/workspaceIcons.ts +76 -0
- package/types/chrome/BackofficeAwesomebar.d.ts +12 -0
- package/types/chrome/BackofficeAwesomebar.d.ts.map +1 -0
- package/types/chrome/CommandPalette.d.ts +6 -0
- package/types/chrome/CommandPalette.d.ts.map +1 -0
- package/types/chrome/HelpMenu.d.ts +2 -0
- package/types/chrome/HelpMenu.d.ts.map +1 -0
- package/types/chrome/NotificationsButton.d.ts +2 -0
- package/types/chrome/NotificationsButton.d.ts.map +1 -0
- package/types/chrome/UserMenu.d.ts +6 -0
- package/types/chrome/UserMenu.d.ts.map +1 -0
- package/types/chrome/awesomebar-data.d.ts +52 -0
- package/types/chrome/awesomebar-data.d.ts.map +1 -0
- package/types/chrome/command-palette-model.d.ts +47 -0
- package/types/chrome/command-palette-model.d.ts.map +1 -0
- package/types/chrome/help-about-dialog.d.ts +12 -0
- package/types/chrome/help-about-dialog.d.ts.map +1 -0
- package/types/chrome/help-shortcuts-dialog.d.ts +6 -0
- package/types/chrome/help-shortcuts-dialog.d.ts.map +1 -0
- package/types/chrome/notifications-data.d.ts +34 -0
- package/types/chrome/notifications-data.d.ts.map +1 -0
- package/types/chrome/notifications-panel.d.ts +11 -0
- package/types/chrome/notifications-panel.d.ts.map +1 -0
- package/types/chrome/notifications-utils.d.ts +21 -0
- package/types/chrome/notifications-utils.d.ts.map +1 -0
- package/types/chrome/shortcuts.d.ts +6 -0
- package/types/chrome/shortcuts.d.ts.map +1 -0
- package/types/chrome/user-session.d.ts +19 -0
- package/types/chrome/user-session.d.ts.map +1 -0
- package/types/config/BackofficeProvider.d.ts +128 -0
- package/types/config/BackofficeProvider.d.ts.map +1 -0
- package/types/config/capabilities.d.ts +109 -0
- package/types/config/capabilities.d.ts.map +1 -0
- package/types/config/events.d.ts +39 -0
- package/types/config/events.d.ts.map +1 -0
- package/types/config/slots.d.ts +32 -0
- package/types/config/slots.d.ts.map +1 -0
- package/types/i18n/en.d.ts +83 -0
- package/types/i18n/en.d.ts.map +1 -0
- package/types/i18n/index.d.ts +27 -0
- package/types/i18n/index.d.ts.map +1 -0
- package/types/index.d.ts +55 -0
- package/types/index.d.ts.map +1 -0
- package/types/navigation/navigator.d.ts +98 -0
- package/types/navigation/navigator.d.ts.map +1 -0
- package/types/navigation/paths.d.ts +60 -0
- package/types/navigation/paths.d.ts.map +1 -0
- package/types/oneAdapter/index.d.ts +8 -0
- package/types/oneAdapter/index.d.ts.map +1 -0
- package/types/shared/useFrappeApp.d.ts +10 -0
- package/types/shared/useFrappeApp.d.ts.map +1 -0
- package/types/shell/BackofficeShell.d.ts +10 -0
- package/types/shell/BackofficeShell.d.ts.map +1 -0
- package/types/shell/WorkspaceSidebar.d.ts +9 -0
- package/types/shell/WorkspaceSidebar.d.ts.map +1 -0
- package/types/shell/useWorkspaces.d.ts +43 -0
- package/types/shell/useWorkspaces.d.ts.map +1 -0
- package/types/shell/workspaceIcons.d.ts +9 -0
- package/types/shell/workspaceIcons.d.ts.map +1 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BackofficeProvider — the single configuration surface for embedding the
|
|
3
|
+
* backoffice in a host app.
|
|
4
|
+
*
|
|
5
|
+
* It composes @multiplatform.one/frappe-ui's FrappeProvider internally (the
|
|
6
|
+
* `frappe` prop), publishes the navigation seam + capability flags + slots +
|
|
7
|
+
* event bus through BackofficeConfigContext (consumed by every backoffice
|
|
8
|
+
* surface), registers the package's "backoffice" i18n namespace, and applies
|
|
9
|
+
* host field-registry overrides.
|
|
10
|
+
*
|
|
11
|
+
* Surfaces render without a provider too (stories/tests): the context
|
|
12
|
+
* default is a fully-enabled config with an inert navigator.
|
|
13
|
+
*/
|
|
14
|
+
import { type FieldRenderProps, type FrappeProviderProps } from "@multiplatform.one/frappe-ui";
|
|
15
|
+
import type { i18n as I18nInstance } from "i18next";
|
|
16
|
+
import type { ComponentType, ReactNode } from "react";
|
|
17
|
+
import { type BackofficeLocation, type BackofficeNavigator } from "../navigation/navigator";
|
|
18
|
+
import { type BackofficePaths } from "../navigation/paths";
|
|
19
|
+
import { type BackofficeCapabilities, type BackofficeDoctypeScope, type ResolvedBackofficeCapabilities } from "./capabilities";
|
|
20
|
+
import type { BackofficeEvent, BackofficeEventHandler } from "./events";
|
|
21
|
+
import type { BackofficeSlots } from "./slots";
|
|
22
|
+
/** Frappe connection config — fed into frappe-ui's FrappeProvider. */
|
|
23
|
+
export interface BackofficeFrappeConfig {
|
|
24
|
+
/** Base URL of the Frappe server, e.g. "https://mysite.frappe.cloud". */
|
|
25
|
+
baseURL: string;
|
|
26
|
+
/** Override port for the Socket.IO realtime connection (e.g. 9000 in dev). */
|
|
27
|
+
socketPort?: number;
|
|
28
|
+
/** Authentication configuration (token auth for cross-origin/native hosts). */
|
|
29
|
+
auth?: FrappeProviderProps["auth"];
|
|
30
|
+
/** Sync options for the live data engine (persistKey, cdcInterval, …). */
|
|
31
|
+
syncOptions?: FrappeProviderProps["syncOptions"];
|
|
32
|
+
/** Extra Socket.IO client options for the realtime connection. */
|
|
33
|
+
socketOptions?: FrappeProviderProps["socketOptions"];
|
|
34
|
+
/** Fixture provider (stories/tests — no network). */
|
|
35
|
+
fixtures?: FrappeProviderProps["fixtures"];
|
|
36
|
+
}
|
|
37
|
+
/** Host color-scheme adapter (drives the user menu's "Toggle Theme"). */
|
|
38
|
+
export interface BackofficeAppearance {
|
|
39
|
+
/** Current scheme value. */
|
|
40
|
+
scheme: "light" | "dark" | "system" | (string & {});
|
|
41
|
+
/** Set the scheme. */
|
|
42
|
+
setScheme: (scheme: "light" | "dark" | "system") => void;
|
|
43
|
+
}
|
|
44
|
+
/** Host-injected custom action (form toolbars, list toolbars). */
|
|
45
|
+
export interface BackofficeActionContext {
|
|
46
|
+
doctype: string;
|
|
47
|
+
/** Document name (form actions; undefined for unsaved docs). */
|
|
48
|
+
name?: string;
|
|
49
|
+
/** Selected row names (list bulk actions). */
|
|
50
|
+
selection?: readonly string[];
|
|
51
|
+
}
|
|
52
|
+
export interface BackofficeAction {
|
|
53
|
+
id: string;
|
|
54
|
+
label: string;
|
|
55
|
+
onPress: (context: BackofficeActionContext) => void;
|
|
56
|
+
}
|
|
57
|
+
export interface BackofficeActions {
|
|
58
|
+
/** Extra actions on the document form toolbar. */
|
|
59
|
+
form?: readonly BackofficeAction[];
|
|
60
|
+
/** Extra actions on the list toolbar / bulk-actions bar. */
|
|
61
|
+
list?: readonly BackofficeAction[];
|
|
62
|
+
}
|
|
63
|
+
export interface BackofficeProviderProps {
|
|
64
|
+
children: ReactNode;
|
|
65
|
+
/** Frappe connection — feeds FrappeProvider internally. */
|
|
66
|
+
frappe: BackofficeFrappeConfig;
|
|
67
|
+
/**
|
|
68
|
+
* Navigation adapter. Use `useOneNavigator()` from
|
|
69
|
+
* `@multiplatform.one/backoffice/one-adapter` in One apps,
|
|
70
|
+
* `createMemoryNavigator()` in tests/stories, or bridge your own router
|
|
71
|
+
* with `ControlledNavigator`.
|
|
72
|
+
*/
|
|
73
|
+
navigation: BackofficeNavigator;
|
|
74
|
+
/** URL prefix the backoffice is mounted under. Default "/backoffice". */
|
|
75
|
+
basePath?: string;
|
|
76
|
+
/** Feature visibility/behavior flags. Everything defaults ON. */
|
|
77
|
+
capabilities?: BackofficeCapabilities;
|
|
78
|
+
/** Restrict which doctypes are reachable (awesomebar, lists, links). */
|
|
79
|
+
doctypes?: BackofficeDoctypeScope;
|
|
80
|
+
/**
|
|
81
|
+
* Field-renderer overrides merged into frappe-ui's field registry
|
|
82
|
+
* (fieldtype → component), e.g. `{ Rating: MyRating }`.
|
|
83
|
+
*/
|
|
84
|
+
fields?: Record<string, ComponentType<FieldRenderProps>>;
|
|
85
|
+
/** Host-injected custom actions (form/list toolbars). */
|
|
86
|
+
actions?: BackofficeActions;
|
|
87
|
+
/** Render-prop slots replacing built-in chrome. */
|
|
88
|
+
slots?: BackofficeSlots;
|
|
89
|
+
/** Color-scheme adapter for the user menu's "Toggle Theme". */
|
|
90
|
+
appearance?: BackofficeAppearance;
|
|
91
|
+
/** Event bus — every notable backoffice action lands here. */
|
|
92
|
+
onEvent?: BackofficeEventHandler;
|
|
93
|
+
/**
|
|
94
|
+
* i18next instance to register the "backoffice" namespace on (defaults to
|
|
95
|
+
* the global singleton).
|
|
96
|
+
*/
|
|
97
|
+
i18nInstance?: I18nInstance;
|
|
98
|
+
}
|
|
99
|
+
/** Resolved config every backoffice surface consumes. */
|
|
100
|
+
export interface BackofficeConfig {
|
|
101
|
+
frappe?: BackofficeFrappeConfig;
|
|
102
|
+
navigation: BackofficeNavigator;
|
|
103
|
+
basePath: string;
|
|
104
|
+
paths: BackofficePaths;
|
|
105
|
+
capabilities: ResolvedBackofficeCapabilities;
|
|
106
|
+
doctypes?: BackofficeDoctypeScope;
|
|
107
|
+
actions: BackofficeActions;
|
|
108
|
+
slots: BackofficeSlots;
|
|
109
|
+
appearance?: BackofficeAppearance;
|
|
110
|
+
/** Emit an event to the host's `onEvent` bus (no-op when unset). */
|
|
111
|
+
emitEvent: (event: BackofficeEvent) => void;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The resolved backoffice config. Outside a BackofficeProvider this returns
|
|
115
|
+
* a fully-enabled default config with an inert navigator, so surfaces stay
|
|
116
|
+
* mountable in isolation (stories, tests).
|
|
117
|
+
*/
|
|
118
|
+
export declare function useBackofficeConfig(): BackofficeConfig;
|
|
119
|
+
export declare function useBackofficeCapabilities(): ResolvedBackofficeCapabilities;
|
|
120
|
+
export declare function useBackofficeNavigator(): BackofficeNavigator;
|
|
121
|
+
export declare function useBackofficePaths(): BackofficePaths;
|
|
122
|
+
export declare function useBackofficeSlots(): BackofficeSlots;
|
|
123
|
+
/** Current location from the navigation adapter (subscription-backed). */
|
|
124
|
+
export declare function useBackofficeLocation(): BackofficeLocation;
|
|
125
|
+
/** Is `doctype` reachable under the provider's doctype scope? */
|
|
126
|
+
export declare function useIsDoctypeAllowed(): (doctype: string) => boolean;
|
|
127
|
+
export declare function BackofficeProvider({ children, frappe, navigation, basePath, capabilities, doctypes, fields, actions, slots, appearance, onEvent, i18nInstance, }: BackofficeProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
128
|
+
//# sourceMappingURL=BackofficeProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackofficeProvider.d.ts","sourceRoot":"","sources":["../../src/config/BackofficeProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backoffice capability flags — the host's on/off (and per-feature config)
|
|
3
|
+
* switches for what the embedded backoffice displays and allows.
|
|
4
|
+
*
|
|
5
|
+
* Every flag accepts either a boolean or a config object; everything
|
|
6
|
+
* defaults ON so `<BackofficeProvider>` with no `capabilities` prop renders
|
|
7
|
+
* the full desk. Resolution happens once in the provider; surfaces read the
|
|
8
|
+
* resolved shape via `useBackofficeCapabilities()`.
|
|
9
|
+
*/
|
|
10
|
+
import { type BackofficeView } from "../navigation/paths";
|
|
11
|
+
/** Boolean shorthand or per-feature config object. */
|
|
12
|
+
export type CapabilityInput<Config extends object = {
|
|
13
|
+
enabled?: boolean;
|
|
14
|
+
}> = boolean | (Config & {
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
}) | undefined;
|
|
17
|
+
export interface BackofficeCapabilities {
|
|
18
|
+
/** Global search / command bar in the shell navbar. */
|
|
19
|
+
awesomebar?: CapabilityInput;
|
|
20
|
+
/** Notification bell + panel in the shell navbar. */
|
|
21
|
+
notifications?: CapabilityInput;
|
|
22
|
+
/** Avatar menu (profile, theme toggle, logout) in the shell navbar. */
|
|
23
|
+
userMenu?: CapabilityInput<{
|
|
24
|
+
/** Show the "Toggle Theme" item (needs an `appearance` adapter too). */
|
|
25
|
+
themeToggle?: boolean;
|
|
26
|
+
/** Show the "Log Out" item. */
|
|
27
|
+
logout?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* "Exit to site" escape hatch back into the host app (web only).
|
|
30
|
+
* `path` is host-app absolute (default "/"); `label` overrides the
|
|
31
|
+
* translated default.
|
|
32
|
+
*/
|
|
33
|
+
exitToSite?: boolean | {
|
|
34
|
+
enabled?: boolean;
|
|
35
|
+
path?: string;
|
|
36
|
+
label?: string;
|
|
37
|
+
};
|
|
38
|
+
}>;
|
|
39
|
+
/** Help menu (docs links, shortcuts + about dialogs) in the shell navbar. */
|
|
40
|
+
help?: CapabilityInput;
|
|
41
|
+
/** Workspace sidebar (desktop rail + narrow drawer). */
|
|
42
|
+
sidebar?: CapabilityInput;
|
|
43
|
+
/** Quick-entry dialogs (compact create forms). */
|
|
44
|
+
quickEntry?: CapabilityInput;
|
|
45
|
+
/** List views. `allow` restricts which views are reachable. */
|
|
46
|
+
views?: CapabilityInput<{
|
|
47
|
+
allow?: readonly BackofficeView[];
|
|
48
|
+
}>;
|
|
49
|
+
/** "New <doctype>" affordances (list header, awesomebar new-commands, …). */
|
|
50
|
+
newDoc?: CapabilityInput;
|
|
51
|
+
/** List bulk-action bar (multi-select edit/assign/tag/delete). */
|
|
52
|
+
bulkActions?: CapabilityInput;
|
|
53
|
+
/** Form sidebar attachments section. */
|
|
54
|
+
attachments?: CapabilityInput;
|
|
55
|
+
/** Form activity timeline (comments, versions, communications). */
|
|
56
|
+
timeline?: CapabilityInput;
|
|
57
|
+
/** Assignment (ToDo) surfaces on forms and lists. */
|
|
58
|
+
assignments?: CapabilityInput;
|
|
59
|
+
/** Tag surfaces on forms and lists. */
|
|
60
|
+
tags?: CapabilityInput;
|
|
61
|
+
/** Document share surfaces. */
|
|
62
|
+
shares?: CapabilityInput;
|
|
63
|
+
/** Print affordances. */
|
|
64
|
+
print?: CapabilityInput;
|
|
65
|
+
/** Email / communication affordances. */
|
|
66
|
+
email?: CapabilityInput;
|
|
67
|
+
}
|
|
68
|
+
export interface ResolvedCapability {
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
}
|
|
71
|
+
export interface ResolvedExitToSite {
|
|
72
|
+
enabled: boolean;
|
|
73
|
+
path: string;
|
|
74
|
+
label?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface ResolvedBackofficeCapabilities {
|
|
77
|
+
awesomebar: ResolvedCapability;
|
|
78
|
+
notifications: ResolvedCapability;
|
|
79
|
+
userMenu: ResolvedCapability & {
|
|
80
|
+
themeToggle: boolean;
|
|
81
|
+
logout: boolean;
|
|
82
|
+
exitToSite: ResolvedExitToSite;
|
|
83
|
+
};
|
|
84
|
+
help: ResolvedCapability;
|
|
85
|
+
sidebar: ResolvedCapability;
|
|
86
|
+
quickEntry: ResolvedCapability;
|
|
87
|
+
views: ResolvedCapability & {
|
|
88
|
+
allow: readonly BackofficeView[];
|
|
89
|
+
};
|
|
90
|
+
newDoc: ResolvedCapability;
|
|
91
|
+
bulkActions: ResolvedCapability;
|
|
92
|
+
attachments: ResolvedCapability;
|
|
93
|
+
timeline: ResolvedCapability;
|
|
94
|
+
assignments: ResolvedCapability;
|
|
95
|
+
tags: ResolvedCapability;
|
|
96
|
+
shares: ResolvedCapability;
|
|
97
|
+
print: ResolvedCapability;
|
|
98
|
+
email: ResolvedCapability;
|
|
99
|
+
}
|
|
100
|
+
export declare function resolveCapabilities(input?: BackofficeCapabilities): ResolvedBackofficeCapabilities;
|
|
101
|
+
/** Doctype reachability scope (allow wins over deny being absent; deny always wins). */
|
|
102
|
+
export interface BackofficeDoctypeScope {
|
|
103
|
+
/** When set, only these doctypes are reachable. */
|
|
104
|
+
allow?: readonly string[];
|
|
105
|
+
/** Always-unreachable doctypes (applied after `allow`). */
|
|
106
|
+
deny?: readonly string[];
|
|
107
|
+
}
|
|
108
|
+
export declare function isDoctypeAllowed(scope: BackofficeDoctypeScope | undefined, doctype: string): boolean;
|
|
109
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/config/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host event bus — `onEvent` on the provider receives every notable thing
|
|
3
|
+
* the embedded backoffice does, so host apps can sync their own chrome,
|
|
4
|
+
* analytics, or state.
|
|
5
|
+
*/
|
|
6
|
+
export type BackofficeEvent =
|
|
7
|
+
/** Any navigation performed through the backoffice navigator. */
|
|
8
|
+
{
|
|
9
|
+
type: "navigate";
|
|
10
|
+
path: string;
|
|
11
|
+
mode: "push" | "replace" | "back";
|
|
12
|
+
}
|
|
13
|
+
/** A document form was opened. */
|
|
14
|
+
| {
|
|
15
|
+
type: "doc-opened";
|
|
16
|
+
doctype: string;
|
|
17
|
+
name: string;
|
|
18
|
+
}
|
|
19
|
+
/** A document was saved (`isNew` for first inserts). */
|
|
20
|
+
| {
|
|
21
|
+
type: "doc-saved";
|
|
22
|
+
doctype: string;
|
|
23
|
+
name: string;
|
|
24
|
+
isNew?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/** A document was deleted. */
|
|
27
|
+
| {
|
|
28
|
+
type: "doc-deleted";
|
|
29
|
+
doctype: string;
|
|
30
|
+
name: string;
|
|
31
|
+
}
|
|
32
|
+
/** A surface caught an operational error worth surfacing to the host. */
|
|
33
|
+
| {
|
|
34
|
+
type: "error";
|
|
35
|
+
error: unknown;
|
|
36
|
+
context?: string;
|
|
37
|
+
};
|
|
38
|
+
export type BackofficeEventHandler = (event: BackofficeEvent) => void;
|
|
39
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/config/events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,eAAe;AACzB,iEAAiE;AAC/D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;CAAE;AACvE,kCAAkC;GAChC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACvD,wDAAwD;GACtD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE;AACvE,8BAA8B;GAC5B;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACxD,yEAAyE;GACvE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Host render-prop slots — the highest-leverage replacement points. Slots
|
|
4
|
+
* are provider-level (they apply everywhere the surface renders); when a
|
|
5
|
+
* slot is undefined the built-in rendering is used.
|
|
6
|
+
*/
|
|
7
|
+
export interface BackofficeSlots {
|
|
8
|
+
/**
|
|
9
|
+
* Replace the shell navbar CONTENT (inside the styled banner bar).
|
|
10
|
+
* `defaultContent` is the built-in navbar row (home button, awesomebar,
|
|
11
|
+
* bell/help/user chrome) so hosts can wrap instead of rebuild.
|
|
12
|
+
*/
|
|
13
|
+
renderShellHeader?: (context: {
|
|
14
|
+
defaultContent: ReactNode;
|
|
15
|
+
}) => ReactNode;
|
|
16
|
+
/** Rendered at the bottom of the workspace sidebar (rail and drawer). */
|
|
17
|
+
renderSidebarFooter?: () => ReactNode;
|
|
18
|
+
/** Replace the list screen's empty state. (Consumed by the list surface.) */
|
|
19
|
+
renderListEmpty?: (context: {
|
|
20
|
+
doctype: string;
|
|
21
|
+
}) => ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Replace the document form header row. (Consumed by the form surface.)
|
|
24
|
+
* `name` is undefined for new (unsaved) documents.
|
|
25
|
+
*/
|
|
26
|
+
renderFormHeader?: (context: {
|
|
27
|
+
doctype: string;
|
|
28
|
+
name?: string;
|
|
29
|
+
defaultContent: ReactNode;
|
|
30
|
+
}) => ReactNode;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=slots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../src/config/slots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,cAAc,EAAE,SAAS,CAAA;KAAE,KAAK,SAAS,CAAC;IAC1E,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,SAAS,CAAC;IACtC,6EAA6E;IAC7E,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAC;IAC9D;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,SAAS,CAAC;KAC3B,KAAK,SAAS,CAAC;CACjB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundled English resources for the "backoffice" i18n namespace.
|
|
3
|
+
*
|
|
4
|
+
* Keys mirror the surface structure (shell/sidebar/awesomebar/notifications/
|
|
5
|
+
* userMenu/help). Host apps override by registering their own bundle:
|
|
6
|
+
*
|
|
7
|
+
* i18next.addResourceBundle("en", "backoffice", { shell: { title: "Admin" } }, true, true);
|
|
8
|
+
*/
|
|
9
|
+
export declare const en: {
|
|
10
|
+
readonly shell: {
|
|
11
|
+
readonly title: "Backoffice";
|
|
12
|
+
readonly home: "Home";
|
|
13
|
+
readonly toggleSidebar: "Toggle sidebar";
|
|
14
|
+
};
|
|
15
|
+
readonly sidebar: {
|
|
16
|
+
readonly private: "Private";
|
|
17
|
+
readonly public: "Public";
|
|
18
|
+
readonly loading: "Loading workspaces";
|
|
19
|
+
};
|
|
20
|
+
readonly awesomebar: {
|
|
21
|
+
readonly triggerLabel: "Search";
|
|
22
|
+
readonly placeholder: "Search or type a command…";
|
|
23
|
+
readonly label: "Search or type a command";
|
|
24
|
+
readonly results: "Search results";
|
|
25
|
+
readonly recents: "Recents";
|
|
26
|
+
readonly actions: "Actions";
|
|
27
|
+
readonly navigation: "Navigation";
|
|
28
|
+
readonly documents: "Documents";
|
|
29
|
+
readonly listCommand: "{{doctype}} List";
|
|
30
|
+
readonly newCommand: "New {{doctype}}";
|
|
31
|
+
readonly reportCommand: "{{doctype}} Report";
|
|
32
|
+
readonly kanbanCommand: "{{doctype}} Kanban";
|
|
33
|
+
readonly workspaceBadge: "Workspace";
|
|
34
|
+
readonly doctypeBadge: "DocType";
|
|
35
|
+
readonly searching: "Searching…";
|
|
36
|
+
readonly noResults: "No results for “{{query}}”";
|
|
37
|
+
readonly empty: "Type to search…";
|
|
38
|
+
readonly hintNavigate: "navigate";
|
|
39
|
+
readonly hintOpen: "open";
|
|
40
|
+
readonly hintClose: "close";
|
|
41
|
+
};
|
|
42
|
+
readonly notifications: {
|
|
43
|
+
readonly title: "Notifications";
|
|
44
|
+
readonly untitled: "Notification";
|
|
45
|
+
readonly markAllRead: "Mark all as read";
|
|
46
|
+
readonly settingsUnavailable: "Notification settings (not available yet)";
|
|
47
|
+
readonly emptyTitle: "No new notifications";
|
|
48
|
+
readonly emptyDescription: "Mentions, assignments, and shares will show up here.";
|
|
49
|
+
};
|
|
50
|
+
readonly userMenu: {
|
|
51
|
+
readonly label: "User menu";
|
|
52
|
+
readonly sessionUnavailable: "Session not loaded";
|
|
53
|
+
readonly myProfile: "My Profile";
|
|
54
|
+
readonly mySettings: "My Settings";
|
|
55
|
+
readonly sessionDefaults: "Session Defaults";
|
|
56
|
+
readonly sessionDefaultsGap: "Not implemented yet";
|
|
57
|
+
readonly reload: "Reload";
|
|
58
|
+
readonly toggleTheme: "Toggle Theme";
|
|
59
|
+
readonly themeUnavailable: "Theme switching is unavailable on this platform";
|
|
60
|
+
readonly viewWebsite: "View Website";
|
|
61
|
+
readonly exitToSite: "← multiplatform.one";
|
|
62
|
+
readonly logOut: "Log Out";
|
|
63
|
+
};
|
|
64
|
+
readonly help: {
|
|
65
|
+
readonly label: "Help";
|
|
66
|
+
readonly documentation: "Documentation";
|
|
67
|
+
readonly userForum: "User Forum";
|
|
68
|
+
readonly reportIssue: "Report an Issue";
|
|
69
|
+
readonly keyboardShortcuts: "Keyboard Shortcuts";
|
|
70
|
+
readonly about: "About";
|
|
71
|
+
readonly aboutTitle: "About";
|
|
72
|
+
readonly aboutTagline: "Backoffice is the multiplatform.one recreation of the Frappe Desk — one codebase across web, mobile, and desktop.";
|
|
73
|
+
readonly installedApps: "Installed Apps";
|
|
74
|
+
readonly versionsUnavailable: "Version information is unavailable.";
|
|
75
|
+
readonly close: "Close";
|
|
76
|
+
readonly shortcutsTitle: "Keyboard Shortcuts";
|
|
77
|
+
readonly shortcutsIntro: "Shortcuts available across the backoffice (web).";
|
|
78
|
+
readonly shortcutFocusSearch: "Open the command palette";
|
|
79
|
+
readonly shortcutSaveForm: "Save the open document";
|
|
80
|
+
readonly shortcutCloseOverlays: "Close dialogs and menus";
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=en.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0EL,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backoffice i18n — the package ships its own translations under the
|
|
3
|
+
* "backoffice" namespace (English bundled; more languages can join the
|
|
4
|
+
* BUNDLED_RESOURCES map) and registers them into the ambient i18next
|
|
5
|
+
* instance, following @multiplatform.one/i18n conventions:
|
|
6
|
+
*
|
|
7
|
+
* - registration is additive: `addResourceBundle(lng, ns, …, deep=true,
|
|
8
|
+
* overwrite=false)`, so anything the HOST already registered for the
|
|
9
|
+
* namespace wins, and a Frappe i18n backend (partialBundledLanguages)
|
|
10
|
+
* can still supplement over the bundle.
|
|
11
|
+
* - every t() call in the package also carries an inline English default,
|
|
12
|
+
* so a missing bundle degrades to English instead of raw keys.
|
|
13
|
+
*
|
|
14
|
+
* When no i18next instance was initialized at all (a host app that does not
|
|
15
|
+
* use i18n), the provider initializes a minimal English-only instance so
|
|
16
|
+
* react-i18next binds a working `t`.
|
|
17
|
+
*/
|
|
18
|
+
import { type i18n as I18nInstance } from "i18next";
|
|
19
|
+
export declare const BACKOFFICE_I18N_NAMESPACE = "backoffice";
|
|
20
|
+
/**
|
|
21
|
+
* Idempotently register the bundled backoffice translations on `instance`
|
|
22
|
+
* (the global i18next singleton by default). Safe to call before the host
|
|
23
|
+
* initializes i18next — registration is deferred to the `initialized` event.
|
|
24
|
+
* Called automatically by BackofficeProvider.
|
|
25
|
+
*/
|
|
26
|
+
export declare function registerBackofficeTranslations(instance?: I18nInstance): void;
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAgB,EAAE,KAAK,IAAI,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AAI7D,eAAO,MAAM,yBAAyB,eAAe,CAAC;AAetD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,GAAE,YAAsB,GAAG,IAAI,CA0BrF"}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @multiplatform.one/backoffice — embeddable Frappe desk recreation.
|
|
3
|
+
*
|
|
4
|
+
* Mount BackofficeProvider (frappe connection + navigation adapter +
|
|
5
|
+
* capability flags) around the surfaces you want; BackofficeShell is the
|
|
6
|
+
* full desk chrome. See README.md for the embedding story.
|
|
7
|
+
*
|
|
8
|
+
* The one-router adapter lives on the `./one-adapter` subpath so this entry
|
|
9
|
+
* stays router-free.
|
|
10
|
+
*/
|
|
11
|
+
export { BackofficeProvider, useBackofficeCapabilities, useBackofficeConfig, useBackofficeLocation, useBackofficeNavigator, useBackofficePaths, useBackofficeSlots, useIsDoctypeAllowed, } from "./config/BackofficeProvider";
|
|
12
|
+
export type { BackofficeAction, BackofficeActionContext, BackofficeActions, BackofficeAppearance, BackofficeConfig, BackofficeFrappeConfig, BackofficeProviderProps, } from "./config/BackofficeProvider";
|
|
13
|
+
export { isDoctypeAllowed, resolveCapabilities } from "./config/capabilities";
|
|
14
|
+
export type { BackofficeCapabilities, BackofficeDoctypeScope, CapabilityInput, ResolvedBackofficeCapabilities, ResolvedCapability, ResolvedExitToSite, } from "./config/capabilities";
|
|
15
|
+
export type { BackofficeEvent, BackofficeEventHandler } from "./config/events";
|
|
16
|
+
export type { BackofficeSlots } from "./config/slots";
|
|
17
|
+
export { ControlledNavigator, MemoryNavigator, createMemoryNavigator, createNoopNavigator, parseBackofficeHref, } from "./navigation/navigator";
|
|
18
|
+
export type { BackofficeLocation, BackofficeNavigator, BackofficeParams, ControlledNavigatorHandlers, } from "./navigation/navigator";
|
|
19
|
+
export { BACKOFFICE_BASE, BACKOFFICE_VIEWS, createBackofficePaths, formPath, homePath, isBackofficeView, listPath, newDocPath, parseDocDefaults, slugToDisplayName, toSlug, viewPath, workspacePath, } from "./navigation/paths";
|
|
20
|
+
export type { BackofficePath, BackofficePaths, BackofficeSubPath, BackofficeView, } from "./navigation/paths";
|
|
21
|
+
export { BACKOFFICE_I18N_NAMESPACE, registerBackofficeTranslations } from "./i18n";
|
|
22
|
+
export { BackofficeShell } from "./shell/BackofficeShell";
|
|
23
|
+
export type { BackofficeShellProps } from "./shell/BackofficeShell";
|
|
24
|
+
export { WORKSPACE_SIDEBAR_WIDTH, WorkspaceSidebar } from "./shell/WorkspaceSidebar";
|
|
25
|
+
export type { WorkspaceSidebarProps } from "./shell/WorkspaceSidebar";
|
|
26
|
+
export { useDefaultWorkspace, useSessionUser, useWorkspaces } from "./shell/useWorkspaces";
|
|
27
|
+
export type { WorkspaceDoc, WorkspacesResult } from "./shell/useWorkspaces";
|
|
28
|
+
export { workspaceIcon } from "./shell/workspaceIcons";
|
|
29
|
+
export { BackofficeAwesomebar } from "./chrome/BackofficeAwesomebar";
|
|
30
|
+
export type { BackofficeAwesomebarHandle, BackofficeAwesomebarProps, } from "./chrome/BackofficeAwesomebar";
|
|
31
|
+
export { CommandPalette } from "./chrome/CommandPalette";
|
|
32
|
+
export type { CommandPaletteProps } from "./chrome/CommandPalette";
|
|
33
|
+
export { useCommandPaletteModel } from "./chrome/command-palette-model";
|
|
34
|
+
export type { CommandPaletteItem, CommandPaletteModel, CommandPaletteSection, CommandPaletteSectionId, UseCommandPaletteModelOptions, } from "./chrome/command-palette-model";
|
|
35
|
+
export { rankNameMatches, readRecentItems, toContentSnippet, useAwesomebarCatalog, useGlobalSearch, } from "./chrome/awesomebar-data";
|
|
36
|
+
export type { AwesomebarCatalog, AwesomebarCatalogState, AwesomebarWorkspace, GlobalSearchHit, GlobalSearchState, RecentItem, } from "./chrome/awesomebar-data";
|
|
37
|
+
export { NotificationsButton } from "./chrome/NotificationsButton";
|
|
38
|
+
export { NotificationsPanel } from "./chrome/notifications-panel";
|
|
39
|
+
export type { NotificationsPanelProps } from "./chrome/notifications-panel";
|
|
40
|
+
export { useNotifications } from "./chrome/notifications-data";
|
|
41
|
+
export type { NotificationItem, NotificationLogDoc, UseNotificationsResult, } from "./chrome/notifications-data";
|
|
42
|
+
export { parseFrappeTimestamp, stripHtmlToText } from "./chrome/notifications-utils";
|
|
43
|
+
export { HelpMenu } from "./chrome/HelpMenu";
|
|
44
|
+
export { HelpAboutDialog } from "./chrome/help-about-dialog";
|
|
45
|
+
export type { FrappeAppVersion, HelpAboutDialogProps } from "./chrome/help-about-dialog";
|
|
46
|
+
export { HelpShortcutsDialog } from "./chrome/help-shortcuts-dialog";
|
|
47
|
+
export type { HelpShortcutsDialogProps } from "./chrome/help-shortcuts-dialog";
|
|
48
|
+
export { UserMenu } from "./chrome/UserMenu";
|
|
49
|
+
export type { UserMenuProps } from "./chrome/UserMenu";
|
|
50
|
+
export { clearSessionUserCache, resolveUserImageUrl, useSessionUserInfo, } from "./chrome/user-session";
|
|
51
|
+
export type { SessionUserInfo } from "./chrome/user-session";
|
|
52
|
+
export { useBackofficeShortcuts } from "./chrome/shortcuts";
|
|
53
|
+
export type { BackofficeShortcutHandlers } from "./chrome/shortcuts";
|
|
54
|
+
export { useFrappeApp } from "./shared/useFrappeApp";
|
|
55
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backoffice navigation seam.
|
|
3
|
+
*
|
|
4
|
+
* The backoffice never imports a router. Every surface navigates through a
|
|
5
|
+
* host-supplied {@link BackofficeNavigator} — a deliberately minimal contract
|
|
6
|
+
* (push/replace/back + a subscribable location) that any routing runtime can
|
|
7
|
+
* satisfy in a few lines:
|
|
8
|
+
*
|
|
9
|
+
* - One router → `useOneNavigator()` from
|
|
10
|
+
* `@multiplatform.one/backoffice/one-adapter`
|
|
11
|
+
* - tests/storybook → {@link createMemoryNavigator}
|
|
12
|
+
* - custom hosts → {@link ControlledNavigator} (bridge callbacks in,
|
|
13
|
+
* mirror location back with `setLocation`)
|
|
14
|
+
*
|
|
15
|
+
* This is intentionally lighter than the stack-navigation seam in
|
|
16
|
+
* `@multiplatform.one/router/seam`: that module OWNS a navigation stack
|
|
17
|
+
* (route manifest + host stack adapter) for targets with no router at all,
|
|
18
|
+
* while this contract EMBEDS into whatever router the host app already runs.
|
|
19
|
+
* A seam-backed host can still implement this interface over its
|
|
20
|
+
* StackNavigator (push/replace/back map 1:1, location from `useNavState`).
|
|
21
|
+
*/
|
|
22
|
+
export type BackofficeParams = Record<string, string | string[] | undefined>;
|
|
23
|
+
export interface BackofficeLocation {
|
|
24
|
+
/** Current pathname (no query string), e.g. `"/backoffice/todo"`. */
|
|
25
|
+
path: string;
|
|
26
|
+
/** Dynamic route segments merged with query params (One router semantics). */
|
|
27
|
+
params: BackofficeParams;
|
|
28
|
+
}
|
|
29
|
+
export interface BackofficeNavigator {
|
|
30
|
+
/** Push a new history entry. */
|
|
31
|
+
navigate(path: string): void;
|
|
32
|
+
/** Replace the current history entry. */
|
|
33
|
+
replace(path: string): void;
|
|
34
|
+
/** Go back one entry. */
|
|
35
|
+
back(): void;
|
|
36
|
+
/** Snapshot of the current location (stable identity until it changes). */
|
|
37
|
+
getLocation(): BackofficeLocation;
|
|
38
|
+
/** Subscribe to location changes. Returns an unsubscribe function. */
|
|
39
|
+
subscribe(listener: () => void): () => void;
|
|
40
|
+
}
|
|
41
|
+
/** Split an href into a {@link BackofficeLocation} (query → params). */
|
|
42
|
+
export declare function parseBackofficeHref(href: string): BackofficeLocation;
|
|
43
|
+
type Listener = () => void;
|
|
44
|
+
declare abstract class SubscribableNavigator implements BackofficeNavigator {
|
|
45
|
+
protected listeners: Set<Listener>;
|
|
46
|
+
protected location: BackofficeLocation;
|
|
47
|
+
constructor(initialLocation: BackofficeLocation);
|
|
48
|
+
abstract navigate(path: string): void;
|
|
49
|
+
abstract replace(path: string): void;
|
|
50
|
+
abstract back(): void;
|
|
51
|
+
getLocation: () => BackofficeLocation;
|
|
52
|
+
subscribe: (listener: Listener) => (() => void);
|
|
53
|
+
protected setLocationInternal(next: BackofficeLocation): void;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* In-memory navigator — a self-contained history stack for tests, stories,
|
|
57
|
+
* and hosts with no routing runtime (e.g. a modal embedding of a single
|
|
58
|
+
* backoffice surface).
|
|
59
|
+
*/
|
|
60
|
+
export declare class MemoryNavigator extends SubscribableNavigator {
|
|
61
|
+
private stack;
|
|
62
|
+
constructor(initialPath?: string);
|
|
63
|
+
/** History entries, oldest first (test introspection). */
|
|
64
|
+
get entries(): readonly BackofficeLocation[];
|
|
65
|
+
navigate: (path: string) => void;
|
|
66
|
+
replace: (path: string) => void;
|
|
67
|
+
back: () => void;
|
|
68
|
+
}
|
|
69
|
+
export declare function createMemoryNavigator(initialPath?: string): MemoryNavigator;
|
|
70
|
+
export interface ControlledNavigatorHandlers {
|
|
71
|
+
navigate(path: string): void;
|
|
72
|
+
replace(path: string): void;
|
|
73
|
+
back(): void;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Bridge navigator for adapters over an external router: navigation calls
|
|
77
|
+
* forward to the host handlers, and the host mirrors its location back via
|
|
78
|
+
* {@link ControlledNavigator.setLocation}. The one-adapter is ~20 lines over
|
|
79
|
+
* this class; a react-router or seam adapter looks the same.
|
|
80
|
+
*/
|
|
81
|
+
export declare class ControlledNavigator extends SubscribableNavigator {
|
|
82
|
+
private handlers;
|
|
83
|
+
constructor(handlers: ControlledNavigatorHandlers, initialLocation?: BackofficeLocation);
|
|
84
|
+
/** Swap the forwarding callbacks (adapters keep them fresh per render). */
|
|
85
|
+
setHandlers(handlers: ControlledNavigatorHandlers): void;
|
|
86
|
+
/** Mirror the host router's current location into the navigator. */
|
|
87
|
+
setLocation(next: BackofficeLocation): void;
|
|
88
|
+
navigate: (path: string) => void;
|
|
89
|
+
replace: (path: string) => void;
|
|
90
|
+
back: () => void;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Inert navigator — the default-context fallback so package surfaces render
|
|
94
|
+
* (and stories mount) without a BackofficeProvider. Navigation is a no-op.
|
|
95
|
+
*/
|
|
96
|
+
export declare function createNoopNavigator(initialPath?: string): BackofficeNavigator;
|
|
97
|
+
export {};
|
|
98
|
+
//# sourceMappingURL=navigator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigator.d.ts","sourceRoot":"","sources":["../../src/navigation/navigator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AAE7E,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yCAAyC;IACzC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yBAAyB;IACzB,IAAI,IAAI,IAAI,CAAC;IACb,2EAA2E;IAC3E,WAAW,IAAI,kBAAkB,CAAC;IAClC,sEAAsE;IACtE,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7C;AA+BD,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAKpE;AAED,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAE3B,uBAAe,qBAAsB,YAAW,mBAAmB;IACjE,SAAS,CAAC,SAAS,gBAAuB;IAC1C,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC;gBAE3B,eAAe,EAAE,kBAAkB;IAI/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACrC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACpC,QAAQ,CAAC,IAAI,IAAI,IAAI;IAErB,WAAW,QAAO,kBAAkB,CAAkB;IAEtD,SAAS,GAAI,UAAU,QAAQ,KAAG,CAAC,MAAM,IAAI,CAAC,CAG5C;IAEF,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;CAK9D;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,qBAAqB;IACxD,OAAO,CAAC,KAAK,CAAuB;gBAExB,WAAW,SAAgB;IAMvC,0DAA0D;IAC1D,IAAI,OAAO,IAAI,SAAS,kBAAkB,EAAE,CAE3C;IAED,QAAQ,GAAI,MAAM,MAAM,KAAG,IAAI,CAI7B;IAEF,OAAO,GAAI,MAAM,MAAM,KAAG,IAAI,CAI5B;IAEF,IAAI,QAAO,IAAI,CAKb;CACH;AAED,wBAAgB,qBAAqB,CAAC,WAAW,SAAgB,GAAG,eAAe,CAElF;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,qBAAqB;IAC5D,OAAO,CAAC,QAAQ,CAA8B;gBAElC,QAAQ,EAAE,2BAA2B,EAAE,eAAe,CAAC,EAAE,kBAAkB;IAKvF,2EAA2E;IAC3E,WAAW,CAAC,QAAQ,EAAE,2BAA2B,GAAG,IAAI;IAIxD,oEAAoE;IACpE,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAI3C,QAAQ,GAAI,MAAM,MAAM,KAAG,IAAI,CAE7B;IAEF,OAAO,GAAI,MAAM,MAAM,KAAG,IAAI,CAE5B;IAEF,IAAI,QAAO,IAAI,CAEb;CACH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,SAAgB,GAAG,mBAAmB,CASpF"}
|