@cratis/arc.react 18.0.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 (311) hide show
  1. package/Arc.tsx +44 -0
  2. package/ArcContext.ts +23 -0
  3. package/Bindings.ts +15 -0
  4. package/README.md +65 -0
  5. package/WellKnownBindings.ts +9 -0
  6. package/commands/CommandScope.tsx +57 -0
  7. package/commands/CommandScopeImplementation.ts +68 -0
  8. package/commands/ICommandScope.ts +31 -0
  9. package/commands/for_CommandScopeImplementation/FakeCommand.ts +59 -0
  10. package/commands/for_CommandScopeImplementation/when_executing_with_three_commands_were_two_having_changes.ts +25 -0
  11. package/commands/for_CommandScopeImplementation/when_none_of_the_added_commands_has_changes.ts +19 -0
  12. package/commands/for_CommandScopeImplementation/when_one_of_the_added_commands_has_changes.ts +19 -0
  13. package/commands/for_CommandScopeImplementation/when_property_changes_on_added_command.ts +26 -0
  14. package/commands/for_CommandScopeImplementation/when_reverting_with_three_commands_were_two_having_changes.ts +25 -0
  15. package/commands/for_CommandScopeImplementation/when_there_are_no_commands.ts +10 -0
  16. package/commands/for_useCommand/FakeCommand.ts +31 -0
  17. package/commands/for_useCommand/when_creating_instance.ts +41 -0
  18. package/commands/for_useCommand/when_creating_instance_with_initial_values.ts +38 -0
  19. package/commands/for_useCommand/when_creating_instance_without_optional_context_values.ts +37 -0
  20. package/commands/index.ts +8 -0
  21. package/commands/useCommand.ts +70 -0
  22. package/commands/useCommandScope.ts +9 -0
  23. package/dialogs/BusyIndicatorDialogRequest.ts +18 -0
  24. package/dialogs/CloseDialog.ts +9 -0
  25. package/dialogs/ConfirmationDialogRequest.ts +22 -0
  26. package/dialogs/DialogButtons.ts +28 -0
  27. package/dialogs/DialogComponents.tsx +113 -0
  28. package/dialogs/DialogContext.ts +33 -0
  29. package/dialogs/DialogProps.ts +14 -0
  30. package/dialogs/DialogResponse.ts +9 -0
  31. package/dialogs/DialogResult.ts +32 -0
  32. package/dialogs/ShowDialog.ts +9 -0
  33. package/dialogs/index.ts +16 -0
  34. package/dialogs/useBusyIndicator.ts +41 -0
  35. package/dialogs/useConfirmationDialog.ts +39 -0
  36. package/dialogs/useDialog.tsx +55 -0
  37. package/dist/cjs/Arc.d.ts +12 -0
  38. package/dist/cjs/Arc.d.ts.map +1 -0
  39. package/dist/cjs/Arc.js +25 -0
  40. package/dist/cjs/Arc.js.map +1 -0
  41. package/dist/cjs/ArcContext.d.ts +12 -0
  42. package/dist/cjs/ArcContext.d.ts.map +1 -0
  43. package/dist/cjs/ArcContext.js +16 -0
  44. package/dist/cjs/ArcContext.js.map +1 -0
  45. package/dist/cjs/Bindings.d.ts +5 -0
  46. package/dist/cjs/Bindings.d.ts.map +1 -0
  47. package/dist/cjs/Bindings.js +15 -0
  48. package/dist/cjs/Bindings.js.map +1 -0
  49. package/dist/cjs/WellKnownBindings.d.ts +4 -0
  50. package/dist/cjs/WellKnownBindings.d.ts.map +1 -0
  51. package/dist/cjs/WellKnownBindings.js +8 -0
  52. package/dist/cjs/WellKnownBindings.js.map +1 -0
  53. package/dist/cjs/commands/CommandScope.d.ts +13 -0
  54. package/dist/cjs/commands/CommandScope.d.ts.map +1 -0
  55. package/dist/cjs/commands/CommandScope.js +39 -0
  56. package/dist/cjs/commands/CommandScope.js.map +1 -0
  57. package/dist/cjs/commands/CommandScopeImplementation.d.ts +16 -0
  58. package/dist/cjs/commands/CommandScopeImplementation.d.ts.map +1 -0
  59. package/dist/cjs/commands/CommandScopeImplementation.js +52 -0
  60. package/dist/cjs/commands/CommandScopeImplementation.js.map +1 -0
  61. package/dist/cjs/commands/ICommandScope.d.ts +8 -0
  62. package/dist/cjs/commands/ICommandScope.d.ts.map +1 -0
  63. package/dist/cjs/commands/index.d.ts +6 -0
  64. package/dist/cjs/commands/index.d.ts.map +1 -0
  65. package/dist/cjs/commands/index.js +15 -0
  66. package/dist/cjs/commands/index.js.map +1 -0
  67. package/dist/cjs/commands/useCommand.d.ts +6 -0
  68. package/dist/cjs/commands/useCommand.d.ts.map +1 -0
  69. package/dist/cjs/commands/useCommand.js +47 -0
  70. package/dist/cjs/commands/useCommand.js.map +1 -0
  71. package/dist/cjs/commands/useCommandScope.d.ts +2 -0
  72. package/dist/cjs/commands/useCommandScope.d.ts.map +1 -0
  73. package/dist/cjs/commands/useCommandScope.js +11 -0
  74. package/dist/cjs/commands/useCommandScope.js.map +1 -0
  75. package/dist/cjs/dialogs/BusyIndicatorDialogRequest.d.ts +6 -0
  76. package/dist/cjs/dialogs/BusyIndicatorDialogRequest.d.ts.map +1 -0
  77. package/dist/cjs/dialogs/BusyIndicatorDialogRequest.js +13 -0
  78. package/dist/cjs/dialogs/BusyIndicatorDialogRequest.js.map +1 -0
  79. package/dist/cjs/dialogs/CloseDialog.d.ts +3 -0
  80. package/dist/cjs/dialogs/CloseDialog.d.ts.map +1 -0
  81. package/dist/cjs/dialogs/ConfirmationDialogRequest.d.ts +8 -0
  82. package/dist/cjs/dialogs/ConfirmationDialogRequest.d.ts.map +1 -0
  83. package/dist/cjs/dialogs/ConfirmationDialogRequest.js +15 -0
  84. package/dist/cjs/dialogs/ConfirmationDialogRequest.js.map +1 -0
  85. package/dist/cjs/dialogs/DialogButtons.d.ts +7 -0
  86. package/dist/cjs/dialogs/DialogButtons.d.ts.map +1 -0
  87. package/dist/cjs/dialogs/DialogButtons.js +10 -0
  88. package/dist/cjs/dialogs/DialogButtons.js.map +1 -0
  89. package/dist/cjs/dialogs/DialogComponents.d.ts +20 -0
  90. package/dist/cjs/dialogs/DialogComponents.d.ts.map +1 -0
  91. package/dist/cjs/dialogs/DialogComponents.js +34 -0
  92. package/dist/cjs/dialogs/DialogComponents.js.map +1 -0
  93. package/dist/cjs/dialogs/DialogContext.d.ts +10 -0
  94. package/dist/cjs/dialogs/DialogContext.d.ts.map +1 -0
  95. package/dist/cjs/dialogs/DialogContext.js +40 -0
  96. package/dist/cjs/dialogs/DialogContext.js.map +1 -0
  97. package/dist/cjs/dialogs/DialogProps.d.ts +5 -0
  98. package/dist/cjs/dialogs/DialogProps.d.ts.map +1 -0
  99. package/dist/cjs/dialogs/DialogResponse.d.ts +3 -0
  100. package/dist/cjs/dialogs/DialogResponse.d.ts.map +1 -0
  101. package/dist/cjs/dialogs/DialogResult.d.ts +8 -0
  102. package/dist/cjs/dialogs/DialogResult.d.ts.map +1 -0
  103. package/dist/cjs/dialogs/DialogResult.js +11 -0
  104. package/dist/cjs/dialogs/DialogResult.js.map +1 -0
  105. package/dist/cjs/dialogs/ShowDialog.d.ts +3 -0
  106. package/dist/cjs/dialogs/ShowDialog.d.ts.map +1 -0
  107. package/dist/cjs/dialogs/index.d.ts +14 -0
  108. package/dist/cjs/dialogs/index.d.ts.map +1 -0
  109. package/dist/cjs/dialogs/index.js +33 -0
  110. package/dist/cjs/dialogs/index.js.map +1 -0
  111. package/dist/cjs/dialogs/useBusyIndicator.d.ts +5 -0
  112. package/dist/cjs/dialogs/useBusyIndicator.d.ts.map +1 -0
  113. package/dist/cjs/dialogs/useBusyIndicator.js +21 -0
  114. package/dist/cjs/dialogs/useBusyIndicator.js.map +1 -0
  115. package/dist/cjs/dialogs/useConfirmationDialog.d.ts +5 -0
  116. package/dist/cjs/dialogs/useConfirmationDialog.d.ts.map +1 -0
  117. package/dist/cjs/dialogs/useConfirmationDialog.js +20 -0
  118. package/dist/cjs/dialogs/useConfirmationDialog.js.map +1 -0
  119. package/dist/cjs/dialogs/useDialog.d.ts +5 -0
  120. package/dist/cjs/dialogs/useDialog.d.ts.map +1 -0
  121. package/dist/cjs/dialogs/useDialog.js +34 -0
  122. package/dist/cjs/dialogs/useDialog.js.map +1 -0
  123. package/dist/cjs/identity/IdentityProvider.d.ts +10 -0
  124. package/dist/cjs/identity/IdentityProvider.d.ts.map +1 -0
  125. package/dist/cjs/identity/IdentityProvider.js +48 -0
  126. package/dist/cjs/identity/IdentityProvider.js.map +1 -0
  127. package/dist/cjs/identity/index.d.ts +3 -0
  128. package/dist/cjs/identity/index.d.ts.map +1 -0
  129. package/dist/cjs/identity/index.js +11 -0
  130. package/dist/cjs/identity/index.js.map +1 -0
  131. package/dist/cjs/identity/useIdentity.d.ts +3 -0
  132. package/dist/cjs/identity/useIdentity.d.ts.map +1 -0
  133. package/dist/cjs/identity/useIdentity.js +15 -0
  134. package/dist/cjs/identity/useIdentity.js.map +1 -0
  135. package/dist/cjs/index.d.ts +9 -0
  136. package/dist/cjs/index.d.ts.map +1 -0
  137. package/dist/cjs/index.js +20 -0
  138. package/dist/cjs/index.js.map +1 -0
  139. package/dist/cjs/queries/SetPage.d.ts +2 -0
  140. package/dist/cjs/queries/SetPage.d.ts.map +1 -0
  141. package/dist/cjs/queries/SetPageSize.d.ts +2 -0
  142. package/dist/cjs/queries/SetPageSize.d.ts.map +1 -0
  143. package/dist/cjs/queries/SetSorting.d.ts +3 -0
  144. package/dist/cjs/queries/SetSorting.d.ts.map +1 -0
  145. package/dist/cjs/queries/index.d.ts +6 -0
  146. package/dist/cjs/queries/index.d.ts.map +1 -0
  147. package/dist/cjs/queries/index.js +12 -0
  148. package/dist/cjs/queries/index.js.map +1 -0
  149. package/dist/cjs/queries/useObservableQuery.d.ts +16 -0
  150. package/dist/cjs/queries/useObservableQuery.d.ts.map +1 -0
  151. package/dist/cjs/queries/useObservableQuery.js +54 -0
  152. package/dist/cjs/queries/useObservableQuery.js.map +1 -0
  153. package/dist/cjs/queries/useQuery.d.ts +19 -0
  154. package/dist/cjs/queries/useQuery.d.ts.map +1 -0
  155. package/dist/cjs/queries/useQuery.js +76 -0
  156. package/dist/cjs/queries/useQuery.js.map +1 -0
  157. package/dist/esm/Arc.d.ts +12 -0
  158. package/dist/esm/Arc.d.ts.map +1 -0
  159. package/dist/esm/Arc.js +23 -0
  160. package/dist/esm/Arc.js.map +1 -0
  161. package/dist/esm/ArcContext.d.ts +12 -0
  162. package/dist/esm/ArcContext.d.ts.map +1 -0
  163. package/dist/esm/ArcContext.js +14 -0
  164. package/dist/esm/ArcContext.js.map +1 -0
  165. package/dist/esm/Bindings.d.ts +5 -0
  166. package/dist/esm/Bindings.d.ts.map +1 -0
  167. package/dist/esm/Bindings.js +13 -0
  168. package/dist/esm/Bindings.js.map +1 -0
  169. package/dist/esm/WellKnownBindings.d.ts +4 -0
  170. package/dist/esm/WellKnownBindings.d.ts.map +1 -0
  171. package/dist/esm/WellKnownBindings.js +6 -0
  172. package/dist/esm/WellKnownBindings.js.map +1 -0
  173. package/dist/esm/commands/CommandScope.d.ts +13 -0
  174. package/dist/esm/commands/CommandScope.d.ts.map +1 -0
  175. package/dist/esm/commands/CommandScope.js +36 -0
  176. package/dist/esm/commands/CommandScope.js.map +1 -0
  177. package/dist/esm/commands/CommandScopeImplementation.d.ts +16 -0
  178. package/dist/esm/commands/CommandScopeImplementation.d.ts.map +1 -0
  179. package/dist/esm/commands/CommandScopeImplementation.js +50 -0
  180. package/dist/esm/commands/CommandScopeImplementation.js.map +1 -0
  181. package/dist/esm/commands/ICommandScope.d.ts +8 -0
  182. package/dist/esm/commands/ICommandScope.d.ts.map +1 -0
  183. package/dist/esm/commands/ICommandScope.js +2 -0
  184. package/dist/esm/commands/ICommandScope.js.map +1 -0
  185. package/dist/esm/commands/index.d.ts +6 -0
  186. package/dist/esm/commands/index.d.ts.map +1 -0
  187. package/dist/esm/commands/index.js +5 -0
  188. package/dist/esm/commands/index.js.map +1 -0
  189. package/dist/esm/commands/useCommand.d.ts +6 -0
  190. package/dist/esm/commands/useCommand.d.ts.map +1 -0
  191. package/dist/esm/commands/useCommand.js +45 -0
  192. package/dist/esm/commands/useCommand.js.map +1 -0
  193. package/dist/esm/commands/useCommandScope.d.ts +2 -0
  194. package/dist/esm/commands/useCommandScope.d.ts.map +1 -0
  195. package/dist/esm/commands/useCommandScope.js +9 -0
  196. package/dist/esm/commands/useCommandScope.js.map +1 -0
  197. package/dist/esm/dialogs/BusyIndicatorDialogRequest.d.ts +6 -0
  198. package/dist/esm/dialogs/BusyIndicatorDialogRequest.d.ts.map +1 -0
  199. package/dist/esm/dialogs/BusyIndicatorDialogRequest.js +11 -0
  200. package/dist/esm/dialogs/BusyIndicatorDialogRequest.js.map +1 -0
  201. package/dist/esm/dialogs/CloseDialog.d.ts +3 -0
  202. package/dist/esm/dialogs/CloseDialog.d.ts.map +1 -0
  203. package/dist/esm/dialogs/CloseDialog.js +2 -0
  204. package/dist/esm/dialogs/CloseDialog.js.map +1 -0
  205. package/dist/esm/dialogs/ConfirmationDialogRequest.d.ts +8 -0
  206. package/dist/esm/dialogs/ConfirmationDialogRequest.d.ts.map +1 -0
  207. package/dist/esm/dialogs/ConfirmationDialogRequest.js +13 -0
  208. package/dist/esm/dialogs/ConfirmationDialogRequest.js.map +1 -0
  209. package/dist/esm/dialogs/DialogButtons.d.ts +7 -0
  210. package/dist/esm/dialogs/DialogButtons.d.ts.map +1 -0
  211. package/dist/esm/dialogs/DialogButtons.js +10 -0
  212. package/dist/esm/dialogs/DialogButtons.js.map +1 -0
  213. package/dist/esm/dialogs/DialogComponents.d.ts +20 -0
  214. package/dist/esm/dialogs/DialogComponents.d.ts.map +1 -0
  215. package/dist/esm/dialogs/DialogComponents.js +31 -0
  216. package/dist/esm/dialogs/DialogComponents.js.map +1 -0
  217. package/dist/esm/dialogs/DialogContext.d.ts +10 -0
  218. package/dist/esm/dialogs/DialogContext.d.ts.map +1 -0
  219. package/dist/esm/dialogs/DialogContext.js +18 -0
  220. package/dist/esm/dialogs/DialogContext.js.map +1 -0
  221. package/dist/esm/dialogs/DialogProps.d.ts +5 -0
  222. package/dist/esm/dialogs/DialogProps.d.ts.map +1 -0
  223. package/dist/esm/dialogs/DialogProps.js +2 -0
  224. package/dist/esm/dialogs/DialogProps.js.map +1 -0
  225. package/dist/esm/dialogs/DialogResponse.d.ts +3 -0
  226. package/dist/esm/dialogs/DialogResponse.d.ts.map +1 -0
  227. package/dist/esm/dialogs/DialogResponse.js +2 -0
  228. package/dist/esm/dialogs/DialogResponse.js.map +1 -0
  229. package/dist/esm/dialogs/DialogResult.d.ts +8 -0
  230. package/dist/esm/dialogs/DialogResult.d.ts.map +1 -0
  231. package/dist/esm/dialogs/DialogResult.js +11 -0
  232. package/dist/esm/dialogs/DialogResult.js.map +1 -0
  233. package/dist/esm/dialogs/ShowDialog.d.ts +3 -0
  234. package/dist/esm/dialogs/ShowDialog.d.ts.map +1 -0
  235. package/dist/esm/dialogs/ShowDialog.js +2 -0
  236. package/dist/esm/dialogs/ShowDialog.js.map +1 -0
  237. package/dist/esm/dialogs/index.d.ts +14 -0
  238. package/dist/esm/dialogs/index.d.ts.map +1 -0
  239. package/dist/esm/dialogs/index.js +10 -0
  240. package/dist/esm/dialogs/index.js.map +1 -0
  241. package/dist/esm/dialogs/useBusyIndicator.d.ts +5 -0
  242. package/dist/esm/dialogs/useBusyIndicator.d.ts.map +1 -0
  243. package/dist/esm/dialogs/useBusyIndicator.js +19 -0
  244. package/dist/esm/dialogs/useBusyIndicator.js.map +1 -0
  245. package/dist/esm/dialogs/useConfirmationDialog.d.ts +5 -0
  246. package/dist/esm/dialogs/useConfirmationDialog.d.ts.map +1 -0
  247. package/dist/esm/dialogs/useConfirmationDialog.js +18 -0
  248. package/dist/esm/dialogs/useConfirmationDialog.js.map +1 -0
  249. package/dist/esm/dialogs/useDialog.d.ts +5 -0
  250. package/dist/esm/dialogs/useDialog.d.ts.map +1 -0
  251. package/dist/esm/dialogs/useDialog.js +32 -0
  252. package/dist/esm/dialogs/useDialog.js.map +1 -0
  253. package/dist/esm/identity/IdentityProvider.d.ts +10 -0
  254. package/dist/esm/identity/IdentityProvider.d.ts.map +1 -0
  255. package/dist/esm/identity/IdentityProvider.js +45 -0
  256. package/dist/esm/identity/IdentityProvider.js.map +1 -0
  257. package/dist/esm/identity/index.d.ts +3 -0
  258. package/dist/esm/identity/index.d.ts.map +1 -0
  259. package/dist/esm/identity/index.js +3 -0
  260. package/dist/esm/identity/index.js.map +1 -0
  261. package/dist/esm/identity/useIdentity.d.ts +3 -0
  262. package/dist/esm/identity/useIdentity.d.ts.map +1 -0
  263. package/dist/esm/identity/useIdentity.js +13 -0
  264. package/dist/esm/identity/useIdentity.js.map +1 -0
  265. package/dist/esm/index.d.ts +9 -0
  266. package/dist/esm/index.d.ts.map +1 -0
  267. package/dist/esm/index.js +12 -0
  268. package/dist/esm/index.js.map +1 -0
  269. package/dist/esm/queries/SetPage.d.ts +2 -0
  270. package/dist/esm/queries/SetPage.d.ts.map +1 -0
  271. package/dist/esm/queries/SetPage.js +2 -0
  272. package/dist/esm/queries/SetPage.js.map +1 -0
  273. package/dist/esm/queries/SetPageSize.d.ts +2 -0
  274. package/dist/esm/queries/SetPageSize.d.ts.map +1 -0
  275. package/dist/esm/queries/SetPageSize.js +2 -0
  276. package/dist/esm/queries/SetPageSize.js.map +1 -0
  277. package/dist/esm/queries/SetSorting.d.ts +3 -0
  278. package/dist/esm/queries/SetSorting.d.ts.map +1 -0
  279. package/dist/esm/queries/SetSorting.js +2 -0
  280. package/dist/esm/queries/SetSorting.js.map +1 -0
  281. package/dist/esm/queries/index.d.ts +6 -0
  282. package/dist/esm/queries/index.d.ts.map +1 -0
  283. package/dist/esm/queries/index.js +3 -0
  284. package/dist/esm/queries/index.js.map +1 -0
  285. package/dist/esm/queries/useObservableQuery.d.ts +16 -0
  286. package/dist/esm/queries/useObservableQuery.d.ts.map +1 -0
  287. package/dist/esm/queries/useObservableQuery.js +51 -0
  288. package/dist/esm/queries/useObservableQuery.js.map +1 -0
  289. package/dist/esm/queries/useQuery.d.ts +19 -0
  290. package/dist/esm/queries/useQuery.d.ts.map +1 -0
  291. package/dist/esm/queries/useQuery.js +73 -0
  292. package/dist/esm/queries/useQuery.js.map +1 -0
  293. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  294. package/global.d.ts +11 -0
  295. package/identity/IdentityProvider.tsx +61 -0
  296. package/identity/for_IdentityProvider/when_refreshing_identity.ts +59 -0
  297. package/identity/index.ts +5 -0
  298. package/identity/useIdentity.ts +19 -0
  299. package/index.ts +18 -0
  300. package/package.json +69 -0
  301. package/queries/SetPage.ts +7 -0
  302. package/queries/SetPageSize.ts +7 -0
  303. package/queries/SetSorting.ts +9 -0
  304. package/queries/for_useQuery/FakeQuery.ts +25 -0
  305. package/queries/for_useQuery/when_creating_instance.ts +63 -0
  306. package/queries/for_useQuery/when_creating_instance_with_sorting.ts +55 -0
  307. package/queries/for_useQuery/when_creating_instance_without_optional_context_values.ts +59 -0
  308. package/queries/for_useQueryWithPaging/when_creating_instance_with_paging.ts +67 -0
  309. package/queries/index.ts +8 -0
  310. package/queries/useObservableQuery.ts +83 -0
  311. package/queries/useQuery.ts +113 -0
@@ -0,0 +1,76 @@
1
+ 'use strict';
2
+
3
+ var queries = require('@cratis/arc/queries');
4
+ var React = require('react');
5
+ var ArcContext = require('../ArcContext.js');
6
+
7
+ function useQueryInternal(query, performer, sorting, paging, args) {
8
+ paging ??= queries.Paging.noPaging;
9
+ sorting ??= queries.Sorting.none;
10
+ const arc = React.useContext(ArcContext.ArcContext);
11
+ const queryInstance = React.useRef(null);
12
+ const [renderCounter, setRenderCounter] = React.useState(0);
13
+ queryInstance.current = React.useMemo(() => {
14
+ const instance = new query();
15
+ instance.paging = paging;
16
+ instance.sorting = sorting;
17
+ instance.setMicroservice(arc.microservice);
18
+ instance.setApiBasePath(arc.apiBasePath ?? '');
19
+ instance.setOrigin(arc.origin ?? '');
20
+ instance.setHttpHeadersCallback(arc.httpHeadersCallback ?? (() => ({})));
21
+ return instance;
22
+ }, []);
23
+ const [result, setResult] = React.useState(queries.QueryResultWithState.initial(queryInstance.current.defaultValue));
24
+ const queryExecutor = (async (args) => {
25
+ if (queryInstance) {
26
+ try {
27
+ const queryResult = await performer(queryInstance.current, args);
28
+ setResult(queries.QueryResultWithState.fromQueryResult(queryResult, false));
29
+ }
30
+ catch {
31
+ }
32
+ }
33
+ });
34
+ React.useEffect(() => {
35
+ queryExecutor(args);
36
+ }, []);
37
+ const invalidate = () => {
38
+ setRenderCounter(renderCounter + 1);
39
+ };
40
+ return [
41
+ result,
42
+ async (args) => {
43
+ setResult(queries.QueryResultWithState.fromQueryResult(result, true));
44
+ await queryExecutor(args);
45
+ },
46
+ async (sorting) => {
47
+ setResult(queries.QueryResultWithState.fromQueryResult(result, true));
48
+ queryInstance.current.sorting = sorting;
49
+ invalidate();
50
+ await queryExecutor(args);
51
+ },
52
+ async (page) => {
53
+ setResult(queries.QueryResultWithState.fromQueryResult(result, true));
54
+ queryInstance.current.paging = new queries.Paging(page, queryInstance.current.paging?.pageSize ?? 0);
55
+ invalidate();
56
+ await queryExecutor(args);
57
+ },
58
+ async (pageSize) => {
59
+ setResult(queries.QueryResultWithState.fromQueryResult(result, true));
60
+ queryInstance.current.paging = new queries.Paging(queryInstance.current.paging?.page ?? 0, pageSize);
61
+ invalidate();
62
+ await queryExecutor(args);
63
+ }
64
+ ];
65
+ }
66
+ function useQuery(query, args, sorting) {
67
+ const [result, perform, setSorting] = useQueryInternal(query, async (queryInstance, actualArgs) => await queryInstance.perform(actualArgs), sorting, undefined, args);
68
+ return [result, perform, setSorting];
69
+ }
70
+ function useQueryWithPaging(query, paging, args, sorting) {
71
+ return useQueryInternal(query, async (queryInstance, actualArgs) => await queryInstance.perform(actualArgs), sorting, paging, args);
72
+ }
73
+
74
+ exports.useQuery = useQuery;
75
+ exports.useQueryWithPaging = useQueryWithPaging;
76
+ //# sourceMappingURL=useQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQuery.js","sources":["../../../queries/useQuery.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\nimport { IQueryFor, QueryResultWithState, QueryResult, Paging, Sorting } from '@cratis/arc/queries';\nimport { Constructor } from '@cratis/fundamentals';\nimport { useState, useEffect, useContext, useRef, useMemo } from 'react';\nimport { SetSorting } from './SetSorting';\nimport { SetPage } from './SetPage';\nimport { SetPageSize } from './SetPageSize';\nimport { ArcContext } from '../ArcContext';\n\n/**\n * Delegate type for performing a {@link IQueryFor} in the context of the {@link useQuery} hook.\n */\nexport type PerformQuery<TArguments = object> = (args?: TArguments) => Promise<void>;\n\ntype QueryPerformer<TQuery extends IQueryFor<TDataType>, TDataType, TArguments = object> = (performer: TQuery, args?: TArguments) => Promise<QueryResult<TDataType>>;\n\nfunction useQueryInternal<TDataType, TQuery extends IQueryFor<TDataType>, TArguments = object>(query: Constructor<TQuery>, performer: QueryPerformer<TQuery, TDataType, TArguments>, sorting?: Sorting, paging?: Paging, args?: TArguments):\n [QueryResultWithState<TDataType>, PerformQuery<TArguments>, SetSorting, SetPage, SetPageSize] {\n paging ??= Paging.noPaging;\n sorting ??= Sorting.none;\n const arc = useContext(ArcContext);\n const queryInstance = useRef<TQuery | null>(null);\n const [renderCounter, setRenderCounter] = useState(0);\n\n queryInstance.current = useMemo(() => {\n const instance = new query() as TQuery;\n instance.paging = paging;\n instance.sorting = sorting;\n instance.setMicroservice(arc.microservice);\n instance.setApiBasePath(arc.apiBasePath ?? '');\n instance.setOrigin(arc.origin ?? '');\n instance.setHttpHeadersCallback(arc.httpHeadersCallback ?? (() => ({})));\n return instance;\n }, []);\n\n const [result, setResult] = useState<QueryResultWithState<TDataType>>(QueryResultWithState.initial(queryInstance.current!.defaultValue));\n\n const queryExecutor = (async (args?: TArguments) => {\n if (queryInstance) {\n try {\n const queryResult = await performer(queryInstance.current!, args);\n setResult(QueryResultWithState.fromQueryResult(queryResult, false));\n } catch {\n // Ignore\n }\n }\n });\n\n useEffect(() => {\n queryExecutor(args);\n }, []);\n\n const invalidate = () => {\n setRenderCounter(renderCounter + 1);\n };\n\n return [\n result!,\n async (args?: TArguments) => {\n setResult(QueryResultWithState.fromQueryResult(result!, true));\n await queryExecutor(args);\n },\n async (sorting: Sorting) => {\n setResult(QueryResultWithState.fromQueryResult(result!, true));\n queryInstance.current!.sorting = sorting;\n invalidate();\n await queryExecutor(args);\n },\n async (page: number) => {\n setResult(QueryResultWithState.fromQueryResult(result!, true));\n queryInstance.current!.paging = new Paging(page, queryInstance.current!.paging?.pageSize ?? 0);\n invalidate();\n await queryExecutor(args);\n },\n async (pageSize: number) => {\n setResult(QueryResultWithState.fromQueryResult(result!, true));\n queryInstance.current!.paging = new Paging(queryInstance.current!.paging?.page ?? 0, pageSize);\n invalidate();\n await queryExecutor(args);\n }];\n}\n\n/**\n * React hook for working with {@link IQueryFor} within the state management of React.\n * @template TDataType Type of model the query is for.\n * @template TQuery Type of query to use.\n * @template TArguments Optional: Arguments for the query, if any\n * @param query Query type constructor.\n * @param args Optional: Arguments for the query, if any\n * @returns Tuple of {@link QueryResult} and a {@link PerformQuery} delegate.\n */\nexport function useQuery<TDataType, TQuery extends IQueryFor<TDataType>, TArguments = object>(query: Constructor<TQuery>, args?: TArguments, sorting?: Sorting):\n [QueryResultWithState<TDataType>, PerformQuery<TArguments>, SetSorting] {\n const [result, perform, setSorting] = useQueryInternal(query, async (queryInstance: TQuery, actualArgs?: TArguments) => await queryInstance.perform(actualArgs!), sorting, undefined, args);\n return [result, perform, setSorting];\n}\n\n/**\n * React hook for working with {@link IQueryFor} within the state management of React for queries with paging.\n * @template TDataType Type of model the query is for.\n * @template TQuery Type of query to use.\n * @template TArguments Optional: Arguments for the query, if any\n * @param query Query type constructor.\n * @param paging Paging information.\n * @param args Optional: Arguments for the query, if any\n * @returns Tuple of {@link QueryResult} and a {@link PerformQuery} delegate.\n */\nexport function useQueryWithPaging<TDataType, TQuery extends IQueryFor<TDataType>, TArguments = object>(query: Constructor<TQuery>, paging: Paging, args?: TArguments, sorting?: Sorting):\n [QueryResultWithState<TDataType>, PerformQuery<TArguments>, SetSorting, SetPage, SetPageSize] {\n return useQueryInternal(query, async (queryInstance: TQuery, actualArgs?: TArguments) => await queryInstance.perform(actualArgs!), sorting, paging, args);\n}\n"],"names":["Paging","Sorting","useContext","ArcContext","useRef","useState","useMemo","QueryResultWithState","useEffect"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { GetHttpHeaders } from '@cratis/arc';
2
+ export interface ArcProps {
3
+ children?: JSX.Element | JSX.Element[];
4
+ microservice?: string;
5
+ development?: boolean;
6
+ origin?: string;
7
+ basePath?: string;
8
+ apiBasePath?: string;
9
+ httpHeadersCallback?: GetHttpHeaders;
10
+ }
11
+ export declare const Arc: (props: ArcProps) => import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=Arc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Arc.d.ts","sourceRoot":"","sources":["../../Arc.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,cAAc,CAAC;CACxC;AAED,eAAO,MAAM,GAAG,GAAI,OAAO,QAAQ,4CAwBlC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { CommandScope } from './commands/CommandScope.js';
3
+ import '@cratis/arc/commands';
4
+ import 'react';
5
+ import { ArcContext } from './ArcContext.js';
6
+ import { IdentityProvider } from './identity/IdentityProvider.js';
7
+ import { Bindings } from './Bindings.js';
8
+
9
+ const Arc = (props) => {
10
+ const configuration = {
11
+ microservice: props.microservice ?? '',
12
+ development: props.development ?? false,
13
+ origin: props.origin ?? '',
14
+ basePath: props.basePath ?? '',
15
+ apiBasePath: props.apiBasePath ?? '',
16
+ httpHeadersCallback: props.httpHeadersCallback
17
+ };
18
+ Bindings.initialize(configuration.microservice, configuration.apiBasePath, configuration.origin, configuration.httpHeadersCallback);
19
+ return (jsx(ArcContext.Provider, { value: configuration, children: jsx(IdentityProvider, { httpHeadersCallback: props.httpHeadersCallback, children: jsx(CommandScope, { children: props.children }) }) }));
20
+ };
21
+
22
+ export { Arc };
23
+ //# sourceMappingURL=Arc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Arc.js","sources":["../../Arc.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 { CommandScope } from './commands';\nimport { IdentityProvider } from './identity';\nimport { Bindings } from './Bindings';\nimport { ArcConfiguration, ArcContext } from './ArcContext';\nimport { GetHttpHeaders } from '@cratis/arc';\n\nexport interface ArcProps {\n children?: JSX.Element | JSX.Element[];\n microservice?: string;\n development?: boolean;\n origin?: string;\n basePath?: string;\n apiBasePath?: string;\n httpHeadersCallback?: GetHttpHeaders;\n}\n\nexport const Arc = (props: ArcProps) => {\n const configuration: ArcConfiguration = {\n microservice: props.microservice ?? '',\n development: props.development ?? false,\n origin: props.origin ?? '',\n basePath: props.basePath ?? '',\n apiBasePath: props.apiBasePath ?? '',\n httpHeadersCallback: props.httpHeadersCallback\n };\n\n Bindings.initialize(\n configuration.microservice,\n configuration.apiBasePath,\n configuration.origin,\n configuration.httpHeadersCallback);\n\n return (\n <ArcContext.Provider value={configuration}>\n <IdentityProvider httpHeadersCallback={props.httpHeadersCallback}>\n <CommandScope>\n {props.children}\n </CommandScope>\n </IdentityProvider>\n </ArcContext.Provider>);\n};"],"names":["_jsx"],"mappings":";;;;;;;;AAmBO,MAAM,GAAG,GAAG,CAAC,KAAe,KAAI;AACnC,IAAA,MAAM,aAAa,GAAqB;AACpC,QAAA,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;AACtC,QAAA,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK;AACvC,QAAA,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;AAC1B,QAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;AAC9B,QAAA,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;QACpC,mBAAmB,EAAE,KAAK,CAAC;KAC9B;AAED,IAAA,QAAQ,CAAC,UAAU,CACf,aAAa,CAAC,YAAY,EAC1B,aAAa,CAAC,WAAW,EACzB,aAAa,CAAC,MAAM,EACpB,aAAa,CAAC,mBAAmB,CAAC;AAEtC,IAAA,QACIA,GAAA,CAAC,UAAU,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,aAAa,EAAA,QAAA,EACrCA,GAAA,CAAC,gBAAgB,EAAA,EAAC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAA,QAAA,EAC5DA,GAAA,CAAC,YAAY,EAAA,EAAA,QAAA,EACR,KAAK,CAAC,QAAQ,EAAA,CACJ,EAAA,CACA,EAAA,CACD;AAC9B;;;;"}
@@ -0,0 +1,12 @@
1
+ import { GetHttpHeaders } from '@cratis/arc';
2
+ import React from 'react';
3
+ export interface ArcConfiguration {
4
+ microservice: string;
5
+ development?: boolean;
6
+ origin?: string;
7
+ basePath?: string;
8
+ apiBasePath?: string;
9
+ httpHeadersCallback?: GetHttpHeaders;
10
+ }
11
+ export declare const ArcContext: React.Context<ArcConfiguration>;
12
+ //# sourceMappingURL=ArcContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcContext.d.ts","sourceRoot":"","sources":["../../ArcContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAW,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,cAAc,CAAC;CACxC;AAED,eAAO,MAAM,UAAU,iCAOrB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Globals } from '@cratis/arc';
2
+ import React__default from 'react';
3
+
4
+ const ArcContext = React__default.createContext({
5
+ microservice: Globals.microservice,
6
+ development: false,
7
+ origin: '',
8
+ basePath: '',
9
+ apiBasePath: '',
10
+ httpHeadersCallback: () => ({})
11
+ });
12
+
13
+ export { ArcContext };
14
+ //# sourceMappingURL=ArcContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcContext.js","sources":["../../ArcContext.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\nimport { GetHttpHeaders, Globals } from '@cratis/arc';\nimport React from 'react';\n\nexport interface ArcConfiguration {\n microservice: string;\n development?: boolean\n origin?: string;\n basePath?: string;\n apiBasePath?: string;\n httpHeadersCallback?: GetHttpHeaders;\n}\n\nexport const ArcContext = React.createContext<ArcConfiguration>({\n microservice: Globals.microservice,\n development: false,\n origin: '',\n basePath: '',\n apiBasePath: '',\n httpHeadersCallback: () => ({})\n});\n"],"names":["React"],"mappings":";;;AAeO,MAAM,UAAU,GAAGA,cAAK,CAAC,aAAa,CAAmB;IAC5D,YAAY,EAAE,OAAO,CAAC,YAAY;AAClC,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,mBAAmB,EAAE,OAAO,EAAE;AACjC,CAAA;;;;"}
@@ -0,0 +1,5 @@
1
+ import { GetHttpHeaders } from '@cratis/arc';
2
+ export declare class Bindings {
3
+ static initialize(microservice: string, apiBasePath?: string, origin?: string, httpHeadersCallback?: GetHttpHeaders): void;
4
+ }
5
+ //# sourceMappingURL=Bindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bindings.d.ts","sourceRoot":"","sources":["../../Bindings.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,qBAAa,QAAQ;IACjB,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,cAAc,GAAG,IAAI;CAI7H"}
@@ -0,0 +1,13 @@
1
+ import { container } from 'tsyringe';
2
+ import { IQueryProvider, QueryProvider } from '@cratis/arc/queries';
3
+ import { WellKnownBindings } from './WellKnownBindings.js';
4
+
5
+ class Bindings {
6
+ static initialize(microservice, apiBasePath, origin, httpHeadersCallback) {
7
+ container.registerSingleton(WellKnownBindings.microservice, microservice);
8
+ container.register(IQueryProvider, { useValue: new QueryProvider(microservice, apiBasePath ?? '', origin ?? '', httpHeadersCallback ?? (() => ({}))) });
9
+ }
10
+ }
11
+
12
+ export { Bindings };
13
+ //# sourceMappingURL=Bindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bindings.js","sources":["../../Bindings.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\nimport { container } from 'tsyringe';\nimport { IQueryProvider, QueryProvider } from '@cratis/arc/queries';\nimport { Constructor } from '@cratis/fundamentals';\nimport { WellKnownBindings } from './WellKnownBindings';\nimport { GetHttpHeaders } from '@cratis/arc';\n\nexport class Bindings {\n static initialize(microservice: string, apiBasePath?: string, origin?: string, httpHeadersCallback?: GetHttpHeaders): void {\n container.registerSingleton(WellKnownBindings.microservice, microservice);\n container.register(IQueryProvider as Constructor<IQueryProvider>, { useValue: new QueryProvider(microservice, apiBasePath ?? '', origin ?? '', httpHeadersCallback ?? (() => ({}))) });\n }\n}"],"names":[],"mappings":";;;;MASa,QAAQ,CAAA;IACjB,OAAO,UAAU,CAAC,YAAoB,EAAE,WAAoB,EAAE,MAAe,EAAE,mBAAoC,EAAA;QAC/G,SAAS,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC;AACzE,QAAA,SAAS,CAAC,QAAQ,CAAC,cAA6C,EAAE,EAAE,QAAQ,EAAE,IAAI,aAAa,CAAC,YAAY,EAAE,WAAW,IAAI,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,mBAAmB,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1L;AACH;;;;"}
@@ -0,0 +1,4 @@
1
+ export declare const WellKnownBindings: {
2
+ microservice: string;
3
+ };
4
+ //# sourceMappingURL=WellKnownBindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WellKnownBindings.d.ts","sourceRoot":"","sources":["../../WellKnownBindings.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB;;CAE7B,CAAC"}
@@ -0,0 +1,6 @@
1
+ const WellKnownBindings = {
2
+ microservice: 'Microservice'
3
+ };
4
+
5
+ export { WellKnownBindings };
6
+ //# sourceMappingURL=WellKnownBindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WellKnownBindings.js","sources":["../../WellKnownBindings.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 * Well-known IoC binding constants.\n */\nexport const WellKnownBindings = {\n microservice: 'Microservice'\n};\n"],"names":[],"mappings":"AAMO,MAAM,iBAAiB,GAAG;AAC7B,IAAA,YAAY,EAAE;;;;;"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { Command, CommandResult } from '@cratis/arc/commands';
3
+ import { ICommandScope } from './ICommandScope';
4
+ export declare const CommandScopeContext: React.Context<ICommandScope>;
5
+ export type CommandScopeChanged = (hasChanges: boolean) => void;
6
+ export type CommandScopeExecute = () => Promise<Map<Command, CommandResult>>;
7
+ export type AddCommand = (command: Command) => void;
8
+ export interface ICommandScopeProps {
9
+ children?: JSX.Element | JSX.Element[];
10
+ setHasChanges?: CommandScopeChanged;
11
+ }
12
+ export declare const CommandScope: (props: ICommandScopeProps) => import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=CommandScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandScope.d.ts","sourceRoot":"","sources":["../../../commands/CommandScope.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAahD,eAAO,MAAM,mBAAmB,8BAAiE,CAAC;AAElG,MAAM,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAE7E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IACvC,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,kBAAkB,4CAyBrD,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import React__default, { useState, useEffect } from 'react';
3
+ import { CommandResults } from '@cratis/arc/commands';
4
+ import { CommandScopeImplementation } from './CommandScopeImplementation.js';
5
+
6
+ const defaultCommandScopeContext = {
7
+ addCommand: () => { },
8
+ execute: async () => {
9
+ return new CommandResults(new Map());
10
+ },
11
+ hasChanges: false,
12
+ revertChanges: () => { }
13
+ };
14
+ const CommandScopeContext = React__default.createContext(defaultCommandScopeContext);
15
+ const CommandScope = (props) => {
16
+ const [hasChanges, setHasChanges] = useState(false);
17
+ const [commandScope, setCommandScope] = useState(defaultCommandScopeContext);
18
+ useEffect(() => {
19
+ const commandScopeImplementation = new CommandScopeImplementation((value) => {
20
+ setHasChanges(value);
21
+ });
22
+ setCommandScope(commandScopeImplementation);
23
+ }, []);
24
+ if (commandScope) {
25
+ commandScope.hasChanges = hasChanges;
26
+ }
27
+ return (jsx(CommandScopeContext.Provider, { value: {
28
+ addCommand: (command) => commandScope.addCommand(command),
29
+ execute: () => commandScope.execute(),
30
+ revertChanges: () => commandScope.revertChanges(),
31
+ hasChanges
32
+ }, children: props.children }));
33
+ };
34
+
35
+ export { CommandScope, CommandScopeContext };
36
+ //# sourceMappingURL=CommandScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandScope.js","sources":["../../../commands/CommandScope.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 React, { useEffect, useState } from 'react';\nimport { Command, CommandResult, CommandResults } from '@cratis/arc/commands';\nimport { CommandScopeImplementation } from './CommandScopeImplementation';\nimport { ICommandScope } from './ICommandScope';\n\n/* eslint-disable @typescript-eslint/no-empty-function */\nconst defaultCommandScopeContext: ICommandScope = {\n addCommand: () => { },\n execute: async () => {\n return new CommandResults(new Map());\n },\n hasChanges: false,\n revertChanges: () => { }\n};\n/* eslint-enable @typescript-eslint/no-empty-function */\n\nexport const CommandScopeContext = React.createContext<ICommandScope>(defaultCommandScopeContext);\n\nexport type CommandScopeChanged = (hasChanges: boolean) => void;\nexport type CommandScopeExecute = () => Promise<Map<Command, CommandResult>>;\n\nexport type AddCommand = (command: Command) => void;\n\nexport interface ICommandScopeProps {\n children?: JSX.Element | JSX.Element[];\n setHasChanges?: CommandScopeChanged;\n}\n\nexport const CommandScope = (props: ICommandScopeProps) => {\n const [hasChanges, setHasChanges] = useState(false);\n const [commandScope, setCommandScope] = useState<ICommandScope>(defaultCommandScopeContext);\n\n useEffect(() => {\n const commandScopeImplementation = new CommandScopeImplementation((value) => {\n setHasChanges(value);\n });\n setCommandScope(commandScopeImplementation);\n }, []);\n\n if (commandScope) {\n commandScope.hasChanges = hasChanges;\n }\n\n return (\n <CommandScopeContext.Provider value={{\n addCommand: (command) => commandScope!.addCommand(command),\n execute: () => commandScope.execute(),\n revertChanges: () => commandScope.revertChanges(),\n hasChanges\n }}>\n {props.children}\n </CommandScopeContext.Provider>\n );\n};\n"],"names":["React","_jsx"],"mappings":";;;;;AASA,MAAM,0BAA0B,GAAkB;AAC9C,IAAA,UAAU,EAAE,MAAK,EAAG,CAAC;IACrB,OAAO,EAAE,YAAW;AAChB,QAAA,OAAO,IAAI,cAAc,CAAC,IAAI,GAAG,EAAE,CAAC;IACxC,CAAC;AACD,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,aAAa,EAAE,MAAK,EAAG;CAC1B;AAGM,MAAM,mBAAmB,GAAGA,cAAK,CAAC,aAAa,CAAgB,0BAA0B;AAYzF,MAAM,YAAY,GAAG,CAAC,KAAyB,KAAI;IACtD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAgB,0BAA0B,CAAC;IAE3F,SAAS,CAAC,MAAK;QACX,MAAM,0BAA0B,GAAG,IAAI,0BAA0B,CAAC,CAAC,KAAK,KAAI;YACxE,aAAa,CAAC,KAAK,CAAC;AACxB,QAAA,CAAC,CAAC;QACF,eAAe,CAAC,0BAA0B,CAAC;IAC/C,CAAC,EAAE,EAAE,CAAC;IAEN,IAAI,YAAY,EAAE;AACd,QAAA,YAAY,CAAC,UAAU,GAAG,UAAU;IACxC;AAEA,IAAA,QACIC,GAAA,CAAC,mBAAmB,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE;YACjC,UAAU,EAAE,CAAC,OAAO,KAAK,YAAa,CAAC,UAAU,CAAC,OAAO,CAAC;AAC1D,YAAA,OAAO,EAAE,MAAM,YAAY,CAAC,OAAO,EAAE;AACrC,YAAA,aAAa,EAAE,MAAM,YAAY,CAAC,aAAa,EAAE;YACjD;AACH,SAAA,EAAA,QAAA,EACI,KAAK,CAAC,QAAQ,EAAA,CACY;AAEvC;;;;"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { ICommand, CommandResults } from '@cratis/arc/commands';
3
+ import { ICommandScope } from './ICommandScope';
4
+ export declare class CommandScopeImplementation implements ICommandScope {
5
+ private readonly _setHasChanges;
6
+ private _commands;
7
+ private _hasChanges;
8
+ constructor(_setHasChanges: React.Dispatch<React.SetStateAction<boolean>>);
9
+ get hasChanges(): boolean;
10
+ set hasChanges(value: boolean);
11
+ addCommand(command: ICommand): void;
12
+ execute(): Promise<CommandResults>;
13
+ revertChanges(): void;
14
+ private evaluateHasChanges;
15
+ }
16
+ //# sourceMappingURL=CommandScopeImplementation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandScopeImplementation.d.ts","sourceRoot":"","sources":["../../../commands/CommandScopeImplementation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,qBAAa,0BAA2B,YAAW,aAAa;IAIhD,OAAO,CAAC,QAAQ,CAAC,cAAc;IAH3C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,WAAW,CAAS;gBAEC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAI1F,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAE5B;IAGD,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAW7B,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;IAYxC,aAAa;IAKb,OAAO,CAAC,kBAAkB;CAW7B"}
@@ -0,0 +1,50 @@
1
+ import { CommandResults } from '@cratis/arc/commands';
2
+
3
+ class CommandScopeImplementation {
4
+ _setHasChanges;
5
+ _commands = [];
6
+ _hasChanges = false;
7
+ constructor(_setHasChanges) {
8
+ this._setHasChanges = _setHasChanges;
9
+ }
10
+ get hasChanges() {
11
+ return this._hasChanges;
12
+ }
13
+ set hasChanges(value) {
14
+ this._hasChanges = value;
15
+ }
16
+ addCommand(command) {
17
+ if (this._commands.some(_ => _ == command)) {
18
+ return;
19
+ }
20
+ this._commands.push(command);
21
+ this.evaluateHasChanges();
22
+ command.onPropertyChanged(this.evaluateHasChanges, this);
23
+ }
24
+ async execute() {
25
+ const commandsToCommandResult = new Map();
26
+ for (const command of this._commands.filter(_ => _.hasChanges === true)) {
27
+ const commandResult = await command.execute();
28
+ commandsToCommandResult.set(command, commandResult);
29
+ }
30
+ this.evaluateHasChanges();
31
+ return new CommandResults(commandsToCommandResult);
32
+ }
33
+ revertChanges() {
34
+ this._commands.forEach(command => command.revertChanges());
35
+ this.evaluateHasChanges();
36
+ }
37
+ evaluateHasChanges() {
38
+ let hasCommandChanges = false;
39
+ this._commands.forEach(command => {
40
+ if (command.hasChanges) {
41
+ hasCommandChanges = true;
42
+ }
43
+ });
44
+ this._hasChanges = hasCommandChanges;
45
+ this._setHasChanges(hasCommandChanges);
46
+ }
47
+ }
48
+
49
+ export { CommandScopeImplementation };
50
+ //# sourceMappingURL=CommandScopeImplementation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandScopeImplementation.js","sources":["../../../commands/CommandScopeImplementation.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\nimport React from 'react';\nimport { ICommand, CommandResults } from '@cratis/arc/commands';\nimport { ICommandScope } from './ICommandScope';\n\n\n/**\n * Represents an implementation of {@link ICommandScope}.\n */\nexport class CommandScopeImplementation implements ICommandScope {\n private _commands: ICommand[] = [];\n private _hasChanges = false;\n\n constructor(private readonly _setHasChanges: React.Dispatch<React.SetStateAction<boolean>>) {\n }\n\n /** @inheritdoc */\n get hasChanges(): boolean {\n return this._hasChanges;\n }\n\n set hasChanges(value: boolean) {\n this._hasChanges = value;\n }\n\n /** @inheritdoc */\n addCommand(command: ICommand): void {\n if (this._commands.some(_ => _ == command)) {\n return;\n }\n\n this._commands.push(command);\n this.evaluateHasChanges();\n command.onPropertyChanged(this.evaluateHasChanges, this);\n }\n\n /** @inheritdoc */\n async execute(): Promise<CommandResults> {\n const commandsToCommandResult = new Map();\n\n for (const command of this._commands.filter(_ => _.hasChanges === true)) {\n const commandResult = await command.execute();\n commandsToCommandResult.set(command, commandResult);\n }\n this.evaluateHasChanges();\n return new CommandResults(commandsToCommandResult);\n }\n\n /** @inheritdoc */\n revertChanges() {\n this._commands.forEach(command => command.revertChanges());\n this.evaluateHasChanges();\n }\n\n private evaluateHasChanges() {\n let hasCommandChanges = false;\n this._commands.forEach(command => {\n if (command.hasChanges) {\n hasCommandChanges = true;\n }\n });\n\n this._hasChanges = hasCommandChanges;\n this._setHasChanges(hasCommandChanges);\n }\n}\n"],"names":[],"mappings":";;MAWa,0BAA0B,CAAA;AAIN,IAAA,cAAA;IAHrB,SAAS,GAAe,EAAE;IAC1B,WAAW,GAAG,KAAK;AAE3B,IAAA,WAAA,CAA6B,cAA6D,EAAA;QAA7D,IAAA,CAAA,cAAc,GAAd,cAAc;IAC3C;AAGA,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEA,IAAI,UAAU,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC5B;AAGA,IAAA,UAAU,CAAC,OAAiB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE;YACxC;QACJ;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC;IAC5D;AAGA,IAAA,MAAM,OAAO,GAAA;AACT,QAAA,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAE;QAEzC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE;AACrE,YAAA,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE;AAC7C,YAAA,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC;QACvD;QACA,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,OAAO,IAAI,cAAc,CAAC,uBAAuB,CAAC;IACtD;IAGA,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1D,IAAI,CAAC,kBAAkB,EAAE;IAC7B;IAEQ,kBAAkB,GAAA;QACtB,IAAI,iBAAiB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,IAAG;AAC7B,YAAA,IAAI,OAAO,CAAC,UAAU,EAAE;gBACpB,iBAAiB,GAAG,IAAI;YAC5B;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;IAC1C;AACH;;;;"}
@@ -0,0 +1,8 @@
1
+ import { ICommand, CommandResults } from '@cratis/arc/commands';
2
+ export interface ICommandScope {
3
+ hasChanges: boolean;
4
+ addCommand(command: ICommand): void;
5
+ execute(): Promise<CommandResults>;
6
+ revertChanges(): void;
7
+ }
8
+ //# sourceMappingURL=ICommandScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICommandScope.d.ts","sourceRoot":"","sources":["../../../commands/ICommandScope.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKhE,MAAM,WAAW,aAAa;IAI1B,UAAU,EAAE,OAAO,CAAC;IAMpB,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMpC,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAKnC,aAAa,IAAI,IAAI,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ICommandScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICommandScope.js","sourceRoot":"","sources":["../../../commands/ICommandScope.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export * from './ICommandScope';
2
+ export * from './CommandScope';
3
+ export * from './CommandScopeImplementation';
4
+ export * from './useCommand';
5
+ export * from './useCommandScope';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../commands/index.ts"],"names":[],"mappings":"AAGA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { CommandScope, CommandScopeContext } from './CommandScope.js';
2
+ export { CommandScopeImplementation } from './CommandScopeImplementation.js';
3
+ export { useCommand } from './useCommand.js';
4
+ export { useCommandScope } from './useCommandScope.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -0,0 +1,6 @@
1
+ import { Constructor } from '@cratis/fundamentals';
2
+ import { Command } from '@cratis/arc/commands';
3
+ export type SetCommandValues<TCommandContent> = (command: TCommandContent) => void;
4
+ export type ClearCommandValues = () => void;
5
+ export declare function useCommand<TCommand extends Command<TCommandContent, TCommandResponse>, TCommandContent = object, TCommandResponse = object>(commandType: Constructor<TCommand>, initialValues?: TCommandContent): [TCommand, SetCommandValues<TCommandContent>, ClearCommandValues];
6
+ //# sourceMappingURL=useCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCommand.d.ts","sourceRoot":"","sources":["../../../commands/useCommand.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAK/C,MAAM,MAAM,gBAAgB,CAAC,eAAe,IAAI,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AACnF,MAAM,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC;AAQ5C,wBAAgB,UAAU,CACtB,QAAQ,SAAS,OAAO,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAC3D,eAAe,GAAG,MAAM,EACxB,gBAAgB,GAAG,MAAM,EAEzB,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,EAClC,aAAa,CAAC,EAAE,eAAe,GAChC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,eAAe,CAAC,EAAE,kBAAkB,CAAC,CA2CnE"}
@@ -0,0 +1,45 @@
1
+ import React__default, { useRef, useState, useContext, useCallback, useMemo } from 'react';
2
+ import { CommandScopeContext } from './CommandScope.js';
3
+ import { ArcContext } from '../ArcContext.js';
4
+
5
+ function useCommand(commandType, initialValues) {
6
+ const command = useRef(null);
7
+ const [hasChanges, setHasChanges] = useState(false);
8
+ const arc = useContext(ArcContext);
9
+ const propertyChangedCallback = useCallback(() => {
10
+ if (command.current?.hasChanges !== hasChanges) {
11
+ setHasChanges(command.current?.hasChanges ?? false);
12
+ }
13
+ }, []);
14
+ command.current = useMemo(() => {
15
+ const instance = new commandType();
16
+ instance.setMicroservice(arc.microservice);
17
+ instance.setApiBasePath(arc.apiBasePath ?? '');
18
+ instance.setOrigin(arc.origin ?? '');
19
+ instance.setHttpHeadersCallback(arc.httpHeadersCallback ?? (() => ({})));
20
+ if (initialValues) {
21
+ instance.setInitialValues(initialValues);
22
+ }
23
+ instance.onPropertyChanged(propertyChangedCallback, instance);
24
+ return instance;
25
+ }, []);
26
+ const context = React__default.useContext(CommandScopeContext);
27
+ context.addCommand?.(command.current);
28
+ const setCommandValues = (values) => {
29
+ const valuesRecord = values;
30
+ command.current.properties.forEach((property) => {
31
+ if (valuesRecord[property] !== undefined && valuesRecord[property] != null) {
32
+ command.current[property] = valuesRecord[property];
33
+ }
34
+ });
35
+ };
36
+ const clearCommandValues = () => {
37
+ command.current.properties.forEach((property) => {
38
+ command.current[property] = undefined;
39
+ });
40
+ };
41
+ return [command.current, setCommandValues, clearCommandValues];
42
+ }
43
+
44
+ export { useCommand };
45
+ //# sourceMappingURL=useCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCommand.js","sources":["../../../commands/useCommand.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\nimport { Constructor } from '@cratis/fundamentals';\nimport { useState, useCallback, useContext, useRef, useMemo } from 'react';\nimport { Command } from '@cratis/arc/commands';\nimport React from 'react';\nimport { CommandScopeContext } from './CommandScope';\nimport { ArcContext } from '../ArcContext';\n\nexport type SetCommandValues<TCommandContent> = (command: TCommandContent) => void;\nexport type ClearCommandValues = () => void;\n\n/**\n * Use a command in a component.\n * @param commandType Type of the command to use.\n * @param initialValues Any initial values to set for the command.\n * @returns Tuple with the command, a {@link SetCommandValues<TCommandContent>} delegate to set values on command and {@link ClearCommandValues} delegate clear values.\n */\nexport function useCommand<\n TCommand extends Command<TCommandContent, TCommandResponse>,\n TCommandContent = object,\n TCommandResponse = object\n>(\n commandType: Constructor<TCommand>,\n initialValues?: TCommandContent\n): [TCommand, SetCommandValues<TCommandContent>, ClearCommandValues] {\n const command = useRef<TCommand | null>(null);\n const [hasChanges, setHasChanges] = useState(false);\n const arc = useContext(ArcContext);\n\n const propertyChangedCallback = useCallback(() => {\n if (command.current?.hasChanges !== hasChanges) {\n setHasChanges(command.current?.hasChanges ?? false);\n }\n }, []);\n\n command.current = useMemo(() => {\n const instance = new commandType();\n instance.setMicroservice(arc.microservice);\n instance.setApiBasePath(arc.apiBasePath ?? '');\n instance.setOrigin(arc.origin ?? '');\n instance.setHttpHeadersCallback(arc.httpHeadersCallback ?? (() => ({})));\n if (initialValues) {\n instance.setInitialValues(initialValues);\n }\n instance.onPropertyChanged(propertyChangedCallback, instance);\n return instance;\n }, []);\n\n const context = React.useContext(CommandScopeContext);\n context.addCommand?.(command.current! as Command<object, object>);\n\n const setCommandValues = (values: TCommandContent) => {\n const valuesRecord = values as Record<string, unknown>;\n command!.current!.properties.forEach((property: string) => {\n if (valuesRecord[property] !== undefined && valuesRecord[property] != null) {\n (command.current as Record<string, unknown>)[property] = valuesRecord[property];\n }\n });\n };\n\n const clearCommandValues = () => {\n command.current!.properties.forEach((property: string) => {\n (command.current as Record<string, unknown>)[property] = undefined;\n });\n };\n\n return [command.current!, setCommandValues, clearCommandValues];\n}\n"],"names":["React"],"mappings":";;;;AAmBM,SAAU,UAAU,CAKtB,WAAkC,EAClC,aAA+B,EAAA;AAE/B,IAAA,MAAM,OAAO,GAAG,MAAM,CAAkB,IAAI,CAAC;IAC7C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC;AAElC,IAAA,MAAM,uBAAuB,GAAG,WAAW,CAAC,MAAK;QAC7C,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,KAAK,UAAU,EAAE;YAC5C,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,KAAK,CAAC;QACvD;IACJ,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,MAAK;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE;AAClC,QAAA,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;QAC1C,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC9C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;AACpC,QAAA,QAAQ,CAAC,sBAAsB,CAAC,GAAG,CAAC,mBAAmB,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,aAAa,EAAE;AACf,YAAA,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC;QAC5C;AACA,QAAA,QAAQ,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,QAAQ,CAAC;AAC7D,QAAA,OAAO,QAAQ;IACnB,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM,OAAO,GAAGA,cAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC;IACrD,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,OAAmC,CAAC;AAEjE,IAAA,MAAM,gBAAgB,GAAG,CAAC,MAAuB,KAAI;QACjD,MAAM,YAAY,GAAG,MAAiC;QACtD,OAAQ,CAAC,OAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAgB,KAAI;AACtD,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;gBACvE,OAAO,CAAC,OAAmC,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC;YACnF;AACJ,QAAA,CAAC,CAAC;AACN,IAAA,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAK;QAC5B,OAAO,CAAC,OAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAgB,KAAI;AACpD,YAAA,OAAO,CAAC,OAAmC,CAAC,QAAQ,CAAC,GAAG,SAAS;AACtE,QAAA,CAAC,CAAC;AACN,IAAA,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,OAAQ,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;AACnE;;;;"}
@@ -0,0 +1,2 @@
1
+ export declare function useCommandScope(): import("./ICommandScope").ICommandScope;
2
+ //# sourceMappingURL=useCommandScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCommandScope.d.ts","sourceRoot":"","sources":["../../../commands/useCommandScope.ts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,4CAE9B"}
@@ -0,0 +1,9 @@
1
+ import React__default from 'react';
2
+ import { CommandScopeContext } from './CommandScope.js';
3
+
4
+ function useCommandScope() {
5
+ return React__default.useContext(CommandScopeContext);
6
+ }
7
+
8
+ export { useCommandScope };
9
+ //# sourceMappingURL=useCommandScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCommandScope.js","sources":["../../../commands/useCommandScope.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\nimport React from 'react';\nimport { CommandScopeContext } from './CommandScope';\n\nexport function useCommandScope() {\n return React.useContext(CommandScopeContext);\n}\n"],"names":["React"],"mappings":";;;SAMgB,eAAe,GAAA;AAC3B,IAAA,OAAOA,cAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC;AAChD;;;;"}
@@ -0,0 +1,6 @@
1
+ export declare class BusyIndicatorDialogRequest {
2
+ readonly title: string;
3
+ readonly message: string;
4
+ constructor(title: string, message: string);
5
+ }
6
+ //# sourceMappingURL=BusyIndicatorDialogRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BusyIndicatorDialogRequest.d.ts","sourceRoot":"","sources":["../../../dialogs/BusyIndicatorDialogRequest.ts"],"names":[],"mappings":"AAMA,qBAAa,0BAA0B;IAQ/B,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM;gBADf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM;CAE/B"}
@@ -0,0 +1,11 @@
1
+ class BusyIndicatorDialogRequest {
2
+ title;
3
+ message;
4
+ constructor(title, message) {
5
+ this.title = title;
6
+ this.message = message;
7
+ }
8
+ }
9
+
10
+ export { BusyIndicatorDialogRequest };
11
+ //# sourceMappingURL=BusyIndicatorDialogRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BusyIndicatorDialogRequest.js","sources":["../../../dialogs/BusyIndicatorDialogRequest.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 * Represents the request for a busy indicator dialog, typically for spinners.\n */\nexport class BusyIndicatorDialogRequest {\n\n /**\n * Initializes a new instance of {@link BusyIndicatorDialogRequest}.\n * @param {String} title The title of the dialog.\n * @param {String} message The message to show in the dialog.\n */\n constructor(\n readonly title: string,\n readonly message: string) {\n }\n}\n"],"names":[],"mappings":"MAMa,0BAA0B,CAAA;AAQtB,IAAA,KAAA;AACA,IAAA,OAAA;IAFb,WAAA,CACa,KAAa,EACb,OAAe,EAAA;QADf,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,OAAO,GAAP,OAAO;IACpB;AACH;;;;"}
@@ -0,0 +1,3 @@
1
+ import { DialogResult } from './DialogResult';
2
+ export type CloseDialog<TResponse> = (result: DialogResult, response?: TResponse) => void;
3
+ //# sourceMappingURL=CloseDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloseDialog.d.ts","sourceRoot":"","sources":["../../../dialogs/CloseDialog.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C,MAAM,MAAM,WAAW,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CloseDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloseDialog.js","sourceRoot":"","sources":["../../../dialogs/CloseDialog.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { DialogButtons } from './DialogButtons';
2
+ export declare class ConfirmationDialogRequest {
3
+ readonly title: string;
4
+ readonly message: string;
5
+ readonly buttons: DialogButtons;
6
+ constructor(title: string, message: string, buttons: DialogButtons);
7
+ }
8
+ //# sourceMappingURL=ConfirmationDialogRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmationDialogRequest.d.ts","sourceRoot":"","sources":["../../../dialogs/ConfirmationDialogRequest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,qBAAa,yBAAyB;IAS9B,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,OAAO,EAAE,aAAa;gBAFtB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa;CAEtC"}
@@ -0,0 +1,13 @@
1
+ class ConfirmationDialogRequest {
2
+ title;
3
+ message;
4
+ buttons;
5
+ constructor(title, message, buttons) {
6
+ this.title = title;
7
+ this.message = message;
8
+ this.buttons = buttons;
9
+ }
10
+ }
11
+
12
+ export { ConfirmationDialogRequest };
13
+ //# sourceMappingURL=ConfirmationDialogRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmationDialogRequest.js","sources":["../../../dialogs/ConfirmationDialogRequest.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\nimport { DialogButtons } from './DialogButtons';\n\n/**\n * Represents the request for a standard dialog.\n */\nexport class ConfirmationDialogRequest {\n\n /**\n * Initializes a new instance of {@link ConfirmationDialogRequest}.\n * @param {String} title The title of the dialog.\n * @param {String} message The message to show in the dialog.\n * @param {DialogButtons} buttons Buttons to use in the dialog.\n */\n constructor(\n readonly title: string,\n readonly message: string,\n readonly buttons: DialogButtons) {\n }\n}\n"],"names":[],"mappings":"MAQa,yBAAyB,CAAA;AASrB,IAAA,KAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AAHb,IAAA,WAAA,CACa,KAAa,EACb,OAAe,EACf,OAAsB,EAAA;QAFtB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,OAAO,GAAP,OAAO;IACpB;AACH;;;;"}
@@ -0,0 +1,7 @@
1
+ export declare enum DialogButtons {
2
+ Ok = 1,
3
+ OkCancel = 2,
4
+ YesNo = 3,
5
+ YesNoCancel = 4
6
+ }
7
+ //# sourceMappingURL=DialogButtons.d.ts.map