@kaspernj/api-maker 1.0.446 → 1.0.448

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 (357) hide show
  1. package/{.eslintrc.cjs → .eslintrc.js} +4 -0
  2. package/README.md +35 -0
  3. package/android/build.gradle +43 -0
  4. package/android/src/main/AndroidManifest.xml +2 -0
  5. package/android/src/main/java/expo/modules/api_maker/ApiMakerModule.kt +50 -0
  6. package/android/src/main/java/expo/modules/api_maker/ApiMakerView.kt +30 -0
  7. package/build/api.js +120 -0
  8. package/build/attribute-not-loaded-error.js +2 -0
  9. package/build/base-component.js +5 -0
  10. package/build/base-error.js +33 -0
  11. package/build/base-model/attribute.js +25 -0
  12. package/build/base-model/column.js +11 -0
  13. package/build/base-model/reflection.js +14 -0
  14. package/build/base-model/scope.js +11 -0
  15. package/build/base-model.js +828 -0
  16. package/build/bootstrap/attribute-row/index.js +105 -0
  17. package/build/bootstrap/attribute-rows.js +31 -0
  18. package/build/bootstrap/card.js +138 -0
  19. package/build/bootstrap/checkbox.js +97 -0
  20. package/build/bootstrap/checkboxes.js +183 -0
  21. package/build/bootstrap/index.js +2 -0
  22. package/build/bootstrap/input.js +128 -0
  23. package/build/bootstrap/invalid-feedback.js +27 -0
  24. package/build/bootstrap/paginate.js +150 -0
  25. package/build/bootstrap/radio-buttons.js +72 -0
  26. package/build/bootstrap/select.js +88 -0
  27. package/build/bootstrap/sort-link.js +130 -0
  28. package/build/cable-connection-pool.js +128 -0
  29. package/build/cable-subscription-pool.js +207 -0
  30. package/build/cable-subscription.js +21 -0
  31. package/build/cache-key-generator.js +81 -0
  32. package/build/can-can.js +134 -0
  33. package/build/channels-consumer.js +3 -0
  34. package/build/collection-loader.js +48 -0
  35. package/build/collection.js +279 -0
  36. package/build/command-submit-data.js +81 -0
  37. package/build/commands-pool.js +195 -0
  38. package/build/compose.js +9 -0
  39. package/build/config.js +53 -0
  40. package/build/custom-error.js +5 -0
  41. package/build/data-set-to-attributes.js +10 -0
  42. package/build/deserializer.js +56 -0
  43. package/build/destroy-error.js +5 -0
  44. package/build/devise.js +109 -0
  45. package/build/draggable-sort/controller.js +136 -0
  46. package/build/draggable-sort/index.js +114 -0
  47. package/build/draggable-sort/item.js +188 -0
  48. package/build/error-logger.js +101 -0
  49. package/build/error-messages.js +13 -0
  50. package/build/event-connection.js +32 -0
  51. package/build/event-model-class.js +24 -0
  52. package/build/events.js +5 -0
  53. package/build/form.js +83 -0
  54. package/build/index.js +3 -0
  55. package/build/inputs/attachment.js +121 -0
  56. package/build/inputs/auto-submit.js +36 -0
  57. package/build/inputs/checkbox.js +145 -0
  58. package/build/inputs/checkboxes.js +111 -0
  59. package/build/inputs/id-for-component.js +15 -0
  60. package/build/inputs/input-wrapper.js +18 -0
  61. package/build/inputs/input.js +230 -0
  62. package/build/inputs/money.js +179 -0
  63. package/build/inputs/name-for-component.js +13 -0
  64. package/build/inputs/select.js +92 -0
  65. package/build/instance-of-class-name.js +23 -0
  66. package/build/key-value-store.js +53 -0
  67. package/build/link.js +68 -0
  68. package/build/logger.js +30 -0
  69. package/build/modal.js +37 -0
  70. package/build/model-class-require.js +13 -0
  71. package/build/model-events.js +30 -0
  72. package/build/model-name.js +28 -0
  73. package/build/model-prop-type.js +101 -0
  74. package/build/model-recipes-loader.js +32 -0
  75. package/build/model-recipes-model-loader.js +357 -0
  76. package/build/models-response-reader.js +40 -0
  77. package/build/models.js +8 -0
  78. package/build/money-formatter.js +77 -0
  79. package/build/not-loaded-error.js +2 -0
  80. package/build/params.js +60 -0
  81. package/build/preloaded.js +38 -0
  82. package/build/resize-observer.js +11 -0
  83. package/build/result.js +13 -0
  84. package/build/router/route.js +262 -0
  85. package/build/router/switch.js +72 -0
  86. package/build/router.js +57 -0
  87. package/build/routes-native.js +202 -0
  88. package/build/routes.js +50 -0
  89. package/build/run-last.js +35 -0
  90. package/build/serializer.js +63 -0
  91. package/build/services.js +20 -0
  92. package/build/session-status-updater.js +126 -0
  93. package/build/source-maps-loader.js +171 -0
  94. package/build/super-admin/config-reader.js +84 -0
  95. package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
  96. package/build/super-admin/edit-page/edit-attribute-content.js +54 -0
  97. package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
  98. package/build/super-admin/edit-page/edit-attribute.js +76 -0
  99. package/build/super-admin/edit-page.js +120 -0
  100. package/build/super-admin/has-edit-config.js +12 -0
  101. package/build/super-admin/index-page.js +24 -0
  102. package/build/super-admin/index.js +180 -0
  103. package/build/super-admin/layout/header/index.js +151 -0
  104. package/build/super-admin/layout/index.js +109 -0
  105. package/build/super-admin/layout/menu/index.js +93 -0
  106. package/build/super-admin/layout/menu/menu-content.js +40 -0
  107. package/build/super-admin/layout/menu/menu-item.js +83 -0
  108. package/build/super-admin/layout/no-access.js +25 -0
  109. package/build/super-admin/model-class-table.js +61 -0
  110. package/build/super-admin/models.js +8 -0
  111. package/build/super-admin/show-nav.js +49 -0
  112. package/build/super-admin/show-page/belongs-to-attribute-row.js +28 -0
  113. package/build/super-admin/show-page/index.js +141 -0
  114. package/build/super-admin/show-reflection-actions.js +47 -0
  115. package/build/super-admin/show-reflection-link.js +46 -0
  116. package/build/super-admin/show-reflection-page.js +47 -0
  117. package/build/table/column-content.js +112 -0
  118. package/build/table/column-identifier.js +18 -0
  119. package/build/table/column-visible.js +7 -0
  120. package/build/table/components/column.js +20 -0
  121. package/build/table/components/flat-list.js +20 -0
  122. package/build/table/components/header.js +25 -0
  123. package/build/table/components/row.js +25 -0
  124. package/build/table/filters/attribute-element.js +43 -0
  125. package/build/table/filters/filter-form.js +392 -0
  126. package/build/table/filters/filter.js +89 -0
  127. package/build/table/filters/index.js +182 -0
  128. package/build/table/filters/load-search-modal.js +174 -0
  129. package/build/table/filters/reflection-element.js +36 -0
  130. package/build/table/filters/save-search-modal.js +86 -0
  131. package/build/table/filters/scope-element.js +41 -0
  132. package/build/table/header-column-content.js +67 -0
  133. package/build/table/header-column.js +144 -0
  134. package/build/table/header-select.js +104 -0
  135. package/build/table/model-callback-args.js +10 -0
  136. package/build/table/model-column.js +87 -0
  137. package/build/table/model-row.js +179 -0
  138. package/build/table/select-calculator.js +63 -0
  139. package/build/table/settings/column-row.js +97 -0
  140. package/build/table/settings/download-action.js +78 -0
  141. package/build/table/settings/index.js +92 -0
  142. package/build/table/table-settings.js +219 -0
  143. package/build/table/table.js +972 -0
  144. package/build/table/use-sorting.js +34 -0
  145. package/build/table/widths.js +75 -0
  146. package/build/table/worker-plugins-check-all-checkbox.js +125 -0
  147. package/build/table/worker-plugins-checkbox.js +115 -0
  148. package/build/translated-attributes.js +10 -0
  149. package/build/translated-collections.js +11 -0
  150. package/build/updated-attribute.js +76 -0
  151. package/build/url-encode.js +15 -0
  152. package/build/use-breakpoint.js +44 -0
  153. package/build/use-can-can.js +55 -0
  154. package/build/use-collection.js +225 -0
  155. package/build/use-created-event.js +52 -0
  156. package/build/use-current-user.js +73 -0
  157. package/build/use-destroyed-event.js +60 -0
  158. package/build/use-event-emitter.js +13 -0
  159. package/build/use-event-listener.js +16 -0
  160. package/build/use-input.js +140 -0
  161. package/build/use-model-event.js +60 -0
  162. package/build/use-model.js +169 -0
  163. package/build/use-resize-observer.js +23 -0
  164. package/build/use-router.js +102 -0
  165. package/build/use-screen-layout.js +39 -0
  166. package/build/use-updated-event.js +60 -0
  167. package/build/use-validation-errors.js +30 -0
  168. package/build/utils/card.js +51 -0
  169. package/build/utils/checkbox.js +48 -0
  170. package/build/utils/default-style.js +18 -0
  171. package/build/utils/modal.js +61 -0
  172. package/build/utils/text.js +18 -0
  173. package/build/validation-error.js +28 -0
  174. package/build/validation-errors.js +98 -0
  175. package/build/with-collection.js +13 -0
  176. package/build/with-current-user.js +9 -0
  177. package/build/with-model.js +14 -0
  178. package/build/with-router.js +21 -0
  179. package/expo-module.config.json +17 -0
  180. package/ios/ApiMaker.podspec +29 -0
  181. package/ios/ApiMakerModule.swift +48 -0
  182. package/ios/ApiMakerView.swift +38 -0
  183. package/package.json +35 -16
  184. package/src/{api.mjs → api.js} +5 -5
  185. package/src/{base-error.mjs → base-error.js} +1 -1
  186. package/src/base-model/{attribute.mjs → attribute.js} +1 -1
  187. package/src/base-model/{reflection.mjs → reflection.js} +1 -1
  188. package/src/{base-model.mjs → base-model.js} +14 -14
  189. package/src/bootstrap/attribute-row/index.jsx +2 -2
  190. package/src/bootstrap/attribute-rows.jsx +1 -1
  191. package/src/bootstrap/card.jsx +1 -1
  192. package/src/bootstrap/checkbox.jsx +1 -1
  193. package/src/bootstrap/checkboxes.jsx +1 -1
  194. package/src/bootstrap/input.jsx +1 -1
  195. package/src/bootstrap/paginate.jsx +2 -2
  196. package/src/bootstrap/sort-link.jsx +3 -3
  197. package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +3 -3
  198. package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +4 -4
  199. package/src/{cable-subscription.mjs → cable-subscription.js} +1 -1
  200. package/src/{can-can.mjs → can-can.js} +1 -1
  201. package/src/collection-loader.jsx +2 -2
  202. package/src/{collection.mjs → collection.js} +3 -3
  203. package/src/{commands-pool.mjs → commands-pool.js} +11 -11
  204. package/src/{custom-error.mjs → custom-error.js} +1 -1
  205. package/src/{deserializer.mjs → deserializer.js} +2 -2
  206. package/src/{destroy-error.mjs → destroy-error.js} +1 -1
  207. package/src/{devise.mjs → devise.js} +5 -9
  208. package/src/draggable-sort/index.jsx +3 -3
  209. package/src/draggable-sort/item.jsx +2 -2
  210. package/src/{error-logger.mjs → error-logger.js} +1 -1
  211. package/src/event-connection.jsx +1 -1
  212. package/src/event-model-class.jsx +1 -1
  213. package/src/form.jsx +1 -1
  214. package/src/index.js +3 -0
  215. package/src/inputs/attachment.jsx +2 -2
  216. package/src/inputs/checkbox.jsx +7 -6
  217. package/src/inputs/checkboxes.jsx +1 -1
  218. package/src/inputs/input-wrapper.jsx +1 -1
  219. package/src/inputs/input.jsx +8 -7
  220. package/src/inputs/money.jsx +3 -3
  221. package/src/inputs/select.jsx +1 -1
  222. package/src/{key-value-store.mjs → key-value-store.js} +1 -1
  223. package/src/link.jsx +2 -2
  224. package/src/modal.jsx +1 -1
  225. package/src/{model-class-require.mjs → model-class-require.js} +4 -2
  226. package/src/{model-events.mjs → model-events.js} +1 -1
  227. package/src/{model-name.mjs → model-name.js} +1 -1
  228. package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
  229. package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +2 -2
  230. package/src/{models-response-reader.mjs → models-response-reader.js} +2 -2
  231. package/src/models.js +7 -0
  232. package/src/{models.mjs.erb → models.js.erb} +1 -1
  233. package/src/{params.mjs → params.js} +2 -2
  234. package/src/{preloaded.mjs → preloaded.js} +1 -1
  235. package/src/resize-observer.jsx +1 -1
  236. package/src/router/route.jsx +1 -1
  237. package/src/router/switch.jsx +1 -1
  238. package/src/router.jsx +1 -1
  239. package/src/{routes-native.mjs → routes-native.js} +1 -1
  240. package/src/{services.mjs → services.js} +1 -1
  241. package/src/{session-status-updater.mjs → session-status-updater.js} +3 -3
  242. package/src/{source-maps-loader.mjs → source-maps-loader.js} +1 -1
  243. package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +1 -1
  244. package/src/super-admin/edit-page/edit-attribute-content.jsx +1 -1
  245. package/src/super-admin/edit-page/edit-attribute-input.jsx +1 -1
  246. package/src/super-admin/edit-page/edit-attribute.jsx +1 -1
  247. package/src/super-admin/edit-page.jsx +2 -2
  248. package/src/super-admin/has-edit-config.js +1 -1
  249. package/src/super-admin/index-page.jsx +1 -1
  250. package/src/super-admin/index.jsx +7 -7
  251. package/src/super-admin/layout/header/index.jsx +2 -2
  252. package/src/super-admin/layout/index.jsx +3 -3
  253. package/src/super-admin/layout/menu/index.jsx +3 -3
  254. package/src/super-admin/layout/menu/menu-content.jsx +2 -2
  255. package/src/super-admin/layout/menu/{menu-item/index.jsx → menu-item.jsx} +5 -6
  256. package/src/super-admin/layout/no-access.jsx +2 -2
  257. package/src/super-admin/model-class-table.jsx +3 -3
  258. package/src/super-admin/models.js +1 -1
  259. package/src/super-admin/show-nav.jsx +2 -2
  260. package/src/super-admin/show-page/belongs-to-attribute-row.jsx +1 -1
  261. package/src/super-admin/show-page/index.jsx +2 -2
  262. package/src/super-admin/show-reflection-actions.jsx +1 -1
  263. package/src/super-admin/show-reflection-link.jsx +1 -1
  264. package/src/super-admin/show-reflection-page.jsx +1 -1
  265. package/src/table/column-content.jsx +1 -1
  266. package/src/table/filters/filter-form.jsx +1 -1
  267. package/src/table/filters/index.jsx +5 -3
  268. package/src/table/filters/load-search-modal.jsx +6 -4
  269. package/src/table/filters/save-search-modal.jsx +4 -4
  270. package/src/table/header-select.jsx +1 -1
  271. package/src/table/model-column.jsx +1 -1
  272. package/src/table/model-row.jsx +2 -2
  273. package/src/table/{select-calculator.mjs → select-calculator.js} +1 -1
  274. package/src/table/settings/column-row.jsx +2 -2
  275. package/src/table/settings/download-action.jsx +3 -3
  276. package/src/table/settings/index.jsx +3 -3
  277. package/src/table/table-settings.js +5 -4
  278. package/src/table/table.jsx +8 -8
  279. package/src/table/{use-sorting.mjs → use-sorting.js} +1 -1
  280. package/src/table/worker-plugins-check-all-checkbox.jsx +2 -2
  281. package/src/table/worker-plugins-checkbox.jsx +2 -2
  282. package/src/{translated-collections.mjs → translated-collections.js} +1 -1
  283. package/src/updated-attribute.jsx +1 -1
  284. package/src/{use-breakpoint.mjs → use-breakpoint.js} +2 -2
  285. package/src/use-can-can.js +55 -0
  286. package/src/{use-collection.mjs → use-collection.js} +4 -4
  287. package/src/{use-created-event.mjs → use-created-event.js} +2 -2
  288. package/src/{use-current-user.mjs → use-current-user.js} +6 -5
  289. package/src/{use-destroyed-event.mjs → use-destroyed-event.js} +2 -2
  290. package/src/{use-input.mjs → use-input.js} +5 -5
  291. package/src/use-model-event.js +2 -2
  292. package/src/{use-model.mjs → use-model.js} +4 -4
  293. package/src/{use-resize-observer.mjs → use-resize-observer.js} +1 -1
  294. package/src/use-router.jsx +2 -2
  295. package/src/{use-updated-event.mjs → use-updated-event.js} +2 -2
  296. package/src/{use-validation-errors.mjs → use-validation-errors.js} +3 -3
  297. package/src/utils/checkbox.jsx +2 -2
  298. package/src/{validation-error.mjs → validation-error.js} +1 -1
  299. package/src/{validation-errors.mjs → validation-errors.js} +1 -1
  300. package/src/with-current-user.jsx +1 -1
  301. package/src/with-model.jsx +1 -1
  302. package/__tests__/base-model.test.mjs +0 -71
  303. package/__tests__/cable-connection-pool.test.mjs +0 -227
  304. package/__tests__/cable-subscription-pool.test.mjs +0 -27
  305. package/__tests__/can-can.test.mjs +0 -34
  306. package/__tests__/collection.test.mjs +0 -51
  307. package/__tests__/custom-error.test.mjs +0 -13
  308. package/__tests__/model-name.test.mjs +0 -34
  309. package/__tests__/model-prop-type.test.mjs +0 -113
  310. package/__tests__/params.test.mjs +0 -40
  311. package/__tests__/routes-native.test.mjs +0 -104
  312. package/__tests__/routes.test.mjs +0 -47
  313. package/__tests__/serializer.test.mjs +0 -30
  314. package/__tests__/support/task.mjs +0 -27
  315. package/__tests__/support/user.mjs +0 -32
  316. package/index.js +0 -1
  317. package/jest.config.js +0 -9
  318. package/src/event-created.jsx +0 -12
  319. package/src/event-destroyed.jsx +0 -25
  320. package/src/event-emitter-listener.jsx +0 -10
  321. package/src/event-listener.jsx +0 -25
  322. package/src/event-updated.jsx +0 -27
  323. package/src/super-admin/layout/menu/menu-item/style.scss +0 -10
  324. package/src/use-can-can.mjs +0 -48
  325. package/src/with-can-can.jsx +0 -12
  326. package/webpack.config.js +0 -15
  327. /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
  328. /package/src/base-model/{column.mjs → column.js} +0 -0
  329. /package/src/base-model/{scope.mjs → scope.js} +0 -0
  330. /package/src/{cache-key-generator.mjs → cache-key-generator.js} +0 -0
  331. /package/src/{channels-consumer.mjs → channels-consumer.js} +0 -0
  332. /package/src/{command-submit-data.mjs → command-submit-data.js} +0 -0
  333. /package/src/{config.mjs → config.js} +0 -0
  334. /package/src/{data-set-to-attributes.mjs → data-set-to-attributes.js} +0 -0
  335. /package/src/draggable-sort/{controller.mjs → controller.js} +0 -0
  336. /package/src/{error-messages.mjs → error-messages.js} +0 -0
  337. /package/src/{events.mjs → events.js} +0 -0
  338. /package/src/inputs/{auto-submit.mjs → auto-submit.js} +0 -0
  339. /package/src/inputs/{id-for-component.mjs → id-for-component.js} +0 -0
  340. /package/src/inputs/{name-for-component.mjs → name-for-component.js} +0 -0
  341. /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
  342. /package/src/{logger.mjs → logger.js} +0 -0
  343. /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
  344. /package/src/{money-formatter.mjs → money-formatter.js} +0 -0
  345. /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
  346. /package/src/{result.mjs → result.js} +0 -0
  347. /package/src/{routes.mjs → routes.js} +0 -0
  348. /package/src/{run-last.mjs → run-last.js} +0 -0
  349. /package/src/{serializer.mjs → serializer.js} +0 -0
  350. /package/src/table/{column-identifier.mjs → column-identifier.js} +0 -0
  351. /package/src/table/{column-visible.mjs → column-visible.js} +0 -0
  352. /package/src/table/{model-callback-args.mjs → model-callback-args.js} +0 -0
  353. /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
  354. /package/src/{url-encode.mjs → url-encode.js} +0 -0
  355. /package/src/{use-event-emitter.mjs → use-event-emitter.js} +0 -0
  356. /package/src/{use-event-listener.mjs → use-event-listener.js} +0 -0
  357. /package/src/{use-screen-layout.mjs → use-screen-layout.js} +0 -0
@@ -0,0 +1,136 @@
1
+ import { digg } from "diggerize";
2
+ import EventEmitter from "events";
3
+ export default class DraggableSortController {
4
+ constructor({
5
+ data,
6
+ events,
7
+ keyExtractor
8
+ }) {
9
+ this.data = data;
10
+ this.currentOrder = [...data];
11
+ this.events = events || new EventEmitter();
12
+ this.keyExtractor = keyExtractor;
13
+ this.draggedItem = null;
14
+ this.draggedItemData = null;
15
+ this.draggedItemNewPosition = null;
16
+ this.draggedOverItem = null;
17
+ this.draggedOverItemData = null;
18
+ this.itemData = {};
19
+ for (const itemIndex in data) {
20
+ this.itemData[itemIndex] = {
21
+ index: itemIndex,
22
+ item: data[itemIndex],
23
+ position: itemIndex
24
+ };
25
+ }
26
+ }
27
+ getEvents = () => this.events;
28
+ getItemDataForItem = item => this.getItemDataForIndex(this.data.indexOf(item));
29
+ getItemDataForKey = key => this.itemData.find(itemDataI => digg(itemDataI, "key") == key);
30
+ getItemDataForIndex = index => digg(this, "itemData", index);
31
+ onDragStart = ({
32
+ item,
33
+ itemIndex
34
+ }) => {
35
+ if (item) {
36
+ this.draggedItem = item;
37
+ this.draggedItemData = this.getItemDataForIndex(itemIndex);
38
+ this.draggedItemIndex = itemIndex;
39
+ this.draggedItemPosition = this.draggedItemData.position;
40
+ this.events.emit("onDragStart", {
41
+ item,
42
+ itemData: this.draggedItemData
43
+ });
44
+ }
45
+ };
46
+ onDragEnd = () => {
47
+ const itemData = this.draggedItemData;
48
+ const fromIndex = itemData.index;
49
+ const fromPosition = digg(this, "draggedItemPosition");
50
+ const toPosition = this.draggedItemNewPosition;
51
+ const fromItem = this.draggedItem;
52
+ const toItem = this.draggedOverItem;
53
+ const callbackArgs = {
54
+ item: itemData.item,
55
+ itemData,
56
+ fromIndex,
57
+ fromItem,
58
+ fromPosition,
59
+ toItem,
60
+ toPosition
61
+ };
62
+ this.draggedItemData.events.emit("resetPosition", {
63
+ callback: () => {
64
+ this.events.emit("onDragEndAnimation", callbackArgs);
65
+ }
66
+ });
67
+ this.draggedItem = null;
68
+ this.draggedItemData = null;
69
+ this.draggedItemNewPosition = null;
70
+ this.draggedOverItem = null;
71
+ this.draggedOverItemData = null;
72
+ this.events.emit("onDragEnd", callbackArgs);
73
+ };
74
+ onItemLayout = ({
75
+ events,
76
+ index,
77
+ item,
78
+ layout
79
+ }) => {
80
+ if (!(index in this.itemData)) throw new Error(`Item not found for index ${index}`);
81
+ const itemData = this.itemData[index];
82
+ itemData.layout = layout;
83
+ if (!itemData.initialLayout) {
84
+ itemData.baseX = layout.x;
85
+ itemData.events = events;
86
+ itemData.initialLayout = layout;
87
+ itemData.key = this.keyExtractor(item);
88
+ }
89
+ };
90
+ onMove = ({
91
+ gestate
92
+ }) => {
93
+ // Send move-event to the item being dragged so it will actually move around
94
+ this.draggedItemData?.events?.emit("move", {
95
+ gestate
96
+ });
97
+ const moveX = gestate.dx + this.initialDragPosition.x;
98
+ for (const itemIndex in this.itemData) {
99
+ const itemData = this.getItemDataForIndex(itemIndex);
100
+ const baseX = digg(itemData, "baseX");
101
+ let smallestWidth = this.draggedItemData.layout.width;
102
+ if (itemData.layout.width < smallestWidth) smallestWidth = itemData.layout.width;
103
+ if (moveX > baseX && moveX < baseX + smallestWidth && itemIndex != this.draggedItemData.index) {
104
+ this.draggedOverItem = itemData.item;
105
+ this.draggedOverItemData = itemData;
106
+ const positionOfDraggedItem = this.currentOrder.indexOf(this.draggedItemData.item);
107
+ const positionOfOverItem = this.currentOrder.indexOf(this.draggedOverItemData.item);
108
+ this.currentOrder[positionOfDraggedItem] = this.draggedOverItemData.item;
109
+ this.currentOrder[positionOfOverItem] = this.draggedItemData.item;
110
+ this.draggedItemData.position = positionOfOverItem;
111
+ this.draggedOverItemData.position = positionOfDraggedItem;
112
+ this.updatePositionOfItems();
113
+ this.draggedItemNewPosition = positionOfOverItem;
114
+ }
115
+ }
116
+ };
117
+ setInitialDragPosition = initialDragPosition => {
118
+ this.initialDragPosition = initialDragPosition;
119
+ };
120
+ updatePositionOfItems() {
121
+ let currentPosition = 0;
122
+ for (const item of this.currentOrder) {
123
+ const itemData = this.getItemDataForItem(item);
124
+ if (digg(itemData, "index") != digg(this, "draggedItemData", "index")) {
125
+ // Dont animate dragged element to a new position because it is currently being dragged
126
+ itemData.events.emit("moveToPosition", {
127
+ x: currentPosition,
128
+ y: 0
129
+ });
130
+ }
131
+ itemData.baseX = currentPosition;
132
+ currentPosition += digg(itemData, "layout", "width");
133
+ }
134
+ }
135
+ }
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiRXZlbnRFbWl0dGVyIiwiRHJhZ2dhYmxlU29ydENvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImRhdGEiLCJldmVudHMiLCJrZXlFeHRyYWN0b3IiLCJjdXJyZW50T3JkZXIiLCJkcmFnZ2VkSXRlbSIsImRyYWdnZWRJdGVtRGF0YSIsImRyYWdnZWRJdGVtTmV3UG9zaXRpb24iLCJkcmFnZ2VkT3Zlckl0ZW0iLCJkcmFnZ2VkT3Zlckl0ZW1EYXRhIiwiaXRlbURhdGEiLCJpdGVtSW5kZXgiLCJpbmRleCIsIml0ZW0iLCJwb3NpdGlvbiIsImdldEV2ZW50cyIsImdldEl0ZW1EYXRhRm9ySXRlbSIsImdldEl0ZW1EYXRhRm9ySW5kZXgiLCJpbmRleE9mIiwiZ2V0SXRlbURhdGFGb3JLZXkiLCJrZXkiLCJmaW5kIiwiaXRlbURhdGFJIiwib25EcmFnU3RhcnQiLCJkcmFnZ2VkSXRlbUluZGV4IiwiZHJhZ2dlZEl0ZW1Qb3NpdGlvbiIsImVtaXQiLCJvbkRyYWdFbmQiLCJmcm9tSW5kZXgiLCJmcm9tUG9zaXRpb24iLCJ0b1Bvc2l0aW9uIiwiZnJvbUl0ZW0iLCJ0b0l0ZW0iLCJjYWxsYmFja0FyZ3MiLCJjYWxsYmFjayIsIm9uSXRlbUxheW91dCIsImxheW91dCIsIkVycm9yIiwiaW5pdGlhbExheW91dCIsImJhc2VYIiwieCIsIm9uTW92ZSIsImdlc3RhdGUiLCJtb3ZlWCIsImR4IiwiaW5pdGlhbERyYWdQb3NpdGlvbiIsInNtYWxsZXN0V2lkdGgiLCJ3aWR0aCIsInBvc2l0aW9uT2ZEcmFnZ2VkSXRlbSIsInBvc2l0aW9uT2ZPdmVySXRlbSIsInVwZGF0ZVBvc2l0aW9uT2ZJdGVtcyIsInNldEluaXRpYWxEcmFnUG9zaXRpb24iLCJjdXJyZW50UG9zaXRpb24iLCJ5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RyYWdnYWJsZS1zb3J0L2NvbnRyb2xsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSBcImV2ZW50c1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyYWdnYWJsZVNvcnRDb250cm9sbGVyIHtcbiAgY29uc3RydWN0b3Ioe2RhdGEsIGV2ZW50cywga2V5RXh0cmFjdG9yfSkge1xuICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgICB0aGlzLmN1cnJlbnRPcmRlciA9IFsuLi5kYXRhXVxuICAgIHRoaXMuZXZlbnRzID0gZXZlbnRzIHx8IG5ldyBFdmVudEVtaXR0ZXIoKVxuICAgIHRoaXMua2V5RXh0cmFjdG9yID0ga2V5RXh0cmFjdG9yXG5cbiAgICB0aGlzLmRyYWdnZWRJdGVtID0gbnVsbFxuICAgIHRoaXMuZHJhZ2dlZEl0ZW1EYXRhID0gbnVsbFxuICAgIHRoaXMuZHJhZ2dlZEl0ZW1OZXdQb3NpdGlvbiA9IG51bGxcblxuICAgIHRoaXMuZHJhZ2dlZE92ZXJJdGVtID0gbnVsbFxuICAgIHRoaXMuZHJhZ2dlZE92ZXJJdGVtRGF0YSA9IG51bGxcblxuICAgIHRoaXMuaXRlbURhdGEgPSB7fVxuXG4gICAgZm9yIChjb25zdCBpdGVtSW5kZXggaW4gZGF0YSkge1xuICAgICAgdGhpcy5pdGVtRGF0YVtpdGVtSW5kZXhdID0ge1xuICAgICAgICBpbmRleDogaXRlbUluZGV4LFxuICAgICAgICBpdGVtOiBkYXRhW2l0ZW1JbmRleF0sXG4gICAgICAgIHBvc2l0aW9uOiBpdGVtSW5kZXhcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRFdmVudHMgPSAoKSA9PiB0aGlzLmV2ZW50c1xuICBnZXRJdGVtRGF0YUZvckl0ZW0gPSAoaXRlbSkgPT4gdGhpcy5nZXRJdGVtRGF0YUZvckluZGV4KHRoaXMuZGF0YS5pbmRleE9mKGl0ZW0pKVxuICBnZXRJdGVtRGF0YUZvcktleSA9IChrZXkpID0+IHRoaXMuaXRlbURhdGEuZmluZCgoaXRlbURhdGFJKSA9PiBkaWdnKGl0ZW1EYXRhSSwgXCJrZXlcIikgPT0ga2V5KVxuICBnZXRJdGVtRGF0YUZvckluZGV4ID0gKGluZGV4KSA9PiBkaWdnKHRoaXMsIFwiaXRlbURhdGFcIiwgaW5kZXgpXG5cbiAgb25EcmFnU3RhcnQgPSAoe2l0ZW0sIGl0ZW1JbmRleH0pID0+IHtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgdGhpcy5kcmFnZ2VkSXRlbSA9IGl0ZW1cbiAgICAgIHRoaXMuZHJhZ2dlZEl0ZW1EYXRhID0gdGhpcy5nZXRJdGVtRGF0YUZvckluZGV4KGl0ZW1JbmRleClcbiAgICAgIHRoaXMuZHJhZ2dlZEl0ZW1JbmRleCA9IGl0ZW1JbmRleFxuICAgICAgdGhpcy5kcmFnZ2VkSXRlbVBvc2l0aW9uID0gdGhpcy5kcmFnZ2VkSXRlbURhdGEucG9zaXRpb25cbiAgICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJvbkRyYWdTdGFydFwiLCB7aXRlbSwgaXRlbURhdGE6IHRoaXMuZHJhZ2dlZEl0ZW1EYXRhfSlcbiAgICB9XG4gIH1cblxuICBvbkRyYWdFbmQgPSAoKSA9PiB7XG4gICAgY29uc3QgaXRlbURhdGEgPSB0aGlzLmRyYWdnZWRJdGVtRGF0YVxuICAgIGNvbnN0IGZyb21JbmRleCA9IGl0ZW1EYXRhLmluZGV4XG4gICAgY29uc3QgZnJvbVBvc2l0aW9uID0gZGlnZyh0aGlzLCBcImRyYWdnZWRJdGVtUG9zaXRpb25cIilcbiAgICBjb25zdCB0b1Bvc2l0aW9uID0gdGhpcy5kcmFnZ2VkSXRlbU5ld1Bvc2l0aW9uXG4gICAgY29uc3QgZnJvbUl0ZW0gPSB0aGlzLmRyYWdnZWRJdGVtXG4gICAgY29uc3QgdG9JdGVtID0gdGhpcy5kcmFnZ2VkT3Zlckl0ZW1cbiAgICBjb25zdCBjYWxsYmFja0FyZ3MgPSB7aXRlbTogaXRlbURhdGEuaXRlbSwgaXRlbURhdGEsIGZyb21JbmRleCwgZnJvbUl0ZW0sIGZyb21Qb3NpdGlvbiwgdG9JdGVtLCB0b1Bvc2l0aW9ufVxuXG4gICAgdGhpcy5kcmFnZ2VkSXRlbURhdGEuZXZlbnRzLmVtaXQoXCJyZXNldFBvc2l0aW9uXCIsIHtcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJvbkRyYWdFbmRBbmltYXRpb25cIiwgY2FsbGJhY2tBcmdzKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLmRyYWdnZWRJdGVtID0gbnVsbFxuICAgIHRoaXMuZHJhZ2dlZEl0ZW1EYXRhID0gbnVsbFxuICAgIHRoaXMuZHJhZ2dlZEl0ZW1OZXdQb3NpdGlvbiA9IG51bGxcblxuICAgIHRoaXMuZHJhZ2dlZE92ZXJJdGVtID0gbnVsbFxuICAgIHRoaXMuZHJhZ2dlZE92ZXJJdGVtRGF0YSA9IG51bGxcblxuICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJvbkRyYWdFbmRcIiwgY2FsbGJhY2tBcmdzKVxuICB9XG5cbiAgb25JdGVtTGF5b3V0ID0gKHtldmVudHMsIGluZGV4LCBpdGVtLCBsYXlvdXR9KSA9PiB7XG4gICAgaWYgKCEoaW5kZXggaW4gdGhpcy5pdGVtRGF0YSkpIHRocm93IG5ldyBFcnJvcihgSXRlbSBub3QgZm91bmQgZm9yIGluZGV4ICR7aW5kZXh9YClcblxuICAgIGNvbnN0IGl0ZW1EYXRhID0gdGhpcy5pdGVtRGF0YVtpbmRleF1cblxuICAgIGl0ZW1EYXRhLmxheW91dCA9IGxheW91dFxuXG4gICAgaWYgKCFpdGVtRGF0YS5pbml0aWFsTGF5b3V0KSB7XG4gICAgICBpdGVtRGF0YS5iYXNlWCA9IGxheW91dC54XG4gICAgICBpdGVtRGF0YS5ldmVudHMgPSBldmVudHNcbiAgICAgIGl0ZW1EYXRhLmluaXRpYWxMYXlvdXQgPSBsYXlvdXRcbiAgICAgIGl0ZW1EYXRhLmtleSA9IHRoaXMua2V5RXh0cmFjdG9yKGl0ZW0pXG4gICAgfVxuICB9XG5cbiAgb25Nb3ZlID0gKHtnZXN0YXRlfSkgPT4ge1xuICAgIC8vIFNlbmQgbW92ZS1ldmVudCB0byB0aGUgaXRlbSBiZWluZyBkcmFnZ2VkIHNvIGl0IHdpbGwgYWN0dWFsbHkgbW92ZSBhcm91bmRcbiAgICB0aGlzLmRyYWdnZWRJdGVtRGF0YT8uZXZlbnRzPy5lbWl0KFwibW92ZVwiLCB7Z2VzdGF0ZX0pXG5cbiAgICBjb25zdCBtb3ZlWCA9IGdlc3RhdGUuZHggKyB0aGlzLmluaXRpYWxEcmFnUG9zaXRpb24ueFxuXG4gICAgZm9yIChjb25zdCBpdGVtSW5kZXggaW4gdGhpcy5pdGVtRGF0YSkge1xuICAgICAgY29uc3QgaXRlbURhdGEgPSB0aGlzLmdldEl0ZW1EYXRhRm9ySW5kZXgoaXRlbUluZGV4KVxuICAgICAgY29uc3QgYmFzZVggPSBkaWdnKGl0ZW1EYXRhLCBcImJhc2VYXCIpXG4gICAgICBsZXQgc21hbGxlc3RXaWR0aCA9IHRoaXMuZHJhZ2dlZEl0ZW1EYXRhLmxheW91dC53aWR0aFxuXG4gICAgICBpZiAoaXRlbURhdGEubGF5b3V0LndpZHRoIDwgc21hbGxlc3RXaWR0aCkgc21hbGxlc3RXaWR0aCA9IGl0ZW1EYXRhLmxheW91dC53aWR0aFxuXG4gICAgICBpZiAobW92ZVggPiBiYXNlWCAmJiBtb3ZlWCA8IChiYXNlWCArIHNtYWxsZXN0V2lkdGgpICYmIGl0ZW1JbmRleCAhPSB0aGlzLmRyYWdnZWRJdGVtRGF0YS5pbmRleCkge1xuICAgICAgICB0aGlzLmRyYWdnZWRPdmVySXRlbSA9IGl0ZW1EYXRhLml0ZW1cbiAgICAgICAgdGhpcy5kcmFnZ2VkT3Zlckl0ZW1EYXRhID0gaXRlbURhdGFcblxuICAgICAgICBjb25zdCBwb3NpdGlvbk9mRHJhZ2dlZEl0ZW0gPSB0aGlzLmN1cnJlbnRPcmRlci5pbmRleE9mKHRoaXMuZHJhZ2dlZEl0ZW1EYXRhLml0ZW0pXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uT2ZPdmVySXRlbSA9IHRoaXMuY3VycmVudE9yZGVyLmluZGV4T2YodGhpcy5kcmFnZ2VkT3Zlckl0ZW1EYXRhLml0ZW0pXG5cbiAgICAgICAgdGhpcy5jdXJyZW50T3JkZXJbcG9zaXRpb25PZkRyYWdnZWRJdGVtXSA9IHRoaXMuZHJhZ2dlZE92ZXJJdGVtRGF0YS5pdGVtXG4gICAgICAgIHRoaXMuY3VycmVudE9yZGVyW3Bvc2l0aW9uT2ZPdmVySXRlbV0gPSB0aGlzLmRyYWdnZWRJdGVtRGF0YS5pdGVtXG5cbiAgICAgICAgdGhpcy5kcmFnZ2VkSXRlbURhdGEucG9zaXRpb24gPSBwb3NpdGlvbk9mT3Zlckl0ZW1cbiAgICAgICAgdGhpcy5kcmFnZ2VkT3Zlckl0ZW1EYXRhLnBvc2l0aW9uID0gcG9zaXRpb25PZkRyYWdnZWRJdGVtXG5cbiAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbk9mSXRlbXMoKVxuICAgICAgICB0aGlzLmRyYWdnZWRJdGVtTmV3UG9zaXRpb24gPSBwb3NpdGlvbk9mT3Zlckl0ZW1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRJbml0aWFsRHJhZ1Bvc2l0aW9uID0gKGluaXRpYWxEcmFnUG9zaXRpb24pID0+IHtcbiAgICB0aGlzLmluaXRpYWxEcmFnUG9zaXRpb24gPSBpbml0aWFsRHJhZ1Bvc2l0aW9uXG4gIH1cblxuICB1cGRhdGVQb3NpdGlvbk9mSXRlbXMoKSB7XG4gICAgbGV0IGN1cnJlbnRQb3NpdGlvbiA9IDBcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmN1cnJlbnRPcmRlcikge1xuICAgICAgY29uc3QgaXRlbURhdGEgPSB0aGlzLmdldEl0ZW1EYXRhRm9ySXRlbShpdGVtKVxuXG4gICAgICBpZiAoZGlnZyhpdGVtRGF0YSwgXCJpbmRleFwiKSAhPSBkaWdnKHRoaXMsIFwiZHJhZ2dlZEl0ZW1EYXRhXCIsIFwiaW5kZXhcIikpIHsgLy8gRG9udCBhbmltYXRlIGRyYWdnZWQgZWxlbWVudCB0byBhIG5ldyBwb3NpdGlvbiBiZWNhdXNlIGl0IGlzIGN1cnJlbnRseSBiZWluZyBkcmFnZ2VkXG4gICAgICAgIGl0ZW1EYXRhLmV2ZW50cy5lbWl0KFwibW92ZVRvUG9zaXRpb25cIiwge1xuICAgICAgICAgIHg6IGN1cnJlbnRQb3NpdGlvbixcbiAgICAgICAgICB5OiAwXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGl0ZW1EYXRhLmJhc2VYID0gY3VycmVudFBvc2l0aW9uXG4gICAgICBjdXJyZW50UG9zaXRpb24gKz0gZGlnZyhpdGVtRGF0YSwgXCJsYXlvdXRcIiwgXCJ3aWR0aFwiKVxuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxJQUFJLFFBQU8sV0FBVztBQUM5QixPQUFPQyxZQUFZLE1BQU0sUUFBUTtBQUVqQyxlQUFlLE1BQU1DLHVCQUF1QixDQUFDO0VBQzNDQyxXQUFXQSxDQUFDO0lBQUNDLElBQUk7SUFBRUMsTUFBTTtJQUFFQztFQUFZLENBQUMsRUFBRTtJQUN4QyxJQUFJLENBQUNGLElBQUksR0FBR0EsSUFBSTtJQUNoQixJQUFJLENBQUNHLFlBQVksR0FBRyxDQUFDLEdBQUdILElBQUksQ0FBQztJQUM3QixJQUFJLENBQUNDLE1BQU0sR0FBR0EsTUFBTSxJQUFJLElBQUlKLFlBQVksQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQ0ssWUFBWSxHQUFHQSxZQUFZO0lBRWhDLElBQUksQ0FBQ0UsV0FBVyxHQUFHLElBQUk7SUFDdkIsSUFBSSxDQUFDQyxlQUFlLEdBQUcsSUFBSTtJQUMzQixJQUFJLENBQUNDLHNCQUFzQixHQUFHLElBQUk7SUFFbEMsSUFBSSxDQUFDQyxlQUFlLEdBQUcsSUFBSTtJQUMzQixJQUFJLENBQUNDLG1CQUFtQixHQUFHLElBQUk7SUFFL0IsSUFBSSxDQUFDQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRWxCLEtBQUssTUFBTUMsU0FBUyxJQUFJVixJQUFJLEVBQUU7TUFDNUIsSUFBSSxDQUFDUyxRQUFRLENBQUNDLFNBQVMsQ0FBQyxHQUFHO1FBQ3pCQyxLQUFLLEVBQUVELFNBQVM7UUFDaEJFLElBQUksRUFBRVosSUFBSSxDQUFDVSxTQUFTLENBQUM7UUFDckJHLFFBQVEsRUFBRUg7TUFDWixDQUFDO0lBQ0g7RUFDRjtFQUVBSSxTQUFTLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUNiLE1BQU07RUFDN0JjLGtCQUFrQixHQUFJSCxJQUFJLElBQUssSUFBSSxDQUFDSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUNoQixJQUFJ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
@@ -0,0 +1,114 @@
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 { useMemo } from "react";
3
+ import { Animated, PanResponder } from "react-native";
4
+ import { shapeComponent, ShapeComponent } from "set-state-compare/src/shape-component";
5
+ import Controller from "./controller";
6
+ import DraggableSortItem from "./item";
7
+ import EventEmitter from "events";
8
+ import memo from "set-state-compare/src/memo";
9
+ import PropTypes from "prop-types";
10
+ import propTypesExact from "prop-types-exact";
11
+ import useEventEmitter from "../use-event-emitter";
12
+ export default memo(shapeComponent(class DraggableSort extends ShapeComponent {
13
+ static defaultProps = {
14
+ horizontal: false
15
+ };
16
+ static propTypes = propTypesExact({
17
+ cacheKeyExtractor: PropTypes.func,
18
+ data: PropTypes.array.isRequired,
19
+ dataSet: PropTypes.object,
20
+ events: PropTypes.instanceOf(EventEmitter),
21
+ horizontal: PropTypes.bool.isRequired,
22
+ keyExtractor: PropTypes.func.isRequired,
23
+ onDragItemEnd: PropTypes.func,
24
+ onDragItemStart: PropTypes.func,
25
+ onItemMoved: PropTypes.func,
26
+ onReordered: PropTypes.func.isRequired,
27
+ renderItem: PropTypes.func.isRequired
28
+ });
29
+ setup() {
30
+ const {
31
+ data,
32
+ keyExtractor
33
+ } = this.p;
34
+ const {
35
+ events
36
+ } = this.props;
37
+ this.controller = useMemo(() => new Controller({
38
+ data,
39
+ events,
40
+ keyExtractor
41
+ }), []);
42
+ this.panResponder = useMemo(() => PanResponder.create({
43
+ onStartShouldSetPanResponder: e => {
44
+ const initialDragPosition = {
45
+ x: e.nativeEvent.locationX,
46
+ y: e.nativeEvent.locationY
47
+ };
48
+ this.controller.setInitialDragPosition(initialDragPosition);
49
+ if (this.controller.draggedItemData) {
50
+ return true;
51
+ }
52
+ },
53
+ onPanResponderMove: (e, gestate) => {
54
+ this.tt.controller.onMove({
55
+ gestate
56
+ });
57
+ },
58
+ onPanResponderRelease: (e, gestate) => {
59
+ if (this.controller.draggedItem) {
60
+ this.tt.controller.onDragEnd();
61
+ }
62
+ }
63
+ }), []);
64
+ useEventEmitter(this.controller.getEvents(), "onDragStart", this.tt.onDragItemStart);
65
+ useEventEmitter(this.controller.getEvents(), "onDragEnd", this.tt.onDragItemEnd);
66
+ }
67
+ render() {
68
+ const {
69
+ data,
70
+ horizontal,
71
+ keyExtractor,
72
+ renderItem
73
+ } = this.p;
74
+ const {
75
+ cacheKeyExtractor,
76
+ dataSet
77
+ } = this.props;
78
+ const actualDataSet = useMemo(() => Object.assign({
79
+ component: "draggable-sort"
80
+ }, dataSet), [dataSet]);
81
+ return /*#__PURE__*/React.createElement(Animated.View, _extends({
82
+ dataSet: actualDataSet,
83
+ style: {
84
+ flexDirection: horizontal ? "row" : "column"
85
+ }
86
+ }, this.tt.panResponder.panHandlers), data.map((item, itemIndex) => /*#__PURE__*/React.createElement(DraggableSortItem, {
87
+ cacheKey: cacheKeyExtractor ? cacheKeyExtractor(item) : undefined,
88
+ controller: this.tt.controller,
89
+ item: item,
90
+ itemIndex: itemIndex,
91
+ key: keyExtractor(item),
92
+ onItemMoved: this.props.onItemMoved,
93
+ renderItem: renderItem
94
+ })));
95
+ }
96
+ onDragItemStart = ({
97
+ itemData
98
+ }) => {
99
+ if (this.props.onDragItemStart) {
100
+ this.p.onDragItemStart({
101
+ itemData
102
+ });
103
+ }
104
+ };
105
+ onDragItemEnd = args => {
106
+ if (args.toPosition !== null) {
107
+ this.p.onReordered(args);
108
+ }
109
+ if (this.props.onDragItemEnd) {
110
+ this.p.onDragItemEnd(args);
111
+ }
112
+ };
113
+ }));
114
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwiQW5pbWF0ZWQiLCJQYW5SZXNwb25kZXIiLCJzaGFwZUNvbXBvbmVudCIsIlNoYXBlQ29tcG9uZW50IiwiQ29udHJvbGxlciIsIkRyYWdnYWJsZVNvcnRJdGVtIiwiRXZlbnRFbWl0dGVyIiwibWVtbyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0IiwidXNlRXZlbnRFbWl0dGVyIiwiRHJhZ2dhYmxlU29ydCIsImRlZmF1bHRQcm9wcyIsImhvcml6b250YWwiLCJwcm9wVHlwZXMiLCJjYWNoZUtleUV4dHJhY3RvciIsImZ1bmMiLCJkYXRhIiwiYXJyYXkiLCJpc1JlcXVpcmVkIiwiZGF0YVNldCIsIm9iamVjdCIsImV2ZW50cyIsImluc3RhbmNlT2YiLCJib29sIiwia2V5RXh0cmFjdG9yIiwib25EcmFnSXRlbUVuZCIsIm9uRHJhZ0l0ZW1TdGFydCIsIm9uSXRlbU1vdmVkIiwib25SZW9yZGVyZWQiLCJyZW5kZXJJdGVtIiwic2V0dXAiLCJwIiwicHJvcHMiLCJjb250cm9sbGVyIiwicGFuUmVzcG9uZGVyIiwiY3JlYXRlIiwib25TdGFydFNob3VsZFNldFBhblJlc3BvbmRlciIsImUiLCJpbml0aWFsRHJhZ1Bvc2l0aW9uIiwieCIsIm5hdGl2ZUV2ZW50IiwibG9jYXRpb25YIiwieSIsImxvY2F0aW9uWSIsInNldEluaXRpYWxEcmFnUG9zaXRpb24iLCJkcmFnZ2VkSXRlbURhdGEiLCJvblBhblJlc3BvbmRlck1vdmUiLCJnZXN0YXRlIiwidHQiLCJvbk1vdmUiLCJvblBhblJlc3BvbmRlclJlbGVhc2UiLCJkcmFnZ2VkSXRlbSIsIm9uRHJhZ0VuZCIsImdldEV2ZW50cyIsInJlbmRlciIsImFjdHVhbERhdGFTZXQiLCJPYmplY3QiLCJhc3NpZ24iLCJjb21wb25lbnQiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJWaWV3IiwiX2V4dGVuZHMiLCJzdHlsZSIsImZsZXhEaXJlY3Rpb24iLCJwYW5IYW5kbGVycyIsIm1hcCIsIml0ZW0iLCJpdGVtSW5kZXgiLCJjYWNoZUtleSIsInVuZGVmaW5lZCIsImtleSIsIml0ZW1EYXRhIiwiYXJncyIsInRvUG9zaXRpb24iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZHJhZ2dhYmxlLXNvcnQvaW5kZXguanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7QW5pbWF0ZWQsIFBhblJlc3BvbmRlcn0gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50LCBTaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9zaGFwZS1jb21wb25lbnRcIlxuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSBcIi4vY29udHJvbGxlclwiXG5pbXBvcnQgRHJhZ2dhYmxlU29ydEl0ZW0gZnJvbSBcIi4vaXRlbVwiXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gXCJldmVudHNcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCB1c2VFdmVudEVtaXR0ZXIgZnJvbSBcIi4uL3VzZS1ldmVudC1lbWl0dGVyXCJcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBEcmFnZ2FibGVTb3J0IGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGhvcml6b250YWw6IGZhbHNlXG4gIH1cblxuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGNhY2hlS2V5RXh0cmFjdG9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBkYXRhOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICBkYXRhU2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGV2ZW50czogUHJvcFR5cGVzLmluc3RhbmNlT2YoRXZlbnRFbWl0dGVyKSxcbiAgICBob3Jpem9udGFsOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGtleUV4dHJhY3RvcjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkRyYWdJdGVtRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkRyYWdJdGVtU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uSXRlbU1vdmVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvblJlb3JkZXJlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICByZW5kZXJJdGVtOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qge2RhdGEsIGtleUV4dHJhY3Rvcn0gPSB0aGlzLnBcbiAgICBjb25zdCB7ZXZlbnRzfSA9IHRoaXMucHJvcHNcblxuICAgIHRoaXMuY29udHJvbGxlciA9IHVzZU1lbW8oKCkgPT4gbmV3IENvbnRyb2xsZXIoe2RhdGEsIGV2ZW50cywga2V5RXh0cmFjdG9yfSksIFtdKVxuICAgIHRoaXMucGFuUmVzcG9uZGVyID0gdXNlTWVtbyhcbiAgICAgICgpID0+IFBhblJlc3BvbmRlci5jcmVhdGUoe1xuICAgICAgICBvblN0YXJ0U2hvdWxkU2V0UGFuUmVzcG9uZGVyOiAoZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluaXRpYWxEcmFnUG9zaXRpb24gPSB7eDogZS5uYXRpdmVFdmVudC5sb2NhdGlvblgsIHk6IGUubmF0aXZlRXZlbnQubG9jYXRpb25ZfVxuXG4gICAgICAgICAgdGhpcy5jb250cm9sbGVyLnNldEluaXRpYWxEcmFnUG9zaXRpb24oaW5pdGlhbERyYWdQb3NpdGlvbilcblxuICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xsZXIuZHJhZ2dlZEl0ZW1EYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25QYW5SZXNwb25kZXJNb3ZlOiAoZSwgZ2VzdGF0ZSkgPT4ge1xuICAgICAgICAgIHRoaXMudHQuY29udHJvbGxlci5vbk1vdmUoe2dlc3RhdGV9KVxuICAgICAgICB9LFxuICAgICAgICBvblBhblJlc3BvbmRlclJlbGVhc2U6IChlLCBnZXN0YXRlKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY29udHJvbGxlci5kcmFnZ2VkSXRlbSkge1xuICAgICAgICAgICAgdGhpcy50dC5jb250cm9sbGVyLm9uRHJhZ0VuZCgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIFtdXG4gICAgKVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMuY29udHJvbGxlci5nZXRFdmVudHMoKSwgXCJvbkRyYWdTdGFydFwiLCB0aGlzLnR0Lm9uRHJhZ0l0ZW1TdGFydClcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy5jb250cm9sbGVyLmdldEV2ZW50cygpLCBcIm9uRHJhZ0VuZFwiLCB0aGlzLnR0Lm9uRHJhZ0l0ZW1FbmQpXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2RhdGEsIGhvcml6b250YWwsIGtleUV4dHJhY3RvciwgcmVuZGVySXRlbX0gPSB0aGlzLnBcbiAgICBjb25zdCB7Y2FjaGVLZXlFeHRyYWN0b3IsIGRhdGFTZXR9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGFjdHVhbERhdGFTZXQgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gT2JqZWN0LmFzc2lnbihcbiAgICAgICAge1xuICAgICAgICAgIGNvbXBvbmVudDogXCJkcmFnZ2FibGUtc29ydFwiXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGFTZXRcbiAgICAgICksXG4gICAgICBbZGF0YVNldF1cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEFuaW1hdGVkLlZpZXcgZGF0YVNldD17YWN0dWFsRGF0YVNldH0gc3R5bGU9e3tmbGV4RGlyZWN0aW9uOiBob3Jpem9udGFsID8gXCJyb3dcIiA6IFwiY29sdW1uXCJ9fSB7Li4udGhpcy50dC5wYW5SZXNwb25kZXIucGFuSGFuZGxlcnN9PlxuICAgICAgICB7ZGF0YS5tYXAoKGl0ZW0sIGl0ZW1JbmRleCkgPT5cbiAgICAgICAgICA8RHJhZ2dhYmxlU29ydEl0ZW1cbiAgICAgICAgICAgIGNhY2hlS2V5PXtjYWNoZUtleUV4dHJhY3RvciA/IGNhY2hlS2V5RXh0cmFjdG9yKGl0ZW0pIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgY29udHJvbGxlcj17dGhpcy50dC5jb250cm9sbGVyfVxuICAgICAgICAgICAgaXRlbT17aXRlbX1cbiAgICAgICAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgICAgICAga2V5PXtrZXlFeHRyYWN0b3IoaXRlbSl9XG4gICAgICAgICAgICBvbkl0ZW1Nb3ZlZD17dGhpcy5wcm9wcy5vbkl0ZW1Nb3ZlZH1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09e3JlbmRlckl0ZW19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQW5pbWF0ZWQuVmlldz5cbiAgICApXG4gIH1cblxuICBvbkRyYWdJdGVtU3RhcnQgPSAoe2l0ZW1EYXRhfSkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLm9uRHJhZ0l0ZW1TdGFydCkge1xuICAgICAgdGhpcy5wLm9uRHJhZ0l0ZW1TdGFydCh7aXRlbURhdGF9KVxuICAgIH1cbiAgfVxuXG4gIG9uRHJhZ0l0ZW1FbmQgPSAoYXJncykgPT4ge1xuICAgIGlmIChhcmdzLnRvUG9zaXRpb24gIT09IG51bGwpIHtcbiAgICAgIHRoaXMucC5vblJlb3JkZXJlZChhcmdzKVxuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLm9uRHJhZ0l0ZW1FbmQpIHtcbiAgICAgIHRoaXMucC5vbkRyYWdJdGVtRW5kKGFyZ3MpXG4gICAgfVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLE9BQU8sUUFBTyxPQUFP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
@@ -0,0 +1,188 @@
1
+ import { 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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwiQW5pbWF0ZWQiLCJFYXNpbmciLCJQYW5SZXNwb25kZXIiLCJzaGFwZUNvbXBvbmVudCIsIlNoYXBlQ29tcG9uZW50IiwiRXZlbnRFbWl0dGVyIiwibWVtbyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0IiwidXNlRXZlbnRFbWl0dGVyIiwiRHJhZ2dhYmxlU29ydEl0ZW0iLCJwcm9wVHlwZXMiLCJjYWNoZUtleSIsInN0cmluZyIsImNvbnRyb2xsZXIiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwiaXRlbSIsImFueSIsIml0ZW1JbmRleCIsIm51bWJlciIsIm9uSXRlbU1vdmVkIiwiZnVuYyIsInJlbmRlckl0ZW0iLCJpbml0aWFsTGF5b3V0Iiwic2V0dXAiLCJ1c2VTdGF0ZXMiLCJhY3RpdmUiLCJkcmFnZ2luZyIsImV2ZW50cyIsInBvc2l0aW9uIiwiVmFsdWVYWSIsInBhblJlc3BvbmRlciIsImNyZWF0ZSIsIm9uU3RhcnRTaG91bGRTZXRQYW5SZXNwb25kZXIiLCJlIiwic2V0U3RhdGUiLCJwIiwib25EcmFnU3RhcnQiLCJnZXRFdmVudHMiLCJ0dCIsIm9uRHJhZ0VuZEFuaW1hdGlvbiIsIm9uTW92ZSIsIm9uTW92ZVRvUG9zaXRpb24iLCJvblJlc2V0UG9zaXRpb24iLCJyZW5kZXIiLCJzIiwic3R5bGUiLCJ0cmFuc2Zvcm0iLCJnZXRUcmFuc2xhdGVUcmFuc2Zvcm0iLCJiYWNrZ3JvdW5kQ29sb3IiLCJlbGV2YXRpb24iLCJ6SW5kZXgiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJWaWV3IiwiZGF0YVNldCIsImNvbXBvbmVudCIsIm9uTGF5b3V0IiwiaXNBY3RpdmUiLCJ0b3VjaFByb3BzIiwicGFuSGFuZGxlcnMiLCJpdGVtRGF0YSIsIm5ld1N0YXRlIiwiaW5kZXgiLCJiYXNlWEF0U3RhcnRlZERyYWdnaW5nIiwiZ2V0QmFzZVgiLCJvbkl0ZW1MYXlvdXQiLCJsYXlvdXQiLCJuYXRpdmVFdmVudCIsImdlc3RhdGUiLCJ4IiwiZHgiLCJ5Iiwic2V0VmFsdWUiLCJwcm9wcyIsImNhbGN1bGF0ZWRYRnJvbVN0YXJ0aW5nUG9zaXRpb24iLCJhbmltYXRpb25BcmdzIiwiZHVyYXRpb24iLCJlYXNpbmciLCJpbk91dCIsImxpbmVhciIsInRvVmFsdWUiLCJ1c2VOYXRpdmVEcml2ZXIiLCJhbmltYXRpb25FdmVudEFyZ3MiLCJhbmltYXRpb25UeXBlIiwiZW1pdCIsInRpbWluZyIsInN0YXJ0IiwiZ2V0SXRlbURhdGFGb3JJbmRleCIsImJhc2VYIiwiYXJncyIsImNhbGxiYWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RyYWdnYWJsZS1zb3J0L2l0ZW0uanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7QW5pbWF0ZWQsIEVhc2luZywgUGFuUmVzcG9uZGVyfSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnQsIFNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gXCJldmVudHNcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCB1c2VFdmVudEVtaXR0ZXIgZnJvbSBcIi4uL3VzZS1ldmVudC1lbWl0dGVyXCJcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBEcmFnZ2FibGVTb3J0SXRlbSBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjYWNoZUtleTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb250cm9sbGVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgaXRlbTogUHJvcFR5cGVzLmFueS5pc1JlcXVpcmVkLFxuICAgIGl0ZW1JbmRleDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIG9uSXRlbU1vdmVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICByZW5kZXJJdGVtOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgaW5pdGlhbExheW91dCA9IG51bGxcblxuICBzZXR1cCgpIHtcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgZHJhZ2dpbmc6IGZhbHNlXG4gICAgfSlcblxuICAgIHRoaXMuZXZlbnRzID0gdXNlTWVtbygoKSA9PiBuZXcgRXZlbnRFbWl0dGVyKCksIFtdKVxuICAgIHRoaXMucG9zaXRpb24gPSB1c2VNZW1vKCgpID0+IG5ldyBBbmltYXRlZC5WYWx1ZVhZKCksIFtdKVxuICAgIHRoaXMucGFuUmVzcG9uZGVyID0gdXNlTWVtbyhcbiAgICAgICgpID0+IFBhblJlc3BvbmRlci5jcmVhdGUoe1xuICAgICAgICBvblN0YXJ0U2hvdWxkU2V0UGFuUmVzcG9uZGVyOiAoZSwgKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7ZHJhZ2dpbmc6IHRydWV9KVxuICAgICAgICAgIHRoaXMucC5jb250cm9sbGVyLm9uRHJhZ1N0YXJ0KHtpdGVtOiB0aGlzLnAuaXRlbSwgaXRlbUluZGV4OiB0aGlzLnAuaXRlbUluZGV4fSlcblxuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIFtdXG4gICAgKVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMucC5jb250cm9sbGVyLmdldEV2ZW50cygpLCBcIm9uRHJhZ1N0YXJ0XCIsIHRoaXMudHQub25EcmFnU3RhcnQpXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMucC5jb250cm9sbGVyLmdldEV2ZW50cygpLCBcIm9uRHJhZ0VuZEFuaW1hdGlvblwiLCB0aGlzLnR0Lm9uRHJhZ0VuZEFuaW1hdGlvbilcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5ldmVudHMsIFwibW92ZVwiLCB0aGlzLnR0Lm9uTW92ZSlcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5ldmVudHMsIFwibW92ZVRvUG9zaXRpb25cIiwgdGhpcy50dC5vbk1vdmVUb1Bvc2l0aW9uKVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmV2ZW50cywgXCJyZXNldFBvc2l0aW9uXCIsIHRoaXMudHQub25SZXNldFBvc2l0aW9uKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtpdGVtLCByZW5kZXJJdGVtfSA9IHRoaXMucFxuICAgIGNvbnN0IHthY3RpdmV9ID0gdGhpcy5zXG4gICAgY29uc3Qgc3R5bGUgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBzdHlsZSA9IHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRoaXMudHQucG9zaXRpb24uZ2V0VHJhbnNsYXRlVHJhbnNmb3JtKClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiNmZmZcIlxuICAgICAgICAgIHN0eWxlLmVsZXZhdGlvbiA9IDJcbiAgICAgICAgICBzdHlsZS56SW5kZXggPSA5OTk5OVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0eWxlXG4gICAgICB9LFxuICAgICAgW2FjdGl2ZV1cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEFuaW1hdGVkLlZpZXcgZGF0YVNldD17e2NvbXBvbmVudDogXCJkcmFnZ2FibGUtc29ydC9pdGVtXCJ9fSBvbkxheW91dD17dGhpcy50dC5vbkxheW91dH0gc3R5bGU9e3N0eWxlfT5cbiAgICAgICAge3JlbmRlckl0ZW0oe2lzQWN0aXZlOiBhY3RpdmUsIGl0ZW0sIHRvdWNoUHJvcHM6IHRoaXMudHQucGFuUmVzcG9uZGVyLnBhbkhhbmRsZXJzfSl9XG4gICAgICA8L0FuaW1hdGVkLlZpZXc+XG4gICAgKVxuICB9XG5cbiAgb25EcmFnU3RhcnQgPSAoe2l0ZW1EYXRhfSkgPT4ge1xuICAgIGNvbnN0IG5ld1N0YXRlID0ge2RyYWdnaW5nOiB0cnVlfVxuXG4gICAgaWYgKGl0ZW1EYXRhLmluZGV4ID09IHRoaXMucC5pdGVtSW5kZXgpIHtcbiAgICAgIG5ld1N0YXRlLmFjdGl2ZSA9IHRydWVcbiAgICAgIHRoaXMuYmFzZVhBdFN0YXJ0ZWREcmFnZ2luZyA9IHRoaXMuZ2V0QmFzZVgoKVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpXG4gIH1cblxuICBvbkRyYWdFbmRBbmltYXRpb24gPSAoKSA9PiB0aGlzLnNldFN0YXRlKHthY3RpdmU6IGZhbHNlLCBkcmFnZ2luZzogZmFsc2V9KVxuXG4gIG9uTGF5b3V0ID0gKGUpID0+IHtcbiAgICBjb25zdCB7Y29udHJvbGxlciwgaXRlbSwgaXRlbUluZGV4fSA9IHRoaXMucFxuXG4gICAgY29udHJvbGxlci5vbkl0ZW1MYXlvdXQoe2V2ZW50czogdGhpcy50dC5ldmVudHMsIGluZGV4OiBpdGVtSW5kZXgsIGl0ZW0sIGxheW91dDogZS5uYXRpdmVFdmVudC5sYXlvdXR9KVxuXG4gICAgaWYgKCF0aGlzLnR0LmluaXRpYWxMYXlvdXQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbExheW91dCA9IGUubmF0aXZlRXZlbnQubGF5b3V0XG4gICAgfVxuICB9XG5cbiAgb25Nb3ZlID0gKHtnZXN0YXRlfSkgPT4ge1xuICAgIGNvbnN0IHggPSBnZXN0YXRlLmR4ICsgdGhpcy50dC5iYXNlWEF0U3RhcnRlZERyYWdnaW5nIC0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnhcbiAgICBjb25zdCB5ID0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnlcblxuICAgIHRoaXMudHQucG9zaXRpb24uc2V0VmFsdWUoe3gsIHl9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25JdGVtTW92ZWQpIHtcbiAgICAgIHRoaXMucC5vbkl0ZW1Nb3ZlZCh7aXRlbUluZGV4OiB0aGlzLnAuaXRlbUluZGV4LCB4LCB5fSlcbiAgICB9XG4gIH1cblxuICBvbk1vdmVUb1Bvc2l0aW9uID0gKHt4LCB5fSkgPT4ge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRYRnJvbVN0YXJ0aW5nUG9zaXRpb24gPSB4IC0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnhcbiAgICBjb25zdCBhbmltYXRpb25BcmdzID0ge1xuICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgIGVhc2luZzogRWFzaW5nLmluT3V0KEVhc2luZy5saW5lYXIpLFxuICAgICAgdG9WYWx1ZToge1xuICAgICAgICB4OiBjYWxjdWxhdGVkWEZyb21TdGFydGluZ1Bvc2l0aW9uLFxuICAgICAgICB5XG4gICAgICB9LFxuICAgICAgdXNlTmF0aXZlRHJpdmVyOiB0cnVlLFxuICAgIH1cbiAgICBjb25zdCBhbmltYXRpb25FdmVudEFyZ3MgPSB7YW5pbWF0aW9uQXJncywgYW5pbWF0aW9uVHlwZTogXCJtb3ZlVG9Qb3NpdGlvblwiLCBpdGVtOiB0aGlzLnAuaXRlbX1cblxuICAgIHRoaXMucC5jb250cm9sbGVyLmV2ZW50cy5lbWl0KFwib25BbmltYXRpb25TdGFydFwiLCBhbmltYXRpb25FdmVudEFyZ3MpXG5cbiAgICBBbmltYXRlZFxuICAgICAgLnRpbWluZyh0aGlzLnR0LnBvc2l0aW9uLCBhbmltYXRpb25BcmdzKVxuICAgICAgLnN0YXJ0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wLmNvbnRyb2xsZXIuZXZlbnRzLmVtaXQoXCJvbkFuaW1hdGlvbkVuZFwiLCBhbmltYXRpb25FdmVudEFyZ3MpXG4gICAgICB9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25JdGVtTW92ZWQpIHtcbiAgICAgIHRoaXMucC5vbkl0ZW1Nb3ZlZCh7XG4gICAgICAgIGFuaW1hdGlvbkFyZ3MsXG4gICAgICAgIGl0ZW1JbmRleDogdGhpcy5wLml0ZW1JbmRleCxcbiAgICAgICAgeDogY2FsY3VsYXRlZFhGcm9tU3RhcnRpbmdQb3NpdGlvbixcbiAgICAgICAgeVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBnZXRCYXNlWCA9ICgpID0+IHRoaXMucC5jb250cm9sbGVyLmdldEl0ZW1EYXRhRm9ySW5kZXgodGhpcy5wLml0ZW1JbmRleCkuYmFzZVhcblxuICBvblJlc2V0UG9zaXRpb24gPSAoYXJncykgPT4ge1xuICAgIGNvbnN0IGJhc2VYID0gdGhpcy5nZXRCYXNlWCgpIC0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnhcbiAgICBjb25zdCBhbmltYXRpb25BcmdzID0ge1xuICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgIGVhc2luZzogRWFzaW5nLmluT3V0KEVhc2luZy5saW5lYXIpLFxuICAgICAgdG9WYWx1ZToge1xuICAgICAgICB4OiBiYXNlWCxcbiAgICAgICAgeTogMFxuICAgICAgfSxcbiAgICAgIHVzZU5hdGl2ZURyaXZlcjogdHJ1ZSxcbiAgICB9XG4gICAgY29uc3QgYW5pbWF0aW9uRXZlbnRBcmdzID0ge2FuaW1hdGlvbkFyZ3MsIGFuaW1hdGlvblR5cGU6IFwicmVzZXRQb3NpdGlvblwiLCBpdGVtOiB0aGlzLnAuaXRlbX1cblxuICAgIHRoaXMucC5jb250cm9sbGVyLmV2ZW50cy5lbWl0KFwib25BbmltYXRpb25TdGFydFwiLCBhbmltYXRpb25FdmVudEFyZ3MpXG5cbiAgICBBbmltYXRlZFxuICAgICAgLnRpbWluZyh0aGlzLnR0LnBvc2l0aW9uLCBhbmltYXRpb25BcmdzKVxuICAgICAgLnN0YXJ0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wLmNvbnRyb2xsZXIuZXZlbnRzLmVtaXQoXCJvbkFuaW1hdGlvbkVuZFwiLCBhbmltYXRpb25FdmVudEFyZ3MpXG4gICAgICAgIGlmIChhcmdzPy5jYWxsYmFjaykgYXJncy5jYWxsYmFjaygpXG4gICAgICB9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25JdGVtTW92ZWQpIHtcbiAgICAgIHRoaXMucC5vbkl0ZW1Nb3ZlZCh7XG4gICAgICAgIGFuaW1hdGlvbkFyZ3MsXG4gICAgICAgIGl0ZW1JbmRleDogdGhpcy5wLml0ZW1JbmRleCxcbiAgICAgICAgeDogYmFzZVgsXG4gICAgICAgIHk6IDBcbiAgICAgIH0pXG4gICAgfVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsT0FBTyxRQUFPLE9BQU87QUFDN0IsU0FBUUMsUUFBUSxFQUFFQyxNQUFNLEVBQUVDLFlBQVksUUFBTyxjQUFjO0FBQzNELFNBQVFDLGNBQWMsRUFBRUMsY0FBYyxRQUFPLHVDQUF1QztBQUNwRixPQUFPQyxZQUFZLE1BQU0sUUFBUTtBQUNqQyxPQUFPQyxJQUFJLE1BQU0sNEJBQTRCO0FBQzdDLE9BQU9DLFNBQVMsTUFBTSxZQUFZO0FBQ2xDLE9BQU9DLGNBQWMsTUFBTSxrQkFBa0I7QUFDN0MsT0FBT0MsZUFBZSxNQUFNLHNCQUFzQjtBQUVsRCxlQUFlSCxJQUFJLENBQUNILGNBQWMsQ0FBQyxNQUFNTyxpQkFBaUIsU0FBU04sY0FBYyxDQUFDO0VBQ2hGLE9BQU9PLFNBQVMsR0FBR0gsY0FBYyxDQUFDO0lBQ2hDSSxRQUFRLEVBQUVMLFNBQVMsQ0FBQ00sTUFBTTtJQUMxQkMsVUFBVSxFQUFFUCxTQUFTLENBQUNRLE1BQU0sQ0FBQ0MsVUFBVTtJQUN2Q0MsSUFBSSxFQUFFVixTQUFTLENBQUNXLEdBQUcsQ0FBQ0YsVUFBVTtJQUM5QkcsU0FBUyxFQUFFWixTQUFTLENBQUNhLE1BQU0sQ0FBQ0osVUFBVTtJQUN0Q0ssV0FBVyxFQUFFZCxTQUFTLENBQUNlLElBQUk7SUFDM0JDLFVBQVUsRUFBRWhCLFNBQVMsQ0FBQ2UsSUFBSSxDQUFDTjtFQUM3QixDQUFDLENBQUM7RUFFRlEsYUFBYSxHQUFHLElBQUk7RUFFcEJDLEtBQUtBLENBQUEsRUFBRztJQUNOLElBQUksQ0FBQ0MsU0FBUyxDQUFDO01BQ2JDLE1BQU0sRUFBRSxLQUFLO01BQ2JDLFFBQVEsRUFBRTtJQUNaLENBQUMsQ0FBQztJQUVGLElBQUksQ0FB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
@@ -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