@kaspernj/api-maker 1.0.445 → 1.0.447

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 (361) hide show
  1. package/{.eslintrc.cjs → .eslintrc.js} +4 -0
  2. package/README.md +35 -0
  3. package/android/build.gradle +43 -0
  4. package/android/src/main/AndroidManifest.xml +2 -0
  5. package/android/src/main/java/expo/modules/api_maker/ApiMakerModule.kt +50 -0
  6. package/android/src/main/java/expo/modules/api_maker/ApiMakerView.kt +30 -0
  7. package/build/api.js +120 -0
  8. package/build/attribute-not-loaded-error.js +2 -0
  9. package/build/base-component.js +5 -0
  10. package/build/base-error.js +33 -0
  11. package/build/base-model/attribute.js +25 -0
  12. package/build/base-model/column.js +11 -0
  13. package/build/base-model/reflection.js +14 -0
  14. package/build/base-model/scope.js +11 -0
  15. package/build/base-model.js +828 -0
  16. package/build/bootstrap/attribute-row/index.js +105 -0
  17. package/build/bootstrap/attribute-rows.js +31 -0
  18. package/build/bootstrap/card.js +138 -0
  19. package/build/bootstrap/checkbox.js +97 -0
  20. package/build/bootstrap/checkboxes.js +183 -0
  21. package/build/bootstrap/index.js +2 -0
  22. package/build/bootstrap/input.js +128 -0
  23. package/build/bootstrap/invalid-feedback.js +27 -0
  24. package/build/bootstrap/paginate.js +150 -0
  25. package/build/bootstrap/radio-buttons.js +72 -0
  26. package/build/bootstrap/select.js +88 -0
  27. package/build/bootstrap/sort-link.js +130 -0
  28. package/build/cable-connection-pool.js +128 -0
  29. package/build/cable-subscription-pool.js +207 -0
  30. package/build/cable-subscription.js +21 -0
  31. package/build/cache-key-generator.js +81 -0
  32. package/build/can-can.js +134 -0
  33. package/build/channels-consumer.js +3 -0
  34. package/build/collection-loader.js +48 -0
  35. package/build/collection.js +279 -0
  36. package/build/command-submit-data.js +81 -0
  37. package/build/commands-pool.js +195 -0
  38. package/build/compose.js +9 -0
  39. package/build/config.js +53 -0
  40. package/build/custom-error.js +5 -0
  41. package/build/data-set-to-attributes.js +10 -0
  42. package/build/deserializer.js +56 -0
  43. package/build/destroy-error.js +5 -0
  44. package/build/devise.js +109 -0
  45. package/build/draggable-sort/controller.js +136 -0
  46. package/build/draggable-sort/index.js +114 -0
  47. package/build/draggable-sort/item.js +188 -0
  48. package/build/error-logger.js +101 -0
  49. package/build/error-messages.js +13 -0
  50. package/build/event-connection.js +32 -0
  51. package/build/event-model-class.js +24 -0
  52. package/build/events.js +5 -0
  53. package/build/form.js +83 -0
  54. package/build/index.js +3 -0
  55. package/build/inputs/attachment.js +121 -0
  56. package/build/inputs/auto-submit.js +36 -0
  57. package/build/inputs/checkbox.js +145 -0
  58. package/build/inputs/checkboxes.js +111 -0
  59. package/build/inputs/id-for-component.js +15 -0
  60. package/build/inputs/input-wrapper.js +18 -0
  61. package/build/inputs/input.js +230 -0
  62. package/build/inputs/money.js +179 -0
  63. package/build/inputs/name-for-component.js +13 -0
  64. package/build/inputs/select.js +92 -0
  65. package/build/instance-of-class-name.js +23 -0
  66. package/build/key-value-store.js +53 -0
  67. package/build/link.js +68 -0
  68. package/build/logger.js +30 -0
  69. package/build/modal.js +37 -0
  70. package/build/model-class-require.js +13 -0
  71. package/build/model-events.js +30 -0
  72. package/build/model-name.js +28 -0
  73. package/build/model-prop-type.js +101 -0
  74. package/build/model-recipes-loader.js +32 -0
  75. package/build/model-recipes-model-loader.js +357 -0
  76. package/build/models-response-reader.js +40 -0
  77. package/build/models.js +8 -0
  78. package/build/money-formatter.js +77 -0
  79. package/build/not-loaded-error.js +2 -0
  80. package/build/params.js +60 -0
  81. package/build/preloaded.js +38 -0
  82. package/build/resize-observer.js +11 -0
  83. package/build/result.js +13 -0
  84. package/build/router/route.js +262 -0
  85. package/build/router/switch.js +72 -0
  86. package/build/router.js +57 -0
  87. package/build/routes-native.js +202 -0
  88. package/build/routes.js +50 -0
  89. package/build/run-last.js +35 -0
  90. package/build/serializer.js +63 -0
  91. package/build/services.js +20 -0
  92. package/build/session-status-updater.js +126 -0
  93. package/build/source-maps-loader.js +171 -0
  94. package/build/super-admin/config-reader.js +84 -0
  95. package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
  96. package/build/super-admin/edit-page/edit-attribute-content.js +54 -0
  97. package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
  98. package/build/super-admin/edit-page/edit-attribute.js +76 -0
  99. package/build/super-admin/edit-page.js +120 -0
  100. package/build/super-admin/has-edit-config.js +12 -0
  101. package/build/super-admin/index-page.js +24 -0
  102. package/build/super-admin/index.js +180 -0
  103. package/build/super-admin/layout/header/index.js +151 -0
  104. package/build/super-admin/layout/index.js +109 -0
  105. package/build/super-admin/layout/menu/index.js +93 -0
  106. package/build/super-admin/layout/menu/menu-content.js +40 -0
  107. package/build/super-admin/layout/menu/menu-item.js +83 -0
  108. package/build/super-admin/layout/no-access.js +25 -0
  109. package/build/super-admin/model-class-table.js +61 -0
  110. package/build/super-admin/models.js +8 -0
  111. package/build/super-admin/show-nav.js +49 -0
  112. package/build/super-admin/show-page/belongs-to-attribute-row.js +28 -0
  113. package/build/super-admin/show-page/index.js +141 -0
  114. package/build/super-admin/show-reflection-actions.js +47 -0
  115. package/build/super-admin/show-reflection-link.js +46 -0
  116. package/build/super-admin/show-reflection-page.js +47 -0
  117. package/build/table/column-content.js +112 -0
  118. package/build/table/column-identifier.js +18 -0
  119. package/build/table/column-visible.js +7 -0
  120. package/build/table/components/column.js +20 -0
  121. package/build/table/components/flat-list.js +20 -0
  122. package/build/table/components/header.js +25 -0
  123. package/build/table/components/row.js +25 -0
  124. package/build/table/filters/attribute-element.js +43 -0
  125. package/build/table/filters/filter-form.js +392 -0
  126. package/build/table/filters/filter.js +89 -0
  127. package/build/table/filters/index.js +182 -0
  128. package/build/table/filters/load-search-modal.js +174 -0
  129. package/build/table/filters/reflection-element.js +36 -0
  130. package/build/table/filters/save-search-modal.js +86 -0
  131. package/build/table/filters/scope-element.js +41 -0
  132. package/build/table/header-column-content.js +67 -0
  133. package/build/table/header-column.js +144 -0
  134. package/build/table/header-select.js +104 -0
  135. package/build/table/model-callback-args.js +10 -0
  136. package/build/table/model-column.js +87 -0
  137. package/build/table/model-row.js +179 -0
  138. package/build/table/select-calculator.js +63 -0
  139. package/build/table/settings/column-row.js +97 -0
  140. package/build/table/settings/download-action.js +78 -0
  141. package/build/table/settings/index.js +92 -0
  142. package/build/table/table-settings.js +219 -0
  143. package/build/table/table.js +972 -0
  144. package/build/table/use-sorting.js +34 -0
  145. package/build/table/widths.js +75 -0
  146. package/build/table/worker-plugins-check-all-checkbox.js +125 -0
  147. package/build/table/worker-plugins-checkbox.js +115 -0
  148. package/build/translated-attributes.js +10 -0
  149. package/build/translated-collections.js +11 -0
  150. package/build/updated-attribute.js +76 -0
  151. package/build/url-encode.js +15 -0
  152. package/build/use-breakpoint.js +44 -0
  153. package/build/use-can-can.js +55 -0
  154. package/build/use-collection.js +225 -0
  155. package/build/use-created-event.js +52 -0
  156. package/build/use-current-user.js +73 -0
  157. package/build/use-destroyed-event.js +60 -0
  158. package/build/use-event-emitter.js +13 -0
  159. package/build/use-event-listener.js +16 -0
  160. package/build/use-input.js +140 -0
  161. package/build/use-model-event.js +60 -0
  162. package/build/use-model.js +169 -0
  163. package/build/use-resize-observer.js +23 -0
  164. package/build/use-router.js +102 -0
  165. package/build/use-screen-layout.js +39 -0
  166. package/build/use-updated-event.js +60 -0
  167. package/build/use-validation-errors.js +30 -0
  168. package/build/utils/card.js +51 -0
  169. package/build/utils/checkbox.js +48 -0
  170. package/build/utils/default-style.js +18 -0
  171. package/build/utils/modal.js +61 -0
  172. package/build/utils/text.js +18 -0
  173. package/build/validation-error.js +28 -0
  174. package/build/validation-errors.js +98 -0
  175. package/build/with-collection.js +13 -0
  176. package/build/with-current-user.js +9 -0
  177. package/build/with-model.js +14 -0
  178. package/build/with-router.js +21 -0
  179. package/expo-module.config.json +17 -0
  180. package/ios/ApiMaker.podspec +29 -0
  181. package/ios/ApiMakerModule.swift +48 -0
  182. package/ios/ApiMakerView.swift +38 -0
  183. package/package.json +35 -14
  184. package/src/{api.mjs → api.js} +5 -5
  185. package/src/{base-error.mjs → base-error.js} +1 -1
  186. package/src/base-model/{attribute.mjs → attribute.js} +1 -1
  187. package/src/base-model/{reflection.mjs → reflection.js} +1 -1
  188. package/src/{base-model.mjs → base-model.js} +14 -14
  189. package/src/bootstrap/attribute-row/index.jsx +2 -2
  190. package/src/bootstrap/attribute-rows.jsx +1 -1
  191. package/src/bootstrap/card.jsx +1 -1
  192. package/src/bootstrap/checkbox.jsx +1 -1
  193. package/src/bootstrap/checkboxes.jsx +1 -1
  194. package/src/bootstrap/input.jsx +1 -1
  195. package/src/bootstrap/paginate.jsx +2 -2
  196. package/src/bootstrap/sort-link.jsx +3 -3
  197. package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +3 -3
  198. package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +4 -4
  199. package/src/{cable-subscription.mjs → cable-subscription.js} +1 -1
  200. package/src/{can-can.mjs → can-can.js} +1 -1
  201. package/src/collection-loader.jsx +2 -2
  202. package/src/{collection.mjs → collection.js} +3 -3
  203. package/src/{commands-pool.mjs → commands-pool.js} +11 -11
  204. package/src/{custom-error.mjs → custom-error.js} +1 -1
  205. package/src/{deserializer.mjs → deserializer.js} +2 -2
  206. package/src/{destroy-error.mjs → destroy-error.js} +1 -1
  207. package/src/{devise.mjs → devise.js} +5 -9
  208. package/src/draggable-sort/controller.js +137 -0
  209. package/src/draggable-sort/index.jsx +108 -0
  210. package/src/draggable-sort/item.jsx +174 -0
  211. package/src/{error-logger.mjs → error-logger.js} +1 -1
  212. package/src/event-connection.jsx +1 -1
  213. package/src/event-model-class.jsx +1 -1
  214. package/src/form.jsx +1 -1
  215. package/src/index.js +3 -0
  216. package/src/inputs/attachment.jsx +2 -2
  217. package/src/inputs/checkbox.jsx +7 -6
  218. package/src/inputs/checkboxes.jsx +1 -1
  219. package/src/inputs/input-wrapper.jsx +1 -1
  220. package/src/inputs/input.jsx +8 -7
  221. package/src/inputs/money.jsx +3 -3
  222. package/src/inputs/select.jsx +1 -1
  223. package/src/{key-value-store.mjs → key-value-store.js} +1 -1
  224. package/src/link.jsx +2 -2
  225. package/src/modal.jsx +1 -1
  226. package/src/{model-class-require.mjs → model-class-require.js} +4 -2
  227. package/src/{model-events.mjs → model-events.js} +1 -1
  228. package/src/{model-name.mjs → model-name.js} +1 -1
  229. package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
  230. package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +2 -2
  231. package/src/{models-response-reader.mjs → models-response-reader.js} +2 -2
  232. package/src/models.js +7 -0
  233. package/src/{models.mjs.erb → models.js.erb} +1 -1
  234. package/src/{params.mjs → params.js} +2 -2
  235. package/src/{preloaded.mjs → preloaded.js} +1 -1
  236. package/src/resize-observer.jsx +1 -1
  237. package/src/router/route.jsx +1 -1
  238. package/src/router/switch.jsx +1 -1
  239. package/src/router.jsx +1 -1
  240. package/src/{routes-native.mjs → routes-native.js} +1 -1
  241. package/src/{services.mjs → services.js} +1 -1
  242. package/src/{session-status-updater.mjs → session-status-updater.js} +3 -3
  243. package/src/{source-maps-loader.mjs → source-maps-loader.js} +1 -1
  244. package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +1 -1
  245. package/src/super-admin/edit-page/edit-attribute-content.jsx +1 -1
  246. package/src/super-admin/edit-page/edit-attribute-input.jsx +1 -1
  247. package/src/super-admin/edit-page/edit-attribute.jsx +1 -1
  248. package/src/super-admin/edit-page.jsx +2 -2
  249. package/src/super-admin/has-edit-config.js +1 -1
  250. package/src/super-admin/index-page.jsx +1 -1
  251. package/src/super-admin/index.jsx +7 -7
  252. package/src/super-admin/layout/header/index.jsx +2 -2
  253. package/src/super-admin/layout/index.jsx +3 -3
  254. package/src/super-admin/layout/menu/index.jsx +3 -3
  255. package/src/super-admin/layout/menu/menu-content.jsx +2 -2
  256. package/src/super-admin/layout/menu/{menu-item/index.jsx → menu-item.jsx} +5 -6
  257. package/src/super-admin/layout/no-access.jsx +2 -2
  258. package/src/super-admin/model-class-table.jsx +3 -3
  259. package/src/super-admin/models.js +1 -1
  260. package/src/super-admin/show-nav.jsx +2 -2
  261. package/src/super-admin/show-page/belongs-to-attribute-row.jsx +1 -1
  262. package/src/super-admin/show-page/index.jsx +2 -2
  263. package/src/super-admin/show-reflection-actions.jsx +1 -1
  264. package/src/super-admin/show-reflection-link.jsx +1 -1
  265. package/src/super-admin/show-reflection-page.jsx +1 -1
  266. package/src/table/column-content.jsx +1 -1
  267. package/src/table/components/column.jsx +8 -2
  268. package/src/table/components/header.jsx +2 -2
  269. package/src/table/filters/filter-form.jsx +1 -1
  270. package/src/table/filters/index.jsx +5 -3
  271. package/src/table/filters/load-search-modal.jsx +6 -4
  272. package/src/table/filters/save-search-modal.jsx +4 -4
  273. package/src/table/header-column.jsx +59 -79
  274. package/src/table/header-select.jsx +1 -1
  275. package/src/table/model-column.jsx +12 -6
  276. package/src/table/model-row.jsx +11 -7
  277. package/src/table/{select-calculator.mjs → select-calculator.js} +1 -1
  278. package/src/table/settings/column-row.jsx +4 -3
  279. package/src/table/settings/download-action.jsx +3 -3
  280. package/src/table/settings/index.jsx +3 -3
  281. package/src/table/table-settings.js +5 -4
  282. package/src/table/table.jsx +149 -71
  283. package/src/table/{use-sorting.mjs → use-sorting.js} +1 -1
  284. package/src/table/{widths.mjs → widths.jsx} +11 -2
  285. package/src/table/worker-plugins-check-all-checkbox.jsx +2 -2
  286. package/src/table/worker-plugins-checkbox.jsx +2 -2
  287. package/src/{translated-collections.mjs → translated-collections.js} +1 -1
  288. package/src/updated-attribute.jsx +1 -1
  289. package/src/{use-breakpoint.mjs → use-breakpoint.js} +2 -2
  290. package/src/use-can-can.js +55 -0
  291. package/src/{use-collection.mjs → use-collection.js} +4 -4
  292. package/src/{use-created-event.mjs → use-created-event.js} +2 -2
  293. package/src/{use-current-user.mjs → use-current-user.js} +6 -5
  294. package/src/{use-destroyed-event.mjs → use-destroyed-event.js} +2 -2
  295. package/src/{use-input.mjs → use-input.js} +5 -5
  296. package/src/use-model-event.js +2 -2
  297. package/src/{use-model.mjs → use-model.js} +4 -4
  298. package/src/{use-resize-observer.mjs → use-resize-observer.js} +1 -1
  299. package/src/use-router.jsx +2 -2
  300. package/src/{use-updated-event.mjs → use-updated-event.js} +2 -2
  301. package/src/{use-validation-errors.mjs → use-validation-errors.js} +3 -3
  302. package/src/utils/checkbox.jsx +2 -2
  303. package/src/{validation-error.mjs → validation-error.js} +1 -1
  304. package/src/{validation-errors.mjs → validation-errors.js} +1 -1
  305. package/src/with-current-user.jsx +1 -1
  306. package/src/with-model.jsx +1 -1
  307. package/__tests__/base-model.test.mjs +0 -71
  308. package/__tests__/cable-connection-pool.test.mjs +0 -227
  309. package/__tests__/cable-subscription-pool.test.mjs +0 -27
  310. package/__tests__/can-can.test.mjs +0 -34
  311. package/__tests__/collection.test.mjs +0 -51
  312. package/__tests__/custom-error.test.mjs +0 -13
  313. package/__tests__/model-name.test.mjs +0 -34
  314. package/__tests__/model-prop-type.test.mjs +0 -113
  315. package/__tests__/params.test.mjs +0 -40
  316. package/__tests__/routes-native.test.mjs +0 -104
  317. package/__tests__/routes.test.mjs +0 -47
  318. package/__tests__/serializer.test.mjs +0 -30
  319. package/__tests__/support/task.mjs +0 -27
  320. package/__tests__/support/user.mjs +0 -32
  321. package/index.js +0 -1
  322. package/jest.config.js +0 -9
  323. package/src/event-created.jsx +0 -12
  324. package/src/event-destroyed.jsx +0 -25
  325. package/src/event-emitter-listener.jsx +0 -10
  326. package/src/event-listener.jsx +0 -25
  327. package/src/event-updated.jsx +0 -27
  328. package/src/super-admin/layout/menu/menu-item/style.scss +0 -10
  329. package/src/use-can-can.mjs +0 -48
  330. package/src/with-can-can.jsx +0 -12
  331. package/webpack.config.js +0 -15
  332. /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
  333. /package/src/base-model/{column.mjs → column.js} +0 -0
  334. /package/src/base-model/{scope.mjs → scope.js} +0 -0
  335. /package/src/{cache-key-generator.mjs → cache-key-generator.js} +0 -0
  336. /package/src/{channels-consumer.mjs → channels-consumer.js} +0 -0
  337. /package/src/{command-submit-data.mjs → command-submit-data.js} +0 -0
  338. /package/src/{config.mjs → config.js} +0 -0
  339. /package/src/{data-set-to-attributes.mjs → data-set-to-attributes.js} +0 -0
  340. /package/src/{error-messages.mjs → error-messages.js} +0 -0
  341. /package/src/{events.mjs → events.js} +0 -0
  342. /package/src/inputs/{auto-submit.mjs → auto-submit.js} +0 -0
  343. /package/src/inputs/{id-for-component.mjs → id-for-component.js} +0 -0
  344. /package/src/inputs/{name-for-component.mjs → name-for-component.js} +0 -0
  345. /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
  346. /package/src/{logger.mjs → logger.js} +0 -0
  347. /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
  348. /package/src/{money-formatter.mjs → money-formatter.js} +0 -0
  349. /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
  350. /package/src/{result.mjs → result.js} +0 -0
  351. /package/src/{routes.mjs → routes.js} +0 -0
  352. /package/src/{run-last.mjs → run-last.js} +0 -0
  353. /package/src/{serializer.mjs → serializer.js} +0 -0
  354. /package/src/table/{column-identifier.mjs → column-identifier.js} +0 -0
  355. /package/src/table/{column-visible.mjs → column-visible.js} +0 -0
  356. /package/src/table/{model-callback-args.mjs → model-callback-args.js} +0 -0
  357. /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
  358. /package/src/{url-encode.mjs → url-encode.js} +0 -0
  359. /package/src/{use-event-emitter.mjs → use-event-emitter.js} +0 -0
  360. /package/src/{use-event-listener.mjs → use-event-listener.js} +0 -0
  361. /package/src/{use-screen-layout.mjs → use-screen-layout.js} +0 -0
@@ -0,0 +1,38 @@
1
+ import * as inflection from "inflection";
2
+ import modelClassRequire from "./model-class-require";
3
+ export default class ApiMakerPreloaded {
4
+ constructor(response) {
5
+ this.response = response;
6
+ this.loadPreloadedModels();
7
+ }
8
+ loadPreloadedModels() {
9
+ this.preloaded = {};
10
+ for (const preloadedType in this.response.preloaded) {
11
+ const modelClassName = inflection.classify(preloadedType);
12
+ const ModelClass = modelClassRequire(modelClassName);
13
+ for (const preloadedId in this.response.preloaded[preloadedType]) {
14
+ const preloadedData = this.response.preloaded[preloadedType][preloadedId];
15
+ const model = new ModelClass({
16
+ data: preloadedData,
17
+ isNewRecord: false
18
+ });
19
+ if (!this.preloaded[preloadedType]) {
20
+ this.preloaded[preloadedType] = {};
21
+ }
22
+ this.preloaded[preloadedType][preloadedId] = model;
23
+ }
24
+ }
25
+ for (const modelType in this.preloaded) {
26
+ for (const modelId in this.preloaded[modelType]) {
27
+ this.preloaded[modelType][modelId]._readPreloadedRelationships(this);
28
+ }
29
+ }
30
+ }
31
+ getModel(type, id) {
32
+ if (!this.preloaded[type] || !this.preloaded[type][id]) {
33
+ throw new Error(`Could not find a ${type} by that ID: ${id}`);
34
+ }
35
+ return this.preloaded[type][id];
36
+ }
37
+ }
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmZsZWN0aW9uIiwibW9kZWxDbGFzc1JlcXVpcmUiLCJBcGlNYWtlclByZWxvYWRlZCIsImNvbnN0cnVjdG9yIiwicmVzcG9uc2UiLCJsb2FkUHJlbG9hZGVkTW9kZWxzIiwicHJlbG9hZGVkIiwicHJlbG9hZGVkVHlwZSIsIm1vZGVsQ2xhc3NOYW1lIiwiY2xhc3NpZnkiLCJNb2RlbENsYXNzIiwicHJlbG9hZGVkSWQiLCJwcmVsb2FkZWREYXRhIiwibW9kZWwiLCJkYXRhIiwiaXNOZXdSZWNvcmQiLCJtb2RlbFR5cGUiLCJtb2RlbElkIiwiX3JlYWRQcmVsb2FkZWRSZWxhdGlvbnNoaXBzIiwiZ2V0TW9kZWwiLCJ0eXBlIiwiaWQiLCJFcnJvciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmVsb2FkZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgbW9kZWxDbGFzc1JlcXVpcmUgZnJvbSBcIi4vbW9kZWwtY2xhc3MtcmVxdWlyZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwaU1ha2VyUHJlbG9hZGVkIHtcbiAgY29uc3RydWN0b3IgKHJlc3BvbnNlKSB7XG4gICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlXG4gICAgdGhpcy5sb2FkUHJlbG9hZGVkTW9kZWxzKClcbiAgfVxuXG4gIGxvYWRQcmVsb2FkZWRNb2RlbHMgKCkge1xuICAgIHRoaXMucHJlbG9hZGVkID0ge31cblxuICAgIGZvciAoY29uc3QgcHJlbG9hZGVkVHlwZSBpbiB0aGlzLnJlc3BvbnNlLnByZWxvYWRlZCkge1xuICAgICAgY29uc3QgbW9kZWxDbGFzc05hbWUgPSBpbmZsZWN0aW9uLmNsYXNzaWZ5KHByZWxvYWRlZFR5cGUpXG4gICAgICBjb25zdCBNb2RlbENsYXNzID0gbW9kZWxDbGFzc1JlcXVpcmUobW9kZWxDbGFzc05hbWUpXG5cbiAgICAgIGZvciAoY29uc3QgcHJlbG9hZGVkSWQgaW4gdGhpcy5yZXNwb25zZS5wcmVsb2FkZWRbcHJlbG9hZGVkVHlwZV0pIHtcbiAgICAgICAgY29uc3QgcHJlbG9hZGVkRGF0YSA9IHRoaXMucmVzcG9uc2UucHJlbG9hZGVkW3ByZWxvYWRlZFR5cGVdW3ByZWxvYWRlZElkXVxuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbENsYXNzKHtkYXRhOiBwcmVsb2FkZWREYXRhLCBpc05ld1JlY29yZDogZmFsc2V9KVxuXG4gICAgICAgIGlmICghdGhpcy5wcmVsb2FkZWRbcHJlbG9hZGVkVHlwZV0pIHtcbiAgICAgICAgICB0aGlzLnByZWxvYWRlZFtwcmVsb2FkZWRUeXBlXSA9IHt9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZWxvYWRlZFtwcmVsb2FkZWRUeXBlXVtwcmVsb2FkZWRJZF0gPSBtb2RlbFxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgbW9kZWxUeXBlIGluIHRoaXMucHJlbG9hZGVkKSB7XG4gICAgICBmb3IgKGNvbnN0IG1vZGVsSWQgaW4gdGhpcy5wcmVsb2FkZWRbbW9kZWxUeXBlXSkge1xuICAgICAgICB0aGlzLnByZWxvYWRlZFttb2RlbFR5cGVdW21vZGVsSWRdLl9yZWFkUHJlbG9hZGVkUmVsYXRpb25zaGlwcyh0aGlzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldE1vZGVsICh0eXBlLCBpZCkge1xuICAgIGlmICghdGhpcy5wcmVsb2FkZWRbdHlwZV0gfHwgIXRoaXMucHJlbG9hZGVkW3R5cGVdW2lkXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhICR7dHlwZX0gYnkgdGhhdCBJRDogJHtpZH1gKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByZWxvYWRlZFt0eXBlXVtpZF1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUtBLFVBQVUsTUFBTSxZQUFZO0FBQ3hDLE9BQU9DLGlCQUFpQixNQUFNLHVCQUF1QjtBQUVyRCxlQUFlLE1BQU1DLGlCQUFpQixDQUFDO0VBQ3JDQyxXQUFXQSxDQUFFQyxRQUFRLEVBQUU7SUFDckIsSUFBSSxDQUFDQSxRQUFRLEdBQUdBLFFBQVE7SUFDeEIsSUFBSSxDQUFDQyxtQkFBbUIsQ0FBQyxDQUFDO0VBQzVCO0VBRUFBLG1CQUFtQkEsQ0FBQSxFQUFJO0lBQ3JCLElBQUksQ0FBQ0MsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUVuQixLQUFLLE1BQU1DLGFBQWEsSUFBSSxJQUFJLENBQUNILFFBQVEsQ0FBQ0UsU0FBUyxFQUFFO01BQ25ELE1BQU1FLGNBQWMsR0FBR1IsVUFBVSxDQUFDUyxRQUFRLENBQUNGLGFBQWEsQ0FBQztNQUN6RCxNQUFNRyxVQUFVLEdBQUdULGlCQUFpQixDQUFDTyxjQUFjLENBQUM7TUFFcEQsS0FBSyxNQUFNRyxXQUFXLElBQUksSUFBSSxDQUFDUCxRQUFRLENBQUNFLFNBQVMsQ0FBQ0MsYUFBYSxDQUFDLEVBQUU7UUFDaEUsTUFBTUssYUFBYSxHQUFHLElBQUksQ0FBQ1IsUUFBUSxDQUFDRSxTQUFTLENBQUNDLGFBQWEsQ0FBQyxDQUFDSSxXQUFXLENBQUM7UUFDekUsTUFBTUUsS0FBSyxHQUFHLElBQUlILFVBQVUsQ0FBQztVQUFDSSxJQUFJLEVBQUVGLGFBQWE7VUFBRUcsV0FBVyxFQUFFO1FBQUssQ0FBQyxDQUFDO1FBRXZFLElBQUksQ0FBQyxJQUFJLENBQUNULFNBQVMsQ0FBQ0MsYUFBYSxDQUFDLEVBQUU7VUFDbEMsSUFBSSxDQUFDRCxTQUFTLENBQUNDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQztRQUVBLElBQUksQ0FBQ0QsU0FBUyxDQUFDQyxhQUFhLENBQUMsQ0FBQ0ksV0FBVyxDQUFDLEdBQUdFLEtBQUs7TUFDcEQ7SUFDRjtJQUVBLEtBQUssTUFBTUcsU0FBUyxJQUFJLElBQUksQ0FBQ1YsU0FBUyxFQUFFO01BQ3RDLEtBQUssTUFBTVcsT0FBTyxJQUFJLElBQUksQ0FBQ1gsU0FBUyxDQUFDVSxTQUFTLENBQUMsRUFBRTtRQUMvQyxJQUFJLENBQUNWLFNBQVMsQ0FBQ1UsU0FBUyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxDQUFDQywyQkFBMkIsQ0FBQyxJQUFJLENBQUM7TUFDdEU7SUFDRjtFQUNGO0VBRUFDLFFBQVFBLENBQUVDLElBQUksRUFBRUMsRUFBRSxFQUFFO0lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUNmLFNBQVMsQ0FBQ2MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUNkLFNBQVMsQ0FBQ2MsSUFBSSxDQUFDLENBQUNDLEVBQUUsQ0FBQyxFQUFFO01BQ3RELE1BQU0sSUFBSUMsS0FBSyxDQUFDLG9CQUFvQkYsSUFBSSxnQkFBZ0JDLEVBQUUsRUFBRSxDQUFDO0lBQy9EO0lBRUEsT0FBTyxJQUFJLENBQUNmLFNBQVMsQ0FBQ2MsSUFBSSxDQUFDLENBQUNDLEVBQUUsQ0FBQztFQUNqQztBQUNGIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,11 @@
1
+ import memo from "set-state-compare/src/memo";
2
+ import useResizeObserver from "./use-resize-observer";
3
+ const ApiMakerResizeObserver = memo(({
4
+ element,
5
+ onResize
6
+ }) => {
7
+ useResizeObserver(element, onResize);
8
+ return null;
9
+ });
10
+ export default ApiMakerResizeObserver;
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtZW1vIiwidXNlUmVzaXplT2JzZXJ2ZXIiLCJBcGlNYWtlclJlc2l6ZU9ic2VydmVyIiwiZWxlbWVudCIsIm9uUmVzaXplIl0sInNvdXJjZXMiOlsiLi4vc3JjL3Jlc2l6ZS1vYnNlcnZlci5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCB1c2VSZXNpemVPYnNlcnZlciBmcm9tIFwiLi91c2UtcmVzaXplLW9ic2VydmVyXCJcblxuY29uc3QgQXBpTWFrZXJSZXNpemVPYnNlcnZlciA9IG1lbW8oKHtlbGVtZW50LCBvblJlc2l6ZX0pID0+IHtcbiAgdXNlUmVzaXplT2JzZXJ2ZXIoZWxlbWVudCwgb25SZXNpemUpXG5cbiAgcmV0dXJuIG51bGxcbn0pXG5cbmV4cG9ydCBkZWZhdWx0IEFwaU1ha2VyUmVzaXplT2JzZXJ2ZXJcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsSUFBSSxNQUFNLDRCQUE0QjtBQUM3QyxPQUFPQyxpQkFBaUIsTUFBTSx1QkFBdUI7QUFFckQsTUFBTUMsc0JBQXNCLEdBQUdGLElBQUksQ0FBQyxDQUFDO0VBQUNHLE9BQU87RUFBRUM7QUFBUSxDQUFDLEtBQUs7RUFDM0RILGlCQUFpQixDQUFDRSxPQUFPLEVBQUVDLFFBQVEsQ0FBQztFQUVwQyxPQUFPLElBQUk7QUFDYixDQUFDLENBQUM7QUFFRixlQUFlRixzQkFBc0IiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,13 @@
1
+ export default class ApiMakerResult {
2
+ constructor(data) {
3
+ this.data = data;
4
+ }
5
+ count = () => this.data.response.meta.count;
6
+ currentPage = () => this.data.response.meta.currentPage;
7
+ models = () => this.data.models;
8
+ modelClass = () => this.data.collection.modelClass();
9
+ perPage = () => this.data.response.meta.perPage;
10
+ totalCount = () => this.data.response.meta.totalCount;
11
+ totalPages = () => this.data.response.meta.totalPages;
12
+ }
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcGlNYWtlclJlc3VsdCIsImNvbnN0cnVjdG9yIiwiZGF0YSIsImNvdW50IiwicmVzcG9uc2UiLCJtZXRhIiwiY3VycmVudFBhZ2UiLCJtb2RlbHMiLCJtb2RlbENsYXNzIiwiY29sbGVjdGlvbiIsInBlclBhZ2UiLCJ0b3RhbENvdW50IiwidG90YWxQYWdlcyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXN1bHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJSZXN1bHQge1xuICBjb25zdHJ1Y3RvciAoZGF0YSkge1xuICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgfVxuXG4gIGNvdW50ID0gKCkgPT4gdGhpcy5kYXRhLnJlc3BvbnNlLm1ldGEuY291bnRcbiAgY3VycmVudFBhZ2UgPSAoKSA9PiB0aGlzLmRhdGEucmVzcG9uc2UubWV0YS5jdXJyZW50UGFnZVxuICBtb2RlbHMgPSAoKSA9PiB0aGlzLmRhdGEubW9kZWxzXG4gIG1vZGVsQ2xhc3MgPSAoKSA9PiB0aGlzLmRhdGEuY29sbGVjdGlvbi5tb2RlbENsYXNzKClcbiAgcGVyUGFnZSA9ICgpID0+IHRoaXMuZGF0YS5yZXNwb25zZS5tZXRhLnBlclBhZ2VcbiAgdG90YWxDb3VudCA9ICgpID0+IHRoaXMuZGF0YS5yZXNwb25zZS5tZXRhLnRvdGFsQ291bnRcbiAgdG90YWxQYWdlcyA9ICgpID0+IHRoaXMuZGF0YS5yZXNwb25zZS5tZXRhLnRvdGFsUGFnZXNcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxNQUFNQSxjQUFjLENBQUM7RUFDbENDLFdBQVdBLENBQUVDLElBQUksRUFBRTtJQUNqQixJQUFJLENBQUNBLElBQUksR0FBR0EsSUFBSTtFQUNsQjtFQUVBQyxLQUFLLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUNELElBQUksQ0FBQ0UsUUFBUSxDQUFDQyxJQUFJLENBQUNGLEtBQUs7RUFDM0NHLFdBQVcsR0FBR0EsQ0FBQSxLQUFNLElBQUksQ0FBQ0osSUFBSSxDQUFDRSxRQUFRLENBQUNDLElBQUksQ0FBQ0MsV0FBVztFQUN2REMsTUFBTSxHQUFHQSxDQUFBLEtBQU0sSUFBSSxDQUFDTCxJQUFJLENBQUNLLE1BQU07RUFDL0JDLFVBQVUsR0FBR0EsQ0FBQSxLQUFNLElBQUksQ0FBQ04sSUFBSSxDQUFDTyxVQUFVLENBQUNELFVBQVUsQ0FBQyxDQUFDO0VBQ3BERSxPQUFPLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUNSLElBQUksQ0FBQ0UsUUFBUSxDQUFDQyxJQUFJLENBQUNLLE9BQU87RUFDL0NDLFVBQVUsR0FBR0EsQ0FBQSxLQUFNLElBQUksQ0FBQ1QsSUFBSSxDQUFDRSxRQUFRLENBQUNDLElBQUksQ0FBQ00sVUFBVTtFQUNyREMsVUFBVSxHQUFHQSxDQUFBLEtBQU0sSUFBSSxDQUFDVixJQUFJLENBQUNFLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDTyxVQUFVO0FBQ3ZEIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,262 @@
1
+ import BaseComponent from "../base-component";
2
+ import { createContext, useContext, useMemo } from "react";
3
+ import memo from "set-state-compare/src/memo";
4
+ import PropTypes from "prop-types";
5
+ import propTypesExact from "prop-types-exact";
6
+ import { shapeComponent } from "set-state-compare/src/shape-component";
7
+ import Switch, { CurrentSwitchContext } from "./switch";
8
+ const CurrentPathContext = /*#__PURE__*/createContext([]);
9
+ const ParamsContext = /*#__PURE__*/createContext({});
10
+ const RequireComponentContext = /*#__PURE__*/createContext(null);
11
+ const RouteContext = /*#__PURE__*/createContext(null);
12
+ const useParams = () => useContext(ParamsContext);
13
+ const Route = memo(shapeComponent(class Route extends BaseComponent {
14
+ static defaultProps = {
15
+ exact: false,
16
+ fallback: false,
17
+ includeInPath: true
18
+ };
19
+ static propTypes = propTypesExact({
20
+ children: PropTypes.node,
21
+ component: PropTypes.string,
22
+ componentPath: PropTypes.string,
23
+ exact: PropTypes.bool.isRequired,
24
+ fallback: PropTypes.bool.isRequired,
25
+ includeInPath: PropTypes.bool.isRequired,
26
+ onMatch: PropTypes.func,
27
+ path: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)])
28
+ });
29
+ match = null;
30
+ newParams = null;
31
+ pathParts = null;
32
+ setup() {
33
+ const {
34
+ path
35
+ } = this.props;
36
+ const {
37
+ pathsMatched,
38
+ switchGroup
39
+ } = useContext(CurrentSwitchContext);
40
+ const givenRoute = useContext(RouteContext);
41
+ const {
42
+ pathShown
43
+ } = switchGroup.s;
44
+ this.debug = false;
45
+ this.log(() => ({
46
+ givenRoute
47
+ }));
48
+ this.requireComponent = useContext(RequireComponentContext);
49
+ this.currentParams = useContext(ParamsContext);
50
+ this.currentPath = useContext(CurrentPathContext);
51
+ this.switchGroup = switchGroup;
52
+ this.routeParts = useMemo(() => givenRoute?.split("/"), [path, givenRoute]);
53
+ this.pathParts = useMemo(() => path?.split("/"), [path]);
54
+ this.newRouteParts = useMemo(() => {
55
+ if (!path) {
56
+ if (givenRoute == "") {
57
+ return [];
58
+ } else {
59
+ return this.routeParts;
60
+ }
61
+ }
62
+ return this.routeParts.slice(this.pathParts.length, this.routeParts.length);
63
+ }, [givenRoute].concat(this.pathParts));
64
+ this.useStates({
65
+ Component: null,
66
+ componentNotFound: null,
67
+ matches: false
68
+ });
69
+ useMemo(() => {
70
+ this.loadMatches();
71
+ }, [givenRoute, path, pathsMatched]);
72
+ useMemo(() => {
73
+ if (this.hasSwitchMatch() && !this.s.Component && this.s.matches) {
74
+ if (this.props.onMatch) {
75
+ this.props.onMatch();
76
+ }
77
+ if (!this.props.children && (this.props.path || this.props.component || this.props.componentPath)) {
78
+ this.loadComponent();
79
+ }
80
+ }
81
+ }, [path, pathShown, this.s.matches]);
82
+ }
83
+ hasSwitchMatch = () => this.switchGroup.s.pathShown && this.switchGroup.s.pathShown == this.pathId();
84
+ pathId() {
85
+ const {
86
+ fallback
87
+ } = this.p;
88
+ const {
89
+ path
90
+ } = this.props;
91
+ let pathId;
92
+ if (fallback) {
93
+ pathId = "[FALLBACK]";
94
+ } else if (!path) {
95
+ pathId = "[PATH-EMPTY]";
96
+ } else {
97
+ pathId = path;
98
+ }
99
+ return pathId;
100
+ }
101
+ loadMatches() {
102
+ const {
103
+ newRouteParts
104
+ } = this.tt;
105
+ const {
106
+ component,
107
+ path
108
+ } = this.props;
109
+ const {
110
+ exact,
111
+ includeInPath,
112
+ fallback
113
+ } = this.p;
114
+ let matches = true;
115
+ const params = {};
116
+ const componentPathParts = [...this.currentPath];
117
+ this.log(() => [this.props.path, "Start generating component paths", JSON.stringify(componentPathParts)]);
118
+ for (const pathPartIndex in this.pathParts) {
119
+ const pathPart = this.pathParts[pathPartIndex];
120
+ const translatedPathPart = I18n.t(`routes.${pathPart}`, {
121
+ defaultValue: pathPart
122
+ });
123
+ if (!(pathPartIndex in this.routeParts)) {
124
+ this.log(() => `No match for: ${pathPartIndex}`);
125
+ matches = false;
126
+ break;
127
+ }
128
+ const routePart = decodeURIComponent(this.routeParts[pathPartIndex]);
129
+ if (pathPart.startsWith(":") && routePart) {
130
+ const paramName = pathPart.slice(1, pathPart.length);
131
+ params[paramName] = routePart;
132
+ } else if (translatedPathPart != routePart) {
133
+ matches = false;
134
+ break;
135
+ } else if (!component && includeInPath) {
136
+ componentPathParts.push(pathPart);
137
+ }
138
+ }
139
+ if (exact && newRouteParts.length > 0) {
140
+ this.log(() => ["Exact and more route parts", {
141
+ newRouteParts,
142
+ pathParts: this.pathParts,
143
+ routeParts: this.routeParts
144
+ }]);
145
+ matches = false;
146
+ } else if (matches && path) {
147
+ matches = true;
148
+ } else if (this.routeParts.length == 0) {
149
+ matches = true;
150
+ }
151
+ const matchId = this.pathId();
152
+ if (!matches && fallback) {
153
+ matches = true;
154
+ }
155
+ this.log(() => [this.props.path, "End generating component paths", JSON.stringify(componentPathParts), {
156
+ matches
157
+ }]);
158
+ if (matches) {
159
+ if (component && includeInPath) {
160
+ componentPathParts.push(component);
161
+ }
162
+ const newParams = Object.assign({}, this.currentParams, params);
163
+ this.setInstance({
164
+ componentPathParts,
165
+ match: {
166
+ params
167
+ },
168
+ newParams
169
+ });
170
+ this.setState({
171
+ matches
172
+ });
173
+ this.switchGroup?.setPathMatched(matchId, true);
174
+ } else {
175
+ this.setInstance({
176
+ componentPathParts: null,
177
+ match: null,
178
+ newParams: null
179
+ });
180
+ this.setState({
181
+ matches
182
+ });
183
+ this.switchGroup?.setPathMatched(matchId, false);
184
+ }
185
+ }
186
+ async loadComponent() {
187
+ const actualComponentPath = this.props.componentPath || this.tt.componentPathParts.join("/");
188
+ let Component;
189
+ this.log(() => ["loadComponent", {
190
+ componentPath: this.props.componentPath,
191
+ componentPathParts: this.componentPathParts,
192
+ actualComponentPath
193
+ }]);
194
+ try {
195
+ const componentImport = await this.tt.requireComponent({
196
+ routeDefinition: {
197
+ component: actualComponentPath
198
+ }
199
+ });
200
+ Component = componentImport.default;
201
+ } catch (error) {
202
+ console.error(`Couldn't find component: ${actualComponentPath}`);
203
+ throw error;
204
+ }
205
+ this.setState({
206
+ Component,
207
+ componentNotFound: !Component
208
+ });
209
+ }
210
+ log(callbackArgs) {
211
+ if (this.debug) {
212
+ let args = callbackArgs();
213
+ if (!Array.isArray(args)) args = [args];
214
+ console.log(...args);
215
+ }
216
+ }
217
+ render() {
218
+ const {
219
+ componentPathParts,
220
+ match,
221
+ newParams,
222
+ newRouteParts
223
+ } = this.tt;
224
+ const {
225
+ children,
226
+ component,
227
+ path
228
+ } = this.props;
229
+ const {
230
+ Component,
231
+ componentNotFound,
232
+ matches
233
+ } = this.s;
234
+ if (!matches || !this.hasSwitchMatch()) {
235
+ // Route isn't matching and shouldn't be rendered at all.
236
+ return null;
237
+ }
238
+ if (!Component && !children && !componentNotFound) {
239
+ // Route is matching but hasn't been loaded yet.
240
+ return /*#__PURE__*/React.createElement("div", null, "Loading ", component || this.props.componentPath || componentPathParts.join("/"));
241
+ }
242
+ if (!Component && !children && componentNotFound) {
243
+ // Don't render anything if the component couldn't be found.
244
+ return null;
245
+ }
246
+ return /*#__PURE__*/React.createElement(CurrentPathContext.Provider, {
247
+ value: componentPathParts
248
+ }, /*#__PURE__*/React.createElement(RouteContext.Provider, {
249
+ value: newRouteParts.join("/")
250
+ }, /*#__PURE__*/React.createElement(ParamsContext.Provider, {
251
+ value: newParams
252
+ }, /*#__PURE__*/React.createElement(Switch, {
253
+ name: `route-group-${path}`,
254
+ single: false
255
+ }, Component && /*#__PURE__*/React.createElement(Component, {
256
+ match: match
257
+ }), children))));
258
+ }
259
+ }));
260
+ export { RequireComponentContext, RouteContext, Switch, useParams };
261
+ export default Route;
262
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJ1c2VNZW1vIiwibWVtbyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0Iiwic2hhcGVDb21wb25lbnQiLCJTd2l0Y2giLCJDdXJyZW50U3dpdGNoQ29udGV4dCIsIkN1cnJlbnRQYXRoQ29udGV4dCIsIlBhcmFtc0NvbnRleHQiLCJSZXF1aXJlQ29tcG9uZW50Q29udGV4dCIsIlJvdXRlQ29udGV4dCIsInVzZVBhcmFtcyIsIlJvdXRlIiwiZGVmYXVsdFByb3BzIiwiZXhhY3QiLCJmYWxsYmFjayIsImluY2x1ZGVJblBhdGgiLCJwcm9wVHlwZXMiLCJjaGlsZHJlbiIsIm5vZGUiLCJjb21wb25lbnQiLCJzdHJpbmciLCJjb21wb25lbnRQYXRoIiwiYm9vbCIsImlzUmVxdWlyZWQiLCJvbk1hdGNoIiwiZnVuYyIsInBhdGgiLCJvbmVPZlR5cGUiLCJpbnN0YW5jZU9mIiwiUmVnRXhwIiwibWF0Y2giLCJuZXdQYXJhbXMiLCJwYXRoUGFydHMiLCJzZXR1cCIsInByb3BzIiwicGF0aHNNYXRjaGVkIiwic3dpdGNoR3JvdXAiLCJnaXZlblJvdXRlIiwicGF0aFNob3duIiwicyIsImRlYnVnIiwibG9nIiwicmVxdWlyZUNvbXBvbmVudCIsImN1cnJlbnRQYXJhbXMiLCJjdXJyZW50UGF0aCIsInJvdXRlUGFydHMiLCJzcGxpdCIsIm5ld1JvdXRlUGFydHMiLCJzbGljZSIsImxlbmd0aCIsImNvbmNhdCIsInVzZVN0YXRlcyIsIkNvbXBvbmVudCIsImNvbXBvbmVudE5vdEZvdW5kIiwibWF0Y2hlcyIsImxvYWRNYXRjaGVzIiwiaGFzU3dpdGNoTWF0Y2giLCJsb2FkQ29tcG9uZW50IiwicGF0aElkIiwicCIsInR0IiwicGFyYW1zIiwiY29tcG9uZW50UGF0aFBhcnRzIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhdGhQYXJ0SW5kZXgiLCJwYXRoUGFydCIsInRyYW5zbGF0ZWRQYXRoUGFydCIsIkkxOG4iLCJ0IiwiZGVmYXVsdFZhbHVlIiwicm91dGVQYXJ0IiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwic3RhcnRzV2l0aCIsInBhcmFtTmFtZSIsInB1c2giLCJtYXRjaElkIiwiT2JqZWN0IiwiYXNzaWduIiwic2V0SW5zdGFuY2UiLCJzZXRTdGF0ZSIsInNldFBhdGhNYXRjaGVkIiwiYWN0dWFsQ29tcG9uZW50UGF0aCIsImpvaW4iLCJjb21wb25lbnRJbXBvcnQiLCJyb3V0ZURlZmluaXRpb24iLCJkZWZhdWx0IiwiZXJyb3IiLCJjb25zb2xlIiwiY2FsbGJhY2tBcmdzIiwiYXJncyIsIkFycmF5IiwiaXNBcnJheSIsInJlbmRlciIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIiwidmFsdWUiLCJuYW1lIiwic2luZ2xlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlci9yb3V0ZS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCB7Y3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgU3dpdGNoLCB7Q3VycmVudFN3aXRjaENvbnRleHR9IGZyb20gXCIuL3N3aXRjaFwiXG5cbmNvbnN0IEN1cnJlbnRQYXRoQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoW10pXG5jb25zdCBQYXJhbXNDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7fSlcbmNvbnN0IFJlcXVpcmVDb21wb25lbnRDb250ZXh0ID0gY3JlYXRlQ29udGV4dChudWxsKVxuY29uc3QgUm91dGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dChudWxsKVxuY29uc3QgdXNlUGFyYW1zID0gKCkgPT4gdXNlQ29udGV4dChQYXJhbXNDb250ZXh0KVxuXG5jb25zdCBSb3V0ZSA9IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgUm91dGUgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBleGFjdDogZmFsc2UsXG4gICAgZmFsbGJhY2s6IGZhbHNlLFxuICAgIGluY2x1ZGVJblBhdGg6IHRydWVcbiAgfVxuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAgIGNvbXBvbmVudDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb21wb25lbnRQYXRoOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGV4YWN0OiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGZhbGxiYWNrOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGluY2x1ZGVJblBhdGg6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgb25NYXRjaDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGF0aDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmluc3RhbmNlT2YoUmVnRXhwKV0pXG4gIH0pXG5cbiAgbWF0Y2ggPSBudWxsXG4gIG5ld1BhcmFtcyA9IG51bGxcbiAgcGF0aFBhcnRzID0gbnVsbFxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHtwYXRofSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cGF0aHNNYXRjaGVkLCBzd2l0Y2hHcm91cH0gPSB1c2VDb250ZXh0KEN1cnJlbnRTd2l0Y2hDb250ZXh0KVxuICAgIGNvbnN0IGdpdmVuUm91dGUgPSB1c2VDb250ZXh0KFJvdXRlQ29udGV4dClcbiAgICBjb25zdCB7cGF0aFNob3dufSA9IHN3aXRjaEdyb3VwLnNcblxuICAgIHRoaXMuZGVidWcgPSBmYWxzZVxuICAgIHRoaXMubG9nKCgpID0+ICh7Z2l2ZW5Sb3V0ZX0pKVxuXG4gICAgdGhpcy5yZXF1aXJlQ29tcG9uZW50ID0gdXNlQ29udGV4dChSZXF1aXJlQ29tcG9uZW50Q29udGV4dClcbiAgICB0aGlzLmN1cnJlbnRQYXJhbXMgPSB1c2VDb250ZXh0KFBhcmFtc0NvbnRleHQpXG4gICAgdGhpcy5jdXJyZW50UGF0aCA9IHVzZUNvbnRleHQoQ3VycmVudFBhdGhDb250ZXh0KVxuICAgIHRoaXMuc3dpdGNoR3JvdXAgPSBzd2l0Y2hHcm91cFxuICAgIHRoaXMucm91dGVQYXJ0cyA9IHVzZU1lbW8oKCkgPT4gZ2l2ZW5Sb3V0ZT8uc3BsaXQoXCIvXCIpLCBbcGF0aCwgZ2l2ZW5Sb3V0ZV0pXG4gICAgdGhpcy5wYXRoUGFydHMgPSB1c2VNZW1vKCgpID0+IHBhdGg/LnNwbGl0KFwiL1wiKSwgW3BhdGhdKVxuXG4gICAgdGhpcy5uZXdSb3V0ZVBhcnRzID0gdXNlTWVtbyhcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgICAgaWYgKGdpdmVuUm91dGUgPT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlUGFydHNcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZVBhcnRzLnNsaWNlKHRoaXMucGF0aFBhcnRzLmxlbmd0aCwgdGhpcy5yb3V0ZVBhcnRzLmxlbmd0aClcbiAgICAgIH0sXG4gICAgICBbZ2l2ZW5Sb3V0ZV0uY29uY2F0KHRoaXMucGF0aFBhcnRzKVxuICAgIClcblxuICAgIHRoaXMudXNlU3RhdGVzKHtDb21wb25lbnQ6IG51bGwsIGNvbXBvbmVudE5vdEZvdW5kOiBudWxsLCBtYXRjaGVzOiBmYWxzZX0pXG5cbiAgICB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZE1hdGNoZXMoKVxuICAgIH0sIFtnaXZlblJvdXRlLCBwYXRoLCBwYXRoc01hdGNoZWRdKVxuXG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNTd2l0Y2hNYXRjaCgpICYmICF0aGlzLnMuQ29tcG9uZW50ICYmIHRoaXMucy5tYXRjaGVzKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uTWF0Y2gpIHtcbiAgICAgICAgICB0aGlzLnByb3BzLm9uTWF0Y2goKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLmNoaWxkcmVuICYmICh0aGlzLnByb3BzLnBhdGggfHwgdGhpcy5wcm9wcy5jb21wb25lbnQgfHwgdGhpcy5wcm9wcy5jb21wb25lbnRQYXRoKSkge1xuICAgICAgICAgIHRoaXMubG9hZENvbXBvbmVudCgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbcGF0aCwgcGF0aFNob3duLCB0aGlzLnMubWF0Y2hlc10pXG4gIH1cblxuICBoYXNTd2l0Y2hNYXRjaCA9ICgpID0+IHRoaXMuc3dpdGNoR3JvdXAucy5wYXRoU2hvd24gJiYgdGhpcy5zd2l0Y2hHcm91cC5zLnBhdGhTaG93biA9PSB0aGlzLnBhdGhJZCgpXG5cbiAgcGF0aElkKCkge1xuICAgIGNvbnN0IHtmYWxsYmFja30gPSB0aGlzLnBcbiAgICBjb25zdCB7cGF0aH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IHBhdGhJZFxuXG4gICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICBwYXRoSWQgPSBcIltGQUxMQkFDS11cIlxuICAgIH0gZWxzZSBpZiAoIXBhdGgpIHtcbiAgICAgIHBhdGhJZCA9IFwiW1BBVEgtRU1QVFldXCJcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aElkID0gcGF0aFxuICAgIH1cblxuICAgIHJldHVybiBwYXRoSWRcbiAgfVxuXG4gIGxvYWRNYXRjaGVzKCkge1xuICAgIGNvbnN0IHtuZXdSb3V0ZVBhcnRzfSA9IHRoaXMudHRcbiAgICBjb25zdCB7Y29tcG9uZW50LCBwYXRofSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7ZXhhY3QsIGluY2x1ZGVJblBhdGgsIGZhbGxiYWNrfSA9IHRoaXMucFxuXG4gICAgbGV0IG1hdGNoZXMgPSB0cnVlXG4gICAgY29uc3QgcGFyYW1zID0ge31cbiAgICBjb25zdCBjb21wb25lbnRQYXRoUGFydHMgPSBbLi4udGhpcy5jdXJyZW50UGF0aF1cblxuICAgIHRoaXMubG9nKCgpID0+IFt0aGlzLnByb3BzLnBhdGgsIFwiU3RhcnQgZ2VuZXJhdGluZyBjb21wb25lbnQgcGF0aHNcIiwgSlNPTi5zdHJpbmdpZnkoY29tcG9uZW50UGF0aFBhcnRzKV0pXG5cbiAgICBmb3IgKGNvbnN0IHBhdGhQYXJ0SW5kZXggaW4gdGhpcy5wYXRoUGFydHMpIHtcbiAgICAgIGNvbnN0IHBhdGhQYXJ0ID0gdGhpcy5wYXRoUGFydHNbcGF0aFBhcnRJbmRleF1cbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQYXRoUGFydCA9IEkxOG4udChgcm91dGVzLiR7cGF0aFBhcnR9YCwge2RlZmF1bHRWYWx1ZTogcGF0aFBhcnR9KVxuXG4gICAgICBpZiAoIShwYXRoUGFydEluZGV4IGluIHRoaXMucm91dGVQYXJ0cykpIHtcbiAgICAgICAgdGhpcy5sb2coKCkgPT4gYE5vIG1hdGNoIGZvcjogJHtwYXRoUGFydEluZGV4fWApXG4gICAgICAgIG1hdGNoZXMgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb25zdCByb3V0ZVBhcnQgPSBkZWNvZGVVUklDb21wb25lbnQodGhpcy5yb3V0ZVBhcnRzW3BhdGhQYXJ0SW5kZXhdKVxuXG4gICAgICBpZiAocGF0aFBhcnQuc3RhcnRzV2l0aChcIjpcIikgJiYgcm91dGVQYXJ0KSB7XG4gICAgICAgIGNvbnN0IHBhcmFtTmFtZSA9IHBhdGhQYXJ0LnNsaWNlKDEsIHBhdGhQYXJ0Lmxlbmd0aClcblxuICAgICAgICBwYXJhbXNbcGFyYW1OYW1lXSA9IHJvdXRlUGFydFxuICAgICAgfSBlbHNlIGlmICh0cmFuc2xhdGVkUGF0aFBhcnQgIT0gcm91dGVQYXJ0KSB7XG4gICAgICAgIG1hdGNoZXMgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmICghY29tcG9uZW50ICYmIGluY2x1ZGVJblBhdGgpIHtcbiAgICAgICAgY29tcG9uZW50UGF0aFBhcnRzLnB1c2gocGF0aFBhcnQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4YWN0ICYmIG5ld1JvdXRlUGFydHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sb2coKCkgPT4gW1wiRXhhY3QgYW5kIG1vcmUgcm91dGUgcGFydHNcIiwge25ld1JvdXRlUGFydHMsIHBhdGhQYXJ0czogdGhpcy5wYXRoUGFydHMsIHJvdXRlUGFydHM6IHRoaXMucm91dGVQYXJ0c31dKVxuICAgICAgbWF0Y2hlcyA9IGZhbHNlXG4gICAgfSBlbHNlIGlmIChtYXRjaGVzICYmIHBhdGgpIHtcbiAgICAgIG1hdGNoZXMgPSB0cnVlXG4gICAgfSBlbHNlIGlmICh0aGlzLnJvdXRlUGFydHMubGVuZ3RoID09IDApIHtcbiAgICAgIG1hdGNoZXMgPSB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hJZCA9IHRoaXMucGF0aElkKClcblxuICAgIGlmICghbWF0Y2hlcyAmJiBmYWxsYmFjaykge1xuICAgICAgbWF0Y2hlcyA9IHRydWVcbiAgICB9XG5cbiAgICB0aGlzLmxvZygoKSA9PiBbdGhpcy5wcm9wcy5wYXRoLCBcIkVuZCBnZW5lcmF0aW5nIGNvbXBvbmVudCBwYXRoc1wiLCBKU09OLnN0cmluZ2lmeShjb21wb25lbnRQYXRoUGFydHMpLCB7bWF0Y2hlc31dKVxuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIGlmIChjb21wb25lbnQgJiYgaW5jbHVkZUluUGF0aCkge1xuICAgICAgICBjb21wb25lbnRQYXRoUGFydHMucHVzaChjb21wb25lbnQpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1BhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY3VycmVudFBhcmFtcywgcGFyYW1zKVxuXG4gICAgICB0aGlzLnNldEluc3RhbmNlKHtjb21wb25lbnRQYXRoUGFydHMsIG1hdGNoOiB7cGFyYW1zfSwgbmV3UGFyYW1zfSlcbiAgICAgIHRoaXMuc2V0U3RhdGUoe21hdGNoZXN9KVxuICAgICAgdGhpcy5zd2l0Y2hHcm91cD8uc2V0UGF0aE1hdGNoZWQobWF0Y2hJZCwgdHJ1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRJbnN0YW5jZSh7Y29tcG9uZW50UGF0aFBhcnRzOiBudWxsLCBtYXRjaDogbnVsbCwgbmV3UGFyYW1zOiBudWxsfSlcbiAgICAgIHRoaXMuc2V0U3RhdGUoe21hdGNoZXN9KVxuICAgICAgdGhpcy5zd2l0Y2hHcm91cD8uc2V0UGF0aE1hdGNoZWQobWF0Y2hJZCwgZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZENvbXBvbmVudCgpIHtcbiAgICBjb25zdCBhY3R1YWxDb21wb25lbnRQYXRoID0gdGhpcy5wcm9wcy5jb21wb25lbnRQYXRoIHx8IHRoaXMudHQuY29tcG9uZW50UGF0aFBhcnRzLmpvaW4oXCIvXCIpXG4gICAgbGV0IENvbXBvbmVudFxuXG4gICAgdGhpcy5sb2coKCkgPT4gW1wibG9hZENvbXBvbmVudFwiLCB7Y29tcG9uZW50UGF0aDogdGhpcy5wcm9wcy5jb21wb25lbnRQYXRoLCBjb21wb25lbnRQYXRoUGFydHM6IHRoaXMuY29tcG9uZW50UGF0aFBhcnRzLCBhY3R1YWxDb21wb25lbnRQYXRofV0pXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY29tcG9uZW50SW1wb3J0ID0gYXdhaXQgdGhpcy50dC5yZXF1aXJlQ29tcG9uZW50KHtyb3V0ZURlZmluaXRpb246IHtjb21wb25lbnQ6IGFjdHVhbENvbXBvbmVudFBhdGh9fSlcblxuICAgICAgQ29tcG9uZW50ID0gY29tcG9uZW50SW1wb3J0LmRlZmF1bHRcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihgQ291bGRuJ3QgZmluZCBjb21wb25lbnQ6ICR7YWN0dWFsQ29tcG9uZW50UGF0aH1gKVxuXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe0NvbXBvbmVudCwgY29tcG9uZW50Tm90Rm91bmQ6ICFDb21wb25lbnR9KVxuICB9XG5cbiAgbG9nKGNhbGxiYWNrQXJncykge1xuICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICBsZXQgYXJncyA9IGNhbGxiYWNrQXJncygpXG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcmdzKSkgYXJncyA9IFthcmdzXVxuXG4gICAgICBjb25zb2xlLmxvZyguLi5hcmdzKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y29tcG9uZW50UGF0aFBhcnRzLCBtYXRjaCwgbmV3UGFyYW1zLCBuZXdSb3V0ZVBhcnRzfSA9IHRoaXMudHRcbiAgICBjb25zdCB7Y2hpbGRyZW4sIGNvbXBvbmVudCwgcGF0aH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge0NvbXBvbmVudCwgY29tcG9uZW50Tm90Rm91bmQsIG1hdGNoZXN9ID0gdGhpcy5zXG5cbiAgICBpZiAoIW1hdGNoZXMgfHwgIXRoaXMuaGFzU3dpdGNoTWF0Y2goKSkge1xuICAgICAgLy8gUm91dGUgaXNuJ3QgbWF0Y2hpbmcgYW5kIHNob3VsZG4ndCBiZSByZW5kZXJlZCBhdCBhbGwuXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGlmICghQ29tcG9uZW50ICYmICFjaGlsZHJlbiAmJiAhY29tcG9uZW50Tm90Rm91bmQpIHtcbiAgICAgIC8vIFJvdXRlIGlzIG1hdGNoaW5nIGJ1dCBoYXNuJ3QgYmVlbiBsb2FkZWQgeWV0LlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBMb2FkaW5nIHtjb21wb25lbnQgfHwgdGhpcy5wcm9wcy5jb21wb25lbnRQYXRoIHx8IGNvbXBvbmVudFBhdGhQYXJ0cy5qb2luKFwiL1wiKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKCFDb21wb25lbnQgJiYgIWNoaWxkcmVuICYmIGNvbXBvbmVudE5vdEZvdW5kKSB7XG4gICAgICAvLyBEb24ndCByZW5kZXIgYW55dGhpbmcgaWYgdGhlIGNvbXBvbmVudCBjb3VsZG4ndCBiZSBmb3VuZC5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDdXJyZW50UGF0aENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbXBvbmVudFBhdGhQYXJ0c30+XG4gICAgICAgIDxSb3V0ZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e25ld1JvdXRlUGFydHMuam9pbihcIi9cIil9PlxuICAgICAgICAgIDxQYXJhbXNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtuZXdQYXJhbXN9PlxuICAgICAgICAgICAgPFN3aXRjaCBuYW1lPXtgcm91dGUtZ3JvdXAtJHtwYXRofWB9IHNpbmdsZT17ZmFsc2V9PlxuICAgICAgICAgICAgICB7Q29tcG9uZW50ICYmIDxDb21wb25lbnQgbWF0Y2g9e21hdGNofSAvPn1cbiAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPC9Td2l0Y2g+XG4gICAgICAgICAgPC9QYXJhbXNDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICA8L1JvdXRlQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvQ3VycmVudFBhdGhDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfVxufSkpXG5cbmV4cG9ydCB7UmVxdWlyZUNvbXBvbmVudENvbnRleHQsIFJvdXRlQ29udGV4dCwgU3dpdGNoLCB1c2VQYXJhbXN9XG5leHBvcnQgZGVmYXVsdCBSb3V0ZVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxhQUFhLE1BQU0sbUJBQW1CO0FBQzdDLFNB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
@@ -0,0 +1,72 @@
1
+ import BaseComponent from "../base-component";
2
+ import { createContext } from "react";
3
+ import memo from "set-state-compare/src/memo";
4
+ import PropTypes from "prop-types";
5
+ import propTypesExact from "prop-types-exact";
6
+ import { shapeComponent } from "set-state-compare/src/shape-component";
7
+ const CurrentSwitchContext = /*#__PURE__*/createContext([]);
8
+ const Switch = memo(shapeComponent(class Switch extends BaseComponent {
9
+ static defaultProps = {
10
+ name: "[no name]",
11
+ single: true
12
+ };
13
+ static propTypes = propTypesExact({
14
+ children: PropTypes.node,
15
+ name: PropTypes.string,
16
+ single: PropTypes.bool
17
+ });
18
+ pathsMatchedKeys = [];
19
+ setup() {
20
+ this.useStates({
21
+ lastUpdate: new Date(),
22
+ pathShown: undefined,
23
+ pathsMatched: {}
24
+ });
25
+ }
26
+ render() {
27
+ const {
28
+ pathShown,
29
+ pathsMatched
30
+ } = this.s;
31
+ return /*#__PURE__*/React.createElement(CurrentSwitchContext.Provider, {
32
+ value: {
33
+ pathShown,
34
+ pathsMatched,
35
+ switchGroup: this
36
+ }
37
+ }, this.props.children);
38
+ }
39
+ pathShown(pathsMatched) {
40
+ for (const pathMatched of this.tt.pathsMatchedKeys) {
41
+ const isPathMatched = pathsMatched[pathMatched];
42
+ if (isPathMatched) {
43
+ return pathMatched;
44
+ }
45
+ }
46
+ }
47
+ setPathMatched(path, matched) {
48
+ const {
49
+ pathsMatchedKeys
50
+ } = this.tt;
51
+ const {
52
+ pathsMatched
53
+ } = this.s;
54
+ if (!path) throw new Error("No 'path' given");
55
+ if (pathsMatched[path] == matched) return;
56
+ if (!pathsMatchedKeys.includes(path)) {
57
+ pathsMatchedKeys.push(path);
58
+ }
59
+ const newPathsMatched = {
60
+ ...this.s.pathsMatched
61
+ };
62
+ newPathsMatched[path] = matched;
63
+ this.setState({
64
+ lastUpdate: Math.random() + new Date().getTime(),
65
+ pathShown: this.pathShown(newPathsMatched),
66
+ pathsMatched: newPathsMatched
67
+ });
68
+ }
69
+ }));
70
+ export { CurrentSwitchContext };
71
+ export default Switch;
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiY3JlYXRlQ29udGV4dCIsIm1lbW8iLCJQcm9wVHlwZXMiLCJwcm9wVHlwZXNFeGFjdCIsInNoYXBlQ29tcG9uZW50IiwiQ3VycmVudFN3aXRjaENvbnRleHQiLCJTd2l0Y2giLCJkZWZhdWx0UHJvcHMiLCJuYW1lIiwic2luZ2xlIiwicHJvcFR5cGVzIiwiY2hpbGRyZW4iLCJub2RlIiwic3RyaW5nIiwiYm9vbCIsInBhdGhzTWF0Y2hlZEtleXMiLCJzZXR1cCIsInVzZVN0YXRlcyIsImxhc3RVcGRhdGUiLCJEYXRlIiwicGF0aFNob3duIiwidW5kZWZpbmVkIiwicGF0aHNNYXRjaGVkIiwicmVuZGVyIiwicyIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIiwidmFsdWUiLCJzd2l0Y2hHcm91cCIsInByb3BzIiwicGF0aE1hdGNoZWQiLCJ0dCIsImlzUGF0aE1hdGNoZWQiLCJzZXRQYXRoTWF0Y2hlZCIsInBhdGgiLCJtYXRjaGVkIiwiRXJyb3IiLCJpbmNsdWRlcyIsInB1c2giLCJuZXdQYXRoc01hdGNoZWQiLCJzZXRTdGF0ZSIsIk1hdGgiLCJyYW5kb20iLCJnZXRUaW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlci9zd2l0Y2guanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuLi9iYXNlLWNvbXBvbmVudFwiXG5pbXBvcnQge2NyZWF0ZUNvbnRleHR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9zaGFwZS1jb21wb25lbnRcIlxuXG5jb25zdCBDdXJyZW50U3dpdGNoQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoW10pXG5cbmNvbnN0IFN3aXRjaCA9IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgU3dpdGNoIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgbmFtZTogXCJbbm8gbmFtZV1cIixcbiAgICBzaW5nbGU6IHRydWVcbiAgfVxuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2luZ2xlOiBQcm9wVHlwZXMuYm9vbFxuICB9KVxuXG4gIHBhdGhzTWF0Y2hlZEtleXMgPSBbXVxuXG4gIHNldHVwKCkge1xuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIGxhc3RVcGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICBwYXRoU2hvd246IHVuZGVmaW5lZCxcbiAgICAgIHBhdGhzTWF0Y2hlZDoge31cbiAgICB9KVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtwYXRoU2hvd24sIHBhdGhzTWF0Y2hlZH0gPSB0aGlzLnNcblxuICAgIHJldHVybiAoXG4gICAgICA8Q3VycmVudFN3aXRjaENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3twYXRoU2hvd24sIHBhdGhzTWF0Y2hlZCwgc3dpdGNoR3JvdXA6IHRoaXN9fT5cbiAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICA8L0N1cnJlbnRTd2l0Y2hDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfVxuXG4gIHBhdGhTaG93bihwYXRoc01hdGNoZWQpIHtcbiAgICBmb3IgKGNvbnN0IHBhdGhNYXRjaGVkIG9mIHRoaXMudHQucGF0aHNNYXRjaGVkS2V5cykge1xuICAgICAgY29uc3QgaXNQYXRoTWF0Y2hlZCA9IHBhdGhzTWF0Y2hlZFtwYXRoTWF0Y2hlZF1cblxuICAgICAgaWYgKGlzUGF0aE1hdGNoZWQpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhNYXRjaGVkXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0UGF0aE1hdGNoZWQocGF0aCwgbWF0Y2hlZCkge1xuICAgIGNvbnN0IHtwYXRoc01hdGNoZWRLZXlzfSA9IHRoaXMudHRcbiAgICBjb25zdCB7cGF0aHNNYXRjaGVkfSA9IHRoaXMuc1xuXG4gICAgaWYgKCFwYXRoKSB0aHJvdyBuZXcgRXJyb3IoXCJObyAncGF0aCcgZ2l2ZW5cIilcbiAgICBpZiAocGF0aHNNYXRjaGVkW3BhdGhdID09IG1hdGNoZWQpIHJldHVyblxuXG4gICAgaWYgKCFwYXRoc01hdGNoZWRLZXlzLmluY2x1ZGVzKHBhdGgpKSB7XG4gICAgICBwYXRoc01hdGNoZWRLZXlzLnB1c2gocGF0aClcbiAgICB9XG5cbiAgICBjb25zdCBuZXdQYXRoc01hdGNoZWQgPSB7Li4udGhpcy5zLnBhdGhzTWF0Y2hlZH1cblxuICAgIG5ld1BhdGhzTWF0Y2hlZFtwYXRoXSA9IG1hdGNoZWRcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbGFzdFVwZGF0ZTogTWF0aC5yYW5kb20oKSArIG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxuICAgICAgcGF0aFNob3duOiB0aGlzLnBhdGhTaG93bihuZXdQYXRoc01hdGNoZWQpLFxuICAgICAgcGF0aHNNYXRjaGVkOiBuZXdQYXRoc01hdGNoZWRcbiAgICB9KVxuICB9XG59KSlcblxuZXhwb3J0IHtDdXJyZW50U3dpdGNoQ29udGV4dH1cbmV4cG9ydCBkZWZhdWx0IFN3aXRjaFxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxhQUFhLE1BQU0sbUJBQW1CO0FBQzdDLFNBQVFDLGFBQWEsUUFBTyxPQUFPO0FBQ25DLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsT0FBT0MsU0FBUyxNQUFNLFlBQVk7QUFDbEMsT0FBT0MsY0FBYyxNQUFNLGtCQUFrQjtBQUM3QyxTQUFRQyxjQUFjLFFBQU8sdUNBQXVDO0FB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
@@ -0,0 +1,57 @@
1
+ import BaseComponent from "./base-component";
2
+ import PropTypes from "prop-types";
3
+ import propTypesExact from "prop-types-exact";
4
+ import React, { memo } from "react";
5
+ import { shapeComponent } from "set-state-compare/src/shape-component";
6
+ import { Suspense } from "react";
7
+ import useRouter from "./use-router";
8
+ export default /*#__PURE__*/memo(shapeComponent(class ApiMakerRouter extends BaseComponent {
9
+ static propTypes = propTypesExact({
10
+ history: PropTypes.object,
11
+ notFoundComponent: PropTypes.elementType,
12
+ path: PropTypes.string,
13
+ requireComponent: PropTypes.func.isRequired,
14
+ routeDefinitions: PropTypes.object,
15
+ routes: PropTypes.object
16
+ });
17
+ render() {
18
+ const {
19
+ notFoundComponent,
20
+ path,
21
+ requireComponent,
22
+ routeDefinitions,
23
+ routes
24
+ } = this.props;
25
+ const {
26
+ match
27
+ } = useRouter({
28
+ path,
29
+ routes,
30
+ routeDefinitions
31
+ });
32
+ const {
33
+ matchingRoute
34
+ } = match;
35
+ if (!matchingRoute) {
36
+ if (notFoundComponent) {
37
+ const NotFoundComponent = notFoundComponent;
38
+ return /*#__PURE__*/React.createElement(Suspense, {
39
+ fallback: /*#__PURE__*/React.createElement("div", null)
40
+ }, /*#__PURE__*/React.createElement(NotFoundComponent, {
41
+ match: match
42
+ }));
43
+ } else {
44
+ return null;
45
+ }
46
+ }
47
+ const Component = requireComponent({
48
+ routeDefinition: matchingRoute.parsedRouteDefinition.routeDefinition
49
+ });
50
+ return /*#__PURE__*/React.createElement(Suspense, {
51
+ fallback: /*#__PURE__*/React.createElement("div", null)
52
+ }, /*#__PURE__*/React.createElement(Component, {
53
+ match: match
54
+ }));
55
+ }
56
+ }));
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwicHJvcFR5cGVzRXhhY3QiLCJSZWFjdCIsIm1lbW8iLCJzaGFwZUNvbXBvbmVudCIsIlN1c3BlbnNlIiwidXNlUm91dGVyIiwiQXBpTWFrZXJSb3V0ZXIiLCJwcm9wVHlwZXMiLCJoaXN0b3J5Iiwib2JqZWN0Iiwibm90Rm91bmRDb21wb25lbnQiLCJlbGVtZW50VHlwZSIsInBhdGgiLCJzdHJpbmciLCJyZXF1aXJlQ29tcG9uZW50IiwiZnVuYyIsImlzUmVxdWlyZWQiLCJyb3V0ZURlZmluaXRpb25zIiwicm91dGVzIiwicmVuZGVyIiwicHJvcHMiLCJtYXRjaCIsIm1hdGNoaW5nUm91dGUiLCJOb3RGb3VuZENvbXBvbmVudCIsImNyZWF0ZUVsZW1lbnQiLCJmYWxsYmFjayIsIkNvbXBvbmVudCIsInJvdXRlRGVmaW5pdGlvbiIsInBhcnNlZFJvdXRlRGVmaW5pdGlvbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9yb3V0ZXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCBSZWFjdCwge21lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQge1N1c3BlbnNlfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHVzZVJvdXRlciBmcm9tIFwiLi91c2Utcm91dGVyXCJcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclJvdXRlciBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGhpc3Rvcnk6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbm90Rm91bmRDb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICBwYXRoOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHJlcXVpcmVDb21wb25lbnQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgcm91dGVEZWZpbml0aW9uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICByb3V0ZXM6IFByb3BUeXBlcy5vYmplY3RcbiAgfSlcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge25vdEZvdW5kQ29tcG9uZW50LCBwYXRoLCByZXF1aXJlQ29tcG9uZW50LCByb3V0ZURlZmluaXRpb25zLCByb3V0ZXN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHttYXRjaH0gPSB1c2VSb3V0ZXIoe3BhdGgsIHJvdXRlcywgcm91dGVEZWZpbml0aW9uc30pXG4gICAgY29uc3Qge21hdGNoaW5nUm91dGV9ID0gbWF0Y2hcblxuICAgIGlmICghbWF0Y2hpbmdSb3V0ZSkge1xuICAgICAgaWYgKG5vdEZvdW5kQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IE5vdEZvdW5kQ29tcG9uZW50ID0gbm90Rm91bmRDb21wb25lbnRcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxTdXNwZW5zZSBmYWxsYmFjaz17PGRpdiAvPn0+XG4gICAgICAgICAgICA8Tm90Rm91bmRDb21wb25lbnQgbWF0Y2g9e21hdGNofSAvPlxuICAgICAgICAgIDwvU3VzcGVuc2U+XG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgQ29tcG9uZW50ID0gcmVxdWlyZUNvbXBvbmVudCh7cm91dGVEZWZpbml0aW9uOiBtYXRjaGluZ1JvdXRlLnBhcnNlZFJvdXRlRGVmaW5pdGlvbi5yb3V0ZURlZmluaXRpb259KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdXNwZW5zZSBmYWxsYmFjaz17PGRpdiAvPn0+XG4gICAgICAgIDxDb21wb25lbnQgbWF0Y2g9e21hdGNofSAvPlxuICAgICAgPC9TdXNwZW5zZT5cbiAgICApXG4gIH1cbn0pKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxhQUFhLE1BQU0sa0JBQWtCO0FBQzVDLE9BQU9DLFNBQVMsTUFBTSxZQUFZO0FBQ2xDLE9BQU9DLGNBQWMsTUFBTSxrQkFBa0I7QUFDN0MsT0FBT0MsS0FBSyxJQUFHQyxJQUFJLFFBQU8sT0FBTztBQUNqQyxTQUFRQyxjQUFjLFFBQU8sdUNBQXVDO0FBQ3BFLFNBQVFDLFFBQVEsUUFBTyxPQUFPO0FBQzlCLE9BQU9DLFNBQVMsTUFBTSxjQUFjO0FBRXBDLDRCQUFlSCxJQUFJLENBQUNDLGNBQWMsQ0FBQyxNQUFNRyxjQUFjLFNBQVNSLGFBQWEsQ0FBQztFQUM1RSxPQUFPUyxTQUFTLEdBQUdQLGNBQWMsQ0FBQztJQUNoQ1EsT0FBTyxFQUFFVCxTQUFTLENBQUNVLE1BQU07SUFDekJDLGlCQUFpQixFQUFFWCxTQUFTLENBQUNZLFdBQVc7SUFDeENDLElBQUksRUFBRWIsU0FBUyxDQUFDYyxNQUFNO0lBQ3RCQyxnQkFBZ0IsRUFBRWYsU0FBUyxDQUFDZ0IsSUFBSSxDQUFDQyxVQUFVO0lBQzNDQyxnQkFBZ0IsRUFBRWxCLFNBQVMsQ0FBQ1UsTUFBTTtJQUNsQ1MsTUFBTSxFQUFFbkIsU0FBUyxDQUFDVTtFQUNwQixDQUFDLENBQUM7RUFFRlUsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTTtNQUFDVCxpQkFBaUI7TUFBRUUsSUFBSTtNQUFFRSxnQkFBZ0I7TUFBRUcsZ0JBQWdCO01BQUVDO0lBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQ0UsS0FBSztJQUN4RixNQUFNO01BQUNDO0lBQUssQ0FBQyxHQUFHaEIsU0FBUyxDQUFDO01BQUNPLElBQUk7TUFBRU0sTUFBTTtNQUFFRDtJQUFnQixDQUFDLENBQUM7SUFDM0QsTUFBTTtNQUFDSztJQUFhLENBQUMsR0FBR0QsS0FBSztJQUU3QixJQUFJLENBQUNDLGFBQWEsRUFBRTtNQUNsQixJQUFJWixpQkFBaUIsRUFBRTtRQUNyQixNQUFNYSxpQkFBaUIsR0FBR2IsaUJBQWlCO1FBRTNDLG9CQUNFVCxLQUFBLENBQUF1QixhQUFBLENBQUNwQixRQUFRO1VBQUNxQixRQUFRLGVBQUV4QixLQUFBLENBQUF1QixhQUFBLFlBQU07UUFBRSxnQkFDMUJ2QixLQUFBLENBQUF1QixhQUFBLENBQUNELGlCQUFpQjtVQUFDRixLQUFLLEVBQUVBO1FBQU0sQ0FBRSxDQUMxQixDQUFDO01BRWYsQ0FBQyxNQUFNO1FBQ0wsT0FBTyxJQUFJO01BQ2I7SUFDRjtJQUVBLE1BQU1LLFNBQVMsR0FBR1osZ0JBQWdCLENBQUM7TUFBQ2EsZUFBZSxFQUFFTCxhQUFhLENBQUNNLHFCQUFxQixDQUFDRDtJQUFlLENBQUMsQ0FBQztJQUUxRyxvQkFDRTFCLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQ3BCLFFBQVE7TUFBQ3FCLFFBQVEsZUFBRXhCLEtBQUEsQ0FBQXVCLGFBQUEsWUFBTTtJQUFFLGdCQUMxQnZCLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQ0UsU0FBUztNQUFDTCxLQUFLLEVBQUVBO0lBQU0sQ0FBRSxDQUNsQixDQUFDO0VBRWY7QUFDRixDQUFDLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==