@kaspernj/api-maker 1.0.2060 → 1.0.2061

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 (401) hide show
  1. package/build/api.d.ts.map +1 -1
  2. package/build/api.js +44 -51
  3. package/build/attribute-not-loaded-error.d.ts.map +1 -1
  4. package/build/attribute-not-loaded-error.js +2 -4
  5. package/build/base-component.d.ts.map +1 -1
  6. package/build/base-component.js +3 -5
  7. package/build/base-error.d.ts.map +1 -1
  8. package/build/base-error.js +11 -16
  9. package/build/base-model/attribute.d.ts.map +1 -1
  10. package/build/base-model/attribute.js +4 -9
  11. package/build/base-model/column.d.ts.map +1 -1
  12. package/build/base-model/column.js +2 -4
  13. package/build/base-model/reflection.d.ts.map +1 -1
  14. package/build/base-model/reflection.js +10 -48
  15. package/build/base-model/scope.d.ts.map +1 -1
  16. package/build/base-model/scope.js +5 -40
  17. package/build/base-model.js +85 -122
  18. package/build/bootstrap/attribute-row.d.ts.map +1 -1
  19. package/build/bootstrap/attribute-row.js +93 -126
  20. package/build/bootstrap/attribute-rows.d.ts.map +1 -1
  21. package/build/bootstrap/attribute-rows.js +21 -28
  22. package/build/bootstrap/card.d.ts.map +1 -1
  23. package/build/bootstrap/card.js +101 -120
  24. package/build/bootstrap/checkbox.d.ts.map +1 -1
  25. package/build/bootstrap/checkbox.js +64 -60
  26. package/build/bootstrap/checkboxes.d.ts.map +1 -1
  27. package/build/bootstrap/checkboxes.js +124 -155
  28. package/build/bootstrap/index.d.ts.map +1 -1
  29. package/build/bootstrap/index.js +2 -2
  30. package/build/bootstrap/input.d.ts +1 -1
  31. package/build/bootstrap/input.d.ts.map +1 -1
  32. package/build/bootstrap/input.js +108 -88
  33. package/build/bootstrap/invalid-feedback.d.ts +5 -2
  34. package/build/bootstrap/invalid-feedback.d.ts.map +1 -1
  35. package/build/bootstrap/invalid-feedback.js +13 -17
  36. package/build/bootstrap/paginate.d.ts.map +1 -1
  37. package/build/bootstrap/paginate.js +132 -136
  38. package/build/bootstrap/radio-buttons.d.ts +1 -1
  39. package/build/bootstrap/radio-buttons.d.ts.map +1 -1
  40. package/build/bootstrap/radio-buttons.js +40 -34
  41. package/build/bootstrap/select.d.ts +1 -1
  42. package/build/bootstrap/select.d.ts.map +1 -1
  43. package/build/bootstrap/select.js +48 -35
  44. package/build/bootstrap/sort-link.d.ts.map +1 -1
  45. package/build/bootstrap/sort-link.js +75 -112
  46. package/build/cable-connection-pool.d.ts +6 -7
  47. package/build/cable-connection-pool.d.ts.map +1 -1
  48. package/build/cable-connection-pool.js +30 -37
  49. package/build/cable-subscription-pool.d.ts.map +1 -1
  50. package/build/cable-subscription-pool.js +65 -103
  51. package/build/cable-subscription.d.ts.map +1 -1
  52. package/build/cable-subscription.js +6 -11
  53. package/build/cache-key-generator.d.ts.map +1 -1
  54. package/build/cache-key-generator.js +5 -10
  55. package/build/can-can.d.ts.map +1 -1
  56. package/build/can-can.js +37 -77
  57. package/build/channels-consumer.d.ts.map +1 -1
  58. package/build/channels-consumer.js +5 -9
  59. package/build/collection-loader.d.ts.map +1 -1
  60. package/build/collection-loader.js +31 -35
  61. package/build/collection.d.ts.map +1 -1
  62. package/build/collection.js +20 -58
  63. package/build/command-submit-data.d.ts.map +1 -1
  64. package/build/command-submit-data.js +8 -13
  65. package/build/commands-pool.d.ts.map +1 -1
  66. package/build/commands-pool.js +77 -82
  67. package/build/compose.d.ts.map +1 -1
  68. package/build/compose.js +2 -4
  69. package/build/config.d.ts.map +1 -1
  70. package/build/config.js +5 -39
  71. package/build/custom-error.d.ts.map +1 -1
  72. package/build/custom-error.js +4 -8
  73. package/build/data-set-to-attributes.d.ts.map +1 -1
  74. package/build/data-set-to-attributes.js +3 -38
  75. package/build/deserializer.d.ts.map +1 -1
  76. package/build/deserializer.js +18 -56
  77. package/build/destroy-error.d.ts.map +1 -1
  78. package/build/destroy-error.js +4 -8
  79. package/build/devise.d.ts.map +1 -1
  80. package/build/devise.js +17 -55
  81. package/build/draggable-sort/controller.d.ts.map +1 -1
  82. package/build/draggable-sort/controller.js +79 -81
  83. package/build/draggable-sort/index.d.ts.map +1 -1
  84. package/build/draggable-sort/index.js +68 -109
  85. package/build/draggable-sort/item.d.ts.map +1 -1
  86. package/build/draggable-sort/item.js +132 -173
  87. package/build/error-logger.d.ts.map +1 -1
  88. package/build/error-logger.js +9 -14
  89. package/build/error-messages.d.ts.map +1 -1
  90. package/build/error-messages.js +5 -7
  91. package/build/event-connection.d.ts +4 -1
  92. package/build/event-connection.d.ts.map +1 -1
  93. package/build/event-connection.js +16 -21
  94. package/build/event-emitter-listener.d.ts.map +1 -1
  95. package/build/event-emitter-listener.js +4 -8
  96. package/build/event-model-class.d.ts +4 -1
  97. package/build/event-model-class.d.ts.map +1 -1
  98. package/build/event-model-class.js +13 -21
  99. package/build/events.d.ts.map +1 -1
  100. package/build/events.js +4 -5
  101. package/build/form.d.ts +3 -2
  102. package/build/form.d.ts.map +1 -1
  103. package/build/form.js +54 -96
  104. package/build/history-expo.d.ts.map +1 -1
  105. package/build/history-expo.js +6 -10
  106. package/build/history-react-native.d.ts.map +1 -1
  107. package/build/history-react-native.js +9 -13
  108. package/build/history.d.ts.map +1 -1
  109. package/build/history.js +3 -4
  110. package/build/index.d.ts.map +1 -1
  111. package/build/index.js +2 -4
  112. package/build/inputs/attachment.d.ts.map +1 -1
  113. package/build/inputs/attachment.js +84 -83
  114. package/build/inputs/auto-submit.d.ts.map +1 -1
  115. package/build/inputs/auto-submit.js +6 -41
  116. package/build/inputs/checkbox.d.ts.map +1 -1
  117. package/build/inputs/checkbox.js +81 -121
  118. package/build/inputs/checkboxes.d.ts +1 -1
  119. package/build/inputs/checkboxes.d.ts.map +1 -1
  120. package/build/inputs/checkboxes.js +83 -112
  121. package/build/inputs/id-for-component.d.ts.map +1 -1
  122. package/build/inputs/id-for-component.js +3 -38
  123. package/build/inputs/input-wrapper.d.ts +2 -1
  124. package/build/inputs/input-wrapper.d.ts.map +1 -1
  125. package/build/inputs/input-wrapper.js +6 -11
  126. package/build/inputs/input.d.ts +1 -1
  127. package/build/inputs/input.d.ts.map +1 -1
  128. package/build/inputs/input.js +160 -199
  129. package/build/inputs/money.d.ts.map +1 -1
  130. package/build/inputs/money.js +129 -162
  131. package/build/inputs/name-for-component.d.ts.map +1 -1
  132. package/build/inputs/name-for-component.js +3 -38
  133. package/build/inputs/select.d.ts +1 -1
  134. package/build/inputs/select.d.ts.map +1 -1
  135. package/build/inputs/select.js +74 -77
  136. package/build/instance-of-class-name.d.ts.map +1 -1
  137. package/build/instance-of-class-name.js +5 -6
  138. package/build/is-expo.d.ts.map +1 -1
  139. package/build/is-expo.js +6 -7
  140. package/build/key-value-store.d.ts.map +1 -1
  141. package/build/key-value-store.js +4 -9
  142. package/build/link.d.ts.map +1 -1
  143. package/build/link.js +53 -63
  144. package/build/logger.d.ts.map +1 -1
  145. package/build/logger.js +4 -6
  146. package/build/merge-styles.d.ts.map +1 -1
  147. package/build/merge-styles.js +4 -6
  148. package/build/modal.d.ts.map +1 -1
  149. package/build/modal.js +24 -24
  150. package/build/model-class-require.d.ts.map +1 -1
  151. package/build/model-class-require.js +4 -39
  152. package/build/model-events.d.ts.map +1 -1
  153. package/build/model-events.js +14 -19
  154. package/build/model-name.d.ts.map +1 -1
  155. package/build/model-name.js +7 -45
  156. package/build/model-prop-type.d.ts.map +1 -1
  157. package/build/model-prop-type.js +9 -14
  158. package/build/model-recipes-loader.d.ts.map +1 -1
  159. package/build/model-recipes-loader.js +8 -13
  160. package/build/model-recipes-model-loader.d.ts +7 -7
  161. package/build/model-recipes-model-loader.d.ts.map +1 -1
  162. package/build/model-recipes-model-loader.js +18 -56
  163. package/build/models-response-reader.d.ts.map +1 -1
  164. package/build/models-response-reader.js +7 -45
  165. package/build/models.d.ts.map +1 -1
  166. package/build/models.js +5 -9
  167. package/build/money-formatter.d.ts +2 -2
  168. package/build/money-formatter.d.ts.map +1 -1
  169. package/build/money-formatter.js +13 -18
  170. package/build/not-loaded-error.d.ts.map +1 -1
  171. package/build/not-loaded-error.js +2 -4
  172. package/build/params.d.ts.map +1 -1
  173. package/build/params.js +13 -18
  174. package/build/preloaded.d.ts.map +1 -1
  175. package/build/preloaded.js +5 -43
  176. package/build/resize-observer.d.ts.map +1 -1
  177. package/build/resize-observer.js +6 -10
  178. package/build/rest-props-validator.d.ts.map +1 -1
  179. package/build/rest-props-validator.js +2 -3
  180. package/build/result.d.ts.map +1 -1
  181. package/build/result.js +2 -4
  182. package/build/router/route.d.ts +4 -4
  183. package/build/router/route.d.ts.map +1 -1
  184. package/build/router/route.js +188 -224
  185. package/build/router/switch.d.ts +2 -1
  186. package/build/router/switch.d.ts.map +1 -1
  187. package/build/router/switch.js +57 -99
  188. package/build/router.d.ts +2 -1
  189. package/build/router.d.ts.map +1 -1
  190. package/build/router.js +37 -73
  191. package/build/routes-native.d.ts.map +1 -1
  192. package/build/routes-native.js +15 -53
  193. package/build/routes.d.ts.map +1 -1
  194. package/build/routes.js +13 -48
  195. package/build/run-last.d.ts.map +1 -1
  196. package/build/run-last.js +11 -13
  197. package/build/serializer.d.ts.map +1 -1
  198. package/build/serializer.js +5 -7
  199. package/build/services.d.ts.map +1 -1
  200. package/build/services.js +4 -9
  201. package/build/session-status-updater.d.ts.map +1 -1
  202. package/build/session-status-updater.js +21 -59
  203. package/build/source-maps-loader.js +12 -50
  204. package/build/super-admin/config-reader.d.ts.map +1 -1
  205. package/build/super-admin/config-reader.js +9 -44
  206. package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts.map +1 -1
  207. package/build/super-admin/edit-page/edit-attribute-checkbox.js +53 -94
  208. package/build/super-admin/edit-page/edit-attribute-content.d.ts.map +1 -1
  209. package/build/super-admin/edit-page/edit-attribute-content.js +47 -56
  210. package/build/super-admin/edit-page/edit-attribute-input.d.ts.map +1 -1
  211. package/build/super-admin/edit-page/edit-attribute-input.js +60 -98
  212. package/build/super-admin/edit-page/edit-attribute.d.ts.map +1 -1
  213. package/build/super-admin/edit-page/edit-attribute.js +45 -79
  214. package/build/super-admin/edit-page.d.ts.map +1 -1
  215. package/build/super-admin/edit-page.js +95 -128
  216. package/build/super-admin/has-edit-config.d.ts.map +1 -1
  217. package/build/super-admin/has-edit-config.js +4 -8
  218. package/build/super-admin/index-page.d.ts.map +1 -1
  219. package/build/super-admin/index-page.js +19 -24
  220. package/build/super-admin/index.d.ts.map +1 -1
  221. package/build/super-admin/index.js +101 -115
  222. package/build/super-admin/layout/header/index.d.ts +25 -1
  223. package/build/super-admin/layout/header/index.d.ts.map +1 -1
  224. package/build/super-admin/layout/header/index.js +116 -142
  225. package/build/super-admin/layout/index.d.ts.map +1 -1
  226. package/build/super-admin/layout/index.js +88 -111
  227. package/build/super-admin/layout/menu/index.d.ts +4 -1
  228. package/build/super-admin/layout/menu/index.d.ts.map +1 -1
  229. package/build/super-admin/layout/menu/index.js +113 -132
  230. package/build/super-admin/layout/menu/menu-content.d.ts.map +1 -1
  231. package/build/super-admin/layout/menu/menu-content.js +26 -64
  232. package/build/super-admin/layout/menu/menu-item.d.ts.map +1 -1
  233. package/build/super-admin/layout/menu/menu-item.js +55 -62
  234. package/build/super-admin/layout/no-access.d.ts.map +1 -1
  235. package/build/super-admin/layout/no-access.js +16 -19
  236. package/build/super-admin/model-class-table.d.ts.map +1 -1
  237. package/build/super-admin/model-class-table.js +45 -88
  238. package/build/super-admin/models.d.ts.map +1 -1
  239. package/build/super-admin/models.js +3 -37
  240. package/build/super-admin/show-nav.d.ts.map +1 -1
  241. package/build/super-admin/show-nav.js +37 -66
  242. package/build/super-admin/show-page/belongs-to-attribute-row.d.ts.map +1 -1
  243. package/build/super-admin/show-page/belongs-to-attribute-row.js +20 -51
  244. package/build/super-admin/show-page/index.d.ts.map +1 -1
  245. package/build/super-admin/show-page/index.js +102 -137
  246. package/build/super-admin/show-reflection-actions.d.ts.map +1 -1
  247. package/build/super-admin/show-reflection-actions.js +42 -78
  248. package/build/super-admin/show-reflection-link.d.ts.map +1 -1
  249. package/build/super-admin/show-reflection-link.js +23 -27
  250. package/build/super-admin/show-reflection-page.d.ts.map +1 -1
  251. package/build/super-admin/show-reflection-page.js +36 -73
  252. package/build/table/column-content.d.ts.map +1 -1
  253. package/build/table/column-content.js +58 -97
  254. package/build/table/column-identifier.d.ts.map +1 -1
  255. package/build/table/column-identifier.js +2 -4
  256. package/build/table/column-visible.d.ts.map +1 -1
  257. package/build/table/column-visible.js +2 -4
  258. package/build/table/components/column.d.ts.map +1 -1
  259. package/build/table/components/column.js +8 -13
  260. package/build/table/components/flat-list.d.ts.map +1 -1
  261. package/build/table/components/flat-list.js +8 -13
  262. package/build/table/components/header.d.ts.map +1 -1
  263. package/build/table/components/header.js +10 -15
  264. package/build/table/components/row.d.ts.map +1 -1
  265. package/build/table/components/row.js +10 -15
  266. package/build/table/filters/attribute-element.d.ts.map +1 -1
  267. package/build/table/filters/attribute-element.js +38 -44
  268. package/build/table/filters/filter-form.d.ts.map +1 -1
  269. package/build/table/filters/filter-form.js +315 -312
  270. package/build/table/filters/filter.d.ts.map +1 -1
  271. package/build/table/filters/filter.js +54 -54
  272. package/build/table/filters/index.d.ts.map +1 -1
  273. package/build/table/filters/index.js +114 -106
  274. package/build/table/filters/load-search-modal.d.ts.map +1 -1
  275. package/build/table/filters/load-search-modal.js +95 -114
  276. package/build/table/filters/reflection-element.d.ts.map +1 -1
  277. package/build/table/filters/reflection-element.js +30 -36
  278. package/build/table/filters/save-search-modal.d.ts.map +1 -1
  279. package/build/table/filters/save-search-modal.js +46 -46
  280. package/build/table/filters/scope-element.d.ts.map +1 -1
  281. package/build/table/filters/scope-element.js +32 -38
  282. package/build/table/header-column-content.d.ts.map +1 -1
  283. package/build/table/header-column-content.js +37 -39
  284. package/build/table/header-column.d.ts.map +1 -1
  285. package/build/table/header-column.js +92 -131
  286. package/build/table/header-select.d.ts.map +1 -1
  287. package/build/table/header-select.js +57 -54
  288. package/build/table/model-callback-args.d.ts.map +1 -1
  289. package/build/table/model-callback-args.js +3 -38
  290. package/build/table/model-column.d.ts.map +1 -1
  291. package/build/table/model-column.js +67 -98
  292. package/build/table/model-row.d.ts.map +1 -1
  293. package/build/table/model-row.js +89 -115
  294. package/build/table/select-calculator.d.ts.map +1 -1
  295. package/build/table/select-calculator.js +13 -51
  296. package/build/table/settings/column-row.d.ts.map +1 -1
  297. package/build/table/settings/column-row.js +70 -106
  298. package/build/table/settings/download-action.d.ts.map +1 -1
  299. package/build/table/settings/download-action.js +58 -48
  300. package/build/table/settings/index.d.ts.map +1 -1
  301. package/build/table/settings/index.js +52 -80
  302. package/build/table/table-settings.d.ts.map +1 -1
  303. package/build/table/table-settings.js +169 -207
  304. package/build/table/table.d.ts.map +1 -1
  305. package/build/table/table.js +639 -616
  306. package/build/table/use-sorting.d.ts.map +1 -1
  307. package/build/table/use-sorting.js +6 -11
  308. package/build/table/widths.d.ts.map +1 -1
  309. package/build/table/widths.js +9 -11
  310. package/build/table/worker-plugins-check-all-checkbox.d.ts.map +1 -1
  311. package/build/table/worker-plugins-check-all-checkbox.js +74 -117
  312. package/build/table/worker-plugins-checkbox.d.ts.map +1 -1
  313. package/build/table/worker-plugins-checkbox.js +72 -115
  314. package/build/translated-attributes.d.ts.map +1 -1
  315. package/build/translated-attributes.js +2 -4
  316. package/build/translated-collections.d.ts.map +1 -1
  317. package/build/translated-collections.js +8 -13
  318. package/build/updated-attribute.d.ts +2 -1
  319. package/build/updated-attribute.d.ts.map +1 -1
  320. package/build/updated-attribute.js +16 -21
  321. package/build/url-encode.d.ts.map +1 -1
  322. package/build/url-encode.js +4 -9
  323. package/build/use-breakpoint.d.ts.map +1 -1
  324. package/build/use-breakpoint.js +20 -58
  325. package/build/use-can-can.d.ts.map +1 -1
  326. package/build/use-can-can.js +15 -20
  327. package/build/use-collection.d.ts +4 -4
  328. package/build/use-collection.d.ts.map +1 -1
  329. package/build/use-collection.js +33 -70
  330. package/build/use-created-event.d.ts.map +1 -1
  331. package/build/use-created-event.js +22 -26
  332. package/build/use-current-user-context.d.ts +1 -1
  333. package/build/use-current-user-context.d.ts.map +1 -1
  334. package/build/use-current-user-context.js +37 -73
  335. package/build/use-current-user.d.ts.map +1 -1
  336. package/build/use-current-user.js +11 -16
  337. package/build/use-destroyed-event.d.ts.map +1 -1
  338. package/build/use-destroyed-event.js +13 -17
  339. package/build/use-event-emitter.d.ts.map +1 -1
  340. package/build/use-event-emitter.js +7 -12
  341. package/build/use-event-listener.d.ts.map +1 -1
  342. package/build/use-event-listener.js +7 -11
  343. package/build/use-input.d.ts.map +1 -1
  344. package/build/use-input.js +28 -32
  345. package/build/use-model-event.d.ts.map +1 -1
  346. package/build/use-model-event.js +13 -17
  347. package/build/use-model.d.ts.map +1 -1
  348. package/build/use-model.js +27 -64
  349. package/build/use-resize-observer.d.ts.map +1 -1
  350. package/build/use-resize-observer.js +8 -12
  351. package/build/use-router.d.ts +5 -2
  352. package/build/use-router.d.ts.map +1 -1
  353. package/build/use-router.js +24 -61
  354. package/build/use-screen-layout.d.ts.map +1 -1
  355. package/build/use-screen-layout.js +11 -15
  356. package/build/use-styles.d.ts +1 -1
  357. package/build/use-styles.d.ts.map +1 -1
  358. package/build/use-styles.js +13 -51
  359. package/build/use-updated-event.d.ts.map +1 -1
  360. package/build/use-updated-event.js +13 -17
  361. package/build/use-validation-errors.d.ts.map +1 -1
  362. package/build/use-validation-errors.js +9 -13
  363. package/build/utils/button.d.ts.map +1 -1
  364. package/build/utils/button.js +93 -95
  365. package/build/utils/card.d.ts.map +1 -1
  366. package/build/utils/card.js +38 -70
  367. package/build/utils/checkbox.d.ts.map +1 -1
  368. package/build/utils/checkbox.js +56 -92
  369. package/build/utils/checkboxes.d.ts.map +1 -1
  370. package/build/utils/checkboxes.js +111 -150
  371. package/build/utils/default-style.d.ts +7 -3
  372. package/build/utils/default-style.d.ts.map +1 -1
  373. package/build/utils/default-style.js +16 -55
  374. package/build/utils/header.d.ts +2 -1
  375. package/build/utils/header.d.ts.map +1 -1
  376. package/build/utils/header.js +6 -11
  377. package/build/utils/icon.d.ts.map +1 -1
  378. package/build/utils/icon.js +22 -60
  379. package/build/utils/invalid-feedback.d.ts.map +1 -1
  380. package/build/utils/invalid-feedback.js +17 -22
  381. package/build/utils/modal.d.ts.map +1 -1
  382. package/build/utils/modal.js +30 -63
  383. package/build/utils/text.d.ts.map +1 -1
  384. package/build/utils/text.js +10 -13
  385. package/build/validation-error.d.ts.map +1 -1
  386. package/build/validation-error.js +24 -62
  387. package/build/validation-errors.d.ts.map +1 -1
  388. package/build/validation-errors.js +24 -63
  389. package/build/with-api-maker.d.ts.map +1 -1
  390. package/build/with-api-maker.js +13 -51
  391. package/build/with-collection.d.ts.map +1 -1
  392. package/build/with-collection.js +11 -49
  393. package/build/with-current-user.d.ts +2 -1
  394. package/build/with-current-user.d.ts.map +1 -1
  395. package/build/with-current-user.js +6 -11
  396. package/build/with-model.d.ts.map +1 -1
  397. package/build/with-model.js +8 -13
  398. package/build/with-router.d.ts +2 -1
  399. package/build/with-router.d.ts.map +1 -1
  400. package/build/with-router.js +6 -11
  401. package/package.json +4 -2
@@ -1,66 +1,27 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const jsx_runtime_1 = require("react/jsx-runtime");
40
- const react_1 = __importStar(require("react"));
41
- const react_native_1 = require("react-native");
42
- const base_component_js_1 = __importDefault(require("../base-component.js"));
43
- const config_reader_js_1 = __importDefault(require("./config-reader.js"));
44
- const edit_page_1 = __importDefault(require("./edit-page"));
45
- const flash_notifications_js_1 = __importDefault(require("flash-notifications/build/flash-notifications.js"));
46
- const has_edit_config_js_1 = __importDefault(require("./has-edit-config.js"));
47
- const index_page_1 = __importDefault(require("./index-page"));
48
- const index_1 = __importDefault(require("./layout/index"));
49
- const link_1 = __importDefault(require("../link"));
50
- const memo_js_1 = __importDefault(require("set-state-compare/build/memo.js"));
1
+ import React, { useMemo } from "react";
2
+ import { Pressable, StyleSheet, View } from "react-native";
3
+ import BaseComponent from "../base-component.js";
4
+ import ConfigReader from "./config-reader.js";
5
+ import EditPage from "./edit-page";
6
+ import FlashNotifications from "flash-notifications/build/flash-notifications.js";
7
+ import hasEditConfig from "./has-edit-config.js";
8
+ import IndexPage from "./index-page";
9
+ import Layout from "./layout/index";
10
+ import Link from "../link";
11
+ import memo from "set-state-compare/build/memo.js";
51
12
  // @ts-expect-error
52
- const models = __importStar(require("models.js"));
53
- const params_js_1 = __importDefault(require("../params.js"));
54
- const shape_component_js_1 = require("set-state-compare/build/shape-component.js");
55
- const index_2 = __importDefault(require("./show-page/index"));
56
- const show_reflection_actions_1 = __importDefault(require("./show-reflection-actions"));
57
- const show_reflection_page_1 = __importDefault(require("./show-reflection-page"));
58
- const text_1 = __importDefault(require("../utils/text"));
59
- const use_can_can_js_1 = __importDefault(require("../use-can-can.js"));
60
- const use_current_user_js_1 = __importDefault(require("../use-current-user.js"));
61
- const use_query_params_js_1 = __importDefault(require("on-location-changed/build/use-query-params.js"));
62
- const use_styles_js_1 = __importDefault(require("../use-styles.js"));
63
- const styles = react_native_1.StyleSheet.create({
13
+ import * as models from "models.js";
14
+ import Params from "../params.js";
15
+ import { shapeComponent } from "set-state-compare/build/shape-component.js";
16
+ import ShowPage from "./show-page/index";
17
+ import ShowReflectionActions from "./show-reflection-actions";
18
+ import ShowReflectionPage from "./show-reflection-page";
19
+ import Text from "../utils/text";
20
+ import useCanCan from "../use-can-can.js";
21
+ import useCurrentUser from "../use-current-user.js";
22
+ import useQueryParams from "on-location-changed/build/use-query-params.js";
23
+ import useStyles from "../use-styles.js";
24
+ const styles = StyleSheet.create({
64
25
  actionsView: {
65
26
  flexDirection: "row",
66
27
  alignItems: "center"
@@ -78,54 +39,20 @@ const styles = react_native_1.StyleSheet.create({
78
39
  marginRight: 10
79
40
  }
80
41
  });
81
- exports.default = (0, memo_js_1.default)((0, shape_component_js_1.shapeComponent)(class ApiMakerSuperAdmin extends base_component_js_1.default {
82
- constructor() {
83
- super(...arguments);
84
- this.loadModel = async () => {
85
- const { configReader, modelClass, modelId, modelName } = this.tt;
86
- if (modelId && modelClass) {
87
- const abilities = {};
88
- const abilitiesForModel = ["destroy", "edit"];
89
- const layoutSelect = configReader?.modelConfig?.layout?.select;
90
- abilities[modelName] = abilitiesForModel;
91
- const query = await modelClass
92
- .ransack({ id_eq: modelId })
93
- .abilities(abilities);
94
- if (layoutSelect)
95
- query.select(layoutSelect);
96
- const model = await query.first();
97
- this.setState({ model });
98
- }
99
- else {
100
- this.setState({ model: undefined });
101
- }
102
- };
103
- this.onDestroyClicked = async () => {
104
- if (!confirm("Are you sure?")) {
105
- return;
106
- }
107
- try {
108
- await this.s.model.destroy();
109
- params_js_1.default.changeParams({ mode: undefined, model_id: undefined });
110
- }
111
- catch (error) {
112
- flash_notifications_js_1.default.errorResponse(error);
113
- }
114
- };
115
- }
42
+ export default memo(shapeComponent(class ApiMakerSuperAdmin extends BaseComponent {
116
43
  setup() {
117
- this.queryParams = (0, use_query_params_js_1.default)();
44
+ this.queryParams = useQueryParams();
118
45
  if (this.queryParams.model) {
119
46
  this.modelClass = models[this.queryParams.model];
120
47
  }
121
48
  else {
122
49
  this.modelClass = null;
123
50
  }
124
- this.configReader = (0, react_1.useMemo)(() => this.modelClass && config_reader_js_1.default.forModel(this.modelClass), [this.modelClass]);
51
+ this.configReader = useMemo(() => this.modelClass && ConfigReader.forModel(this.modelClass), [this.modelClass]);
125
52
  this.modelId = this.queryParams.model_id;
126
53
  this.modelName = this.modelClass?.modelClassData()?.name;
127
- this.currentUser = (0, use_current_user_js_1.default)();
128
- this.canCan = (0, use_can_can_js_1.default)(() => {
54
+ this.currentUser = useCurrentUser();
55
+ this.canCan = useCanCan(() => {
129
56
  const abilities = [];
130
57
  if (this.modelClass)
131
58
  abilities.push([this.modelClass, ["new"]]);
@@ -134,8 +61,27 @@ exports.default = (0, memo_js_1.default)((0, shape_component_js_1.shapeComponent
134
61
  this.useStates({
135
62
  model: undefined
136
63
  });
137
- (0, react_1.useMemo)(() => { this.loadModel(); }, [this.modelId]);
64
+ useMemo(() => { this.loadModel(); }, [this.modelId]);
138
65
  }
66
+ loadModel = async () => {
67
+ const { configReader, modelClass, modelId, modelName } = this.tt;
68
+ if (modelId && modelClass) {
69
+ const abilities = {};
70
+ const abilitiesForModel = ["destroy", "edit"];
71
+ const layoutSelect = configReader?.modelConfig?.layout?.select;
72
+ abilities[modelName] = abilitiesForModel;
73
+ const query = await modelClass
74
+ .ransack({ id_eq: modelId })
75
+ .abilities(abilities);
76
+ if (layoutSelect)
77
+ query.select(layoutSelect);
78
+ const model = await query.first();
79
+ this.setState({ model });
80
+ }
81
+ else {
82
+ this.setState({ model: undefined });
83
+ }
84
+ };
139
85
  render() {
140
86
  const { canCan, configReader, modelClass, modelId, modelName, queryParams } = this.tt;
141
87
  const { model } = this.s;
@@ -159,18 +105,58 @@ exports.default = (0, memo_js_1.default)((0, shape_component_js_1.shapeComponent
159
105
  else {
160
106
  pageToShow = "welcome";
161
107
  }
162
- const actionsViewStyle = (0, use_styles_js_1.default)(styles, "actionsView");
163
- const actions = (0, react_1.useMemo)(() => (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: actionsViewStyle, children: [model && modelConfigActions && modelConfigActions({ model }), modelClass && pageToShow == "index" &&
164
- (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: canCan?.can("new", modelClass) && (0, has_edit_config_js_1.default)(modelClass) &&
165
- (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" &&
166
- (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [model.can("edit") && (0, has_edit_config_js_1.default)(modelClass) &&
167
- (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") &&
168
- (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" &&
169
- (0, jsx_runtime_1.jsx)(show_reflection_actions_1.default, { model: model, modelClass: modelClass, reflectionName: queryParams.model_reflection })] }), [canCan, configReader?.actions, model, modelClass, pageToShow]);
170
- return ((0, jsx_runtime_1.jsxs)(index_1.default, { actions: actions, active: queryParams.model, headerTitle: modelClass?.modelName()?.human({ count: 2 }), children: [pageToShow == "index" &&
171
- (0, jsx_runtime_1.jsx)(index_page_1.default, { modelClass: modelClass }, `index-page-${modelName}`), pageToShow == "show" &&
172
- (0, jsx_runtime_1.jsx)(index_2.default, { modelClass: modelClass, modelId: modelId }, `show-page-${modelName}-${modelId}`), pageToShow == "show_reflection" &&
173
- (0, jsx_runtime_1.jsx)(show_reflection_page_1.default, { modelClass: modelClass, modelId: modelId }, `show-reflection-page-${modelName}-${modelId}`), pageToShow == "edit" &&
174
- (0, jsx_runtime_1.jsx)(edit_page_1.default, { modelClass: modelClass }, `edit-page-${modelName}-${modelId}`)] }));
108
+ const actionsViewStyle = useStyles(styles, "actionsView");
109
+ const actions = useMemo(() => <View style={actionsViewStyle}>
110
+ {model && modelConfigActions && modelConfigActions({ model })}
111
+ {modelClass && pageToShow == "index" &&
112
+ <>
113
+ {canCan?.can("new", modelClass) && hasEditConfig(modelClass) &&
114
+ <Link dataSet={{ class: "create-new-model-link" }} style={styles.createNewModelLink} to={Params.withParams({ model: modelName, mode: "new" })}>
115
+ <Text>
116
+ Create new
117
+ </Text>
118
+ </Link>}
119
+ </>}
120
+ {model && pageToShow == "show" &&
121
+ <>
122
+ {model.can("edit") && hasEditConfig(modelClass) &&
123
+ <Link dataSet={{ class: "edit-model-link" }} style={styles.editModelLink} to={Params.withParams({ model: modelName, model_id: modelId, mode: "edit" })}>
124
+ <Text>
125
+ Edit
126
+ </Text>
127
+ </Link>}
128
+ {model.can("destroy") &&
129
+ <Pressable dataSet={{ class: "destroy-model-link" }} onPress={this.tt.onDestroyClicked} style={styles.destroyModelLink}>
130
+ <Text>
131
+ Delete
132
+ </Text>
133
+ </Pressable>}
134
+ </>}
135
+ {pageToShow == "show_reflection" &&
136
+ <ShowReflectionActions model={model} modelClass={modelClass} reflectionName={queryParams.model_reflection}/>}
137
+ </View>, [canCan, configReader?.actions, model, modelClass, pageToShow]);
138
+ return (<Layout actions={actions} active={queryParams.model} headerTitle={modelClass?.modelName()?.human({ count: 2 })}>
139
+ {pageToShow == "index" &&
140
+ <IndexPage key={`index-page-${modelName}`} modelClass={modelClass}/>}
141
+ {pageToShow == "show" &&
142
+ <ShowPage key={`show-page-${modelName}-${modelId}`} modelClass={modelClass} modelId={modelId}/>}
143
+ {pageToShow == "show_reflection" &&
144
+ <ShowReflectionPage key={`show-reflection-page-${modelName}-${modelId}`} modelClass={modelClass} modelId={modelId}/>}
145
+ {pageToShow == "edit" &&
146
+ <EditPage key={`edit-page-${modelName}-${modelId}`} modelClass={modelClass}/>}
147
+ </Layout>);
175
148
  }
149
+ onDestroyClicked = async () => {
150
+ if (!confirm("Are you sure?")) {
151
+ return;
152
+ }
153
+ try {
154
+ await this.s.model.destroy();
155
+ Params.changeParams({ mode: undefined, model_id: undefined });
156
+ }
157
+ catch (error) {
158
+ FlashNotifications.errorResponse(error);
159
+ }
160
+ };
176
161
  }));
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInN1cGVyLWFkbWluL2luZGV4LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFDLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUNwQyxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDeEQsT0FBTyxhQUFhLE1BQU0sc0JBQXNCLENBQUE7QUFDaEQsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxRQUFRLE1BQU0sYUFBYSxDQUFBO0FBQ2xDLE9BQU8sa0JBQWtCLE1BQU0sa0RBQWtELENBQUE7QUFDakYsT0FBTyxhQUFhLE1BQU0sc0JBQXNCLENBQUE7QUFDaEQsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFBO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLGdCQUFnQixDQUFBO0FBQ25DLE9BQU8sSUFBSSxNQUFNLFNBQVMsQ0FBQTtBQUMxQixPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxtQkFBbUI7QUFDbkIsT0FBTyxLQUFLLE1BQU0sTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBQ2pDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RSxPQUFPLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQTtBQUN4QyxPQUFPLHFCQUFxQixNQUFNLDJCQUEyQixDQUFBO0FBQzdELE9BQU8sa0JBQWtCLE1BQU0sd0JBQXdCLENBQUE7QUFDdkQsT0FBTyxJQUFJLE1BQU0sZUFBZSxDQUFBO0FBQ2hDLE9BQU8sU0FBUyxNQUFNLG1CQUFtQixDQUFBO0FBQ3pDLE9BQU8sY0FBYyxNQUFNLHdCQUF3QixDQUFBO0FBQ25ELE9BQU8sY0FBYyxNQUFNLCtDQUErQyxDQUFBO0FBQzFFLE9BQU8sU0FBUyxNQUFNLGtCQUFrQixDQUFBO0FBRXhDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFDL0IsV0FBVyxFQUFFO1FBQ1gsYUFBYSxFQUFFLEtBQUs7UUFDcEIsVUFBVSxFQUFFLFFBQVE7S0FDckI7SUFDRCxrQkFBa0IsRUFBRTtRQUNsQixVQUFVLEVBQUUsRUFBRTtRQUNkLFdBQVcsRUFBRSxFQUFFO0tBQ2hCO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDaEIsVUFBVSxFQUFFLEVBQUU7UUFDZCxXQUFXLEVBQUUsRUFBRTtLQUNoQjtJQUNELGFBQWEsRUFBRTtRQUNiLFVBQVUsRUFBRSxFQUFFO1FBQ2QsV0FBVyxFQUFFLEVBQUU7S0FDaEI7Q0FDRixDQUFDLENBQUE7QUFFRixlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxrQkFBbUIsU0FBUSxhQUFhO0lBQy9FLEtBQUs7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFBO1FBRW5DLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUE7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtRQUMvRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFBO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUE7UUFDeEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFjLEVBQUUsQ0FBQTtRQUVuQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FDckIsR0FBRyxFQUFFO1lBQ0gsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO1lBRXBCLElBQUksSUFBSSxDQUFDLFVBQVU7Z0JBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFFL0QsT0FBTyxTQUFTLENBQUE7UUFDbEIsQ0FBQyxFQUNELENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzFDLENBQUE7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsS0FBSyxFQUFFLFNBQVM7U0FDakIsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxDQUNMLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQSxDQUFDLENBQUMsRUFDMUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQ2YsQ0FBQTtJQUNILENBQUM7SUFFRCxTQUFTLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDckIsTUFBTSxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUE7UUFFOUQsSUFBSSxPQUFPLElBQUksVUFBVSxFQUFFLENBQUM7WUFDMUIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO1lBQ3BCLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDN0MsTUFBTSxZQUFZLEdBQUcsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFBO1lBRTlELFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxpQkFBaUIsQ0FBQTtZQUV4QyxNQUFNLEtBQUssR0FBRyxNQUFNLFVBQVU7aUJBQzNCLE9BQU8sQ0FBQyxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsQ0FBQztpQkFDekIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBRXZCLElBQUksWUFBWTtnQkFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBRTVDLE1BQU0sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFBO1lBRWpDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFBO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFBO1FBQ25DLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxNQUFNO1FBQ0osTUFBTSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQTtRQUNuRixNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUN0QixNQUFNLGtCQUFrQixHQUFHLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFBO1FBQzdELElBQUksVUFBVSxDQUFBO1FBRWQsSUFBSSxXQUFXLENBQUMsS0FBSyxJQUFJLFdBQVcsQ0FBQyxRQUFRLElBQUksV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUUsVUFBVSxHQUFHLGlCQUFpQixDQUFBO1FBQ2hDLENBQUM7YUFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLLElBQUksV0FBVyxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ25GLFVBQVUsR0FBRyxNQUFNLENBQUE7UUFDckIsQ0FBQzthQUFNLElBQUksV0FBVyxDQUFDLEtBQUssSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckQsVUFBVSxHQUFHLE1BQU0sQ0FBQTtRQUNyQixDQUFDO2FBQU0sSUFBSSxXQUFXLENBQUMsS0FBSyxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDMUQsVUFBVSxHQUFHLE1BQU0sQ0FBQTtRQUNyQixDQUFDO2FBQU0sSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsVUFBVSxHQUFHLE9BQU8sQ0FBQTtRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsR0FBRyxTQUFTLENBQUE7UUFDeEIsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQTtRQUV6RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQ3JCLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQ2xDO1FBQUEsQ0FBQyxLQUFLLElBQUksa0JBQWtCLElBQUksa0JBQWtCLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUMzRDtRQUFBLENBQUMsVUFBVSxJQUFJLFVBQVUsSUFBSSxPQUFPO2dCQUNsQyxFQUNFO1lBQUEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDO3dCQUMxRCxDQUFDLElBQUksQ0FDSCxPQUFPLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSx1QkFBdUIsRUFBQyxDQUFDLENBQzFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUNqQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUV2RDtnQkFBQSxDQUFDLElBQUksQ0FDSDs7Z0JBQ0YsRUFBRSxJQUFJLENBQ1I7Y0FBQSxFQUFFLElBQUksQ0FDUixDQUNGO1VBQUEsR0FDRixDQUNBO1FBQUEsQ0FBQyxLQUFLLElBQUksVUFBVSxJQUFJLE1BQU07Z0JBQzVCLEVBQ0U7WUFBQSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQzt3QkFDN0MsQ0FBQyxJQUFJLENBQ0gsT0FBTyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUMsQ0FBQyxDQUNwQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQzVCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUMsQ0FFM0U7Z0JBQUEsQ0FBQyxJQUFJLENBQ0g7O2dCQUNGLEVBQUUsSUFBSSxDQUNSO2NBQUEsRUFBRSxJQUFJLENBQ1IsQ0FDQTtZQUFBLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7d0JBQ25CLENBQUMsU0FBUyxDQUNSLE9BQU8sQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLG9CQUFvQixFQUFDLENBQUMsQ0FDdkMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUNsQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FFL0I7Z0JBQUEsQ0FBQyxJQUFJLENBQ0g7O2dCQUNGLEVBQUUsSUFBSSxDQUNSO2NBQUEsRUFBRSxTQUFTLENBQ2IsQ0FDRjtVQUFBLEdBQ0YsQ0FDQTtRQUFBLENBQUMsVUFBVSxJQUFJLGlCQUFpQjtnQkFDOUIsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsRUFDNUcsQ0FDRjtNQUFBLEVBQUUsSUFBSSxDQUFDLEVBQ1AsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUMvRCxDQUFBO1FBRUQsT0FBTyxDQUNMLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FDM0c7UUFBQSxDQUFDLFVBQVUsSUFBSSxPQUFPO2dCQUNwQixDQUFDLFNBQVMsQ0FDUixHQUFHLENBQUMsQ0FBQyxjQUFjLFNBQVMsRUFBRSxDQUFDLENBQy9CLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUUzQixDQUNBO1FBQUEsQ0FBQyxVQUFVLElBQUksTUFBTTtnQkFDbkIsQ0FBQyxRQUFRLENBQ1AsR0FBRyxDQUFDLENBQUMsYUFBYSxTQUFTLElBQUksT0FBTyxFQUFFLENBQUMsQ0FDekMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQ3ZCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUVyQixDQUNBO1FBQUEsQ0FBQyxVQUFVLElBQUksaUJBQWlCO2dCQUM5QixDQUFDLGtCQUFrQixDQUNqQixHQUFHLENBQUMsQ0FBQyx3QkFBd0IsU0FBUyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQ3BELFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUN2QixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFFckIsQ0FDQTtRQUFBLENBQUMsVUFBVSxJQUFJLE1BQU07Z0JBQ25CLENBQUMsUUFBUSxDQUNQLEdBQUcsQ0FBQyxDQUFDLGFBQWEsU0FBUyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQ3pDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUUzQixDQUNGO01BQUEsRUFBRSxNQUFNLENBQUMsQ0FDVixDQUFBO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUE7WUFFNUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUE7UUFDN0QsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixrQkFBa0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDekMsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7UHJlc3NhYmxlLCBTdHlsZVNoZWV0LCBWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuLi9iYXNlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgQ29uZmlnUmVhZGVyIGZyb20gXCIuL2NvbmZpZy1yZWFkZXIuanNcIlxuaW1wb3J0IEVkaXRQYWdlIGZyb20gXCIuL2VkaXQtcGFnZVwiXG5pbXBvcnQgRmxhc2hOb3RpZmljYXRpb25zIGZyb20gXCJmbGFzaC1ub3RpZmljYXRpb25zL2J1aWxkL2ZsYXNoLW5vdGlmaWNhdGlvbnMuanNcIlxuaW1wb3J0IGhhc0VkaXRDb25maWcgZnJvbSBcIi4vaGFzLWVkaXQtY29uZmlnLmpzXCJcbmltcG9ydCBJbmRleFBhZ2UgZnJvbSBcIi4vaW5kZXgtcGFnZVwiXG5pbXBvcnQgTGF5b3V0IGZyb20gXCIuL2xheW91dC9pbmRleFwiXG5pbXBvcnQgTGluayBmcm9tIFwiLi4vbGlua1wiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG4vLyBAdHMtZXhwZWN0LWVycm9yXG5pbXBvcnQgKiBhcyBtb2RlbHMgZnJvbSBcIm1vZGVscy5qc1wiXG5pbXBvcnQgUGFyYW1zIGZyb20gXCIuLi9wYXJhbXMuanNcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgU2hvd1BhZ2UgZnJvbSBcIi4vc2hvdy1wYWdlL2luZGV4XCJcbmltcG9ydCBTaG93UmVmbGVjdGlvbkFjdGlvbnMgZnJvbSBcIi4vc2hvdy1yZWZsZWN0aW9uLWFjdGlvbnNcIlxuaW1wb3J0IFNob3dSZWZsZWN0aW9uUGFnZSBmcm9tIFwiLi9zaG93LXJlZmxlY3Rpb24tcGFnZVwiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi4vdXRpbHMvdGV4dFwiXG5pbXBvcnQgdXNlQ2FuQ2FuIGZyb20gXCIuLi91c2UtY2FuLWNhbi5qc1wiXG5pbXBvcnQgdXNlQ3VycmVudFVzZXIgZnJvbSBcIi4uL3VzZS1jdXJyZW50LXVzZXIuanNcIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXMuanNcIlxuaW1wb3J0IHVzZVN0eWxlcyBmcm9tIFwiLi4vdXNlLXN0eWxlcy5qc1wiXG5cbmNvbnN0IHN0eWxlcyA9IFN0eWxlU2hlZXQuY3JlYXRlKHtcbiAgYWN0aW9uc1ZpZXc6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLFxuICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCJcbiAgfSxcbiAgY3JlYXRlTmV3TW9kZWxMaW5rOiB7XG4gICAgbWFyZ2luTGVmdDogMTAsXG4gICAgbWFyZ2luUmlnaHQ6IDEwXG4gIH0sXG4gIGRlc3Ryb3lNb2RlbExpbms6IHtcbiAgICBtYXJnaW5MZWZ0OiAxMCxcbiAgICBtYXJnaW5SaWdodDogMTBcbiAgfSxcbiAgZWRpdE1vZGVsTGluazoge1xuICAgIG1hcmdpbkxlZnQ6IDEwLFxuICAgIG1hcmdpblJpZ2h0OiAxMFxuICB9XG59KVxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIEFwaU1ha2VyU3VwZXJBZG1pbiBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzZXR1cCgpIHtcbiAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gdXNlUXVlcnlQYXJhbXMoKVxuXG4gICAgaWYgKHRoaXMucXVlcnlQYXJhbXMubW9kZWwpIHtcbiAgICAgIHRoaXMubW9kZWxDbGFzcyA9IG1vZGVsc1t0aGlzLnF1ZXJ5UGFyYW1zLm1vZGVsXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGVsQ2xhc3MgPSBudWxsXG4gICAgfVxuXG4gICAgdGhpcy5jb25maWdSZWFkZXIgPSB1c2VNZW1vKCgpID0+IHRoaXMubW9kZWxDbGFzcyAmJiBDb25maWdSZWFkZXIuZm9yTW9kZWwodGhpcy5tb2RlbENsYXNzKSwgW3RoaXMubW9kZWxDbGFzc10pXG4gICAgdGhpcy5tb2RlbElkID0gdGhpcy5xdWVyeVBhcmFtcy5tb2RlbF9pZFxuICAgIHRoaXMubW9kZWxOYW1lID0gdGhpcy5tb2RlbENsYXNzPy5tb2RlbENsYXNzRGF0YSgpPy5uYW1lXG4gICAgdGhpcy5jdXJyZW50VXNlciA9IHVzZUN1cnJlbnRVc2VyKClcblxuICAgIHRoaXMuY2FuQ2FuID0gdXNlQ2FuQ2FuKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBhYmlsaXRpZXMgPSBbXVxuXG4gICAgICAgIGlmICh0aGlzLm1vZGVsQ2xhc3MpIGFiaWxpdGllcy5wdXNoKFt0aGlzLm1vZGVsQ2xhc3MsIFtcIm5ld1wiXV0pXG5cbiAgICAgICAgcmV0dXJuIGFiaWxpdGllc1xuICAgICAgfSxcbiAgICAgIFt0aGlzLmN1cnJlbnRVc2VyPy5pZCgpLCB0aGlzLm1vZGVsQ2xhc3NdXG4gICAgKVxuXG4gICAgdGhpcy51c2VTdGF0ZXMoe1xuICAgICAgbW9kZWw6IHVuZGVmaW5lZFxuICAgIH0pXG4gICAgdXNlTWVtbyhcbiAgICAgICgpID0+IHsgdGhpcy5sb2FkTW9kZWwoKSB9LFxuICAgICAgW3RoaXMubW9kZWxJZF1cbiAgICApXG4gIH1cblxuICBsb2FkTW9kZWwgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge2NvbmZpZ1JlYWRlciwgbW9kZWxDbGFzcywgbW9kZWxJZCwgbW9kZWxOYW1lfSA9IHRoaXMudHRcblxuICAgIGlmIChtb2RlbElkICYmIG1vZGVsQ2xhc3MpIHtcbiAgICAgIGNvbnN0IGFiaWxpdGllcyA9IHt9XG4gICAgICBjb25zdCBhYmlsaXRpZXNGb3JNb2RlbCA9IFtcImRlc3Ryb3lcIiwgXCJlZGl0XCJdXG4gICAgICBjb25zdCBsYXlvdXRTZWxlY3QgPSBjb25maWdSZWFkZXI/Lm1vZGVsQ29uZmlnPy5sYXlvdXQ/LnNlbGVjdFxuXG4gICAgICBhYmlsaXRpZXNbbW9kZWxOYW1lXSA9IGFiaWxpdGllc0Zvck1vZGVsXG5cbiAgICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgbW9kZWxDbGFzc1xuICAgICAgICAucmFuc2Fjayh7aWRfZXE6IG1vZGVsSWR9KVxuICAgICAgICAuYWJpbGl0aWVzKGFiaWxpdGllcylcblxuICAgICAgaWYgKGxheW91dFNlbGVjdCkgcXVlcnkuc2VsZWN0KGxheW91dFNlbGVjdClcblxuICAgICAgY29uc3QgbW9kZWwgPSBhd2FpdCBxdWVyeS5maXJzdCgpXG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGVsfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWw6IHVuZGVmaW5lZH0pXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtjYW5DYW4sIGNvbmZpZ1JlYWRlciwgbW9kZWxDbGFzcywgbW9kZWxJZCwgbW9kZWxOYW1lLCBxdWVyeVBhcmFtc30gPSB0aGlzLnR0XG4gICAgY29uc3Qge21vZGVsfSA9IHRoaXMuc1xuICAgIGNvbnN0IG1vZGVsQ29uZmlnQWN0aW9ucyA9IGNvbmZpZ1JlYWRlcj8ubW9kZWxDb25maWc/LmFjdGlvbnNcbiAgICBsZXQgcGFnZVRvU2hvd1xuXG4gICAgaWYgKHF1ZXJ5UGFyYW1zLm1vZGVsICYmIHF1ZXJ5UGFyYW1zLm1vZGVsX2lkICYmIHF1ZXJ5UGFyYW1zLm1vZGVsX3JlZmxlY3Rpb24pIHtcbiAgICAgIHBhZ2VUb1Nob3cgPSBcInNob3dfcmVmbGVjdGlvblwiXG4gICAgfSBlbHNlIGlmIChxdWVyeVBhcmFtcy5tb2RlbCAmJiBxdWVyeVBhcmFtcy5tb2RlbF9pZCAmJiBxdWVyeVBhcmFtcy5tb2RlID09IFwiZWRpdFwiKSB7XG4gICAgICBwYWdlVG9TaG93ID0gXCJlZGl0XCJcbiAgICB9IGVsc2UgaWYgKHF1ZXJ5UGFyYW1zLm1vZGVsICYmIHF1ZXJ5UGFyYW1zLm1vZGVsX2lkKSB7XG4gICAgICBwYWdlVG9TaG93ID0gXCJzaG93XCJcbiAgICB9IGVsc2UgaWYgKHF1ZXJ5UGFyYW1zLm1vZGVsICYmIHF1ZXJ5UGFyYW1zLm1vZGUgPT0gXCJuZXdcIikge1xuICAgICAgcGFnZVRvU2hvdyA9IFwiZWRpdFwiXG4gICAgfSBlbHNlIGlmIChxdWVyeVBhcmFtcy5tb2RlbCkge1xuICAgICAgcGFnZVRvU2hvdyA9IFwiaW5kZXhcIlxuICAgIH0gZWxzZSB7XG4gICAgICBwYWdlVG9TaG93ID0gXCJ3ZWxjb21lXCJcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb25zVmlld1N0eWxlID0gdXNlU3R5bGVzKHN0eWxlcywgXCJhY3Rpb25zVmlld1wiKVxuXG4gICAgY29uc3QgYWN0aW9ucyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiA8VmlldyBzdHlsZT17YWN0aW9uc1ZpZXdTdHlsZX0+XG4gICAgICAgIHttb2RlbCAmJiBtb2RlbENvbmZpZ0FjdGlvbnMgJiYgbW9kZWxDb25maWdBY3Rpb25zKHttb2RlbH0pfVxuICAgICAgICB7bW9kZWxDbGFzcyAmJiBwYWdlVG9TaG93ID09IFwiaW5kZXhcIiAmJlxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7Y2FuQ2FuPy5jYW4oXCJuZXdcIiwgbW9kZWxDbGFzcykgJiYgaGFzRWRpdENvbmZpZyhtb2RlbENsYXNzKSAmJlxuICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgIGRhdGFTZXQ9e3tjbGFzczogXCJjcmVhdGUtbmV3LW1vZGVsLWxpbmtcIn19XG4gICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5jcmVhdGVOZXdNb2RlbExpbmt9XG4gICAgICAgICAgICAgICAgdG89e1BhcmFtcy53aXRoUGFyYW1zKHttb2RlbDogbW9kZWxOYW1lLCBtb2RlOiBcIm5ld1wifSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgICAgICAgIENyZWF0ZSBuZXdcbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgfVxuICAgICAgICB7bW9kZWwgJiYgcGFnZVRvU2hvdyA9PSBcInNob3dcIiAmJlxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7bW9kZWwuY2FuKFwiZWRpdFwiKSAmJiBoYXNFZGl0Q29uZmlnKG1vZGVsQ2xhc3MpICYmXG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgZGF0YVNldD17e2NsYXNzOiBcImVkaXQtbW9kZWwtbGlua1wifX1cbiAgICAgICAgICAgICAgICBzdHlsZT17c3R5bGVzLmVkaXRNb2RlbExpbmt9XG4gICAgICAgICAgICAgICAgdG89e1BhcmFtcy53aXRoUGFyYW1zKHttb2RlbDogbW9kZWxOYW1lLCBtb2RlbF9pZDogbW9kZWxJZCwgbW9kZTogXCJlZGl0XCJ9KX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgICAgICAgRWRpdFxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge21vZGVsLmNhbihcImRlc3Ryb3lcIikgJiZcbiAgICAgICAgICAgICAgPFByZXNzYWJsZVxuICAgICAgICAgICAgICAgIGRhdGFTZXQ9e3tjbGFzczogXCJkZXN0cm95LW1vZGVsLWxpbmtcIn19XG4gICAgICAgICAgICAgICAgb25QcmVzcz17dGhpcy50dC5vbkRlc3Ryb3lDbGlja2VkfVxuICAgICAgICAgICAgICAgIHN0eWxlPXtzdHlsZXMuZGVzdHJveU1vZGVsTGlua31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgfVxuICAgICAgICB7cGFnZVRvU2hvdyA9PSBcInNob3dfcmVmbGVjdGlvblwiICYmXG4gICAgICAgICAgPFNob3dSZWZsZWN0aW9uQWN0aW9ucyBtb2RlbD17bW9kZWx9IG1vZGVsQ2xhc3M9e21vZGVsQ2xhc3N9IHJlZmxlY3Rpb25OYW1lPXtxdWVyeVBhcmFtcy5tb2RlbF9yZWZsZWN0aW9ufSAvPlxuICAgICAgICB9XG4gICAgICA8L1ZpZXc+LFxuICAgICAgW2NhbkNhbiwgY29uZmlnUmVhZGVyPy5hY3Rpb25zLCBtb2RlbCwgbW9kZWxDbGFzcywgcGFnZVRvU2hvd11cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPExheW91dCBhY3Rpb25zPXthY3Rpb25zfSBhY3RpdmU9e3F1ZXJ5UGFyYW1zLm1vZGVsfSBoZWFkZXJUaXRsZT17bW9kZWxDbGFzcz8ubW9kZWxOYW1lKCk/Lmh1bWFuKHtjb3VudDogMn0pfT5cbiAgICAgICAge3BhZ2VUb1Nob3cgPT0gXCJpbmRleFwiICYmXG4gICAgICAgICAgPEluZGV4UGFnZVxuICAgICAgICAgICAga2V5PXtgaW5kZXgtcGFnZS0ke21vZGVsTmFtZX1gfVxuICAgICAgICAgICAgbW9kZWxDbGFzcz17bW9kZWxDbGFzc31cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIHtwYWdlVG9TaG93ID09IFwic2hvd1wiICYmXG4gICAgICAgICAgPFNob3dQYWdlXG4gICAgICAgICAgICBrZXk9e2BzaG93LXBhZ2UtJHttb2RlbE5hbWV9LSR7bW9kZWxJZH1gfVxuICAgICAgICAgICAgbW9kZWxDbGFzcz17bW9kZWxDbGFzc31cbiAgICAgICAgICAgIG1vZGVsSWQ9e21vZGVsSWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICB7cGFnZVRvU2hvdyA9PSBcInNob3dfcmVmbGVjdGlvblwiICYmXG4gICAgICAgICAgPFNob3dSZWZsZWN0aW9uUGFnZVxuICAgICAgICAgICAga2V5PXtgc2hvdy1yZWZsZWN0aW9uLXBhZ2UtJHttb2RlbE5hbWV9LSR7bW9kZWxJZH1gfVxuICAgICAgICAgICAgbW9kZWxDbGFzcz17bW9kZWxDbGFzc31cbiAgICAgICAgICAgIG1vZGVsSWQ9e21vZGVsSWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICB7cGFnZVRvU2hvdyA9PSBcImVkaXRcIiAmJlxuICAgICAgICAgIDxFZGl0UGFnZVxuICAgICAgICAgICAga2V5PXtgZWRpdC1wYWdlLSR7bW9kZWxOYW1lfS0ke21vZGVsSWR9YH1cbiAgICAgICAgICAgIG1vZGVsQ2xhc3M9e21vZGVsQ2xhc3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9MYXlvdXQ+XG4gICAgKVxuICB9XG5cbiAgb25EZXN0cm95Q2xpY2tlZCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWNvbmZpcm0oXCJBcmUgeW91IHN1cmU/XCIpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5zLm1vZGVsLmRlc3Ryb3koKVxuXG4gICAgICBQYXJhbXMuY2hhbmdlUGFyYW1zKHttb2RlOiB1bmRlZmluZWQsIG1vZGVsX2lkOiB1bmRlZmluZWR9KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBGbGFzaE5vdGlmaWNhdGlvbnMuZXJyb3JSZXNwb25zZShlcnJvcilcbiAgICB9XG4gIH1cbn0pKVxuIl19
@@ -1,4 +1,28 @@
1
- export function useHeaderActionButtonStyle(): any;
1
+ export function useHeaderActionButtonStyle(): ({ stackedIndex }?: {
2
+ stackedIndex?: number;
3
+ }) => {
4
+ alignSelf: string;
5
+ paddingVertical: number;
6
+ paddingHorizontal: number;
7
+ borderWidth: number;
8
+ borderColor: string;
9
+ marginRight: number;
10
+ marginBottom: number;
11
+ borderRadius: number;
12
+ fontSize: number;
13
+ padding?: undefined;
14
+ } | {
15
+ alignSelf: string;
16
+ padding: number;
17
+ paddingVertical?: undefined;
18
+ paddingHorizontal?: undefined;
19
+ borderWidth?: undefined;
20
+ borderColor?: undefined;
21
+ marginRight?: undefined;
22
+ marginBottom?: undefined;
23
+ borderRadius?: undefined;
24
+ fontSize?: undefined;
25
+ };
2
26
  declare const _default: any;
3
27
  export default _default;
4
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/super-admin/layout/header/index.jsx"],"names":[],"mappings":"AAaO,kDA4BN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/src/","sources":["super-admin/layout/header/index.jsx"],"names":[],"mappings":"AAaO;;;;;;;;;;;;;;;;;;;;;;;;EA4BN"}
@@ -1,59 +1,18 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- var _a;
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.useHeaderActionButtonStyle = void 0;
41
- const jsx_runtime_1 = require("react/jsx-runtime");
42
- const react_1 = __importStar(require("react"));
43
- const base_component_js_1 = __importDefault(require("../../../base-component.js"));
44
- const icon_1 = __importDefault(require("../../../utils/icon"));
45
- const memo_js_1 = __importDefault(require("set-state-compare/build/memo.js"));
46
- const prop_types_1 = __importDefault(require("prop-types"));
47
- const prop_types_exact_1 = __importDefault(require("prop-types-exact"));
48
- const shape_component_js_1 = require("set-state-compare/build/shape-component.js");
49
- const text_1 = __importDefault(require("../../../utils/text"));
50
- const react_native_1 = require("react-native");
51
- const use_breakpoint_js_1 = __importDefault(require("../../../use-breakpoint.js"));
52
- const use_event_listener_js_1 = __importDefault(require("../../../use-event-listener.js"));
1
+ import React, { useCallback, useRef } from "react";
2
+ import BaseComponent from "../../../base-component.js";
3
+ import Icon from "../../../utils/icon";
4
+ import memo from "set-state-compare/build/memo.js";
5
+ import PropTypes from "prop-types";
6
+ import PropTypesExact from "prop-types-exact";
7
+ import { shapeComponent } from "set-state-compare/build/shape-component.js";
8
+ import Text from "../../../utils/text";
9
+ import { Pressable, View } from "react-native";
10
+ import useBreakpoint from "../../../use-breakpoint.js";
11
+ import useEventListener from "../../../use-event-listener.js";
53
12
  // Hook for consistent action button styling across breakpoints
54
- const useHeaderActionButtonStyle = () => {
55
- const { mdUp } = (0, use_breakpoint_js_1.default)();
56
- return (0, react_1.useCallback)(({ stackedIndex = 0 } = {}) => {
13
+ export const useHeaderActionButtonStyle = () => {
14
+ const { mdUp } = useBreakpoint();
15
+ return useCallback(({ stackedIndex = 0 } = {}) => {
57
16
  const base = mdUp
58
17
  ? {
59
18
  alignSelf: "flex-start",
@@ -77,94 +36,109 @@ const useHeaderActionButtonStyle = () => {
77
36
  return base;
78
37
  }, [mdUp]);
79
38
  };
80
- exports.useHeaderActionButtonStyle = useHeaderActionButtonStyle;
81
- exports.default = (0, memo_js_1.default)((0, shape_component_js_1.shapeComponent)((_a = class ApiMakerSuperAdminLayoutHeader extends base_component_js_1.default {
82
- constructor() {
83
- super(...arguments);
84
- this.onGearsClicked = () => this.setState({ headerActionsActive: !this.s.headerActionsActive });
85
- this.onWindowMouseUp = (e) => {
86
- // Close the header actions menu if clicked happened outside
87
- if (this.s.headerActionsActive && this.tt.headerActionsRef.current && !this.tt.headerActionsRef.current.contains(e.target)) {
88
- this.setState({ headerActionsActive: false });
89
- }
90
- };
91
- }
92
- setup() {
93
- const { name: breakpoint, mdUp } = (0, use_breakpoint_js_1.default)();
94
- this.headerActionsRef = (0, react_1.useRef)();
95
- this.setInstance({ breakpoint, mdUp });
96
- this.useStates({
97
- headerActionsActive: false
98
- });
99
- (0, use_event_listener_js_1.default)(window, "mouseup", this.tt.onWindowMouseUp);
100
- }
101
- render() {
102
- const { breakpoint, mdUp } = this.tt;
103
- const { actions, onTriggerMenu, title } = this.props;
104
- const headerStyle = {
39
+ export default memo(shapeComponent(class ApiMakerSuperAdminLayoutHeader extends BaseComponent {
40
+ static propTypes = PropTypesExact({
41
+ actions: PropTypes.any,
42
+ onTriggerMenu: PropTypes.func.isRequired,
43
+ title: PropTypes.string
44
+ });
45
+ setup() {
46
+ const { name: breakpoint, mdUp } = useBreakpoint();
47
+ this.headerActionsRef = useRef();
48
+ this.setInstance({ breakpoint, mdUp });
49
+ this.useStates({
50
+ headerActionsActive: false
51
+ });
52
+ useEventListener(window, "mouseup", this.tt.onWindowMouseUp);
53
+ }
54
+ render() {
55
+ const { breakpoint, mdUp } = this.tt;
56
+ const { actions, onTriggerMenu, title } = this.props;
57
+ const headerStyle = {
58
+ display: "flex",
59
+ flexDirection: "row",
60
+ alignItems: "center",
61
+ zIndex: 9,
62
+ height: 100,
63
+ paddingRight: 30,
64
+ paddingLeft: 30,
65
+ backgroundColor: "#fff"
66
+ };
67
+ const headerActionsContainerStyle = {};
68
+ const headerActionsStyle = {
69
+ flexDirection: mdUp ? "row" : "column",
70
+ alignItems: mdUp ? "flex-start" : "stretch",
71
+ gap: mdUp ? 8 : 0
72
+ };
73
+ if (breakpoint == "xs" || breakpoint == "sm") {
74
+ headerStyle.position = "absolute";
75
+ headerStyle.width = "100%";
76
+ Object.assign(headerActionsContainerStyle, {
77
+ position: "fixed",
78
+ top: 0,
79
+ left: 0,
105
80
  display: "flex",
106
- flexDirection: "row",
81
+ width: "100vw",
82
+ height: "100vh",
107
83
  alignItems: "center",
108
- zIndex: 9,
109
- height: 100,
110
- paddingRight: 30,
111
- paddingLeft: 30,
112
- backgroundColor: "#fff"
113
- };
114
- const headerActionsContainerStyle = {};
115
- const headerActionsStyle = {
116
- flexDirection: mdUp ? "row" : "column",
117
- alignItems: mdUp ? "flex-start" : "stretch",
118
- gap: mdUp ? 8 : 0
119
- };
120
- if (breakpoint == "xs" || breakpoint == "sm") {
121
- headerStyle.position = "absolute";
122
- headerStyle.width = "100%";
123
- Object.assign(headerActionsContainerStyle, {
124
- position: "fixed",
125
- top: 0,
126
- left: 0,
127
- display: "flex",
128
- width: "100vw",
129
- height: "100vh",
130
- alignItems: "center",
131
- justifyContent: "center",
132
- backgroundColor: "rgba(0, 0, 0, 0.8)"
133
- });
134
- if (!this.s.headerActionsActive) {
135
- headerActionsContainerStyle.display = "none";
136
- }
137
- Object.assign(headerActionsStyle, {
138
- minWidth: "80vw",
139
- maxWidth: "100vw",
140
- backgroundColor: "#fff"
141
- });
142
- }
143
- else if (breakpoint == "md") {
144
- headerStyle.position = "fixed";
145
- headerStyle.left = 250;
146
- headerStyle.width = "calc(100% - 250px)";
147
- }
148
- else if (breakpoint == "lg" || breakpoint == "xl" || breakpoint == "xxl") {
149
- headerStyle.position = "fixed";
150
- headerStyle.left = 290;
151
- headerStyle.width = "calc(100% - 290px)";
152
- }
153
- if (breakpoint == "md" || breakpoint == "lg" || breakpoint == "xl" || breakpoint == "xxl") {
154
- headerActionsContainerStyle.marginLeft = "auto";
84
+ justifyContent: "center",
85
+ backgroundColor: "rgba(0, 0, 0, 0.8)"
86
+ });
87
+ if (!this.s.headerActionsActive) {
88
+ headerActionsContainerStyle.display = "none";
155
89
  }
156
- return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { dataSet: this.cache("rootViewDataSet", { component: "super-admin--layout--header" }), style: headerStyle, children: [(0, jsx_runtime_1.jsx)(react_native_1.View, { dataSet: this.cache("headerTitleViewDataSet", { class: "header-title-container" }), children: (0, jsx_runtime_1.jsx)(text_1.default, { style: this.cache("headerTitleTextStyle", { color: "#282a33", fontSize: 22 }), children: title }) }), actions &&
157
- (0, jsx_runtime_1.jsx)(react_native_1.View, { dataSet: { active: this.s.headerActionsActive, class: "header-actions-container" }, style: headerActionsContainerStyle, children: (0, jsx_runtime_1.jsx)(react_native_1.View, { dataSet: this.cache("headerActionsViewDataSet", { class: "header-actions" }), ref: this.tt.headerActionsRef, style: headerActionsStyle, children: actions }) }), !mdUp &&
158
- (0, jsx_runtime_1.jsxs)(react_native_1.View, { dataSet: this.cache("burgerMenuContainerDataSet", { class: "burger-menu-container" }), style: this.cache("burgerMenuContainerStyle", {
159
- flexDirection: "row",
160
- marginLeft: "auto"
161
- }), children: [actions &&
162
- (0, jsx_runtime_1.jsx)(react_native_1.Pressable, { dataSet: this.cache("actionsLinkDataSet", { class: "actions-link" }), onPress: this.tt.onGearsClicked, style: this.cache("actionsLinkStyle", { marginRight: 8, fontSize: 22 }), children: (0, jsx_runtime_1.jsx)(icon_1.default, { name: "gear", size: 20 }) }), (0, jsx_runtime_1.jsx)(react_native_1.Pressable, { dataSet: this.cache("burgerMenuLinkDataSet", { class: "burger-menu-link" }), onPress: onTriggerMenu, children: (0, jsx_runtime_1.jsx)(icon_1.default, { name: "bars", size: 20 }) })] })] }));
90
+ Object.assign(headerActionsStyle, {
91
+ minWidth: "80vw",
92
+ maxWidth: "100vw",
93
+ backgroundColor: "#fff"
94
+ });
163
95
  }
164
- },
165
- _a.propTypes = (0, prop_types_exact_1.default)({
166
- actions: prop_types_1.default.any,
167
- onTriggerMenu: prop_types_1.default.func.isRequired,
168
- title: prop_types_1.default.string
169
- }),
170
- _a)));
96
+ else if (breakpoint == "md") {
97
+ headerStyle.position = "fixed";
98
+ headerStyle.left = 250;
99
+ headerStyle.width = "calc(100% - 250px)";
100
+ }
101
+ else if (breakpoint == "lg" || breakpoint == "xl" || breakpoint == "xxl") {
102
+ headerStyle.position = "fixed";
103
+ headerStyle.left = 290;
104
+ headerStyle.width = "calc(100% - 290px)";
105
+ }
106
+ if (breakpoint == "md" || breakpoint == "lg" || breakpoint == "xl" || breakpoint == "xxl") {
107
+ headerActionsContainerStyle.marginLeft = "auto";
108
+ }
109
+ return (<View dataSet={this.cache("rootViewDataSet", { component: "super-admin--layout--header" })} style={headerStyle}>
110
+ <View dataSet={this.cache("headerTitleViewDataSet", { class: "header-title-container" })}>
111
+ <Text style={this.cache("headerTitleTextStyle", { color: "#282a33", fontSize: 22 })}>
112
+ {title}
113
+ </Text>
114
+ </View>
115
+ {actions &&
116
+ <View dataSet={{ active: this.s.headerActionsActive, class: "header-actions-container" }} style={headerActionsContainerStyle}>
117
+ <View dataSet={this.cache("headerActionsViewDataSet", { class: "header-actions" })} ref={this.tt.headerActionsRef} style={headerActionsStyle}>
118
+ {actions}
119
+ </View>
120
+ </View>}
121
+ {!mdUp &&
122
+ <View dataSet={this.cache("burgerMenuContainerDataSet", { class: "burger-menu-container" })} style={this.cache("burgerMenuContainerStyle", {
123
+ flexDirection: "row",
124
+ marginLeft: "auto"
125
+ })}>
126
+ {actions &&
127
+ <Pressable dataSet={this.cache("actionsLinkDataSet", { class: "actions-link" })} onPress={this.tt.onGearsClicked} style={this.cache("actionsLinkStyle", { marginRight: 8, fontSize: 22 })}>
128
+ <Icon name="gear" size={20}/>
129
+ </Pressable>}
130
+ <Pressable dataSet={this.cache("burgerMenuLinkDataSet", { class: "burger-menu-link" })} onPress={onTriggerMenu}>
131
+ <Icon name="bars" size={20}/>
132
+ </Pressable>
133
+ </View>}
134
+ </View>);
135
+ }
136
+ onGearsClicked = () => this.setState({ headerActionsActive: !this.s.headerActionsActive });
137
+ onWindowMouseUp = (e) => {
138
+ // Close the header actions menu if clicked happened outside
139
+ if (this.s.headerActionsActive && this.tt.headerActionsRef.current && !this.tt.headerActionsRef.current.contains(e.target)) {
140
+ this.setState({ headerActionsActive: false });
141
+ }
142
+ };
143
+ }));
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInN1cGVyLWFkbWluL2xheW91dC9oZWFkZXIvaW5kZXguanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUNoRCxPQUFPLGFBQWEsTUFBTSw0QkFBNEIsQ0FBQTtBQUN0RCxPQUFPLElBQUksTUFBTSxxQkFBcUIsQ0FBQTtBQUN0QyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pFLE9BQU8sSUFBSSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RDLE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQzVDLE9BQU8sYUFBYSxNQUFNLDRCQUE0QixDQUFBO0FBQ3RELE9BQU8sZ0JBQWdCLE1BQU0sZ0NBQWdDLENBQUE7QUFFN0QsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsRUFBRTtJQUM3QyxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsYUFBYSxFQUFFLENBQUE7SUFFOUIsT0FBTyxXQUFXLENBQUMsQ0FBQyxFQUFDLFlBQVksR0FBRyxDQUFDLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRTtRQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJO1lBQ2YsQ0FBQyxDQUFDO2dCQUNFLFNBQVMsRUFBRSxZQUFZO2dCQUN2QixlQUFlLEVBQUUsQ0FBQztnQkFDbEIsaUJBQWlCLEVBQUUsRUFBRTtnQkFDckIsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsV0FBVyxFQUFFLFNBQVM7Z0JBQ3RCLFdBQVcsRUFBRSxDQUFDO2dCQUNkLFlBQVks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dEIsNERBQTREO1FBQzVELElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMzSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUM3QyxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uLy4uLy4uL2Jhc2UtY29tcG9uZW50LmpzXCJcbmltcG9ydCBJY29uIGZyb20gXCIuLi8uLi8uLi91dGlscy9pY29uXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IFByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IFRleHQgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3RleHRcIlxuaW1wb3J0IHtQcmVzc2FibGUsIFZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IHVzZUJyZWFrcG9pbnQgZnJvbSBcIi4uLy4uLy4uL3VzZS1icmVha3BvaW50LmpzXCJcbmltcG9ydCB1c2VFdmVudExpc3RlbmVyIGZyb20gXCIuLi8uLi8uLi91c2UtZXZlbnQtbGlzdGVuZXIuanNcIlxuXG4vLyBIb29rIGZvciBjb25zaXN0ZW50IGFjdGlvbiBidXR0b24gc3R5bGluZyBhY3Jvc3MgYnJlYWtwb2ludHNcbmV4cG9ydCBjb25zdCB1c2VIZWFkZXJBY3Rpb25CdXR0b25TdHlsZSA9ICgpID0+IHtcbiAgY29uc3Qge21kVXB9ID0gdXNlQnJlYWtwb2ludCgpXG5cbiAgcmV0dXJuIHVzZUNhbGxiYWNrKCh7c3RhY2tlZEluZGV4ID0gMH0gPSB7fSkgPT4ge1xuICAgIGNvbnN0IGJhc2UgPSBtZFVwXG4gICAgICA/IHtcbiAgICAgICAgICBhbGlnblNlbGY6IFwiZmxleC1zdGFydFwiLFxuICAgICAgICAgIHBhZGRpbmdWZXJ0aWNhbDogNyxcbiAgICAgICAgICBwYWRkaW5nSG9yaXpvbnRhbDogMTAsXG4gICAgICAgICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgICAgICAgYm9yZGVyQ29sb3I6IFwiI2NiZDVlMVwiLFxuICAgICAgICAgIG1hcmdpblJpZ2h0OiA0LFxuICAgICAgICAgIG1hcmdpbkJvdHRvbTogNCxcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IDUsXG4gICAgICAgICAgZm9udFNpemU6IDEzXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGFsaWduU2VsZjogXCJzdHJldGNoXCIsXG4gICAgICAgICAgcGFkZGluZzogMTFcbiAgICAgICAgfVxuXG4gICAgaWYgKCFtZFVwICYmIHN0YWNrZWRJbmRleCA+IDApIHtcbiAgICAgIGJhc2UuYm9yZGVyVG9wV2lkdGggPSAxXG4gICAgICBiYXNlLmJvcmRlclRvcENvbG9yID0gXCIjYzljOWM5XCJcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZVxuICB9LCBbbWRVcF0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJTdXBlckFkbWluTGF5b3V0SGVhZGVyIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBQcm9wVHlwZXNFeGFjdCh7XG4gICAgYWN0aW9uczogUHJvcFR5cGVzLmFueSxcbiAgICBvblRyaWdnZXJNZW51OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pXG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qge25hbWU6IGJyZWFrcG9pbnQsIG1kVXB9ID0gdXNlQnJlYWtwb2ludCgpXG5cbiAgICB0aGlzLmhlYWRlckFjdGlvbnNSZWYgPSB1c2VSZWYoKVxuICAgIHRoaXMuc2V0SW5zdGFuY2Uoe2JyZWFrcG9pbnQsIG1kVXB9KVxuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIGhlYWRlckFjdGlvbnNBY3RpdmU6IGZhbHNlXG4gICAgfSlcblxuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcIm1vdXNldXBcIiwgdGhpcy50dC5vbldpbmRvd01vdXNlVXApXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2JyZWFrcG9pbnQsIG1kVXB9ID0gdGhpcy50dFxuICAgIGNvbnN0IHthY3Rpb25zLCBvblRyaWdnZXJNZW51LCB0aXRsZX0gPSB0aGlzLnByb3BzXG5cbiAgICBjb25zdCBoZWFkZXJTdHlsZSA9IHtcbiAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgZmxleERpcmVjdGlvbjogXCJyb3dcIixcbiAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICB6SW5kZXg6IDksXG4gICAgICBoZWlnaHQ6IDEwMCxcbiAgICAgIHBhZGRpbmdSaWdodDogMzAsXG4gICAgICBwYWRkaW5nTGVmdDogMzAsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2ZmZlwiXG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVyQWN0aW9uc0NvbnRhaW5lclN0eWxlID0ge31cbiAgICBjb25zdCBoZWFkZXJBY3Rpb25zU3R5bGUgPSB7XG4gICAgICBmbGV4RGlyZWN0aW9uOiBtZFVwID8gXCJyb3dcIiA6IFwiY29sdW1uXCIsXG4gICAgICBhbGlnbkl0ZW1zOiBtZFVwID8gXCJmbGV4LXN0YXJ0XCIgOiBcInN0cmV0Y2hcIixcbiAgICAgIGdhcDogbWRVcCA/IDggOiAwXG4gICAgfVxuXG4gICAgaWYgKGJyZWFrcG9pbnQgPT0gXCJ4c1wiIHx8IGJyZWFrcG9pbnQgPT0gXCJzbVwiKSB7XG4gICAgICBoZWFkZXJTdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIlxuICAgICAgaGVhZGVyU3R5bGUud2lkdGggPSBcIjEwMCVcIlxuXG4gICAgICBPYmplY3QuYXNzaWduKGhlYWRlckFjdGlvbnNDb250YWluZXJTdHlsZSwge1xuICAgICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGxlZnQ6IDAsXG5cbiAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMHZ3XCIsXG4gICAgICAgIGhlaWdodDogXCIxMDB2aFwiLFxuICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcblxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjgpXCJcbiAgICAgIH0pXG5cbiAgICAgIGlmICghdGhpcy5zLmhlYWRlckFjdGlvbnNBY3RpdmUpIHtcbiAgICAgICAgaGVhZGVyQWN0aW9uc0NvbnRhaW5lclN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIlxuICAgICAgfVxuXG4gICAgICBPYmplY3QuYXNzaWduKGhlYWRlckFjdGlvbnNTdHlsZSwge1xuICAgICAgICBtaW5XaWR0aDogXCI4MHZ3XCIsXG4gICAgICAgIG1heFdpZHRoOiBcIjEwMHZ3XCIsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZmZmXCJcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChicmVha3BvaW50ID09IFwibWRcIikge1xuICAgICAgaGVhZGVyU3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCJcbiAgICAgIGhlYWRlclN0eWxlLmxlZnQgPSAyNTBcbiAgICAgIGhlYWRlclN0eWxlLndpZHRoID0gXCJjYWxjKDEwMCUgLSAyNTBweClcIlxuICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCA9PSBcImxnXCIgfHwgYnJlYWtwb2ludCA9PSBcInhsXCIgfHwgYnJlYWtwb2ludCA9PSBcInh4bFwiKSB7XG4gICAgICBoZWFkZXJTdHlsZS5wb3NpdGlvbiA9IFwiZml4ZWRcIlxuICAgICAgaGVhZGVyU3R5bGUubGVmdCA9IDI5MFxuICAgICAgaGVhZGVyU3R5bGUud2lkdGggPSBcImNhbGMoMTAwJSAtIDI5MHB4KVwiXG4gICAgfVxuXG4gICAgaWYgKGJyZWFrcG9pbnQgPT0gXCJtZFwiIHx8IGJyZWFrcG9pbnQgPT0gXCJsZ1wiIHx8IGJyZWFrcG9pbnQgPT0gXCJ4bFwiIHx8IGJyZWFrcG9pbnQgPT0gXCJ4eGxcIikge1xuICAgICAgaGVhZGVyQWN0aW9uc0NvbnRhaW5lclN0eWxlLm1hcmdpbkxlZnQgPSBcImF1dG9cIlxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBkYXRhU2V0PXt0aGlzLmNhY2hlKFwicm9vdFZpZXdEYXRhU2V0XCIsIHtjb21wb25lbnQ6IFwic3VwZXItYWRtaW4tLWxheW91dC0taGVhZGVyXCJ9KX0gc3R5bGU9e2hlYWRlclN0eWxlfT5cbiAgICAgICAgPFZpZXcgZGF0YVNldD17dGhpcy5jYWNoZShcImhlYWRlclRpdGxlVmlld0RhdGFTZXRcIiwge2NsYXNzOiBcImhlYWRlci10aXRsZS1jb250YWluZXJcIn0pfT5cbiAgICAgICAgICA8VGV4dCBzdHlsZT17dGhpcy5jYWNoZShcImhlYWRlclRpdGxlVGV4dFN0eWxlXCIsIHtjb2xvcjogXCIjMjgyYTMzXCIsIGZvbnRTaXplOiAyMn0pfT5cbiAgICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvVmlldz5cbiAgICAgICAge2FjdGlvbnMgJiZcbiAgICAgICAgICA8VmlldyBkYXRhU2V0PXt7YWN0aXZlOiB0aGlzLnMuaGVhZGVyQWN0aW9uc0FjdGl2ZSwgY2xhc3M6IFwiaGVhZGVyLWFjdGlvbnMtY29udGFpbmVyXCJ9fSBzdHlsZT17aGVhZGVyQWN0aW9uc0NvbnRhaW5lclN0eWxlfT5cbiAgICAgICAgICAgIDxWaWV3XG4gICAgICAgICAgICBkYXRhU2V0PXt0aGlzLmNhY2hlKFwiaGVhZGVyQWN0aW9uc1ZpZXdEYXRhU2V0XCIsIHtjbGFzczogXCJoZWFkZXItYWN0aW9uc1wifSl9XG4gICAgICAgICAgICByZWY9e3RoaXMudHQuaGVhZGVyQWN0aW9uc1JlZn1cbiAgICAgICAgICAgIHN0eWxlPXtoZWFkZXJBY3Rpb25zU3R5bGV9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2FjdGlvbnN9XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgfVxuICAgICAgICB7IW1kVXAgJiZcbiAgICAgICAgICA8Vmlld1xuICAgICAgICAgICAgZGF0YVNldD17dGhpcy5jYWNoZShcImJ1cmdlck1lbnVDb250YWluZXJEYXRhU2V0XCIsIHtjbGFzczogXCJidXJnZXItbWVudS1jb250YWluZXJcIn0pfVxuICAgICAgICAgICAgc3R5bGU9e3RoaXMuY2FjaGUoXCJidXJnZXJNZW51Q29udGFpbmVyU3R5bGVcIiwge1xuICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLFxuICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiBcImF1dG9cIlxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2FjdGlvbnMgJiZcbiAgICAgICAgICAgICAgPFByZXNzYWJsZVxuICAgICAgICAgICAgICAgIGRhdGFTZXQ9e3RoaXMuY2FjaGUoXCJhY3Rpb25zTGlua0RhdGFTZXRcIiwge2NsYXNzOiBcImFjdGlvbnMtbGlua1wifSl9XG4gICAgICAgICAgICAgICAgb25QcmVzcz17dGhpcy50dC5vbkdlYXJzQ2xpY2tlZH1cbiAgICAgICAgICAgICAgICBzdHlsZT17dGhpcy5jYWNoZShcImFjdGlvbnNMaW5rU3R5bGVcIiwge21hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMjJ9KX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJnZWFyXCIgc2l6ZT17MjB9IC8+XG4gICAgICAgICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPFByZXNzYWJsZSBkYXRhU2V0PXt0aGlzLmNhY2hlKFwiYnVyZ2VyTWVudUxpbmtEYXRhU2V0XCIsIHtjbGFzczogXCJidXJnZXItbWVudS1saW5rXCJ9KX0gb25QcmVzcz17b25UcmlnZ2VyTWVudX0+XG4gICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJiYXJzXCIgc2l6ZT17MjB9IC8+XG4gICAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIH1cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBvbkdlYXJzQ2xpY2tlZCA9ICgpID0+IHRoaXMuc2V0U3RhdGUoe2hlYWRlckFjdGlvbnNBY3RpdmU6ICF0aGlzLnMuaGVhZGVyQWN0aW9uc0FjdGl2ZX0pXG5cbiAgb25XaW5kb3dNb3VzZVVwID0gKGUpID0+IHtcbiAgICAvLyBDbG9zZSB0aGUgaGVhZGVyIGFjdGlvbnMgbWVudSBpZiBjbGlja2VkIGhhcHBlbmVkIG91dHNpZGVcbiAgICBpZiAodGhpcy5zLmhlYWRlckFjdGlvbnNBY3RpdmUgJiYgdGhpcy50dC5oZWFkZXJBY3Rpb25zUmVmLmN1cnJlbnQgJiYgIXRoaXMudHQuaGVhZGVyQWN0aW9uc1JlZi5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7aGVhZGVyQWN0aW9uc0FjdGl2ZTogZmFsc2V9KVxuICAgIH1cbiAgfVxufSkpXG4iXX0=