@kaspernj/api-maker 1.0.2054 → 1.0.2056

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 (386) hide show
  1. package/build/api.js +65 -213
  2. package/build/attribute-not-loaded-error.js +3 -26
  3. package/build/base-component.js +4 -27
  4. package/build/base-error.js +21 -46
  5. package/build/base-model/attribute.js +15 -22
  6. package/build/base-model/column.js +5 -9
  7. package/build/base-model/reflection.js +12 -52
  8. package/build/base-model/scope.js +9 -46
  9. package/build/base-model.js +584 -837
  10. package/build/bootstrap/attribute-row.js +88 -173
  11. package/build/bootstrap/attribute-rows.js +22 -51
  12. package/build/bootstrap/card.js +77 -160
  13. package/build/bootstrap/checkbox.js +54 -103
  14. package/build/bootstrap/checkboxes.js +117 -203
  15. package/build/bootstrap/index.js +1 -1
  16. package/build/bootstrap/input.js +81 -132
  17. package/build/bootstrap/invalid-feedback.js +19 -47
  18. package/build/bootstrap/paginate.js +100 -165
  19. package/build/bootstrap/radio-buttons.js +44 -81
  20. package/build/bootstrap/select.js +44 -91
  21. package/build/bootstrap/sort-link.js +69 -152
  22. package/build/cable-connection-pool.js +44 -66
  23. package/build/cable-subscription-pool.js +105 -162
  24. package/build/cable-subscription.js +10 -17
  25. package/build/cache-key-generator.js +28 -37
  26. package/build/can-can.js +81 -202
  27. package/build/channels-consumer.js +6 -11
  28. package/build/collection-loader.js +36 -54
  29. package/build/collection.d.ts.map +1 -1
  30. package/build/collection.js +160 -308
  31. package/build/command-submit-data.d.ts +1 -1
  32. package/build/command-submit-data.d.ts.map +1 -1
  33. package/build/command-submit-data.js +30 -39
  34. package/build/commands-pool.js +140 -216
  35. package/build/compose.js +4 -12
  36. package/build/config.js +21 -68
  37. package/build/custom-error.js +5 -30
  38. package/build/data-set-to-attributes.js +6 -42
  39. package/build/deserializer.js +27 -80
  40. package/build/destroy-error.js +5 -30
  41. package/build/devise.js +84 -188
  42. package/build/draggable-sort/controller.js +88 -111
  43. package/build/draggable-sort/index.js +68 -145
  44. package/build/draggable-sort/item.js +132 -198
  45. package/build/error-logger.js +79 -164
  46. package/build/error-messages.js +5 -8
  47. package/build/event-connection.js +24 -62
  48. package/build/event-emitter-listener.js +7 -24
  49. package/build/event-model-class.js +20 -47
  50. package/build/events.js +4 -9
  51. package/build/form.js +66 -154
  52. package/build/history-expo.js +13 -25
  53. package/build/history-react-native.js +15 -27
  54. package/build/history.js +3 -5
  55. package/build/index.js +3 -6
  56. package/build/inputs/attachment.js +72 -123
  57. package/build/inputs/auto-submit.js +16 -55
  58. package/build/inputs/checkbox.js +78 -167
  59. package/build/inputs/checkboxes.js +76 -159
  60. package/build/inputs/id-for-component.js +5 -41
  61. package/build/inputs/input-wrapper.js +8 -27
  62. package/build/inputs/input.js +159 -245
  63. package/build/inputs/money.js +124 -186
  64. package/build/inputs/name-for-component.js +5 -41
  65. package/build/inputs/select.js +69 -123
  66. package/build/instance-of-class-name.js +16 -21
  67. package/build/is-expo.js +9 -11
  68. package/build/key-value-store.js +52 -128
  69. package/build/link.js +52 -115
  70. package/build/logger.js +20 -26
  71. package/build/merge-styles.js +6 -10
  72. package/build/modal.js +15 -62
  73. package/build/model-class-require.js +9 -44
  74. package/build/model-events.js +25 -34
  75. package/build/model-name.js +16 -57
  76. package/build/model-prop-type.js +52 -63
  77. package/build/model-recipes-loader.js +17 -25
  78. package/build/model-recipes-model-loader.d.ts +1 -1
  79. package/build/model-recipes-model-loader.js +130 -208
  80. package/build/models-response-reader.js +25 -66
  81. package/build/models.js +6 -11
  82. package/build/money-formatter.d.ts +2 -2
  83. package/build/money-formatter.d.ts.map +1 -1
  84. package/build/money-formatter.js +46 -56
  85. package/build/not-loaded-error.js +3 -26
  86. package/build/params.js +32 -42
  87. package/build/preloaded.js +19 -59
  88. package/build/resize-observer.js +6 -12
  89. package/build/rest-props-validator.js +5 -7
  90. package/build/result.js +11 -15
  91. package/build/router/route.js +179 -312
  92. package/build/router/switch.js +56 -130
  93. package/build/router.js +34 -94
  94. package/build/routes-native.js +64 -148
  95. package/build/routes.js +26 -80
  96. package/build/run-last.js +20 -25
  97. package/build/serializer.js +29 -34
  98. package/build/services.js +10 -19
  99. package/build/session-status-updater.js +85 -184
  100. package/build/source-maps-loader.d.ts +37 -0
  101. package/build/source-maps-loader.d.ts.map +1 -0
  102. package/build/source-maps-loader.js +103 -225
  103. package/build/super-admin/config-reader.d.ts +2 -2
  104. package/build/super-admin/config-reader.js +42 -83
  105. package/build/super-admin/edit-page/edit-attribute-checkbox.js +53 -115
  106. package/build/super-admin/edit-page/edit-attribute-content.js +47 -77
  107. package/build/super-admin/edit-page/edit-attribute-input.js +57 -119
  108. package/build/super-admin/edit-page/edit-attribute.js +40 -104
  109. package/build/super-admin/edit-page.js +88 -201
  110. package/build/super-admin/has-edit-config.js +7 -13
  111. package/build/super-admin/index-page.js +17 -44
  112. package/build/super-admin/index.js +87 -210
  113. package/build/super-admin/layout/header/index.js +91 -152
  114. package/build/super-admin/layout/index.js +70 -153
  115. package/build/super-admin/layout/menu/index.js +85 -161
  116. package/build/super-admin/layout/menu/menu-content.js +25 -85
  117. package/build/super-admin/layout/menu/menu-item.js +52 -102
  118. package/build/super-admin/layout/no-access.js +19 -45
  119. package/build/super-admin/model-class-table.js +45 -129
  120. package/build/super-admin/models.js +6 -42
  121. package/build/super-admin/show-nav.js +27 -89
  122. package/build/super-admin/show-page/belongs-to-attribute-row.js +18 -76
  123. package/build/super-admin/show-page/index.js +101 -187
  124. package/build/super-admin/show-reflection-actions.js +39 -100
  125. package/build/super-admin/show-reflection-link.js +27 -99
  126. package/build/super-admin/show-reflection-page.js +34 -97
  127. package/build/table/column-content.js +77 -121
  128. package/build/table/column-identifier.js +7 -11
  129. package/build/table/column-visible.js +2 -5
  130. package/build/table/components/column.js +13 -60
  131. package/build/table/components/flat-list.js +13 -60
  132. package/build/table/components/header.js +15 -62
  133. package/build/table/components/row.js +16 -63
  134. package/build/table/filters/attribute-element.js +34 -62
  135. package/build/table/filters/filter-form.js +280 -483
  136. package/build/table/filters/filter.js +45 -73
  137. package/build/table/filters/index.js +95 -139
  138. package/build/table/filters/load-search-modal.js +64 -212
  139. package/build/table/filters/reflection-element.js +27 -55
  140. package/build/table/filters/save-search-modal.js +44 -140
  141. package/build/table/filters/scope-element.js +28 -56
  142. package/build/table/header-column-content.js +33 -71
  143. package/build/table/header-column.js +89 -218
  144. package/build/table/header-select.js +45 -77
  145. package/build/table/model-callback-args.js +5 -41
  146. package/build/table/model-column.js +59 -144
  147. package/build/table/model-row.js +75 -187
  148. package/build/table/select-calculator.js +27 -86
  149. package/build/table/settings/column-row.js +66 -186
  150. package/build/table/settings/download-action.js +38 -74
  151. package/build/table/settings/index.js +38 -102
  152. package/build/table/table-settings.js +185 -323
  153. package/build/table/table.js +583 -781
  154. package/build/table/use-sorting.js +16 -35
  155. package/build/table/widths.js +32 -38
  156. package/build/table/worker-plugins-check-all-checkbox.js +77 -225
  157. package/build/table/worker-plugins-checkbox.js +74 -185
  158. package/build/translated-attributes.js +6 -11
  159. package/build/translated-collections.js +11 -20
  160. package/build/updated-attribute.js +47 -120
  161. package/build/url-encode.js +6 -12
  162. package/build/use-breakpoint.js +43 -95
  163. package/build/use-can-can.js +30 -92
  164. package/build/use-collection.js +119 -229
  165. package/build/use-created-event.js +27 -44
  166. package/build/use-current-user-context.js +57 -151
  167. package/build/use-current-user.js +14 -32
  168. package/build/use-destroyed-event.js +22 -43
  169. package/build/use-event-emitter.d.ts +1 -2
  170. package/build/use-event-emitter.d.ts.map +1 -1
  171. package/build/use-event-emitter.js +10 -16
  172. package/build/use-event-listener.js +13 -22
  173. package/build/use-input.js +49 -69
  174. package/build/use-model-event.js +22 -43
  175. package/build/use-model.js +96 -199
  176. package/build/use-resize-observer.js +11 -21
  177. package/build/use-router.js +65 -107
  178. package/build/use-screen-layout.js +17 -19
  179. package/build/use-styles.js +24 -75
  180. package/build/use-updated-event.js +22 -44
  181. package/build/use-validation-errors.js +12 -18
  182. package/build/utils/button.js +86 -136
  183. package/build/utils/card.js +31 -106
  184. package/build/utils/checkbox.js +51 -112
  185. package/build/utils/checkboxes.js +109 -182
  186. package/build/utils/default-style.js +29 -103
  187. package/build/utils/header.js +8 -35
  188. package/build/utils/icon.js +36 -117
  189. package/build/utils/invalid-feedback.js +16 -43
  190. package/build/utils/modal.js +25 -108
  191. package/build/utils/text.js +10 -37
  192. package/build/validation-error.js +31 -89
  193. package/build/validation-errors.js +61 -111
  194. package/build/with-api-maker.js +15 -67
  195. package/build/with-collection.js +14 -64
  196. package/build/with-current-user.js +7 -23
  197. package/build/with-model.js +11 -27
  198. package/build/with-router.js +8 -35
  199. package/package.json +4 -3
  200. package/build/api.js.map +0 -1
  201. package/build/attribute-not-loaded-error.js.map +0 -1
  202. package/build/base-component.js.map +0 -1
  203. package/build/base-error.js.map +0 -1
  204. package/build/base-model/attribute.js.map +0 -1
  205. package/build/base-model/column.js.map +0 -1
  206. package/build/base-model/reflection.js.map +0 -1
  207. package/build/base-model/scope.js.map +0 -1
  208. package/build/base-model.js.map +0 -1
  209. package/build/bootstrap/attribute-row.js.map +0 -1
  210. package/build/bootstrap/attribute-rows.js.map +0 -1
  211. package/build/bootstrap/card.js.map +0 -1
  212. package/build/bootstrap/checkbox.js.map +0 -1
  213. package/build/bootstrap/checkboxes.js.map +0 -1
  214. package/build/bootstrap/index.js.map +0 -1
  215. package/build/bootstrap/input.js.map +0 -1
  216. package/build/bootstrap/invalid-feedback.js.map +0 -1
  217. package/build/bootstrap/paginate.js.map +0 -1
  218. package/build/bootstrap/radio-buttons.js.map +0 -1
  219. package/build/bootstrap/select.js.map +0 -1
  220. package/build/bootstrap/sort-link.js.map +0 -1
  221. package/build/cable-connection-pool.js.map +0 -1
  222. package/build/cable-subscription-pool.js.map +0 -1
  223. package/build/cable-subscription.js.map +0 -1
  224. package/build/cache-key-generator.js.map +0 -1
  225. package/build/can-can.js.map +0 -1
  226. package/build/channels-consumer.js.map +0 -1
  227. package/build/collection-loader.js.map +0 -1
  228. package/build/collection.js.map +0 -1
  229. package/build/command-submit-data.js.map +0 -1
  230. package/build/commands-pool.js.map +0 -1
  231. package/build/compose.js.map +0 -1
  232. package/build/config.js.map +0 -1
  233. package/build/custom-error.js.map +0 -1
  234. package/build/data-set-to-attributes.js.map +0 -1
  235. package/build/deserializer.js.map +0 -1
  236. package/build/destroy-error.js.map +0 -1
  237. package/build/devise.js.map +0 -1
  238. package/build/draggable-sort/controller.js.map +0 -1
  239. package/build/draggable-sort/index.js.map +0 -1
  240. package/build/draggable-sort/item.js.map +0 -1
  241. package/build/error-logger.js.map +0 -1
  242. package/build/error-messages.js.map +0 -1
  243. package/build/event-connection.js.map +0 -1
  244. package/build/event-emitter-listener.js.map +0 -1
  245. package/build/event-model-class.js.map +0 -1
  246. package/build/events.js.map +0 -1
  247. package/build/form.js.map +0 -1
  248. package/build/history-expo.js.map +0 -1
  249. package/build/history-react-native.js.map +0 -1
  250. package/build/history.js.map +0 -1
  251. package/build/index.js.map +0 -1
  252. package/build/inputs/attachment.js.map +0 -1
  253. package/build/inputs/auto-submit.js.map +0 -1
  254. package/build/inputs/checkbox.js.map +0 -1
  255. package/build/inputs/checkboxes.js.map +0 -1
  256. package/build/inputs/id-for-component.js.map +0 -1
  257. package/build/inputs/input-wrapper.js.map +0 -1
  258. package/build/inputs/input.js.map +0 -1
  259. package/build/inputs/money.js.map +0 -1
  260. package/build/inputs/name-for-component.js.map +0 -1
  261. package/build/inputs/select.js.map +0 -1
  262. package/build/instance-of-class-name.js.map +0 -1
  263. package/build/is-expo.js.map +0 -1
  264. package/build/key-value-store.js.map +0 -1
  265. package/build/link.js.map +0 -1
  266. package/build/logger.js.map +0 -1
  267. package/build/merge-styles.js.map +0 -1
  268. package/build/modal.js.map +0 -1
  269. package/build/model-class-require.js.map +0 -1
  270. package/build/model-events.js.map +0 -1
  271. package/build/model-name.js.map +0 -1
  272. package/build/model-prop-type.js.map +0 -1
  273. package/build/model-recipes-loader.js.map +0 -1
  274. package/build/model-recipes-model-loader.js.map +0 -1
  275. package/build/models-response-reader.js.map +0 -1
  276. package/build/models.js.map +0 -1
  277. package/build/money-formatter.js.map +0 -1
  278. package/build/not-loaded-error.js.map +0 -1
  279. package/build/params.js.map +0 -1
  280. package/build/preloaded.js.map +0 -1
  281. package/build/resize-observer.js.map +0 -1
  282. package/build/rest-props-validator.js.map +0 -1
  283. package/build/result.js.map +0 -1
  284. package/build/router/route.js.map +0 -1
  285. package/build/router/switch.js.map +0 -1
  286. package/build/router.js.map +0 -1
  287. package/build/routes-native.js.map +0 -1
  288. package/build/routes.js.map +0 -1
  289. package/build/run-last.js.map +0 -1
  290. package/build/serializer.js.map +0 -1
  291. package/build/services.js.map +0 -1
  292. package/build/session-status-updater.js.map +0 -1
  293. package/build/source-maps-loader.js.map +0 -1
  294. package/build/super-admin/config-reader.js.map +0 -1
  295. package/build/super-admin/edit-page/edit-attribute-checkbox.js.map +0 -1
  296. package/build/super-admin/edit-page/edit-attribute-content.js.map +0 -1
  297. package/build/super-admin/edit-page/edit-attribute-input.js.map +0 -1
  298. package/build/super-admin/edit-page/edit-attribute.js.map +0 -1
  299. package/build/super-admin/edit-page.js.map +0 -1
  300. package/build/super-admin/has-edit-config.js.map +0 -1
  301. package/build/super-admin/index-page.js.map +0 -1
  302. package/build/super-admin/index.js.map +0 -1
  303. package/build/super-admin/layout/header/index.js.map +0 -1
  304. package/build/super-admin/layout/index.js.map +0 -1
  305. package/build/super-admin/layout/menu/index.js.map +0 -1
  306. package/build/super-admin/layout/menu/menu-content.js.map +0 -1
  307. package/build/super-admin/layout/menu/menu-item.js.map +0 -1
  308. package/build/super-admin/layout/no-access.js.map +0 -1
  309. package/build/super-admin/model-class-table.js.map +0 -1
  310. package/build/super-admin/models.js.map +0 -1
  311. package/build/super-admin/show-nav.js.map +0 -1
  312. package/build/super-admin/show-page/belongs-to-attribute-row.js.map +0 -1
  313. package/build/super-admin/show-page/index.js.map +0 -1
  314. package/build/super-admin/show-reflection-actions.js.map +0 -1
  315. package/build/super-admin/show-reflection-link.js.map +0 -1
  316. package/build/super-admin/show-reflection-page.js.map +0 -1
  317. package/build/table/column-content.js.map +0 -1
  318. package/build/table/column-identifier.js.map +0 -1
  319. package/build/table/column-visible.js.map +0 -1
  320. package/build/table/components/column.js.map +0 -1
  321. package/build/table/components/flat-list.js.map +0 -1
  322. package/build/table/components/header.js.map +0 -1
  323. package/build/table/components/row.js.map +0 -1
  324. package/build/table/filters/attribute-element.js.map +0 -1
  325. package/build/table/filters/filter-form.js.map +0 -1
  326. package/build/table/filters/filter.js.map +0 -1
  327. package/build/table/filters/index.js.map +0 -1
  328. package/build/table/filters/load-search-modal.js.map +0 -1
  329. package/build/table/filters/reflection-element.js.map +0 -1
  330. package/build/table/filters/save-search-modal.js.map +0 -1
  331. package/build/table/filters/scope-element.js.map +0 -1
  332. package/build/table/header-column-content.js.map +0 -1
  333. package/build/table/header-column.js.map +0 -1
  334. package/build/table/header-select.js.map +0 -1
  335. package/build/table/model-callback-args.js.map +0 -1
  336. package/build/table/model-column.js.map +0 -1
  337. package/build/table/model-row.js.map +0 -1
  338. package/build/table/select-calculator.js.map +0 -1
  339. package/build/table/settings/column-row.js.map +0 -1
  340. package/build/table/settings/download-action.js.map +0 -1
  341. package/build/table/settings/index.js.map +0 -1
  342. package/build/table/table-settings.js.map +0 -1
  343. package/build/table/table.js.map +0 -1
  344. package/build/table/use-sorting.js.map +0 -1
  345. package/build/table/widths.js.map +0 -1
  346. package/build/table/worker-plugins-check-all-checkbox.js.map +0 -1
  347. package/build/table/worker-plugins-checkbox.js.map +0 -1
  348. package/build/translated-attributes.js.map +0 -1
  349. package/build/translated-collections.js.map +0 -1
  350. package/build/updated-attribute.js.map +0 -1
  351. package/build/url-encode.js.map +0 -1
  352. package/build/use-breakpoint.js.map +0 -1
  353. package/build/use-can-can.js.map +0 -1
  354. package/build/use-collection.js.map +0 -1
  355. package/build/use-created-event.js.map +0 -1
  356. package/build/use-current-user-context.js.map +0 -1
  357. package/build/use-current-user.js.map +0 -1
  358. package/build/use-destroyed-event.js.map +0 -1
  359. package/build/use-event-emitter.js.map +0 -1
  360. package/build/use-event-listener.js.map +0 -1
  361. package/build/use-input.js.map +0 -1
  362. package/build/use-model-event.js.map +0 -1
  363. package/build/use-model.js.map +0 -1
  364. package/build/use-resize-observer.js.map +0 -1
  365. package/build/use-router.js.map +0 -1
  366. package/build/use-screen-layout.js.map +0 -1
  367. package/build/use-styles.js.map +0 -1
  368. package/build/use-updated-event.js.map +0 -1
  369. package/build/use-validation-errors.js.map +0 -1
  370. package/build/utils/button.js.map +0 -1
  371. package/build/utils/card.js.map +0 -1
  372. package/build/utils/checkbox.js.map +0 -1
  373. package/build/utils/checkboxes.js.map +0 -1
  374. package/build/utils/default-style.js.map +0 -1
  375. package/build/utils/header.js.map +0 -1
  376. package/build/utils/icon.js.map +0 -1
  377. package/build/utils/invalid-feedback.js.map +0 -1
  378. package/build/utils/modal.js.map +0 -1
  379. package/build/utils/text.js.map +0 -1
  380. package/build/validation-error.js.map +0 -1
  381. package/build/validation-errors.js.map +0 -1
  382. package/build/with-api-maker.js.map +0 -1
  383. package/build/with-collection.js.map +0 -1
  384. package/build/with-current-user.js.map +0 -1
  385. package/build/with-model.js.map +0 -1
  386. package/build/with-router.js.map +0 -1
@@ -1,117 +1,28 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- var desc = Object.getOwnPropertyDescriptor(m, k);
20
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
- desc = { enumerable: true, get: function() { return m[k]; } };
22
- }
23
- Object.defineProperty(o, k2, desc);
24
- }) : (function(o, m, k, k2) {
25
- if (k2 === undefined) k2 = k;
26
- o[k2] = m[k];
27
- }));
28
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
- Object.defineProperty(o, "default", { enumerable: true, value: v });
30
- }) : function(o, v) {
31
- o["default"] = v;
32
- });
33
- var __importStar = (this && this.__importStar) || (function () {
34
- var ownKeys = function(o) {
35
- ownKeys = Object.getOwnPropertyNames || function (o) {
36
- var ar = [];
37
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
38
- return ar;
39
- };
40
- return ownKeys(o);
41
- };
42
- return function (mod) {
43
- if (mod && mod.__esModule) return mod;
44
- var result = {};
45
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
46
- __setModuleDefault(result, mod);
47
- return result;
48
- };
49
- })();
50
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
51
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
52
- return new (P || (P = Promise))(function (resolve, reject) {
53
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
54
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
55
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
56
- step((generator = generator.apply(thisArg, _arguments || [])).next());
57
- });
58
- };
59
- var __generator = (this && this.__generator) || function (thisArg, body) {
60
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
61
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
62
- function verb(n) { return function (v) { return step([n, v]); }; }
63
- function step(op) {
64
- if (f) throw new TypeError("Generator is already executing.");
65
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
66
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
67
- if (y = 0, t) op = [op[0] & 2, t.value];
68
- switch (op[0]) {
69
- case 0: case 1: t = op; break;
70
- case 4: _.label++; return { value: op[1], done: false };
71
- case 5: _.label++; y = op[1]; op = [0]; continue;
72
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
73
- default:
74
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
75
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
76
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
77
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
78
- if (t[2]) _.ops.pop();
79
- _.trys.pop(); continue;
80
- }
81
- op = body.call(thisArg, _);
82
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
83
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
84
- }
85
- };
86
- var __importDefault = (this && this.__importDefault) || function (mod) {
87
- return (mod && mod.__esModule) ? mod : { "default": mod };
88
- };
89
- Object.defineProperty(exports, "__esModule", { value: true });
90
- var jsx_runtime_1 = require("react/jsx-runtime");
91
- var react_1 = __importStar(require("react"));
92
- var react_native_1 = require("react-native");
93
- var base_component_js_1 = __importDefault(require("../base-component.js"));
94
- var config_reader_js_1 = __importDefault(require("./config-reader.js"));
95
- var edit_page_1 = __importDefault(require("./edit-page"));
96
- var flash_notifications_js_1 = __importDefault(require("flash-notifications/build/flash-notifications.js"));
97
- var has_edit_config_js_1 = __importDefault(require("./has-edit-config.js"));
98
- var index_page_1 = __importDefault(require("./index-page"));
99
- var index_1 = __importDefault(require("./layout/index"));
100
- var link_1 = __importDefault(require("../link"));
101
- var memo_js_1 = __importDefault(require("set-state-compare/build/memo.js"));
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useMemo } from "react";
3
+ import { Pressable, StyleSheet, View } from "react-native";
4
+ import BaseComponent from "../base-component.js";
5
+ import ConfigReader from "./config-reader.js";
6
+ import EditPage from "./edit-page";
7
+ import FlashNotifications from "flash-notifications/build/flash-notifications.js";
8
+ import hasEditConfig from "./has-edit-config.js";
9
+ import IndexPage from "./index-page";
10
+ import Layout from "./layout/index";
11
+ import Link from "../link";
12
+ import memo from "set-state-compare/build/memo.js";
102
13
  // @ts-expect-error
103
- var models = __importStar(require("models.js"));
104
- var params_js_1 = __importDefault(require("../params.js"));
105
- var shape_component_js_1 = require("set-state-compare/build/shape-component.js");
106
- var index_2 = __importDefault(require("./show-page/index"));
107
- var show_reflection_actions_1 = __importDefault(require("./show-reflection-actions"));
108
- var show_reflection_page_1 = __importDefault(require("./show-reflection-page"));
109
- var text_1 = __importDefault(require("../utils/text"));
110
- var use_can_can_js_1 = __importDefault(require("../use-can-can.js"));
111
- var use_current_user_js_1 = __importDefault(require("../use-current-user.js"));
112
- var use_query_params_js_1 = __importDefault(require("on-location-changed/build/use-query-params.js"));
113
- var use_styles_js_1 = __importDefault(require("../use-styles.js"));
114
- var styles = react_native_1.StyleSheet.create({
14
+ import * as models from "models.js";
15
+ import Params from "../params.js";
16
+ import { shapeComponent } from "set-state-compare/build/shape-component.js";
17
+ import ShowPage from "./show-page/index";
18
+ import ShowReflectionActions from "./show-reflection-actions";
19
+ import ShowReflectionPage from "./show-reflection-page";
20
+ import Text from "../utils/text";
21
+ import useCanCan from "../use-can-can.js";
22
+ import useCurrentUser from "../use-current-user.js";
23
+ import useQueryParams from "on-location-changed/build/use-query-params.js";
24
+ import useStyles from "../use-styles.js";
25
+ const styles = StyleSheet.create({
115
26
  actionsView: {
116
27
  flexDirection: "row",
117
28
  alignItems: "center"
@@ -129,99 +40,54 @@ var styles = react_native_1.StyleSheet.create({
129
40
  marginRight: 10
130
41
  }
131
42
  });
132
- exports.default = (0, memo_js_1.default)((0, shape_component_js_1.shapeComponent)(/** @class */ (function (_super) {
133
- __extends(ApiMakerSuperAdmin, _super);
134
- function ApiMakerSuperAdmin() {
135
- var _this = _super !== null && _super.apply(this, arguments) || this;
136
- _this.loadModel = function () { return __awaiter(_this, void 0, void 0, function () {
137
- var _a, configReader, modelClass, modelId, modelName, abilities, abilitiesForModel, layoutSelect, query, model;
138
- var _b, _c;
139
- return __generator(this, function (_d) {
140
- switch (_d.label) {
141
- case 0:
142
- _a = this.tt, configReader = _a.configReader, modelClass = _a.modelClass, modelId = _a.modelId, modelName = _a.modelName;
143
- if (!(modelId && modelClass)) return [3 /*break*/, 3];
144
- abilities = {};
145
- abilitiesForModel = ["destroy", "edit"];
146
- layoutSelect = (_c = (_b = configReader === null || configReader === void 0 ? void 0 : configReader.modelConfig) === null || _b === void 0 ? void 0 : _b.layout) === null || _c === void 0 ? void 0 : _c.select;
147
- abilities[modelName] = abilitiesForModel;
148
- return [4 /*yield*/, modelClass
149
- .ransack({ id_eq: modelId })
150
- .abilities(abilities)];
151
- case 1:
152
- query = _d.sent();
153
- if (layoutSelect)
154
- query.select(layoutSelect);
155
- return [4 /*yield*/, query.first()];
156
- case 2:
157
- model = _d.sent();
158
- this.setState({ model: model });
159
- return [3 /*break*/, 4];
160
- case 3:
161
- this.setState({ model: undefined });
162
- _d.label = 4;
163
- case 4: return [2 /*return*/];
164
- }
165
- });
166
- }); };
167
- _this.onDestroyClicked = function () { return __awaiter(_this, void 0, void 0, function () {
168
- var error_1;
169
- return __generator(this, function (_a) {
170
- switch (_a.label) {
171
- case 0:
172
- if (!confirm("Are you sure?")) {
173
- return [2 /*return*/];
174
- }
175
- _a.label = 1;
176
- case 1:
177
- _a.trys.push([1, 3, , 4]);
178
- return [4 /*yield*/, this.s.model.destroy()];
179
- case 2:
180
- _a.sent();
181
- params_js_1.default.changeParams({ mode: undefined, model_id: undefined });
182
- return [3 /*break*/, 4];
183
- case 3:
184
- error_1 = _a.sent();
185
- flash_notifications_js_1.default.errorResponse(error_1);
186
- return [3 /*break*/, 4];
187
- case 4: return [2 /*return*/];
188
- }
189
- });
190
- }); };
191
- return _this;
192
- }
193
- ApiMakerSuperAdmin.prototype.setup = function () {
194
- var _this = this;
195
- var _a, _b, _c;
196
- this.queryParams = (0, use_query_params_js_1.default)();
43
+ export default memo(shapeComponent(class ApiMakerSuperAdmin extends BaseComponent {
44
+ setup() {
45
+ this.queryParams = useQueryParams();
197
46
  if (this.queryParams.model) {
198
47
  this.modelClass = models[this.queryParams.model];
199
48
  }
200
49
  else {
201
50
  this.modelClass = null;
202
51
  }
203
- this.configReader = (0, react_1.useMemo)(function () { return _this.modelClass && config_reader_js_1.default.forModel(_this.modelClass); }, [this.modelClass]);
52
+ this.configReader = useMemo(() => this.modelClass && ConfigReader.forModel(this.modelClass), [this.modelClass]);
204
53
  this.modelId = this.queryParams.model_id;
205
- this.modelName = (_b = (_a = this.modelClass) === null || _a === void 0 ? void 0 : _a.modelClassData()) === null || _b === void 0 ? void 0 : _b.name;
206
- this.currentUser = (0, use_current_user_js_1.default)();
207
- this.canCan = (0, use_can_can_js_1.default)(function () {
208
- var abilities = [];
209
- if (_this.modelClass)
210
- abilities.push([_this.modelClass, ["new"]]);
54
+ this.modelName = this.modelClass?.modelClassData()?.name;
55
+ this.currentUser = useCurrentUser();
56
+ this.canCan = useCanCan(() => {
57
+ const abilities = [];
58
+ if (this.modelClass)
59
+ abilities.push([this.modelClass, ["new"]]);
211
60
  return abilities;
212
- }, [(_c = this.currentUser) === null || _c === void 0 ? void 0 : _c.id(), this.modelClass]);
61
+ }, [this.currentUser?.id(), this.modelClass]);
213
62
  this.useStates({
214
63
  model: undefined
215
64
  });
216
- (0, react_1.useMemo)(function () { _this.loadModel(); }, [this.modelId]);
65
+ useMemo(() => { this.loadModel(); }, [this.modelId]);
66
+ }
67
+ loadModel = async () => {
68
+ const { configReader, modelClass, modelId, modelName } = this.tt;
69
+ if (modelId && modelClass) {
70
+ const abilities = {};
71
+ const abilitiesForModel = ["destroy", "edit"];
72
+ const layoutSelect = configReader?.modelConfig?.layout?.select;
73
+ abilities[modelName] = abilitiesForModel;
74
+ const query = await modelClass
75
+ .ransack({ id_eq: modelId })
76
+ .abilities(abilities);
77
+ if (layoutSelect)
78
+ query.select(layoutSelect);
79
+ const model = await query.first();
80
+ this.setState({ model });
81
+ }
82
+ else {
83
+ this.setState({ model: undefined });
84
+ }
217
85
  };
218
- ApiMakerSuperAdmin.prototype.render = function () {
219
- var _this = this;
220
- var _a, _b;
221
- var _c = this.tt, canCan = _c.canCan, configReader = _c.configReader, modelClass = _c.modelClass, modelId = _c.modelId, modelName = _c.modelName, queryParams = _c.queryParams;
222
- var model = this.s.model;
223
- var modelConfigActions = (_a = configReader === null || configReader === void 0 ? void 0 : configReader.modelConfig) === null || _a === void 0 ? void 0 : _a.actions;
224
- var pageToShow;
86
+ render() {
87
+ const { canCan, configReader, modelClass, modelId, modelName, queryParams } = this.tt;
88
+ const { model } = this.s;
89
+ const modelConfigActions = configReader?.modelConfig?.actions;
90
+ let pageToShow;
225
91
  if (queryParams.model && queryParams.model_id && queryParams.model_reflection) {
226
92
  pageToShow = "show_reflection";
227
93
  }
@@ -240,20 +106,31 @@ exports.default = (0, memo_js_1.default)((0, shape_component_js_1.shapeComponent
240
106
  else {
241
107
  pageToShow = "welcome";
242
108
  }
243
- var actionsViewStyle = (0, use_styles_js_1.default)(styles, "actionsView");
244
- var actions = (0, react_1.useMemo)(function () { return (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: actionsViewStyle, children: [model && modelConfigActions && modelConfigActions({ model: model }), modelClass && pageToShow == "index" &&
245
- (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (canCan === null || canCan === void 0 ? void 0 : canCan.can("new", modelClass)) && (0, has_edit_config_js_1.default)(modelClass) &&
246
- (0, jsx_runtime_1.jsx)(link_1.default, { dataSet: { class: "create-new-model-link" }, style: styles.createNewModelLink, to: params_js_1.default.withParams({ model: modelName, mode: "new" }), children: (0, jsx_runtime_1.jsx)(text_1.default, { children: "Create new" }) }) }), model && pageToShow == "show" &&
247
- (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [model.can("edit") && (0, has_edit_config_js_1.default)(modelClass) &&
248
- (0, jsx_runtime_1.jsx)(link_1.default, { dataSet: { class: "edit-model-link" }, style: styles.editModelLink, to: params_js_1.default.withParams({ model: modelName, model_id: modelId, mode: "edit" }), children: (0, jsx_runtime_1.jsx)(text_1.default, { children: "Edit" }) }), model.can("destroy") &&
249
- (0, jsx_runtime_1.jsx)(react_native_1.Pressable, { dataSet: { class: "destroy-model-link" }, onPress: _this.tt.onDestroyClicked, style: styles.destroyModelLink, children: (0, jsx_runtime_1.jsx)(text_1.default, { children: "Delete" }) })] }), pageToShow == "show_reflection" &&
250
- (0, jsx_runtime_1.jsx)(show_reflection_actions_1.default, { model: model, modelClass: modelClass, reflectionName: queryParams.model_reflection })] }); }, [canCan, configReader === null || configReader === void 0 ? void 0 : configReader.actions, model, modelClass, pageToShow]);
251
- return ((0, jsx_runtime_1.jsxs)(index_1.default, { actions: actions, active: queryParams.model, headerTitle: (_b = modelClass === null || modelClass === void 0 ? void 0 : modelClass.modelName()) === null || _b === void 0 ? void 0 : _b.human({ count: 2 }), children: [pageToShow == "index" &&
252
- (0, jsx_runtime_1.jsx)(index_page_1.default, { modelClass: modelClass }, "index-page-".concat(modelName)), pageToShow == "show" &&
253
- (0, jsx_runtime_1.jsx)(index_2.default, { modelClass: modelClass, modelId: modelId }, "show-page-".concat(modelName, "-").concat(modelId)), pageToShow == "show_reflection" &&
254
- (0, jsx_runtime_1.jsx)(show_reflection_page_1.default, { modelClass: modelClass, modelId: modelId }, "show-reflection-page-".concat(modelName, "-").concat(modelId)), pageToShow == "edit" &&
255
- (0, jsx_runtime_1.jsx)(edit_page_1.default, { modelClass: modelClass }, "edit-page-".concat(modelName, "-").concat(modelId))] }));
109
+ const actionsViewStyle = useStyles(styles, "actionsView");
110
+ const actions = useMemo(() => _jsxs(View, { style: actionsViewStyle, children: [model && modelConfigActions && modelConfigActions({ model }), modelClass && pageToShow == "index" &&
111
+ _jsx(_Fragment, { children: canCan?.can("new", modelClass) && hasEditConfig(modelClass) &&
112
+ _jsx(Link, { dataSet: { class: "create-new-model-link" }, style: styles.createNewModelLink, to: Params.withParams({ model: modelName, mode: "new" }), children: _jsx(Text, { children: "Create new" }) }) }), model && pageToShow == "show" &&
113
+ _jsxs(_Fragment, { children: [model.can("edit") && hasEditConfig(modelClass) &&
114
+ _jsx(Link, { dataSet: { class: "edit-model-link" }, style: styles.editModelLink, to: Params.withParams({ model: modelName, model_id: modelId, mode: "edit" }), children: _jsx(Text, { children: "Edit" }) }), model.can("destroy") &&
115
+ _jsx(Pressable, { dataSet: { class: "destroy-model-link" }, onPress: this.tt.onDestroyClicked, style: styles.destroyModelLink, children: _jsx(Text, { children: "Delete" }) })] }), pageToShow == "show_reflection" &&
116
+ _jsx(ShowReflectionActions, { model: model, modelClass: modelClass, reflectionName: queryParams.model_reflection })] }), [canCan, configReader?.actions, model, modelClass, pageToShow]);
117
+ return (_jsxs(Layout, { actions: actions, active: queryParams.model, headerTitle: modelClass?.modelName()?.human({ count: 2 }), children: [pageToShow == "index" &&
118
+ _jsx(IndexPage, { modelClass: modelClass }, `index-page-${modelName}`), pageToShow == "show" &&
119
+ _jsx(ShowPage, { modelClass: modelClass, modelId: modelId }, `show-page-${modelName}-${modelId}`), pageToShow == "show_reflection" &&
120
+ _jsx(ShowReflectionPage, { modelClass: modelClass, modelId: modelId }, `show-reflection-page-${modelName}-${modelId}`), pageToShow == "edit" &&
121
+ _jsx(EditPage, { modelClass: modelClass }, `edit-page-${modelName}-${modelId}`)] }));
122
+ }
123
+ onDestroyClicked = async () => {
124
+ if (!confirm("Are you sure?")) {
125
+ return;
126
+ }
127
+ try {
128
+ await this.s.model.destroy();
129
+ Params.changeParams({ mode: undefined, model_id: undefined });
130
+ }
131
+ catch (error) {
132
+ FlashNotifications.errorResponse(error);
133
+ }
256
134
  };
257
- return ApiMakerSuperAdmin;
258
- }(base_component_js_1.default))));
259
- //# sourceMappingURL=index.js.map
135
+ }));
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInN1cGVyLWFkbWluL2luZGV4LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLEVBQUUsRUFBQyxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3hELE9BQU8sYUFBYSxNQUFNLHNCQUFzQixDQUFBO0FBQ2hELE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sUUFBUSxNQUFNLGFBQWEsQ0FBQTtBQUNsQyxPQUFPLGtCQUFrQixNQUFNLGtEQUFrRCxDQUFBO0FBQ2pGLE9BQU8sYUFBYSxNQUFNLHNCQUFzQixDQUFBO0FBQ2hELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQTtBQUNwQyxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuQyxPQUFPLElBQUksTUFBTSxTQUFTLENBQUE7QUFDMUIsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsbUJBQW1CO0FBQ25CLE9BQU8sS0FBSyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUNqQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekUsT0FBTyxRQUFRLE1BQU0sbUJBQW1CLENBQUE7QUFDeEMsT0FBTyxxQkFBcUIsTUFBTSwyQkFBMkIsQ0FBQTtBQUM3RCxPQUFPLGtCQUFrQixNQUFNLHdCQUF3QixDQUFBO0FBQ3ZELE9BQU8sSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNoQyxPQUFPLFNBQVMsTUFBTSxtQkFBbUIsQ0FBQTtBQUN6QyxPQUFPLGNBQWMsTUFBTSx3QkFBd0IsQ0FBQTtBQUNuRCxPQUFPLGNBQWMsTUFBTSwrQ0FBK0MsQ0FBQTtBQUMxRSxPQUFPLFNBQVMsTUFBTSxrQkFBa0Is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QjtvQkFDOUIsS0FBQyxrQkFBa0IsSUFFakIsVUFBVSxFQUFFLFVBQVUsRUFDdEIsT0FBTyxFQUFFLE9BQU8sSUFGWCx3QkFBd0IsU0FBUyxJQUFJLE9BQU8sRUFBRSxDQUduRCxFQUVILFVBQVUsSUFBSSxNQUFNO29CQUNuQixLQUFDLFFBQVEsSUFFUCxVQUFVLEVBQUUsVUFBVSxJQURqQixhQUFhLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FFeEMsSUFFRyxDQUNWLENBQUE7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUU1QixNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUM3RCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN6QyxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHt1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtQcmVzc2FibGUsIFN0eWxlU2hlZXQsIFZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uL2Jhc2UtY29tcG9uZW50LmpzXCJcbmltcG9ydCBDb25maWdSZWFkZXIgZnJvbSBcIi4vY29uZmlnLXJlYWRlci5qc1wiXG5pbXBvcnQgRWRpdFBhZ2UgZnJvbSBcIi4vZWRpdC1wYWdlXCJcbmltcG9ydCBGbGFzaE5vdGlmaWNhdGlvbnMgZnJvbSBcImZsYXNoLW5vdGlmaWNhdGlvbnMvYnVpbGQvZmxhc2gtbm90aWZpY2F0aW9ucy5qc1wiXG5pbXBvcnQgaGFzRWRpdENvbmZpZyBmcm9tIFwiLi9oYXMtZWRpdC1jb25maWcuanNcIlxuaW1wb3J0IEluZGV4UGFnZSBmcm9tIFwiLi9pbmRleC1wYWdlXCJcbmltcG9ydCBMYXlvdXQgZnJvbSBcIi4vbGF5b3V0L2luZGV4XCJcbmltcG9ydCBMaW5rIGZyb20gXCIuLi9saW5rXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbi8vIEB0cy1leHBlY3QtZXJyb3JcbmltcG9ydCAqIGFzIG1vZGVscyBmcm9tIFwibW9kZWxzLmpzXCJcbmltcG9ydCBQYXJhbXMgZnJvbSBcIi4uL3BhcmFtcy5qc1wiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBTaG93UGFnZSBmcm9tIFwiLi9zaG93LXBhZ2UvaW5kZXhcIlxuaW1wb3J0IFNob3dSZWZsZWN0aW9uQWN0aW9ucyBmcm9tIFwiLi9zaG93LXJlZmxlY3Rpb24tYWN0aW9uc1wiXG5pbXBvcnQgU2hvd1JlZmxlY3Rpb25QYWdlIGZyb20gXCIuL3Nob3ctcmVmbGVjdGlvbi1wYWdlXCJcbmltcG9ydCBUZXh0IGZyb20gXCIuLi91dGlscy90ZXh0XCJcbmltcG9ydCB1c2VDYW5DYW4gZnJvbSBcIi4uL3VzZS1jYW4tY2FuLmpzXCJcbmltcG9ydCB1c2VDdXJyZW50VXNlciBmcm9tIFwiLi4vdXNlLWN1cnJlbnQtdXNlci5qc1wiXG5pbXBvcnQgdXNlUXVlcnlQYXJhbXMgZnJvbSBcIm9uLWxvY2F0aW9uLWNoYW5nZWQvYnVpbGQvdXNlLXF1ZXJ5LXBhcmFtcy5qc1wiXG5pbXBvcnQgdXNlU3R5bGVzIGZyb20gXCIuLi91c2Utc3R5bGVzLmpzXCJcblxuY29uc3Qgc3R5bGVzID0gU3R5bGVTaGVldC5jcmVhdGUoe1xuICBhY3Rpb25zVmlldzoge1xuICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXG4gICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIlxuICB9LFxuICBjcmVhdGVOZXdNb2RlbExpbms6IHtcbiAgICBtYXJnaW5MZWZ0OiAxMCxcbiAgICBtYXJnaW5SaWdodDogMTBcbiAgfSxcbiAgZGVzdHJveU1vZGVsTGluazoge1xuICAgIG1hcmdpbkxlZnQ6IDEwLFxuICAgIG1hcmdpblJpZ2h0OiAxMFxuICB9LFxuICBlZGl0TW9kZWxMaW5rOiB7XG4gICAgbWFyZ2luTGVmdDogMTAsXG4gICAgbWFyZ2luUmlnaHQ6IDEwXG4gIH1cbn0pXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJTdXBlckFkbWluIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHNldHVwKCkge1xuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB1c2VRdWVyeVBhcmFtcygpXG5cbiAgICBpZiAodGhpcy5xdWVyeVBhcmFtcy5tb2RlbCkge1xuICAgICAgdGhpcy5tb2RlbENsYXNzID0gbW9kZWxzW3RoaXMucXVlcnlQYXJhbXMubW9kZWxdXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9kZWxDbGFzcyA9IG51bGxcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZ1JlYWRlciA9IHVzZU1lbW8oKCkgPT4gdGhpcy5tb2RlbENsYXNzICYmIENvbmZpZ1JlYWRlci5mb3JNb2RlbCh0aGlzLm1vZGVsQ2xhc3MpLCBbdGhpcy5tb2RlbENsYXNzXSlcbiAgICB0aGlzLm1vZGVsSWQgPSB0aGlzLnF1ZXJ5UGFyYW1zLm1vZGVsX2lkXG4gICAgdGhpcy5tb2RlbE5hbWUgPSB0aGlzLm1vZGVsQ2xhc3M/Lm1vZGVsQ2xhc3NEYXRhKCk/Lm5hbWVcbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gdXNlQ3VycmVudFVzZXIoKVxuXG4gICAgdGhpcy5jYW5DYW4gPSB1c2VDYW5DYW4oXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFiaWxpdGllcyA9IFtdXG5cbiAgICAgICAgaWYgKHRoaXMubW9kZWxDbGFzcykgYWJpbGl0aWVzLnB1c2goW3RoaXMubW9kZWxDbGFzcywgW1wibmV3XCJdXSlcblxuICAgICAgICByZXR1cm4gYWJpbGl0aWVzXG4gICAgICB9LFxuICAgICAgW3RoaXMuY3VycmVudFVzZXI/LmlkKCksIHRoaXMubW9kZWxDbGFzc11cbiAgICApXG5cbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBtb2RlbDogdW5kZWZpbmVkXG4gICAgfSlcbiAgICB1c2VNZW1vKFxuICAgICAgKCkgPT4geyB0aGlzLmxvYWRNb2RlbCgpIH0sXG4gICAgICBbdGhpcy5tb2RlbElkXVxuICAgIClcbiAgfVxuXG4gIGxvYWRNb2RlbCA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7Y29uZmlnUmVhZGVyLCBtb2RlbENsYXNzLCBtb2RlbElkLCBtb2RlbE5hbWV9ID0gdGhpcy50dFxuXG4gICAgaWYgKG1vZGVsSWQgJiYgbW9kZWxDbGFzcykge1xuICAgICAgY29uc3QgYWJpbGl0aWVzID0ge31cbiAgICAgIGNvbnN0IGFiaWxpdGllc0Zvck1vZGVsID0gW1wiZGVzdHJveVwiLCBcImVkaXRcIl1cbiAgICAgIGNvbnN0IGxheW91dFNlbGVjdCA9IGNvbmZpZ1JlYWRlcj8ubW9kZWxDb25maWc/LmxheW91dD8uc2VsZWN0XG5cbiAgICAgIGFiaWxpdGllc1ttb2RlbE5hbWVdID0gYWJpbGl0aWVzRm9yTW9kZWxcblxuICAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCBtb2RlbENsYXNzXG4gICAgICAgIC5yYW5zYWNrKHtpZF9lcTogbW9kZWxJZH0pXG4gICAgICAgIC5hYmlsaXRpZXMoYWJpbGl0aWVzKVxuXG4gICAgICBpZiAobGF5b3V0U2VsZWN0KSBxdWVyeS5zZWxlY3QobGF5b3V0U2VsZWN0KVxuXG4gICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHF1ZXJ5LmZpcnN0KClcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWx9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHttb2RlbDogdW5kZWZpbmVkfSlcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2NhbkNhbiwgY29uZmlnUmVhZGVyLCBtb2RlbENsYXNzLCBtb2RlbElkLCBtb2RlbE5hbWUsIHF1ZXJ5UGFyYW1zfSA9IHRoaXMudHRcbiAgICBjb25zdCB7bW9kZWx9ID0gdGhpcy5zXG4gICAgY29uc3QgbW9kZWxDb25maWdBY3Rpb25zID0gY29uZmlnUmVhZGVyPy5tb2RlbENvbmZpZz8uYWN0aW9uc1xuICAgIGxldCBwYWdlVG9TaG93XG5cbiAgICBpZiAocXVlcnlQYXJhbXMubW9kZWwgJiYgcXVlcnlQYXJhbXMubW9kZWxfaWQgJiYgcXVlcnlQYXJhbXMubW9kZWxfcmVmbGVjdGlvbikge1xuICAgICAgcGFnZVRvU2hvdyA9IFwic2hvd19yZWZsZWN0aW9uXCJcbiAgICB9IGVsc2UgaWYgKHF1ZXJ5UGFyYW1zLm1vZGVsICYmIHF1ZXJ5UGFyYW1zLm1vZGVsX2lkICYmIHF1ZXJ5UGFyYW1zLm1vZGUgPT0gXCJlZGl0XCIpIHtcbiAgICAgIHBhZ2VUb1Nob3cgPSBcImVkaXRcIlxuICAgIH0gZWxzZSBpZiAocXVlcnlQYXJhbXMubW9kZWwgJiYgcXVlcnlQYXJhbXMubW9kZWxfaWQpIHtcbiAgICAgIHBhZ2VUb1Nob3cgPSBcInNob3dcIlxuICAgIH0gZWxzZSBpZiAocXVlcnlQYXJhbXMubW9kZWwgJiYgcXVlcnlQYXJhbXMubW9kZSA9PSBcIm5ld1wiKSB7XG4gICAgICBwYWdlVG9TaG93ID0gXCJlZGl0XCJcbiAgICB9IGVsc2UgaWYgKHF1ZXJ5UGFyYW1zLm1vZGVsKSB7XG4gICAgICBwYWdlVG9TaG93ID0gXCJpbmRleFwiXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhZ2VUb1Nob3cgPSBcIndlbGNvbWVcIlxuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbnNWaWV3U3R5bGUgPSB1c2VTdHlsZXMoc3R5bGVzLCBcImFjdGlvbnNWaWV3XCIpXG5cbiAgICBjb25zdCBhY3Rpb25zID0gdXNlTWVtbyhcbiAgICAgICgpID0+IDxWaWV3IHN0eWxlPXthY3Rpb25zVmlld1N0eWxlfT5cbiAgICAgICAge21vZGVsICYmIG1vZGVsQ29uZmlnQWN0aW9ucyAmJiBtb2RlbENvbmZpZ0FjdGlvbnMoe21vZGVsfSl9XG4gICAgICAgIHttb2RlbENsYXNzICYmIHBhZ2VUb1Nob3cgPT0gXCJpbmRleFwiICYmXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHtjYW5DYW4/LmNhbihcIm5ld1wiLCBtb2RlbENsYXNzKSAmJiBoYXNFZGl0Q29uZmlnKG1vZGVsQ2xhc3MpICYmXG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgZGF0YVNldD17e2NsYXNzOiBcImNyZWF0ZS1uZXctbW9kZWwtbGlua1wifX1cbiAgICAgICAgICAgICAgICBzdHlsZT17c3R5bGVzLmNyZWF0ZU5ld01vZGVsTGlua31cbiAgICAgICAgICAgICAgICB0bz17UGFyYW1zLndpdGhQYXJhbXMoe21vZGVsOiBtb2RlbE5hbWUsIG1vZGU6IFwibmV3XCJ9KX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgICAgICAgQ3JlYXRlIG5ld1xuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvPlxuICAgICAgICB9XG4gICAgICAgIHttb2RlbCAmJiBwYWdlVG9TaG93ID09IFwic2hvd1wiICYmXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHttb2RlbC5jYW4oXCJlZGl0XCIpICYmIGhhc0VkaXRDb25maWcobW9kZWxDbGFzcykgJiZcbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBkYXRhU2V0PXt7Y2xhc3M6IFwiZWRpdC1tb2RlbC1saW5rXCJ9fVxuICAgICAgICAgICAgICAgIHN0eWxlPXtzdHlsZXMuZWRpdE1vZGVsTGlua31cbiAgICAgICAgICAgICAgICB0bz17UGFyYW1zLndpdGhQYXJhbXMoe21vZGVsOiBtb2RlbE5hbWUsIG1vZGVsX2lkOiBtb2RlbElkLCBtb2RlOiBcImVkaXRcIn0pfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICAgICBFZGl0XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7bW9kZWwuY2FuKFwiZGVzdHJveVwiKSAmJlxuICAgICAgICAgICAgICA8UHJlc3NhYmxlXG4gICAgICAgICAgICAgICAgZGF0YVNldD17e2NsYXNzOiBcImRlc3Ryb3ktbW9kZWwtbGlua1wifX1cbiAgICAgICAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uRGVzdHJveUNsaWNrZWR9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5kZXN0cm95TW9kZWxMaW5rfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvPlxuICAgICAgICB9XG4gICAgICAgIHtwYWdlVG9TaG93ID09IFwic2hvd19yZWZsZWN0aW9uXCIgJiZcbiAgICAgICAgICA8U2hvd1JlZmxlY3Rpb25BY3Rpb25zIG1vZGVsPXttb2RlbH0gbW9kZWxDbGFzcz17bW9kZWxDbGFzc30gcmVmbGVjdGlvbk5hbWU9e3F1ZXJ5UGFyYW1zLm1vZGVsX3JlZmxlY3Rpb259IC8+XG4gICAgICAgIH1cbiAgICAgIDwvVmlldz4sXG4gICAgICBbY2FuQ2FuLCBjb25maWdSZWFkZXI/LmFjdGlvbnMsIG1vZGVsLCBtb2RlbENsYXNzLCBwYWdlVG9TaG93XVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8TGF5b3V0IGFjdGlvbnM9e2FjdGlvbnN9IGFjdGl2ZT17cXVlcnlQYXJhbXMubW9kZWx9IGhlYWRlclRpdGxlPXttb2RlbENsYXNzPy5tb2RlbE5hbWUoKT8uaHVtYW4oe2NvdW50OiAyfSl9PlxuICAgICAgICB7cGFnZVRvU2hvdyA9PSBcImluZGV4XCIgJiZcbiAgICAgICAgICA8SW5kZXhQYWdlXG4gICAgICAgICAgICBrZXk9e2BpbmRleC1wYWdlLSR7bW9kZWxOYW1lfWB9XG4gICAgICAgICAgICBtb2RlbENsYXNzPXttb2RlbENsYXNzfVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAge3BhZ2VUb1Nob3cgPT0gXCJzaG93XCIgJiZcbiAgICAgICAgICA8U2hvd1BhZ2VcbiAgICAgICAgICAgIGtleT17YHNob3ctcGFnZS0ke21vZGVsTmFtZX0tJHttb2RlbElkfWB9XG4gICAgICAgICAgICBtb2RlbENsYXNzPXttb2RlbENsYXNzfVxuICAgICAgICAgICAgbW9kZWxJZD17bW9kZWxJZH1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIHtwYWdlVG9TaG93ID09IFwic2hvd19yZWZsZWN0aW9uXCIgJiZcbiAgICAgICAgICA8U2hvd1JlZmxlY3Rpb25QYWdlXG4gICAgICAgICAgICBrZXk9e2BzaG93LXJlZmxlY3Rpb24tcGFnZS0ke21vZGVsTmFtZX0tJHttb2RlbElkfWB9XG4gICAgICAgICAgICBtb2RlbENsYXNzPXttb2RlbENsYXNzfVxuICAgICAgICAgICAgbW9kZWxJZD17bW9kZWxJZH1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIHtwYWdlVG9TaG93ID09IFwiZWRpdFwiICYmXG4gICAgICAgICAgPEVkaXRQYWdlXG4gICAgICAgICAgICBrZXk9e2BlZGl0LXBhZ2UtJHttb2RlbE5hbWV9LSR7bW9kZWxJZH1gfVxuICAgICAgICAgICAgbW9kZWxDbGFzcz17bW9kZWxDbGFzc31cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8L0xheW91dD5cbiAgICApXG4gIH1cblxuICBvbkRlc3Ryb3lDbGlja2VkID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghY29uZmlybShcIkFyZSB5b3Ugc3VyZT9cIikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnMubW9kZWwuZGVzdHJveSgpXG5cbiAgICAgIFBhcmFtcy5jaGFuZ2VQYXJhbXMoe21vZGU6IHVuZGVmaW5lZCwgbW9kZWxfaWQ6IHVuZGVmaW5lZH0pXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIEZsYXNoTm90aWZpY2F0aW9ucy5lcnJvclJlc3BvbnNlKGVycm9yKVxuICAgIH1cbiAgfVxufSkpXG4iXX0=