@cratis/scene.react 4.28.0 → 4.30.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 (193) hide show
  1. package/core/CoreToolbar.tsx +37 -6
  2. package/core/coreComponentMetadata.ts +1 -0
  3. package/core/coreComponents.ts +2 -0
  4. package/core/coreDescriptors.ts +13 -0
  5. package/core/corePackage.ts +1 -0
  6. package/dist/cjs/core/CoreToolbar.js +44 -4
  7. package/dist/cjs/core/CoreToolbar.js.map +1 -1
  8. package/dist/cjs/core/coreComponentMetadata.js +6 -0
  9. package/dist/cjs/core/coreComponentMetadata.js.map +1 -1
  10. package/dist/cjs/core/coreComponents.js +3 -1
  11. package/dist/cjs/core/coreComponents.js.map +1 -1
  12. package/dist/cjs/core/coreDescriptors.js +27 -0
  13. package/dist/cjs/core/coreDescriptors.js.map +1 -1
  14. package/dist/cjs/core/corePackage.js +2 -1
  15. package/dist/cjs/core/corePackage.js.map +1 -1
  16. package/dist/cjs/index.js +36 -0
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/navigation/SceneNavigationContext.js.map +1 -1
  19. package/dist/cjs/navigation/SceneNavigationHost.js +34 -18
  20. package/dist/cjs/navigation/SceneNavigationHost.js.map +1 -1
  21. package/dist/cjs/navigation/region/NavigationRegionClassNames.js +21 -0
  22. package/dist/cjs/navigation/region/NavigationRegionClassNames.js.map +1 -0
  23. package/dist/cjs/navigation/region/NavigationRegionView.js +283 -0
  24. package/dist/cjs/navigation/region/NavigationRegionView.js.map +1 -0
  25. package/dist/cjs/navigation/region/SceneNavigationModelContext.js +22 -0
  26. package/dist/cjs/navigation/region/SceneNavigationModelContext.js.map +1 -0
  27. package/dist/cjs/navigation/region/currentModuleOf.js +15 -0
  28. package/dist/cjs/navigation/region/currentModuleOf.js.map +1 -0
  29. package/dist/cjs/navigation/region/navigationDestinations.js +46 -0
  30. package/dist/cjs/navigation/region/navigationDestinations.js.map +1 -0
  31. package/dist/cjs/navigation/region/navigationItemActive.js +31 -0
  32. package/dist/cjs/navigation/region/navigationItemActive.js.map +1 -0
  33. package/dist/cjs/navigation/region/navigationItemDestination.js +34 -0
  34. package/dist/cjs/navigation/region/navigationItemDestination.js.map +1 -0
  35. package/dist/cjs/navigation/useSceneHistoryNavigation.js +3 -1
  36. package/dist/cjs/navigation/useSceneHistoryNavigation.js.map +1 -1
  37. package/dist/cjs/slices/CoreSliceDialog.js +21 -0
  38. package/dist/cjs/slices/CoreSliceDialog.js.map +1 -0
  39. package/dist/cjs/slices/SliceCommandFieldsContext.js +22 -0
  40. package/dist/cjs/slices/SliceCommandFieldsContext.js.map +1 -0
  41. package/dist/cjs/slices/SliceDialogView.js +254 -0
  42. package/dist/cjs/slices/SliceDialogView.js.map +1 -0
  43. package/dist/cjs/slices/SliceInvokerContext.js +40 -0
  44. package/dist/cjs/slices/SliceInvokerContext.js.map +1 -0
  45. package/dist/cjs/slices/createAnnouncingInvoker.js +27 -0
  46. package/dist/cjs/slices/createAnnouncingInvoker.js.map +1 -0
  47. package/dist/cjs/slices/createDryRunInvoker.js +38 -0
  48. package/dist/cjs/slices/createDryRunInvoker.js.map +1 -0
  49. package/dist/cjs/slices/sliceDialogDestination.js +41 -0
  50. package/dist/cjs/slices/sliceDialogDestination.js.map +1 -0
  51. package/dist/esm/core/CoreToolbar.d.ts.map +1 -1
  52. package/dist/esm/core/CoreToolbar.js +47 -7
  53. package/dist/esm/core/CoreToolbar.js.map +1 -1
  54. package/dist/esm/core/coreComponentMetadata.d.ts.map +1 -1
  55. package/dist/esm/core/coreComponentMetadata.js +6 -0
  56. package/dist/esm/core/coreComponentMetadata.js.map +1 -1
  57. package/dist/esm/core/coreComponents.d.ts.map +1 -1
  58. package/dist/esm/core/coreComponents.js +3 -1
  59. package/dist/esm/core/coreComponents.js.map +1 -1
  60. package/dist/esm/core/coreDescriptors.d.ts.map +1 -1
  61. package/dist/esm/core/coreDescriptors.js +27 -0
  62. package/dist/esm/core/coreDescriptors.js.map +1 -1
  63. package/dist/esm/core/corePackage.d.ts.map +1 -1
  64. package/dist/esm/core/corePackage.js +2 -1
  65. package/dist/esm/core/corePackage.js.map +1 -1
  66. package/dist/esm/index.d.ts +1 -0
  67. package/dist/esm/index.d.ts.map +1 -1
  68. package/dist/esm/index.js +14 -0
  69. package/dist/esm/index.js.map +1 -1
  70. package/dist/esm/navigation/SceneNavigationContext.d.ts +1 -0
  71. package/dist/esm/navigation/SceneNavigationContext.d.ts.map +1 -1
  72. package/dist/esm/navigation/SceneNavigationContext.js.map +1 -1
  73. package/dist/esm/navigation/SceneNavigationHost.d.ts +5 -1
  74. package/dist/esm/navigation/SceneNavigationHost.d.ts.map +1 -1
  75. package/dist/esm/navigation/SceneNavigationHost.js +35 -19
  76. package/dist/esm/navigation/SceneNavigationHost.js.map +1 -1
  77. package/dist/esm/navigation/SceneNavigationState.d.ts +1 -0
  78. package/dist/esm/navigation/SceneNavigationState.d.ts.map +1 -1
  79. package/dist/esm/navigation/index.d.ts +8 -0
  80. package/dist/esm/navigation/index.d.ts.map +1 -1
  81. package/dist/esm/navigation/index.js +8 -0
  82. package/dist/esm/navigation/index.js.map +1 -1
  83. package/dist/esm/navigation/region/NavigationRegionClassNames.d.ts +12 -0
  84. package/dist/esm/navigation/region/NavigationRegionClassNames.d.ts.map +1 -0
  85. package/dist/esm/navigation/region/NavigationRegionClassNames.js +19 -0
  86. package/dist/esm/navigation/region/NavigationRegionClassNames.js.map +1 -0
  87. package/dist/esm/navigation/region/NavigationRegionView.d.ts +20 -0
  88. package/dist/esm/navigation/region/NavigationRegionView.d.ts.map +1 -0
  89. package/dist/esm/navigation/region/NavigationRegionView.js +281 -0
  90. package/dist/esm/navigation/region/NavigationRegionView.js.map +1 -0
  91. package/dist/esm/navigation/region/SceneNavigationModel.d.ts +9 -0
  92. package/dist/esm/navigation/region/SceneNavigationModel.d.ts.map +1 -0
  93. package/dist/esm/navigation/region/SceneNavigationModel.js +2 -0
  94. package/dist/esm/navigation/region/SceneNavigationModel.js.map +1 -0
  95. package/dist/esm/navigation/region/SceneNavigationModelContext.d.ts +9 -0
  96. package/dist/esm/navigation/region/SceneNavigationModelContext.d.ts.map +1 -0
  97. package/dist/esm/navigation/region/SceneNavigationModelContext.js +19 -0
  98. package/dist/esm/navigation/region/SceneNavigationModelContext.js.map +1 -0
  99. package/dist/esm/navigation/region/currentModuleOf.d.ts +3 -0
  100. package/dist/esm/navigation/region/currentModuleOf.d.ts.map +1 -0
  101. package/dist/esm/navigation/region/currentModuleOf.js +13 -0
  102. package/dist/esm/navigation/region/currentModuleOf.js.map +1 -0
  103. package/dist/esm/navigation/region/navigationDestinations.d.ts +4 -0
  104. package/dist/esm/navigation/region/navigationDestinations.d.ts.map +1 -0
  105. package/dist/esm/navigation/region/navigationDestinations.js +44 -0
  106. package/dist/esm/navigation/region/navigationDestinations.js.map +1 -0
  107. package/dist/esm/navigation/region/navigationItemActive.d.ts +5 -0
  108. package/dist/esm/navigation/region/navigationItemActive.d.ts.map +1 -0
  109. package/dist/esm/navigation/region/navigationItemActive.js +29 -0
  110. package/dist/esm/navigation/region/navigationItemActive.js.map +1 -0
  111. package/dist/esm/navigation/region/navigationItemDestination.d.ts +5 -0
  112. package/dist/esm/navigation/region/navigationItemDestination.d.ts.map +1 -0
  113. package/dist/esm/navigation/region/navigationItemDestination.js +31 -0
  114. package/dist/esm/navigation/region/navigationItemDestination.js.map +1 -0
  115. package/dist/esm/navigation/useSceneHistoryNavigation.d.ts.map +1 -1
  116. package/dist/esm/navigation/useSceneHistoryNavigation.js +3 -1
  117. package/dist/esm/navigation/useSceneHistoryNavigation.js.map +1 -1
  118. package/dist/esm/slices/CoreSliceDialog.d.ts +3 -0
  119. package/dist/esm/slices/CoreSliceDialog.d.ts.map +1 -0
  120. package/dist/esm/slices/CoreSliceDialog.js +19 -0
  121. package/dist/esm/slices/CoreSliceDialog.js.map +1 -0
  122. package/dist/esm/slices/InvocationResult.d.ts +10 -0
  123. package/dist/esm/slices/InvocationResult.d.ts.map +1 -0
  124. package/dist/esm/slices/InvocationResult.js +2 -0
  125. package/dist/esm/slices/InvocationResult.js.map +1 -0
  126. package/dist/esm/slices/InvocationValidationError.d.ts +5 -0
  127. package/dist/esm/slices/InvocationValidationError.d.ts.map +1 -0
  128. package/dist/esm/slices/InvocationValidationError.js +2 -0
  129. package/dist/esm/slices/InvocationValidationError.js.map +1 -0
  130. package/dist/esm/slices/SliceCommandField.d.ts +7 -0
  131. package/dist/esm/slices/SliceCommandField.d.ts.map +1 -0
  132. package/dist/esm/slices/SliceCommandField.js +2 -0
  133. package/dist/esm/slices/SliceCommandField.js.map +1 -0
  134. package/dist/esm/slices/SliceCommandFieldsContext.d.ts +10 -0
  135. package/dist/esm/slices/SliceCommandFieldsContext.d.ts.map +1 -0
  136. package/dist/esm/slices/SliceCommandFieldsContext.js +19 -0
  137. package/dist/esm/slices/SliceCommandFieldsContext.js.map +1 -0
  138. package/dist/esm/slices/SliceDialogView.d.ts +12 -0
  139. package/dist/esm/slices/SliceDialogView.d.ts.map +1 -0
  140. package/dist/esm/slices/SliceDialogView.js +250 -0
  141. package/dist/esm/slices/SliceDialogView.js.map +1 -0
  142. package/dist/esm/slices/SliceInvoker.d.ts +5 -0
  143. package/dist/esm/slices/SliceInvoker.d.ts.map +1 -0
  144. package/dist/esm/slices/SliceInvoker.js +2 -0
  145. package/dist/esm/slices/SliceInvoker.js.map +1 -0
  146. package/dist/esm/slices/SliceInvokerContext.d.ts +11 -0
  147. package/dist/esm/slices/SliceInvokerContext.d.ts.map +1 -0
  148. package/dist/esm/slices/SliceInvokerContext.js +36 -0
  149. package/dist/esm/slices/SliceInvokerContext.js.map +1 -0
  150. package/dist/esm/slices/createAnnouncingInvoker.d.ts +3 -0
  151. package/dist/esm/slices/createAnnouncingInvoker.d.ts.map +1 -0
  152. package/dist/esm/slices/createAnnouncingInvoker.js +25 -0
  153. package/dist/esm/slices/createAnnouncingInvoker.js.map +1 -0
  154. package/dist/esm/slices/createDryRunInvoker.d.ts +15 -0
  155. package/dist/esm/slices/createDryRunInvoker.d.ts.map +1 -0
  156. package/dist/esm/slices/createDryRunInvoker.js +36 -0
  157. package/dist/esm/slices/createDryRunInvoker.js.map +1 -0
  158. package/dist/esm/slices/index.d.ts +12 -0
  159. package/dist/esm/slices/index.d.ts.map +1 -0
  160. package/dist/esm/slices/index.js +12 -0
  161. package/dist/esm/slices/index.js.map +1 -0
  162. package/dist/esm/slices/sliceDialogDestination.d.ts +10 -0
  163. package/dist/esm/slices/sliceDialogDestination.d.ts.map +1 -0
  164. package/dist/esm/slices/sliceDialogDestination.js +38 -0
  165. package/dist/esm/slices/sliceDialogDestination.js.map +1 -0
  166. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  167. package/index.ts +1 -0
  168. package/navigation/SceneNavigationContext.tsx +3 -0
  169. package/navigation/SceneNavigationHost.tsx +35 -9
  170. package/navigation/SceneNavigationState.ts +3 -0
  171. package/navigation/index.ts +8 -0
  172. package/navigation/region/NavigationRegionClassNames.ts +46 -0
  173. package/navigation/region/NavigationRegionView.tsx +234 -0
  174. package/navigation/region/SceneNavigationModel.ts +29 -0
  175. package/navigation/region/SceneNavigationModelContext.tsx +25 -0
  176. package/navigation/region/currentModuleOf.ts +14 -0
  177. package/navigation/region/navigationDestinations.ts +41 -0
  178. package/navigation/region/navigationItemActive.ts +39 -0
  179. package/navigation/region/navigationItemDestination.ts +29 -0
  180. package/navigation/useSceneHistoryNavigation.ts +2 -1
  181. package/package.json +5 -5
  182. package/slices/CoreSliceDialog.tsx +14 -0
  183. package/slices/InvocationResult.ts +27 -0
  184. package/slices/InvocationValidationError.ts +13 -0
  185. package/slices/SliceCommandField.ts +19 -0
  186. package/slices/SliceCommandFieldsContext.tsx +28 -0
  187. package/slices/SliceDialogView.tsx +176 -0
  188. package/slices/SliceInvoker.ts +19 -0
  189. package/slices/SliceInvokerContext.tsx +47 -0
  190. package/slices/createAnnouncingInvoker.ts +17 -0
  191. package/slices/createDryRunInvoker.ts +43 -0
  192. package/slices/index.ts +14 -0
  193. package/slices/sliceDialogDestination.ts +40 -0
package/dist/esm/index.js CHANGED
@@ -35,6 +35,20 @@ export { CoreOutlet } from './navigation/CoreOutlet.js';
35
35
  export { SceneOutletContext, useSceneOutlets } from './navigation/SceneOutletContext.js';
36
36
  export { collectOutletOwners, outletComponentName } from './navigation/collectOutletOwners.js';
37
37
  export { placeInOutlet } from './navigation/placeInOutlet.js';
38
+ export { SceneNavigationModelProvider, useSceneNavigationModel } from './navigation/region/SceneNavigationModelContext.js';
39
+ export { defaultNavigationRegionClassNames } from './navigation/region/NavigationRegionClassNames.js';
40
+ export { NavigationRegionView } from './navigation/region/NavigationRegionView.js';
41
+ export { currentModuleOf } from './navigation/region/currentModuleOf.js';
42
+ export { navigationItemActive } from './navigation/region/navigationItemActive.js';
43
+ export { defaultScreenFor, navigationItemDestination } from './navigation/region/navigationItemDestination.js';
44
+ export { navigationDestinations } from './navigation/region/navigationDestinations.js';
45
+ export { createAnnouncingInvoker } from './slices/createAnnouncingInvoker.js';
46
+ export { createDryRunInvoker } from './slices/createDryRunInvoker.js';
47
+ export { SliceInvokerProvider, useSliceInvoker, useWarnEmptySlices } from './slices/SliceInvokerContext.js';
48
+ export { SliceCommandFieldsProvider, useSliceCommandFields } from './slices/SliceCommandFieldsContext.js';
49
+ export { sliceDialogDestination, sliceDialogParameters } from './slices/sliceDialogDestination.js';
50
+ export { SliceDialogView, sliceFieldLabel, slicePayload } from './slices/SliceDialogView.js';
51
+ export { CoreSliceDialog } from './slices/CoreSliceDialog.js';
38
52
  export { IconAdapterRegistry, createIconAdapterRegistry } from './icons/IconAdapterRegistry.js';
39
53
  export { IconAdapterProvider, useIconAdapters } from './icons/IconAdapterContext.js';
40
54
  export { useIconGlyph } from './icons/useIconGlyph.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -10,6 +10,7 @@ export interface SceneNavigationContextValue {
10
10
  currentUrl?: string;
11
11
  currentOutlet?: string;
12
12
  currentDialog?: string;
13
+ currentDialogParameters?: Record<string, string>;
13
14
  currentParameters: Record<string, string>;
14
15
  dialogResult?: DialogResult;
15
16
  unresolvedUrl?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"SceneNavigationContext.d.ts","sourceRoot":"","sources":["../../../navigation/SceneNavigationContext.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAA6B,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,2BAA2B;IAExC,aAAa,EAAE,MAAM,CAAC;IAGtB,aAAa,EAAE,MAAM,CAAC;IAGtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG1C,YAAY,CAAC,EAAE,YAAY,CAAC;IAG5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,oBAAoB,GAAG,qBAAqB,CAAC;IAGnE,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAGpC,IAAI,IAAI,IAAI,CAAC;CAChB;AAKD,eAAO,MAAM,8BAA8B,kEAAU,CAAC;AAEtD,MAAM,WAAW,4BAA4B;IACzC,KAAK,EAAE,2BAA2B,CAAC;IACnC,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,4BAA4B,+BAExF;AAED,wBAAgB,kBAAkB,IAAI,2BAA2B,CAIhE"}
1
+ {"version":3,"file":"SceneNavigationContext.d.ts","sourceRoot":"","sources":["../../../navigation/SceneNavigationContext.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAA6B,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,2BAA2B;IAExC,aAAa,EAAE,MAAM,CAAC;IAGtB,aAAa,EAAE,MAAM,CAAC;IAGtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGjD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG1C,YAAY,CAAC,EAAE,YAAY,CAAC;IAG5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,oBAAoB,GAAG,qBAAqB,CAAC;IAGnE,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAGpC,IAAI,IAAI,IAAI,CAAC;CAChB;AAKD,eAAO,MAAM,8BAA8B,kEAAU,CAAC;AAEtD,MAAM,WAAW,4BAA4B;IACzC,KAAK,EAAE,2BAA2B,CAAC;IACnC,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,4BAA4B,+BAExF;AAED,wBAAgB,kBAAkB,IAAI,2BAA2B,CAIhE"}
@@ -1 +1 @@
1
- {"version":3,"file":"SceneNavigationContext.js","sources":["../../../navigation/SceneNavigationContext.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ReactNode, createContext, useContext } from 'react';\nimport { BindingScope } from '@cratis/scene.engine';\nimport { DestinationReference } from '@cratis/scene.model';\nimport { DestinationResolution } from './DestinationResolution';\nimport { DialogResult } from './DialogResult';\n\nexport interface SceneNavigationContextValue {\n /** The screen the last navigation opened. */\n currentScreen: string;\n\n /** The screen in the primary region. */\n primaryScreen: string;\n\n /** Which screen each nested outlet shows, by outlet name. */\n outlets: Record<string, string>;\n currentUrl?: string;\n currentOutlet?: string;\n currentDialog?: string;\n\n /** The route parameters of the current entry - from the destination that opened it, or the deep link. */\n currentParameters: Record<string, string>;\n\n /** What the last dialog returned when it closed. */\n dialogResult?: DialogResult;\n\n /** A deep link that matched no route; the host fell back to its initial screen. */\n unresolvedUrl?: string;\n bindingScope: BindingScope;\n navigate(destination: DestinationReference): DestinationResolution;\n\n /** Closes the open dialog, returning to the entry that opened it, and records its result. */\n closeDialog(result?: unknown): void;\n\n /** Goes back one history entry. */\n back(): void;\n}\n\nconst Context = createContext<SceneNavigationContextValue | undefined>(undefined);\n\n/** The navigation context itself, for components that render outside a host as well as inside one. */\nexport const SceneNavigationContextInternal = Context;\n\nexport interface SceneNavigationProviderProps {\n value: SceneNavigationContextValue;\n children: ReactNode;\n}\n\nexport function SceneNavigationProvider({ value, children }: SceneNavigationProviderProps) {\n return <Context.Provider value={value}>{children}</Context.Provider>;\n}\n\nexport function useSceneNavigation(): SceneNavigationContextValue {\n const context = useContext(Context);\n if (!context) throw new Error('No Scene navigation context is available.');\n return context;\n}\n"],"names":["Context","createContext","undefined","SceneNavigationContextInternal","SceneNavigationProvider","value","children","_jsx","Provider","useSceneNavigation","context","useContext","Error"],"mappings":";;;AAwCA,MAAMA,wBAAUC,aAAAA,CAAuDC,SAAAA,CAAAA;AAEvE,uGACO,MAAMC,8BAAAA,GAAiCH;AAOvC,SAASI,uBAAAA,CAAwB,EAAEC,KAAK,EAAEC,QAAQ,EAAgC,EAAA;IACrF,qBAAOC,GAAA,CAACP,QAAQQ,QAAQ,EAAA;QAACH,KAAAA,EAAOA,KAAAA;AAAQC,QAAAA,QAAAA,EAAAA;;AAC5C;AAEO,SAASG,kBAAAA,GAAAA;AACZ,IAAA,MAAMC,UAAUC,UAAAA,CAAWX,OAAAA,CAAAA;AAC3B,IAAA,IAAI,CAACU,OAAAA,EAAS,MAAM,IAAIE,KAAAA,CAAM,2CAAA,CAAA;IAC9B,OAAOF,OAAAA;AACX;;"}
1
+ {"version":3,"file":"SceneNavigationContext.js","sources":["../../../navigation/SceneNavigationContext.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ReactNode, createContext, useContext } from 'react';\nimport { BindingScope } from '@cratis/scene.engine';\nimport { DestinationReference } from '@cratis/scene.model';\nimport { DestinationResolution } from './DestinationResolution';\nimport { DialogResult } from './DialogResult';\n\nexport interface SceneNavigationContextValue {\n /** The screen the last navigation opened. */\n currentScreen: string;\n\n /** The screen in the primary region. */\n primaryScreen: string;\n\n /** Which screen each nested outlet shows, by outlet name. */\n outlets: Record<string, string>;\n currentUrl?: string;\n currentOutlet?: string;\n currentDialog?: string;\n\n /** The parameters the open dialog was opened with - a slice dialog carries its slice, command and title. */\n currentDialogParameters?: Record<string, string>;\n\n /** The route parameters of the current entry - from the destination that opened it, or the deep link. */\n currentParameters: Record<string, string>;\n\n /** What the last dialog returned when it closed. */\n dialogResult?: DialogResult;\n\n /** A deep link that matched no route; the host fell back to its initial screen. */\n unresolvedUrl?: string;\n bindingScope: BindingScope;\n navigate(destination: DestinationReference): DestinationResolution;\n\n /** Closes the open dialog, returning to the entry that opened it, and records its result. */\n closeDialog(result?: unknown): void;\n\n /** Goes back one history entry. */\n back(): void;\n}\n\nconst Context = createContext<SceneNavigationContextValue | undefined>(undefined);\n\n/** The navigation context itself, for components that render outside a host as well as inside one. */\nexport const SceneNavigationContextInternal = Context;\n\nexport interface SceneNavigationProviderProps {\n value: SceneNavigationContextValue;\n children: ReactNode;\n}\n\nexport function SceneNavigationProvider({ value, children }: SceneNavigationProviderProps) {\n return <Context.Provider value={value}>{children}</Context.Provider>;\n}\n\nexport function useSceneNavigation(): SceneNavigationContextValue {\n const context = useContext(Context);\n if (!context) throw new Error('No Scene navigation context is available.');\n return context;\n}\n"],"names":["Context","createContext","undefined","SceneNavigationContextInternal","SceneNavigationProvider","value","children","_jsx","Provider","useSceneNavigation","context","useContext","Error"],"mappings":";;;AA2CA,MAAMA,wBAAUC,aAAAA,CAAuDC,SAAAA,CAAAA;AAEvE,uGACO,MAAMC,8BAAAA,GAAiCH;AAOvC,SAASI,uBAAAA,CAAwB,EAAEC,KAAK,EAAEC,QAAQ,EAAgC,EAAA;IACrF,qBAAOC,GAAA,CAACP,QAAQQ,QAAQ,EAAA;QAACH,KAAAA,EAAOA,KAAAA;AAAQC,QAAAA,QAAAA,EAAAA;;AAC5C;AAEO,SAASG,kBAAAA,GAAAA;AACZ,IAAA,MAAMC,UAAUC,UAAAA,CAAWX,OAAAA,CAAAA;AAC3B,IAAA,IAAI,CAACU,OAAAA,EAAS,MAAM,IAAIE,KAAAA,CAAM,2CAAA,CAAA;IAC9B,OAAOF,OAAAA;AACX;;"}
@@ -1,8 +1,10 @@
1
+ import { ReactNode } from 'react';
1
2
  import { BindingScope } from '@cratis/scene.engine';
2
3
  import { DestinationReference, SceneElement } from '@cratis/scene.model';
3
4
  import { ComponentRegistry } from '../renderer';
4
5
  import { SceneHistory } from './SceneHistory';
5
6
  import { SceneRoute } from './SceneRoute';
7
+ import { SceneNavigationModel } from './region/SceneNavigationModel';
6
8
  export interface SceneNavigationHostProps {
7
9
  screens: Record<string, SceneElement>;
8
10
  dialogs?: Record<string, SceneElement>;
@@ -11,7 +13,9 @@ export interface SceneNavigationHostProps {
11
13
  bindingScope?: BindingScope;
12
14
  history?: SceneHistory;
13
15
  destinations?: DestinationReference[];
16
+ navigationModel?: SceneNavigationModel;
17
+ frame?(content: ReactNode): ReactNode;
14
18
  routes?: SceneRoute[];
15
19
  }
16
- export declare function SceneNavigationHost({ screens, dialogs, initialScreen, registry, bindingScope, history, destinations, routes }: SceneNavigationHostProps): import("react").JSX.Element;
20
+ export declare function SceneNavigationHost({ screens, dialogs, initialScreen, registry, bindingScope, history, destinations: authoredDestinations, routes, navigationModel, frame }: SceneNavigationHostProps): import("react").JSX.Element;
17
21
  //# sourceMappingURL=SceneNavigationHost.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneNavigationHost.d.ts","sourceRoot":"","sources":["../../../navigation/SceneNavigationHost.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,MAAM,WAAW,wBAAwB;IACrC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAM5B,OAAO,CAAC,EAAE,YAAY,CAAC;IAGvB,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAGtC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;CACzB;AASD,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,wBAAwB,+BAkBjK"}
1
+ {"version":3,"file":"SceneNavigationHost.d.ts","sourceRoot":"","sources":["../../../navigation/SceneNavigationHost.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAMrE,MAAM,WAAW,wBAAwB;IACrC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAM5B,OAAO,CAAC,EAAE,YAAY,CAAC;IAGvB,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAMtC,eAAe,CAAC,EAAE,oBAAoB,CAAC;IAMvC,KAAK,CAAC,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAGtC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;CACzB;AAUD,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,wBAAwB,+BA0B/M"}
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { useState, useMemo } from 'react';
2
+ import { useMemo, useState } from 'react';
3
3
  import { SceneElementView } from '../SceneElementView.js';
4
4
  import { createMemorySceneHistory } from './createMemorySceneHistory.js';
5
5
  import { SceneNavigationProvider } from './SceneNavigationContext.js';
@@ -7,14 +7,23 @@ import { sceneRoutesFrom } from './sceneRoutesFrom.js';
7
7
  import { collectOutletOwners } from './collectOutletOwners.js';
8
8
  import { SceneOutletContext } from './SceneOutletContext.js';
9
9
  import { useSceneHistoryNavigation } from './useSceneHistoryNavigation.js';
10
+ import { SceneNavigationModelProvider } from './region/SceneNavigationModelContext.js';
11
+ import { navigationDestinations } from './region/navigationDestinations.js';
12
+ import { SliceDialogView } from '../slices/SliceDialogView.js';
13
+ import { sliceDialogParameters } from '../slices/sliceDialogDestination.js';
10
14
 
11
15
  /**
12
16
  * Executes Scene destinations against an in-memory rendered hierarchy: a destination into a nested outlet -
13
17
  * one a screen declares with `core:outlet` - places its screen there and keeps the screens above it, to any
14
18
  * depth; any other screen route replaces the primary region,
15
- * dialog destinations render dialog content over the screen that opened them, and external destinations
19
+ * dialog destinations render dialog content over the screen that opened them - a toolbar slice button's dialog falls back to
20
+ * the built-in task dialog (`SliceDialogView`) when `dialogs` has no template of that name -, and external destinations
16
21
  * only report their resolved action. Every navigation is a history entry.
17
- */ function SceneNavigationHost({ screens, dialogs = {}, initialScreen, registry, bindingScope = {}, history, destinations, routes }) {
22
+ */ function SceneNavigationHost({ screens, dialogs = {}, initialScreen, registry, bindingScope = {}, history, destinations: authoredDestinations, routes, navigationModel, frame }) {
23
+ const destinations = useMemo(()=>authoredDestinations ?? (navigationModel ? navigationDestinations(navigationModel.structure, navigationModel.navigation, navigationModel.screenFor) : undefined), [
24
+ authoredDestinations,
25
+ navigationModel
26
+ ]);
18
27
  const [memoryHistory] = useState(()=>createMemorySceneHistory());
19
28
  const routeTable = useMemo(()=>routes ?? sceneRoutesFrom(Object.keys(screens), destinations), [
20
29
  destinations,
@@ -34,38 +43,45 @@ import { useSceneHistoryNavigation } from './useSceneHistoryNavigation.js';
34
43
  ]);
35
44
  const screen = screens[value.primaryScreen];
36
45
  const dialog = value.currentDialog ? dialogs[value.currentDialog] : undefined;
37
- return /*#__PURE__*/ jsx(SceneNavigationProvider, {
46
+ const sliceDialog = !dialog && value.currentDialog && sliceDialogParameters(value.currentDialogParameters) !== undefined;
47
+ const dialogName = sliceDialogParameters(value.currentDialogParameters)?.title ?? value.currentDialog;
48
+ const outlet = /*#__PURE__*/ jsx("div", {
49
+ "data-scene-outlet": value.primaryScreen === value.currentScreen ? value.currentOutlet ?? 'primary' : 'primary',
50
+ "data-scene-url": value.currentUrl,
51
+ children: screen && /*#__PURE__*/ jsx(SceneElementView, {
52
+ element: screen,
53
+ registry: registry,
54
+ dataContext: bindingScope.dataContext,
55
+ queryResults: bindingScope.queryResults,
56
+ componentOutputs: bindingScope.componentOutputs
57
+ })
58
+ });
59
+ const page = /*#__PURE__*/ jsx(SceneNavigationProvider, {
38
60
  value: value,
39
61
  children: /*#__PURE__*/ jsxs(SceneOutletContext.Provider, {
40
62
  value: outletContext,
41
63
  children: [
42
- /*#__PURE__*/ jsx("div", {
43
- "data-scene-outlet": value.primaryScreen === value.currentScreen ? value.currentOutlet ?? 'primary' : 'primary',
44
- "data-scene-url": value.currentUrl,
45
- children: screen && /*#__PURE__*/ jsx(SceneElementView, {
46
- element: screen,
47
- registry: registry,
48
- dataContext: bindingScope.dataContext,
49
- queryResults: bindingScope.queryResults,
50
- componentOutputs: bindingScope.componentOutputs
51
- })
52
- }),
53
- dialog && /*#__PURE__*/ jsx("div", {
64
+ frame ? frame(outlet) : outlet,
65
+ (dialog || sliceDialog) && /*#__PURE__*/ jsx("div", {
54
66
  role: "dialog",
55
67
  "aria-modal": "true",
56
- "aria-label": value.currentDialog,
68
+ "aria-label": dialogName,
57
69
  "data-scene-dialog": value.currentDialog,
58
- children: /*#__PURE__*/ jsx(SceneElementView, {
70
+ children: dialog ? /*#__PURE__*/ jsx(SceneElementView, {
59
71
  element: dialog,
60
72
  registry: registry,
61
73
  dataContext: bindingScope.dataContext,
62
74
  queryResults: bindingScope.queryResults,
63
75
  componentOutputs: bindingScope.componentOutputs
64
- })
76
+ }) : /*#__PURE__*/ jsx(SliceDialogView, {})
65
77
  })
66
78
  ]
67
79
  })
68
80
  });
81
+ return navigationModel ? /*#__PURE__*/ jsx(SceneNavigationModelProvider, {
82
+ model: navigationModel,
83
+ children: page
84
+ }) : page;
69
85
  }
70
86
 
71
87
  export { SceneNavigationHost };
@@ -1 +1 @@
1
- {"version":3,"file":"SceneNavigationHost.js","sources":["../../../navigation/SceneNavigationHost.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useMemo, useState } from 'react';\nimport { BindingScope } from '@cratis/scene.engine';\nimport { DestinationReference, SceneElement } from '@cratis/scene.model';\nimport { SceneElementView } from '../SceneElementView';\nimport { ComponentRegistry } from '../renderer';\nimport { createMemorySceneHistory } from './createMemorySceneHistory';\nimport { SceneHistory } from './SceneHistory';\nimport { SceneNavigationProvider } from './SceneNavigationContext';\nimport { SceneRoute } from './SceneRoute';\nimport { sceneRoutesFrom } from './sceneRoutesFrom';\nimport { collectOutletOwners } from './collectOutletOwners';\nimport { SceneOutletContext } from './SceneOutletContext';\nimport { useSceneHistoryNavigation } from './useSceneHistoryNavigation';\n\nexport interface SceneNavigationHostProps {\n screens: Record<string, SceneElement>;\n dialogs?: Record<string, SceneElement>;\n initialScreen: string;\n registry: ComponentRegistry;\n bindingScope?: BindingScope;\n\n /**\n * Where entries are recorded. `createBrowserSceneHistory()` drives the address bar, so deep links,\n * refresh and back/forward work; the default is an in-memory history for embedded hosts.\n */\n history?: SceneHistory;\n\n /** The destinations the application navigates to, so their route overrides can be deep linked. */\n destinations?: DestinationReference[];\n\n /** An explicit route table, used instead of the one derived from `screens` and `destinations`. */\n routes?: SceneRoute[];\n}\n\n/**\n * Executes Scene destinations against an in-memory rendered hierarchy: a destination into a nested outlet -\n * one a screen declares with `core:outlet` - places its screen there and keeps the screens above it, to any\n * depth; any other screen route replaces the primary region,\n * dialog destinations render dialog content over the screen that opened them, and external destinations\n * only report their resolved action. Every navigation is a history entry.\n */\nexport function SceneNavigationHost({ screens, dialogs = {}, initialScreen, registry, bindingScope = {}, history, destinations, routes }: SceneNavigationHostProps) {\n const [memoryHistory] = useState(() => createMemorySceneHistory());\n const routeTable = useMemo(() => routes ?? sceneRoutesFrom(Object.keys(screens), destinations), [destinations, routes, screens]);\n const outletOwners = useMemo(() => collectOutletOwners(screens), [screens]);\n const value = useSceneHistoryNavigation(history ?? memoryHistory, routeTable, initialScreen, bindingScope, outletOwners, destinations);\n const outletContext = useMemo(() => ({ screens, registry }), [registry, screens]);\n\n const screen = screens[value.primaryScreen];\n const dialog = value.currentDialog ? dialogs[value.currentDialog] : undefined;\n\n return <SceneNavigationProvider value={value}><SceneOutletContext.Provider value={outletContext}>\n <div data-scene-outlet={value.primaryScreen === value.currentScreen ? value.currentOutlet ?? 'primary' : 'primary'} data-scene-url={value.currentUrl}>\n {screen && <SceneElementView element={screen} registry={registry} dataContext={bindingScope.dataContext} queryResults={bindingScope.queryResults} componentOutputs={bindingScope.componentOutputs} />}\n </div>\n {dialog && <div role='dialog' aria-modal='true' aria-label={value.currentDialog} data-scene-dialog={value.currentDialog}>\n <SceneElementView element={dialog} registry={registry} dataContext={bindingScope.dataContext} queryResults={bindingScope.queryResults} componentOutputs={bindingScope.componentOutputs} />\n </div>}\n </SceneOutletContext.Provider></SceneNavigationProvider>;\n}\n"],"names":["SceneNavigationHost","screens","dialogs","initialScreen","registry","bindingScope","history","destinations","routes","memoryHistory","useState","createMemorySceneHistory","routeTable","useMemo","sceneRoutesFrom","Object","keys","outletOwners","collectOutletOwners","value","useSceneHistoryNavigation","outletContext","screen","primaryScreen","dialog","currentDialog","undefined","_jsx","SceneNavigationProvider","_jsxs","SceneOutletContext","Provider","div","data-scene-outlet","currentScreen","currentOutlet","data-scene-url","currentUrl","SceneElementView","element","dataContext","queryResults","componentOutputs","role","aria-modal","aria-label","data-scene-dialog"],"mappings":";;;;;;;;;;AAqCA;;;;;;IAOO,SAASA,mBAAAA,CAAoB,EAAEC,OAAO,EAAEC,OAAAA,GAAU,EAAE,EAAEC,aAAa,EAAEC,QAAQ,EAAEC,YAAAA,GAAe,EAAE,EAAEC,OAAO,EAAEC,YAAY,EAAEC,MAAM,EAA4B,EAAA;AAC9J,IAAA,MAAM,CAACC,aAAAA,CAAc,GAAGC,QAAAA,CAAS,IAAMC,wBAAAA,EAAAA,CAAAA;IACvC,MAAMC,UAAAA,GAAaC,QAAQ,IAAML,MAAAA,IAAUM,gBAAgBC,MAAAA,CAAOC,IAAI,CAACf,OAAAA,CAAAA,EAAUM,YAAAA,CAAAA,EAAe;AAACA,QAAAA,YAAAA;AAAcC,QAAAA,MAAAA;AAAQP,QAAAA;AAAQ,KAAA,CAAA;AAC/H,IAAA,MAAMgB,YAAAA,GAAeJ,OAAAA,CAAQ,IAAMK,mBAAAA,CAAoBjB,OAAAA,CAAAA,EAAU;AAACA,QAAAA;AAAQ,KAAA,CAAA;AAC1E,IAAA,MAAMkB,QAAQC,yBAAAA,CAA0Bd,OAAAA,IAAWG,eAAeG,UAAAA,EAAYT,aAAAA,EAAeE,cAAcY,YAAAA,EAAcV,YAAAA,CAAAA;IACzH,MAAMc,aAAAA,GAAgBR,OAAAA,CAAQ,KAAO;AAAEZ,YAAAA,OAAAA;AAASG,YAAAA;AAAS,SAAA,CAAA,EAAI;AAACA,QAAAA,QAAAA;AAAUH,QAAAA;AAAQ,KAAA,CAAA;AAEhF,IAAA,MAAMqB,MAAAA,GAASrB,OAAO,CAACkB,KAAAA,CAAMI,aAAa,CAAC;IAC3C,MAAMC,MAAAA,GAASL,MAAMM,aAAa,GAAGvB,OAAO,CAACiB,KAAAA,CAAMM,aAAa,CAAC,GAAGC,SAAAA;AAEpE,IAAA,qBAAOC,GAAA,CAACC,uBAAAA,EAAAA;QAAwBT,KAAAA,EAAOA,KAAAA;gCAAOU,IAAA,CAACC,mBAAmBC,QAAQ,EAAA;YAACZ,KAAAA,EAAOE,aAAAA;;8BAC9EM,GAAA,CAACK,KAAAA,EAAAA;oBAAIC,mBAAAA,EAAmBd,KAAAA,CAAMI,aAAa,KAAKJ,KAAAA,CAAMe,aAAa,GAAGf,KAAAA,CAAMgB,aAAa,IAAI,SAAA,GAAY,SAAA;AAAWC,oBAAAA,gBAAAA,EAAgBjB,MAAMkB,UAAU;AAC/If,oBAAAA,QAAAA,EAAAA,MAAAA,kBAAUK,GAAA,CAACW,gBAAAA,EAAAA;wBAAiBC,OAAAA,EAASjB,MAAAA;wBAAQlB,QAAAA,EAAUA,QAAAA;AAAUoC,wBAAAA,WAAAA,EAAanC,aAAamC,WAAW;AAAEC,wBAAAA,YAAAA,EAAcpC,aAAaoC,YAAY;AAAEC,wBAAAA,gBAAAA,EAAkBrC,aAAaqC;;;AAEpLlB,gBAAAA,MAAAA,kBAAUG,GAAA,CAACK,KAAAA,EAAAA;oBAAIW,IAAAA,EAAK,QAAA;oBAASC,YAAAA,EAAW,MAAA;AAAOC,oBAAAA,YAAAA,EAAY1B,MAAMM,aAAa;AAAEqB,oBAAAA,mBAAAA,EAAmB3B,MAAMM,aAAa;AACnH,oBAAA,QAAA,gBAAAE,GAAA,CAACW,gBAAAA,EAAAA;wBAAiBC,OAAAA,EAASf,MAAAA;wBAAQpB,QAAAA,EAAUA,QAAAA;AAAUoC,wBAAAA,WAAAA,EAAanC,aAAamC,WAAW;AAAEC,wBAAAA,YAAAA,EAAcpC,aAAaoC,YAAY;AAAEC,wBAAAA,gBAAAA,EAAkBrC,aAAaqC;;;;;;AAGlL;;"}
1
+ {"version":3,"file":"SceneNavigationHost.js","sources":["../../../navigation/SceneNavigationHost.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ReactNode, useMemo, useState } from 'react';\nimport { BindingScope } from '@cratis/scene.engine';\nimport { DestinationReference, SceneElement } from '@cratis/scene.model';\nimport { SceneElementView } from '../SceneElementView';\nimport { ComponentRegistry } from '../renderer';\nimport { createMemorySceneHistory } from './createMemorySceneHistory';\nimport { SceneHistory } from './SceneHistory';\nimport { SceneNavigationProvider } from './SceneNavigationContext';\nimport { SceneRoute } from './SceneRoute';\nimport { sceneRoutesFrom } from './sceneRoutesFrom';\nimport { collectOutletOwners } from './collectOutletOwners';\nimport { SceneOutletContext } from './SceneOutletContext';\nimport { useSceneHistoryNavigation } from './useSceneHistoryNavigation';\nimport { SceneNavigationModel } from './region/SceneNavigationModel';\nimport { SceneNavigationModelProvider } from './region/SceneNavigationModelContext';\nimport { navigationDestinations } from './region/navigationDestinations';\nimport { SliceDialogView } from '../slices/SliceDialogView';\nimport { sliceDialogParameters } from '../slices/sliceDialogDestination';\n\nexport interface SceneNavigationHostProps {\n screens: Record<string, SceneElement>;\n dialogs?: Record<string, SceneElement>;\n initialScreen: string;\n registry: ComponentRegistry;\n bindingScope?: BindingScope;\n\n /**\n * Where entries are recorded. `createBrowserSceneHistory()` drives the address bar, so deep links,\n * refresh and back/forward work; the default is an in-memory history for embedded hosts.\n */\n history?: SceneHistory;\n\n /** The destinations the application navigates to, so their route overrides can be deep linked. */\n destinations?: DestinationReference[];\n\n /**\n * The application's structure and navigation. Navigation regions rendered inside the host (`NavigationRegionView`) read it,\n * and - when `destinations` is not given - the destinations of every navigation item become the deep-linkable ones.\n */\n navigationModel?: SceneNavigationModel;\n\n /**\n * Wraps the primary outlet in the application's chrome - a topbar, a sidebar, a toolbar. The chrome is part of the host,\n * so it stays mounted while the screens inside it change and navigation regions keep their state.\n */\n frame?(content: ReactNode): ReactNode;\n\n /** An explicit route table, used instead of the one derived from `screens` and `destinations`. */\n routes?: SceneRoute[];\n}\n\n/**\n * Executes Scene destinations against an in-memory rendered hierarchy: a destination into a nested outlet -\n * one a screen declares with `core:outlet` - places its screen there and keeps the screens above it, to any\n * depth; any other screen route replaces the primary region,\n * dialog destinations render dialog content over the screen that opened them - a toolbar slice button's dialog falls back to\n * the built-in task dialog (`SliceDialogView`) when `dialogs` has no template of that name -, and external destinations\n * only report their resolved action. Every navigation is a history entry.\n */\nexport function SceneNavigationHost({ screens, dialogs = {}, initialScreen, registry, bindingScope = {}, history, destinations: authoredDestinations, routes, navigationModel, frame }: SceneNavigationHostProps) {\n const destinations = useMemo(\n () => authoredDestinations ?? (navigationModel ? navigationDestinations(navigationModel.structure, navigationModel.navigation, navigationModel.screenFor) : undefined),\n [authoredDestinations, navigationModel]);\n const [memoryHistory] = useState(() => createMemorySceneHistory());\n const routeTable = useMemo(() => routes ?? sceneRoutesFrom(Object.keys(screens), destinations), [destinations, routes, screens]);\n const outletOwners = useMemo(() => collectOutletOwners(screens), [screens]);\n const value = useSceneHistoryNavigation(history ?? memoryHistory, routeTable, initialScreen, bindingScope, outletOwners, destinations);\n const outletContext = useMemo(() => ({ screens, registry }), [registry, screens]);\n\n const screen = screens[value.primaryScreen];\n const dialog = value.currentDialog ? dialogs[value.currentDialog] : undefined;\n const sliceDialog = !dialog && value.currentDialog && sliceDialogParameters(value.currentDialogParameters) !== undefined;\n const dialogName = sliceDialogParameters(value.currentDialogParameters)?.title ?? value.currentDialog;\n\n const outlet = <div data-scene-outlet={value.primaryScreen === value.currentScreen ? value.currentOutlet ?? 'primary' : 'primary'} data-scene-url={value.currentUrl}>\n {screen && <SceneElementView element={screen} registry={registry} dataContext={bindingScope.dataContext} queryResults={bindingScope.queryResults} componentOutputs={bindingScope.componentOutputs} />}\n </div>;\n const page = <SceneNavigationProvider value={value}><SceneOutletContext.Provider value={outletContext}>\n {frame ? frame(outlet) : outlet}\n {(dialog || sliceDialog) && <div role='dialog' aria-modal='true' aria-label={dialogName} data-scene-dialog={value.currentDialog}>\n {dialog ? <SceneElementView element={dialog} registry={registry} dataContext={bindingScope.dataContext} queryResults={bindingScope.queryResults} componentOutputs={bindingScope.componentOutputs} /> : <SliceDialogView />}\n </div>}\n </SceneOutletContext.Provider></SceneNavigationProvider>;\n\n return navigationModel ? <SceneNavigationModelProvider model={navigationModel}>{page}</SceneNavigationModelProvider> : page;\n}\n"],"names":["SceneNavigationHost","screens","dialogs","initialScreen","registry","bindingScope","history","destinations","authoredDestinations","routes","navigationModel","frame","useMemo","navigationDestinations","structure","navigation","screenFor","undefined","memoryHistory","useState","createMemorySceneHistory","routeTable","sceneRoutesFrom","Object","keys","outletOwners","collectOutletOwners","value","useSceneHistoryNavigation","outletContext","screen","primaryScreen","dialog","currentDialog","sliceDialog","sliceDialogParameters","currentDialogParameters","dialogName","title","outlet","_jsx","div","data-scene-outlet","currentScreen","currentOutlet","data-scene-url","currentUrl","SceneElementView","element","dataContext","queryResults","componentOutputs","page","SceneNavigationProvider","_jsxs","SceneOutletContext","Provider","role","aria-modal","aria-label","data-scene-dialog","SliceDialogView","SceneNavigationModelProvider","model"],"mappings":"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"}
@@ -5,6 +5,7 @@ export interface SceneNavigationState {
5
5
  url?: string;
6
6
  outlet?: string;
7
7
  dialog?: string;
8
+ dialogParameters?: Record<string, string>;
8
9
  parameters: Record<string, string>;
9
10
  }
10
11
  //# sourceMappingURL=SceneNavigationState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneNavigationState.d.ts","sourceRoot":"","sources":["../../../navigation/SceneNavigationState.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,oBAAoB;IAEjC,MAAM,EAAE,MAAM,CAAC;IAMf,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC"}
1
+ {"version":3,"file":"SceneNavigationState.d.ts","sourceRoot":"","sources":["../../../navigation/SceneNavigationState.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,oBAAoB;IAEjC,MAAM,EAAE,MAAM,CAAC;IAMf,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG1C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC"}
@@ -19,4 +19,12 @@ export * from './CoreOutlet';
19
19
  export * from './SceneOutletContext';
20
20
  export * from './collectOutletOwners';
21
21
  export * from './placeInOutlet';
22
+ export * from './region/SceneNavigationModel';
23
+ export * from './region/SceneNavigationModelContext';
24
+ export * from './region/NavigationRegionClassNames';
25
+ export * from './region/NavigationRegionView';
26
+ export * from './region/currentModuleOf';
27
+ export * from './region/navigationItemActive';
28
+ export * from './region/navigationItemDestination';
29
+ export * from './region/navigationDestinations';
22
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../navigation/index.ts"],"names":[],"mappings":"AAGA,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../navigation/index.ts"],"names":[],"mappings":"AAGA,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC"}
@@ -19,4 +19,12 @@ export * from './CoreOutlet';
19
19
  export * from './SceneOutletContext';
20
20
  export * from './collectOutletOwners';
21
21
  export * from './placeInOutlet';
22
+ export * from './region/SceneNavigationModel';
23
+ export * from './region/SceneNavigationModelContext';
24
+ export * from './region/NavigationRegionClassNames';
25
+ export * from './region/NavigationRegionView';
26
+ export * from './region/currentModuleOf';
27
+ export * from './region/navigationItemActive';
28
+ export * from './region/navigationItemDestination';
29
+ export * from './region/navigationDestinations';
22
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../navigation/index.ts"],"names":[],"mappings":"AAGA,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../navigation/index.ts"],"names":[],"mappings":"AAGA,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface NavigationRegionClassNames {
2
+ root: string;
3
+ list: string;
4
+ item: string;
5
+ link: string;
6
+ icon: string;
7
+ label: string;
8
+ toggle: string;
9
+ submenu: string;
10
+ }
11
+ export declare const defaultNavigationRegionClassNames: NavigationRegionClassNames;
12
+ //# sourceMappingURL=NavigationRegionClassNames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigationRegionClassNames.d.ts","sourceRoot":"","sources":["../../../../navigation/region/NavigationRegionClassNames.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,0BAA0B;IAEvC,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,MAAM,CAAC;IAGb,KAAK,EAAE,MAAM,CAAC;IAGd,MAAM,EAAE,MAAM,CAAC;IAGf,OAAO,EAAE,MAAM,CAAC;CACnB;AAGD,eAAO,MAAM,iCAAiC,EAAE,0BAS/C,CAAC"}
@@ -0,0 +1,19 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /**
4
+ * The class names a {@link NavigationRegionView} puts on its nodes. The renderer carries no look of its own: a package
5
+ * gives the nodes its vocabulary (`blueprint.default` uses its `layout-menu` classes) and a stylesheet does the rest.
6
+ * State is always on data attributes as well - `data-active`, `data-expanded`, `data-read-only`, `data-origin`.
7
+ */ /** The class names used when a host passes none. */ const defaultNavigationRegionClassNames = {
8
+ root: 'scene-nav',
9
+ list: 'scene-nav-list',
10
+ item: 'scene-nav-item',
11
+ link: 'scene-nav-link',
12
+ icon: 'scene-nav-icon',
13
+ label: 'scene-nav-label',
14
+ toggle: 'scene-nav-toggle',
15
+ submenu: 'scene-nav-submenu'
16
+ };
17
+
18
+ export { defaultNavigationRegionClassNames };
19
+ //# sourceMappingURL=NavigationRegionClassNames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigationRegionClassNames.js","sources":["../../../../navigation/region/NavigationRegionClassNames.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n\n/**\n * The class names a {@link NavigationRegionView} puts on its nodes. The renderer carries no look of its own: a package\n * gives the nodes its vocabulary (`blueprint.default` uses its `layout-menu` classes) and a stylesheet does the rest.\n * State is always on data attributes as well - `data-active`, `data-expanded`, `data-read-only`, `data-origin`.\n */\nexport interface NavigationRegionClassNames {\n /** The `nav` landmark. */\n root: string;\n\n /** Each list of items. */\n list: string;\n\n /** Each item's `li`. */\n item: string;\n\n /** The link of an item. */\n link: string;\n\n /** The icon of an item. */\n icon: string;\n\n /** The title of an item. */\n label: string;\n\n /** The button that expands or collapses an item's sub-items. */\n toggle: string;\n\n /** The list of an item's sub-items. */\n submenu: string;\n}\n\n/** The class names used when a host passes none. */\nexport const defaultNavigationRegionClassNames: NavigationRegionClassNames = {\n root: 'scene-nav',\n list: 'scene-nav-list',\n item: 'scene-nav-item',\n link: 'scene-nav-link',\n icon: 'scene-nav-icon',\n label: 'scene-nav-label',\n toggle: 'scene-nav-toggle',\n submenu: 'scene-nav-submenu',\n};\n"],"names":["defaultNavigationRegionClassNames","root","list","item","link","icon","label","toggle","submenu"],"mappings":"AAAA;AACA;AAGA;;;;AAIC,yDA4BM,MAAMA,iCAAAA,GAAgE;IACzEC,IAAAA,EAAM,WAAA;IACNC,IAAAA,EAAM,gBAAA;IACNC,IAAAA,EAAM,gBAAA;IACNC,IAAAA,EAAM,gBAAA;IACNC,IAAAA,EAAM,gBAAA;IACNC,KAAAA,EAAO,iBAAA;IACPC,MAAAA,EAAQ,kBAAA;IACRC,OAAAA,EAAS;AACb;;"}
@@ -0,0 +1,20 @@
1
+ import { ReactNode } from 'react';
2
+ import { DestinationReference, NavigationRegionKind } from '@cratis/scene.model';
3
+ import { EffectiveNavItem } from '@cratis/scene.engine';
4
+ import { NavigationRegionClassNames } from './NavigationRegionClassNames';
5
+ import { SceneNavigationModel } from './SceneNavigationModel';
6
+ export interface NavigationRegionViewProps {
7
+ region: NavigationRegionKind;
8
+ module?: string;
9
+ application?: boolean;
10
+ model?: SceneNavigationModel;
11
+ expand?: 'active' | 'all';
12
+ label?: string;
13
+ classNames?: Partial<NavigationRegionClassNames>;
14
+ renderIcon?(icon: string): ReactNode;
15
+ renderAdornment?(item: EffectiveNavItem): ReactNode;
16
+ hrefFor?(destination: DestinationReference, url: string | undefined): string | undefined;
17
+ onActivate?(item: EffectiveNavItem, destination: DestinationReference): void;
18
+ }
19
+ export declare function NavigationRegionView({ region, module, application, model: modelProp, label, expand, classNames, renderIcon, renderAdornment, hrefFor, onActivate }: NavigationRegionViewProps): import("react").JSX.Element;
20
+ //# sourceMappingURL=NavigationRegionView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigationRegionView.d.ts","sourceRoot":"","sources":["../../../../navigation/region/NavigationRegionView.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA6B,SAAS,EAAyC,MAAM,OAAO,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAsB,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAA6B,gBAAgB,EAAkD,MAAM,sBAAsB,CAAC;AAKnI,OAAO,EAAE,0BAA0B,EAAqC,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAM9D,MAAM,WAAW,yBAAyB;IAEtC,MAAM,EAAE,oBAAoB,CAAC;IAM7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAM7B,MAAM,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAG1B,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,UAAU,CAAC,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAMjD,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAMrC,eAAe,CAAC,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAGpD,OAAO,CAAC,CAAC,WAAW,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAGzF,UAAU,CAAC,CAAC,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAChF;AAyBD,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,yBAAyB,+BAkJhN"}