@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.
- package/{.eslintrc.cjs → .eslintrc.js} +4 -0
- package/README.md +35 -0
- package/android/build.gradle +43 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/expo/modules/api_maker/ApiMakerModule.kt +50 -0
- package/android/src/main/java/expo/modules/api_maker/ApiMakerView.kt +30 -0
- package/build/api.js +120 -0
- package/build/attribute-not-loaded-error.js +2 -0
- package/build/base-component.js +5 -0
- package/build/base-error.js +33 -0
- package/build/base-model/attribute.js +25 -0
- package/build/base-model/column.js +11 -0
- package/build/base-model/reflection.js +14 -0
- package/build/base-model/scope.js +11 -0
- package/build/base-model.js +828 -0
- package/build/bootstrap/attribute-row/index.js +105 -0
- package/build/bootstrap/attribute-rows.js +31 -0
- package/build/bootstrap/card.js +138 -0
- package/build/bootstrap/checkbox.js +97 -0
- package/build/bootstrap/checkboxes.js +183 -0
- package/build/bootstrap/index.js +2 -0
- package/build/bootstrap/input.js +128 -0
- package/build/bootstrap/invalid-feedback.js +27 -0
- package/build/bootstrap/paginate.js +150 -0
- package/build/bootstrap/radio-buttons.js +72 -0
- package/build/bootstrap/select.js +88 -0
- package/build/bootstrap/sort-link.js +130 -0
- package/build/cable-connection-pool.js +128 -0
- package/build/cable-subscription-pool.js +207 -0
- package/build/cable-subscription.js +21 -0
- package/build/cache-key-generator.js +81 -0
- package/build/can-can.js +134 -0
- package/build/channels-consumer.js +3 -0
- package/build/collection-loader.js +48 -0
- package/build/collection.js +279 -0
- package/build/command-submit-data.js +81 -0
- package/build/commands-pool.js +195 -0
- package/build/compose.js +9 -0
- package/build/config.js +53 -0
- package/build/custom-error.js +5 -0
- package/build/data-set-to-attributes.js +10 -0
- package/build/deserializer.js +56 -0
- package/build/destroy-error.js +5 -0
- package/build/devise.js +109 -0
- package/build/draggable-sort/controller.js +136 -0
- package/build/draggable-sort/index.js +114 -0
- package/build/draggable-sort/item.js +188 -0
- package/build/error-logger.js +101 -0
- package/build/error-messages.js +13 -0
- package/build/event-connection.js +32 -0
- package/build/event-model-class.js +24 -0
- package/build/events.js +5 -0
- package/build/form.js +83 -0
- package/build/index.js +3 -0
- package/build/inputs/attachment.js +121 -0
- package/build/inputs/auto-submit.js +36 -0
- package/build/inputs/checkbox.js +145 -0
- package/build/inputs/checkboxes.js +111 -0
- package/build/inputs/id-for-component.js +15 -0
- package/build/inputs/input-wrapper.js +18 -0
- package/build/inputs/input.js +230 -0
- package/build/inputs/money.js +179 -0
- package/build/inputs/name-for-component.js +13 -0
- package/build/inputs/select.js +92 -0
- package/build/instance-of-class-name.js +23 -0
- package/build/key-value-store.js +53 -0
- package/build/link.js +68 -0
- package/build/logger.js +30 -0
- package/build/modal.js +37 -0
- package/build/model-class-require.js +13 -0
- package/build/model-events.js +30 -0
- package/build/model-name.js +28 -0
- package/build/model-prop-type.js +101 -0
- package/build/model-recipes-loader.js +32 -0
- package/build/model-recipes-model-loader.js +357 -0
- package/build/models-response-reader.js +40 -0
- package/build/models.js +8 -0
- package/build/money-formatter.js +77 -0
- package/build/not-loaded-error.js +2 -0
- package/build/params.js +60 -0
- package/build/preloaded.js +38 -0
- package/build/resize-observer.js +11 -0
- package/build/result.js +13 -0
- package/build/router/route.js +262 -0
- package/build/router/switch.js +72 -0
- package/build/router.js +57 -0
- package/build/routes-native.js +202 -0
- package/build/routes.js +50 -0
- package/build/run-last.js +35 -0
- package/build/serializer.js +63 -0
- package/build/services.js +20 -0
- package/build/session-status-updater.js +126 -0
- package/build/source-maps-loader.js +171 -0
- package/build/super-admin/config-reader.js +84 -0
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
- package/build/super-admin/edit-page/edit-attribute-content.js +54 -0
- package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
- package/build/super-admin/edit-page/edit-attribute.js +76 -0
- package/build/super-admin/edit-page.js +120 -0
- package/build/super-admin/has-edit-config.js +12 -0
- package/build/super-admin/index-page.js +24 -0
- package/build/super-admin/index.js +180 -0
- package/build/super-admin/layout/header/index.js +151 -0
- package/build/super-admin/layout/index.js +109 -0
- package/build/super-admin/layout/menu/index.js +93 -0
- package/build/super-admin/layout/menu/menu-content.js +40 -0
- package/build/super-admin/layout/menu/menu-item.js +83 -0
- package/build/super-admin/layout/no-access.js +25 -0
- package/build/super-admin/model-class-table.js +61 -0
- package/build/super-admin/models.js +8 -0
- package/build/super-admin/show-nav.js +49 -0
- package/build/super-admin/show-page/belongs-to-attribute-row.js +28 -0
- package/build/super-admin/show-page/index.js +141 -0
- package/build/super-admin/show-reflection-actions.js +47 -0
- package/build/super-admin/show-reflection-link.js +46 -0
- package/build/super-admin/show-reflection-page.js +47 -0
- package/build/table/column-content.js +112 -0
- package/build/table/column-identifier.js +18 -0
- package/build/table/column-visible.js +7 -0
- package/build/table/components/column.js +20 -0
- package/build/table/components/flat-list.js +20 -0
- package/build/table/components/header.js +25 -0
- package/build/table/components/row.js +25 -0
- package/build/table/filters/attribute-element.js +43 -0
- package/build/table/filters/filter-form.js +392 -0
- package/build/table/filters/filter.js +89 -0
- package/build/table/filters/index.js +182 -0
- package/build/table/filters/load-search-modal.js +174 -0
- package/build/table/filters/reflection-element.js +36 -0
- package/build/table/filters/save-search-modal.js +86 -0
- package/build/table/filters/scope-element.js +41 -0
- package/build/table/header-column-content.js +67 -0
- package/build/table/header-column.js +144 -0
- package/build/table/header-select.js +104 -0
- package/build/table/model-callback-args.js +10 -0
- package/build/table/model-column.js +87 -0
- package/build/table/model-row.js +179 -0
- package/build/table/select-calculator.js +63 -0
- package/build/table/settings/column-row.js +97 -0
- package/build/table/settings/download-action.js +78 -0
- package/build/table/settings/index.js +92 -0
- package/build/table/table-settings.js +219 -0
- package/build/table/table.js +972 -0
- package/build/table/use-sorting.js +34 -0
- package/build/table/widths.js +75 -0
- package/build/table/worker-plugins-check-all-checkbox.js +125 -0
- package/build/table/worker-plugins-checkbox.js +115 -0
- package/build/translated-attributes.js +10 -0
- package/build/translated-collections.js +11 -0
- package/build/updated-attribute.js +76 -0
- package/build/url-encode.js +15 -0
- package/build/use-breakpoint.js +44 -0
- package/build/use-can-can.js +55 -0
- package/build/use-collection.js +225 -0
- package/build/use-created-event.js +52 -0
- package/build/use-current-user.js +73 -0
- package/build/use-destroyed-event.js +60 -0
- package/build/use-event-emitter.js +13 -0
- package/build/use-event-listener.js +16 -0
- package/build/use-input.js +140 -0
- package/build/use-model-event.js +60 -0
- package/build/use-model.js +169 -0
- package/build/use-resize-observer.js +23 -0
- package/build/use-router.js +102 -0
- package/build/use-screen-layout.js +39 -0
- package/build/use-updated-event.js +60 -0
- package/build/use-validation-errors.js +30 -0
- package/build/utils/card.js +51 -0
- package/build/utils/checkbox.js +48 -0
- package/build/utils/default-style.js +18 -0
- package/build/utils/modal.js +61 -0
- package/build/utils/text.js +18 -0
- package/build/validation-error.js +28 -0
- package/build/validation-errors.js +98 -0
- package/build/with-collection.js +13 -0
- package/build/with-current-user.js +9 -0
- package/build/with-model.js +14 -0
- package/build/with-router.js +21 -0
- package/expo-module.config.json +17 -0
- package/ios/ApiMaker.podspec +29 -0
- package/ios/ApiMakerModule.swift +48 -0
- package/ios/ApiMakerView.swift +38 -0
- package/package.json +35 -16
- package/src/{api.mjs → api.js} +5 -5
- package/src/{base-error.mjs → base-error.js} +1 -1
- package/src/base-model/{attribute.mjs → attribute.js} +1 -1
- package/src/base-model/{reflection.mjs → reflection.js} +1 -1
- package/src/{base-model.mjs → base-model.js} +14 -14
- package/src/bootstrap/attribute-row/index.jsx +2 -2
- package/src/bootstrap/attribute-rows.jsx +1 -1
- package/src/bootstrap/card.jsx +1 -1
- package/src/bootstrap/checkbox.jsx +1 -1
- package/src/bootstrap/checkboxes.jsx +1 -1
- package/src/bootstrap/input.jsx +1 -1
- package/src/bootstrap/paginate.jsx +2 -2
- package/src/bootstrap/sort-link.jsx +3 -3
- package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +3 -3
- package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +4 -4
- package/src/{cable-subscription.mjs → cable-subscription.js} +1 -1
- package/src/{can-can.mjs → can-can.js} +1 -1
- package/src/collection-loader.jsx +2 -2
- package/src/{collection.mjs → collection.js} +3 -3
- package/src/{commands-pool.mjs → commands-pool.js} +11 -11
- package/src/{custom-error.mjs → custom-error.js} +1 -1
- package/src/{deserializer.mjs → deserializer.js} +2 -2
- package/src/{destroy-error.mjs → destroy-error.js} +1 -1
- package/src/{devise.mjs → devise.js} +5 -9
- package/src/draggable-sort/index.jsx +3 -3
- package/src/draggable-sort/item.jsx +2 -2
- package/src/{error-logger.mjs → error-logger.js} +1 -1
- package/src/event-connection.jsx +1 -1
- package/src/event-model-class.jsx +1 -1
- package/src/form.jsx +1 -1
- package/src/index.js +3 -0
- package/src/inputs/attachment.jsx +2 -2
- package/src/inputs/checkbox.jsx +7 -6
- package/src/inputs/checkboxes.jsx +1 -1
- package/src/inputs/input-wrapper.jsx +1 -1
- package/src/inputs/input.jsx +8 -7
- package/src/inputs/money.jsx +3 -3
- package/src/inputs/select.jsx +1 -1
- package/src/{key-value-store.mjs → key-value-store.js} +1 -1
- package/src/link.jsx +2 -2
- package/src/modal.jsx +1 -1
- package/src/{model-class-require.mjs → model-class-require.js} +4 -2
- package/src/{model-events.mjs → model-events.js} +1 -1
- package/src/{model-name.mjs → model-name.js} +1 -1
- package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
- package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +2 -2
- package/src/{models-response-reader.mjs → models-response-reader.js} +2 -2
- package/src/models.js +7 -0
- package/src/{models.mjs.erb → models.js.erb} +1 -1
- package/src/{params.mjs → params.js} +2 -2
- package/src/{preloaded.mjs → preloaded.js} +1 -1
- package/src/resize-observer.jsx +1 -1
- package/src/router/route.jsx +1 -1
- package/src/router/switch.jsx +1 -1
- package/src/router.jsx +1 -1
- package/src/{routes-native.mjs → routes-native.js} +1 -1
- package/src/{services.mjs → services.js} +1 -1
- package/src/{session-status-updater.mjs → session-status-updater.js} +3 -3
- package/src/{source-maps-loader.mjs → source-maps-loader.js} +1 -1
- package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute-content.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute-input.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute.jsx +1 -1
- package/src/super-admin/edit-page.jsx +2 -2
- package/src/super-admin/has-edit-config.js +1 -1
- package/src/super-admin/index-page.jsx +1 -1
- package/src/super-admin/index.jsx +7 -7
- package/src/super-admin/layout/header/index.jsx +2 -2
- package/src/super-admin/layout/index.jsx +3 -3
- package/src/super-admin/layout/menu/index.jsx +3 -3
- package/src/super-admin/layout/menu/menu-content.jsx +2 -2
- package/src/super-admin/layout/menu/{menu-item/index.jsx → menu-item.jsx} +5 -6
- package/src/super-admin/layout/no-access.jsx +2 -2
- package/src/super-admin/model-class-table.jsx +3 -3
- package/src/super-admin/models.js +1 -1
- package/src/super-admin/show-nav.jsx +2 -2
- package/src/super-admin/show-page/belongs-to-attribute-row.jsx +1 -1
- package/src/super-admin/show-page/index.jsx +2 -2
- package/src/super-admin/show-reflection-actions.jsx +1 -1
- package/src/super-admin/show-reflection-link.jsx +1 -1
- package/src/super-admin/show-reflection-page.jsx +1 -1
- package/src/table/column-content.jsx +1 -1
- package/src/table/filters/filter-form.jsx +1 -1
- package/src/table/filters/index.jsx +5 -3
- package/src/table/filters/load-search-modal.jsx +6 -4
- package/src/table/filters/save-search-modal.jsx +4 -4
- package/src/table/header-select.jsx +1 -1
- package/src/table/model-column.jsx +1 -1
- package/src/table/model-row.jsx +2 -2
- package/src/table/{select-calculator.mjs → select-calculator.js} +1 -1
- package/src/table/settings/column-row.jsx +2 -2
- package/src/table/settings/download-action.jsx +3 -3
- package/src/table/settings/index.jsx +3 -3
- package/src/table/table-settings.js +5 -4
- package/src/table/table.jsx +8 -8
- package/src/table/{use-sorting.mjs → use-sorting.js} +1 -1
- package/src/table/worker-plugins-check-all-checkbox.jsx +2 -2
- package/src/table/worker-plugins-checkbox.jsx +2 -2
- package/src/{translated-collections.mjs → translated-collections.js} +1 -1
- package/src/updated-attribute.jsx +1 -1
- package/src/{use-breakpoint.mjs → use-breakpoint.js} +2 -2
- package/src/use-can-can.js +55 -0
- package/src/{use-collection.mjs → use-collection.js} +4 -4
- package/src/{use-created-event.mjs → use-created-event.js} +2 -2
- package/src/{use-current-user.mjs → use-current-user.js} +6 -5
- package/src/{use-destroyed-event.mjs → use-destroyed-event.js} +2 -2
- package/src/{use-input.mjs → use-input.js} +5 -5
- package/src/use-model-event.js +2 -2
- package/src/{use-model.mjs → use-model.js} +4 -4
- package/src/{use-resize-observer.mjs → use-resize-observer.js} +1 -1
- package/src/use-router.jsx +2 -2
- package/src/{use-updated-event.mjs → use-updated-event.js} +2 -2
- package/src/{use-validation-errors.mjs → use-validation-errors.js} +3 -3
- package/src/utils/checkbox.jsx +2 -2
- package/src/{validation-error.mjs → validation-error.js} +1 -1
- package/src/{validation-errors.mjs → validation-errors.js} +1 -1
- package/src/with-current-user.jsx +1 -1
- package/src/with-model.jsx +1 -1
- package/__tests__/base-model.test.mjs +0 -71
- package/__tests__/cable-connection-pool.test.mjs +0 -227
- package/__tests__/cable-subscription-pool.test.mjs +0 -27
- package/__tests__/can-can.test.mjs +0 -34
- package/__tests__/collection.test.mjs +0 -51
- package/__tests__/custom-error.test.mjs +0 -13
- package/__tests__/model-name.test.mjs +0 -34
- package/__tests__/model-prop-type.test.mjs +0 -113
- package/__tests__/params.test.mjs +0 -40
- package/__tests__/routes-native.test.mjs +0 -104
- package/__tests__/routes.test.mjs +0 -47
- package/__tests__/serializer.test.mjs +0 -30
- package/__tests__/support/task.mjs +0 -27
- package/__tests__/support/user.mjs +0 -32
- package/index.js +0 -1
- package/jest.config.js +0 -9
- package/src/event-created.jsx +0 -12
- package/src/event-destroyed.jsx +0 -25
- package/src/event-emitter-listener.jsx +0 -10
- package/src/event-listener.jsx +0 -25
- package/src/event-updated.jsx +0 -27
- package/src/super-admin/layout/menu/menu-item/style.scss +0 -10
- package/src/use-can-can.mjs +0 -48
- package/src/with-can-can.jsx +0 -12
- package/webpack.config.js +0 -15
- /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
- /package/src/base-model/{column.mjs → column.js} +0 -0
- /package/src/base-model/{scope.mjs → scope.js} +0 -0
- /package/src/{cache-key-generator.mjs → cache-key-generator.js} +0 -0
- /package/src/{channels-consumer.mjs → channels-consumer.js} +0 -0
- /package/src/{command-submit-data.mjs → command-submit-data.js} +0 -0
- /package/src/{config.mjs → config.js} +0 -0
- /package/src/{data-set-to-attributes.mjs → data-set-to-attributes.js} +0 -0
- /package/src/draggable-sort/{controller.mjs → controller.js} +0 -0
- /package/src/{error-messages.mjs → error-messages.js} +0 -0
- /package/src/{events.mjs → events.js} +0 -0
- /package/src/inputs/{auto-submit.mjs → auto-submit.js} +0 -0
- /package/src/inputs/{id-for-component.mjs → id-for-component.js} +0 -0
- /package/src/inputs/{name-for-component.mjs → name-for-component.js} +0 -0
- /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
- /package/src/{logger.mjs → logger.js} +0 -0
- /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
- /package/src/{money-formatter.mjs → money-formatter.js} +0 -0
- /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
- /package/src/{result.mjs → result.js} +0 -0
- /package/src/{routes.mjs → routes.js} +0 -0
- /package/src/{run-last.mjs → run-last.js} +0 -0
- /package/src/{serializer.mjs → serializer.js} +0 -0
- /package/src/table/{column-identifier.mjs → column-identifier.js} +0 -0
- /package/src/table/{column-visible.mjs → column-visible.js} +0 -0
- /package/src/table/{model-callback-args.mjs → model-callback-args.js} +0 -0
- /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
- /package/src/{url-encode.mjs → url-encode.js} +0 -0
- /package/src/{use-event-emitter.mjs → use-event-emitter.js} +0 -0
- /package/src/{use-event-listener.mjs → use-event-listener.js} +0 -0
- /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
|