@kaspernj/api-maker 1.0.2054 → 1.0.2056

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/build/api.js +65 -213
  2. package/build/attribute-not-loaded-error.js +3 -26
  3. package/build/base-component.js +4 -27
  4. package/build/base-error.js +21 -46
  5. package/build/base-model/attribute.js +15 -22
  6. package/build/base-model/column.js +5 -9
  7. package/build/base-model/reflection.js +12 -52
  8. package/build/base-model/scope.js +9 -46
  9. package/build/base-model.js +584 -837
  10. package/build/bootstrap/attribute-row.js +88 -173
  11. package/build/bootstrap/attribute-rows.js +22 -51
  12. package/build/bootstrap/card.js +77 -160
  13. package/build/bootstrap/checkbox.js +54 -103
  14. package/build/bootstrap/checkboxes.js +117 -203
  15. package/build/bootstrap/index.js +1 -1
  16. package/build/bootstrap/input.js +81 -132
  17. package/build/bootstrap/invalid-feedback.js +19 -47
  18. package/build/bootstrap/paginate.js +100 -165
  19. package/build/bootstrap/radio-buttons.js +44 -81
  20. package/build/bootstrap/select.js +44 -91
  21. package/build/bootstrap/sort-link.js +69 -152
  22. package/build/cable-connection-pool.js +44 -66
  23. package/build/cable-subscription-pool.js +105 -162
  24. package/build/cable-subscription.js +10 -17
  25. package/build/cache-key-generator.js +28 -37
  26. package/build/can-can.js +81 -202
  27. package/build/channels-consumer.js +6 -11
  28. package/build/collection-loader.js +36 -54
  29. package/build/collection.d.ts.map +1 -1
  30. package/build/collection.js +160 -308
  31. package/build/command-submit-data.d.ts +1 -1
  32. package/build/command-submit-data.d.ts.map +1 -1
  33. package/build/command-submit-data.js +30 -39
  34. package/build/commands-pool.js +140 -216
  35. package/build/compose.js +4 -12
  36. package/build/config.js +21 -68
  37. package/build/custom-error.js +5 -30
  38. package/build/data-set-to-attributes.js +6 -42
  39. package/build/deserializer.js +27 -80
  40. package/build/destroy-error.js +5 -30
  41. package/build/devise.js +84 -188
  42. package/build/draggable-sort/controller.js +88 -111
  43. package/build/draggable-sort/index.js +68 -145
  44. package/build/draggable-sort/item.js +132 -198
  45. package/build/error-logger.js +79 -164
  46. package/build/error-messages.js +5 -8
  47. package/build/event-connection.js +24 -62
  48. package/build/event-emitter-listener.js +7 -24
  49. package/build/event-model-class.js +20 -47
  50. package/build/events.js +4 -9
  51. package/build/form.js +66 -154
  52. package/build/history-expo.js +13 -25
  53. package/build/history-react-native.js +15 -27
  54. package/build/history.js +3 -5
  55. package/build/index.js +3 -6
  56. package/build/inputs/attachment.js +72 -123
  57. package/build/inputs/auto-submit.js +16 -55
  58. package/build/inputs/checkbox.js +78 -167
  59. package/build/inputs/checkboxes.js +76 -159
  60. package/build/inputs/id-for-component.js +5 -41
  61. package/build/inputs/input-wrapper.js +8 -27
  62. package/build/inputs/input.js +159 -245
  63. package/build/inputs/money.js +124 -186
  64. package/build/inputs/name-for-component.js +5 -41
  65. package/build/inputs/select.js +69 -123
  66. package/build/instance-of-class-name.js +16 -21
  67. package/build/is-expo.js +9 -11
  68. package/build/key-value-store.js +52 -128
  69. package/build/link.js +52 -115
  70. package/build/logger.js +20 -26
  71. package/build/merge-styles.js +6 -10
  72. package/build/modal.js +15 -62
  73. package/build/model-class-require.js +9 -44
  74. package/build/model-events.js +25 -34
  75. package/build/model-name.js +16 -57
  76. package/build/model-prop-type.js +52 -63
  77. package/build/model-recipes-loader.js +17 -25
  78. package/build/model-recipes-model-loader.d.ts +1 -1
  79. package/build/model-recipes-model-loader.js +130 -208
  80. package/build/models-response-reader.js +25 -66
  81. package/build/models.js +6 -11
  82. package/build/money-formatter.d.ts +2 -2
  83. package/build/money-formatter.d.ts.map +1 -1
  84. package/build/money-formatter.js +46 -56
  85. package/build/not-loaded-error.js +3 -26
  86. package/build/params.js +32 -42
  87. package/build/preloaded.js +19 -59
  88. package/build/resize-observer.js +6 -12
  89. package/build/rest-props-validator.js +5 -7
  90. package/build/result.js +11 -15
  91. package/build/router/route.js +179 -312
  92. package/build/router/switch.js +56 -130
  93. package/build/router.js +34 -94
  94. package/build/routes-native.js +64 -148
  95. package/build/routes.js +26 -80
  96. package/build/run-last.js +20 -25
  97. package/build/serializer.js +29 -34
  98. package/build/services.js +10 -19
  99. package/build/session-status-updater.js +85 -184
  100. package/build/source-maps-loader.d.ts +37 -0
  101. package/build/source-maps-loader.d.ts.map +1 -0
  102. package/build/source-maps-loader.js +103 -225
  103. package/build/super-admin/config-reader.d.ts +2 -2
  104. package/build/super-admin/config-reader.js +42 -83
  105. package/build/super-admin/edit-page/edit-attribute-checkbox.js +53 -115
  106. package/build/super-admin/edit-page/edit-attribute-content.js +47 -77
  107. package/build/super-admin/edit-page/edit-attribute-input.js +57 -119
  108. package/build/super-admin/edit-page/edit-attribute.js +40 -104
  109. package/build/super-admin/edit-page.js +88 -201
  110. package/build/super-admin/has-edit-config.js +7 -13
  111. package/build/super-admin/index-page.js +17 -44
  112. package/build/super-admin/index.js +87 -210
  113. package/build/super-admin/layout/header/index.js +91 -152
  114. package/build/super-admin/layout/index.js +70 -153
  115. package/build/super-admin/layout/menu/index.js +85 -161
  116. package/build/super-admin/layout/menu/menu-content.js +25 -85
  117. package/build/super-admin/layout/menu/menu-item.js +52 -102
  118. package/build/super-admin/layout/no-access.js +19 -45
  119. package/build/super-admin/model-class-table.js +45 -129
  120. package/build/super-admin/models.js +6 -42
  121. package/build/super-admin/show-nav.js +27 -89
  122. package/build/super-admin/show-page/belongs-to-attribute-row.js +18 -76
  123. package/build/super-admin/show-page/index.js +101 -187
  124. package/build/super-admin/show-reflection-actions.js +39 -100
  125. package/build/super-admin/show-reflection-link.js +27 -99
  126. package/build/super-admin/show-reflection-page.js +34 -97
  127. package/build/table/column-content.js +77 -121
  128. package/build/table/column-identifier.js +7 -11
  129. package/build/table/column-visible.js +2 -5
  130. package/build/table/components/column.js +13 -60
  131. package/build/table/components/flat-list.js +13 -60
  132. package/build/table/components/header.js +15 -62
  133. package/build/table/components/row.js +16 -63
  134. package/build/table/filters/attribute-element.js +34 -62
  135. package/build/table/filters/filter-form.js +280 -483
  136. package/build/table/filters/filter.js +45 -73
  137. package/build/table/filters/index.js +95 -139
  138. package/build/table/filters/load-search-modal.js +64 -212
  139. package/build/table/filters/reflection-element.js +27 -55
  140. package/build/table/filters/save-search-modal.js +44 -140
  141. package/build/table/filters/scope-element.js +28 -56
  142. package/build/table/header-column-content.js +33 -71
  143. package/build/table/header-column.js +89 -218
  144. package/build/table/header-select.js +45 -77
  145. package/build/table/model-callback-args.js +5 -41
  146. package/build/table/model-column.js +59 -144
  147. package/build/table/model-row.js +75 -187
  148. package/build/table/select-calculator.js +27 -86
  149. package/build/table/settings/column-row.js +66 -186
  150. package/build/table/settings/download-action.js +38 -74
  151. package/build/table/settings/index.js +38 -102
  152. package/build/table/table-settings.js +185 -323
  153. package/build/table/table.js +583 -781
  154. package/build/table/use-sorting.js +16 -35
  155. package/build/table/widths.js +32 -38
  156. package/build/table/worker-plugins-check-all-checkbox.js +77 -225
  157. package/build/table/worker-plugins-checkbox.js +74 -185
  158. package/build/translated-attributes.js +6 -11
  159. package/build/translated-collections.js +11 -20
  160. package/build/updated-attribute.js +47 -120
  161. package/build/url-encode.js +6 -12
  162. package/build/use-breakpoint.js +43 -95
  163. package/build/use-can-can.js +30 -92
  164. package/build/use-collection.js +119 -229
  165. package/build/use-created-event.js +27 -44
  166. package/build/use-current-user-context.js +57 -151
  167. package/build/use-current-user.js +14 -32
  168. package/build/use-destroyed-event.js +22 -43
  169. package/build/use-event-emitter.d.ts +1 -2
  170. package/build/use-event-emitter.d.ts.map +1 -1
  171. package/build/use-event-emitter.js +10 -16
  172. package/build/use-event-listener.js +13 -22
  173. package/build/use-input.js +49 -69
  174. package/build/use-model-event.js +22 -43
  175. package/build/use-model.js +96 -199
  176. package/build/use-resize-observer.js +11 -21
  177. package/build/use-router.js +65 -107
  178. package/build/use-screen-layout.js +17 -19
  179. package/build/use-styles.js +24 -75
  180. package/build/use-updated-event.js +22 -44
  181. package/build/use-validation-errors.js +12 -18
  182. package/build/utils/button.js +86 -136
  183. package/build/utils/card.js +31 -106
  184. package/build/utils/checkbox.js +51 -112
  185. package/build/utils/checkboxes.js +109 -182
  186. package/build/utils/default-style.js +29 -103
  187. package/build/utils/header.js +8 -35
  188. package/build/utils/icon.js +36 -117
  189. package/build/utils/invalid-feedback.js +16 -43
  190. package/build/utils/modal.js +25 -108
  191. package/build/utils/text.js +10 -37
  192. package/build/validation-error.js +31 -89
  193. package/build/validation-errors.js +61 -111
  194. package/build/with-api-maker.js +15 -67
  195. package/build/with-collection.js +14 -64
  196. package/build/with-current-user.js +7 -23
  197. package/build/with-model.js +11 -27
  198. package/build/with-router.js +8 -35
  199. package/package.json +4 -3
  200. package/build/api.js.map +0 -1
  201. package/build/attribute-not-loaded-error.js.map +0 -1
  202. package/build/base-component.js.map +0 -1
  203. package/build/base-error.js.map +0 -1
  204. package/build/base-model/attribute.js.map +0 -1
  205. package/build/base-model/column.js.map +0 -1
  206. package/build/base-model/reflection.js.map +0 -1
  207. package/build/base-model/scope.js.map +0 -1
  208. package/build/base-model.js.map +0 -1
  209. package/build/bootstrap/attribute-row.js.map +0 -1
  210. package/build/bootstrap/attribute-rows.js.map +0 -1
  211. package/build/bootstrap/card.js.map +0 -1
  212. package/build/bootstrap/checkbox.js.map +0 -1
  213. package/build/bootstrap/checkboxes.js.map +0 -1
  214. package/build/bootstrap/index.js.map +0 -1
  215. package/build/bootstrap/input.js.map +0 -1
  216. package/build/bootstrap/invalid-feedback.js.map +0 -1
  217. package/build/bootstrap/paginate.js.map +0 -1
  218. package/build/bootstrap/radio-buttons.js.map +0 -1
  219. package/build/bootstrap/select.js.map +0 -1
  220. package/build/bootstrap/sort-link.js.map +0 -1
  221. package/build/cable-connection-pool.js.map +0 -1
  222. package/build/cable-subscription-pool.js.map +0 -1
  223. package/build/cable-subscription.js.map +0 -1
  224. package/build/cache-key-generator.js.map +0 -1
  225. package/build/can-can.js.map +0 -1
  226. package/build/channels-consumer.js.map +0 -1
  227. package/build/collection-loader.js.map +0 -1
  228. package/build/collection.js.map +0 -1
  229. package/build/command-submit-data.js.map +0 -1
  230. package/build/commands-pool.js.map +0 -1
  231. package/build/compose.js.map +0 -1
  232. package/build/config.js.map +0 -1
  233. package/build/custom-error.js.map +0 -1
  234. package/build/data-set-to-attributes.js.map +0 -1
  235. package/build/deserializer.js.map +0 -1
  236. package/build/destroy-error.js.map +0 -1
  237. package/build/devise.js.map +0 -1
  238. package/build/draggable-sort/controller.js.map +0 -1
  239. package/build/draggable-sort/index.js.map +0 -1
  240. package/build/draggable-sort/item.js.map +0 -1
  241. package/build/error-logger.js.map +0 -1
  242. package/build/error-messages.js.map +0 -1
  243. package/build/event-connection.js.map +0 -1
  244. package/build/event-emitter-listener.js.map +0 -1
  245. package/build/event-model-class.js.map +0 -1
  246. package/build/events.js.map +0 -1
  247. package/build/form.js.map +0 -1
  248. package/build/history-expo.js.map +0 -1
  249. package/build/history-react-native.js.map +0 -1
  250. package/build/history.js.map +0 -1
  251. package/build/index.js.map +0 -1
  252. package/build/inputs/attachment.js.map +0 -1
  253. package/build/inputs/auto-submit.js.map +0 -1
  254. package/build/inputs/checkbox.js.map +0 -1
  255. package/build/inputs/checkboxes.js.map +0 -1
  256. package/build/inputs/id-for-component.js.map +0 -1
  257. package/build/inputs/input-wrapper.js.map +0 -1
  258. package/build/inputs/input.js.map +0 -1
  259. package/build/inputs/money.js.map +0 -1
  260. package/build/inputs/name-for-component.js.map +0 -1
  261. package/build/inputs/select.js.map +0 -1
  262. package/build/instance-of-class-name.js.map +0 -1
  263. package/build/is-expo.js.map +0 -1
  264. package/build/key-value-store.js.map +0 -1
  265. package/build/link.js.map +0 -1
  266. package/build/logger.js.map +0 -1
  267. package/build/merge-styles.js.map +0 -1
  268. package/build/modal.js.map +0 -1
  269. package/build/model-class-require.js.map +0 -1
  270. package/build/model-events.js.map +0 -1
  271. package/build/model-name.js.map +0 -1
  272. package/build/model-prop-type.js.map +0 -1
  273. package/build/model-recipes-loader.js.map +0 -1
  274. package/build/model-recipes-model-loader.js.map +0 -1
  275. package/build/models-response-reader.js.map +0 -1
  276. package/build/models.js.map +0 -1
  277. package/build/money-formatter.js.map +0 -1
  278. package/build/not-loaded-error.js.map +0 -1
  279. package/build/params.js.map +0 -1
  280. package/build/preloaded.js.map +0 -1
  281. package/build/resize-observer.js.map +0 -1
  282. package/build/rest-props-validator.js.map +0 -1
  283. package/build/result.js.map +0 -1
  284. package/build/router/route.js.map +0 -1
  285. package/build/router/switch.js.map +0 -1
  286. package/build/router.js.map +0 -1
  287. package/build/routes-native.js.map +0 -1
  288. package/build/routes.js.map +0 -1
  289. package/build/run-last.js.map +0 -1
  290. package/build/serializer.js.map +0 -1
  291. package/build/services.js.map +0 -1
  292. package/build/session-status-updater.js.map +0 -1
  293. package/build/source-maps-loader.js.map +0 -1
  294. package/build/super-admin/config-reader.js.map +0 -1
  295. package/build/super-admin/edit-page/edit-attribute-checkbox.js.map +0 -1
  296. package/build/super-admin/edit-page/edit-attribute-content.js.map +0 -1
  297. package/build/super-admin/edit-page/edit-attribute-input.js.map +0 -1
  298. package/build/super-admin/edit-page/edit-attribute.js.map +0 -1
  299. package/build/super-admin/edit-page.js.map +0 -1
  300. package/build/super-admin/has-edit-config.js.map +0 -1
  301. package/build/super-admin/index-page.js.map +0 -1
  302. package/build/super-admin/index.js.map +0 -1
  303. package/build/super-admin/layout/header/index.js.map +0 -1
  304. package/build/super-admin/layout/index.js.map +0 -1
  305. package/build/super-admin/layout/menu/index.js.map +0 -1
  306. package/build/super-admin/layout/menu/menu-content.js.map +0 -1
  307. package/build/super-admin/layout/menu/menu-item.js.map +0 -1
  308. package/build/super-admin/layout/no-access.js.map +0 -1
  309. package/build/super-admin/model-class-table.js.map +0 -1
  310. package/build/super-admin/models.js.map +0 -1
  311. package/build/super-admin/show-nav.js.map +0 -1
  312. package/build/super-admin/show-page/belongs-to-attribute-row.js.map +0 -1
  313. package/build/super-admin/show-page/index.js.map +0 -1
  314. package/build/super-admin/show-reflection-actions.js.map +0 -1
  315. package/build/super-admin/show-reflection-link.js.map +0 -1
  316. package/build/super-admin/show-reflection-page.js.map +0 -1
  317. package/build/table/column-content.js.map +0 -1
  318. package/build/table/column-identifier.js.map +0 -1
  319. package/build/table/column-visible.js.map +0 -1
  320. package/build/table/components/column.js.map +0 -1
  321. package/build/table/components/flat-list.js.map +0 -1
  322. package/build/table/components/header.js.map +0 -1
  323. package/build/table/components/row.js.map +0 -1
  324. package/build/table/filters/attribute-element.js.map +0 -1
  325. package/build/table/filters/filter-form.js.map +0 -1
  326. package/build/table/filters/filter.js.map +0 -1
  327. package/build/table/filters/index.js.map +0 -1
  328. package/build/table/filters/load-search-modal.js.map +0 -1
  329. package/build/table/filters/reflection-element.js.map +0 -1
  330. package/build/table/filters/save-search-modal.js.map +0 -1
  331. package/build/table/filters/scope-element.js.map +0 -1
  332. package/build/table/header-column-content.js.map +0 -1
  333. package/build/table/header-column.js.map +0 -1
  334. package/build/table/header-select.js.map +0 -1
  335. package/build/table/model-callback-args.js.map +0 -1
  336. package/build/table/model-column.js.map +0 -1
  337. package/build/table/model-row.js.map +0 -1
  338. package/build/table/select-calculator.js.map +0 -1
  339. package/build/table/settings/column-row.js.map +0 -1
  340. package/build/table/settings/download-action.js.map +0 -1
  341. package/build/table/settings/index.js.map +0 -1
  342. package/build/table/table-settings.js.map +0 -1
  343. package/build/table/table.js.map +0 -1
  344. package/build/table/use-sorting.js.map +0 -1
  345. package/build/table/widths.js.map +0 -1
  346. package/build/table/worker-plugins-check-all-checkbox.js.map +0 -1
  347. package/build/table/worker-plugins-checkbox.js.map +0 -1
  348. package/build/translated-attributes.js.map +0 -1
  349. package/build/translated-collections.js.map +0 -1
  350. package/build/updated-attribute.js.map +0 -1
  351. package/build/url-encode.js.map +0 -1
  352. package/build/use-breakpoint.js.map +0 -1
  353. package/build/use-can-can.js.map +0 -1
  354. package/build/use-collection.js.map +0 -1
  355. package/build/use-created-event.js.map +0 -1
  356. package/build/use-current-user-context.js.map +0 -1
  357. package/build/use-current-user.js.map +0 -1
  358. package/build/use-destroyed-event.js.map +0 -1
  359. package/build/use-event-emitter.js.map +0 -1
  360. package/build/use-event-listener.js.map +0 -1
  361. package/build/use-input.js.map +0 -1
  362. package/build/use-model-event.js.map +0 -1
  363. package/build/use-model.js.map +0 -1
  364. package/build/use-resize-observer.js.map +0 -1
  365. package/build/use-router.js.map +0 -1
  366. package/build/use-screen-layout.js.map +0 -1
  367. package/build/use-styles.js.map +0 -1
  368. package/build/use-updated-event.js.map +0 -1
  369. package/build/use-validation-errors.js.map +0 -1
  370. package/build/utils/button.js.map +0 -1
  371. package/build/utils/card.js.map +0 -1
  372. package/build/utils/checkbox.js.map +0 -1
  373. package/build/utils/checkboxes.js.map +0 -1
  374. package/build/utils/default-style.js.map +0 -1
  375. package/build/utils/header.js.map +0 -1
  376. package/build/utils/icon.js.map +0 -1
  377. package/build/utils/invalid-feedback.js.map +0 -1
  378. package/build/utils/modal.js.map +0 -1
  379. package/build/utils/text.js.map +0 -1
  380. package/build/validation-error.js.map +0 -1
  381. package/build/validation-errors.js.map +0 -1
  382. package/build/with-api-maker.js.map +0 -1
  383. package/build/with-collection.js.map +0 -1
  384. package/build/with-current-user.js.map +0 -1
  385. package/build/with-model.js.map +0 -1
  386. package/build/with-router.js.map +0 -1
@@ -1,150 +1,73 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { useMemo } from "react";
3
+ import { Animated, PanResponder } from "react-native";
4
+ import { shapeComponent, ShapeComponent } from "set-state-compare/build/shape-component.js";
5
+ import Controller from "./controller.js";
6
+ import DraggableSortItem from "./item";
7
+ import EventEmitter from "events";
8
+ import memo from "set-state-compare/build/memo.js";
9
+ import PropTypes from "prop-types";
10
+ import propTypesExact from "prop-types-exact";
11
+ import useEventEmitter from "../use-event-emitter.js";
12
+ export default memo(shapeComponent(class DraggableSort extends ShapeComponent {
13
+ static defaultProps = {
14
+ horizontal: false
8
15
  };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
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 { data, keyExtractor } = this.p;
31
+ const { events } = this.props;
32
+ this.controller ||= new Controller({ data, events, keyExtractor });
33
+ this.panResponder ||= PanResponder.create({
34
+ onStartShouldSetPanResponder: (e) => {
35
+ const initialDragPosition = { x: e.nativeEvent.locationX, y: e.nativeEvent.locationY };
36
+ this.controller.setInitialDragPosition(initialDragPosition);
37
+ if (this.controller.draggedItemData) {
38
+ return true;
39
+ }
40
+ },
41
+ onPanResponderMove: (e, gestate) => {
42
+ this.tt.controller.onMove({ gestate });
43
+ },
44
+ onPanResponderRelease: (e, gestate) => {
45
+ if (this.controller.draggedItem) {
46
+ this.tt.controller.onDragEnd();
47
+ }
48
+ }
49
+ });
50
+ useEventEmitter(this.controller.getEvents(), "onDragStart", this.tt.onDragItemStart);
51
+ useEventEmitter(this.controller.getEvents(), "onDragEnd", this.tt.onDragItemEnd);
52
+ }
53
+ render() {
54
+ const { data, horizontal, keyExtractor, renderItem } = this.p;
55
+ const { cacheKeyExtractor, dataSet } = this.props;
56
+ const actualDataSet = useMemo(() => Object.assign({ component: "draggable-sort" }, dataSet), [dataSet]);
57
+ return (_jsx(Animated.View, { dataSet: actualDataSet, style: this.rootViewStyle ||= { flexDirection: horizontal ? "row" : "column" }, ...this.tt.panResponder.panHandlers, children: data.map((item, itemIndex) => _jsx(DraggableSortItem, { cacheKey: cacheKeyExtractor ? cacheKeyExtractor(item) : undefined, controller: this.tt.controller, item: item, itemIndex: itemIndex, onItemMoved: this.props.onItemMoved, renderItem: renderItem }, keyExtractor(item))) }));
58
+ }
59
+ onDragItemStart = ({ itemData }) => {
60
+ if (this.props.onDragItemStart) {
61
+ this.p.onDragItemStart({ itemData });
62
+ }
15
63
  };
16
- })();
17
- var __assign = (this && this.__assign) || function () {
18
- __assign = Object.assign || function(t) {
19
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20
- s = arguments[i];
21
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
- t[p] = s[p];
64
+ onDragItemEnd = (args) => {
65
+ if (args.toPosition !== null) {
66
+ this.p.onReordered(args);
67
+ }
68
+ if (this.props.onDragItemEnd) {
69
+ this.p.onDragItemEnd(args);
23
70
  }
24
- return t;
25
71
  };
26
- return __assign.apply(this, arguments);
27
- };
28
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
29
- if (k2 === undefined) k2 = k;
30
- var desc = Object.getOwnPropertyDescriptor(m, k);
31
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
32
- desc = { enumerable: true, get: function() { return m[k]; } };
33
- }
34
- Object.defineProperty(o, k2, desc);
35
- }) : (function(o, m, k, k2) {
36
- if (k2 === undefined) k2 = k;
37
- o[k2] = m[k];
38
72
  }));
39
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
40
- Object.defineProperty(o, "default", { enumerable: true, value: v });
41
- }) : function(o, v) {
42
- o["default"] = v;
43
- });
44
- var __importStar = (this && this.__importStar) || (function () {
45
- var ownKeys = function(o) {
46
- ownKeys = Object.getOwnPropertyNames || function (o) {
47
- var ar = [];
48
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
49
- return ar;
50
- };
51
- return ownKeys(o);
52
- };
53
- return function (mod) {
54
- if (mod && mod.__esModule) return mod;
55
- var result = {};
56
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
57
- __setModuleDefault(result, mod);
58
- return result;
59
- };
60
- })();
61
- var __importDefault = (this && this.__importDefault) || function (mod) {
62
- return (mod && mod.__esModule) ? mod : { "default": mod };
63
- };
64
- var _a;
65
- Object.defineProperty(exports, "__esModule", { value: true });
66
- var jsx_runtime_1 = require("react/jsx-runtime");
67
- var react_1 = __importStar(require("react"));
68
- var react_native_1 = require("react-native");
69
- var shape_component_js_1 = require("set-state-compare/build/shape-component.js");
70
- var controller_js_1 = __importDefault(require("./controller.js"));
71
- var item_1 = __importDefault(require("./item"));
72
- var events_1 = __importDefault(require("events"));
73
- var memo_js_1 = __importDefault(require("set-state-compare/build/memo.js"));
74
- var prop_types_1 = __importDefault(require("prop-types"));
75
- var prop_types_exact_1 = __importDefault(require("prop-types-exact"));
76
- var use_event_emitter_js_1 = __importDefault(require("../use-event-emitter.js"));
77
- exports.default = (0, memo_js_1.default)((0, shape_component_js_1.shapeComponent)((_a = /** @class */ (function (_super) {
78
- __extends(DraggableSort, _super);
79
- function DraggableSort() {
80
- var _this = _super !== null && _super.apply(this, arguments) || this;
81
- _this.onDragItemStart = function (_b) {
82
- var itemData = _b.itemData;
83
- if (_this.props.onDragItemStart) {
84
- _this.p.onDragItemStart({ itemData: itemData });
85
- }
86
- };
87
- _this.onDragItemEnd = function (args) {
88
- if (args.toPosition !== null) {
89
- _this.p.onReordered(args);
90
- }
91
- if (_this.props.onDragItemEnd) {
92
- _this.p.onDragItemEnd(args);
93
- }
94
- };
95
- return _this;
96
- }
97
- DraggableSort.prototype.setup = function () {
98
- var _this = this;
99
- var _b = this.p, data = _b.data, keyExtractor = _b.keyExtractor;
100
- var events = this.props.events;
101
- this.controller || (this.controller = new controller_js_1.default({ data: data, events: events, keyExtractor: keyExtractor }));
102
- this.panResponder || (this.panResponder = react_native_1.PanResponder.create({
103
- onStartShouldSetPanResponder: function (e) {
104
- var initialDragPosition = { x: e.nativeEvent.locationX, y: e.nativeEvent.locationY };
105
- _this.controller.setInitialDragPosition(initialDragPosition);
106
- if (_this.controller.draggedItemData) {
107
- return true;
108
- }
109
- },
110
- onPanResponderMove: function (e, gestate) {
111
- _this.tt.controller.onMove({ gestate: gestate });
112
- },
113
- onPanResponderRelease: function (e, gestate) {
114
- if (_this.controller.draggedItem) {
115
- _this.tt.controller.onDragEnd();
116
- }
117
- }
118
- }));
119
- (0, use_event_emitter_js_1.default)(this.controller.getEvents(), "onDragStart", this.tt.onDragItemStart);
120
- (0, use_event_emitter_js_1.default)(this.controller.getEvents(), "onDragEnd", this.tt.onDragItemEnd);
121
- };
122
- DraggableSort.prototype.render = function () {
123
- var _this = this;
124
- var _b = this.p, data = _b.data, horizontal = _b.horizontal, keyExtractor = _b.keyExtractor, renderItem = _b.renderItem;
125
- var _c = this.props, cacheKeyExtractor = _c.cacheKeyExtractor, dataSet = _c.dataSet;
126
- var actualDataSet = (0, react_1.useMemo)(function () { return Object.assign({ component: "draggable-sort" }, dataSet); }, [dataSet]);
127
- return ((0, jsx_runtime_1.jsx)(react_native_1.Animated.View, __assign({ dataSet: actualDataSet, style: this.rootViewStyle || (this.rootViewStyle = { flexDirection: horizontal ? "row" : "column" }) }, this.tt.panResponder.panHandlers, { children: data.map(function (item, itemIndex) {
128
- return (0, jsx_runtime_1.jsx)(item_1.default, { cacheKey: cacheKeyExtractor ? cacheKeyExtractor(item) : undefined, controller: _this.tt.controller, item: item, itemIndex: itemIndex, onItemMoved: _this.props.onItemMoved, renderItem: renderItem }, keyExtractor(item));
129
- }) })));
130
- };
131
- return DraggableSort;
132
- }(shape_component_js_1.ShapeComponent)),
133
- _a.defaultProps = {
134
- horizontal: false
135
- },
136
- _a.propTypes = (0, prop_types_exact_1.default)({
137
- cacheKeyExtractor: prop_types_1.default.func,
138
- data: prop_types_1.default.array.isRequired,
139
- dataSet: prop_types_1.default.object,
140
- events: prop_types_1.default.instanceOf(events_1.default),
141
- horizontal: prop_types_1.default.bool.isRequired,
142
- keyExtractor: prop_types_1.default.func.isRequired,
143
- onDragItemEnd: prop_types_1.default.func,
144
- onDragItemStart: prop_types_1.default.func,
145
- onItemMoved: prop_types_1.default.func,
146
- onReordered: prop_types_1.default.func.isRequired,
147
- renderItem: prop_types_1.default.func.isRequired
148
- }),
149
- _a)));
150
- //# sourceMappingURL=index.js.map
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImRyYWdnYWJsZS1zb3J0L2luZGV4LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLEVBQUUsRUFBQyxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDcEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDbkQsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLGlCQUFpQixNQUFNLFFBQVEsQ0FBQTtBQUN0QyxPQUFPLFlBQVksTUFBTSxRQUFRLENBQUE7QUFDakMsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sZUFBZSxNQUFNLHlCQUF5QixDQUFBO0FBRXJELGVBQWUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLGFBQWMsU0FBUSxjQUFjO0lBQzNFLE1BQU0sQ0FBQyxZQUFZLEdBQUc7UUFDcEIsVUFBVSxFQUFFLEtBQUs7S0FDbEIsQ0FBQTtJQUVELE1BQU0sQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQ2pDLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVU7UUFDaEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQ3pCLE1BQU0sRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUMxQyxVQUFVLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQ3JDLFlBQVksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7UUFDdkMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxJ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LFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDakUsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUM5QixJQUFJLEVBQUUsSUFBSSxFQUNWLFNBQVMsRUFBRSxTQUFTLEVBRXBCLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDbkMsVUFBVSxFQUFFLFVBQVUsSUFGakIsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUd2QixDQUNILEdBQ2EsQ0FDakIsQ0FBQTtJQUNILENBQUM7SUFFRCxlQUFlLEdBQUcsQ0FBQyxFQUFDLFFBQVEsRUFBQyxFQUFFLEVBQUU7UUFDL0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQTtRQUNwQyxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsYUFBYSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDdkIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzFCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDNUIsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7QW5pbWF0ZWQsIFBhblJlc3BvbmRlcn0gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50LCBTaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgQ29udHJvbGxlciBmcm9tIFwiLi9jb250cm9sbGVyLmpzXCJcbmltcG9ydCBEcmFnZ2FibGVTb3J0SXRlbSBmcm9tIFwiLi9pdGVtXCJcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSBcImV2ZW50c1wiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCIuLi91c2UtZXZlbnQtZW1pdHRlci5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgRHJhZ2dhYmxlU29ydCBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBob3Jpem9udGFsOiBmYWxzZVxuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjYWNoZUtleUV4dHJhY3RvcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZGF0YTogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gICAgZGF0YVNldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBldmVudHM6IFByb3BUeXBlcy5pbnN0YW5jZU9mKEV2ZW50RW1pdHRlciksXG4gICAgaG9yaXpvbnRhbDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBrZXlFeHRyYWN0b3I6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25EcmFnSXRlbUVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25EcmFnSXRlbVN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkl0ZW1Nb3ZlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25SZW9yZGVyZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgcmVuZGVySXRlbTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICB9KVxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHtkYXRhLCBrZXlFeHRyYWN0b3J9ID0gdGhpcy5wXG4gICAgY29uc3Qge2V2ZW50c30gPSB0aGlzLnByb3BzXG5cbiAgICB0aGlzLmNvbnRyb2xsZXIgfHw9IG5ldyBDb250cm9sbGVyKHtkYXRhLCBldmVudHMsIGtleUV4dHJhY3Rvcn0pXG4gICAgdGhpcy5wYW5SZXNwb25kZXIgfHw9IFBhblJlc3BvbmRlci5jcmVhdGUoe1xuICAgICAgb25TdGFydFNob3VsZFNldFBhblJlc3BvbmRlcjogKGUpID0+IHtcbiAgICAgICAgY29uc3QgaW5pdGlhbERyYWdQb3NpdGlvbiA9IHt4OiBlLm5hdGl2ZUV2ZW50LmxvY2F0aW9uWCwgeTogZS5uYXRpdmVFdmVudC5sb2NhdGlvbll9XG5cbiAgICAgICAgdGhpcy5jb250cm9sbGVyLnNldEluaXRpYWxEcmFnUG9zaXRpb24oaW5pdGlhbERyYWdQb3NpdGlvbilcblxuICAgICAgICBpZiAodGhpcy5jb250cm9sbGVyLmRyYWdnZWRJdGVtRGF0YSkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvblBhblJlc3BvbmRlck1vdmU6IChlLCBnZXN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMudHQuY29udHJvbGxlci5vbk1vdmUoe2dlc3RhdGV9KVxuICAgICAgfSxcbiAgICAgIG9uUGFuUmVzcG9uZGVyUmVsZWFzZTogKGUsIGdlc3RhdGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbGxlci5kcmFnZ2VkSXRlbSkge1xuICAgICAgICAgIHRoaXMudHQuY29udHJvbGxlci5vbkRyYWdFbmQoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcblxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLmNvbnRyb2xsZXIuZ2V0RXZlbnRzKCksIFwib25EcmFnU3RhcnRcIiwgdGhpcy50dC5vbkRyYWdJdGVtU3RhcnQpXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMuY29udHJvbGxlci5nZXRFdmVudHMoKSwgXCJvbkRyYWdFbmRcIiwgdGhpcy50dC5vbkRyYWdJdGVtRW5kKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtkYXRhLCBob3Jpem9udGFsLCBrZXlFeHRyYWN0b3IsIHJlbmRlckl0ZW19ID0gdGhpcy5wXG4gICAgY29uc3Qge2NhY2hlS2V5RXh0cmFjdG9yLCBkYXRhU2V0fSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBhY3R1YWxEYXRhU2V0ID0gdXNlTWVtbyhcbiAgICAgICgpID0+IE9iamVjdC5hc3NpZ24oXG4gICAgICAgIHtjb21wb25lbnQ6IFwiZHJhZ2dhYmxlLXNvcnRcIn0sXG4gICAgICAgIGRhdGFTZXRcbiAgICAgICksXG4gICAgICBbZGF0YVNldF1cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEFuaW1hdGVkLlZpZXdcbiAgICAgICAgZGF0YVNldD17YWN0dWFsRGF0YVNldH1cbiAgICAgICAgc3R5bGU9e3RoaXMucm9vdFZpZXdTdHlsZSB8fD0ge2ZsZXhEaXJlY3Rpb246IGhvcml6b250YWwgPyBcInJvd1wiIDogXCJjb2x1bW5cIn19XG4gICAgICAgIHsuLi50aGlzLnR0LnBhblJlc3BvbmRlci5wYW5IYW5kbGVyc31cbiAgICAgID5cbiAgICAgICAge2RhdGEubWFwKChpdGVtLCBpdGVtSW5kZXgpID0+XG4gICAgICAgICAgPERyYWdnYWJsZVNvcnRJdGVtXG4gICAgICAgICAgICBjYWNoZUtleT17Y2FjaGVLZXlFeHRyYWN0b3IgPyBjYWNoZUtleUV4dHJhY3RvcihpdGVtKSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgIGNvbnRyb2xsZXI9e3RoaXMudHQuY29udHJvbGxlcn1cbiAgICAgICAgICAgIGl0ZW09e2l0ZW19XG4gICAgICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgICAgIGtleT17a2V5RXh0cmFjdG9yKGl0ZW0pfVxuICAgICAgICAgICAgb25JdGVtTW92ZWQ9e3RoaXMucHJvcHMub25JdGVtTW92ZWR9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXtyZW5kZXJJdGVtfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0FuaW1hdGVkLlZpZXc+XG4gICAgKVxuICB9XG5cbiAgb25EcmFnSXRlbVN0YXJ0ID0gKHtpdGVtRGF0YX0pID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkRyYWdJdGVtU3RhcnQpIHtcbiAgICAgIHRoaXMucC5vbkRyYWdJdGVtU3RhcnQoe2l0ZW1EYXRhfSlcbiAgICB9XG4gIH1cblxuICBvbkRyYWdJdGVtRW5kID0gKGFyZ3MpID0+IHtcbiAgICBpZiAoYXJncy50b1Bvc2l0aW9uICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnAub25SZW9yZGVyZWQoYXJncylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vbkRyYWdJdGVtRW5kKSB7XG4gICAgICB0aGlzLnAub25EcmFnSXRlbUVuZChhcmdzKVxuICAgIH1cbiAgfVxufSkpXG4iXX0=
@@ -1,204 +1,138 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- var desc = Object.getOwnPropertyDescriptor(m, k);
20
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
- desc = { enumerable: true, get: function() { return m[k]; } };
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { useMemo } from "react";
3
+ import { Animated, Easing, PanResponder } from "react-native";
4
+ import { shapeComponent, ShapeComponent } from "set-state-compare/build/shape-component.js";
5
+ import EventEmitter from "events";
6
+ import memo from "set-state-compare/build/memo.js";
7
+ import PropTypes from "prop-types";
8
+ import propTypesExact from "prop-types-exact";
9
+ import useEventEmitter from "../use-event-emitter.js";
10
+ export default memo(shapeComponent(class DraggableSortItem extends ShapeComponent {
11
+ static propTypes = propTypesExact({
12
+ cacheKey: PropTypes.string,
13
+ controller: PropTypes.object.isRequired,
14
+ item: PropTypes.any.isRequired,
15
+ itemIndex: PropTypes.number.isRequired,
16
+ onItemMoved: PropTypes.func,
17
+ renderItem: PropTypes.func.isRequired
18
+ });
19
+ initialLayout = null;
20
+ setup() {
21
+ this.useStates({
22
+ active: false,
23
+ dragging: false
24
+ });
25
+ this.events ||= new EventEmitter();
26
+ this.position ||= new Animated.ValueXY();
27
+ this.panResponder ||= PanResponder.create({
28
+ onStartShouldSetPanResponder: (e) => {
29
+ this.setState({ dragging: true });
30
+ this.p.controller.onDragStart({ item: this.p.item, itemIndex: this.p.itemIndex });
31
+ return false;
32
+ }
33
+ });
34
+ useEventEmitter(this.p.controller.getEvents(), "onDragStart", this.tt.onDragStart);
35
+ useEventEmitter(this.p.controller.getEvents(), "onDragEndAnimation", this.tt.onDragEndAnimation);
36
+ useEventEmitter(this.tt.events, "move", this.tt.onMove);
37
+ useEventEmitter(this.tt.events, "moveToPosition", this.tt.onMoveToPosition);
38
+ useEventEmitter(this.tt.events, "resetPosition", this.tt.onResetPosition);
22
39
  }
23
- Object.defineProperty(o, k2, desc);
24
- }) : (function(o, m, k, k2) {
25
- if (k2 === undefined) k2 = k;
26
- o[k2] = m[k];
27
- }));
28
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
- Object.defineProperty(o, "default", { enumerable: true, value: v });
30
- }) : function(o, v) {
31
- o["default"] = v;
32
- });
33
- var __importStar = (this && this.__importStar) || (function () {
34
- var ownKeys = function(o) {
35
- ownKeys = Object.getOwnPropertyNames || function (o) {
36
- var ar = [];
37
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
38
- return ar;
39
- };
40
- return ownKeys(o);
40
+ render() {
41
+ const { item, renderItem } = this.p;
42
+ const { active } = this.s;
43
+ const style = useMemo(() => {
44
+ const style = {
45
+ transform: this.tt.position.getTranslateTransform()
46
+ };
47
+ if (active) {
48
+ style.backgroundColor = "#fff";
49
+ style.elevation = 2;
50
+ style.zIndex = 99999;
51
+ }
52
+ return style;
53
+ }, [active]);
54
+ return (_jsx(Animated.View, { dataSet: this.draggableSortItemDataSet ||= { component: "draggable-sort/item" }, onLayout: this.tt.onLayout, style: style, children: renderItem({ isActive: active, item, touchProps: this.tt.panResponder.panHandlers }) }));
55
+ }
56
+ onDragStart = ({ itemData }) => {
57
+ const newState = { dragging: true };
58
+ if (itemData.index == this.p.itemIndex) {
59
+ newState.active = true;
60
+ this.baseXAtStartedDragging = this.getBaseX();
61
+ }
62
+ this.setState(newState);
41
63
  };
42
- return function (mod) {
43
- if (mod && mod.__esModule) return mod;
44
- var result = {};
45
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
46
- __setModuleDefault(result, mod);
47
- return result;
64
+ onDragEndAnimation = () => this.setState({ active: false, dragging: false });
65
+ onLayout = (e) => {
66
+ const { controller, item, itemIndex } = this.p;
67
+ controller.onItemLayout({ events: this.tt.events, index: itemIndex, item, layout: e.nativeEvent.layout });
68
+ if (!this.tt.initialLayout) {
69
+ this.initialLayout = e.nativeEvent.layout;
70
+ }
48
71
  };
49
- })();
50
- var __importDefault = (this && this.__importDefault) || function (mod) {
51
- return (mod && mod.__esModule) ? mod : { "default": mod };
52
- };
53
- var _a;
54
- Object.defineProperty(exports, "__esModule", { value: true });
55
- var jsx_runtime_1 = require("react/jsx-runtime");
56
- var react_1 = __importStar(require("react"));
57
- var react_native_1 = require("react-native");
58
- var shape_component_js_1 = require("set-state-compare/build/shape-component.js");
59
- var events_1 = __importDefault(require("events"));
60
- var memo_js_1 = __importDefault(require("set-state-compare/build/memo.js"));
61
- var prop_types_1 = __importDefault(require("prop-types"));
62
- var prop_types_exact_1 = __importDefault(require("prop-types-exact"));
63
- var use_event_emitter_js_1 = __importDefault(require("../use-event-emitter.js"));
64
- exports.default = (0, memo_js_1.default)((0, shape_component_js_1.shapeComponent)((_a = /** @class */ (function (_super) {
65
- __extends(DraggableSortItem, _super);
66
- function DraggableSortItem() {
67
- var _this = _super !== null && _super.apply(this, arguments) || this;
68
- _this.initialLayout = null;
69
- _this.onDragStart = function (_b) {
70
- var itemData = _b.itemData;
71
- var newState = { dragging: true };
72
- if (itemData.index == _this.p.itemIndex) {
73
- newState.active = true;
74
- _this.baseXAtStartedDragging = _this.getBaseX();
75
- }
76
- _this.setState(newState);
77
- };
78
- _this.onDragEndAnimation = function () { return _this.setState({ active: false, dragging: false }); };
79
- _this.onLayout = function (e) {
80
- var _b = _this.p, controller = _b.controller, item = _b.item, itemIndex = _b.itemIndex;
81
- controller.onItemLayout({ events: _this.tt.events, index: itemIndex, item: item, layout: e.nativeEvent.layout });
82
- if (!_this.tt.initialLayout) {
83
- _this.initialLayout = e.nativeEvent.layout;
84
- }
85
- };
86
- _this.onMove = function (_b) {
87
- var gestate = _b.gestate;
88
- var x = gestate.dx + _this.tt.baseXAtStartedDragging - _this.tt.initialLayout.x;
89
- var y = _this.tt.initialLayout.y;
90
- _this.tt.position.setValue({ x: x, y: y });
91
- if (_this.props.onItemMoved) {
92
- _this.p.onItemMoved({ itemIndex: _this.p.itemIndex, x: x, y: y });
93
- }
94
- };
95
- _this.onMoveToPosition = function (_b) {
96
- var x = _b.x, y = _b.y;
97
- var calculatedXFromStartingPosition = x - _this.tt.initialLayout.x;
98
- var animationArgs = {
99
- duration: 200,
100
- easing: react_native_1.Easing.inOut(react_native_1.Easing.linear),
101
- toValue: {
102
- x: calculatedXFromStartingPosition,
103
- y: y
104
- },
105
- useNativeDriver: true,
106
- };
107
- var animationEventArgs = { animationArgs: animationArgs, animationType: "moveToPosition", item: _this.p.item };
108
- _this.p.controller.events.emit("onAnimationStart", animationEventArgs);
109
- react_native_1.Animated
110
- .timing(_this.tt.position, animationArgs)
111
- .start(function () {
112
- _this.p.controller.events.emit("onAnimationEnd", animationEventArgs);
113
- });
114
- if (_this.props.onItemMoved) {
115
- _this.p.onItemMoved({
116
- animationArgs: animationArgs,
117
- itemIndex: _this.p.itemIndex,
118
- x: calculatedXFromStartingPosition,
119
- y: y
120
- });
121
- }
122
- };
123
- _this.getBaseX = function () { return _this.p.controller.getItemDataForIndex(_this.p.itemIndex).baseX; };
124
- _this.onResetPosition = function (args) {
125
- var baseX = _this.getBaseX() - _this.tt.initialLayout.x;
126
- var animationArgs = {
127
- duration: 200,
128
- easing: react_native_1.Easing.inOut(react_native_1.Easing.linear),
129
- toValue: {
130
- x: baseX,
131
- y: 0
132
- },
133
- useNativeDriver: true,
134
- };
135
- var animationEventArgs = { animationArgs: animationArgs, animationType: "resetPosition", item: _this.p.item };
136
- _this.p.controller.events.emit("onAnimationStart", animationEventArgs);
137
- react_native_1.Animated
138
- .timing(_this.tt.position, animationArgs)
139
- .start(function () {
140
- _this.p.controller.events.emit("onAnimationEnd", animationEventArgs);
141
- if (args === null || args === void 0 ? void 0 : args.callback)
142
- args.callback();
143
- });
144
- if (_this.props.onItemMoved) {
145
- _this.p.onItemMoved({
146
- animationArgs: animationArgs,
147
- itemIndex: _this.p.itemIndex,
148
- x: baseX,
149
- y: 0
150
- });
151
- }
152
- };
153
- return _this;
72
+ onMove = ({ gestate }) => {
73
+ const x = gestate.dx + this.tt.baseXAtStartedDragging - this.tt.initialLayout.x;
74
+ const y = this.tt.initialLayout.y;
75
+ this.tt.position.setValue({ x, y });
76
+ if (this.props.onItemMoved) {
77
+ this.p.onItemMoved({ itemIndex: this.p.itemIndex, x, y });
154
78
  }
155
- DraggableSortItem.prototype.setup = function () {
156
- var _this = this;
157
- this.useStates({
158
- active: false,
159
- dragging: false
160
- });
161
- this.events || (this.events = new events_1.default());
162
- this.position || (this.position = new react_native_1.Animated.ValueXY());
163
- this.panResponder || (this.panResponder = react_native_1.PanResponder.create({
164
- onStartShouldSetPanResponder: function (e) {
165
- _this.setState({ dragging: true });
166
- _this.p.controller.onDragStart({ item: _this.p.item, itemIndex: _this.p.itemIndex });
167
- return false;
168
- }
169
- }));
170
- (0, use_event_emitter_js_1.default)(this.p.controller.getEvents(), "onDragStart", this.tt.onDragStart);
171
- (0, use_event_emitter_js_1.default)(this.p.controller.getEvents(), "onDragEndAnimation", this.tt.onDragEndAnimation);
172
- (0, use_event_emitter_js_1.default)(this.tt.events, "move", this.tt.onMove);
173
- (0, use_event_emitter_js_1.default)(this.tt.events, "moveToPosition", this.tt.onMoveToPosition);
174
- (0, use_event_emitter_js_1.default)(this.tt.events, "resetPosition", this.tt.onResetPosition);
79
+ };
80
+ onMoveToPosition = ({ x, y }) => {
81
+ const calculatedXFromStartingPosition = x - this.tt.initialLayout.x;
82
+ const animationArgs = {
83
+ duration: 200,
84
+ easing: Easing.inOut(Easing.linear),
85
+ toValue: {
86
+ x: calculatedXFromStartingPosition,
87
+ y
88
+ },
89
+ useNativeDriver: true,
175
90
  };
176
- DraggableSortItem.prototype.render = function () {
177
- var _this = this;
178
- var _b = this.p, item = _b.item, renderItem = _b.renderItem;
179
- var active = this.s.active;
180
- var style = (0, react_1.useMemo)(function () {
181
- var style = {
182
- transform: _this.tt.position.getTranslateTransform()
183
- };
184
- if (active) {
185
- style.backgroundColor = "#fff";
186
- style.elevation = 2;
187
- style.zIndex = 99999;
188
- }
189
- return style;
190
- }, [active]);
191
- return ((0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { dataSet: this.draggableSortItemDataSet || (this.draggableSortItemDataSet = { component: "draggable-sort/item" }), onLayout: this.tt.onLayout, style: style, children: renderItem({ isActive: active, item: item, touchProps: this.tt.panResponder.panHandlers }) }));
91
+ const animationEventArgs = { animationArgs, animationType: "moveToPosition", item: this.p.item };
92
+ this.p.controller.events.emit("onAnimationStart", animationEventArgs);
93
+ Animated
94
+ .timing(this.tt.position, animationArgs)
95
+ .start(() => {
96
+ this.p.controller.events.emit("onAnimationEnd", animationEventArgs);
97
+ });
98
+ if (this.props.onItemMoved) {
99
+ this.p.onItemMoved({
100
+ animationArgs,
101
+ itemIndex: this.p.itemIndex,
102
+ x: calculatedXFromStartingPosition,
103
+ y
104
+ });
105
+ }
106
+ };
107
+ getBaseX = () => this.p.controller.getItemDataForIndex(this.p.itemIndex).baseX;
108
+ onResetPosition = (args) => {
109
+ const baseX = this.getBaseX() - this.tt.initialLayout.x;
110
+ const animationArgs = {
111
+ duration: 200,
112
+ easing: Easing.inOut(Easing.linear),
113
+ toValue: {
114
+ x: baseX,
115
+ y: 0
116
+ },
117
+ useNativeDriver: true,
192
118
  };
193
- return DraggableSortItem;
194
- }(shape_component_js_1.ShapeComponent)),
195
- _a.propTypes = (0, prop_types_exact_1.default)({
196
- cacheKey: prop_types_1.default.string,
197
- controller: prop_types_1.default.object.isRequired,
198
- item: prop_types_1.default.any.isRequired,
199
- itemIndex: prop_types_1.default.number.isRequired,
200
- onItemMoved: prop_types_1.default.func,
201
- renderItem: prop_types_1.default.func.isRequired
202
- }),
203
- _a)));
204
- //# sourceMappingURL=item.js.map
119
+ const animationEventArgs = { animationArgs, animationType: "resetPosition", item: this.p.item };
120
+ this.p.controller.events.emit("onAnimationStart", animationEventArgs);
121
+ Animated
122
+ .timing(this.tt.position, animationArgs)
123
+ .start(() => {
124
+ this.p.controller.events.emit("onAnimationEnd", animationEventArgs);
125
+ if (args?.callback)
126
+ args.callback();
127
+ });
128
+ if (this.props.onItemMoved) {
129
+ this.p.onItemMoved({
130
+ animationArgs,
131
+ itemIndex: this.p.itemIndex,
132
+ x: baseX,
133
+ y: 0
134
+ });
135
+ }
136
+ };
137
+ }));
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiZHJhZ2dhYmxlLXNvcnQvaXRlbS5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUMsT0FBTyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQ3BDLE9BQU8sRUFBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUMzRCxPQUFPLEVBQUMsY0FBYyxFQUFFLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pGLE9BQU8sWUFBWSxNQUFNLFFBQVEsQ0FBQTtBQUNqQyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxlQUFlLE1BQU0seUJBQXlCLENBQUE7QUFFckQsZUFBZSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0saUJBQWtCLFNBQVEsY0FBYztJQUMvRSxNQUFNLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxRQUFRLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDMUIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUN2QyxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVO1FBQzlCLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDdEMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQzNCLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7S0FDdEMsQ0FBQyxDQUFBO0lBRUYsYUFBYSxHQUFHLElBQUksQ0FBQTtJQUVwQixLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFD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UUFFckUsUUFBUTthQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUM7YUFDdkMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtZQUNuRSxJQUFJLElBQUksRUFBRSxRQUFRO2dCQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUNyQyxDQUFDLENBQUMsQ0FBQTtRQUVKLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztnQkFDakIsYUFBYTtnQkFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUMzQixDQUFDLEVBQUUsS0FBSztnQkFDUixDQUFDLEVBQUUsQ0FBQzthQUNMLENBQUMsQ0FBQTtRQUNKLENBQUM7SUFDSCxDQUFDLENBQUE7Q0FDRixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge0FuaW1hdGVkLCBFYXNpbmcsIFBhblJlc3BvbmRlcn0gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50LCBTaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gXCJldmVudHNcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwiLi4vdXNlLWV2ZW50LWVtaXR0ZXIuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIERyYWdnYWJsZVNvcnRJdGVtIGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGNhY2hlS2V5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGNvbnRyb2xsZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBpdGVtOiBQcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQsXG4gICAgaXRlbUluZGV4OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgb25JdGVtTW92ZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHJlbmRlckl0ZW06IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgfSlcblxuICBpbml0aWFsTGF5b3V0ID0gbnVsbFxuXG4gIHNldHVwKCkge1xuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICBkcmFnZ2luZzogZmFsc2VcbiAgICB9KVxuXG4gICAgdGhpcy5ldmVudHMgfHw9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICAgIHRoaXMucG9zaXRpb24gfHw9IG5ldyBBbmltYXRlZC5WYWx1ZVhZKClcbiAgICB0aGlzLnBhblJlc3BvbmRlciB8fD0gUGFuUmVzcG9uZGVyLmNyZWF0ZSh7XG4gICAgICBvblN0YXJ0U2hvdWxkU2V0UGFuUmVzcG9uZGVyOiAoZSwgKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2RyYWdnaW5nOiB0cnVlfSlcbiAgICAgICAgdGhpcy5wLmNvbnRyb2xsZXIub25EcmFnU3RhcnQoe2l0ZW06IHRoaXMucC5pdGVtLCBpdGVtSW5kZXg6IHRoaXMucC5pdGVtSW5kZXh9KVxuXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy5wLmNvbnRyb2xsZXIuZ2V0RXZlbnRzKCksIFwib25EcmFnU3RhcnRcIiwgdGhpcy50dC5vbkRyYWdTdGFydClcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy5wLmNvbnRyb2xsZXIuZ2V0RXZlbnRzKCksIFwib25EcmFnRW5kQW5pbWF0aW9uXCIsIHRoaXMudHQub25EcmFnRW5kQW5pbWF0aW9uKVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmV2ZW50cywgXCJtb3ZlXCIsIHRoaXMudHQub25Nb3ZlKVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmV2ZW50cywgXCJtb3ZlVG9Qb3NpdGlvblwiLCB0aGlzLnR0Lm9uTW92ZVRvUG9zaXRpb24pXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMudHQuZXZlbnRzLCBcInJlc2V0UG9zaXRpb25cIiwgdGhpcy50dC5vblJlc2V0UG9zaXRpb24pXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2l0ZW0sIHJlbmRlckl0ZW19ID0gdGhpcy5wXG4gICAgY29uc3Qge2FjdGl2ZX0gPSB0aGlzLnNcbiAgICBjb25zdCBzdHlsZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgICAgIHRyYW5zZm9ybTogdGhpcy50dC5wb3NpdGlvbi5nZXRUcmFuc2xhdGVUcmFuc2Zvcm0oKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgIHN0eWxlLmJhY2tncm91bmRDb2xvciA9IFwiI2ZmZlwiXG4gICAgICAgICAgc3R5bGUuZWxldmF0aW9uID0gMlxuICAgICAgICAgIHN0eWxlLnpJbmRleCA9IDk5OTk5XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3R5bGVcbiAgICAgIH0sXG4gICAgICBbYWN0aXZlXVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8QW5pbWF0ZWQuVmlldyBkYXRhU2V0PXt0aGlzLmRyYWdnYWJsZVNvcnRJdGVtRGF0YVNldCB8fD0ge2NvbXBvbmVudDogXCJkcmFnZ2FibGUtc29ydC9pdGVtXCJ9fSBvbkxheW91dD17dGhpcy50dC5vbkxheW91dH0gc3R5bGU9e3N0eWxlfT5cbiAgICAgICAge3JlbmRlckl0ZW0oe2lzQWN0aXZlOiBhY3RpdmUsIGl0ZW0sIHRvdWNoUHJvcHM6IHRoaXMudHQucGFuUmVzcG9uZGVyLnBhbkhhbmRsZXJzfSl9XG4gICAgICA8L0FuaW1hdGVkLlZpZXc+XG4gICAgKVxuICB9XG5cbiAgb25EcmFnU3RhcnQgPSAoe2l0ZW1EYXRhfSkgPT4ge1xuICAgIGNvbnN0IG5ld1N0YXRlID0ge2RyYWdnaW5nOiB0cnVlfVxuXG4gICAgaWYgKGl0ZW1EYXRhLmluZGV4ID09IHRoaXMucC5pdGVtSW5kZXgpIHtcbiAgICAgIG5ld1N0YXRlLmFjdGl2ZSA9IHRydWVcbiAgICAgIHRoaXMuYmFzZVhBdFN0YXJ0ZWREcmFnZ2luZyA9IHRoaXMuZ2V0QmFzZVgoKVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpXG4gIH1cblxuICBvbkRyYWdFbmRBbmltYXRpb24gPSAoKSA9PiB0aGlzLnNldFN0YXRlKHthY3RpdmU6IGZhbHNlLCBkcmFnZ2luZzogZmFsc2V9KVxuXG4gIG9uTGF5b3V0ID0gKGUpID0+IHtcbiAgICBjb25zdCB7Y29udHJvbGxlciwgaXRlbSwgaXRlbUluZGV4fSA9IHRoaXMucFxuXG4gICAgY29udHJvbGxlci5vbkl0ZW1MYXlvdXQoe2V2ZW50czogdGhpcy50dC5ldmVudHMsIGluZGV4OiBpdGVtSW5kZXgsIGl0ZW0sIGxheW91dDogZS5uYXRpdmVFdmVudC5sYXlvdXR9KVxuXG4gICAgaWYgKCF0aGlzLnR0LmluaXRpYWxMYXlvdXQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbExheW91dCA9IGUubmF0aXZlRXZlbnQubGF5b3V0XG4gICAgfVxuICB9XG5cbiAgb25Nb3ZlID0gKHtnZXN0YXRlfSkgPT4ge1xuICAgIGNvbnN0IHggPSBnZXN0YXRlLmR4ICsgdGhpcy50dC5iYXNlWEF0U3RhcnRlZERyYWdnaW5nIC0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnhcbiAgICBjb25zdCB5ID0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnlcblxuICAgIHRoaXMudHQucG9zaXRpb24uc2V0VmFsdWUoe3gsIHl9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25JdGVtTW92ZWQpIHtcbiAgICAgIHRoaXMucC5vbkl0ZW1Nb3ZlZCh7aXRlbUluZGV4OiB0aGlzLnAuaXRlbUluZGV4LCB4LCB5fSlcbiAgICB9XG4gIH1cblxuICBvbk1vdmVUb1Bvc2l0aW9uID0gKHt4LCB5fSkgPT4ge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRYRnJvbVN0YXJ0aW5nUG9zaXRpb24gPSB4IC0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnhcbiAgICBjb25zdCBhbmltYXRpb25BcmdzID0ge1xuICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgIGVhc2luZzogRWFzaW5nLmluT3V0KEVhc2luZy5saW5lYXIpLFxuICAgICAgdG9WYWx1ZToge1xuICAgICAgICB4OiBjYWxjdWxhdGVkWEZyb21TdGFydGluZ1Bvc2l0aW9uLFxuICAgICAgICB5XG4gICAgICB9LFxuICAgICAgdXNlTmF0aXZlRHJpdmVyOiB0cnVlLFxuICAgIH1cbiAgICBjb25zdCBhbmltYXRpb25FdmVudEFyZ3MgPSB7YW5pbWF0aW9uQXJncywgYW5pbWF0aW9uVHlwZTogXCJtb3ZlVG9Qb3NpdGlvblwiLCBpdGVtOiB0aGlzLnAuaXRlbX1cblxuICAgIHRoaXMucC5jb250cm9sbGVyLmV2ZW50cy5lbWl0KFwib25BbmltYXRpb25TdGFydFwiLCBhbmltYXRpb25FdmVudEFyZ3MpXG5cbiAgICBBbmltYXRlZFxuICAgICAgLnRpbWluZyh0aGlzLnR0LnBvc2l0aW9uLCBhbmltYXRpb25BcmdzKVxuICAgICAgLnN0YXJ0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wLmNvbnRyb2xsZXIuZXZlbnRzLmVtaXQoXCJvbkFuaW1hdGlvbkVuZFwiLCBhbmltYXRpb25FdmVudEFyZ3MpXG4gICAgICB9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25JdGVtTW92ZWQpIHtcbiAgICAgIHRoaXMucC5vbkl0ZW1Nb3ZlZCh7XG4gICAgICAgIGFuaW1hdGlvbkFyZ3MsXG4gICAgICAgIGl0ZW1JbmRleDogdGhpcy5wLml0ZW1JbmRleCxcbiAgICAgICAgeDogY2FsY3VsYXRlZFhGcm9tU3RhcnRpbmdQb3NpdGlvbixcbiAgICAgICAgeVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBnZXRCYXNlWCA9ICgpID0+IHRoaXMucC5jb250cm9sbGVyLmdldEl0ZW1EYXRhRm9ySW5kZXgodGhpcy5wLml0ZW1JbmRleCkuYmFzZVhcblxuICBvblJlc2V0UG9zaXRpb24gPSAoYXJncykgPT4ge1xuICAgIGNvbnN0IGJhc2VYID0gdGhpcy5nZXRCYXNlWCgpIC0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnhcbiAgICBjb25zdCBhbmltYXRpb25BcmdzID0ge1xuICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgIGVhc2luZzogRWFzaW5nLmluT3V0KEVhc2luZy5saW5lYXIpLFxuICAgICAgdG9WYWx1ZToge1xuICAgICAgICB4OiBiYXNlWCxcbiAgICAgICAgeTogMFxuICAgICAgfSxcbiAgICAgIHVzZU5hdGl2ZURyaXZlcjogdHJ1ZSxcbiAgICB9XG4gICAgY29uc3QgYW5pbWF0aW9uRXZlbnRBcmdzID0ge2FuaW1hdGlvbkFyZ3MsIGFuaW1hdGlvblR5cGU6IFwicmVzZXRQb3NpdGlvblwiLCBpdGVtOiB0aGlzLnAuaXRlbX1cblxuICAgIHRoaXMucC5jb250cm9sbGVyLmV2ZW50cy5lbWl0KFwib25BbmltYXRpb25TdGFydFwiLCBhbmltYXRpb25FdmVudEFyZ3MpXG5cbiAgICBBbmltYXRlZFxuICAgICAgLnRpbWluZyh0aGlzLnR0LnBvc2l0aW9uLCBhbmltYXRpb25BcmdzKVxuICAgICAgLnN0YXJ0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wLmNvbnRyb2xsZXIuZXZlbnRzLmVtaXQoXCJvbkFuaW1hdGlvbkVuZFwiLCBhbmltYXRpb25FdmVudEFyZ3MpXG4gICAgICAgIGlmIChhcmdzPy5jYWxsYmFjaykgYXJncy5jYWxsYmFjaygpXG4gICAgICB9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25JdGVtTW92ZWQpIHtcbiAgICAgIHRoaXMucC5vbkl0ZW1Nb3ZlZCh7XG4gICAgICAgIGFuaW1hdGlvbkFyZ3MsXG4gICAgICAgIGl0ZW1JbmRleDogdGhpcy5wLml0ZW1JbmRleCxcbiAgICAgICAgeDogYmFzZVgsXG4gICAgICAgIHk6IDBcbiAgICAgIH0pXG4gICAgfVxuICB9XG59KSlcbiJdfQ==