@kaspernj/api-maker 1.0.2011 → 1.0.2013
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} +10 -1
- 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.js +135 -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 +129 -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 +131 -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 +9 -0
- package/build/collection-loader.js +48 -0
- package/build/collection.js +280 -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 +62 -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 +112 -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-emitter-listener.js +15 -0
- package/build/event-model-class.js +24 -0
- package/build/events.js +5 -0
- package/build/flash-message.js +79 -0
- package/build/form.js +83 -0
- package/build/history-expo.js +20 -0
- package/build/history-react-native.js +20 -0
- package/build/history.js +3 -0
- package/build/index.js +3 -0
- package/build/inputs/attachment.js +133 -0
- package/build/inputs/auto-submit.js +36 -0
- package/build/inputs/checkbox.js +138 -0
- package/build/inputs/checkboxes.js +112 -0
- package/build/inputs/id-for-component.js +15 -0
- package/build/inputs/input-wrapper.js +19 -0
- package/build/inputs/input.js +243 -0
- package/build/inputs/money.js +179 -0
- package/build/inputs/name-for-component.js +13 -0
- package/build/inputs/select.js +93 -0
- package/build/instance-of-class-name.js +23 -0
- package/build/is-expo.js +22 -0
- package/build/key-value-store.js +53 -0
- package/build/link.js +73 -0
- package/build/logger.js +30 -0
- package/build/modal.js +38 -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 +78 -0
- package/build/not-loaded-error.js +2 -0
- package/build/params.js +61 -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 +270 -0
- package/build/router/switch.js +72 -0
- package/build/router.js +59 -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 +134 -0
- package/build/source-maps-loader.js +184 -0
- package/build/super-admin/config-reader.js +85 -0
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
- package/build/super-admin/edit-page/edit-attribute-content.js +55 -0
- package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
- package/build/super-admin/edit-page/edit-attribute.js +77 -0
- package/build/super-admin/edit-page.js +123 -0
- package/build/super-admin/has-edit-config.js +12 -0
- package/build/super-admin/index-page.js +25 -0
- package/build/super-admin/index.js +181 -0
- package/build/super-admin/layout/header/index.js +161 -0
- package/build/super-admin/layout/index.js +164 -0
- package/build/super-admin/layout/menu/index.js +206 -0
- package/build/super-admin/layout/menu/menu-content.js +46 -0
- package/build/super-admin/layout/menu/menu-item.js +84 -0
- package/build/super-admin/layout/no-access.js +27 -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 +51 -0
- package/build/super-admin/show-page/belongs-to-attribute-row.js +29 -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 +48 -0
- package/build/super-admin/show-reflection-page.js +48 -0
- package/build/table/column-content.js +117 -0
- package/build/table/column-identifier.js +18 -0
- package/build/table/column-visible.js +7 -0
- package/build/table/components/column.js +21 -0
- package/build/table/components/flat-list.js +21 -0
- package/build/table/components/header.js +26 -0
- package/build/table/components/row.js +26 -0
- package/build/table/filters/attribute-element.js +44 -0
- package/build/table/filters/filter-form.js +402 -0
- package/build/table/filters/filter.js +90 -0
- package/build/table/filters/index.js +184 -0
- package/build/table/filters/load-search-modal.js +175 -0
- package/build/table/filters/reflection-element.js +37 -0
- package/build/table/filters/save-search-modal.js +88 -0
- package/build/table/filters/scope-element.js +42 -0
- package/build/table/header-column-content.js +68 -0
- package/build/table/header-column.js +144 -0
- package/build/table/header-select.js +105 -0
- package/build/table/model-callback-args.js +10 -0
- package/build/table/model-column.js +97 -0
- package/build/table/model-row.js +193 -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 +79 -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 +12 -0
- package/build/updated-attribute.js +76 -0
- package/build/url-encode.js +15 -0
- package/build/use-breakpoint.js +71 -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 +76 -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 +137 -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 +104 -0
- package/build/use-screen-layout.js +39 -0
- package/build/use-styles.js +41 -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 +78 -0
- package/build/utils/checkboxes.js +163 -0
- package/build/utils/default-style.js +18 -0
- package/build/utils/icon.js +23 -0
- package/build/utils/invalid-feedback.js +19 -0
- package/build/utils/modal.js +62 -0
- package/build/utils/text.js +44 -0
- package/build/validation-error.js +28 -0
- package/build/validation-errors.js +98 -0
- package/build/with-api-maker.js +29 -0
- package/build/with-collection.js +14 -0
- package/build/with-current-user.js +10 -0
- package/build/with-model.js +15 -0
- package/build/with-router.js +22 -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 +49 -46
- package/src/{api.mjs → api.js} +38 -37
- package/src/base-component.jsx +5 -0
- package/src/{base-error.mjs → base-error.js} +4 -6
- package/src/base-model/attribute.js +33 -0
- package/src/base-model/column.js +13 -0
- package/src/base-model/reflection.js +15 -0
- package/src/base-model/scope.js +12 -0
- package/src/{base-model.mjs → base-model.js} +302 -144
- package/src/bootstrap/attribute-row.jsx +135 -0
- package/src/bootstrap/attribute-rows.jsx +27 -0
- package/src/bootstrap/card.jsx +149 -0
- package/src/bootstrap/checkbox.jsx +86 -0
- package/src/bootstrap/checkboxes.jsx +185 -0
- package/src/bootstrap/index.js +0 -0
- package/src/bootstrap/input.jsx +173 -0
- package/src/bootstrap/invalid-feedback.jsx +31 -0
- package/src/bootstrap/paginate.jsx +187 -0
- package/src/bootstrap/radio-buttons.jsx +87 -0
- package/src/bootstrap/select.jsx +110 -0
- package/src/bootstrap/sort-link.jsx +106 -0
- package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +16 -36
- package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +26 -21
- package/src/{cable-subscription.mjs → cable-subscription.js} +6 -4
- package/src/cache-key-generator.js +100 -0
- package/src/{can-can.mjs → can-can.js} +13 -12
- package/src/channels-consumer.js +10 -0
- package/src/collection-loader.jsx +58 -224
- package/src/{collection.mjs → collection.js} +98 -44
- package/src/{command-submit-data.mjs → command-submit-data.js} +2 -7
- package/src/{commands-pool.mjs → commands-pool.js} +57 -41
- package/src/compose.js +11 -0
- package/src/{config.mjs → config.js} +6 -2
- package/src/{custom-error.mjs → custom-error.js} +1 -1
- package/src/data-set-to-attributes.js +13 -0
- package/src/{deserializer.mjs → deserializer.js} +3 -3
- package/src/destroy-error.js +7 -0
- package/src/devise.js +129 -0
- package/src/draggable-sort/controller.js +137 -0
- package/src/draggable-sort/index.jsx +108 -0
- package/src/draggable-sort/item.jsx +174 -0
- package/src/{error-logger.mjs → error-logger.js} +12 -7
- package/src/{error-messages.mjs → error-messages.js} +1 -0
- package/src/event-connection.jsx +1 -1
- package/src/event-emitter-listener.jsx +8 -27
- package/src/event-model-class.jsx +2 -4
- package/src/events.js +7 -0
- package/src/flash-message.js +70 -0
- package/src/form.jsx +91 -0
- package/src/history-expo.js +23 -0
- package/src/history-react-native.js +25 -0
- package/src/history.js +3 -0
- package/src/index.js +3 -0
- package/src/inputs/attachment.jsx +108 -0
- package/src/inputs/auto-submit.js +37 -0
- package/src/inputs/checkbox.jsx +125 -0
- package/src/inputs/checkboxes.jsx +116 -0
- package/src/inputs/id-for-component.js +15 -0
- package/src/inputs/input-wrapper.jsx +16 -0
- package/src/inputs/input.jsx +260 -0
- package/src/inputs/money.jsx +187 -0
- package/src/inputs/name-for-component.js +15 -0
- package/src/inputs/select.jsx +104 -0
- package/src/is-expo.js +18 -0
- package/src/{key-value-store.mjs → key-value-store.js} +1 -1
- package/src/link.jsx +54 -9
- package/src/logger.js +38 -0
- package/src/modal.jsx +37 -0
- package/src/model-class-require.js +17 -0
- package/src/{model-events.mjs → model-events.js} +1 -1
- package/src/{model-name.mjs → model-name.js} +8 -8
- package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
- package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +5 -5
- package/src/{models-response-reader.mjs → models-response-reader.js} +3 -4
- package/src/models.js +7 -0
- package/src/{models.mjs.erb → models.js.erb} +6 -3
- package/src/{money-formatter.mjs → money-formatter.js} +5 -4
- package/src/{params.mjs → params.js} +17 -7
- package/src/{preloaded.mjs → preloaded.js} +2 -2
- package/src/resize-observer.jsx +10 -0
- package/src/result.js +13 -0
- package/src/router/route.jsx +246 -0
- package/src/router/switch.jsx +76 -0
- package/src/router.jsx +23 -21
- package/src/{routes-native.mjs → routes-native.js} +12 -6
- package/src/{routes.mjs → routes.js} +1 -1
- package/src/run-last.js +39 -0
- package/src/{serializer.mjs → serializer.js} +2 -2
- package/src/{services.mjs → services.js} +1 -1
- package/src/session-status-updater.js +172 -0
- package/src/{source-maps-loader.mjs → source-maps-loader.js} +54 -28
- package/src/super-admin/config-reader.jsx +93 -0
- package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +81 -0
- package/src/super-admin/edit-page/edit-attribute-content.jsx +57 -0
- package/src/super-admin/edit-page/edit-attribute-input.jsx +71 -0
- package/src/super-admin/edit-page/edit-attribute.jsx +81 -0
- package/src/super-admin/edit-page.jsx +117 -0
- package/src/super-admin/has-edit-config.js +15 -0
- package/src/super-admin/index-page.jsx +23 -0
- package/src/super-admin/index.jsx +197 -0
- package/src/super-admin/layout/header/index.jsx +144 -0
- package/src/super-admin/layout/header/style.scss +45 -0
- package/src/super-admin/layout/index.jsx +154 -0
- package/src/super-admin/layout/menu/index.jsx +171 -0
- package/src/super-admin/layout/menu/menu-content.jsx +43 -0
- package/src/super-admin/layout/menu/menu-item.jsx +70 -0
- package/src/super-admin/layout/menu/style.scss +11 -0
- package/src/super-admin/layout/no-access.jsx +26 -0
- package/src/super-admin/model-class-table.jsx +66 -0
- package/src/super-admin/models.js +11 -0
- package/src/super-admin/show-nav.jsx +44 -0
- package/src/super-admin/show-page/belongs-to-attribute-row.jsx +30 -0
- package/src/super-admin/show-page/index.jsx +141 -0
- package/src/super-admin/show-reflection-actions.jsx +49 -0
- package/src/super-admin/show-reflection-link.jsx +40 -0
- package/src/super-admin/show-reflection-page.jsx +47 -0
- package/src/super-admin/stylesheets/variables.scss +11 -0
- package/src/table/column-content.jsx +122 -0
- package/src/table/column-identifier.js +23 -0
- package/src/table/column-visible.js +7 -0
- package/src/table/components/column.jsx +19 -0
- package/src/table/components/flat-list.jsx +19 -0
- package/src/table/components/header.jsx +21 -0
- package/src/table/components/row.jsx +23 -0
- package/src/table/filters/attribute-element.jsx +47 -0
- package/src/table/filters/filter-form.jsx +407 -0
- package/src/table/filters/filter.jsx +70 -0
- package/src/table/filters/index.jsx +170 -0
- package/src/table/filters/load-search-modal.jsx +146 -0
- package/src/table/filters/reflection-element.jsx +38 -0
- package/src/table/filters/save-search-modal.jsx +74 -0
- package/src/table/filters/scope-element.jsx +44 -0
- package/src/table/header-column-content.jsx +55 -0
- package/src/table/header-column.jsx +129 -0
- package/src/table/header-select.jsx +73 -0
- package/src/table/model-callback-args.js +10 -0
- package/src/table/model-column.jsx +82 -0
- package/src/table/model-row.jsx +136 -0
- package/src/table/select-calculator.js +65 -0
- package/src/table/settings/column-row.jsx +93 -0
- package/src/table/settings/download-action.jsx +68 -0
- package/src/table/settings/index.jsx +65 -0
- package/src/table/table-settings.js +263 -0
- package/src/table/table.jsx +950 -0
- package/src/table/use-sorting.js +35 -0
- package/src/table/variables.scss +11 -0
- package/src/table/widths.jsx +87 -0
- package/src/table/worker-plugins-check-all-checkbox.jsx +112 -0
- package/src/table/worker-plugins-checkbox.jsx +104 -0
- package/src/translated-attributes.js +11 -0
- package/src/{translated-collections.mjs → translated-collections.js} +3 -2
- package/src/updated-attribute.jsx +1 -1
- package/src/url-encode.js +18 -0
- package/src/use-breakpoint.js +87 -0
- package/src/use-can-can.js +55 -0
- package/src/use-collection.js +280 -0
- package/src/use-created-event.js +55 -0
- package/src/use-current-user.js +88 -0
- package/src/use-destroyed-event.js +60 -0
- package/src/use-event-emitter.js +15 -0
- package/src/use-event-listener.js +19 -0
- package/src/use-input.js +157 -0
- package/src/use-model-event.js +60 -0
- package/src/use-model.js +189 -0
- package/src/use-resize-observer.js +24 -0
- package/src/use-router.jsx +128 -0
- package/src/use-screen-layout.js +49 -0
- package/src/use-styles.js +50 -0
- package/src/use-updated-event.js +60 -0
- package/src/use-validation-errors.js +33 -0
- package/src/utils/card.jsx +49 -0
- package/src/utils/checkbox.jsx +80 -0
- package/src/utils/checkboxes.jsx +158 -0
- package/src/utils/default-style.jsx +25 -0
- package/src/utils/icon.jsx +21 -0
- package/src/utils/invalid-feedback.jsx +20 -0
- package/src/utils/modal.jsx +60 -0
- package/src/utils/text.jsx +38 -0
- package/src/{validation-error.mjs → validation-error.js} +9 -5
- package/src/{validation-errors.mjs → validation-errors.js} +15 -27
- package/src/with-api-maker.jsx +31 -0
- package/src/with-collection.jsx +17 -0
- package/src/with-current-user.jsx +7 -25
- package/src/with-model.jsx +16 -0
- package/src/with-router.jsx +7 -129
- package/__tests__/base-model.test.js +0 -71
- package/__tests__/cable-connection-pool.test.js +0 -227
- package/__tests__/cable-subscription-pool.test.js +0 -26
- package/__tests__/can-can.test.js +0 -34
- package/__tests__/collection.test.js +0 -51
- package/__tests__/custom-error.test.js +0 -13
- package/__tests__/model-name.test.js +0 -34
- package/__tests__/model-prop-type.test.js +0 -113
- package/__tests__/params.test.js +0 -40
- package/__tests__/routes-native.test.js +0 -103
- package/__tests__/routes.test.js +0 -46
- package/__tests__/serializer.test.js +0 -30
- package/__tests__/support/task.js +0 -27
- package/__tests__/support/user.js +0 -32
- package/index.js +0 -1
- package/jest.config.js +0 -4
- package/src/can-can-loader.jsx +0 -54
- package/src/channels-consumer.mjs +0 -3
- package/src/destroy-error.mjs +0 -7
- package/src/devise.mjs +0 -122
- package/src/event-created.jsx +0 -65
- package/src/event-destroyed.jsx +0 -29
- package/src/event-listener.jsx +0 -38
- package/src/event-updated.jsx +0 -74
- package/src/logger.mjs +0 -25
- package/src/model-class-require.mjs +0 -10
- package/src/model-load-wrapper.jsx +0 -116
- package/src/result.mjs +0 -29
- package/src/session-status-updater.mjs +0 -116
- package/webpack.config.js +0 -15
- /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
- /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
- /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
- /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
- /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
package/build/config.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import * as inflection from "inflection";
|
|
2
|
+
const accessors = {
|
|
3
|
+
breakPoints: {
|
|
4
|
+
default: [["xxl", 1400], ["xl", 1200], ["lg", 992], ["md", 768], ["sm", 576], ["xs", 0]],
|
|
5
|
+
required: true
|
|
6
|
+
},
|
|
7
|
+
cableUrl: {
|
|
8
|
+
require: false
|
|
9
|
+
},
|
|
10
|
+
currenciesCollection: {
|
|
11
|
+
required: true
|
|
12
|
+
},
|
|
13
|
+
history: {
|
|
14
|
+
required: true
|
|
15
|
+
},
|
|
16
|
+
host: {
|
|
17
|
+
required: false
|
|
18
|
+
},
|
|
19
|
+
i18n: {
|
|
20
|
+
required: false
|
|
21
|
+
},
|
|
22
|
+
linkTo: {
|
|
23
|
+
required: true
|
|
24
|
+
},
|
|
25
|
+
modal: {
|
|
26
|
+
required: false
|
|
27
|
+
},
|
|
28
|
+
navigation: {
|
|
29
|
+
required: true
|
|
30
|
+
},
|
|
31
|
+
routes: {
|
|
32
|
+
required: false
|
|
33
|
+
},
|
|
34
|
+
routeDefinitions: {
|
|
35
|
+
required: false
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
class ApiMakerConfig {
|
|
39
|
+
constructor() {
|
|
40
|
+
if (!globalThis.apiMakerConfigGlobal) globalThis.apiMakerConfigGlobal = {};
|
|
41
|
+
this.global = globalThis.apiMakerConfigGlobal;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
for (const accessorName in accessors) {
|
|
45
|
+
const accessorData = accessors[accessorName];
|
|
46
|
+
const camelizedAccessor = inflection.camelize(accessorName);
|
|
47
|
+
ApiMakerConfig.prototype[`set${camelizedAccessor}`] = function (newValue) {
|
|
48
|
+
this.global[accessorName] = newValue;
|
|
49
|
+
};
|
|
50
|
+
ApiMakerConfig.prototype[`get${camelizedAccessor}`] = function (...args) {
|
|
51
|
+
if (!this.global[accessorName]) {
|
|
52
|
+
if (accessorData.default) return accessorData.default;
|
|
53
|
+
if (accessorData.required) throw new Error(`${accessorName} hasn't been set`);
|
|
54
|
+
}
|
|
55
|
+
const value = this.global[accessorName];
|
|
56
|
+
if (typeof value == "function") return value(...args);
|
|
57
|
+
return value;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const apiMakerConfig = new ApiMakerConfig();
|
|
61
|
+
export default apiMakerConfig;
|
|
62
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmZsZWN0aW9uIiwiYWNjZXNzb3JzIiwiYnJlYWtQb2ludHMiLCJkZWZhdWx0IiwicmVxdWlyZWQiLCJjYWJsZVVybCIsInJlcXVpcmUiLCJjdXJyZW5jaWVzQ29sbGVjdGlvbiIsImhpc3RvcnkiLCJob3N0IiwiaTE4biIsImxpbmtUbyIsIm1vZGFsIiwibmF2aWdhdGlvbiIsInJvdXRlcyIsInJvdXRlRGVmaW5pdGlvbnMiLCJBcGlNYWtlckNvbmZpZyIsImNvbnN0cnVjdG9yIiwiZ2xvYmFsVGhpcyIsImFwaU1ha2VyQ29uZmlnR2xvYmFsIiwiZ2xvYmFsIiwiYWNjZXNzb3JOYW1lIiwiYWNjZXNzb3JEYXRhIiwiY2FtZWxpemVkQWNjZXNzb3IiLCJjYW1lbGl6ZSIsInByb3RvdHlwZSIsIm5ld1ZhbHVlIiwiYXJncyIsIkVycm9yIiwidmFsdWUiLCJhcGlNYWtlckNvbmZpZyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5cbmNvbnN0IGFjY2Vzc29ycyA9IHtcbiAgYnJlYWtQb2ludHM6IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICBbXCJ4eGxcIiwgMTQwMF0sXG4gICAgICBbXCJ4bFwiLCAxMjAwXSxcbiAgICAgIFtcImxnXCIsIDk5Ml0sXG4gICAgICBbXCJtZFwiLCA3NjhdLFxuICAgICAgW1wic21cIiwgNTc2XSxcbiAgICAgIFtcInhzXCIsIDBdXG4gICAgXSxcbiAgICByZXF1aXJlZDogdHJ1ZVxuICB9LFxuICBjYWJsZVVybDoge3JlcXVpcmU6IGZhbHNlfSxcbiAgY3VycmVuY2llc0NvbGxlY3Rpb246IHtyZXF1aXJlZDogdHJ1ZX0sXG4gIGhpc3Rvcnk6IHtyZXF1aXJlZDogdHJ1ZX0sXG4gIGhvc3Q6IHtyZXF1aXJlZDogZmFsc2V9LFxuICBpMThuOiB7cmVxdWlyZWQ6IGZhbHNlfSxcbiAgbGlua1RvOiB7cmVxdWlyZWQ6IHRydWV9LFxuICBtb2RhbDoge3JlcXVpcmVkOiBmYWxzZX0sXG4gIG5hdmlnYXRpb246IHtyZXF1aXJlZDogdHJ1ZX0sXG4gIHJvdXRlczoge3JlcXVpcmVkOiBmYWxzZX0sXG4gIHJvdXRlRGVmaW5pdGlvbnM6IHtyZXF1aXJlZDogZmFsc2V9XG59XG5cbmNsYXNzIEFwaU1ha2VyQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCFnbG9iYWxUaGlzLmFwaU1ha2VyQ29uZmlnR2xvYmFsKSBnbG9iYWxUaGlzLmFwaU1ha2VyQ29uZmlnR2xvYmFsID0ge31cblxuICAgIHRoaXMuZ2xvYmFsID0gZ2xvYmFsVGhpcy5hcGlNYWtlckNvbmZpZ0dsb2JhbFxuICB9XG59XG5cbmZvciAoY29uc3QgYWNjZXNzb3JOYW1lIGluIGFjY2Vzc29ycykge1xuICBjb25zdCBhY2Nlc3NvckRhdGEgPSBhY2Nlc3NvcnNbYWNjZXNzb3JOYW1lXVxuICBjb25zdCBjYW1lbGl6ZWRBY2Nlc3NvciA9IGluZmxlY3Rpb24uY2FtZWxpemUoYWNjZXNzb3JOYW1lKVxuXG4gIEFwaU1ha2VyQ29uZmlnLnByb3RvdHlwZVtgc2V0JHtjYW1lbGl6ZWRBY2Nlc3Nvcn1gXSA9IGZ1bmN0aW9uIChuZXdWYWx1ZSkgeyB0aGlzLmdsb2JhbFthY2Nlc3Nvck5hbWVdID0gbmV3VmFsdWUgfVxuICBBcGlNYWtlckNvbmZpZy5wcm90b3R5cGVbYGdldCR7Y2FtZWxpemVkQWNjZXNzb3J9YF0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGlmICghdGhpcy5nbG9iYWxbYWNjZXNzb3JOYW1lXSkge1xuICAgICAgaWYgKGFjY2Vzc29yRGF0YS5kZWZhdWx0KSByZXR1cm4gYWNjZXNzb3JEYXRhLmRlZmF1bHRcbiAgICAgIGlmIChhY2Nlc3NvckRhdGEucmVxdWlyZWQpIHRocm93IG5ldyBFcnJvcihgJHthY2Nlc3Nvck5hbWV9IGhhc24ndCBiZWVuIHNldGApXG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdsb2JhbFthY2Nlc3Nvck5hbWVdXG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHZhbHVlKC4uLmFyZ3MpXG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuXG5jb25zdCBhcGlNYWtlckNvbmZpZyA9IG5ldyBBcGlNYWtlckNvbmZpZygpXG5cbmV4cG9ydCBkZWZhdWx0IGFwaU1ha2VyQ29uZmlnXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBS0EsVUFBVSxNQUFNLFlBQVk7QUFFeEMsTUFBTUMsU0FBUyxHQUFHO0VBQ2hCQyxXQUFXLEVBQUU7SUFDWEMsT0FBTyxFQUFFLENBQ1AsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQ2IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQ1osQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQ1gsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQ1gsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQ1gsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ1Y7SUFDREMsUUFBUSxFQUFFO0VBQ1osQ0FBQztFQUNEQyxRQUFRLEVBQUU7SUFBQ0MsT0FBTyxFQUFFO0VBQUssQ0FBQztFQUMxQkMsb0JBQW9CLEVBQUU7SUFBQ0gsUUFBUSxFQUFFO0VBQUksQ0FBQztFQUN0Q0ksT0FBTyxFQUFFO0lBQUNKLFFBQVEsRUFBRTtFQUFJLENBQUM7RUFDekJLLElBQUksRUFBRTtJQUFDTCxRQUFRLEVBQUU7RUFBSyxDQUFDO0VBQ3ZCTSxJQUFJLEVBQUU7SUFBQ04sUUFBUSxFQUFFO0VBQUssQ0FBQztFQUN2Qk8sTUFBTSxFQUFFO0lBQUNQLFFBQVEsRUFBRTtFQUFJLENBQUM7RUFDeEJRLEtBQUssRUFBRTtJQUFDUixRQUFRLEVBQUU7RUFBSyxDQUFDO0VBQ3hCUyxVQUFVLEVBQUU7SUFBQ1QsUUFBUSxFQUFFO0VBQUksQ0FBQztFQUM1QlUsTUFBTSxFQUFFO0lBQUNWLFFBQVEsRUFBRTtFQUFLLENBQUM7RUFDekJXLGdCQUFnQixFQUFFO0lBQUNYLFFBQVEsRUFBRTtFQUFLO0FBQ3BDLENBQUM7QUFFRCxNQUFNWSxjQUFjLENBQUM7RUFDbkJDLFdBQVdBLENBQUEsRUFBRztJQUNaLElBQUksQ0FBQ0MsVUFBVSxDQUFDQyxvQkFBb0IsRUFBRUQsVUFBVSxDQUFDQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7SUFFMUUsSUFBSSxDQUFDQyxNQUFNLEdBQUdGLFVBQVUsQ0FBQ0Msb0JBQW9CO0VBQy9DO0FBQ0Y7QUFFQSxLQUFLLE1BQU1FLFlBQVksSUFBSXBCLFNBQVMsRUFBRTtFQUNwQyxNQUFNcUIsWUFBWSxHQUFHckIsU0FBUyxDQUFDb0IsWUFBWSxDQUFDO0VBQzVDLE1BQU1FLGlCQUFpQixHQUFHdkIsVUFBVSxDQUFDd0IsUUFBUSxDQUFDSCxZQUFZLENBQUM7RUFFM0RMLGNBQWMsQ0FBQ1MsU0FBUyxDQUFDLE1BQU1GLGlCQUFpQixFQUFFLENBQUMsR0FBRyxVQUFVRyxRQUFRLEVBQUU7SUFBRSxJQUFJLENBQUNOLE1BQU0sQ0FBQ0MsWUFBWSxDQUFDLEdBQUdLLFFBQVE7RUFBQyxDQUFDO0VBQ2xIVixjQUFjLENBQUNTLFNBQVMsQ0FBQyxNQUFNRixpQkFBaUIsRUFBRSxDQUFDLEdBQUcsVUFBVSxHQUFHSSxJQUFJLEVBQUU7SUFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQ1AsTUFBTSxDQUFDQyxZQUFZLENBQUMsRUFBRTtNQUM5QixJQUFJQyxZQUFZLENBQUNuQixPQUFPLEVBQUUsT0FBT21CLFlBQVksQ0FBQ25CLE9BQU87TUFDckQsSUFBSW1CLFlBQVksQ0FBQ2xCLFFBQVEsRUFBRSxNQUFNLElBQUl3QixLQUFLLENBQUMsR0FBR1AsWUFBWSxrQkFBa0IsQ0FBQztJQUMvRTtJQUVBLE1BQU1RLEtBQUssR0FBRyxJQUFJLENBQUNULE1BQU0sQ0FBQ0MsWUFBWSxDQUFDO0lBRXZDLElBQUksT0FBT1EsS0FBSyxJQUFJLFVBQVUsRUFBRSxPQUFPQSxLQUFLLENBQUMsR0FBR0YsSUFBSSxDQUFDO0lBRXJELE9BQU9FLEtBQUs7RUFDZCxDQUFDO0FBQ0g7QUFFQSxNQUFNQyxjQUFjLEdBQUcsSUFBSWQsY0FBYyxDQUFDLENBQUM7QUFFM0MsZUFBZWMsY0FBYyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import BaseError from "./base-error";
|
|
2
|
+
class CustomError extends BaseError {}
|
|
3
|
+
CustomError.apiMakerType = "CustomError";
|
|
4
|
+
export default CustomError;
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlRXJyb3IiLCJDdXN0b21FcnJvciIsImFwaU1ha2VyVHlwZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jdXN0b20tZXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VFcnJvciBmcm9tIFwiLi9iYXNlLWVycm9yXCJcblxuY2xhc3MgQ3VzdG9tRXJyb3IgZXh0ZW5kcyBCYXNlRXJyb3Ige31cblxuQ3VzdG9tRXJyb3IuYXBpTWFrZXJUeXBlID0gXCJDdXN0b21FcnJvclwiXG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbUVycm9yXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFNBQVMsTUFBTSxjQUFjO0FBRXBDLE1BQU1DLFdBQVcsU0FBU0QsU0FBUyxDQUFDO0FBRXBDQyxXQUFXLENBQUNDLFlBQVksR0FBRyxhQUFhO0FBRXhDLGVBQWVELFdBQVciLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as inflection from "inflection";
|
|
2
|
+
export default function dataSetToAttributes(dataSet) {
|
|
3
|
+
const result = {};
|
|
4
|
+
for (const key in dataSet) {
|
|
5
|
+
const dasherizedKey = `data-${inflection.dasherize(inflection.underscore(key))}`;
|
|
6
|
+
result[dasherizedKey] = dataSet[key];
|
|
7
|
+
}
|
|
8
|
+
return result;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmZsZWN0aW9uIiwiZGF0YVNldFRvQXR0cmlidXRlcyIsImRhdGFTZXQiLCJyZXN1bHQiLCJrZXkiLCJkYXNoZXJpemVkS2V5IiwiZGFzaGVyaXplIiwidW5kZXJzY29yZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXNldC10by1hdHRyaWJ1dGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkYXRhU2V0VG9BdHRyaWJ1dGVzKGRhdGFTZXQpIHtcbiAgY29uc3QgcmVzdWx0ID0ge31cblxuICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhU2V0KSB7XG4gICAgY29uc3QgZGFzaGVyaXplZEtleSA9IGBkYXRhLSR7aW5mbGVjdGlvbi5kYXNoZXJpemUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKGtleSkpfWBcblxuICAgIHJlc3VsdFtkYXNoZXJpemVkS2V5XSA9IGRhdGFTZXRba2V5XVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUtBLFVBQVUsTUFBTSxZQUFZO0FBRXhDLGVBQWUsU0FBU0MsbUJBQW1CQSxDQUFDQyxPQUFPLEVBQUU7RUFDbkQsTUFBTUMsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUVqQixLQUFLLE1BQU1DLEdBQUcsSUFBSUYsT0FBTyxFQUFFO0lBQ3pCLE1BQU1HLGFBQWEsR0FBRyxRQUFRTCxVQUFVLENBQUNNLFNBQVMsQ0FBQ04sVUFBVSxDQUFDTyxVQUFVLENBQUNILEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFFaEZELE1BQU0sQ0FBQ0UsYUFBYSxDQUFDLEdBQUdILE9BQU8sQ0FBQ0UsR0FBRyxDQUFDO0VBQ3RDO0VBRUEsT0FBT0QsTUFBTTtBQUNmIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { digg } from "diggerize";
|
|
2
|
+
import * as inflection from "inflection";
|
|
3
|
+
import modelClassRequire from "./model-class-require";
|
|
4
|
+
import ModelsResponseReader from "./models-response-reader";
|
|
5
|
+
import Money from "js-money";
|
|
6
|
+
export default class ApiMakerDeserializer {
|
|
7
|
+
static parse(object) {
|
|
8
|
+
if (Array.isArray(object)) {
|
|
9
|
+
return object.map(value => ApiMakerDeserializer.parse(value));
|
|
10
|
+
} else if (object && typeof object == "object") {
|
|
11
|
+
if (object.api_maker_type == "date") {
|
|
12
|
+
const date = new Date(digg(object, "value"));
|
|
13
|
+
date.apiMakerType = "date";
|
|
14
|
+
return date;
|
|
15
|
+
} else if (object.api_maker_type == "time") {
|
|
16
|
+
const date = new Date(digg(object, "value"));
|
|
17
|
+
date.apiMakerType = "time";
|
|
18
|
+
return date;
|
|
19
|
+
} else if (object.api_maker_type == "collection") {
|
|
20
|
+
// Need to remove type to avoid circular error
|
|
21
|
+
const {
|
|
22
|
+
api_maker_type,
|
|
23
|
+
...restObject
|
|
24
|
+
} = object;
|
|
25
|
+
return ModelsResponseReader.collection(ApiMakerDeserializer.parse(restObject));
|
|
26
|
+
} else if (object.api_maker_type == "money") {
|
|
27
|
+
const cents = digg(object, "amount");
|
|
28
|
+
const currency = digg(object, "currency");
|
|
29
|
+
return Money.fromInteger(cents, currency);
|
|
30
|
+
} else if (object.api_maker_type == "model") {
|
|
31
|
+
const modelClassName = inflection.classify(digg(object, "model_name"));
|
|
32
|
+
const ModelClass = modelClassRequire(modelClassName);
|
|
33
|
+
const data = ApiMakerDeserializer.parse(digg(object, "serialized"));
|
|
34
|
+
const model = new ModelClass({
|
|
35
|
+
data,
|
|
36
|
+
isNewRecord: false
|
|
37
|
+
});
|
|
38
|
+
return model;
|
|
39
|
+
} else if (object.api_maker_type == "resource") {
|
|
40
|
+
const modelClassName = inflection.classify(digg(object, "name"));
|
|
41
|
+
const ModelClass = modelClassRequire(modelClassName);
|
|
42
|
+
return ModelClass;
|
|
43
|
+
} else {
|
|
44
|
+
const newObject = {};
|
|
45
|
+
for (const key in object) {
|
|
46
|
+
const value = object[key];
|
|
47
|
+
newObject[key] = ApiMakerDeserializer.parse(value);
|
|
48
|
+
}
|
|
49
|
+
return newObject;
|
|
50
|
+
}
|
|
51
|
+
} else {
|
|
52
|
+
return object;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiaW5mbGVjdGlvbiIsIm1vZGVsQ2xhc3NSZXF1aXJlIiwiTW9kZWxzUmVzcG9uc2VSZWFkZXIiLCJNb25leSIsIkFwaU1ha2VyRGVzZXJpYWxpemVyIiwicGFyc2UiLCJvYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ2YWx1ZSIsImFwaV9tYWtlcl90eXBlIiwiZGF0ZSIsIkRhdGUiLCJhcGlNYWtlclR5cGUiLCJyZXN0T2JqZWN0IiwiY29sbGVjdGlvbiIsImNlbnRzIiwiY3VycmVuY3kiLCJmcm9tSW50ZWdlciIsIm1vZGVsQ2xhc3NOYW1lIiwiY2xhc3NpZnkiLCJNb2RlbENsYXNzIiwiZGF0YSIsIm1vZGVsIiwiaXNOZXdSZWNvcmQiLCJuZXdPYmplY3QiLCJrZXkiXSwic291cmNlcyI6WyIuLi9zcmMvZGVzZXJpYWxpemVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBtb2RlbENsYXNzUmVxdWlyZSBmcm9tIFwiLi9tb2RlbC1jbGFzcy1yZXF1aXJlXCJcbmltcG9ydCBNb2RlbHNSZXNwb25zZVJlYWRlciBmcm9tIFwiLi9tb2RlbHMtcmVzcG9uc2UtcmVhZGVyXCJcbmltcG9ydCBNb25leSBmcm9tIFwianMtbW9uZXlcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcGlNYWtlckRlc2VyaWFsaXplciB7XG4gIHN0YXRpYyBwYXJzZSAob2JqZWN0KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xuICAgICAgcmV0dXJuIG9iamVjdC5tYXAoKHZhbHVlKSA9PiBBcGlNYWtlckRlc2VyaWFsaXplci5wYXJzZSh2YWx1ZSkpXG4gICAgfSBlbHNlIGlmIChvYmplY3QgJiYgdHlwZW9mIG9iamVjdCA9PSBcIm9iamVjdFwiKSB7XG4gICAgICBpZiAob2JqZWN0LmFwaV9tYWtlcl90eXBlID09IFwiZGF0ZVwiKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkaWdnKG9iamVjdCwgXCJ2YWx1ZVwiKSlcblxuICAgICAgICBkYXRlLmFwaU1ha2VyVHlwZSA9IFwiZGF0ZVwiXG5cbiAgICAgICAgcmV0dXJuIGRhdGVcbiAgICAgIH0gZWxzZSBpZiAob2JqZWN0LmFwaV9tYWtlcl90eXBlID09IFwidGltZVwiKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkaWdnKG9iamVjdCwgXCJ2YWx1ZVwiKSlcblxuICAgICAgICBkYXRlLmFwaU1ha2VyVHlwZSA9IFwidGltZVwiXG5cbiAgICAgICAgcmV0dXJuIGRhdGVcbiAgICAgIH0gZWxzZSBpZiAob2JqZWN0LmFwaV9tYWtlcl90eXBlID09IFwiY29sbGVjdGlvblwiKSB7XG4gICAgICAgIC8vIE5lZWQgdG8gcmVtb3ZlIHR5cGUgdG8gYXZvaWQgY2lyY3VsYXIgZXJyb3JcbiAgICAgICAgY29uc3Qge2FwaV9tYWtlcl90eXBlLCAuLi5yZXN0T2JqZWN0fSA9IG9iamVjdFxuXG4gICAgICAgIHJldHVybiBNb2RlbHNSZXNwb25zZVJlYWRlci5jb2xsZWN0aW9uKEFwaU1ha2VyRGVzZXJpYWxpemVyLnBhcnNlKHJlc3RPYmplY3QpKVxuICAgICAgfSBlbHNlIGlmIChvYmplY3QuYXBpX21ha2VyX3R5cGUgPT0gXCJtb25leVwiKSB7XG4gICAgICAgIGNvbnN0IGNlbnRzID0gZGlnZyhvYmplY3QsIFwiYW1vdW50XCIpXG4gICAgICAgIGNvbnN0IGN1cnJlbmN5ID0gZGlnZyhvYmplY3QsIFwiY3VycmVuY3lcIilcblxuICAgICAgICByZXR1cm4gTW9uZXkuZnJvbUludGVnZXIoY2VudHMsIGN1cnJlbmN5KVxuICAgICAgfSBlbHNlIGlmIChvYmplY3QuYXBpX21ha2VyX3R5cGUgPT0gXCJtb2RlbFwiKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gaW5mbGVjdGlvbi5jbGFzc2lmeShkaWdnKG9iamVjdCwgXCJtb2RlbF9uYW1lXCIpKVxuICAgICAgICBjb25zdCBNb2RlbENsYXNzID0gbW9kZWxDbGFzc1JlcXVpcmUobW9kZWxDbGFzc05hbWUpXG4gICAgICAgIGNvbnN0IGRhdGEgPSBBcGlNYWtlckRlc2VyaWFsaXplci5wYXJzZShkaWdnKG9iamVjdCwgXCJzZXJpYWxpemVkXCIpKVxuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbENsYXNzKHtkYXRhLCBpc05ld1JlY29yZDogZmFsc2V9KVxuXG4gICAgICAgIHJldHVybiBtb2RlbFxuICAgICAgfSBlbHNlIGlmIChvYmplY3QuYXBpX21ha2VyX3R5cGUgPT0gXCJyZXNvdXJjZVwiKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gaW5mbGVjdGlvbi5jbGFzc2lmeShkaWdnKG9iamVjdCwgXCJuYW1lXCIpKVxuICAgICAgICBjb25zdCBNb2RlbENsYXNzID0gbW9kZWxDbGFzc1JlcXVpcmUobW9kZWxDbGFzc05hbWUpXG5cbiAgICAgICAgcmV0dXJuIE1vZGVsQ2xhc3NcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5ld09iamVjdCA9IHt9XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBvYmplY3Rba2V5XVxuICAgICAgICAgIG5ld09iamVjdFtrZXldID0gQXBpTWFrZXJEZXNlcmlhbGl6ZXIucGFyc2UodmFsdWUpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3T2JqZWN0XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmplY3RcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxpQkFBaUIsTUFBTSx1QkFBdUI7QUFDckQsT0FBT0Msb0JBQW9CLE1BQU0s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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import CustomError from "./custom-error";
|
|
2
|
+
class DestroyError extends CustomError {}
|
|
3
|
+
DestroyError.apiMakerType = "DestroyError";
|
|
4
|
+
export default DestroyError;
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDdXN0b21FcnJvciIsIkRlc3Ryb3lFcnJvciIsImFwaU1ha2VyVHlwZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXN0cm95LWVycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDdXN0b21FcnJvciBmcm9tIFwiLi9jdXN0b20tZXJyb3JcIlxuXG5jbGFzcyBEZXN0cm95RXJyb3IgZXh0ZW5kcyBDdXN0b21FcnJvciB7fVxuXG5EZXN0cm95RXJyb3IuYXBpTWFrZXJUeXBlID0gXCJEZXN0cm95RXJyb3JcIlxuXG5leHBvcnQgZGVmYXVsdCBEZXN0cm95RXJyb3JcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsV0FBVyxNQUFNLGdCQUFnQjtBQUV4QyxNQUFNQyxZQUFZLFNBQVNELFdBQVcsQ0FBQztBQUV2Q0MsWUFBWSxDQUFDQyxZQUFZLEdBQUcsY0FBYztBQUUxQyxlQUFlRCxZQUFZIiwiaWdub3JlTGlzdCI6W119
|
package/build/devise.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import Deserializer from "./deserializer";
|
|
2
|
+
import events from "./events";
|
|
3
|
+
import * as inflection from "inflection";
|
|
4
|
+
import modelClassRequire from "./model-class-require";
|
|
5
|
+
import Services from "./services";
|
|
6
|
+
if (!globalThis.ApiMakerDevise) globalThis.ApiMakerDevise = {
|
|
7
|
+
scopes: {}
|
|
8
|
+
};
|
|
9
|
+
const shared = globalThis.ApiMakerDevise;
|
|
10
|
+
export default class ApiMakerDevise {
|
|
11
|
+
static callSignOutEvent(args) {
|
|
12
|
+
events.emit("onDeviseSignOut", {
|
|
13
|
+
args
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
static current() {
|
|
17
|
+
if (!shared.currentApiMakerDevise) {
|
|
18
|
+
shared.currentApiMakerDevise = new ApiMakerDevise();
|
|
19
|
+
}
|
|
20
|
+
return shared.currentApiMakerDevise;
|
|
21
|
+
}
|
|
22
|
+
static events() {
|
|
23
|
+
return events;
|
|
24
|
+
}
|
|
25
|
+
static addUserScope(scope, args = {}) {
|
|
26
|
+
const currentMethodName = `current${inflection.camelize(scope)}`;
|
|
27
|
+
const isSignedInMethodName = `is${inflection.camelize(scope)}SignedIn`;
|
|
28
|
+
const getArgsMethodName = `get${inflection.camelize(scope)}Args`;
|
|
29
|
+
ApiMakerDevise[currentMethodName] = () => ApiMakerDevise.current().getCurrentScope(scope);
|
|
30
|
+
ApiMakerDevise[isSignedInMethodName] = () => Boolean(ApiMakerDevise.current().getCurrentScope(scope));
|
|
31
|
+
ApiMakerDevise[getArgsMethodName] = () => args;
|
|
32
|
+
}
|
|
33
|
+
static async signIn(username, password, args = {}) {
|
|
34
|
+
if (!args.scope) args.scope = "user";
|
|
35
|
+
const postData = {
|
|
36
|
+
username,
|
|
37
|
+
password,
|
|
38
|
+
args
|
|
39
|
+
};
|
|
40
|
+
const response = await Services.current().sendRequest("Devise::SignIn", postData);
|
|
41
|
+
let model = response.model;
|
|
42
|
+
if (Array.isArray(model)) model = model[0];
|
|
43
|
+
ApiMakerDevise.updateSession(model);
|
|
44
|
+
events.emit("onDeviseSignIn", Object.assign({
|
|
45
|
+
username
|
|
46
|
+
}, args));
|
|
47
|
+
return {
|
|
48
|
+
model,
|
|
49
|
+
response
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
static updateSession(model, args = {}) {
|
|
53
|
+
if (!args.scope) args.scope = "user";
|
|
54
|
+
const camelizedScopeName = inflection.camelize(args.scope, true);
|
|
55
|
+
ApiMakerDevise.current().currents[camelizedScopeName] = model;
|
|
56
|
+
}
|
|
57
|
+
hasCurrentScope(scope) {
|
|
58
|
+
const camelizedScopeName = inflection.camelize(scope, true);
|
|
59
|
+
return camelizedScopeName in ApiMakerDevise.current().currents;
|
|
60
|
+
}
|
|
61
|
+
static setSignedOut(args) {
|
|
62
|
+
ApiMakerDevise.current().currents[inflection.camelize(args.scope, true)] = null;
|
|
63
|
+
}
|
|
64
|
+
static async signOut(args = {}) {
|
|
65
|
+
if (!args.scope) {
|
|
66
|
+
args.scope = "user";
|
|
67
|
+
}
|
|
68
|
+
const response = await Services.current().sendRequest("Devise::SignOut", {
|
|
69
|
+
args
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// Cannot use the class because they would both import each other
|
|
73
|
+
if (shared.apiMakerSessionStatusUpdater) {
|
|
74
|
+
shared.apiMakerSessionStatusUpdater.updateSessionStatus();
|
|
75
|
+
}
|
|
76
|
+
ApiMakerDevise.setSignedOut(args);
|
|
77
|
+
ApiMakerDevise.callSignOutEvent(args);
|
|
78
|
+
return response;
|
|
79
|
+
}
|
|
80
|
+
constructor() {
|
|
81
|
+
this.currents = {};
|
|
82
|
+
}
|
|
83
|
+
getCurrentScope(scope) {
|
|
84
|
+
if (!(scope in this.currents)) {
|
|
85
|
+
this.currents[scope] = this.loadCurrentScope(scope);
|
|
86
|
+
}
|
|
87
|
+
return this.currents[scope];
|
|
88
|
+
}
|
|
89
|
+
hasGlobalCurrentScope(scope) {
|
|
90
|
+
if (globalThis.apiMakerDeviseCurrent && scope in globalThis.apiMakerDeviseCurrent) {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
loadCurrentScope(scope) {
|
|
96
|
+
if (!this.hasGlobalCurrentScope(scope)) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
const scopeData = globalThis.apiMakerDeviseCurrent[scope];
|
|
100
|
+
if (!scopeData) return null;
|
|
101
|
+
const parsedScopeData = Deserializer.parse(scopeData);
|
|
102
|
+
|
|
103
|
+
// Might be a collection with preloaded relationships
|
|
104
|
+
if (Array.isArray(parsedScopeData)) return parsedScopeData[0];
|
|
105
|
+
const ModelClass = modelClassRequire(scope);
|
|
106
|
+
const modelInstance = new ModelClass({
|
|
107
|
+
data: parsedScopeData
|
|
108
|
+
});
|
|
109
|
+
return modelInstance;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZXNlcmlhbGl6ZXIiLCJldmVudHMiLCJpbmZsZWN0aW9uIiwibW9kZWxDbGFzc1JlcXVpcmUiLCJTZXJ2aWNlcyIsImdsb2JhbFRoaXMiLCJBcGlNYWtlckRldmlzZSIsInNjb3BlcyIsInNoYXJlZCIsImNhbGxTaWduT3V0RXZlbnQiLCJhcmdzIiwiZW1pdCIsImN1cnJlbnQiLCJjdXJyZW50QXBpTWFrZXJEZXZpc2UiLCJhZGRVc2VyU2NvcGUiLCJzY29wZSIsImN1cnJlbnRNZXRob2ROYW1lIiwiY2FtZWxpemUiLCJpc1NpZ25lZEluTWV0aG9kTmFtZSIsImdldEFyZ3NNZXRob2ROYW1lIiwiZ2V0Q3VycmVudFNjb3BlIiwiQm9vbGVhbiIsInNpZ25JbiIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJwb3N0RGF0YSIsInJlc3BvbnNlIiwic2VuZFJlcXVlc3QiLCJtb2RlbCIsIkFycmF5IiwiaXNBcnJheSIsInVwZGF0ZVNlc3Npb24iLCJPYmplY3QiLCJhc3NpZ24iLCJjYW1lbGl6ZWRTY29wZU5hbWUiLCJjdXJyZW50cyIsImhhc0N1cnJlbnRTY29wZSIsInNldFNpZ25lZE91dCIsInNpZ25PdXQiLCJhcGlNYWtlclNlc3Npb25TdGF0dXNVcGRhdGVyIiwidXBkYXRlU2Vzc2lvblN0YXR1cyIsImNvbnN0cnVjdG9yIiwibG9hZEN1cnJlbnRTY29wZSIsImhhc0dsb2JhbEN1cnJlbnRTY29wZSIsImFwaU1ha2VyRGV2aXNlQ3VycmVudCIsInNjb3BlRGF0YSIsInBhcnNlZFNjb3BlRGF0YSIsInBhcnNlIiwiTW9kZWxDbGFzcyIsIm1vZGVsSW5zdGFuY2UiLCJkYXRhIl0sInNvdXJjZXMiOlsiLi4vc3JjL2RldmlzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVzZXJpYWxpemVyIGZyb20gXCIuL2Rlc2VyaWFsaXplclwiXG5pbXBvcnQgZXZlbnRzIGZyb20gXCIuL2V2ZW50c1wiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBtb2RlbENsYXNzUmVxdWlyZSBmcm9tIFwiLi9tb2RlbC1jbGFzcy1yZXF1aXJlXCJcbmltcG9ydCBTZXJ2aWNlcyBmcm9tIFwiLi9zZXJ2aWNlc1wiXG5cbmlmICghZ2xvYmFsVGhpcy5BcGlNYWtlckRldmlzZSkgZ2xvYmFsVGhpcy5BcGlNYWtlckRldmlzZSA9IHtzY29wZXM6IHt9fVxuXG5jb25zdCBzaGFyZWQgPSBnbG9iYWxUaGlzLkFwaU1ha2VyRGV2aXNlXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwaU1ha2VyRGV2aXNlIHtcbiAgc3RhdGljIGNhbGxTaWduT3V0RXZlbnQoYXJncykge1xuICAgIGV2ZW50cy5lbWl0KFwib25EZXZpc2VTaWduT3V0XCIsIHthcmdzfSlcbiAgfVxuXG4gIHN0YXRpYyBjdXJyZW50KCkge1xuICAgIGlmICghc2hhcmVkLmN1cnJlbnRBcGlNYWtlckRldmlzZSkge1xuICAgICAgc2hhcmVkLmN1cnJlbnRBcGlNYWtlckRldmlzZSA9IG5ldyBBcGlNYWtlckRldmlzZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYXJlZC5jdXJyZW50QXBpTWFrZXJEZXZpc2VcbiAgfVxuXG4gIHN0YXRpYyBldmVudHMoKSB7XG4gICAgcmV0dXJuIGV2ZW50c1xuICB9XG5cbiAgc3RhdGljIGFkZFVzZXJTY29wZShzY29wZSwgYXJncyA9IHt9KSB7XG4gICAgY29uc3QgY3VycmVudE1ldGhvZE5hbWUgPSBgY3VycmVudCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZSl9YFxuICAgIGNvbnN0IGlzU2lnbmVkSW5NZXRob2ROYW1lID0gYGlzJHtpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlKX1TaWduZWRJbmBcbiAgICBjb25zdCBnZXRBcmdzTWV0aG9kTmFtZSA9IGBnZXQke2luZmxlY3Rpb24uY2FtZWxpemUoc2NvcGUpfUFyZ3NgXG5cbiAgICBBcGlNYWtlckRldmlzZVtjdXJyZW50TWV0aG9kTmFtZV0gPSAoKSA9PiBBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuZ2V0Q3VycmVudFNjb3BlKHNjb3BlKVxuICAgIEFwaU1ha2VyRGV2aXNlW2lzU2lnbmVkSW5NZXRob2ROYW1lXSA9ICgpID0+IEJvb2xlYW4oQXBpTWFrZXJEZXZpc2UuY3VycmVudCgpLmdldEN1cnJlbnRTY29wZShzY29wZSkpXG4gICAgQXBpTWFrZXJEZXZpc2VbZ2V0QXJnc01ldGhvZE5hbWVdID0gKCkgPT4gYXJnc1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHNpZ25Jbih1c2VybmFtZSwgcGFzc3dvcmQsIGFyZ3MgPSB7fSkge1xuICAgIGlmICghYXJncy5zY29wZSkgYXJncy5zY29wZSA9IFwidXNlclwiXG5cbiAgICBjb25zdCBwb3N0RGF0YSA9IHt1c2VybmFtZSwgcGFzc3dvcmQsIGFyZ3N9XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBTZXJ2aWNlcy5jdXJyZW50KCkuc2VuZFJlcXVlc3QoXCJEZXZpc2U6OlNpZ25JblwiLCBwb3N0RGF0YSlcblxuICAgIGxldCBtb2RlbCA9IHJlc3BvbnNlLm1vZGVsXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RlbCkpIG1vZGVsID0gbW9kZWxbMF1cblxuICAgIEFwaU1ha2VyRGV2aXNlLnVwZGF0ZVNlc3Npb24obW9kZWwpXG4gICAgZXZlbnRzLmVtaXQoXCJvbkRldmlzZVNpZ25JblwiLCBPYmplY3QuYXNzaWduKHt1c2VybmFtZX0sIGFyZ3MpKVxuXG4gICAgcmV0dXJuIHttb2RlbCwgcmVzcG9uc2V9XG4gIH1cblxuICBzdGF0aWMgdXBkYXRlU2Vzc2lvbihtb2RlbCwgYXJncyA9IHt9KSB7XG4gICAgaWYgKCFhcmdzLnNjb3BlKSBhcmdzLnNjb3BlID0gXCJ1c2VyXCJcblxuICAgIGNvbnN0IGNhbWVsaXplZFNjb3BlTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoYXJncy5zY29wZSwgdHJ1ZSlcblxuICAgIEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5jdXJyZW50c1tjYW1lbGl6ZWRTY29wZU5hbWVdID0gbW9kZWxcbiAgfVxuXG4gIGhhc0N1cnJlbnRTY29wZShzY29wZSkge1xuICAgIGNvbnN0IGNhbWVsaXplZFNjb3BlTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoc2NvcGUsIHRydWUpXG5cbiAgICByZXR1cm4gY2FtZWxpemVkU2NvcGVOYW1lIGluIEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5jdXJyZW50c1xuICB9XG5cbiAgc3RhdGljIHNldFNpZ25lZE91dChhcmdzKSB7XG4gICAgQXBpTWFrZXJEZXZpc2UuY3VycmVudCgpLmN1cnJlbnRzW2luZmxlY3Rpb24uY2FtZWxpemUoYXJncy5zY29wZSwgdHJ1ZSldID0gbnVsbFxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHNpZ25PdXQoYXJncyA9IHt9KSB7XG4gICAgaWYgKCFhcmdzLnNjb3BlKSB7XG4gICAgICBhcmdzLnNjb3BlID0gXCJ1c2VyXCJcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFNlcnZpY2VzLmN1cnJlbnQoKS5zZW5kUmVxdWVzdChcIkRldmlzZTo6U2lnbk91dFwiLCB7YXJnc30pXG5cbiAgICAvLyBDYW5ub3QgdXNlIHRoZSBjbGFzcyBiZWNhdXNlIHRoZXkgd291bGQgYm90aCBpbXBvcnQgZWFjaCBvdGhlclxuICAgIGlmIChzaGFyZWQuYXBpTWFrZXJTZXNzaW9uU3RhdHVzVXBkYXRlcikge1xuICAgICAgc2hhcmVkLmFwaU1ha2VyU2Vzc2lvblN0YXR1c1VwZGF0ZXIudXBkYXRlU2Vzc2lvblN0YXR1cygpXG4gICAgfVxuXG4gICAgQXBpTWFrZXJEZXZpc2Uuc2V0U2lnbmVkT3V0KGFyZ3MpXG4gICAgQXBpTWFrZXJEZXZpc2UuY2FsbFNpZ25PdXRFdmVudChhcmdzKVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmN1cnJlbnRzID0ge31cbiAgfVxuXG4gIGdldEN1cnJlbnRTY29wZShzY29wZSkge1xuICAgIGlmICghKHNjb3BlIGluIHRoaXMuY3VycmVudHMpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRzW3Njb3BlXSA9IHRoaXMubG9hZEN1cnJlbnRTY29wZShzY29wZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50c1tzY29wZV1cbiAgfVxuXG4gIGhhc0dsb2JhbEN1cnJlbnRTY29wZShzY29wZSkge1xuICAgIGlmIChnbG9iYWxUaGlzLmFwaU1ha2VyRGV2aXNlQ3VycmVudCAmJiBzY29wZSBpbiBnbG9iYWxUaGlzLmFwaU1ha2VyRGV2aXNlQ3VycmVudCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGxvYWRDdXJyZW50U2NvcGUoc2NvcGUpIHtcbiAgICBpZiAoIXRoaXMuaGFzR2xvYmFsQ3VycmVudFNjb3BlKHNjb3BlKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBzY29wZURhdGEgPSBnbG9iYWxUaGlzLmFwaU1ha2VyRGV2aXNlQ3VycmVudFtzY29wZV1cblxuICAgIGlmICghc2NvcGVEYXRhKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgcGFyc2VkU2NvcGVEYXRhID0gRGVzZXJpYWxpemVyLnBhcnNlKHNjb3BlRGF0YSlcblxuICAgIC8vIE1pZ2h0IGJlIGEgY29sbGVjdGlvbiB3aXRoIHByZWxvYWRlZCByZWxhdGlvbnNoaXBzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkU2NvcGVEYXRhKSkgcmV0dXJuIHBhcnNlZFNjb3BlRGF0YVswXVxuXG4gICAgY29uc3QgTW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NSZXF1aXJlKHNjb3BlKVxuICAgIGNvbnN0IG1vZGVsSW5zdGFuY2UgPSBuZXcgTW9kZWxDbGFzcyh7ZGF0YTogcGFyc2VkU2NvcGVEYXRhfSlcblxuICAgIHJldHVybiBtb2RlbEluc3RhbmNlXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsWUFBWSxNQUFNLGdCQUFnQjtBQUN6QyxPQUFPQyxNQUFNLE1BQU0sVUFBVTtBQUM3QixPQUFPLEtBQUtDLFVBQVUsTUFBTSxZQUFZO0FBQ3hDLE9BQU9DLGlCQUFpQixNQUFNLHVCQUF1QjtBQUNyRCxPQUFPQyxRQUFRLE1BQU0sWUFBWTtBQUVqQyxJQUFJLENBQUNDLFVBQVUsQ0FBQ0MsY0FBYyxFQUFFRCxVQUFVLENBQUNDLGNBQWMsR0FBRztFQUFDQyxNQUFNLEVBQUUsQ0FBQztBQUFDLENBQUM7QUFFeEUsTUFBTUMsTUFBTSxHQUFHSCxVQUFVLENBQUNDLGNBQWM7QUFFeEMsZUFBZSxNQUFNQSxjQUFjLENBQUM7RUFDbEMsT0FBT0csZ0JBQWdCQSxDQUFDQyxJQUFJLEVBQUU7SUFDNUJULE1BQU0sQ0FBQ1UsSUFBSSxDQUFDLGlCQUFpQixFQUFFO01BQUNEO0lBQUksQ0FBQyxDQUFDO0VBQ3hDO0VBRUEsT0FBT0UsT0FBT0EsQ0FBQSxFQUFHO0lBQ2YsSUFBSSxDQUFDSixNQUFNLENBQUNLLHFCQUFxQixFQUFFO01BQ2pDTCxNQUFNLENBQUNLLHFCQUFxQixHQUFHLElBQUlQLGNBQWMsQ0FBQyxDQUFDO0lBQ3JEO0lBRUEsT0FBT0UsTUFBTSxDQUFDSyxxQkFBcUI7RUFDckM7RUFFQSxPQUFPWixNQUFNQSxDQUFBLEVBQUc7SUFDZCxPQUFPQSxNQUFNO0VBQ2Y7RUFFQSxPQUFPYSxZQUFZQSxDQUFDQyxLQUFLLEVBQUVMLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNwQyxNQUFNTSxpQkFBaUIsR0FBRyxVQUFVZCxVQUFVLENBQUNlLFFBQVEsQ0FBQ0YsS0FBSyxDQUFDLEVBQUU7SUFDaEUsTUFBTUcsb0JBQW9CLEdBQUcsS0FBS2hCLFVBQVUsQ0FBQ2UsUUFBUSxDQUFDRixLQUFLLENBQUMsVUFBVTtJQUN0RSxNQUFNSSxpQkFBaUIsR0FBRyxNQUFNakIsVUFBVSxDQUFDZSxRQUFRLENBQUNGLEtBQUssQ0FBQyxNQUFNO0lBRWhFVCxjQUFjLENBQUNVLGlCQUFpQixDQUFDLEdBQUcsTUFBTVYsY0FBYyxDQUFDTSxPQUFPLENBQUMsQ0FBQyxDQUFDUSxlQUFlLENBQUNMLEtBQUssQ0FBQztJQUN6RlQsY0FBYyxDQUFDWSxvQkFBb0IsQ0FBQyxHQUFHLE1BQU1HLE9BQU8sQ0FBQ2YsY0FBYyxDQUFDTSxPQUFPLENBQUMsQ0FBQyxDQUFDUSxlQUFlLENBQUNMLEtBQUssQ0FBQyxDQUFDO0lBQ3JHVCxjQUFjLENBQUNhLGlCQUFpQixDQUFDLEdBQUcsTUFBTVQsSUFBSTtFQUNoRDtFQUVBLGFBQWFZLE1BQU1BLENBQUNDLFFBQVEsRUFBRUMsUUFBUSxFQUFFZCxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDakQsSUFBSSxDQUFDQSxJQUFJLENBQUNLLEtBQUssRUFBRUwsSUFBSSxDQUFDSyxLQUFLLEdBQUcsTUFBTTtJQUVwQyxNQUFNVSxRQUFRLEdBQUc7TUFBQ0YsUUFBUTtNQUFFQyxRQUFRO01BQUVkO0lBQUksQ0FBQztJQUMzQyxNQUFNZ0IsUUFBUSxHQUFHLE1BQU10QixRQUFRLENBQUNRLE9BQU8sQ0FBQyxDQUFDLENBQUNlLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRUYsUUFBUSxDQUFDO0lBRWpGLElBQUlHLEtBQUssR0FBR0YsUUFBUSxDQUFDRSxLQUFLO0lBRTFCLElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRixLQUFLLENBQUMsRUFBRUEsS0FBSyxHQUFHQSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRTFDdEIsY0FBYyxDQUFDeUIsYUFBYSxDQUFDSCxLQUFLLENBQUM7SUFDbkMzQixNQUFNLENBQUNVLElBQUksQ0FBQyxnQkFBZ0IsRUFBRXFCLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDO01BQUNWO0lBQVEsQ0FBQyxFQUFFYixJQUFJLENBQUMsQ0FBQztJQUU5RCxPQUFPO01BQUNrQixLQUFLO01BQUVGO0lBQVEsQ0FBQztFQUMxQjtFQUVBLE9BQU9LLGFBQWFBLENBQUNILEtBQUssRUFBRWxCLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNyQyxJQUFJLENBQUNBLElBQUksQ0FBQ0ssS0FBSyxFQUFFTCxJQUFJLENBQUNLLEtBQUssR0FBRyxNQUFNO0lBRXBDLE1BQU1tQixrQkFBa0IsR0FBR2hDLFVBQVUsQ0FBQ2UsUUFBUSxDQUFDUCxJQUFJLENBQUNLLEtBQUssRUFBRSxJQUFJLENBQUM7SUFFaEVULGNBQWMsQ0FBQ00sT0FBTyxDQUFDLENBQUMsQ0FBQ3VCLFFBQVEsQ0FBQ0Qsa0JBQWtCLENBQUMsR0FBR04sS0FBSztFQUMvRDtFQUVBUSxlQUFlQSxDQUFDckIsS0FBSyxFQUFFO0lBQ3JCLE1BQU1tQixrQkFBa0IsR0FBR2hDLFVBQVUsQ0FBQ2UsUUFBUSxDQUFDRixLQUFLLEVBQUUsSUFBSSxDQUFDO0lBRTNELE9BQU9tQixrQkFBa0IsSUFBSTVCLGNBQWMsQ0FBQ00sT0FBTyxDQUFDLENBQUMsQ0FBQ3VCLFFBQVE7RUFDaEU7RUFFQSxPQUFPRSxZQUFZQSxDQUFDM0IsSUFBSSxFQUFFO0lBQ3hCSixjQUFjLENBQUNNLE9BQU8sQ0FBQyxDQUFDLENBQUN1QixRQUFRLENBQUNqQyxVQUFVLENBQUNlLFFBQVEsQ0FBQ1AsSUFBSSxDQUFDSyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJO0VBQ2pGO0VBRUEsYUFBYXVCLE9BQU9BLENBQUM1QixJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDOUIsSUFBSSxDQUFDQSxJQUFJLENBQUNLLEtBQUssRUFBRTtNQUNmTCxJQUFJLENBQUNLLEtBQUssR0FBRyxNQUFNO0lBQ3JCO0lBRUEsTUFBTVcsUUFBUSxHQUFHLE1BQU10QixRQUFRLENBQUNRLE9BQU8sQ0FBQyxDQUFDLENBQUNlLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRTtNQUFDakI7SUFBSSxDQUFDLENBQUM7O0lBRWhGO0lBQ0EsSUFBSUYsTUFBTSxDQUFDK0IsNEJBQTRCLEVBQUU7TUFDdkMvQixNQUFNLENBQUMrQiw0QkFBNEIsQ0FBQ0MsbUJBQW1CLENBQUMsQ0FBQztJQUMzRDtJQUVBbEMsY0FBYyxDQUFDK0IsWUFBWSxDQUFDM0IsSUFBSSxDQUFDO0lBQ2pDSixjQUFjLENBQUNHLGdCQUFnQixDQUFDQyxJQUFJLENBQUM7SUFFckMsT0FBT2dCLFFBQVE7RUFDakI7RUFFQWUsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osSUFBSSxDQUFDTixRQUFRLEdBQUcsQ0FBQyxDQUFDO0VBQ3BCO0VBRUFmLGVBQWVBLENBQUNMLEtBQUssRUFBRTtJQUNyQixJQUFJLEVBQUVBLEtBQUssSUFBSSxJQUFJLENBQUNvQixRQUFRLENBQUMsRUFBRTtNQUM3QixJQUFJLENBQUNBLFFBQVEsQ0FBQ3BCLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQzJCLGdCQUFnQixDQUFDM0IsS0FBSyxDQUFDO0lBQ3JEO0lBRUEsT0FBTyxJQUFJLENBQUNvQixRQUFRLENBQUNwQixLQUFLLENBQUM7RUFDN0I7RUFFQTRCLHFCQUFxQkEsQ0FBQzVCLEtBQUssRUFBRTtJQUMzQixJQUFJVixVQUFVLENBQUN1QyxxQkFBcUIsSUFBSTdCLEtBQUssSUFBSVYsVUFBVSxDQUFDdUMscUJBQXFCLEVBQUU7TUFDakYsT0FBTyxJQUFJO0lBQ2I7SUFFQSxPQUFPLEtBQUs7RUFDZDtFQUVBRixnQkFBZ0JBLENBQUMzQixLQUFLLEVBQUU7SUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQzRCLHFCQUFxQixDQUFDNUIsS0FBSyxDQUFDLEVBQUU7TUFDdEMsT0FBTyxJQUFJO0lBQ2I7SUFFQSxNQUFNOEIsU0FBUyxHQUFHeEMsVUFBVSxDQUFDdUMscUJBQXFCLENBQUM3QixLQUFLLENBQUM7SUFFekQsSUFBSSxDQUFDOEIsU0FBUyxFQUFFLE9BQU8sSUFBSTtJQUUzQixNQUFNQyxlQUFlLEdBQUc5QyxZQUFZLENBQUMrQyxLQUFLLENBQUNGLFNBQVMsQ0FBQzs7SUFFckQ7SUFDQSxJQUFJaEIsS0FBSyxDQUFDQyxPQUFPLENBQUNnQixlQUFlLENBQUMsRUFBRSxPQUFPQSxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBRTdELE1BQU1FLFVBQVUsR0FBRzdDLGlCQUFpQixDQUFDWSxLQUFLLENBQUM7SUFDM0MsTUFBTWtDLGFBQWEsR0FBRyxJQUFJRCxVQUFVLENBQUM7TUFBQ0UsSUFBSSxFQUFFSjtJQUFlLENBQUMsQ0FBQztJQUU3RCxPQUFPRyxhQUFhO0VBQ3RCO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -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+IHtcbiAgICB0aGlzLmluaXRpYWxEcmFnUG9zaXRpb24gPSBpbml0aWFsRHJhZ1Bvc2l0aW9uXG4gIH1cblxuICB1cGRhdGVQb3NpdGlvbk9mSXRlbXMoKSB7XG4gICAgbGV0IGN1cnJlbnRQb3NpdGlvbiA9IDBcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmN1cnJlbnRPcmRlcikge1xuICAgICAgY29uc3QgaXRlbURhdGEgPSB0aGlzLmdldEl0ZW1EYXRhRm9ySXRlbShpdGVtKVxuXG4gICAgICBpZiAoZGlnZyhpdGVtRGF0YSwgXCJpbmRleFwiKSAhPSBkaWdnKHRoaXMsIFwiZHJhZ2dlZEl0ZW1EYXRhXCIsIFwiaW5kZXhcIikpIHsgLy8gRG9udCBhbmltYXRlIGRyYWdnZWQgZWxlbWVudCB0byBhIG5ldyBwb3NpdGlvbiBiZWNhdXNlIGl0IGlzIGN1cnJlbnRseSBiZWluZyBkcmFnZ2VkXG4gICAgICAgIGl0ZW1EYXRhLmV2ZW50cy5lbWl0KFwibW92ZVRvUG9zaXRpb25cIiwge1xuICAgICAgICAgIHg6IGN1cnJlbnRQb3NpdGlvbixcbiAgICAgICAgICB5OiAwXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGl0ZW1EYXRhLmJhc2VYID0gY3VycmVudFBvc2l0aW9uXG4gICAgICBjdXJyZW50UG9zaXRpb24gKz0gZGlnZyhpdGVtRGF0YSwgXCJsYXlvdXRcIiwgXCJ3aWR0aFwiKVxuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxJQUFJLFFBQU8sV0FBVztBQUM5QixPQUFPQyxZQUFZLE1BQU0sUUFBUTtBQUVqQyxlQUFlLE1BQU1DLHVCQUF1QixDQUFDO0VBQzNDQyxXQUFXQSxDQUFDO0lBQUNDLElBQUk7SUFBRUMsTUFBTTtJQUFFQztFQUFZLENBQUMsRUFBRTtJQUN4QyxJQUFJLENBQUNGLElBQUksR0FBR0EsSUFBSTtJQUNoQixJQUFJLENBQUNHLFlBQVksR0FBRyxDQUFDLEdBQUdILElBQUksQ0FBQztJQUM3QixJQUFJLENBQUNDLE1BQU0sR0FBR0EsTUFBTSxJQUFJLElBQUlKLFlBQVksQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQ0ssWUFBWSxHQUFHQSxZQUFZO0lBRWhDLElBQUksQ0FBQ0UsV0FBVyxHQUFHLElBQUk7SUFDdkIsSUFBSSxDQUFDQyxlQUFlLEdBQUcsSUFBSTtJQUMzQixJQUFJLENBQUNDLHNCQUFzQixHQUFHLElBQUk7SUFFbEMsSUFBSSxDQUFDQyxlQUFlLEdBQUcsSUFBSTtJQUMzQixJQUFJLENBQUNDLG1CQUFtQixHQUFHLElBQUk7SUFFL0IsSUFBSSxDQUFDQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRWxCLEtBQUssTUFBTUMsU0FBUyxJQUFJVixJQUFJLEVBQUU7TUFDNUIsSUFBSSxDQUFDUyxRQUFRLENBQUNDLFNBQVMsQ0FBQyxHQUFHO1FBQ3pCQyxLQUFLLEVBQUVELFNBQVM7UUFDaEJFLElBQUksRUFBRVosSUFBSSxDQUFDVSxTQUFTLENBQUM7UUFDckJHLFFBQVEsRUFBRUg7TUFDWixDQUFDO0lBQ0g7RUFDRjtFQUVBSSxTQUFTLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUNiLE1BQU07RUFDN0JjLGtCQUFrQixHQUFJSCxJQUFJLElBQUssSUFBSSxDQUFDSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUNoQixJQUFJLENBQUNpQixPQUFPLENBQUNMLElBQUksQ0FBQyxDQUFDO0VBQ2hGTSxpQkFBaUIsR0FBSUMsR0FBRyxJQUFLLElBQUksQ0FBQ1YsUUFBUSxDQUFDVyxJQUFJLENBQUVDLFNBQVMsSUFBS3pCLElBQUksQ0FBQ3lCLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSUYsR0FBRyxDQUFDO0VBQzdGSCxtQkFBbUIsR0FBSUwsS0FBSyxJQUFLZixJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRWUsS0FBSyxDQUFDO0VBRTlEVyxXQUFXLEdBQUdBLENBQUM7SUFBQ1YsSUFBSTtJQUFFRjtFQUFTLENBQUMsS0FBSztJQUNuQyxJQUFJRSxJQUFJLEVBQUU7TUFDUixJQUFJLENBQUNSLFdBQVcsR0FBR1EsSUFBSTtNQUN2QixJQUFJLENBQUNQLGVBQWUsR0FBRyxJQUFJLENBQUNXLG1CQUFtQixDQUFDTixTQUFTLENBQUM7TUFDMUQsSUFBSSxDQUFDYSxnQkFBZ0IsR0FBR2IsU0FBUztNQUNqQyxJQUFJLENBQUNjLG1CQUFtQixHQUFHLElBQUksQ0FBQ25CLGVBQWUsQ0FBQ1EsUUFBUTtNQUN4RCxJQUFJLENBQUNaLE1BQU0sQ0FBQ3dCLElBQUksQ0FBQyxhQUFhLEVBQUU7UUFBQ2IsSUFBSTtRQUFFSCxRQUFRLEVBQUUsSUFBSSxDQUFDSjtNQUFlLENBQUMsQ0FBQztJQUN6RTtFQUNGLENBQUM7RUFFRHFCLFNBQVMsR0FBR0EsQ0FBQSxLQUFNO0lBQ2hCLE1BQU1qQixRQUFRLEdBQUcsSUFBSSxDQUFDSixlQUFlO0lBQ3JDLE1BQU1zQixTQUFTLEdBQUdsQixRQUFRLENBQUNFLEtBQUs7SUFDaEMsTUFBTWlCLFlBQVksR0FBR2hDLElBQUksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7SUFDdEQsTUFBTWlDLFVBQVUsR0FBRyxJQUFJLENBQUN2QixzQkFBc0I7SUFDOUMsTUFBTXdCLFFBQVEsR0FBRyxJQUFJLENBQUMxQixXQUFXO0lBQ2pDLE1BQU0yQixNQUFNLEdBQUcsSUFBSSxDQUFDeEIsZUFBZTtJQUNuQyxNQUFNeUIsWUFBWSxHQUFHO01BQUNwQixJQUFJLEVBQUVILFFBQVEsQ0FBQ0csSUFBSTtNQUFFSCxRQUFRO01BQUVrQixTQUFTO01BQUVHLFFBQVE7TUFBRUYsWUFBWTtNQUFFRyxNQUFNO01BQUVGO0lBQVUsQ0FBQztJQUUzRyxJQUFJLENBQUN4QixlQUFlLENBQUNKLE1BQU0sQ0FBQ3dCLElBQUksQ0FBQyxlQUFlLEVBQUU7TUFDaERRLFFBQVEsRUFBRUEsQ0FBQSxLQUFNO1FBQ2QsSUFBSSxDQUFDaEMsTUFBTSxDQUFDd0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFTyxZQUFZLENBQUM7TUFDdEQ7SUFDRixDQUFDLENBQUM7SUFFRixJQUFJLENBQUM1QixXQUFXLEdBQUcsSUFBSTtJQUN2QixJQUFJLENBQUNDLGVBQWUsR0FBRyxJQUFJO0lBQzNCLElBQUksQ0FBQ0Msc0JBQXNCLEdBQUcsSUFBSTtJQUVsQyxJQUFJLENBQUNDLGVBQWUsR0FBRyxJQUFJO0lBQzNCLElBQUksQ0FBQ0MsbUJBQW1CLEdBQUcsSUFBSTtJQUUvQixJQUFJLENBQUNQLE1BQU0sQ0FBQ3dCLElBQUksQ0FBQyxXQUFXLEVBQUVPLFlBQVksQ0FBQztFQUM3QyxDQUFDO0VBRURFLFlBQVksR0FBR0EsQ0FBQztJQUFDakMsTUFBTTtJQUFFVSxLQUFLO0lBQUVDLElBQUk7SUFBRXVCO0VBQU0sQ0FBQyxLQUFLO0lBQ2hELElBQUksRUFBRXhCLEtBQUssSUFBSSxJQUFJLENBQUNGLFFBQVEsQ0FBQyxFQUFFLE1BQU0sSUFBSTJCLEtBQUssQ0FBQyw0QkFBNEJ6QixLQUFLLEVBQUUsQ0FBQztJQUVuRixNQUFNRixRQUFRLEdBQUcsSUFBSSxDQUFDQSxRQUFRLENBQUNFLEtBQUssQ0FBQztJQUVyQ0YsUUFBUSxDQUFDMEIsTUFBTSxHQUFHQSxNQUFNO0lBRXhCLElBQUksQ0FBQzFCLFFBQVEsQ0FBQzRCLGFBQWEsRUFBRTtNQUMzQjVCLFFBQVEsQ0FBQzZCLEtBQUssR0FBR0gsTUFBTSxDQUFDSSxDQUFDO01BQ3pCOUIsUUFBUSxDQUFDUixNQUFNLEdBQUdBLE1BQU07TUFDeEJRLFFBQVEsQ0FBQzRCLGFBQWEsR0FBR0YsTUFBTTtNQUMvQjFCLFFBQVEsQ0FBQ1UsR0FBRyxHQUFHLElBQUksQ0FBQ2pCLFlBQVksQ0FBQ1UsSUFBSSxDQUFDO0lBQ3hDO0VBQ0YsQ0FBQztFQUVENEIsTUFBTSxHQUFHQSxDQUFDO0lBQUNDO0VBQU8sQ0FBQyxLQUFLO0lBQ3RCO0lBQ0EsSUFBSSxDQUFDcEMsZUFBZSxFQUFFSixNQUFNLEVBQUV3QixJQUFJLENBQUMsTUFBTSxFQUFFO01BQUNnQjtJQUFPLENBQUMsQ0FBQztJQUVyRCxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQ0UsRUFBRSxHQUFHLElBQUksQ0FBQ0MsbUJBQW1CLENBQUNMLENBQUM7SUFFckQsS0FBSyxNQUFNN0IsU0FBUyxJQUFJLElBQUksQ0FBQ0QsUUFBUSxFQUFFO01BQ3JDLE1BQU1BLFFBQVEsR0FBRyxJQUFJLENBQUNPLG1CQUFtQixDQUFDTixTQUFTLENBQUM7TUFDcEQsTUFBTTRCLEtBQUssR0FBRzFDLElBQUksQ0FBQ2EsUUFBUSxFQUFFLE9BQU8sQ0FBQztNQUNyQyxJQUFJb0MsYUFBYSxHQUFHLElBQUksQ0FBQ3hDLGVBQWUsQ0FBQzhCLE1BQU0sQ0FBQ1csS0FBSztNQUVyRCxJQUFJckMsUUFBUSxDQUFDMEIsTUFBTSxDQUFDVyxLQUFLLEdBQUdELGFBQWEsRUFBRUEsYUFBYSxHQUFHcEMsUUFBUSxDQUFDMEIsTUFBTSxDQUFDVyxLQUFLO01BRWhGLElBQUlKLEtBQUssR0FBR0osS0FBSyxJQUFJSSxLQUFLLEdBQUlKLEtBQUssR0FBR08sYUFBYyxJQUFJbkMsU0FBUyxJQUFJLElBQUksQ0FBQ0wsZUFBZSxDQUFDTSxLQUFLLEVBQUU7UUFDL0YsSUFBSSxDQUFDSixlQUFlLEdBQUdFLFFBQVEsQ0FBQ0csSUFBSTtRQUNwQyxJQUFJLENBQUNKLG1CQUFtQixHQUFHQyxRQUFRO1FBRW5DLE1BQU1zQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM1QyxZQUFZLENBQUNjLE9BQU8sQ0FBQyxJQUFJLENBQUNaLGVBQWUsQ0FBQ08sSUFBSSxDQUFDO1FBQ2xGLE1BQU1vQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM3QyxZQUFZLENBQUNjLE9BQU8sQ0FBQyxJQUFJLENBQUNULG1CQUFtQixDQUFDSSxJQUFJLENBQUM7UUFFbkYsSUFBSSxDQUFDVCxZQUFZLENBQUM0QyxxQkFBcUIsQ0FBQyxHQUFHLElBQUksQ0FBQ3ZDLG1CQUFtQixDQUFDSSxJQUFJO1FBQ3hFLElBQUksQ0FBQ1QsWUFBWSxDQUFDNkMsa0JBQWtCLENBQUMsR0FBRyxJQUFJLENBQUMzQyxlQUFlLENBQUNPLElBQUk7UUFFakUsSUFBSSxDQUFDUCxlQUFlLENBQUNRLFFBQVEsR0FBR21DLGtCQUFrQjtRQUNsRCxJQUFJLENBQUN4QyxtQkFBbUIsQ0FBQ0ssUUFBUSxHQUFHa0MscUJBQXFCO1FBRXpELElBQUksQ0FBQ0UscUJBQXFCLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMzQyxzQkFBc0IsR0FBRzBDLGtCQUFrQjtNQUNsRDtJQUNGO0VBQ0YsQ0FBQztFQUVERSxzQkFBc0IsR0FBSU4sbUJBQW1CLElBQUs7SUFDaEQsSUFBSSxDQUFDQSxtQkFBbUIsR0FBR0EsbUJBQW1CO0VBQ2hELENBQUM7RUFFREsscUJBQXFCQSxDQUFBLEVBQUc7SUFDdEIsSUFBSUUsZUFBZSxHQUFHLENBQUM7SUFFdkIsS0FBSyxNQUFNdkMsSUFBSSxJQUFJLElBQUksQ0FBQ1QsWUFBWSxFQUFFO01BQ3BDLE1BQU1NLFFBQVEsR0FBRyxJQUFJLENBQUNNLGtCQUFrQixDQUFDSCxJQUFJLENBQUM7TUFFOUMsSUFBSWhCLElBQUksQ0FBQ2EsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJYixJQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQUU7UUFDdkVhLFFBQVEsQ0FBQ1IsTUFBTSxDQUFDd0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1VBQ3JDYyxDQUFDLEVBQUVZLGVBQWU7VUFDbEJDLENBQUMsRUFBRTtRQUNMLENBQUMsQ0FBQztNQUNKO01BRUEzQyxRQUFRLENBQUM2QixLQUFLLEdBQUdhLGVBQWU7TUFDaENBLGVBQWUsSUFBSXZELElBQUksQ0FBQ2EsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUM7SUFDdEQ7RUFDRjtBQUNGIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -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 React, { 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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZU1lbW8iLCJBbmltYXRlZCIsIlBhblJlc3BvbmRlciIsInNoYXBlQ29tcG9uZW50IiwiU2hhcGVDb21wb25lbnQiLCJDb250cm9sbGVyIiwiRHJhZ2dhYmxlU29ydEl0ZW0iLCJFdmVudEVtaXR0ZXIiLCJtZW1vIiwiUHJvcFR5cGVzIiwicHJvcFR5cGVzRXhhY3QiLCJ1c2VFdmVudEVtaXR0ZXIiLCJEcmFnZ2FibGVTb3J0IiwiZGVmYXVsdFByb3BzIiwiaG9yaXpvbnRhbCIsInByb3BUeXBlcyIsImNhY2hlS2V5RXh0cmFjdG9yIiwiZnVuYyIsImRhdGEiLCJhcnJheSIsImlzUmVxdWlyZWQiLCJkYXRhU2V0Iiwib2JqZWN0IiwiZXZlbnRzIiwiaW5zdGFuY2VPZiIsImJvb2wiLCJrZXlFeHRyYWN0b3IiLCJvbkRyYWdJdGVtRW5kIiwib25EcmFnSXRlbVN0YXJ0Iiwib25JdGVtTW92ZWQiLCJvblJlb3JkZXJlZCIsInJlbmRlckl0ZW0iLCJzZXR1cCIsInAiLCJwcm9wcyIsImNvbnRyb2xsZXIiLCJwYW5SZXNwb25kZXIiLCJjcmVhdGUiLCJvblN0YXJ0U2hvdWxkU2V0UGFuUmVzcG9uZGVyIiwiZSIsImluaXRpYWxEcmFnUG9zaXRpb24iLCJ4IiwibmF0aXZlRXZlbnQiLCJsb2NhdGlvblgiLCJ5IiwibG9jYXRpb25ZIiwic2V0SW5pdGlhbERyYWdQb3NpdGlvbiIsImRyYWdnZWRJdGVtRGF0YSIsIm9uUGFuUmVzcG9uZGVyTW92ZSIsImdlc3RhdGUiLCJ0dCIsIm9uTW92ZSIsIm9uUGFuUmVzcG9uZGVyUmVsZWFzZSIsImRyYWdnZWRJdGVtIiwib25EcmFnRW5kIiwiZ2V0RXZlbnRzIiwicmVuZGVyIiwiYWN0dWFsRGF0YVNldCIsIk9iamVjdCIsImFzc2lnbiIsImNvbXBvbmVudCIsImNyZWF0ZUVsZW1lbnQiLCJWaWV3IiwiX2V4dGVuZHMiLCJzdHlsZSIsImZsZXhEaXJlY3Rpb24iLCJwYW5IYW5kbGVycyIsIm1hcCIsIml0ZW0iLCJpdGVtSW5kZXgiLCJjYWNoZUtleSIsInVuZGVmaW5lZCIsImtleSIsIml0ZW1EYXRhIiwiYXJncyIsInRvUG9zaXRpb24iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZHJhZ2dhYmxlLXNvcnQvaW5kZXguanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge0FuaW1hdGVkLCBQYW5SZXNwb25kZXJ9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudCwgU2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvc2hhcGUtY29tcG9uZW50XCJcbmltcG9ydCBDb250cm9sbGVyIGZyb20gXCIuL2NvbnRyb2xsZXJcIlxuaW1wb3J0IERyYWdnYWJsZVNvcnRJdGVtIGZyb20gXCIuL2l0ZW1cIlxuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tIFwiZXZlbnRzXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCIuLi91c2UtZXZlbnQtZW1pdHRlclwiXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgRHJhZ2dhYmxlU29ydCBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBob3Jpem9udGFsOiBmYWxzZVxuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjYWNoZUtleUV4dHJhY3RvcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZGF0YTogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gICAgZGF0YVNldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBldmVudHM6IFByb3BUeXBlcy5pbnN0YW5jZU9mKEV2ZW50RW1pdHRlciksXG4gICAgaG9yaXpvbnRhbDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBrZXlFeHRyYWN0b3I6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25EcmFnSXRlbUVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25EcmFnSXRlbVN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkl0ZW1Nb3ZlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25SZW9yZGVyZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgcmVuZGVySXRlbTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICB9KVxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHtkYXRhLCBrZXlFeHRyYWN0b3J9ID0gdGhpcy5wXG4gICAgY29uc3Qge2V2ZW50c30gPSB0aGlzLnByb3BzXG5cbiAgICB0aGlzLmNvbnRyb2xsZXIgPSB1c2VNZW1vKCgpID0+IG5ldyBDb250cm9sbGVyKHtkYXRhLCBldmVudHMsIGtleUV4dHJhY3Rvcn0pLCBbXSlcbiAgICB0aGlzLnBhblJlc3BvbmRlciA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiBQYW5SZXNwb25kZXIuY3JlYXRlKHtcbiAgICAgICAgb25TdGFydFNob3VsZFNldFBhblJlc3BvbmRlcjogKGUpID0+IHtcbiAgICAgICAgICBjb25zdCBpbml0aWFsRHJhZ1Bvc2l0aW9uID0ge3g6IGUubmF0aXZlRXZlbnQubG9jYXRpb25YLCB5OiBlLm5hdGl2ZUV2ZW50LmxvY2F0aW9uWX1cblxuICAgICAgICAgIHRoaXMuY29udHJvbGxlci5zZXRJbml0aWFsRHJhZ1Bvc2l0aW9uKGluaXRpYWxEcmFnUG9zaXRpb24pXG5cbiAgICAgICAgICBpZiAodGhpcy5jb250cm9sbGVyLmRyYWdnZWRJdGVtRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uUGFuUmVzcG9uZGVyTW92ZTogKGUsIGdlc3RhdGUpID0+IHtcbiAgICAgICAgICB0aGlzLnR0LmNvbnRyb2xsZXIub25Nb3ZlKHtnZXN0YXRlfSlcbiAgICAgICAgfSxcbiAgICAgICAgb25QYW5SZXNwb25kZXJSZWxlYXNlOiAoZSwgZ2VzdGF0ZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xsZXIuZHJhZ2dlZEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMudHQuY29udHJvbGxlci5vbkRyYWdFbmQoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBbXVxuICAgIClcblxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLmNvbnRyb2xsZXIuZ2V0RXZlbnRzKCksIFwib25EcmFnU3RhcnRcIiwgdGhpcy50dC5vbkRyYWdJdGVtU3RhcnQpXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMuY29udHJvbGxlci5nZXRFdmVudHMoKSwgXCJvbkRyYWdFbmRcIiwgdGhpcy50dC5vbkRyYWdJdGVtRW5kKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtkYXRhLCBob3Jpem9udGFsLCBrZXlFeHRyYWN0b3IsIHJlbmRlckl0ZW19ID0gdGhpcy5wXG4gICAgY29uc3Qge2NhY2hlS2V5RXh0cmFjdG9yLCBkYXRhU2V0fSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBhY3R1YWxEYXRhU2V0ID0gdXNlTWVtbyhcbiAgICAgICgpID0+IE9iamVjdC5hc3NpZ24oXG4gICAgICAgIHtcbiAgICAgICAgICBjb21wb25lbnQ6IFwiZHJhZ2dhYmxlLXNvcnRcIlxuICAgICAgICB9LFxuICAgICAgICBkYXRhU2V0XG4gICAgICApLFxuICAgICAgW2RhdGFTZXRdXG4gICAgKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBbmltYXRlZC5WaWV3IGRhdGFTZXQ9e2FjdHVhbERhdGFTZXR9IHN0eWxlPXt7ZmxleERpcmVjdGlvbjogaG9yaXpvbnRhbCA/IFwicm93XCIgOiBcImNvbHVtblwifX0gey4uLnRoaXMudHQucGFuUmVzcG9uZGVyLnBhbkhhbmRsZXJzfT5cbiAgICAgICAge2RhdGEubWFwKChpdGVtLCBpdGVtSW5kZXgpID0+XG4gICAgICAgICAgPERyYWdnYWJsZVNvcnRJdGVtXG4gICAgICAgICAgICBjYWNoZUtleT17Y2FjaGVLZXlFeHRyYWN0b3IgPyBjYWNoZUtleUV4dHJhY3RvcihpdGVtKSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgIGNvbnRyb2xsZXI9e3RoaXMudHQuY29udHJvbGxlcn1cbiAgICAgICAgICAgIGl0ZW09e2l0ZW19XG4gICAgICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgICAgIGtleT17a2V5RXh0cmFjdG9yKGl0ZW0pfVxuICAgICAgICAgICAgb25JdGVtTW92ZWQ9e3RoaXMucHJvcHMub25JdGVtTW92ZWR9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXtyZW5kZXJJdGVtfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0FuaW1hdGVkLlZpZXc+XG4gICAgKVxuICB9XG5cbiAgb25EcmFnSXRlbVN0YXJ0ID0gKHtpdGVtRGF0YX0pID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkRyYWdJdGVtU3RhcnQpIHtcbiAgICAgIHRoaXMucC5vbkRyYWdJdGVtU3RhcnQoe2l0ZW1EYXRhfSlcbiAgICB9XG4gIH1cblxuICBvbkRyYWdJdGVtRW5kID0gKGFyZ3MpID0+IHtcbiAgICBpZiAoYXJncy50b1Bvc2l0aW9uICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnAub25SZW9yZGVyZWQoYXJncylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vbkRyYWdJdGVtRW5kKSB7XG4gICAgICB0aGlzLnAub25EcmFnSXRlbUVuZChhcmdzKVxuICAgIH1cbiAgfVxufSkpXG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxLQUFLLElB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
|