@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.
- package/build/api.js +65 -213
- package/build/attribute-not-loaded-error.js +3 -26
- package/build/base-component.js +4 -27
- package/build/base-error.js +21 -46
- package/build/base-model/attribute.js +15 -22
- package/build/base-model/column.js +5 -9
- package/build/base-model/reflection.js +12 -52
- package/build/base-model/scope.js +9 -46
- package/build/base-model.js +584 -837
- package/build/bootstrap/attribute-row.js +88 -173
- package/build/bootstrap/attribute-rows.js +22 -51
- package/build/bootstrap/card.js +77 -160
- package/build/bootstrap/checkbox.js +54 -103
- package/build/bootstrap/checkboxes.js +117 -203
- package/build/bootstrap/index.js +1 -1
- package/build/bootstrap/input.js +81 -132
- package/build/bootstrap/invalid-feedback.js +19 -47
- package/build/bootstrap/paginate.js +100 -165
- package/build/bootstrap/radio-buttons.js +44 -81
- package/build/bootstrap/select.js +44 -91
- package/build/bootstrap/sort-link.js +69 -152
- package/build/cable-connection-pool.js +44 -66
- package/build/cable-subscription-pool.js +105 -162
- package/build/cable-subscription.js +10 -17
- package/build/cache-key-generator.js +28 -37
- package/build/can-can.js +81 -202
- package/build/channels-consumer.js +6 -11
- package/build/collection-loader.js +36 -54
- package/build/collection.d.ts.map +1 -1
- package/build/collection.js +160 -308
- package/build/command-submit-data.d.ts +1 -1
- package/build/command-submit-data.d.ts.map +1 -1
- package/build/command-submit-data.js +30 -39
- package/build/commands-pool.js +140 -216
- package/build/compose.js +4 -12
- package/build/config.js +21 -68
- package/build/custom-error.js +5 -30
- package/build/data-set-to-attributes.js +6 -42
- package/build/deserializer.js +27 -80
- package/build/destroy-error.js +5 -30
- package/build/devise.js +84 -188
- package/build/draggable-sort/controller.js +88 -111
- package/build/draggable-sort/index.js +68 -145
- package/build/draggable-sort/item.js +132 -198
- package/build/error-logger.js +79 -164
- package/build/error-messages.js +5 -8
- package/build/event-connection.js +24 -62
- package/build/event-emitter-listener.js +7 -24
- package/build/event-model-class.js +20 -47
- package/build/events.js +4 -9
- package/build/form.js +66 -154
- package/build/history-expo.js +13 -25
- package/build/history-react-native.js +15 -27
- package/build/history.js +3 -5
- package/build/index.js +3 -6
- package/build/inputs/attachment.js +72 -123
- package/build/inputs/auto-submit.js +16 -55
- package/build/inputs/checkbox.js +78 -167
- package/build/inputs/checkboxes.js +76 -159
- package/build/inputs/id-for-component.js +5 -41
- package/build/inputs/input-wrapper.js +8 -27
- package/build/inputs/input.js +159 -245
- package/build/inputs/money.js +124 -186
- package/build/inputs/name-for-component.js +5 -41
- package/build/inputs/select.js +69 -123
- package/build/instance-of-class-name.js +16 -21
- package/build/is-expo.js +9 -11
- package/build/key-value-store.js +52 -128
- package/build/link.js +52 -115
- package/build/logger.js +20 -26
- package/build/merge-styles.js +6 -10
- package/build/modal.js +15 -62
- package/build/model-class-require.js +9 -44
- package/build/model-events.js +25 -34
- package/build/model-name.js +16 -57
- package/build/model-prop-type.js +52 -63
- package/build/model-recipes-loader.js +17 -25
- package/build/model-recipes-model-loader.d.ts +1 -1
- package/build/model-recipes-model-loader.js +130 -208
- package/build/models-response-reader.js +25 -66
- package/build/models.js +6 -11
- package/build/money-formatter.d.ts +2 -2
- package/build/money-formatter.d.ts.map +1 -1
- package/build/money-formatter.js +46 -56
- package/build/not-loaded-error.js +3 -26
- package/build/params.js +32 -42
- package/build/preloaded.js +19 -59
- package/build/resize-observer.js +6 -12
- package/build/rest-props-validator.js +5 -7
- package/build/result.js +11 -15
- package/build/router/route.js +179 -312
- package/build/router/switch.js +56 -130
- package/build/router.js +34 -94
- package/build/routes-native.js +64 -148
- package/build/routes.js +26 -80
- package/build/run-last.js +20 -25
- package/build/serializer.js +29 -34
- package/build/services.js +10 -19
- package/build/session-status-updater.js +85 -184
- package/build/source-maps-loader.d.ts +37 -0
- package/build/source-maps-loader.d.ts.map +1 -0
- package/build/source-maps-loader.js +103 -225
- package/build/super-admin/config-reader.d.ts +2 -2
- package/build/super-admin/config-reader.js +42 -83
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +53 -115
- package/build/super-admin/edit-page/edit-attribute-content.js +47 -77
- package/build/super-admin/edit-page/edit-attribute-input.js +57 -119
- package/build/super-admin/edit-page/edit-attribute.js +40 -104
- package/build/super-admin/edit-page.js +88 -201
- package/build/super-admin/has-edit-config.js +7 -13
- package/build/super-admin/index-page.js +17 -44
- package/build/super-admin/index.js +87 -210
- package/build/super-admin/layout/header/index.js +91 -152
- package/build/super-admin/layout/index.js +70 -153
- package/build/super-admin/layout/menu/index.js +85 -161
- package/build/super-admin/layout/menu/menu-content.js +25 -85
- package/build/super-admin/layout/menu/menu-item.js +52 -102
- package/build/super-admin/layout/no-access.js +19 -45
- package/build/super-admin/model-class-table.js +45 -129
- package/build/super-admin/models.js +6 -42
- package/build/super-admin/show-nav.js +27 -89
- package/build/super-admin/show-page/belongs-to-attribute-row.js +18 -76
- package/build/super-admin/show-page/index.js +101 -187
- package/build/super-admin/show-reflection-actions.js +39 -100
- package/build/super-admin/show-reflection-link.js +27 -99
- package/build/super-admin/show-reflection-page.js +34 -97
- package/build/table/column-content.js +77 -121
- package/build/table/column-identifier.js +7 -11
- package/build/table/column-visible.js +2 -5
- package/build/table/components/column.js +13 -60
- package/build/table/components/flat-list.js +13 -60
- package/build/table/components/header.js +15 -62
- package/build/table/components/row.js +16 -63
- package/build/table/filters/attribute-element.js +34 -62
- package/build/table/filters/filter-form.js +280 -483
- package/build/table/filters/filter.js +45 -73
- package/build/table/filters/index.js +95 -139
- package/build/table/filters/load-search-modal.js +64 -212
- package/build/table/filters/reflection-element.js +27 -55
- package/build/table/filters/save-search-modal.js +44 -140
- package/build/table/filters/scope-element.js +28 -56
- package/build/table/header-column-content.js +33 -71
- package/build/table/header-column.js +89 -218
- package/build/table/header-select.js +45 -77
- package/build/table/model-callback-args.js +5 -41
- package/build/table/model-column.js +59 -144
- package/build/table/model-row.js +75 -187
- package/build/table/select-calculator.js +27 -86
- package/build/table/settings/column-row.js +66 -186
- package/build/table/settings/download-action.js +38 -74
- package/build/table/settings/index.js +38 -102
- package/build/table/table-settings.js +185 -323
- package/build/table/table.js +583 -781
- package/build/table/use-sorting.js +16 -35
- package/build/table/widths.js +32 -38
- package/build/table/worker-plugins-check-all-checkbox.js +77 -225
- package/build/table/worker-plugins-checkbox.js +74 -185
- package/build/translated-attributes.js +6 -11
- package/build/translated-collections.js +11 -20
- package/build/updated-attribute.js +47 -120
- package/build/url-encode.js +6 -12
- package/build/use-breakpoint.js +43 -95
- package/build/use-can-can.js +30 -92
- package/build/use-collection.js +119 -229
- package/build/use-created-event.js +27 -44
- package/build/use-current-user-context.js +57 -151
- package/build/use-current-user.js +14 -32
- package/build/use-destroyed-event.js +22 -43
- package/build/use-event-emitter.d.ts +1 -2
- package/build/use-event-emitter.d.ts.map +1 -1
- package/build/use-event-emitter.js +10 -16
- package/build/use-event-listener.js +13 -22
- package/build/use-input.js +49 -69
- package/build/use-model-event.js +22 -43
- package/build/use-model.js +96 -199
- package/build/use-resize-observer.js +11 -21
- package/build/use-router.js +65 -107
- package/build/use-screen-layout.js +17 -19
- package/build/use-styles.js +24 -75
- package/build/use-updated-event.js +22 -44
- package/build/use-validation-errors.js +12 -18
- package/build/utils/button.js +86 -136
- package/build/utils/card.js +31 -106
- package/build/utils/checkbox.js +51 -112
- package/build/utils/checkboxes.js +109 -182
- package/build/utils/default-style.js +29 -103
- package/build/utils/header.js +8 -35
- package/build/utils/icon.js +36 -117
- package/build/utils/invalid-feedback.js +16 -43
- package/build/utils/modal.js +25 -108
- package/build/utils/text.js +10 -37
- package/build/validation-error.js +31 -89
- package/build/validation-errors.js +61 -111
- package/build/with-api-maker.js +15 -67
- package/build/with-collection.js +14 -64
- package/build/with-current-user.js +7 -23
- package/build/with-model.js +11 -27
- package/build/with-router.js +8 -35
- package/package.json +4 -3
- package/build/api.js.map +0 -1
- package/build/attribute-not-loaded-error.js.map +0 -1
- package/build/base-component.js.map +0 -1
- package/build/base-error.js.map +0 -1
- package/build/base-model/attribute.js.map +0 -1
- package/build/base-model/column.js.map +0 -1
- package/build/base-model/reflection.js.map +0 -1
- package/build/base-model/scope.js.map +0 -1
- package/build/base-model.js.map +0 -1
- package/build/bootstrap/attribute-row.js.map +0 -1
- package/build/bootstrap/attribute-rows.js.map +0 -1
- package/build/bootstrap/card.js.map +0 -1
- package/build/bootstrap/checkbox.js.map +0 -1
- package/build/bootstrap/checkboxes.js.map +0 -1
- package/build/bootstrap/index.js.map +0 -1
- package/build/bootstrap/input.js.map +0 -1
- package/build/bootstrap/invalid-feedback.js.map +0 -1
- package/build/bootstrap/paginate.js.map +0 -1
- package/build/bootstrap/radio-buttons.js.map +0 -1
- package/build/bootstrap/select.js.map +0 -1
- package/build/bootstrap/sort-link.js.map +0 -1
- package/build/cable-connection-pool.js.map +0 -1
- package/build/cable-subscription-pool.js.map +0 -1
- package/build/cable-subscription.js.map +0 -1
- package/build/cache-key-generator.js.map +0 -1
- package/build/can-can.js.map +0 -1
- package/build/channels-consumer.js.map +0 -1
- package/build/collection-loader.js.map +0 -1
- package/build/collection.js.map +0 -1
- package/build/command-submit-data.js.map +0 -1
- package/build/commands-pool.js.map +0 -1
- package/build/compose.js.map +0 -1
- package/build/config.js.map +0 -1
- package/build/custom-error.js.map +0 -1
- package/build/data-set-to-attributes.js.map +0 -1
- package/build/deserializer.js.map +0 -1
- package/build/destroy-error.js.map +0 -1
- package/build/devise.js.map +0 -1
- package/build/draggable-sort/controller.js.map +0 -1
- package/build/draggable-sort/index.js.map +0 -1
- package/build/draggable-sort/item.js.map +0 -1
- package/build/error-logger.js.map +0 -1
- package/build/error-messages.js.map +0 -1
- package/build/event-connection.js.map +0 -1
- package/build/event-emitter-listener.js.map +0 -1
- package/build/event-model-class.js.map +0 -1
- package/build/events.js.map +0 -1
- package/build/form.js.map +0 -1
- package/build/history-expo.js.map +0 -1
- package/build/history-react-native.js.map +0 -1
- package/build/history.js.map +0 -1
- package/build/index.js.map +0 -1
- package/build/inputs/attachment.js.map +0 -1
- package/build/inputs/auto-submit.js.map +0 -1
- package/build/inputs/checkbox.js.map +0 -1
- package/build/inputs/checkboxes.js.map +0 -1
- package/build/inputs/id-for-component.js.map +0 -1
- package/build/inputs/input-wrapper.js.map +0 -1
- package/build/inputs/input.js.map +0 -1
- package/build/inputs/money.js.map +0 -1
- package/build/inputs/name-for-component.js.map +0 -1
- package/build/inputs/select.js.map +0 -1
- package/build/instance-of-class-name.js.map +0 -1
- package/build/is-expo.js.map +0 -1
- package/build/key-value-store.js.map +0 -1
- package/build/link.js.map +0 -1
- package/build/logger.js.map +0 -1
- package/build/merge-styles.js.map +0 -1
- package/build/modal.js.map +0 -1
- package/build/model-class-require.js.map +0 -1
- package/build/model-events.js.map +0 -1
- package/build/model-name.js.map +0 -1
- package/build/model-prop-type.js.map +0 -1
- package/build/model-recipes-loader.js.map +0 -1
- package/build/model-recipes-model-loader.js.map +0 -1
- package/build/models-response-reader.js.map +0 -1
- package/build/models.js.map +0 -1
- package/build/money-formatter.js.map +0 -1
- package/build/not-loaded-error.js.map +0 -1
- package/build/params.js.map +0 -1
- package/build/preloaded.js.map +0 -1
- package/build/resize-observer.js.map +0 -1
- package/build/rest-props-validator.js.map +0 -1
- package/build/result.js.map +0 -1
- package/build/router/route.js.map +0 -1
- package/build/router/switch.js.map +0 -1
- package/build/router.js.map +0 -1
- package/build/routes-native.js.map +0 -1
- package/build/routes.js.map +0 -1
- package/build/run-last.js.map +0 -1
- package/build/serializer.js.map +0 -1
- package/build/services.js.map +0 -1
- package/build/session-status-updater.js.map +0 -1
- package/build/source-maps-loader.js.map +0 -1
- package/build/super-admin/config-reader.js.map +0 -1
- package/build/super-admin/edit-page/edit-attribute-checkbox.js.map +0 -1
- package/build/super-admin/edit-page/edit-attribute-content.js.map +0 -1
- package/build/super-admin/edit-page/edit-attribute-input.js.map +0 -1
- package/build/super-admin/edit-page/edit-attribute.js.map +0 -1
- package/build/super-admin/edit-page.js.map +0 -1
- package/build/super-admin/has-edit-config.js.map +0 -1
- package/build/super-admin/index-page.js.map +0 -1
- package/build/super-admin/index.js.map +0 -1
- package/build/super-admin/layout/header/index.js.map +0 -1
- package/build/super-admin/layout/index.js.map +0 -1
- package/build/super-admin/layout/menu/index.js.map +0 -1
- package/build/super-admin/layout/menu/menu-content.js.map +0 -1
- package/build/super-admin/layout/menu/menu-item.js.map +0 -1
- package/build/super-admin/layout/no-access.js.map +0 -1
- package/build/super-admin/model-class-table.js.map +0 -1
- package/build/super-admin/models.js.map +0 -1
- package/build/super-admin/show-nav.js.map +0 -1
- package/build/super-admin/show-page/belongs-to-attribute-row.js.map +0 -1
- package/build/super-admin/show-page/index.js.map +0 -1
- package/build/super-admin/show-reflection-actions.js.map +0 -1
- package/build/super-admin/show-reflection-link.js.map +0 -1
- package/build/super-admin/show-reflection-page.js.map +0 -1
- package/build/table/column-content.js.map +0 -1
- package/build/table/column-identifier.js.map +0 -1
- package/build/table/column-visible.js.map +0 -1
- package/build/table/components/column.js.map +0 -1
- package/build/table/components/flat-list.js.map +0 -1
- package/build/table/components/header.js.map +0 -1
- package/build/table/components/row.js.map +0 -1
- package/build/table/filters/attribute-element.js.map +0 -1
- package/build/table/filters/filter-form.js.map +0 -1
- package/build/table/filters/filter.js.map +0 -1
- package/build/table/filters/index.js.map +0 -1
- package/build/table/filters/load-search-modal.js.map +0 -1
- package/build/table/filters/reflection-element.js.map +0 -1
- package/build/table/filters/save-search-modal.js.map +0 -1
- package/build/table/filters/scope-element.js.map +0 -1
- package/build/table/header-column-content.js.map +0 -1
- package/build/table/header-column.js.map +0 -1
- package/build/table/header-select.js.map +0 -1
- package/build/table/model-callback-args.js.map +0 -1
- package/build/table/model-column.js.map +0 -1
- package/build/table/model-row.js.map +0 -1
- package/build/table/select-calculator.js.map +0 -1
- package/build/table/settings/column-row.js.map +0 -1
- package/build/table/settings/download-action.js.map +0 -1
- package/build/table/settings/index.js.map +0 -1
- package/build/table/table-settings.js.map +0 -1
- package/build/table/table.js.map +0 -1
- package/build/table/use-sorting.js.map +0 -1
- package/build/table/widths.js.map +0 -1
- package/build/table/worker-plugins-check-all-checkbox.js.map +0 -1
- package/build/table/worker-plugins-checkbox.js.map +0 -1
- package/build/translated-attributes.js.map +0 -1
- package/build/translated-collections.js.map +0 -1
- package/build/updated-attribute.js.map +0 -1
- package/build/url-encode.js.map +0 -1
- package/build/use-breakpoint.js.map +0 -1
- package/build/use-can-can.js.map +0 -1
- package/build/use-collection.js.map +0 -1
- package/build/use-created-event.js.map +0 -1
- package/build/use-current-user-context.js.map +0 -1
- package/build/use-current-user.js.map +0 -1
- package/build/use-destroyed-event.js.map +0 -1
- package/build/use-event-emitter.js.map +0 -1
- package/build/use-event-listener.js.map +0 -1
- package/build/use-input.js.map +0 -1
- package/build/use-model-event.js.map +0 -1
- package/build/use-model.js.map +0 -1
- package/build/use-resize-observer.js.map +0 -1
- package/build/use-router.js.map +0 -1
- package/build/use-screen-layout.js.map +0 -1
- package/build/use-styles.js.map +0 -1
- package/build/use-updated-event.js.map +0 -1
- package/build/use-validation-errors.js.map +0 -1
- package/build/utils/button.js.map +0 -1
- package/build/utils/card.js.map +0 -1
- package/build/utils/checkbox.js.map +0 -1
- package/build/utils/checkboxes.js.map +0 -1
- package/build/utils/default-style.js.map +0 -1
- package/build/utils/header.js.map +0 -1
- package/build/utils/icon.js.map +0 -1
- package/build/utils/invalid-feedback.js.map +0 -1
- package/build/utils/modal.js.map +0 -1
- package/build/utils/text.js.map +0 -1
- package/build/validation-error.js.map +0 -1
- package/build/validation-errors.js.map +0 -1
- package/build/with-api-maker.js.map +0 -1
- package/build/with-collection.js.map +0 -1
- package/build/with-current-user.js.map +0 -1
- package/build/with-model.js.map +0 -1
- package/build/with-router.js.map +0 -1
|
@@ -1,150 +1,73 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
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==
|