@kaspernj/api-maker 1.0.2011 → 1.0.2012

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 (410) hide show
  1. package/{.eslintrc.cjs → .eslintrc.js} +10 -1
  2. package/README.md +35 -0
  3. package/android/build.gradle +43 -0
  4. package/android/src/main/AndroidManifest.xml +2 -0
  5. package/android/src/main/java/expo/modules/api_maker/ApiMakerModule.kt +50 -0
  6. package/android/src/main/java/expo/modules/api_maker/ApiMakerView.kt +30 -0
  7. package/build/api.js +120 -0
  8. package/build/attribute-not-loaded-error.js +2 -0
  9. package/build/base-component.js +5 -0
  10. package/build/base-error.js +33 -0
  11. package/build/base-model/attribute.js +25 -0
  12. package/build/base-model/column.js +11 -0
  13. package/build/base-model/reflection.js +14 -0
  14. package/build/base-model/scope.js +11 -0
  15. package/build/base-model.js +828 -0
  16. package/build/bootstrap/attribute-row.js +135 -0
  17. package/build/bootstrap/attribute-rows.js +31 -0
  18. package/build/bootstrap/card.js +138 -0
  19. package/build/bootstrap/checkbox.js +97 -0
  20. package/build/bootstrap/checkboxes.js +183 -0
  21. package/build/bootstrap/index.js +2 -0
  22. package/build/bootstrap/input.js +129 -0
  23. package/build/bootstrap/invalid-feedback.js +27 -0
  24. package/build/bootstrap/paginate.js +150 -0
  25. package/build/bootstrap/radio-buttons.js +72 -0
  26. package/build/bootstrap/select.js +88 -0
  27. package/build/bootstrap/sort-link.js +131 -0
  28. package/build/cable-connection-pool.js +128 -0
  29. package/build/cable-subscription-pool.js +207 -0
  30. package/build/cable-subscription.js +21 -0
  31. package/build/cache-key-generator.js +81 -0
  32. package/build/can-can.js +134 -0
  33. package/build/channels-consumer.js +9 -0
  34. package/build/collection-loader.js +48 -0
  35. package/build/collection.js +280 -0
  36. package/build/command-submit-data.js +81 -0
  37. package/build/commands-pool.js +195 -0
  38. package/build/compose.js +9 -0
  39. package/build/config.js +62 -0
  40. package/build/custom-error.js +5 -0
  41. package/build/data-set-to-attributes.js +10 -0
  42. package/build/deserializer.js +56 -0
  43. package/build/destroy-error.js +5 -0
  44. package/build/devise.js +112 -0
  45. package/build/draggable-sort/controller.js +136 -0
  46. package/build/draggable-sort/index.js +114 -0
  47. package/build/draggable-sort/item.js +188 -0
  48. package/build/error-logger.js +101 -0
  49. package/build/error-messages.js +13 -0
  50. package/build/event-connection.js +32 -0
  51. package/build/event-emitter-listener.js +15 -0
  52. package/build/event-model-class.js +24 -0
  53. package/build/events.js +5 -0
  54. package/build/flash-message.js +79 -0
  55. package/build/form.js +83 -0
  56. package/build/history-expo.js +20 -0
  57. package/build/history-react-native.js +20 -0
  58. package/build/history.js +3 -0
  59. package/build/index.js +3 -0
  60. package/build/inputs/attachment.js +133 -0
  61. package/build/inputs/auto-submit.js +36 -0
  62. package/build/inputs/checkbox.js +138 -0
  63. package/build/inputs/checkboxes.js +112 -0
  64. package/build/inputs/id-for-component.js +15 -0
  65. package/build/inputs/input-wrapper.js +19 -0
  66. package/build/inputs/input.js +243 -0
  67. package/build/inputs/money.js +179 -0
  68. package/build/inputs/name-for-component.js +13 -0
  69. package/build/inputs/select.js +93 -0
  70. package/build/instance-of-class-name.js +23 -0
  71. package/build/key-value-store.js +53 -0
  72. package/build/link.js +73 -0
  73. package/build/logger.js +30 -0
  74. package/build/modal.js +38 -0
  75. package/build/model-class-require.js +13 -0
  76. package/build/model-events.js +30 -0
  77. package/build/model-name.js +28 -0
  78. package/build/model-prop-type.js +101 -0
  79. package/build/model-recipes-loader.js +32 -0
  80. package/build/model-recipes-model-loader.js +357 -0
  81. package/build/models-response-reader.js +40 -0
  82. package/build/models.js +8 -0
  83. package/build/money-formatter.js +78 -0
  84. package/build/not-loaded-error.js +2 -0
  85. package/build/params.js +61 -0
  86. package/build/preloaded.js +38 -0
  87. package/build/resize-observer.js +11 -0
  88. package/build/result.js +13 -0
  89. package/build/router/route.js +270 -0
  90. package/build/router/switch.js +72 -0
  91. package/build/router.js +59 -0
  92. package/build/routes-native.js +202 -0
  93. package/build/routes.js +50 -0
  94. package/build/run-last.js +35 -0
  95. package/build/serializer.js +63 -0
  96. package/build/services.js +20 -0
  97. package/build/session-status-updater.js +134 -0
  98. package/build/source-maps-loader.js +184 -0
  99. package/build/super-admin/config-reader.js +85 -0
  100. package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
  101. package/build/super-admin/edit-page/edit-attribute-content.js +55 -0
  102. package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
  103. package/build/super-admin/edit-page/edit-attribute.js +77 -0
  104. package/build/super-admin/edit-page.js +123 -0
  105. package/build/super-admin/has-edit-config.js +12 -0
  106. package/build/super-admin/index-page.js +25 -0
  107. package/build/super-admin/index.js +181 -0
  108. package/build/super-admin/layout/header/index.js +161 -0
  109. package/build/super-admin/layout/index.js +164 -0
  110. package/build/super-admin/layout/menu/index.js +206 -0
  111. package/build/super-admin/layout/menu/menu-content.js +46 -0
  112. package/build/super-admin/layout/menu/menu-item.js +84 -0
  113. package/build/super-admin/layout/no-access.js +27 -0
  114. package/build/super-admin/model-class-table.js +61 -0
  115. package/build/super-admin/models.js +8 -0
  116. package/build/super-admin/show-nav.js +51 -0
  117. package/build/super-admin/show-page/belongs-to-attribute-row.js +29 -0
  118. package/build/super-admin/show-page/index.js +141 -0
  119. package/build/super-admin/show-reflection-actions.js +47 -0
  120. package/build/super-admin/show-reflection-link.js +48 -0
  121. package/build/super-admin/show-reflection-page.js +48 -0
  122. package/build/table/column-content.js +117 -0
  123. package/build/table/column-identifier.js +18 -0
  124. package/build/table/column-visible.js +7 -0
  125. package/build/table/components/column.js +21 -0
  126. package/build/table/components/flat-list.js +21 -0
  127. package/build/table/components/header.js +26 -0
  128. package/build/table/components/row.js +26 -0
  129. package/build/table/filters/attribute-element.js +44 -0
  130. package/build/table/filters/filter-form.js +402 -0
  131. package/build/table/filters/filter.js +90 -0
  132. package/build/table/filters/index.js +184 -0
  133. package/build/table/filters/load-search-modal.js +175 -0
  134. package/build/table/filters/reflection-element.js +37 -0
  135. package/build/table/filters/save-search-modal.js +88 -0
  136. package/build/table/filters/scope-element.js +42 -0
  137. package/build/table/header-column-content.js +68 -0
  138. package/build/table/header-column.js +144 -0
  139. package/build/table/header-select.js +105 -0
  140. package/build/table/model-callback-args.js +10 -0
  141. package/build/table/model-column.js +97 -0
  142. package/build/table/model-row.js +193 -0
  143. package/build/table/select-calculator.js +63 -0
  144. package/build/table/settings/column-row.js +97 -0
  145. package/build/table/settings/download-action.js +79 -0
  146. package/build/table/settings/index.js +92 -0
  147. package/build/table/table-settings.js +219 -0
  148. package/build/table/table.js +972 -0
  149. package/build/table/use-sorting.js +34 -0
  150. package/build/table/widths.js +75 -0
  151. package/build/table/worker-plugins-check-all-checkbox.js +125 -0
  152. package/build/table/worker-plugins-checkbox.js +115 -0
  153. package/build/translated-attributes.js +10 -0
  154. package/build/translated-collections.js +12 -0
  155. package/build/updated-attribute.js +76 -0
  156. package/build/url-encode.js +15 -0
  157. package/build/use-breakpoint.js +62 -0
  158. package/build/use-can-can.js +55 -0
  159. package/build/use-collection.js +225 -0
  160. package/build/use-created-event.js +52 -0
  161. package/build/use-current-user.js +76 -0
  162. package/build/use-destroyed-event.js +60 -0
  163. package/build/use-event-emitter.js +13 -0
  164. package/build/use-event-listener.js +16 -0
  165. package/build/use-input.js +137 -0
  166. package/build/use-model-event.js +60 -0
  167. package/build/use-model.js +169 -0
  168. package/build/use-resize-observer.js +23 -0
  169. package/build/use-router.js +104 -0
  170. package/build/use-screen-layout.js +39 -0
  171. package/build/use-updated-event.js +60 -0
  172. package/build/use-validation-errors.js +30 -0
  173. package/build/utils/card.js +51 -0
  174. package/build/utils/checkbox.js +78 -0
  175. package/build/utils/checkboxes.js +163 -0
  176. package/build/utils/default-style.js +18 -0
  177. package/build/utils/icon.js +23 -0
  178. package/build/utils/invalid-feedback.js +19 -0
  179. package/build/utils/modal.js +62 -0
  180. package/build/utils/text.js +19 -0
  181. package/build/validation-error.js +28 -0
  182. package/build/validation-errors.js +98 -0
  183. package/build/with-api-maker.js +29 -0
  184. package/build/with-collection.js +14 -0
  185. package/build/with-current-user.js +10 -0
  186. package/build/with-model.js +15 -0
  187. package/build/with-router.js +22 -0
  188. package/expo-module.config.json +17 -0
  189. package/ios/ApiMaker.podspec +29 -0
  190. package/ios/ApiMakerModule.swift +48 -0
  191. package/ios/ApiMakerView.swift +38 -0
  192. package/link.sh +8 -0
  193. package/package.json +49 -46
  194. package/src/{api.mjs → api.js} +38 -37
  195. package/src/base-component.jsx +5 -0
  196. package/src/{base-error.mjs → base-error.js} +4 -6
  197. package/src/base-model/attribute.js +33 -0
  198. package/src/base-model/column.js +13 -0
  199. package/src/base-model/reflection.js +15 -0
  200. package/src/base-model/scope.js +12 -0
  201. package/src/{base-model.mjs → base-model.js} +302 -144
  202. package/src/bootstrap/attribute-row.jsx +135 -0
  203. package/src/bootstrap/attribute-rows.jsx +27 -0
  204. package/src/bootstrap/card.jsx +149 -0
  205. package/src/bootstrap/checkbox.jsx +86 -0
  206. package/src/bootstrap/checkboxes.jsx +185 -0
  207. package/src/bootstrap/index.js +0 -0
  208. package/src/bootstrap/input.jsx +173 -0
  209. package/src/bootstrap/invalid-feedback.jsx +31 -0
  210. package/src/bootstrap/paginate.jsx +187 -0
  211. package/src/bootstrap/radio-buttons.jsx +87 -0
  212. package/src/bootstrap/select.jsx +110 -0
  213. package/src/bootstrap/sort-link.jsx +106 -0
  214. package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +16 -36
  215. package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +26 -21
  216. package/src/{cable-subscription.mjs → cable-subscription.js} +6 -4
  217. package/src/cache-key-generator.js +100 -0
  218. package/src/{can-can.mjs → can-can.js} +13 -12
  219. package/src/channels-consumer.js +10 -0
  220. package/src/collection-loader.jsx +58 -224
  221. package/src/{collection.mjs → collection.js} +98 -44
  222. package/src/{command-submit-data.mjs → command-submit-data.js} +2 -7
  223. package/src/{commands-pool.mjs → commands-pool.js} +57 -41
  224. package/src/compose.js +11 -0
  225. package/src/{config.mjs → config.js} +6 -2
  226. package/src/{custom-error.mjs → custom-error.js} +1 -1
  227. package/src/data-set-to-attributes.js +13 -0
  228. package/src/{deserializer.mjs → deserializer.js} +3 -3
  229. package/src/destroy-error.js +7 -0
  230. package/src/devise.js +129 -0
  231. package/src/draggable-sort/controller.js +137 -0
  232. package/src/draggable-sort/index.jsx +108 -0
  233. package/src/draggable-sort/item.jsx +174 -0
  234. package/src/{error-logger.mjs → error-logger.js} +12 -7
  235. package/src/{error-messages.mjs → error-messages.js} +1 -0
  236. package/src/event-connection.jsx +1 -1
  237. package/src/event-emitter-listener.jsx +8 -27
  238. package/src/event-model-class.jsx +2 -4
  239. package/src/events.js +7 -0
  240. package/src/flash-message.js +70 -0
  241. package/src/form.jsx +91 -0
  242. package/src/history-expo.js +23 -0
  243. package/src/history-react-native.js +25 -0
  244. package/src/history.js +3 -0
  245. package/src/index.js +3 -0
  246. package/src/inputs/attachment.jsx +108 -0
  247. package/src/inputs/auto-submit.js +37 -0
  248. package/src/inputs/checkbox.jsx +125 -0
  249. package/src/inputs/checkboxes.jsx +116 -0
  250. package/src/inputs/id-for-component.js +15 -0
  251. package/src/inputs/input-wrapper.jsx +16 -0
  252. package/src/inputs/input.jsx +260 -0
  253. package/src/inputs/money.jsx +187 -0
  254. package/src/inputs/name-for-component.js +15 -0
  255. package/src/inputs/select.jsx +104 -0
  256. package/src/{key-value-store.mjs → key-value-store.js} +1 -1
  257. package/src/link.jsx +54 -9
  258. package/src/logger.js +38 -0
  259. package/src/modal.jsx +37 -0
  260. package/src/model-class-require.js +17 -0
  261. package/src/{model-events.mjs → model-events.js} +1 -1
  262. package/src/{model-name.mjs → model-name.js} +8 -8
  263. package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
  264. package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +5 -5
  265. package/src/{models-response-reader.mjs → models-response-reader.js} +3 -4
  266. package/src/models.js +7 -0
  267. package/src/{models.mjs.erb → models.js.erb} +6 -3
  268. package/src/{money-formatter.mjs → money-formatter.js} +5 -4
  269. package/src/{params.mjs → params.js} +17 -7
  270. package/src/{preloaded.mjs → preloaded.js} +2 -2
  271. package/src/resize-observer.jsx +10 -0
  272. package/src/result.js +13 -0
  273. package/src/router/route.jsx +246 -0
  274. package/src/router/switch.jsx +76 -0
  275. package/src/router.jsx +23 -21
  276. package/src/{routes-native.mjs → routes-native.js} +12 -6
  277. package/src/{routes.mjs → routes.js} +1 -1
  278. package/src/run-last.js +39 -0
  279. package/src/{serializer.mjs → serializer.js} +2 -2
  280. package/src/{services.mjs → services.js} +1 -1
  281. package/src/session-status-updater.js +172 -0
  282. package/src/{source-maps-loader.mjs → source-maps-loader.js} +54 -28
  283. package/src/super-admin/config-reader.jsx +93 -0
  284. package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +81 -0
  285. package/src/super-admin/edit-page/edit-attribute-content.jsx +57 -0
  286. package/src/super-admin/edit-page/edit-attribute-input.jsx +71 -0
  287. package/src/super-admin/edit-page/edit-attribute.jsx +81 -0
  288. package/src/super-admin/edit-page.jsx +117 -0
  289. package/src/super-admin/has-edit-config.js +15 -0
  290. package/src/super-admin/index-page.jsx +23 -0
  291. package/src/super-admin/index.jsx +197 -0
  292. package/src/super-admin/layout/header/index.jsx +144 -0
  293. package/src/super-admin/layout/header/style.scss +45 -0
  294. package/src/super-admin/layout/index.jsx +154 -0
  295. package/src/super-admin/layout/menu/index.jsx +171 -0
  296. package/src/super-admin/layout/menu/menu-content.jsx +43 -0
  297. package/src/super-admin/layout/menu/menu-item.jsx +70 -0
  298. package/src/super-admin/layout/menu/style.scss +11 -0
  299. package/src/super-admin/layout/no-access.jsx +26 -0
  300. package/src/super-admin/model-class-table.jsx +66 -0
  301. package/src/super-admin/models.js +11 -0
  302. package/src/super-admin/show-nav.jsx +44 -0
  303. package/src/super-admin/show-page/belongs-to-attribute-row.jsx +30 -0
  304. package/src/super-admin/show-page/index.jsx +141 -0
  305. package/src/super-admin/show-reflection-actions.jsx +49 -0
  306. package/src/super-admin/show-reflection-link.jsx +40 -0
  307. package/src/super-admin/show-reflection-page.jsx +47 -0
  308. package/src/super-admin/stylesheets/variables.scss +11 -0
  309. package/src/table/column-content.jsx +122 -0
  310. package/src/table/column-identifier.js +23 -0
  311. package/src/table/column-visible.js +7 -0
  312. package/src/table/components/column.jsx +19 -0
  313. package/src/table/components/flat-list.jsx +19 -0
  314. package/src/table/components/header.jsx +21 -0
  315. package/src/table/components/row.jsx +23 -0
  316. package/src/table/filters/attribute-element.jsx +47 -0
  317. package/src/table/filters/filter-form.jsx +407 -0
  318. package/src/table/filters/filter.jsx +70 -0
  319. package/src/table/filters/index.jsx +170 -0
  320. package/src/table/filters/load-search-modal.jsx +146 -0
  321. package/src/table/filters/reflection-element.jsx +38 -0
  322. package/src/table/filters/save-search-modal.jsx +74 -0
  323. package/src/table/filters/scope-element.jsx +44 -0
  324. package/src/table/header-column-content.jsx +55 -0
  325. package/src/table/header-column.jsx +129 -0
  326. package/src/table/header-select.jsx +73 -0
  327. package/src/table/model-callback-args.js +10 -0
  328. package/src/table/model-column.jsx +82 -0
  329. package/src/table/model-row.jsx +136 -0
  330. package/src/table/select-calculator.js +65 -0
  331. package/src/table/settings/column-row.jsx +93 -0
  332. package/src/table/settings/download-action.jsx +68 -0
  333. package/src/table/settings/index.jsx +65 -0
  334. package/src/table/table-settings.js +263 -0
  335. package/src/table/table.jsx +950 -0
  336. package/src/table/use-sorting.js +35 -0
  337. package/src/table/variables.scss +11 -0
  338. package/src/table/widths.jsx +87 -0
  339. package/src/table/worker-plugins-check-all-checkbox.jsx +112 -0
  340. package/src/table/worker-plugins-checkbox.jsx +104 -0
  341. package/src/translated-attributes.js +11 -0
  342. package/src/{translated-collections.mjs → translated-collections.js} +3 -2
  343. package/src/updated-attribute.jsx +1 -1
  344. package/src/url-encode.js +18 -0
  345. package/src/use-breakpoint.js +76 -0
  346. package/src/use-can-can.js +55 -0
  347. package/src/use-collection.js +280 -0
  348. package/src/use-created-event.js +55 -0
  349. package/src/use-current-user.js +88 -0
  350. package/src/use-destroyed-event.js +60 -0
  351. package/src/use-event-emitter.js +15 -0
  352. package/src/use-event-listener.js +19 -0
  353. package/src/use-input.js +157 -0
  354. package/src/use-model-event.js +60 -0
  355. package/src/use-model.js +189 -0
  356. package/src/use-resize-observer.js +24 -0
  357. package/src/use-router.jsx +128 -0
  358. package/src/use-screen-layout.js +49 -0
  359. package/src/use-updated-event.js +60 -0
  360. package/src/use-validation-errors.js +33 -0
  361. package/src/utils/card.jsx +49 -0
  362. package/src/utils/checkbox.jsx +80 -0
  363. package/src/utils/checkboxes.jsx +158 -0
  364. package/src/utils/default-style.jsx +25 -0
  365. package/src/utils/icon.jsx +21 -0
  366. package/src/utils/invalid-feedback.jsx +20 -0
  367. package/src/utils/modal.jsx +60 -0
  368. package/src/utils/text.jsx +16 -0
  369. package/src/{validation-error.mjs → validation-error.js} +9 -5
  370. package/src/{validation-errors.mjs → validation-errors.js} +15 -27
  371. package/src/with-api-maker.jsx +31 -0
  372. package/src/with-collection.jsx +17 -0
  373. package/src/with-current-user.jsx +7 -25
  374. package/src/with-model.jsx +16 -0
  375. package/src/with-router.jsx +7 -129
  376. package/__tests__/base-model.test.js +0 -71
  377. package/__tests__/cable-connection-pool.test.js +0 -227
  378. package/__tests__/cable-subscription-pool.test.js +0 -26
  379. package/__tests__/can-can.test.js +0 -34
  380. package/__tests__/collection.test.js +0 -51
  381. package/__tests__/custom-error.test.js +0 -13
  382. package/__tests__/model-name.test.js +0 -34
  383. package/__tests__/model-prop-type.test.js +0 -113
  384. package/__tests__/params.test.js +0 -40
  385. package/__tests__/routes-native.test.js +0 -103
  386. package/__tests__/routes.test.js +0 -46
  387. package/__tests__/serializer.test.js +0 -30
  388. package/__tests__/support/task.js +0 -27
  389. package/__tests__/support/user.js +0 -32
  390. package/index.js +0 -1
  391. package/jest.config.js +0 -4
  392. package/src/can-can-loader.jsx +0 -54
  393. package/src/channels-consumer.mjs +0 -3
  394. package/src/destroy-error.mjs +0 -7
  395. package/src/devise.mjs +0 -122
  396. package/src/event-created.jsx +0 -65
  397. package/src/event-destroyed.jsx +0 -29
  398. package/src/event-listener.jsx +0 -38
  399. package/src/event-updated.jsx +0 -74
  400. package/src/logger.mjs +0 -25
  401. package/src/model-class-require.mjs +0 -10
  402. package/src/model-load-wrapper.jsx +0 -116
  403. package/src/result.mjs +0 -29
  404. package/src/session-status-updater.mjs +0 -116
  405. package/webpack.config.js +0 -15
  406. /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
  407. /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
  408. /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
  409. /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
  410. /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
@@ -0,0 +1,188 @@
1
+ import React, { useMemo } from "react";
2
+ import { Animated, Easing, PanResponder } from "react-native";
3
+ import { shapeComponent, ShapeComponent } from "set-state-compare/src/shape-component";
4
+ import EventEmitter from "events";
5
+ import memo from "set-state-compare/src/memo";
6
+ import PropTypes from "prop-types";
7
+ import propTypesExact from "prop-types-exact";
8
+ import useEventEmitter from "../use-event-emitter";
9
+ export default memo(shapeComponent(class DraggableSortItem extends ShapeComponent {
10
+ static propTypes = propTypesExact({
11
+ cacheKey: PropTypes.string,
12
+ controller: PropTypes.object.isRequired,
13
+ item: PropTypes.any.isRequired,
14
+ itemIndex: PropTypes.number.isRequired,
15
+ onItemMoved: PropTypes.func,
16
+ renderItem: PropTypes.func.isRequired
17
+ });
18
+ initialLayout = null;
19
+ setup() {
20
+ this.useStates({
21
+ active: false,
22
+ dragging: false
23
+ });
24
+ this.events = useMemo(() => new EventEmitter(), []);
25
+ this.position = useMemo(() => new Animated.ValueXY(), []);
26
+ this.panResponder = useMemo(() => PanResponder.create({
27
+ onStartShouldSetPanResponder: e => {
28
+ this.setState({
29
+ dragging: true
30
+ });
31
+ this.p.controller.onDragStart({
32
+ item: this.p.item,
33
+ itemIndex: this.p.itemIndex
34
+ });
35
+ return false;
36
+ }
37
+ }), []);
38
+ useEventEmitter(this.p.controller.getEvents(), "onDragStart", this.tt.onDragStart);
39
+ useEventEmitter(this.p.controller.getEvents(), "onDragEndAnimation", this.tt.onDragEndAnimation);
40
+ useEventEmitter(this.tt.events, "move", this.tt.onMove);
41
+ useEventEmitter(this.tt.events, "moveToPosition", this.tt.onMoveToPosition);
42
+ useEventEmitter(this.tt.events, "resetPosition", this.tt.onResetPosition);
43
+ }
44
+ render() {
45
+ const {
46
+ item,
47
+ renderItem
48
+ } = this.p;
49
+ const {
50
+ active
51
+ } = this.s;
52
+ const style = useMemo(() => {
53
+ const style = {
54
+ transform: this.tt.position.getTranslateTransform()
55
+ };
56
+ if (active) {
57
+ style.backgroundColor = "#fff";
58
+ style.elevation = 2;
59
+ style.zIndex = 99999;
60
+ }
61
+ return style;
62
+ }, [active]);
63
+ return /*#__PURE__*/React.createElement(Animated.View, {
64
+ dataSet: {
65
+ component: "draggable-sort/item"
66
+ },
67
+ onLayout: this.tt.onLayout,
68
+ style: style
69
+ }, renderItem({
70
+ isActive: active,
71
+ item,
72
+ touchProps: this.tt.panResponder.panHandlers
73
+ }));
74
+ }
75
+ onDragStart = ({
76
+ itemData
77
+ }) => {
78
+ const newState = {
79
+ dragging: true
80
+ };
81
+ if (itemData.index == this.p.itemIndex) {
82
+ newState.active = true;
83
+ this.baseXAtStartedDragging = this.getBaseX();
84
+ }
85
+ this.setState(newState);
86
+ };
87
+ onDragEndAnimation = () => this.setState({
88
+ active: false,
89
+ dragging: false
90
+ });
91
+ onLayout = e => {
92
+ const {
93
+ controller,
94
+ item,
95
+ itemIndex
96
+ } = this.p;
97
+ controller.onItemLayout({
98
+ events: this.tt.events,
99
+ index: itemIndex,
100
+ item,
101
+ layout: e.nativeEvent.layout
102
+ });
103
+ if (!this.tt.initialLayout) {
104
+ this.initialLayout = e.nativeEvent.layout;
105
+ }
106
+ };
107
+ onMove = ({
108
+ gestate
109
+ }) => {
110
+ const x = gestate.dx + this.tt.baseXAtStartedDragging - this.tt.initialLayout.x;
111
+ const y = this.tt.initialLayout.y;
112
+ this.tt.position.setValue({
113
+ x,
114
+ y
115
+ });
116
+ if (this.props.onItemMoved) {
117
+ this.p.onItemMoved({
118
+ itemIndex: this.p.itemIndex,
119
+ x,
120
+ y
121
+ });
122
+ }
123
+ };
124
+ onMoveToPosition = ({
125
+ x,
126
+ y
127
+ }) => {
128
+ const calculatedXFromStartingPosition = x - this.tt.initialLayout.x;
129
+ const animationArgs = {
130
+ duration: 200,
131
+ easing: Easing.inOut(Easing.linear),
132
+ toValue: {
133
+ x: calculatedXFromStartingPosition,
134
+ y
135
+ },
136
+ useNativeDriver: true
137
+ };
138
+ const animationEventArgs = {
139
+ animationArgs,
140
+ animationType: "moveToPosition",
141
+ item: this.p.item
142
+ };
143
+ this.p.controller.events.emit("onAnimationStart", animationEventArgs);
144
+ Animated.timing(this.tt.position, animationArgs).start(() => {
145
+ this.p.controller.events.emit("onAnimationEnd", animationEventArgs);
146
+ });
147
+ if (this.props.onItemMoved) {
148
+ this.p.onItemMoved({
149
+ animationArgs,
150
+ itemIndex: this.p.itemIndex,
151
+ x: calculatedXFromStartingPosition,
152
+ y
153
+ });
154
+ }
155
+ };
156
+ getBaseX = () => this.p.controller.getItemDataForIndex(this.p.itemIndex).baseX;
157
+ onResetPosition = args => {
158
+ const baseX = this.getBaseX() - this.tt.initialLayout.x;
159
+ const animationArgs = {
160
+ duration: 200,
161
+ easing: Easing.inOut(Easing.linear),
162
+ toValue: {
163
+ x: baseX,
164
+ y: 0
165
+ },
166
+ useNativeDriver: true
167
+ };
168
+ const animationEventArgs = {
169
+ animationArgs,
170
+ animationType: "resetPosition",
171
+ item: this.p.item
172
+ };
173
+ this.p.controller.events.emit("onAnimationStart", animationEventArgs);
174
+ Animated.timing(this.tt.position, animationArgs).start(() => {
175
+ this.p.controller.events.emit("onAnimationEnd", animationEventArgs);
176
+ if (args?.callback) args.callback();
177
+ });
178
+ if (this.props.onItemMoved) {
179
+ this.p.onItemMoved({
180
+ animationArgs,
181
+ itemIndex: this.p.itemIndex,
182
+ x: baseX,
183
+ y: 0
184
+ });
185
+ }
186
+ };
187
+ }));
188
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZU1lbW8iLCJBbmltYXRlZCIsIkVhc2luZyIsIlBhblJlc3BvbmRlciIsInNoYXBlQ29tcG9uZW50IiwiU2hhcGVDb21wb25lbnQiLCJFdmVudEVtaXR0ZXIiLCJtZW1vIiwiUHJvcFR5cGVzIiwicHJvcFR5cGVzRXhhY3QiLCJ1c2VFdmVudEVtaXR0ZXIiLCJEcmFnZ2FibGVTb3J0SXRlbSIsInByb3BUeXBlcyIsImNhY2hlS2V5Iiwic3RyaW5nIiwiY29udHJvbGxlciIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJpdGVtIiwiYW55IiwiaXRlbUluZGV4IiwibnVtYmVyIiwib25JdGVtTW92ZWQiLCJmdW5jIiwicmVuZGVySXRlbSIsImluaXRpYWxMYXlvdXQiLCJzZXR1cCIsInVzZVN0YXRlcyIsImFjdGl2ZSIsImRyYWdnaW5nIiwiZXZlbnRzIiwicG9zaXRpb24iLCJWYWx1ZVhZIiwicGFuUmVzcG9uZGVyIiwiY3JlYXRlIiwib25TdGFydFNob3VsZFNldFBhblJlc3BvbmRlciIsImUiLCJzZXRTdGF0ZSIsInAiLCJvbkRyYWdTdGFydCIsImdldEV2ZW50cyIsInR0Iiwib25EcmFnRW5kQW5pbWF0aW9uIiwib25Nb3ZlIiwib25Nb3ZlVG9Qb3NpdGlvbiIsIm9uUmVzZXRQb3NpdGlvbiIsInJlbmRlciIsInMiLCJzdHlsZSIsInRyYW5zZm9ybSIsImdldFRyYW5zbGF0ZVRyYW5zZm9ybSIsImJhY2tncm91bmRDb2xvciIsImVsZXZhdGlvbiIsInpJbmRleCIsImNyZWF0ZUVsZW1lbnQiLCJWaWV3IiwiZGF0YVNldCIsImNvbXBvbmVudCIsIm9uTGF5b3V0IiwiaXNBY3RpdmUiLCJ0b3VjaFByb3BzIiwicGFuSGFuZGxlcnMiLCJpdGVtRGF0YSIsIm5ld1N0YXRlIiwiaW5kZXgiLCJiYXNlWEF0U3RhcnRlZERyYWdnaW5nIiwiZ2V0QmFzZVgiLCJvbkl0ZW1MYXlvdXQiLCJsYXlvdXQiLCJuYXRpdmVFdmVudCIsImdlc3RhdGUiLCJ4IiwiZHgiLCJ5Iiwic2V0VmFsdWUiLCJwcm9wcyIsImNhbGN1bGF0ZWRYRnJvbVN0YXJ0aW5nUG9zaXRpb24iLCJhbmltYXRpb25BcmdzIiwiZHVyYXRpb24iLCJlYXNpbmciLCJpbk91dCIsImxpbmVhciIsInRvVmFsdWUiLCJ1c2VOYXRpdmVEcml2ZXIiLCJhbmltYXRpb25FdmVudEFyZ3MiLCJhbmltYXRpb25UeXBlIiwiZW1pdCIsInRpbWluZyIsInN0YXJ0IiwiZ2V0SXRlbURhdGFGb3JJbmRleCIsImJhc2VYIiwiYXJncyIsImNhbGxiYWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RyYWdnYWJsZS1zb3J0L2l0ZW0uanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge0FuaW1hdGVkLCBFYXNpbmcsIFBhblJlc3BvbmRlcn0gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50LCBTaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9zaGFwZS1jb21wb25lbnRcIlxuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tIFwiZXZlbnRzXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCIuLi91c2UtZXZlbnQtZW1pdHRlclwiXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgRHJhZ2dhYmxlU29ydEl0ZW0gZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY2FjaGVLZXk6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29udHJvbGxlcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGl0ZW06IFByb3BUeXBlcy5hbnkuaXNSZXF1aXJlZCxcbiAgICBpdGVtSW5kZXg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBvbkl0ZW1Nb3ZlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcmVuZGVySXRlbTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICB9KVxuXG4gIGluaXRpYWxMYXlvdXQgPSBudWxsXG5cbiAgc2V0dXAoKSB7XG4gICAgdGhpcy51c2VTdGF0ZXMoe1xuICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgIGRyYWdnaW5nOiBmYWxzZVxuICAgIH0pXG5cbiAgICB0aGlzLmV2ZW50cyA9IHVzZU1lbW8oKCkgPT4gbmV3IEV2ZW50RW1pdHRlcigpLCBbXSlcbiAgICB0aGlzLnBvc2l0aW9uID0gdXNlTWVtbygoKSA9PiBuZXcgQW5pbWF0ZWQuVmFsdWVYWSgpLCBbXSlcbiAgICB0aGlzLnBhblJlc3BvbmRlciA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiBQYW5SZXNwb25kZXIuY3JlYXRlKHtcbiAgICAgICAgb25TdGFydFNob3VsZFNldFBhblJlc3BvbmRlcjogKGUsICkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe2RyYWdnaW5nOiB0cnVlfSlcbiAgICAgICAgICB0aGlzLnAuY29udHJvbGxlci5vbkRyYWdTdGFydCh7aXRlbTogdGhpcy5wLml0ZW0sIGl0ZW1JbmRleDogdGhpcy5wLml0ZW1JbmRleH0pXG5cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBbXVxuICAgIClcblxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnAuY29udHJvbGxlci5nZXRFdmVudHMoKSwgXCJvbkRyYWdTdGFydFwiLCB0aGlzLnR0Lm9uRHJhZ1N0YXJ0KVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnAuY29udHJvbGxlci5nZXRFdmVudHMoKSwgXCJvbkRyYWdFbmRBbmltYXRpb25cIiwgdGhpcy50dC5vbkRyYWdFbmRBbmltYXRpb24pXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMudHQuZXZlbnRzLCBcIm1vdmVcIiwgdGhpcy50dC5vbk1vdmUpXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMudHQuZXZlbnRzLCBcIm1vdmVUb1Bvc2l0aW9uXCIsIHRoaXMudHQub25Nb3ZlVG9Qb3NpdGlvbilcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5ldmVudHMsIFwicmVzZXRQb3NpdGlvblwiLCB0aGlzLnR0Lm9uUmVzZXRQb3NpdGlvbilcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7aXRlbSwgcmVuZGVySXRlbX0gPSB0aGlzLnBcbiAgICBjb25zdCB7YWN0aXZlfSA9IHRoaXMuc1xuICAgIGNvbnN0IHN0eWxlID0gdXNlTWVtbyhcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0aGlzLnR0LnBvc2l0aW9uLmdldFRyYW5zbGF0ZVRyYW5zZm9ybSgpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgc3R5bGUuYmFja2dyb3VuZENvbG9yID0gXCIjZmZmXCJcbiAgICAgICAgICBzdHlsZS5lbGV2YXRpb24gPSAyXG4gICAgICAgICAgc3R5bGUuekluZGV4ID0gOTk5OTlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHlsZVxuICAgICAgfSxcbiAgICAgIFthY3RpdmVdXG4gICAgKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBbmltYXRlZC5WaWV3IGRhdGFTZXQ9e3tjb21wb25lbnQ6IFwiZHJhZ2dhYmxlLXNvcnQvaXRlbVwifX0gb25MYXlvdXQ9e3RoaXMudHQub25MYXlvdXR9IHN0eWxlPXtzdHlsZX0+XG4gICAgICAgIHtyZW5kZXJJdGVtKHtpc0FjdGl2ZTogYWN0aXZlLCBpdGVtLCB0b3VjaFByb3BzOiB0aGlzLnR0LnBhblJlc3BvbmRlci5wYW5IYW5kbGVyc30pfVxuICAgICAgPC9BbmltYXRlZC5WaWV3PlxuICAgIClcbiAgfVxuXG4gIG9uRHJhZ1N0YXJ0ID0gKHtpdGVtRGF0YX0pID0+IHtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHtkcmFnZ2luZzogdHJ1ZX1cblxuICAgIGlmIChpdGVtRGF0YS5pbmRleCA9PSB0aGlzLnAuaXRlbUluZGV4KSB7XG4gICAgICBuZXdTdGF0ZS5hY3RpdmUgPSB0cnVlXG4gICAgICB0aGlzLmJhc2VYQXRTdGFydGVkRHJhZ2dpbmcgPSB0aGlzLmdldEJhc2VYKClcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKVxuICB9XG5cbiAgb25EcmFnRW5kQW5pbWF0aW9uID0gKCkgPT4gdGhpcy5zZXRTdGF0ZSh7YWN0aXZlOiBmYWxzZSwgZHJhZ2dpbmc6IGZhbHNlfSlcblxuICBvbkxheW91dCA9IChlKSA9PiB7XG4gICAgY29uc3Qge2NvbnRyb2xsZXIsIGl0ZW0sIGl0ZW1JbmRleH0gPSB0aGlzLnBcblxuICAgIGNvbnRyb2xsZXIub25JdGVtTGF5b3V0KHtldmVudHM6IHRoaXMudHQuZXZlbnRzLCBpbmRleDogaXRlbUluZGV4LCBpdGVtLCBsYXlvdXQ6IGUubmF0aXZlRXZlbnQubGF5b3V0fSlcblxuICAgIGlmICghdGhpcy50dC5pbml0aWFsTGF5b3V0KSB7XG4gICAgICB0aGlzLmluaXRpYWxMYXlvdXQgPSBlLm5hdGl2ZUV2ZW50LmxheW91dFxuICAgIH1cbiAgfVxuXG4gIG9uTW92ZSA9ICh7Z2VzdGF0ZX0pID0+IHtcbiAgICBjb25zdCB4ID0gZ2VzdGF0ZS5keCArIHRoaXMudHQuYmFzZVhBdFN0YXJ0ZWREcmFnZ2luZyAtIHRoaXMudHQuaW5pdGlhbExheW91dC54XG4gICAgY29uc3QgeSA9IHRoaXMudHQuaW5pdGlhbExheW91dC55XG5cbiAgICB0aGlzLnR0LnBvc2l0aW9uLnNldFZhbHVlKHt4LCB5fSlcblxuICAgIGlmICh0aGlzLnByb3BzLm9uSXRlbU1vdmVkKSB7XG4gICAgICB0aGlzLnAub25JdGVtTW92ZWQoe2l0ZW1JbmRleDogdGhpcy5wLml0ZW1JbmRleCwgeCwgeX0pXG4gICAgfVxuICB9XG5cbiAgb25Nb3ZlVG9Qb3NpdGlvbiA9ICh7eCwgeX0pID0+IHtcbiAgICBjb25zdCBjYWxjdWxhdGVkWEZyb21TdGFydGluZ1Bvc2l0aW9uID0geCAtIHRoaXMudHQuaW5pdGlhbExheW91dC54XG4gICAgY29uc3QgYW5pbWF0aW9uQXJncyA9IHtcbiAgICAgIGR1cmF0aW9uOiAyMDAsXG4gICAgICBlYXNpbmc6IEVhc2luZy5pbk91dChFYXNpbmcubGluZWFyKSxcbiAgICAgIHRvVmFsdWU6IHtcbiAgICAgICAgeDogY2FsY3VsYXRlZFhGcm9tU3RhcnRpbmdQb3NpdGlvbixcbiAgICAgICAgeVxuICAgICAgfSxcbiAgICAgIHVzZU5hdGl2ZURyaXZlcjogdHJ1ZSxcbiAgICB9XG4gICAgY29uc3QgYW5pbWF0aW9uRXZlbnRBcmdzID0ge2FuaW1hdGlvbkFyZ3MsIGFuaW1hdGlvblR5cGU6IFwibW92ZVRvUG9zaXRpb25cIiwgaXRlbTogdGhpcy5wLml0ZW19XG5cbiAgICB0aGlzLnAuY29udHJvbGxlci5ldmVudHMuZW1pdChcIm9uQW5pbWF0aW9uU3RhcnRcIiwgYW5pbWF0aW9uRXZlbnRBcmdzKVxuXG4gICAgQW5pbWF0ZWRcbiAgICAgIC50aW1pbmcodGhpcy50dC5wb3NpdGlvbiwgYW5pbWF0aW9uQXJncylcbiAgICAgIC5zdGFydCgoKSA9PiB7XG4gICAgICAgIHRoaXMucC5jb250cm9sbGVyLmV2ZW50cy5lbWl0KFwib25BbmltYXRpb25FbmRcIiwgYW5pbWF0aW9uRXZlbnRBcmdzKVxuICAgICAgfSlcblxuICAgIGlmICh0aGlzLnByb3BzLm9uSXRlbU1vdmVkKSB7XG4gICAgICB0aGlzLnAub25JdGVtTW92ZWQoe1xuICAgICAgICBhbmltYXRpb25BcmdzLFxuICAgICAgICBpdGVtSW5kZXg6IHRoaXMucC5pdGVtSW5kZXgsXG4gICAgICAgIHg6IGNhbGN1bGF0ZWRYRnJvbVN0YXJ0aW5nUG9zaXRpb24sXG4gICAgICAgIHlcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgZ2V0QmFzZVggPSAoKSA9PiB0aGlzLnAuY29udHJvbGxlci5nZXRJdGVtRGF0YUZvckluZGV4KHRoaXMucC5pdGVtSW5kZXgpLmJhc2VYXG5cbiAgb25SZXNldFBvc2l0aW9uID0gKGFyZ3MpID0+IHtcbiAgICBjb25zdCBiYXNlWCA9IHRoaXMuZ2V0QmFzZVgoKSAtIHRoaXMudHQuaW5pdGlhbExheW91dC54XG4gICAgY29uc3QgYW5pbWF0aW9uQXJncyA9IHtcbiAgICAgIGR1cmF0aW9uOiAyMDAsXG4gICAgICBlYXNpbmc6IEVhc2luZy5pbk91dChFYXNpbmcubGluZWFyKSxcbiAgICAgIHRvVmFsdWU6IHtcbiAgICAgICAgeDogYmFzZVgsXG4gICAgICAgIHk6IDBcbiAgICAgIH0sXG4gICAgICB1c2VOYXRpdmVEcml2ZXI6IHRydWUsXG4gICAgfVxuICAgIGNvbnN0IGFuaW1hdGlvbkV2ZW50QXJncyA9IHthbmltYXRpb25BcmdzLCBhbmltYXRpb25UeXBlOiBcInJlc2V0UG9zaXRpb25cIiwgaXRlbTogdGhpcy5wLml0ZW19XG5cbiAgICB0aGlzLnAuY29udHJvbGxlci5ldmVudHMuZW1pdChcIm9uQW5pbWF0aW9uU3RhcnRcIiwgYW5pbWF0aW9uRXZlbnRBcmdzKVxuXG4gICAgQW5pbWF0ZWRcbiAgICAgIC50aW1pbmcodGhpcy50dC5wb3NpdGlvbiwgYW5pbWF0aW9uQXJncylcbiAgICAgIC5zdGFydCgoKSA9PiB7XG4gICAgICAgIHRoaXMucC5jb250cm9sbGVyLmV2ZW50cy5lbWl0KFwib25BbmltYXRpb25FbmRcIiwgYW5pbWF0aW9uRXZlbnRBcmdzKVxuICAgICAgICBpZiAoYXJncz8uY2FsbGJhY2spIGFyZ3MuY2FsbGJhY2soKVxuICAgICAgfSlcblxuICAgIGlmICh0aGlzLnByb3BzLm9uSXRlbU1vdmVkKSB7XG4gICAgICB0aGlzLnAub25JdGVtTW92ZWQoe1xuICAgICAgICBhbmltYXRpb25BcmdzLFxuICAgICAgICBpdGVtSW5kZXg6IHRoaXMucC5pdGVtSW5kZXgsXG4gICAgICAgIHg6IGJhc2VYLFxuICAgICAgICB5OiAwXG4gICAgICB9KVxuICAgIH1cbiAgfVxufSkpXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQUssSUFBR0MsT0FBTyxRQUFPLE9BQU87QUFDcEMsU0FBUUMsUUFBUSxFQUFFQyxNQUFNLEVBQUVDLFlBQVksUUFBTyxjQUFjO0FBQzNELFNBQVFDLGNBQWMsRUFBRUMsY0FBYyxRQUFPLHVDQUF1QztBQUNwRixPQUFPQyxZQUFZLE1BQU0sUUFBUTtBQUNqQyxPQUFPQyxJQUFJLE1BQU0sNEJBQTRCO0FBQzdDLE9BQU9DLFNBQVMsTUFBTSxZQUFZO0FBQ2xDLE9BQU9DLGNBQWMsTUFBTSxrQkFBa0I7QUFDN0MsT0FBT0MsZUFBZSxNQUFNLHNCQUFzQjtBQUVsRCxlQUFlSCxJQUFJLENBQUNILGNBQWMsQ0FBQyxNQUFNTyxpQkFBaUIsU0FBU04sY0FBYyxDQUFDO0VBQ2hGLE9BQU9PLFNBQVMsR0FBR0gsY0FBYyxDQUFDO0lBQ2hDSSxRQUFRLEVBQUVMLFNBQVMsQ0FBQ00sTUFBTTtJQUMxQkMsVUFBVSxFQUFFUCxTQUFTLENBQUNRLE1BQU0sQ0FBQ0MsVUFBVTtJQUN2Q0MsSUFBSSxFQUFFVixTQUFTLENBQUNXLEdBQUcsQ0FBQ0YsVUFBVTtJQUM5QkcsU0FBUyxFQUFFWixTQUFTLENBQUNhLE1BQU0sQ0FBQ0osVUFBVTtJQUN0Q0ssV0FBVyxFQUFFZCxTQUFTLENBQUNlLElBQUk7SUFDM0JDLFVBQVUsRUFBRWhCLFNBQVMsQ0FBQ2UsSUFBSSxDQUFDTjtFQUM3QixDQUFDLENBQUM7RUFFRlEsYUFBYSxHQUFHLElBQUk7RUFFcEJDLEtBQUtBLENBQUEsRUFBRztJQUNOLElBQUksQ0FBQ0MsU0FBUyxDQUFDO01BQ2JDLE1BQU0sRUFBRSxLQUFLO01BQ2JDLFFBQVEsRUFBRTtJQUNaLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQ0MsTUFBTSxHQUFHOUIsT0FBTyxDQUFDLE1BQU0sSUFBSU0sWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsSUFBSSxDQUFDeUIsUUFBUSxHQUFHL0IsT0FBTyxDQUFDLE1BQU0sSUFBSUMsUUFBUSxDQUFDK0IsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDekQsSUFBSSxDQUFDQyxZQUFZLEdBQUdqQyxPQUFPLENBQ3pCLE1BQU1HLFlBQVksQ0FBQytCLE1BQU0sQ0FBQztNQUN4QkMsNEJBQTRCLEVBQUdDLENBQUMsSUFBTztRQUNyQyxJQUFJLENBQUNDLFFBQVEsQ0FBQztVQUFDUixRQUFRLEVBQUU7UUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDUyxDQUFDLENBQUN2QixVQUFVLENBQUN3QixXQUFXLENBQUM7VUFBQ3JCLElBQUksRUFBRSxJQUFJLENBQUNvQixDQUFDLENBQUNwQixJQUFJO1VBQUVFLFNBQVMsRUFBRSxJQUFJLENBQUNrQixDQUFDLENBQUNsQjtRQUFTLENBQUMsQ0FBQztRQUUvRSxPQUFPLEtBQUs7TUFDZDtJQUNGLENBQUMsQ0FBQyxFQUNGLEVBQ0YsQ0FBQztJQUVEVixlQUFlLENBQUMsSUFBSSxDQUFDNEIsQ0FBQyxDQUFDdkIsVUFBVSxDQUFDeUIsU0FBUyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDQyxFQUFFLENBQUNGLFdBQVcsQ0FBQztJQUNsRjdCLGVBQWUsQ0FBQyxJQUFJLENBQUM0QixDQUFDLENBQUN2QixVQUFVLENBQUN5QixTQUFTLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQ0MsRUFBRSxDQUFDQyxrQkFBa0IsQ0FBQztJQUNoR2hDLGVBQWUsQ0FBQyxJQUFJLENBQUMrQixFQUFFLENBQUNYLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDVyxFQUFFLENBQUNFLE1BQU0sQ0FBQztJQUN2RGpDLGVBQWUsQ0FBQyxJQUFJLENBQUMrQixFQUFFLENBQUNYLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUNXLEVBQUUsQ0FBQ0csZ0JBQWdCLENBQUM7SUFDM0VsQyxlQUFlLENBQUMsSUFBSSxDQUFDK0IsRUFBRSxDQUFDWCxNQUFNLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQ1csRUFBRSxDQUFDSSxlQUFlLENBQUM7RUFDM0U7RUFFQUMsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTTtNQUFDNUIsSUFBSTtNQUFFTTtJQUFVLENBQUMsR0FBRyxJQUFJLENBQUNjLENBQUM7SUFDakMsTUFBTTtNQUFDVjtJQUFNLENBQUMsR0FBRyxJQUFJLENBQUNtQixDQUFDO0lBQ3ZCLE1BQU1DLEtBQUssR0FBR2hELE9BQU8sQ0FDbkIsTUFBTTtNQUNKLE1BQU1nRCxLQUFLLEdBQUc7UUFDWkMsU0FBUyxFQUFFLElBQUksQ0FBQ1IsRUFBRSxDQUFDVixRQUFRLENBQUNtQixxQkFBcUIsQ0FBQztNQUNwRCxDQUFDO01BRUQsSUFBSXRCLE1BQU0sRUFBRTtRQUNWb0IsS0FBSyxDQUFDRyxlQUFlLEdBQUcsTUFBTTtRQUM5QkgsS0FBSyxDQUFDSSxTQUFTLEdBQUcsQ0FBQztRQUNuQkosS0FBSyxDQUFDSyxNQUFNLEdBQUcsS0FBSztNQUN0QjtNQUVBLE9BQU9MLEtBQUs7SUFDZCxDQUFDLEVBQ0QsQ0FBQ3BCLE1BQU0sQ0FDVCxDQUFDO0lBRUQsb0JBQ0U3QixLQUFBLENBQUF1RCxhQUFBLENBQUNyRCxRQUFRLENBQUNzRCxJQUFJO01BQUNDLE9BQU8sRUFBRTtRQUFDQyxTQUFTLEVBQUU7TUFBcUIsQ0FBRTtNQUFDQyxRQUFRLEVBQUUsSUFBSSxDQUFDakIsRUFBRSxDQUFDaUIsUUFBUztNQUFDVixLQUFLLEVBQUVBO0lBQU0sR0FDbEd4QixVQUFVLENBQUM7TUFBQ21DLFFBQVEsRUFBRS9CLE1BQU07TUFBRVYsSUFBSTtNQUFFMEMsVUFBVSxFQUFFLElBQUksQ0FBQ25CLEVBQUUsQ0FBQ1IsWUFBWSxDQUFDNEI7SUFBVyxDQUFDLENBQ3JFLENBQUM7RUFFcEI7RUFFQXRCLFdBQVcsR0FBR0EsQ0FBQztJQUFDdUI7RUFBUSxDQUFDLEtBQUs7SUFDNUIsTUFBTUMsUUFBUSxHQUFHO01BQUNsQyxRQUFRLEVBQUU7SUFBSSxDQUFDO0lBRWpDLElBQUlpQyxRQUFRLENBQUNFLEtBQUssSUFBSSxJQUFJLENBQUMxQixDQUFDLENBQUNsQixTQUFTLEVBQUU7TUFDdEMyQyxRQUFRLENBQUNuQyxNQUFNLEdBQUcsSUFBSTtNQUN0QixJQUFJLENBQUNxQyxzQkFBc0IsR0FBRyxJQUFJLENBQUNDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DO0lBRUEsSUFBSSxDQUFDN0IsUUFBUSxDQUFDMEIsUUFBUSxDQUFDO0VBQ3pCLENBQUM7RUFFRHJCLGtCQUFrQixHQUFHQSxDQUFBLEtBQU0sSUFBSSxDQUFDTCxRQUFRLENBQUM7SUFBQ1QsTUFBTSxFQUFFLEtBQUs7SUFBRUMsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDO0VBRTFFNkIsUUFBUSxHQUFJdEIsQ0FBQyxJQUFLO0lBQ2hCLE1BQU07TUFBQ3JCLFVBQVU7TUFBRUcsSUFBSTtNQUFFRTtJQUFTLENBQUMsR0FBRyxJQUFJLENBQUNrQixDQUFDO0lBRTVDdkIsVUFBVSxDQUFDb0QsWUFBWSxDQUFDO01BQUNyQyxNQUFNLEVBQUUsSUFBSSxDQUFDVyxFQUFFLENBQUNYLE1BQU07TUFBRWtDLEtBQUssRUFBRTVDLFNBQVM7TUFBRUYsSUFBSTtNQUFFa0QsTUFBTSxFQUFFaEMsQ0FBQyxDQUFDaUMsV0FBVyxDQUFDRDtJQUFNLENBQUMsQ0FBQztJQUV2RyxJQUFJLENBQUMsSUFBSSxDQUFDM0IsRUFBRSxDQUFDaEIsYUFBYSxFQUFFO01BQzFCLElBQUksQ0FBQ0EsYUFBYSxHQUFHVyxDQUFDLENBQUNpQyxXQUFXLENBQUNELE1BQU07SUFDM0M7RUFDRixDQUFDO0VBRUR6QixNQUFNLEdBQUdBLENBQUM7SUFBQzJCO0VBQU8sQ0FBQyxLQUFLO0lBQ3RCLE1BQU1DLENBQUMsR0FBR0QsT0FBTyxDQUFDRSxFQUFFLEdBQUcsSUFBSSxDQUFDL0IsRUFBRSxDQUFDd0Isc0JBQXNCLEdBQUcsSUFBSSxDQUFDeEIsRUFBRSxDQUFDaEIsYUFBYSxDQUFDOEMsQ0FBQztJQUMvRSxNQUFNRSxDQUFDLEdBQUcsSUFBSSxDQUFDaEMsRUFBRSxDQUFDaEIsYUFBYSxDQUFDZ0QsQ0FBQztJQUVqQyxJQUFJLENBQUNoQyxFQUFFLENBQUNWLFFBQVEsQ0FBQzJDLFFBQVEsQ0FBQztNQUFDSCxDQUFDO01BQUVFO0lBQUMsQ0FBQyxDQUFDO0lBRWpDLElBQUksSUFBSSxDQUFDRSxLQUFLLENBQUNyRCxXQUFXLEVBQUU7TUFDMUIsSUFBSSxDQUFDZ0IsQ0FBQyxDQUFDaEIsV0FBVyxDQUFDO1FBQUNGLFNBQVMsRUFBRSxJQUFJLENBQUNrQixDQUFDLENBQUNsQixTQUFTO1FBQUVtRCxDQUFDO1FBQUVFO01BQUMsQ0FBQyxDQUFDO0lBQ3pEO0VBQ0YsQ0FBQztFQUVEN0IsZ0JBQWdCLEdBQUdBLENBQUM7SUFBQzJCLENBQUM7SUFBRUU7RUFBQyxDQUFDLEtBQUs7SUFDN0IsTUFBTUcsK0JBQStCLEdBQUdMLENBQUMsR0FBRyxJQUFJLENBQUM5QixFQUFFLENBQUNoQixhQUFhLENBQUM4QyxDQUFDO0lBQ25FLE1BQU1NLGFBQWEsR0FBRztNQUNwQkMsUUFBUSxFQUFFLEdBQUc7TUFDYkMsTUFBTSxFQUFFN0UsTUFBTSxDQUFDOEUsS0FBSyxDQUFDOUUsTUFBTSxDQUFDK0UsTUFBTSxDQUFDO01BQ25DQyxPQUFPLEVBQUU7UUFDUFgsQ0FBQyxFQUFFSywrQkFBK0I7UUFDbENIO01BQ0YsQ0FBQztNQUNEVSxlQUFlLEVBQUU7SUFDbkIsQ0FBQztJQUNELE1BQU1DLGtCQUFrQixHQUFHO01BQUNQLGFBQWE7TUFBRVEsYUFBYSxFQUFFLGdCQUFnQjtNQUFFbkUsSUFBSSxFQUFFLElBQUksQ0FBQ29CLENBQUMsQ0FBQ3BCO0lBQUksQ0FBQztJQUU5RixJQUFJLENBQUNvQixDQUFDLENBQUN2QixVQUFVLENBQUNlLE1BQU0sQ0FBQ3dELElBQUksQ0FBQyxrQkFBa0IsRUFBRUYsa0JBQWtCLENBQUM7SUFFckVuRixRQUFRLENBQ0xzRixNQUFNLENBQUMsSUFBSSxDQUFDOUMsRUFBRSxDQUFDVixRQUFRLEVBQUU4QyxhQUFhLENBQUMsQ0FDdkNXLEtBQUssQ0FBQyxNQUFNO01BQ1gsSUFBSSxDQUFDbEQsQ0FBQyxDQUFDdkIsVUFBVSxDQUFDZSxNQUFNLENBQUN3RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUVGLGtCQUFrQixDQUFDO0lBQ3JFLENBQUMsQ0FBQztJQUVKLElBQUksSUFBSSxDQUFDVCxLQUFLLENBQUNyRCxXQUFXLEVBQUU7TUFDMUIsSUFBSSxDQUFDZ0IsQ0FBQyxDQUFDaEIsV0FBVyxDQUFDO1FBQ2pCdUQsYUFBYTtRQUNiekQsU0FBUyxFQUFFLElBQUksQ0FBQ2tCLENBQUMsQ0FBQ2xCLFNBQVM7UUFDM0JtRCxDQUFDLEVBQUVLLCtCQUErQjtRQUNsQ0g7TUFDRixDQUFDLENBQUM7SUFDSjtFQUNGLENBQUM7RUFFRFAsUUFBUSxHQUFHQSxDQUFBLEtBQU0sSUFBSSxDQUFDNUIsQ0FBQyxDQUFDdkIsVUFBVSxDQUFDMEUsbUJBQW1CLENBQUMsSUFBSSxDQUFDbkQsQ0FBQyxDQUFDbEIsU0FBUyxDQUFDLENBQUNzRSxLQUFLO0VBRTlFN0MsZUFBZSxHQUFJOEMsSUFBSSxJQUFLO0lBQzFCLE1BQU1ELEtBQUssR0FBRyxJQUFJLENBQUN4QixRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQ3pCLEVBQUUsQ0FBQ2hCLGFBQWEsQ0FBQzhDLENBQUM7SUFDdkQsTUFBTU0sYUFBYSxHQUFHO01BQ3BCQyxRQUFRLEVBQUUsR0FBRztNQUNiQyxNQUFNLEVBQUU3RSxNQUFNLENBQUM4RSxLQUFLLENBQUM5RSxNQUFNLENBQUMrRSxNQUFNLENBQUM7TUFDbkNDLE9BQU8sRUFBRTtRQUNQWCxDQUFDLEVBQUVtQixLQUFLO1FBQ1JqQixDQUFDLEVBQUU7TUFDTCxDQUFDO01BQ0RVLGVBQWUsRUFBRTtJQUNuQixDQUFDO0lBQ0QsTUFBTUMsa0JBQWtCLEdBQUc7TUFBQ1AsYUFBYTtNQUFFUSxhQUFhLEVBQUUsZUFBZTtNQUFFbkUsSUFBSSxFQUFFLElBQUksQ0FBQ29CLENBQUMsQ0FBQ3BCO0lBQUksQ0FBQztJQUU3RixJQUFJLENBQUNvQixDQUFDLENBQUN2QixVQUFVLENBQUNlLE1BQU0sQ0FBQ3dELElBQUksQ0FBQyxrQkFBa0IsRUFBRUYsa0JBQWtCLENBQUM7SUFFckVuRixRQUFRLENBQ0xzRixNQUFNLENBQUMsSUFBSSxDQUFDOUMsRUFBRSxDQUFDVixRQUFRLEVBQUU4QyxhQUFhLENBQUMsQ0FDdkNXLEtBQUssQ0FBQyxNQUFNO01BQ1gsSUFBSSxDQUFDbEQsQ0FBQyxDQUFDdkIsVUFBVSxDQUFDZSxNQUFNLENBQUN3RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUVGLGtCQUFrQixDQUFDO01BQ25FLElBQUlPLElBQUksRUFBRUMsUUFBUSxFQUFFRCxJQUFJLENBQUNDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQztJQUVKLElBQUksSUFBSSxDQUFDakIsS0FBSyxDQUFDckQsV0FBVyxFQUFFO01BQzFCLElBQUksQ0FBQ2dCLENBQUMsQ0FBQ2hCLFdBQVcsQ0FBQztRQUNqQnVELGFBQWE7UUFDYnpELFNBQVMsRUFBRSxJQUFJLENBQUNrQixDQUFDLENBQUNsQixTQUFTO1FBQzNCbUQsQ0FBQyxFQUFFbUIsS0FBSztRQUNSakIsQ0FBQyxFQUFFO01BQ0wsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,101 @@
1
+ import { digg } from "diggerize";
2
+ import SourceMapsLoader from "./source-maps-loader";
3
+ export default class ErrorLogger {
4
+ constructor() {
5
+ this.debugging = false;
6
+ this.errorOccurred = false;
7
+ this.errors = [];
8
+ this.isHandlingError = false;
9
+ this.sourceMapsLoader = new SourceMapsLoader();
10
+ this.sourceMapsLoader.loadSourceMapsForScriptTags(script => {
11
+ const src = script.getAttribute("src");
12
+ const type = script.getAttribute("type");
13
+ if (src && (src.includes("/packs/") || src.includes("/packs-test/")) && (type == "text/javascript" || !type)) {
14
+ return src;
15
+ }
16
+ });
17
+ }
18
+ debug(...output) {
19
+ if (this.debugging) console.error(`ApiMaker ErrorLogger:`, ...output);
20
+ }
21
+ enable() {
22
+ this.debug("Enable called");
23
+ this.connectOnError();
24
+ this.connectUnhandledRejection();
25
+ }
26
+ getErrors = () => this.errors;
27
+ hasErrorOccurred() {
28
+ return digg(this, "errorOccurred");
29
+ }
30
+ isLoadingSourceMaps() {
31
+ return digg(this, "sourceMapsLoader", "isLoadingSourceMaps");
32
+ }
33
+ isWorkingOnError() {
34
+ return digg(this, "isHandlingError") || this.isLoadingSourceMaps();
35
+ }
36
+ connectOnError() {
37
+ window.addEventListener("error", event => {
38
+ if (this.debugging) this.debug(`Error:`, event.message);
39
+ this.errorOccurred = true;
40
+ if (!this.isHandlingError) {
41
+ this.isHandlingError = true;
42
+ this.onError(event).finally(() => {
43
+ this.isHandlingError = false;
44
+ });
45
+ }
46
+ });
47
+ }
48
+ connectUnhandledRejection() {
49
+ window.addEventListener("unhandledrejection", event => {
50
+ if (this.debugging) this.debug(`Unhandled rejection:`, event.reason.message);
51
+ this.errorOccurred = true;
52
+ if (!this.isHandlingError) {
53
+ this.isHandlingError = true;
54
+ this.onUnhandledRejection(event).finally(() => {
55
+ this.isHandlingError = false;
56
+ });
57
+ }
58
+ });
59
+ }
60
+ async onError(event) {
61
+ this.errorOccurred = true;
62
+ await this.sourceMapsLoader.loadSourceMaps(event.error);
63
+ if (event.error && event.error.stack) {
64
+ const backtrace = this.sourceMapsLoader.parseStackTrace(event.error.stack);
65
+ this.errors.push({
66
+ errorClass: event.error ? event.error.name : "No error class",
67
+ message: event.message || "Unknown error",
68
+ backtrace
69
+ });
70
+ } else {
71
+ this.errors.push({
72
+ errorClass: event.error ? event.error.name : "No error class",
73
+ message: event.message || "Unknown error",
74
+ backtrace: null
75
+ });
76
+ }
77
+ }
78
+ async onUnhandledRejection(event) {
79
+ await this.sourceMapsLoader.loadSourceMaps(event.reason);
80
+ if (event.reason.stack) {
81
+ const backtrace = this.sourceMapsLoader.parseStackTrace(event.reason.stack);
82
+ this.errors.push({
83
+ errorClass: "UnhandledRejection",
84
+ message: event.reason.message || "Unhandled promise rejection",
85
+ backtrace
86
+ });
87
+ } else {
88
+ this.errors.push({
89
+ errorClass: "UnhandledRejection",
90
+ message: event.reason.message || "Unhandled promise rejection",
91
+ backtrace: null
92
+ });
93
+ }
94
+ }
95
+ testPromiseError() {
96
+ return new Promise(_resolve => {
97
+ throw new Error("testPromiseError");
98
+ });
99
+ }
100
+ }
101
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiU291cmNlTWFwc0xvYWRlciIsIkVycm9yTG9nZ2VyIiwiY29uc3RydWN0b3IiLCJkZWJ1Z2dpbmciLCJlcnJvck9jY3VycmVkIiwiZXJyb3JzIiwiaXNIYW5kbGluZ0Vycm9yIiwic291cmNlTWFwc0xvYWRlciIsImxvYWRTb3VyY2VNYXBzRm9yU2NyaXB0VGFncyIsInNjcmlwdCIsInNyYyIsImdldEF0dHJpYnV0ZSIsInR5cGUiLCJpbmNsdWRlcyIsImRlYnVnIiwib3V0cHV0IiwiY29uc29sZSIsImVycm9yIiwiZW5hYmxlIiwiY29ubmVjdE9uRXJyb3IiLCJjb25uZWN0VW5oYW5kbGVkUmVqZWN0aW9uIiwiZ2V0RXJyb3JzIiwiaGFzRXJyb3JPY2N1cnJlZCIsImlzTG9hZGluZ1NvdXJjZU1hcHMiLCJpc1dvcmtpbmdPbkVycm9yIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwibWVzc2FnZSIsIm9uRXJyb3IiLCJmaW5hbGx5IiwicmVhc29uIiwib25VbmhhbmRsZWRSZWplY3Rpb24iLCJsb2FkU291cmNlTWFwcyIsInN0YWNrIiwiYmFja3RyYWNlIiwicGFyc2VTdGFja1RyYWNlIiwicHVzaCIsImVycm9yQ2xhc3MiLCJuYW1lIiwidGVzdFByb21pc2VFcnJvciIsIlByb21pc2UiLCJfcmVzb2x2ZSIsIkVycm9yIl0sInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9yLWxvZ2dlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IFNvdXJjZU1hcHNMb2FkZXIgZnJvbSBcIi4vc291cmNlLW1hcHMtbG9hZGVyXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXJyb3JMb2dnZXIge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5kZWJ1Z2dpbmcgPSBmYWxzZVxuICAgIHRoaXMuZXJyb3JPY2N1cnJlZCA9IGZhbHNlXG4gICAgdGhpcy5lcnJvcnMgPSBbXVxuICAgIHRoaXMuaXNIYW5kbGluZ0Vycm9yID0gZmFsc2VcbiAgICB0aGlzLnNvdXJjZU1hcHNMb2FkZXIgPSBuZXcgU291cmNlTWFwc0xvYWRlcigpXG4gICAgdGhpcy5zb3VyY2VNYXBzTG9hZGVyLmxvYWRTb3VyY2VNYXBzRm9yU2NyaXB0VGFncygoc2NyaXB0KSA9PiB7XG4gICAgICBjb25zdCBzcmMgPSBzY3JpcHQuZ2V0QXR0cmlidXRlKFwic3JjXCIpXG4gICAgICBjb25zdCB0eXBlID0gc2NyaXB0LmdldEF0dHJpYnV0ZShcInR5cGVcIilcblxuICAgICAgaWYgKHNyYyAmJiAoc3JjLmluY2x1ZGVzKFwiL3BhY2tzL1wiKSB8fCBzcmMuaW5jbHVkZXMoXCIvcGFja3MtdGVzdC9cIikpICYmICh0eXBlID09IFwidGV4dC9qYXZhc2NyaXB0XCIgfHwgIXR5cGUpKSB7XG4gICAgICAgIHJldHVybiBzcmNcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZGVidWcoLi4ub3V0cHV0KSB7XG4gICAgaWYgKHRoaXMuZGVidWdnaW5nKSBjb25zb2xlLmVycm9yKGBBcGlNYWtlciBFcnJvckxvZ2dlcjpgLCAuLi5vdXRwdXQpXG4gIH1cblxuICBlbmFibGUgKCkge1xuICAgIHRoaXMuZGVidWcoXCJFbmFibGUgY2FsbGVkXCIpXG4gICAgdGhpcy5jb25uZWN0T25FcnJvcigpXG4gICAgdGhpcy5jb25uZWN0VW5oYW5kbGVkUmVqZWN0aW9uKClcbiAgfVxuXG4gIGdldEVycm9ycyA9ICgpID0+IHRoaXMuZXJyb3JzXG5cbiAgaGFzRXJyb3JPY2N1cnJlZCgpIHtcbiAgICByZXR1cm4gZGlnZyh0aGlzLCBcImVycm9yT2NjdXJyZWRcIilcbiAgfVxuXG4gIGlzTG9hZGluZ1NvdXJjZU1hcHMoKSB7XG4gICAgcmV0dXJuIGRpZ2codGhpcywgXCJzb3VyY2VNYXBzTG9hZGVyXCIsIFwiaXNMb2FkaW5nU291cmNlTWFwc1wiKVxuICB9XG5cbiAgaXNXb3JraW5nT25FcnJvcigpIHtcbiAgICByZXR1cm4gZGlnZyh0aGlzLCBcImlzSGFuZGxpbmdFcnJvclwiKSB8fCB0aGlzLmlzTG9hZGluZ1NvdXJjZU1hcHMoKVxuICB9XG5cbiAgY29ubmVjdE9uRXJyb3IgKCkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAodGhpcy5kZWJ1Z2dpbmcpIHRoaXMuZGVidWcoYEVycm9yOmAsIGV2ZW50Lm1lc3NhZ2UpXG4gICAgICB0aGlzLmVycm9yT2NjdXJyZWQgPSB0cnVlXG5cbiAgICAgIGlmICghdGhpcy5pc0hhbmRsaW5nRXJyb3IpIHtcbiAgICAgICAgdGhpcy5pc0hhbmRsaW5nRXJyb3IgPSB0cnVlXG4gICAgICAgIHRoaXMub25FcnJvcihldmVudCkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0hhbmRsaW5nRXJyb3IgPSBmYWxzZVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBjb25uZWN0VW5oYW5kbGVkUmVqZWN0aW9uICgpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInVuaGFuZGxlZHJlamVjdGlvblwiLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLmRlYnVnZ2luZykgdGhpcy5kZWJ1ZyhgVW5oYW5kbGVkIHJlamVjdGlvbjpgLCBldmVudC5yZWFzb24ubWVzc2FnZSlcbiAgICAgIHRoaXMuZXJyb3JPY2N1cnJlZCA9IHRydWVcblxuICAgICAgaWYgKCF0aGlzLmlzSGFuZGxpbmdFcnJvcikge1xuICAgICAgICB0aGlzLmlzSGFuZGxpbmdFcnJvciA9IHRydWVcbiAgICAgICAgdGhpcy5vblVuaGFuZGxlZFJlamVjdGlvbihldmVudCkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0hhbmRsaW5nRXJyb3IgPSBmYWxzZVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBhc3luYyBvbkVycm9yIChldmVudCkge1xuICAgIHRoaXMuZXJyb3JPY2N1cnJlZCA9IHRydWVcbiAgICBhd2FpdCB0aGlzLnNvdXJjZU1hcHNMb2FkZXIubG9hZFNvdXJjZU1hcHMoZXZlbnQuZXJyb3IpXG5cbiAgICBpZiAoZXZlbnQuZXJyb3IgJiYgZXZlbnQuZXJyb3Iuc3RhY2spIHtcbiAgICAgIGNvbnN0IGJhY2t0cmFjZSA9IHRoaXMuc291cmNlTWFwc0xvYWRlci5wYXJzZVN0YWNrVHJhY2UoZXZlbnQuZXJyb3Iuc3RhY2spXG5cbiAgICAgIHRoaXMuZXJyb3JzLnB1c2goe1xuICAgICAgICBlcnJvckNsYXNzOiBldmVudC5lcnJvciA/IGV2ZW50LmVycm9yLm5hbWUgOiBcIk5vIGVycm9yIGNsYXNzXCIsXG4gICAgICAgIG1lc3NhZ2U6IGV2ZW50Lm1lc3NhZ2UgfHwgXCJVbmtub3duIGVycm9yXCIsXG4gICAgICAgIGJhY2t0cmFjZVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lcnJvcnMucHVzaCh7XG4gICAgICAgIGVycm9yQ2xhc3M6IGV2ZW50LmVycm9yID8gZXZlbnQuZXJyb3IubmFtZSA6IFwiTm8gZXJyb3IgY2xhc3NcIixcbiAgICAgICAgbWVzc2FnZTogZXZlbnQubWVzc2FnZSB8fCBcIlVua25vd24gZXJyb3JcIixcbiAgICAgICAgYmFja3RyYWNlOiBudWxsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uVW5oYW5kbGVkUmVqZWN0aW9uIChldmVudCkge1xuICAgIGF3YWl0IHRoaXMuc291cmNlTWFwc0xvYWRlci5sb2FkU291cmNlTWFwcyhldmVudC5yZWFzb24pXG5cbiAgICBpZiAoZXZlbnQucmVhc29uLnN0YWNrKSB7XG4gICAgICBjb25zdCBiYWNrdHJhY2UgPSB0aGlzLnNvdXJjZU1hcHNMb2FkZXIucGFyc2VTdGFja1RyYWNlKGV2ZW50LnJlYXNvbi5zdGFjaylcblxuICAgICAgdGhpcy5lcnJvcnMucHVzaCh7XG4gICAgICAgIGVycm9yQ2xhc3M6IFwiVW5oYW5kbGVkUmVqZWN0aW9uXCIsXG4gICAgICAgIG1lc3NhZ2U6IGV2ZW50LnJlYXNvbi5tZXNzYWdlIHx8IFwiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uXCIsXG4gICAgICAgIGJhY2t0cmFjZVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lcnJvcnMucHVzaCh7XG4gICAgICAgIGVycm9yQ2xhc3M6IFwiVW5oYW5kbGVkUmVqZWN0aW9uXCIsXG4gICAgICAgIG1lc3NhZ2U6IGV2ZW50LnJlYXNvbi5tZXNzYWdlIHx8IFwiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uXCIsXG4gICAgICAgIGJhY2t0cmFjZTogbnVsbFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB0ZXN0UHJvbWlzZUVycm9yICgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF9yZXNvbHZlKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0ZXN0UHJvbWlzZUVycm9yXCIpXG4gICAgfSlcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxJQUFJLFFBQU8sV0FBVztBQUM5QixPQUFPQyxnQkFBZ0IsTUFBTSxzQkFBc0I7QUFFbkQsZUFBZSxNQUFNQyxXQUFXLENBQUM7RUFDL0JDLFdBQVdBLENBQUEsRUFBSTtJQUNiLElBQUksQ0FBQ0MsU0FBUyxHQUFHLEtBQUs7SUFDdEIsSUFBSSxDQUFDQyxhQUFhLEdBQUcsS0FBSztJQUMxQixJQUFJLENBQUNDLE1BQU0sR0FBRyxFQUFFO0lBQ2hCLElBQUksQ0FBQ0MsZUFBZSxHQUFHLEtBQUs7SUFDNUIsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBRyxJQUFJUCxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQ08sZ0JBQWdCLENBQUNDLDJCQUEyQixDQUFFQyxNQUFNLElBQUs7TUFDNUQsTUFBTUMsR0FBRyxHQUFHRCxNQUFNLENBQUNFLFlBQVksQ0FBQyxLQUFLLENBQUM7TUFDdEMsTUFBTUMsSUFBSSxHQUFHSCxNQUFNLENBQUNFLFlBQVksQ0FBQyxNQUFN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
@@ -0,0 +1,13 @@
1
+ import { digg } from "diggerize";
2
+ const errorMessages = args => {
3
+ if (typeof args.response == "object") {
4
+ return digg(args, "response", "errors").map(error => {
5
+ if (typeof error == "string") {
6
+ return error;
7
+ }
8
+ return digg(error, "message");
9
+ });
10
+ }
11
+ };
12
+ export default errorMessages;
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiZXJyb3JNZXNzYWdlcyIsImFyZ3MiLCJyZXNwb25zZSIsIm1hcCIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9yLW1lc3NhZ2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5cbmNvbnN0IGVycm9yTWVzc2FnZXMgPSAoYXJncykgPT4ge1xuICBpZiAodHlwZW9mIGFyZ3MucmVzcG9uc2UgPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBkaWdnKGFyZ3MsIFwicmVzcG9uc2VcIiwgXCJlcnJvcnNcIikubWFwKChlcnJvcikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBlcnJvciA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBlcnJvclxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGlnZyhlcnJvciwgXCJtZXNzYWdlXCIpXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBlcnJvck1lc3NhZ2VzXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLElBQUksUUFBTyxXQUFXO0FBRTlCLE1BQU1DLGFBQWEsR0FBSUMsSUFBSSxJQUFLO0VBQzlCLElBQUksT0FBT0EsSUFBSSxDQUFDQyxRQUFRLElBQUksUUFBUSxFQUFFO0lBQ3BDLE9BQU9ILElBQUksQ0FBQ0UsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQ0UsR0FBRyxDQUFFQyxLQUFLLElBQUs7TUFDckQsSUFBSSxPQUFPQSxLQUFLLElBQUksUUFBUSxFQUFFO1FBQzVCLE9BQU9BLEtBQUs7TUFDZDtNQUVBLE9BQU9MLElBQUksQ0FBQ0ssS0FBSyxFQUFFLFNBQVMsQ0FBQztJQUMvQixDQUFDLENBQUM7RUFDSjtBQUNGLENBQUM7QUFFRCxlQUFlSixhQUFhIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,32 @@
1
+ import ModelEvents from "./model-events";
2
+ import PropTypes from "prop-types";
3
+ import propTypesExact from "prop-types-exact";
4
+ import React from "react";
5
+ export default class ApiMakerEventConnection extends React.PureComponent {
6
+ static defaultProps = {
7
+ active: true
8
+ };
9
+ static propTypes = propTypesExact({
10
+ active: PropTypes.bool.isRequired,
11
+ model: PropTypes.object.isRequired,
12
+ event: PropTypes.string.isRequired,
13
+ onCall: PropTypes.func.isRequired
14
+ });
15
+ componentDidMount() {
16
+ this.subscription = ModelEvents.connect(this.props.model, this.props.event, (...args) => this.onCall(...args));
17
+ }
18
+ componentWillUnmount() {
19
+ if (this.subscription) {
20
+ this.subscription.unsubscribe();
21
+ }
22
+ }
23
+ render() {
24
+ return null;
25
+ }
26
+ onCall(...args) {
27
+ if (this.props.active) {
28
+ this.props.onCall(...args);
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2RlbEV2ZW50cyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0IiwiUmVhY3QiLCJBcGlNYWtlckV2ZW50Q29ubmVjdGlvbiIsIlB1cmVDb21wb25lbnQiLCJkZWZhdWx0UHJvcHMiLCJhY3RpdmUiLCJwcm9wVHlwZXMiLCJib29sIiwiaXNSZXF1aXJlZCIsIm1vZGVsIiwib2JqZWN0IiwiZXZlbnQiLCJzdHJpbmciLCJvbkNhbGwiLCJmdW5jIiwiY29tcG9uZW50RGlkTW91bnQiLCJzdWJzY3JpcHRpb24iLCJjb25uZWN0IiwicHJvcHMiLCJhcmdzIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJ1bnN1YnNjcmliZSIsInJlbmRlciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ldmVudC1jb25uZWN0aW9uLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW9kZWxFdmVudHMgZnJvbSBcIi4vbW9kZWwtZXZlbnRzXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcGlNYWtlckV2ZW50Q29ubmVjdGlvbiBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGFjdGl2ZTogdHJ1ZVxuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBhY3RpdmU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBldmVudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIG9uQ2FsbDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICB9KVxuXG4gIGNvbXBvbmVudERpZE1vdW50ICgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IE1vZGVsRXZlbnRzLmNvbm5lY3QodGhpcy5wcm9wcy5tb2RlbCwgdGhpcy5wcm9wcy5ldmVudCwgKC4uLmFyZ3MpID0+IHRoaXMub25DYWxsKC4uLmFyZ3MpKVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQgKCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlciAoKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIG9uQ2FsbCAoLi4uYXJncykge1xuICAgIGlmICh0aGlzLnByb3BzLmFjdGl2ZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNhbGwoLi4uYXJncylcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsV0FBVyxNQUFNLGdCQUFnQjtBQUN4QyxPQUFPQyxTQUFTLE1BQU0sWUFBWTtBQUNsQyxPQUFPQyxjQUFjLE1BQU0sa0JBQWtCO0FBQzdDLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBRXpCLGVBQWUsTUFBTUMsdUJBQXVCLFNBQVNELEtBQUssQ0FBQ0UsYUFBYSxDQUFDO0VBQ3ZFLE9BQU9DLFlBQVksR0FBRztJQUNwQkMsTUFBTSxFQUFFO0VBQ1YsQ0FBQztFQUVELE9BQU9DLFNBQVMsR0FBR04sY0FBYyxDQUFDO0lBQ2hDSyxNQUFNLEVBQUVOLFNBQVMsQ0FBQ1EsSUFBSSxDQUFDQyxVQUFVO0lBQ2pDQyxLQUFLLEVBQUVWLFNBQVMsQ0FBQ1csTUFBTSxDQUFDRixVQUFVO0lBQ2xDRyxLQUFLLEVBQUVaLFNBQVMsQ0FBQ2EsTUFBTSxDQUFDSixVQUFVO0lBQ2xDSyxNQUFNLEVBQUVkLFNBQVMsQ0FBQ2UsSUFBSSxDQUFDTjtFQUN6QixDQUFDLENBQUM7RUFFRk8saUJBQWlCQSxDQUFBLEVBQUk7SUFDbkIsSUFBSSxDQUFDQyxZQUFZLEdBQUdsQixXQUFXLENBQUNtQixPQUFPLENBQUMsSUFBSSxDQUFDQyxLQUFLLENBQUNULEtBQUssRUFBRSxJQUFJLENBQUNTLEtBQUssQ0FBQ1AsS0FBSyxFQUFFLENBQUMsR0FBR1EsSUFBSSxLQUFLLElBQUksQ0FBQ04sTUFBTSxDQUFDLEdBQUdNLElBQUksQ0FBQyxDQUFDO0VBQ2hIO0VBRUFDLG9CQUFvQkEsQ0FBQSxFQUFJO0lBQ3RCLElBQUksSUFBSSxDQUFDSixZQUFZLEVBQUU7TUFDckIsSUFBSSxDQUFDQSxZQUFZLENBQUNLLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDO0VBQ0Y7RUFFQUMsTUFBTUEsQ0FBQSxFQUFJO0lBQ1IsT0FBTyxJQUFJO0VBQ2I7RUFFQVQsTUFBTUEsQ0FBRSxHQUFHTSxJQUFJLEVBQUU7SUFDZixJQUFJLElBQUksQ0FBQ0QsS0FBSyxDQUFDYixNQUFNLEVBQUU7TUFDckIsSUFBSSxDQUFDYSxLQUFLLENBQUNMLE1BQU0sQ0FBQyxHQUFHTSxJQUFJLENBQUM7SUFDNUI7RUFDRjtBQUNGIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,15 @@
1
+ import useEventEmitter from "./use-event-emitter";
2
+ const EventEmitterListener = ({
3
+ event,
4
+ events,
5
+ onCalled,
6
+ ...restProps
7
+ }) => {
8
+ const restPropsKeys = Object.keys(restProps);
9
+ if (restPropsKeys.length > 0) {
10
+ throw new Error(`Unexpected props: ${restPropsKeys}`);
11
+ }
12
+ useEventEmitter(events, event, onCalled);
13
+ };
14
+ export default EventEmitterListener;
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFdmVudEVtaXR0ZXIiLCJFdmVudEVtaXR0ZXJMaXN0ZW5lciIsImV2ZW50IiwiZXZlbnRzIiwib25DYWxsZWQiLCJyZXN0UHJvcHMiLCJyZXN0UHJvcHNLZXlzIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsIkVycm9yIl0sInNvdXJjZXMiOlsiLi4vc3JjL2V2ZW50LWVtaXR0ZXItbGlzdGVuZXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1c2VFdmVudEVtaXR0ZXIgZnJvbSBcIi4vdXNlLWV2ZW50LWVtaXR0ZXJcIlxuXG5jb25zdCBFdmVudEVtaXR0ZXJMaXN0ZW5lciA9ICh7ZXZlbnQsIGV2ZW50cywgb25DYWxsZWQsIC4uLnJlc3RQcm9wc30pID0+IHtcbiAgY29uc3QgcmVzdFByb3BzS2V5cyA9IE9iamVjdC5rZXlzKHJlc3RQcm9wcylcblxuICBpZiAocmVzdFByb3BzS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHByb3BzOiAke3Jlc3RQcm9wc0tleXN9YClcbiAgfVxuXG4gIHVzZUV2ZW50RW1pdHRlcihldmVudHMsIGV2ZW50LCBvbkNhbGxlZClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXZlbnRFbWl0dGVyTGlzdGVuZXJcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZUFBZSxNQUFNLHFCQUFxQjtBQUVqRCxNQUFNQyxvQkFBb0IsR0FBR0EsQ0FBQztFQUFDQyxLQUFLO0VBQUVDLE1BQU07RUFBRUMsUUFBUTtFQUFFLEdBQUdDO0FBQVMsQ0FBQyxLQUFLO0VBQ3hFLE1BQU1DLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUNILFNBQVMsQ0FBQztFQUU1QyxJQUFJQyxhQUFhLENBQUNHLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDNUIsTUFBTSxJQUFJQyxLQUFLLENBQUMscUJBQXFCSixhQUFhLEVBQUUsQ0FBQztFQUN2RDtFQUVBTixlQUFlLENBQUNHLE1BQU0sRUFBRUQsS0FBSyxFQUFFRSxRQUFRLENBQUM7QUFDMUMsQ0FBQztBQUVELGVBQWVILG9CQUFvQiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,24 @@
1
+ import ModelEvents from "./model-events";
2
+ import PropTypes from "prop-types";
3
+ import propTypesExact from "prop-types-exact";
4
+ import React from "react";
5
+ export default class ApiMakerEventModelClass extends React.PureComponent {
6
+ static propTypes = propTypesExact({
7
+ event: PropTypes.string.isRequired,
8
+ modelClass: PropTypes.func.isRequired,
9
+ onCall: PropTypes.func.isRequired
10
+ });
11
+ componentDidMount() {
12
+ this.connect();
13
+ }
14
+ componentWillUnmount() {
15
+ if (this.connection) {
16
+ this.connection.unsubscribe();
17
+ }
18
+ }
19
+ connect() {
20
+ this.connection = ModelEvents.connectModelClass(this.props.modelClass, this.props.event, this.props.onCall);
21
+ }
22
+ render = () => null;
23
+ }
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2RlbEV2ZW50cyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0IiwiUmVhY3QiLCJBcGlNYWtlckV2ZW50TW9kZWxDbGFzcyIsIlB1cmVDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJldmVudCIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJtb2RlbENsYXNzIiwiZnVuYyIsIm9uQ2FsbCIsImNvbXBvbmVudERpZE1vdW50IiwiY29ubmVjdCIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiY29ubmVjdGlvbiIsInVuc3Vic2NyaWJlIiwiY29ubmVjdE1vZGVsQ2xhc3MiLCJwcm9wcyIsInJlbmRlciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ldmVudC1tb2RlbC1jbGFzcy5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1vZGVsRXZlbnRzIGZyb20gXCIuL21vZGVsLWV2ZW50c1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJFdmVudE1vZGVsQ2xhc3MgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBldmVudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIG1vZGVsQ2xhc3M6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25DYWxsOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgY29tcG9uZW50RGlkTW91bnQgKCkge1xuICAgIHRoaXMuY29ubmVjdCgpXG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCAoKSB7XG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbikge1xuICAgICAgdGhpcy5jb25uZWN0aW9uLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gIH1cblxuICBjb25uZWN0ICgpIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBNb2RlbEV2ZW50cy5jb25uZWN0TW9kZWxDbGFzcyh0aGlzLnByb3BzLm1vZGVsQ2xhc3MsIHRoaXMucHJvcHMuZXZlbnQsIHRoaXMucHJvcHMub25DYWxsKVxuICB9XG5cbiAgcmVuZGVyID0gKCkgPT4gbnVsbFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFXLE1BQU0sZ0JBQWdCO0FBQ3hDLE9BQU9DLFNBQVMsTUFBTSxZQUFZO0FBQ2xDLE9BQU9DLGNBQWMsTUFBTSxrQkFBa0I7QUFDN0MsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFFekIsZUFBZSxNQUFNQyx1QkFBdUIsU0FBU0QsS0FBSyxDQUFDRSxhQUFhLENBQUM7RUFDdkUsT0FBT0MsU0FBUyxHQUFHSixjQUFjLENBQUM7SUFDaENLLEtBQUssRUFBRU4sU0FBUyxDQUFDTyxNQUFNLENBQUNDLFVBQVU7SUFDbENDLFVBQVUsRUFBRVQsU0FBUyxDQUFDVSxJQUFJLENBQUNGLFVBQVU7SUFDckNHLE1BQU0sRUFBRVgsU0FBUyxDQUFDVSxJQUFJLENBQUNGO0VBQ3pCLENBQUMsQ0FBQztFQUVGSSxpQkFBaUJBLENBQUEsRUFBSTtJQUNuQixJQUFJLENBQUNDLE9BQU8sQ0FBQyxDQUFDO0VBQ2hCO0VBRUFDLG9CQUFvQkEsQ0FBQSxFQUFJO0lBQ3RCLElBQUksSUFBSSxDQUFDQyxVQUFVLEVBQUU7TUFDbkIsSUFBSSxDQUFDQSxVQUFVLENBQUNDLFdBQVcsQ0FBQyxDQUFDO0lBQy9CO0VBQ0Y7RUFFQUgsT0FBT0EsQ0FBQSxFQUFJO0lBQ1QsSUFBSSxDQUFDRSxVQUFVLEdBQUdoQixXQUFXLENBQUNrQixpQkFBaUIsQ0FBQyxJQUFJLENBQUNDLEtBQUssQ0FBQ1QsVUFBVSxFQUFFLElBQUksQ0FBQ1MsS0FBSyxDQUFDWixLQUFLLEVBQUUsSUFBSSxDQUFDWSxLQUFLLENBQUNQLE1BQU0sQ0FBQztFQUM3RztFQUVBUSxNQUFNLEdBQUdBLENBQUEsS0FBTSxJQUFJO0FBQ3JCIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,5 @@
1
+ import EventEmitter from "events";
2
+ const events = new EventEmitter();
3
+ events.setMaxListeners(1000);
4
+ export default events;
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFdmVudEVtaXR0ZXIiLCJldmVudHMiLCJzZXRNYXhMaXN0ZW5lcnMiXSwic291cmNlcyI6WyIuLi9zcmMvZXZlbnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSBcImV2ZW50c1wiXG5cbmNvbnN0IGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG5ldmVudHMuc2V0TWF4TGlzdGVuZXJzKDEwMDApXG5cbmV4cG9ydCBkZWZhdWx0IGV2ZW50c1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxZQUFZLE1BQU0sUUFBUTtBQUVqQyxNQUFNQyxNQUFNLEdBQUcsSUFBSUQsWUFBWSxDQUFDLENBQUM7QUFFakNDLE1BQU0sQ0FBQ0MsZUFBZSxDQUFDLElBQUksQ0FBQztBQUU1QixlQUFlRCxNQUFNIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,79 @@
1
+ import CustomError from "@kaspernj/api-maker/build/custom-error";
2
+ import I18nOnSteroids from "i18n-on-steroids";
3
+ import ValidationError from "@kaspernj/api-maker/build/validation-error";
4
+ import { digg } from "diggerize";
5
+ export default class FlashMessage {
6
+ static alert(message) {
7
+ new FlashMessage({
8
+ type: "alert",
9
+ message
10
+ });
11
+ }
12
+ static error(message) {
13
+ new FlashMessage({
14
+ type: "error",
15
+ message
16
+ });
17
+ }
18
+ static errorResponse(error) {
19
+ if (error instanceof ValidationError) {
20
+ if (error.hasUnhandledErrors()) {
21
+ FlashMessage.error(error.message);
22
+ } else {
23
+ FlashMessage.error(I18nOnSteroids.getCurrent().t("js.flash_message.couldnt_submit_because_of_validation_errors"));
24
+ }
25
+ } else if (error instanceof CustomError) {
26
+ const errors = error.args.response.errors;
27
+ const errorMessages = errors.map(error => {
28
+ if (typeof error == "string") {
29
+ return error;
30
+ }
31
+ return digg(error, "message");
32
+ });
33
+ const errorMessage = errorMessages.join(". ");
34
+ FlashMessage.error(errorMessage);
35
+ } else {
36
+ console.error("Didnt know what to do with this", error);
37
+ }
38
+ }
39
+ static success(message) {
40
+ new FlashMessage({
41
+ type: "success",
42
+ message
43
+ });
44
+ }
45
+ constructor({
46
+ message,
47
+ type
48
+ }) {
49
+ if (!message) throw new Error("No message given");
50
+ if (!type) throw new Error("No type given");
51
+ let title;
52
+ if (type == "alert") {
53
+ title = I18nOnSteroids.getCurrent().t("js.flash_message.alert", {
54
+ defaultValue: "Alert"
55
+ });
56
+ } else if (type == "error") {
57
+ title = I18nOnSteroids.getCurrent().t("js.flash_message.error", {
58
+ defaultValue: "Error"
59
+ });
60
+ } else if (type == "success") {
61
+ title = I18nOnSteroids.getCurrent().t("js.flash_message.success", {
62
+ defaultValue: "Success"
63
+ });
64
+ } else {
65
+ title = I18nOnSteroids.getCurrent().t("js.flash_message.notification", {
66
+ defaultValue: "Notification"
67
+ });
68
+ }
69
+ const event = new CustomEvent("pushNotification", {
70
+ detail: {
71
+ message,
72
+ title,
73
+ type
74
+ }
75
+ });
76
+ globalThis.dispatchEvent(event);
77
+ }
78
+ }
79
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDdXN0b21FcnJvciIsIkkxOG5PblN0ZXJvaWRzIiwiVmFsaWRhdGlvbkVycm9yIiwiZGlnZyIsIkZsYXNoTWVzc2FnZSIsImFsZXJ0IiwibWVzc2FnZSIsInR5cGUiLCJlcnJvciIsImVycm9yUmVzcG9uc2UiLCJoYXNVbmhhbmRsZWRFcnJvcnMiLCJnZXRDdXJyZW50IiwidCIsImVycm9ycyIsImFyZ3MiLCJyZXNwb25zZSIsImVycm9yTWVzc2FnZXMiLCJtYXAiLCJlcnJvck1lc3NhZ2UiLCJqb2luIiwiY29uc29sZSIsInN1Y2Nlc3MiLCJjb25zdHJ1Y3RvciIsIkVycm9yIiwidGl0bGUiLCJkZWZhdWx0VmFsdWUiLCJldmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiZ2xvYmFsVGhpcyIsImRpc3BhdGNoRXZlbnQiXSwic291cmNlcyI6WyIuLi9zcmMvZmxhc2gtbWVzc2FnZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ3VzdG9tRXJyb3IgZnJvbSBcIkBrYXNwZXJuai9hcGktbWFrZXIvYnVpbGQvY3VzdG9tLWVycm9yXCJcbmltcG9ydCBJMThuT25TdGVyb2lkcyBmcm9tIFwiaTE4bi1vbi1zdGVyb2lkc1wiXG5pbXBvcnQgVmFsaWRhdGlvbkVycm9yIGZyb20gXCJAa2FzcGVybmovYXBpLW1ha2VyL2J1aWxkL3ZhbGlkYXRpb24tZXJyb3JcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmxhc2hNZXNzYWdlIHtcbiAgc3RhdGljIGFsZXJ0KG1lc3NhZ2UpIHtcbiAgICBuZXcgRmxhc2hNZXNzYWdlKHt0eXBlOiBcImFsZXJ0XCIsIG1lc3NhZ2V9KVxuICB9XG5cbiAgc3RhdGljIGVycm9yKG1lc3NhZ2UpIHtcbiAgICBuZXcgRmxhc2hNZXNzYWdlKHt0eXBlOiBcImVycm9yXCIsIG1lc3NhZ2V9KVxuICB9XG5cbiAgc3RhdGljIGVycm9yUmVzcG9uc2UoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIGlmIChlcnJvci5oYXNVbmhhbmRsZWRFcnJvcnMoKSkge1xuICAgICAgICBGbGFzaE1lc3NhZ2UuZXJyb3IoZXJyb3IubWVzc2FnZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEZsYXNoTWVzc2FnZS5lcnJvcihJMThuT25TdGVyb2lkcy5nZXRDdXJyZW50KCkudChcImpzLmZsYXNoX21lc3NhZ2UuY291bGRudF9zdWJtaXRfYmVjYXVzZV9vZl92YWxpZGF0aW9uX2Vycm9yc1wiKSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgQ3VzdG9tRXJyb3IpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IGVycm9yLmFyZ3MucmVzcG9uc2UuZXJyb3JzXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2VzID0gZXJyb3JzXG4gICAgICAgIC5tYXAoKGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBlcnJvciA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZGlnZyhlcnJvciwgXCJtZXNzYWdlXCIpXG4gICAgICAgIH0pXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VzLmpvaW4oXCIuIFwiKVxuXG4gICAgICBGbGFzaE1lc3NhZ2UuZXJyb3IoZXJyb3JNZXNzYWdlKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRGlkbnQga25vdyB3aGF0IHRvIGRvIHdpdGggdGhpc1wiLCBlcnJvcilcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgc3VjY2VzcyhtZXNzYWdlKSB7XG4gICAgbmV3IEZsYXNoTWVzc2FnZSh7dHlwZTogXCJzdWNjZXNzXCIsIG1lc3NhZ2V9KVxuICB9XG5cbiAgY29uc3RydWN0b3Ioe21lc3NhZ2UsIHR5cGV9KSB7XG4gICAgaWYgKCFtZXNzYWdlKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBtZXNzYWdlIGdpdmVuXCIpXG4gICAgaWYgKCF0eXBlKSB0aHJvdyBuZXcgRXJyb3IoXCJObyB0eXBlIGdpdmVuXCIpXG5cbiAgICBsZXQgdGl0bGVcblxuICAgIGlmICh0eXBlID09IFwiYWxlcnRcIikge1xuICAgICAgdGl0bGUgPSBJMThuT25TdGVyb2lkcy5nZXRDdXJyZW50KCkudChcImpzLmZsYXNoX21lc3NhZ2UuYWxlcnRcIiwge2RlZmF1bHRWYWx1ZTogXCJBbGVydFwifSlcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJlcnJvclwiKSB7XG4gICAgICB0aXRsZSA9IEkxOG5PblN0ZXJvaWRzLmdldEN1cnJlbnQoKS50KFwianMuZmxhc2hfbWVzc2FnZS5lcnJvclwiLCB7ZGVmYXVsdFZhbHVlOiBcIkVycm9yXCJ9KVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcInN1Y2Nlc3NcIikge1xuICAgICAgdGl0bGUgPSBJMThuT25TdGVyb2lkcy5nZXRDdXJyZW50KCkudChcImpzLmZsYXNoX21lc3NhZ2Uuc3VjY2Vzc1wiLCB7ZGVmYXVsdFZhbHVlOiBcIlN1Y2Nlc3NcIn0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRpdGxlID0gSTE4bk9uU3Rlcm9pZHMuZ2V0Q3VycmVudCgpLnQoXCJqcy5mbGFzaF9tZXNzYWdlLm5vdGlmaWNhdGlvblwiLCB7ZGVmYXVsdFZhbHVlOiBcIk5vdGlmaWNhdGlvblwifSlcbiAgICB9XG5cbiAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudChcInB1c2hOb3RpZmljYXRpb25cIiwge1xuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICB0eXBlXG4gICAgICB9XG4gICAgfSlcblxuICAgIGdsb2JhbFRoaXMuZGlzcGF0Y2hFdmVudChldmVudClcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFXLE1BQU0sd0NBQXdDO0FB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
package/build/form.js ADDED
@@ -0,0 +1,83 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import React, { createContext, useContext, useMemo } from "react";
3
+ import BaseComponent from "./base-component";
4
+ import FormDataObjectizer from "form-data-objectizer";
5
+ import memo from "set-state-compare/src/memo";
6
+ import { Platform } from "react-native";
7
+ import PropTypes from "prop-types";
8
+ import { shapeComponent } from "set-state-compare/src/shape-component";
9
+ const FormContext = /*#__PURE__*/createContext(null);
10
+ const useForm = () => useContext(FormContext);
11
+ class FormInputs {
12
+ constructor(props) {
13
+ this.inputs = {};
14
+ this.onSubmit = props?.onSubmit;
15
+ }
16
+ asObject() {
17
+ const result = {};
18
+ const formDataObjectizer = new FormDataObjectizer();
19
+ for (const key in this.inputs) {
20
+ const value = this.inputs[key];
21
+ formDataObjectizer.treatInitial(key, value, result);
22
+ }
23
+ return result;
24
+ }
25
+ setValue(name, value) {
26
+ if (!name) throw new Error("'name' is required");
27
+ this.inputs[name] = value;
28
+ }
29
+ setValueWithHidden(name, value) {
30
+ this.setValue(name, value);
31
+ if (Platform.OS == "web") {
32
+ return /*#__PURE__*/React.createElement("input", {
33
+ name: name,
34
+ type: "hidden",
35
+ value: value !== null && value !== undefined ? value : ""
36
+ });
37
+ }
38
+ }
39
+ submit() {
40
+ if (this.onSubmit) {
41
+ this.onSubmit();
42
+ }
43
+ }
44
+ }
45
+ const Form = memo(shapeComponent(class Form extends BaseComponent {
46
+ static propTypes = {
47
+ children: PropTypes.node,
48
+ formRef: PropTypes.object,
49
+ onSubmit: PropTypes.func,
50
+ setForm: PropTypes.func
51
+ };
52
+ render() {
53
+ const {
54
+ children,
55
+ formRef,
56
+ onSubmit,
57
+ setForm,
58
+ ...restProps
59
+ } = this.props;
60
+ const form = useMemo(() => new FormInputs({
61
+ onSubmit
62
+ }), []);
63
+ useMemo(() => {
64
+ if (setForm) {
65
+ setForm(form);
66
+ }
67
+ }, [setForm]);
68
+ return /*#__PURE__*/React.createElement(FormContext.Provider, {
69
+ value: form
70
+ }, Platform.OS == "web" && /*#__PURE__*/React.createElement("form", _extends({
71
+ ref: formRef,
72
+ onSubmit: this.tt.onFormSubmit
73
+ }, restProps), children), Platform.OS != "web" && this.props.children);
74
+ }
75
+ onFormSubmit = e => {
76
+ e.preventDefault();
77
+ if (this.props.onSubmit) {
78
+ this.props.onSubmit();
79
+ }
80
+ };
81
+ }));
82
+ export { Form, FormContext, FormInputs, useForm };
83
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJ1c2VDb250ZXh0IiwidXNlTWVtbyIsIkJhc2VDb21wb25lbnQiLCJGb3JtRGF0YU9iamVjdGl6ZXIiLCJtZW1vIiwiUGxhdGZvcm0iLCJQcm9wVHlwZXMiLCJzaGFwZUNvbXBvbmVudCIsIkZvcm1Db250ZXh0IiwidXNlRm9ybSIsIkZvcm1JbnB1dHMiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiaW5wdXRzIiwib25TdWJtaXQiLCJhc09iamVjdCIsInJlc3VsdCIsImZvcm1EYXRhT2JqZWN0aXplciIsImtleSIsInZhbHVlIiwidHJlYXRJbml0aWFsIiwic2V0VmFsdWUiLCJuYW1lIiwiRXJyb3IiLCJzZXRWYWx1ZVdpdGhIaWRkZW4iLCJPUyIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwidW5kZWZpbmVkIiwic3VibWl0IiwiRm9ybSIsInByb3BUeXBlcyIsImNoaWxkcmVuIiwibm9kZSIsImZvcm1SZWYiLCJvYmplY3QiLCJmdW5jIiwic2V0Rm9ybSIsInJlbmRlciIsInJlc3RQcm9wcyIsImZvcm0iLCJQcm92aWRlciIsIl9leHRlbmRzIiwicmVmIiwidHQiLCJvbkZvcm1TdWJtaXQiLCJlIiwicHJldmVudERlZmF1bHQiXSwic291cmNlcyI6WyIuLi9zcmMvZm9ybS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7Y3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCBGb3JtRGF0YU9iamVjdGl6ZXIgZnJvbSBcImZvcm0tZGF0YS1vYmplY3RpemVyXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9zaGFwZS1jb21wb25lbnRcIlxuXG5jb25zdCBGb3JtQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQobnVsbClcbmNvbnN0IHVzZUZvcm0gPSAoKSA9PiB1c2VDb250ZXh0KEZvcm1Db250ZXh0KVxuXG5jbGFzcyBGb3JtSW5wdXRzIHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICB0aGlzLmlucHV0cyA9IHt9XG4gICAgdGhpcy5vblN1Ym1pdCA9IHByb3BzPy5vblN1Ym1pdFxuICB9XG5cbiAgYXNPYmplY3QoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge31cbiAgICBjb25zdCBmb3JtRGF0YU9iamVjdGl6ZXIgPSBuZXcgRm9ybURhdGFPYmplY3RpemVyKClcblxuICAgIGZvcihjb25zdCBrZXkgaW4gdGhpcy5pbnB1dHMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dHNba2V5XVxuXG4gICAgICBmb3JtRGF0YU9iamVjdGl6ZXIudHJlYXRJbml0aWFsKGtleSwgdmFsdWUsIHJlc3VsdClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBzZXRWYWx1ZShuYW1lLCB2YWx1ZSkge1xuICAgIGlmICghbmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiJ25hbWUnIGlzIHJlcXVpcmVkXCIpXG5cbiAgICB0aGlzLmlucHV0c1tuYW1lXSA9IHZhbHVlXG4gIH1cblxuICBzZXRWYWx1ZVdpdGhIaWRkZW4obmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzLnNldFZhbHVlKG5hbWUsIHZhbHVlKVxuXG4gICAgaWYgKFBsYXRmb3JtLk9TID09IFwid2ViXCIpIHtcbiAgICAgIHJldHVybiA8aW5wdXQgbmFtZT17bmFtZX0gdHlwZT1cImhpZGRlblwiIHZhbHVlPXt2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBcIlwifSAvPlxuICAgIH1cbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICBpZiAodGhpcy5vblN1Ym1pdCkge1xuICAgICAgdGhpcy5vblN1Ym1pdCgpXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IEZvcm0gPSBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIEZvcm0gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgZm9ybVJlZjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgc2V0Rm9ybTogUHJvcFR5cGVzLmZ1bmNcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y2hpbGRyZW4sIGZvcm1SZWYsIG9uU3VibWl0LCBzZXRGb3JtLCAuLi5yZXN0UHJvcHN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGZvcm0gPSB1c2VNZW1vKCgpID0+IG5ldyBGb3JtSW5wdXRzKHtvblN1Ym1pdH0pLCBbXSlcblxuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKHNldEZvcm0pIHtcbiAgICAgICAgc2V0Rm9ybShmb3JtKVxuICAgICAgfVxuICAgIH0sIFtzZXRGb3JtXSlcblxuICAgIHJldHVybiAoXG4gICAgICA8Rm9ybUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2Zvcm19PlxuICAgICAgICB7UGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIiAmJlxuICAgICAgICAgIDxmb3JtIHJlZj17Zm9ybVJlZn0gb25TdWJtaXQ9e3RoaXMudHQub25Gb3JtU3VibWl0fSB7Li4ucmVzdFByb3BzfT5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIH1cbiAgICAgICAge1BsYXRmb3JtLk9TICE9IFwid2ViXCIgJiYgdGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRleHQuUHJvdmlkZXI+XG4gICAgKVxuICB9XG5cbiAgb25Gb3JtU3VibWl0ID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGlmICh0aGlzLnByb3BzLm9uU3VibWl0KSB7XG4gICAgICB0aGlzLnByb3BzLm9uU3VibWl0KClcbiAgICB9XG4gIH1cbn0pKVxuXG5leHBvcnQge0Zvcm0sIEZvcm1Db250ZXh0LCBGb3JtSW5wdXRzLCB1c2VGb3JtfVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsS0FBSyxJQUFHQyxhQUFhLEVBQUVDLFVBQVUsRUFBRUMsT0FBTyxRQUFPLE9BQU87QUFDL0QsT0FBT0MsYUFBYSxNQUFNLGtCQUFrQjtBQUM1QyxPQUFPQyxrQkFBa0IsTUFBTSxzQkFBc0I7QUFDckQsT0FBT0MsSUFBSSxNQUFNLDRCQUE0QjtBQUM3QyxTQUFRQyxRQUFRLFFBQU8sY0FBYztBQUNyQyxPQUFPQyxTQUFTLE1BQU0sWUFBWTtBQUNsQyxTQUFRQyxjQUFjLFFBQU8sdUNBQXVDO0FBRXBFLE1BQU1DLFdBQVcsZ0JBQUdULGFBQWEsQ0FBQyxJQUFJLENBQUM7QUFDdkMsTUFBTVUsT0FBTyxHQUFHQSxDQUFBLEtBQU1ULFVBQVUsQ0FBQ1EsV0FBVyxDQUFDO0FBRTdDLE1BQU1FLFVBQVUsQ0FBQztFQUNmQyxXQUFXQSxDQUFDQyxLQUFLLEVBQUU7SUFDakIsSUFBSSxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLElBQUksQ0FBQ0MsUUFBUSxHQUFHRixLQUFLLEVBQUVFLFFBQVE7RUFDakM7RUFFQUMsUUFBUUEsQ0FBQSxFQUFHO0lBQ1QsTUFBTUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNqQixNQUFNQyxrQkFBa0IsR0FBRyxJQUFJZCxrQkFBa0IsQ0FBQyxDQUFDO0lBRW5ELEtBQUksTUFBTWUsR0FBRyxJQUFJLElBQUksQ0FBQ0wsTUFBTSxFQUFFO01BQzVCLE1BQU1NLEtBQUssR0FBRyxJQUFJLENBQUNOLE1BQU0sQ0FBQ0ssR0FBRyxDQUFDO01BRTlCRCxrQkFBa0IsQ0FBQ0csWUFBWSxDQUFDRixH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