@kaspernj/api-maker 1.0.445 → 1.0.447
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{.eslintrc.cjs → .eslintrc.js} +4 -0
- package/README.md +35 -0
- package/android/build.gradle +43 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/expo/modules/api_maker/ApiMakerModule.kt +50 -0
- package/android/src/main/java/expo/modules/api_maker/ApiMakerView.kt +30 -0
- package/build/api.js +120 -0
- package/build/attribute-not-loaded-error.js +2 -0
- package/build/base-component.js +5 -0
- package/build/base-error.js +33 -0
- package/build/base-model/attribute.js +25 -0
- package/build/base-model/column.js +11 -0
- package/build/base-model/reflection.js +14 -0
- package/build/base-model/scope.js +11 -0
- package/build/base-model.js +828 -0
- package/build/bootstrap/attribute-row/index.js +105 -0
- package/build/bootstrap/attribute-rows.js +31 -0
- package/build/bootstrap/card.js +138 -0
- package/build/bootstrap/checkbox.js +97 -0
- package/build/bootstrap/checkboxes.js +183 -0
- package/build/bootstrap/index.js +2 -0
- package/build/bootstrap/input.js +128 -0
- package/build/bootstrap/invalid-feedback.js +27 -0
- package/build/bootstrap/paginate.js +150 -0
- package/build/bootstrap/radio-buttons.js +72 -0
- package/build/bootstrap/select.js +88 -0
- package/build/bootstrap/sort-link.js +130 -0
- package/build/cable-connection-pool.js +128 -0
- package/build/cable-subscription-pool.js +207 -0
- package/build/cable-subscription.js +21 -0
- package/build/cache-key-generator.js +81 -0
- package/build/can-can.js +134 -0
- package/build/channels-consumer.js +3 -0
- package/build/collection-loader.js +48 -0
- package/build/collection.js +279 -0
- package/build/command-submit-data.js +81 -0
- package/build/commands-pool.js +195 -0
- package/build/compose.js +9 -0
- package/build/config.js +53 -0
- package/build/custom-error.js +5 -0
- package/build/data-set-to-attributes.js +10 -0
- package/build/deserializer.js +56 -0
- package/build/destroy-error.js +5 -0
- package/build/devise.js +109 -0
- package/build/draggable-sort/controller.js +136 -0
- package/build/draggable-sort/index.js +114 -0
- package/build/draggable-sort/item.js +188 -0
- package/build/error-logger.js +101 -0
- package/build/error-messages.js +13 -0
- package/build/event-connection.js +32 -0
- package/build/event-model-class.js +24 -0
- package/build/events.js +5 -0
- package/build/form.js +83 -0
- package/build/index.js +3 -0
- package/build/inputs/attachment.js +121 -0
- package/build/inputs/auto-submit.js +36 -0
- package/build/inputs/checkbox.js +145 -0
- package/build/inputs/checkboxes.js +111 -0
- package/build/inputs/id-for-component.js +15 -0
- package/build/inputs/input-wrapper.js +18 -0
- package/build/inputs/input.js +230 -0
- package/build/inputs/money.js +179 -0
- package/build/inputs/name-for-component.js +13 -0
- package/build/inputs/select.js +92 -0
- package/build/instance-of-class-name.js +23 -0
- package/build/key-value-store.js +53 -0
- package/build/link.js +68 -0
- package/build/logger.js +30 -0
- package/build/modal.js +37 -0
- package/build/model-class-require.js +13 -0
- package/build/model-events.js +30 -0
- package/build/model-name.js +28 -0
- package/build/model-prop-type.js +101 -0
- package/build/model-recipes-loader.js +32 -0
- package/build/model-recipes-model-loader.js +357 -0
- package/build/models-response-reader.js +40 -0
- package/build/models.js +8 -0
- package/build/money-formatter.js +77 -0
- package/build/not-loaded-error.js +2 -0
- package/build/params.js +60 -0
- package/build/preloaded.js +38 -0
- package/build/resize-observer.js +11 -0
- package/build/result.js +13 -0
- package/build/router/route.js +262 -0
- package/build/router/switch.js +72 -0
- package/build/router.js +57 -0
- package/build/routes-native.js +202 -0
- package/build/routes.js +50 -0
- package/build/run-last.js +35 -0
- package/build/serializer.js +63 -0
- package/build/services.js +20 -0
- package/build/session-status-updater.js +126 -0
- package/build/source-maps-loader.js +171 -0
- package/build/super-admin/config-reader.js +84 -0
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
- package/build/super-admin/edit-page/edit-attribute-content.js +54 -0
- package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
- package/build/super-admin/edit-page/edit-attribute.js +76 -0
- package/build/super-admin/edit-page.js +120 -0
- package/build/super-admin/has-edit-config.js +12 -0
- package/build/super-admin/index-page.js +24 -0
- package/build/super-admin/index.js +180 -0
- package/build/super-admin/layout/header/index.js +151 -0
- package/build/super-admin/layout/index.js +109 -0
- package/build/super-admin/layout/menu/index.js +93 -0
- package/build/super-admin/layout/menu/menu-content.js +40 -0
- package/build/super-admin/layout/menu/menu-item.js +83 -0
- package/build/super-admin/layout/no-access.js +25 -0
- package/build/super-admin/model-class-table.js +61 -0
- package/build/super-admin/models.js +8 -0
- package/build/super-admin/show-nav.js +49 -0
- package/build/super-admin/show-page/belongs-to-attribute-row.js +28 -0
- package/build/super-admin/show-page/index.js +141 -0
- package/build/super-admin/show-reflection-actions.js +47 -0
- package/build/super-admin/show-reflection-link.js +46 -0
- package/build/super-admin/show-reflection-page.js +47 -0
- package/build/table/column-content.js +112 -0
- package/build/table/column-identifier.js +18 -0
- package/build/table/column-visible.js +7 -0
- package/build/table/components/column.js +20 -0
- package/build/table/components/flat-list.js +20 -0
- package/build/table/components/header.js +25 -0
- package/build/table/components/row.js +25 -0
- package/build/table/filters/attribute-element.js +43 -0
- package/build/table/filters/filter-form.js +392 -0
- package/build/table/filters/filter.js +89 -0
- package/build/table/filters/index.js +182 -0
- package/build/table/filters/load-search-modal.js +174 -0
- package/build/table/filters/reflection-element.js +36 -0
- package/build/table/filters/save-search-modal.js +86 -0
- package/build/table/filters/scope-element.js +41 -0
- package/build/table/header-column-content.js +67 -0
- package/build/table/header-column.js +144 -0
- package/build/table/header-select.js +104 -0
- package/build/table/model-callback-args.js +10 -0
- package/build/table/model-column.js +87 -0
- package/build/table/model-row.js +179 -0
- package/build/table/select-calculator.js +63 -0
- package/build/table/settings/column-row.js +97 -0
- package/build/table/settings/download-action.js +78 -0
- package/build/table/settings/index.js +92 -0
- package/build/table/table-settings.js +219 -0
- package/build/table/table.js +972 -0
- package/build/table/use-sorting.js +34 -0
- package/build/table/widths.js +75 -0
- package/build/table/worker-plugins-check-all-checkbox.js +125 -0
- package/build/table/worker-plugins-checkbox.js +115 -0
- package/build/translated-attributes.js +10 -0
- package/build/translated-collections.js +11 -0
- package/build/updated-attribute.js +76 -0
- package/build/url-encode.js +15 -0
- package/build/use-breakpoint.js +44 -0
- package/build/use-can-can.js +55 -0
- package/build/use-collection.js +225 -0
- package/build/use-created-event.js +52 -0
- package/build/use-current-user.js +73 -0
- package/build/use-destroyed-event.js +60 -0
- package/build/use-event-emitter.js +13 -0
- package/build/use-event-listener.js +16 -0
- package/build/use-input.js +140 -0
- package/build/use-model-event.js +60 -0
- package/build/use-model.js +169 -0
- package/build/use-resize-observer.js +23 -0
- package/build/use-router.js +102 -0
- package/build/use-screen-layout.js +39 -0
- package/build/use-updated-event.js +60 -0
- package/build/use-validation-errors.js +30 -0
- package/build/utils/card.js +51 -0
- package/build/utils/checkbox.js +48 -0
- package/build/utils/default-style.js +18 -0
- package/build/utils/modal.js +61 -0
- package/build/utils/text.js +18 -0
- package/build/validation-error.js +28 -0
- package/build/validation-errors.js +98 -0
- package/build/with-collection.js +13 -0
- package/build/with-current-user.js +9 -0
- package/build/with-model.js +14 -0
- package/build/with-router.js +21 -0
- package/expo-module.config.json +17 -0
- package/ios/ApiMaker.podspec +29 -0
- package/ios/ApiMakerModule.swift +48 -0
- package/ios/ApiMakerView.swift +38 -0
- package/package.json +35 -14
- package/src/{api.mjs → api.js} +5 -5
- package/src/{base-error.mjs → base-error.js} +1 -1
- package/src/base-model/{attribute.mjs → attribute.js} +1 -1
- package/src/base-model/{reflection.mjs → reflection.js} +1 -1
- package/src/{base-model.mjs → base-model.js} +14 -14
- package/src/bootstrap/attribute-row/index.jsx +2 -2
- package/src/bootstrap/attribute-rows.jsx +1 -1
- package/src/bootstrap/card.jsx +1 -1
- package/src/bootstrap/checkbox.jsx +1 -1
- package/src/bootstrap/checkboxes.jsx +1 -1
- package/src/bootstrap/input.jsx +1 -1
- package/src/bootstrap/paginate.jsx +2 -2
- package/src/bootstrap/sort-link.jsx +3 -3
- package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +3 -3
- package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +4 -4
- package/src/{cable-subscription.mjs → cable-subscription.js} +1 -1
- package/src/{can-can.mjs → can-can.js} +1 -1
- package/src/collection-loader.jsx +2 -2
- package/src/{collection.mjs → collection.js} +3 -3
- package/src/{commands-pool.mjs → commands-pool.js} +11 -11
- package/src/{custom-error.mjs → custom-error.js} +1 -1
- package/src/{deserializer.mjs → deserializer.js} +2 -2
- package/src/{destroy-error.mjs → destroy-error.js} +1 -1
- package/src/{devise.mjs → devise.js} +5 -9
- package/src/draggable-sort/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} +1 -1
- package/src/event-connection.jsx +1 -1
- package/src/event-model-class.jsx +1 -1
- package/src/form.jsx +1 -1
- package/src/index.js +3 -0
- package/src/inputs/attachment.jsx +2 -2
- package/src/inputs/checkbox.jsx +7 -6
- package/src/inputs/checkboxes.jsx +1 -1
- package/src/inputs/input-wrapper.jsx +1 -1
- package/src/inputs/input.jsx +8 -7
- package/src/inputs/money.jsx +3 -3
- package/src/inputs/select.jsx +1 -1
- package/src/{key-value-store.mjs → key-value-store.js} +1 -1
- package/src/link.jsx +2 -2
- package/src/modal.jsx +1 -1
- package/src/{model-class-require.mjs → model-class-require.js} +4 -2
- package/src/{model-events.mjs → model-events.js} +1 -1
- package/src/{model-name.mjs → model-name.js} +1 -1
- package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
- package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +2 -2
- package/src/{models-response-reader.mjs → models-response-reader.js} +2 -2
- package/src/models.js +7 -0
- package/src/{models.mjs.erb → models.js.erb} +1 -1
- package/src/{params.mjs → params.js} +2 -2
- package/src/{preloaded.mjs → preloaded.js} +1 -1
- package/src/resize-observer.jsx +1 -1
- package/src/router/route.jsx +1 -1
- package/src/router/switch.jsx +1 -1
- package/src/router.jsx +1 -1
- package/src/{routes-native.mjs → routes-native.js} +1 -1
- package/src/{services.mjs → services.js} +1 -1
- package/src/{session-status-updater.mjs → session-status-updater.js} +3 -3
- package/src/{source-maps-loader.mjs → source-maps-loader.js} +1 -1
- package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute-content.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute-input.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute.jsx +1 -1
- package/src/super-admin/edit-page.jsx +2 -2
- package/src/super-admin/has-edit-config.js +1 -1
- package/src/super-admin/index-page.jsx +1 -1
- package/src/super-admin/index.jsx +7 -7
- package/src/super-admin/layout/header/index.jsx +2 -2
- package/src/super-admin/layout/index.jsx +3 -3
- package/src/super-admin/layout/menu/index.jsx +3 -3
- package/src/super-admin/layout/menu/menu-content.jsx +2 -2
- package/src/super-admin/layout/menu/{menu-item/index.jsx → menu-item.jsx} +5 -6
- package/src/super-admin/layout/no-access.jsx +2 -2
- package/src/super-admin/model-class-table.jsx +3 -3
- package/src/super-admin/models.js +1 -1
- package/src/super-admin/show-nav.jsx +2 -2
- package/src/super-admin/show-page/belongs-to-attribute-row.jsx +1 -1
- package/src/super-admin/show-page/index.jsx +2 -2
- package/src/super-admin/show-reflection-actions.jsx +1 -1
- package/src/super-admin/show-reflection-link.jsx +1 -1
- package/src/super-admin/show-reflection-page.jsx +1 -1
- package/src/table/column-content.jsx +1 -1
- package/src/table/components/column.jsx +8 -2
- package/src/table/components/header.jsx +2 -2
- package/src/table/filters/filter-form.jsx +1 -1
- package/src/table/filters/index.jsx +5 -3
- package/src/table/filters/load-search-modal.jsx +6 -4
- package/src/table/filters/save-search-modal.jsx +4 -4
- package/src/table/header-column.jsx +59 -79
- package/src/table/header-select.jsx +1 -1
- package/src/table/model-column.jsx +12 -6
- package/src/table/model-row.jsx +11 -7
- package/src/table/{select-calculator.mjs → select-calculator.js} +1 -1
- package/src/table/settings/column-row.jsx +4 -3
- package/src/table/settings/download-action.jsx +3 -3
- package/src/table/settings/index.jsx +3 -3
- package/src/table/table-settings.js +5 -4
- package/src/table/table.jsx +149 -71
- package/src/table/{use-sorting.mjs → use-sorting.js} +1 -1
- package/src/table/{widths.mjs → widths.jsx} +11 -2
- package/src/table/worker-plugins-check-all-checkbox.jsx +2 -2
- package/src/table/worker-plugins-checkbox.jsx +2 -2
- package/src/{translated-collections.mjs → translated-collections.js} +1 -1
- package/src/updated-attribute.jsx +1 -1
- package/src/{use-breakpoint.mjs → use-breakpoint.js} +2 -2
- package/src/use-can-can.js +55 -0
- package/src/{use-collection.mjs → use-collection.js} +4 -4
- package/src/{use-created-event.mjs → use-created-event.js} +2 -2
- package/src/{use-current-user.mjs → use-current-user.js} +6 -5
- package/src/{use-destroyed-event.mjs → use-destroyed-event.js} +2 -2
- package/src/{use-input.mjs → use-input.js} +5 -5
- package/src/use-model-event.js +2 -2
- package/src/{use-model.mjs → use-model.js} +4 -4
- package/src/{use-resize-observer.mjs → use-resize-observer.js} +1 -1
- package/src/use-router.jsx +2 -2
- package/src/{use-updated-event.mjs → use-updated-event.js} +2 -2
- package/src/{use-validation-errors.mjs → use-validation-errors.js} +3 -3
- package/src/utils/checkbox.jsx +2 -2
- package/src/{validation-error.mjs → validation-error.js} +1 -1
- package/src/{validation-errors.mjs → validation-errors.js} +1 -1
- package/src/with-current-user.jsx +1 -1
- package/src/with-model.jsx +1 -1
- package/__tests__/base-model.test.mjs +0 -71
- package/__tests__/cable-connection-pool.test.mjs +0 -227
- package/__tests__/cable-subscription-pool.test.mjs +0 -27
- package/__tests__/can-can.test.mjs +0 -34
- package/__tests__/collection.test.mjs +0 -51
- package/__tests__/custom-error.test.mjs +0 -13
- package/__tests__/model-name.test.mjs +0 -34
- package/__tests__/model-prop-type.test.mjs +0 -113
- package/__tests__/params.test.mjs +0 -40
- package/__tests__/routes-native.test.mjs +0 -104
- package/__tests__/routes.test.mjs +0 -47
- package/__tests__/serializer.test.mjs +0 -30
- package/__tests__/support/task.mjs +0 -27
- package/__tests__/support/user.mjs +0 -32
- package/index.js +0 -1
- package/jest.config.js +0 -9
- package/src/event-created.jsx +0 -12
- package/src/event-destroyed.jsx +0 -25
- package/src/event-emitter-listener.jsx +0 -10
- package/src/event-listener.jsx +0 -25
- package/src/event-updated.jsx +0 -27
- package/src/super-admin/layout/menu/menu-item/style.scss +0 -10
- package/src/use-can-can.mjs +0 -48
- package/src/with-can-can.jsx +0 -12
- package/webpack.config.js +0 -15
- /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
- /package/src/base-model/{column.mjs → column.js} +0 -0
- /package/src/base-model/{scope.mjs → scope.js} +0 -0
- /package/src/{cache-key-generator.mjs → cache-key-generator.js} +0 -0
- /package/src/{channels-consumer.mjs → channels-consumer.js} +0 -0
- /package/src/{command-submit-data.mjs → command-submit-data.js} +0 -0
- /package/src/{config.mjs → config.js} +0 -0
- /package/src/{data-set-to-attributes.mjs → data-set-to-attributes.js} +0 -0
- /package/src/{error-messages.mjs → error-messages.js} +0 -0
- /package/src/{events.mjs → events.js} +0 -0
- /package/src/inputs/{auto-submit.mjs → auto-submit.js} +0 -0
- /package/src/inputs/{id-for-component.mjs → id-for-component.js} +0 -0
- /package/src/inputs/{name-for-component.mjs → name-for-component.js} +0 -0
- /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
- /package/src/{logger.mjs → logger.js} +0 -0
- /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
- /package/src/{money-formatter.mjs → money-formatter.js} +0 -0
- /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
- /package/src/{result.mjs → result.js} +0 -0
- /package/src/{routes.mjs → routes.js} +0 -0
- /package/src/{run-last.mjs → run-last.js} +0 -0
- /package/src/{serializer.mjs → serializer.js} +0 -0
- /package/src/table/{column-identifier.mjs → column-identifier.js} +0 -0
- /package/src/table/{column-visible.mjs → column-visible.js} +0 -0
- /package/src/table/{model-callback-args.mjs → model-callback-args.js} +0 -0
- /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
- /package/src/{url-encode.mjs → url-encode.js} +0 -0
- /package/src/{use-event-emitter.mjs → use-event-emitter.js} +0 -0
- /package/src/{use-event-listener.mjs → use-event-listener.js} +0 -0
- /package/src/{use-screen-layout.mjs → use-screen-layout.js} +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import ExpoModulesCore
|
|
2
|
+
|
|
3
|
+
public class ApiMakerModule: Module {
|
|
4
|
+
// Each module class must implement the definition function. The definition consists of components
|
|
5
|
+
// that describes the module's functionality and behavior.
|
|
6
|
+
// See https://docs.expo.dev/modules/module-api for more details about available components.
|
|
7
|
+
public func definition() -> ModuleDefinition {
|
|
8
|
+
// Sets the name of the module that JavaScript code will use to refer to the module. Takes a string as an argument.
|
|
9
|
+
// Can be inferred from module's class name, but it's recommended to set it explicitly for clarity.
|
|
10
|
+
// The module will be accessible from `requireNativeModule('ApiMaker')` in JavaScript.
|
|
11
|
+
Name("ApiMaker")
|
|
12
|
+
|
|
13
|
+
// Sets constant properties on the module. Can take a dictionary or a closure that returns a dictionary.
|
|
14
|
+
Constants([
|
|
15
|
+
"PI": Double.pi
|
|
16
|
+
])
|
|
17
|
+
|
|
18
|
+
// Defines event names that the module can send to JavaScript.
|
|
19
|
+
Events("onChange")
|
|
20
|
+
|
|
21
|
+
// Defines a JavaScript synchronous function that runs the native code on the JavaScript thread.
|
|
22
|
+
Function("hello") {
|
|
23
|
+
return "Hello world! 👋"
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Defines a JavaScript function that always returns a Promise and whose native code
|
|
27
|
+
// is by default dispatched on the different thread than the JavaScript runtime runs on.
|
|
28
|
+
AsyncFunction("setValueAsync") { (value: String) in
|
|
29
|
+
// Send an event to JavaScript.
|
|
30
|
+
self.sendEvent("onChange", [
|
|
31
|
+
"value": value
|
|
32
|
+
])
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Enables the module to be used as a native view. Definition components that are accepted as part of the
|
|
36
|
+
// view definition: Prop, Events.
|
|
37
|
+
View(ApiMakerView.self) {
|
|
38
|
+
// Defines a setter for the `url` prop.
|
|
39
|
+
Prop("url") { (view: ApiMakerView, url: URL) in
|
|
40
|
+
if view.webView.url != url {
|
|
41
|
+
view.webView.load(URLRequest(url: url))
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
Events("onLoad")
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import ExpoModulesCore
|
|
2
|
+
import WebKit
|
|
3
|
+
|
|
4
|
+
// This view will be used as a native component. Make sure to inherit from `ExpoView`
|
|
5
|
+
// to apply the proper styling (e.g. border radius and shadows).
|
|
6
|
+
class ApiMakerView: ExpoView {
|
|
7
|
+
let webView = WKWebView()
|
|
8
|
+
let onLoad = EventDispatcher()
|
|
9
|
+
var delegate: WebViewDelegate?
|
|
10
|
+
|
|
11
|
+
required init(appContext: AppContext? = nil) {
|
|
12
|
+
super.init(appContext: appContext)
|
|
13
|
+
clipsToBounds = true
|
|
14
|
+
delegate = WebViewDelegate { url in
|
|
15
|
+
self.onLoad(["url": url])
|
|
16
|
+
}
|
|
17
|
+
webView.navigationDelegate = delegate
|
|
18
|
+
addSubview(webView)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
override func layoutSubviews() {
|
|
22
|
+
webView.frame = bounds
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
class WebViewDelegate: NSObject, WKNavigationDelegate {
|
|
27
|
+
let onUrlChange: (String) -> Void
|
|
28
|
+
|
|
29
|
+
init(onUrlChange: @escaping (String) -> Void) {
|
|
30
|
+
self.onUrlChange = onUrlChange
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation) {
|
|
34
|
+
if let url = webView.url {
|
|
35
|
+
onUrlChange(url.absoluteString)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
package/package.json
CHANGED
|
@@ -1,24 +1,38 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaspernj/api-maker",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
3
|
+
"version": "1.0.447",
|
|
4
|
+
"description": "My new module",
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "babel src --out-dir build --extensions \".js,.jsx\" --source-maps inline",
|
|
8
|
+
"build-expo": "expo-module build",
|
|
9
|
+
"clean": "expo-module clean",
|
|
10
|
+
"lint": "expo-module lint",
|
|
11
|
+
"test": "expo-module test",
|
|
12
|
+
"prepare": "npm run clean && npm run build",
|
|
13
|
+
"prepublishOnly": "expo-module prepublishOnly",
|
|
14
|
+
"expo-module": "expo-module",
|
|
15
|
+
"open:ios": "xed example/ios",
|
|
16
|
+
"open:android": "open -a \"Android Studio\" example/android",
|
|
17
|
+
"eslint": "eslint --ext .js,.jsx",
|
|
18
|
+
"eslint-find-rules": "eslint-find-rules"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"react-native",
|
|
22
|
+
"expo",
|
|
23
|
+
"api-maker",
|
|
24
|
+
"ApiMaker"
|
|
25
|
+
],
|
|
7
26
|
"repository": {
|
|
8
27
|
"type": "git",
|
|
9
28
|
"url": "git+https://github.com/kaspernj/api_maker.git"
|
|
10
29
|
},
|
|
11
|
-
"author": "kaspernj",
|
|
12
|
-
"license": "ISC",
|
|
13
30
|
"bugs": {
|
|
14
31
|
"url": "https://github.com/kaspernj/api_maker/issues"
|
|
15
32
|
},
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
"eslint-find-rules": "eslint-find-rules",
|
|
20
|
-
"test": "node --experimental-vm-modules ./node_modules/.bin/jest"
|
|
21
|
-
},
|
|
33
|
+
"author": "kaspernj <kasper@diestoeckels.de> (github.com/kaspernj)",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"homepage": "https://github.com/kaspernj/api_maker#readme",
|
|
22
36
|
"dependencies": {
|
|
23
37
|
"clone-deep": ">= 4.0.1",
|
|
24
38
|
"debounce": ">= 2.0.0",
|
|
@@ -47,14 +61,21 @@
|
|
|
47
61
|
"devDependencies": {
|
|
48
62
|
"@babel/eslint-parser": "^7.16.3",
|
|
49
63
|
"@babel/preset-env": "^7.12.11",
|
|
50
|
-
"@babel/preset-react": "^7.
|
|
64
|
+
"@babel/preset-react": "^7.26.3",
|
|
51
65
|
"babel-jest": "^29.0.1",
|
|
52
66
|
"eslint": "^8.2.0",
|
|
53
67
|
"eslint-find-rules": "^4.0.0",
|
|
54
68
|
"eslint-plugin-jest": "^28.2.0",
|
|
55
69
|
"eslint-plugin-react": "^7.23.2",
|
|
70
|
+
"expo": "~52.0.0",
|
|
71
|
+
"expo-module-scripts": "^4.0.2",
|
|
56
72
|
"i18n-on-steroids": "^1.0.15",
|
|
57
73
|
"jest": "^29.0.1",
|
|
58
|
-
"
|
|
74
|
+
"react-native": "0.76.0"
|
|
75
|
+
},
|
|
76
|
+
"peerDependencies": {
|
|
77
|
+
"expo": "*",
|
|
78
|
+
"react": "*",
|
|
79
|
+
"react-native": "*"
|
|
59
80
|
}
|
|
60
81
|
}
|
package/src/{api.mjs → api.js}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import config from "./config
|
|
2
|
-
import CustomError from "./custom-error
|
|
1
|
+
import config from "./config"
|
|
2
|
+
import CustomError from "./custom-error"
|
|
3
3
|
import FormDataObjectizer from "form-data-objectizer"
|
|
4
|
-
import Logger from "./logger
|
|
4
|
+
import Logger from "./logger"
|
|
5
5
|
import qs from "qs"
|
|
6
|
-
import SessionStatusUpdater from "./session-status-updater
|
|
7
|
-
import urlEncode from "./url-encode
|
|
6
|
+
import SessionStatusUpdater from "./session-status-updater"
|
|
7
|
+
import urlEncode from "./url-encode"
|
|
8
8
|
|
|
9
9
|
const logger = new Logger({name: "ApiMaker / Api"})
|
|
10
10
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {digg} from "diggerize"
|
|
2
2
|
import * as inflection from "inflection"
|
|
3
|
-
import modelClassRequire from "../model-class-require
|
|
3
|
+
import modelClassRequire from "../model-class-require"
|
|
4
4
|
|
|
5
5
|
export default class ApiMakerBaseModelReflection {
|
|
6
6
|
constructor(reflectionData) {
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import Attribute from "./base-model/attribute
|
|
2
|
-
import AttributeNotLoadedError from "./attribute-not-loaded-error
|
|
3
|
-
import CacheKeyGenerator from "./cache-key-generator
|
|
4
|
-
import Collection from "./collection
|
|
5
|
-
import CommandsPool from "./commands-pool
|
|
6
|
-
import Config from "./config
|
|
7
|
-
import CustomError from "./custom-error
|
|
1
|
+
import Attribute from "./base-model/attribute"
|
|
2
|
+
import AttributeNotLoadedError from "./attribute-not-loaded-error"
|
|
3
|
+
import CacheKeyGenerator from "./cache-key-generator"
|
|
4
|
+
import Collection from "./collection"
|
|
5
|
+
import CommandsPool from "./commands-pool"
|
|
6
|
+
import Config from "./config"
|
|
7
|
+
import CustomError from "./custom-error"
|
|
8
8
|
import {digg} from "diggerize"
|
|
9
9
|
import FormDataObjectizer from "form-data-objectizer"
|
|
10
10
|
import * as inflection from "inflection"
|
|
11
|
-
import ModelName from "./model-name
|
|
12
|
-
import NotLoadedError from "./not-loaded-error
|
|
11
|
+
import ModelName from "./model-name"
|
|
12
|
+
import NotLoadedError from "./not-loaded-error"
|
|
13
13
|
import objectToFormData from "object-to-formdata"
|
|
14
|
-
import Reflection from "./base-model/reflection
|
|
15
|
-
import Scope from "./base-model/scope
|
|
16
|
-
import Services from "./services
|
|
17
|
-
import ValidationError from "./validation-error
|
|
18
|
-
import {ValidationErrors} from "./validation-errors
|
|
14
|
+
import Reflection from "./base-model/reflection"
|
|
15
|
+
import Scope from "./base-model/scope"
|
|
16
|
+
import Services from "./services"
|
|
17
|
+
import ValidationError from "./validation-error"
|
|
18
|
+
import {ValidationErrors} from "./validation-errors"
|
|
19
19
|
|
|
20
20
|
const objectToUnderscore = (object) => {
|
|
21
21
|
const newObject = {}
|
|
@@ -5,9 +5,9 @@ import memo from "set-state-compare/src/memo"
|
|
|
5
5
|
import MoneyFormatter from "../../money-formatter"
|
|
6
6
|
import PropTypes from "prop-types"
|
|
7
7
|
import {useMemo} from "react"
|
|
8
|
-
import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component
|
|
8
|
+
import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
|
|
9
9
|
import strftime from "strftime"
|
|
10
|
-
import useI18n from "i18n-on-steroids/src/use-i18n
|
|
10
|
+
import useI18n from "i18n-on-steroids/src/use-i18n"
|
|
11
11
|
|
|
12
12
|
export default memo(shapeComponent(class ApiMakerBootstrapAttributeRow extends ShapeComponent {
|
|
13
13
|
static defaultProps = {
|
|
@@ -3,7 +3,7 @@ import BaseComponent from "../base-component"
|
|
|
3
3
|
import memo from "set-state-compare/src/memo"
|
|
4
4
|
import PropTypes from "prop-types"
|
|
5
5
|
import propTypesExact from "prop-types-exact"
|
|
6
|
-
import {shapeComponent} from "set-state-compare/src/shape-component
|
|
6
|
+
import {shapeComponent} from "set-state-compare/src/shape-component"
|
|
7
7
|
|
|
8
8
|
export default memo(shapeComponent(class ApiMakerBootstrapAttributeRows extends BaseComponent {
|
|
9
9
|
static defaultProps = {
|
package/src/bootstrap/card.jsx
CHANGED
|
@@ -4,7 +4,7 @@ import {digg, digs} from "diggerize"
|
|
|
4
4
|
import memo from "set-state-compare/src/memo"
|
|
5
5
|
import PropTypes from "prop-types"
|
|
6
6
|
import {useRef} from "react"
|
|
7
|
-
import {shapeComponent} from "set-state-compare/src/shape-component
|
|
7
|
+
import {shapeComponent} from "set-state-compare/src/shape-component"
|
|
8
8
|
|
|
9
9
|
export default memo(shapeComponent(class ApiMakerBootstrapCard extends BaseComponent {
|
|
10
10
|
static defaultProps = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component
|
|
1
|
+
import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
|
|
2
2
|
import Checkbox from "../inputs/checkbox"
|
|
3
3
|
import classNames from "classnames"
|
|
4
4
|
import {digs} from "diggerize"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component
|
|
1
|
+
import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
|
|
2
2
|
import {digs} from "diggerize"
|
|
3
3
|
import {useForm} from "../form"
|
|
4
4
|
import * as inflection from "inflection"
|
package/src/bootstrap/input.jsx
CHANGED
|
@@ -5,7 +5,7 @@ import InvalidFeedback from "./invalid-feedback"
|
|
|
5
5
|
import Money from "../inputs/money"
|
|
6
6
|
import PropTypes from "prop-types"
|
|
7
7
|
import memo from "set-state-compare/src/memo"
|
|
8
|
-
import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component
|
|
8
|
+
import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
|
|
9
9
|
|
|
10
10
|
const ApiMakerBootstrapInput = memo(shapeComponent(class ApiMakerBootstrapInput extends ShapeComponent {
|
|
11
11
|
static propTypes = {
|
|
@@ -8,8 +8,8 @@ import qs from "qs"
|
|
|
8
8
|
import {useMemo} from "react"
|
|
9
9
|
import Text from "../utils/text"
|
|
10
10
|
import Result from "../result"
|
|
11
|
-
import {shapeComponent} from "set-state-compare/src/shape-component
|
|
12
|
-
import urlEncode from "../url-encode
|
|
11
|
+
import {shapeComponent} from "set-state-compare/src/shape-component"
|
|
12
|
+
import urlEncode from "../url-encode"
|
|
13
13
|
|
|
14
14
|
export default memo(shapeComponent(class ApiMakerBootstrapPaginate extends BaseComponent {
|
|
15
15
|
static propTypes = propTypesExact({
|
|
@@ -5,9 +5,9 @@ import PropTypes from "prop-types"
|
|
|
5
5
|
import qs from "qs"
|
|
6
6
|
import memo from "set-state-compare/src/memo"
|
|
7
7
|
import Text from "../utils/text"
|
|
8
|
-
import {shapeComponent} from "set-state-compare/src/shape-component
|
|
9
|
-
import urlEncode from "../url-encode
|
|
10
|
-
import useSorting from "../table/use-sorting
|
|
8
|
+
import {shapeComponent} from "set-state-compare/src/shape-component"
|
|
9
|
+
import urlEncode from "../url-encode"
|
|
10
|
+
import useSorting from "../table/use-sorting"
|
|
11
11
|
|
|
12
12
|
import Link from "../link"
|
|
13
13
|
import useQueryParams from "on-location-changed/src/use-query-params"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import CableSubscriptionPool from "./cable-subscription-pool
|
|
2
|
-
import CableSubscription from "./cable-subscription
|
|
1
|
+
import CableSubscriptionPool from "./cable-subscription-pool"
|
|
2
|
+
import CableSubscription from "./cable-subscription"
|
|
3
3
|
import {dig} from "diggerize"
|
|
4
|
-
import RunLast from "./run-last
|
|
4
|
+
import RunLast from "./run-last"
|
|
5
5
|
|
|
6
6
|
const shared = {}
|
|
7
7
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import ChannelsConsumer from "./channels-consumer
|
|
2
|
-
import CommandsPool from "./commands-pool
|
|
3
|
-
import Deserializer from "./deserializer
|
|
1
|
+
import ChannelsConsumer from "./channels-consumer"
|
|
2
|
+
import CommandsPool from "./commands-pool"
|
|
3
|
+
import Deserializer from "./deserializer"
|
|
4
4
|
import {digg} from "diggerize"
|
|
5
5
|
import * as inflection from "inflection"
|
|
6
|
-
import Logger from "./logger
|
|
6
|
+
import Logger from "./logger"
|
|
7
7
|
|
|
8
8
|
const logger = new Logger({name: "ApiMaker / CableSubscriptionPool"})
|
|
9
9
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import Collection from "./collection
|
|
1
|
+
import Collection from "./collection"
|
|
2
2
|
import {digg} from "diggerize"
|
|
3
3
|
import memo from "set-state-compare/src/memo"
|
|
4
4
|
import {useMemo} from "react"
|
|
5
5
|
import PropTypes from "prop-types"
|
|
6
6
|
import PropTypesExact from "prop-types-exact"
|
|
7
7
|
import useCollection from "./use-collection"
|
|
8
|
-
import useShape from "set-state-compare/src/use-shape
|
|
8
|
+
import useShape from "set-state-compare/src/use-shape"
|
|
9
9
|
|
|
10
10
|
const CollectionLoader = ({component, ...restProps}) => {
|
|
11
11
|
const s = useShape(restProps)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import cloneDeep from "clone-deep"
|
|
2
|
-
import CommandsPool from "./commands-pool
|
|
2
|
+
import CommandsPool from "./commands-pool"
|
|
3
3
|
import {digg} from "diggerize"
|
|
4
4
|
import * as inflection from "inflection"
|
|
5
5
|
import {incorporate} from "incorporator"
|
|
6
|
-
import modelClassRequire from "./model-class-require
|
|
7
|
-
import Result from "./result
|
|
6
|
+
import modelClassRequire from "./model-class-require"
|
|
7
|
+
import Result from "./result"
|
|
8
8
|
|
|
9
9
|
export default class ApiMakerCollection {
|
|
10
10
|
static apiMakerType = "Collection"
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import Api from "./api
|
|
2
|
-
import CommandSubmitData from "./command-submit-data
|
|
3
|
-
import CustomError from "./custom-error
|
|
4
|
-
import DestroyError from "./destroy-error
|
|
5
|
-
import Deserializer from "./deserializer
|
|
1
|
+
import Api from "./api"
|
|
2
|
+
import CommandSubmitData from "./command-submit-data"
|
|
3
|
+
import CustomError from "./custom-error"
|
|
4
|
+
import DestroyError from "./destroy-error"
|
|
5
|
+
import Deserializer from "./deserializer"
|
|
6
6
|
import {dig, digg} from "diggerize"
|
|
7
|
-
import events from "./events
|
|
7
|
+
import events from "./events"
|
|
8
8
|
import FormDataObjectizer from "form-data-objectizer"
|
|
9
|
-
import RunLast from "./run-last
|
|
10
|
-
import Serializer from "./serializer
|
|
11
|
-
import SessionStatusUpdater from "./session-status-updater
|
|
12
|
-
import ValidationError from "./validation-error
|
|
13
|
-
import {ValidationErrors} from "./validation-errors
|
|
9
|
+
import RunLast from "./run-last"
|
|
10
|
+
import Serializer from "./serializer"
|
|
11
|
+
import SessionStatusUpdater from "./session-status-updater"
|
|
12
|
+
import ValidationError from "./validation-error"
|
|
13
|
+
import {ValidationErrors} from "./validation-errors"
|
|
14
14
|
|
|
15
15
|
const shared = {}
|
|
16
16
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {digg} from "diggerize"
|
|
2
2
|
import * as inflection from "inflection"
|
|
3
|
-
import modelClassRequire from "./model-class-require
|
|
4
|
-
import ModelsResponseReader from "./models-response-reader
|
|
3
|
+
import modelClassRequire from "./model-class-require"
|
|
4
|
+
import ModelsResponseReader from "./models-response-reader"
|
|
5
5
|
import Money from "js-money"
|
|
6
6
|
|
|
7
7
|
export default class ApiMakerDeserializer {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import CanCan from "./can-can
|
|
2
|
-
import Deserializer from "./deserializer
|
|
1
|
+
import CanCan from "./can-can"
|
|
2
|
+
import Deserializer from "./deserializer"
|
|
3
3
|
import {digg} from "diggerize"
|
|
4
|
-
import events from "./events
|
|
4
|
+
import events from "./events"
|
|
5
5
|
import * as inflection from "inflection"
|
|
6
|
-
import modelClassRequire from "./model-class-require
|
|
7
|
-
import Services from "./services
|
|
6
|
+
import modelClassRequire from "./model-class-require"
|
|
7
|
+
import Services from "./services"
|
|
8
8
|
|
|
9
9
|
const shared = {}
|
|
10
10
|
|
|
@@ -45,8 +45,6 @@ export default class ApiMakerDevise {
|
|
|
45
45
|
|
|
46
46
|
if (Array.isArray(model)) model = model[0]
|
|
47
47
|
|
|
48
|
-
await CanCan.current().resetAbilities()
|
|
49
|
-
|
|
50
48
|
ApiMakerDevise.updateSession(model)
|
|
51
49
|
events.emit("onDeviseSignIn", Object.assign({username}, args))
|
|
52
50
|
|
|
@@ -78,8 +76,6 @@ export default class ApiMakerDevise {
|
|
|
78
76
|
|
|
79
77
|
const response = await Services.current().sendRequest("Devise::SignOut", {args})
|
|
80
78
|
|
|
81
|
-
await CanCan.current().resetAbilities()
|
|
82
|
-
|
|
83
79
|
// Cannot use the class because they would both import each other
|
|
84
80
|
if (shared.apiMakerSessionStatusUpdater) {
|
|
85
81
|
shared.apiMakerSessionStatusUpdater.updateSessionStatus()
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import {digg} from "diggerize"
|
|
2
|
+
import EventEmitter from "events"
|
|
3
|
+
|
|
4
|
+
export default class DraggableSortController {
|
|
5
|
+
constructor({data, events, keyExtractor}) {
|
|
6
|
+
this.data = data
|
|
7
|
+
this.currentOrder = [...data]
|
|
8
|
+
this.events = events || new EventEmitter()
|
|
9
|
+
this.keyExtractor = keyExtractor
|
|
10
|
+
|
|
11
|
+
this.draggedItem = null
|
|
12
|
+
this.draggedItemData = null
|
|
13
|
+
this.draggedItemNewPosition = null
|
|
14
|
+
|
|
15
|
+
this.draggedOverItem = null
|
|
16
|
+
this.draggedOverItemData = null
|
|
17
|
+
|
|
18
|
+
this.itemData = {}
|
|
19
|
+
|
|
20
|
+
for (const itemIndex in data) {
|
|
21
|
+
this.itemData[itemIndex] = {
|
|
22
|
+
index: itemIndex,
|
|
23
|
+
item: data[itemIndex],
|
|
24
|
+
position: itemIndex
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
getEvents = () => this.events
|
|
30
|
+
getItemDataForItem = (item) => this.getItemDataForIndex(this.data.indexOf(item))
|
|
31
|
+
getItemDataForKey = (key) => this.itemData.find((itemDataI) => digg(itemDataI, "key") == key)
|
|
32
|
+
getItemDataForIndex = (index) => digg(this, "itemData", index)
|
|
33
|
+
|
|
34
|
+
onDragStart = ({item, itemIndex}) => {
|
|
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", {item, itemData: this.draggedItemData})
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
onDragEnd = () => {
|
|
45
|
+
const itemData = this.draggedItemData
|
|
46
|
+
const fromIndex = itemData.index
|
|
47
|
+
const fromPosition = digg(this, "draggedItemPosition")
|
|
48
|
+
const toPosition = this.draggedItemNewPosition
|
|
49
|
+
const fromItem = this.draggedItem
|
|
50
|
+
const toItem = this.draggedOverItem
|
|
51
|
+
const callbackArgs = {item: itemData.item, itemData, fromIndex, fromItem, fromPosition, toItem, toPosition}
|
|
52
|
+
|
|
53
|
+
this.draggedItemData.events.emit("resetPosition", {
|
|
54
|
+
callback: () => {
|
|
55
|
+
this.events.emit("onDragEndAnimation", callbackArgs)
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
this.draggedItem = null
|
|
60
|
+
this.draggedItemData = null
|
|
61
|
+
this.draggedItemNewPosition = null
|
|
62
|
+
|
|
63
|
+
this.draggedOverItem = null
|
|
64
|
+
this.draggedOverItemData = null
|
|
65
|
+
|
|
66
|
+
this.events.emit("onDragEnd", callbackArgs)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
onItemLayout = ({events, index, item, layout}) => {
|
|
70
|
+
if (!(index in this.itemData)) throw new Error(`Item not found for index ${index}`)
|
|
71
|
+
|
|
72
|
+
const itemData = this.itemData[index]
|
|
73
|
+
|
|
74
|
+
itemData.layout = layout
|
|
75
|
+
|
|
76
|
+
if (!itemData.initialLayout) {
|
|
77
|
+
itemData.baseX = layout.x
|
|
78
|
+
itemData.events = events
|
|
79
|
+
itemData.initialLayout = layout
|
|
80
|
+
itemData.key = this.keyExtractor(item)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
onMove = ({gestate}) => {
|
|
85
|
+
// Send move-event to the item being dragged so it will actually move around
|
|
86
|
+
this.draggedItemData?.events?.emit("move", {gestate})
|
|
87
|
+
|
|
88
|
+
const moveX = gestate.dx + this.initialDragPosition.x
|
|
89
|
+
|
|
90
|
+
for (const itemIndex in this.itemData) {
|
|
91
|
+
const itemData = this.getItemDataForIndex(itemIndex)
|
|
92
|
+
const baseX = digg(itemData, "baseX")
|
|
93
|
+
let smallestWidth = this.draggedItemData.layout.width
|
|
94
|
+
|
|
95
|
+
if (itemData.layout.width < smallestWidth) smallestWidth = itemData.layout.width
|
|
96
|
+
|
|
97
|
+
if (moveX > baseX && moveX < (baseX + smallestWidth) && itemIndex != this.draggedItemData.index) {
|
|
98
|
+
this.draggedOverItem = itemData.item
|
|
99
|
+
this.draggedOverItemData = itemData
|
|
100
|
+
|
|
101
|
+
const positionOfDraggedItem = this.currentOrder.indexOf(this.draggedItemData.item)
|
|
102
|
+
const positionOfOverItem = this.currentOrder.indexOf(this.draggedOverItemData.item)
|
|
103
|
+
|
|
104
|
+
this.currentOrder[positionOfDraggedItem] = this.draggedOverItemData.item
|
|
105
|
+
this.currentOrder[positionOfOverItem] = this.draggedItemData.item
|
|
106
|
+
|
|
107
|
+
this.draggedItemData.position = positionOfOverItem
|
|
108
|
+
this.draggedOverItemData.position = positionOfDraggedItem
|
|
109
|
+
|
|
110
|
+
this.updatePositionOfItems()
|
|
111
|
+
this.draggedItemNewPosition = positionOfOverItem
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
setInitialDragPosition = (initialDragPosition) => {
|
|
117
|
+
this.initialDragPosition = initialDragPosition
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
updatePositionOfItems() {
|
|
121
|
+
let currentPosition = 0
|
|
122
|
+
|
|
123
|
+
for (const item of this.currentOrder) {
|
|
124
|
+
const itemData = this.getItemDataForItem(item)
|
|
125
|
+
|
|
126
|
+
if (digg(itemData, "index") != digg(this, "draggedItemData", "index")) { // Dont animate dragged element to a new position because it is currently being dragged
|
|
127
|
+
itemData.events.emit("moveToPosition", {
|
|
128
|
+
x: currentPosition,
|
|
129
|
+
y: 0
|
|
130
|
+
})
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
itemData.baseX = currentPosition
|
|
134
|
+
currentPosition += digg(itemData, "layout", "width")
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|