@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
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as inflection from "inflection";
|
|
2
|
+
import modelClassRequire from "./model-class-require";
|
|
3
|
+
export default class ApiMakerPreloaded {
|
|
4
|
+
constructor(response) {
|
|
5
|
+
this.response = response;
|
|
6
|
+
this.loadPreloadedModels();
|
|
7
|
+
}
|
|
8
|
+
loadPreloadedModels() {
|
|
9
|
+
this.preloaded = {};
|
|
10
|
+
for (const preloadedType in this.response.preloaded) {
|
|
11
|
+
const modelClassName = inflection.classify(preloadedType);
|
|
12
|
+
const ModelClass = modelClassRequire(modelClassName);
|
|
13
|
+
for (const preloadedId in this.response.preloaded[preloadedType]) {
|
|
14
|
+
const preloadedData = this.response.preloaded[preloadedType][preloadedId];
|
|
15
|
+
const model = new ModelClass({
|
|
16
|
+
data: preloadedData,
|
|
17
|
+
isNewRecord: false
|
|
18
|
+
});
|
|
19
|
+
if (!this.preloaded[preloadedType]) {
|
|
20
|
+
this.preloaded[preloadedType] = {};
|
|
21
|
+
}
|
|
22
|
+
this.preloaded[preloadedType][preloadedId] = model;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
for (const modelType in this.preloaded) {
|
|
26
|
+
for (const modelId in this.preloaded[modelType]) {
|
|
27
|
+
this.preloaded[modelType][modelId]._readPreloadedRelationships(this);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
getModel(type, id) {
|
|
32
|
+
if (!this.preloaded[type] || !this.preloaded[type][id]) {
|
|
33
|
+
throw new Error(`Could not find a ${type} by that ID: ${id}`);
|
|
34
|
+
}
|
|
35
|
+
return this.preloaded[type][id];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmZsZWN0aW9uIiwibW9kZWxDbGFzc1JlcXVpcmUiLCJBcGlNYWtlclByZWxvYWRlZCIsImNvbnN0cnVjdG9yIiwicmVzcG9uc2UiLCJsb2FkUHJlbG9hZGVkTW9kZWxzIiwicHJlbG9hZGVkIiwicHJlbG9hZGVkVHlwZSIsIm1vZGVsQ2xhc3NOYW1lIiwiY2xhc3NpZnkiLCJNb2RlbENsYXNzIiwicHJlbG9hZGVkSWQiLCJwcmVsb2FkZWREYXRhIiwibW9kZWwiLCJkYXRhIiwiaXNOZXdSZWNvcmQiLCJtb2RlbFR5cGUiLCJtb2RlbElkIiwiX3JlYWRQcmVsb2FkZWRSZWxhdGlvbnNoaXBzIiwiZ2V0TW9kZWwiLCJ0eXBlIiwiaWQiLCJFcnJvciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmVsb2FkZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgbW9kZWxDbGFzc1JlcXVpcmUgZnJvbSBcIi4vbW9kZWwtY2xhc3MtcmVxdWlyZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwaU1ha2VyUHJlbG9hZGVkIHtcbiAgY29uc3RydWN0b3IgKHJlc3BvbnNlKSB7XG4gICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlXG4gICAgdGhpcy5sb2FkUHJlbG9hZGVkTW9kZWxzKClcbiAgfVxuXG4gIGxvYWRQcmVsb2FkZWRNb2RlbHMgKCkge1xuICAgIHRoaXMucHJlbG9hZGVkID0ge31cblxuICAgIGZvciAoY29uc3QgcHJlbG9hZGVkVHlwZSBpbiB0aGlzLnJlc3BvbnNlLnByZWxvYWRlZCkge1xuICAgICAgY29uc3QgbW9kZWxDbGFzc05hbWUgPSBpbmZsZWN0aW9uLmNsYXNzaWZ5KHByZWxvYWRlZFR5cGUpXG4gICAgICBjb25zdCBNb2RlbENsYXNzID0gbW9kZWxDbGFzc1JlcXVpcmUobW9kZWxDbGFzc05hbWUpXG5cbiAgICAgIGZvciAoY29uc3QgcHJlbG9hZGVkSWQgaW4gdGhpcy5yZXNwb25zZS5wcmVsb2FkZWRbcHJlbG9hZGVkVHlwZV0pIHtcbiAgICAgICAgY29uc3QgcHJlbG9hZGVkRGF0YSA9IHRoaXMucmVzcG9uc2UucHJlbG9hZGVkW3ByZWxvYWRlZFR5cGVdW3ByZWxvYWRlZElkXVxuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbENsYXNzKHtkYXRhOiBwcmVsb2FkZWREYXRhLCBpc05ld1JlY29yZDogZmFsc2V9KVxuXG4gICAgICAgIGlmICghdGhpcy5wcmVsb2FkZWRbcHJlbG9hZGVkVHlwZV0pIHtcbiAgICAgICAgICB0aGlzLnByZWxvYWRlZFtwcmVsb2FkZWRUeXBlXSA9IHt9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZWxvYWRlZFtwcmVsb2FkZWRUeXBlXVtwcmVsb2FkZWRJZF0gPSBtb2RlbFxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgbW9kZWxUeXBlIGluIHRoaXMucHJlbG9hZGVkKSB7XG4gICAgICBmb3IgKGNvbnN0IG1vZGVsSWQgaW4gdGhpcy5wcmVsb2FkZWRbbW9kZWxUeXBlXSkge1xuICAgICAgICB0aGlzLnByZWxvYWRlZFttb2RlbFR5cGVdW21vZGVsSWRdLl9yZWFkUHJlbG9hZGVkUmVsYXRpb25zaGlwcyh0aGlzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldE1vZGVsICh0eXBlLCBpZCkge1xuICAgIGlmICghdGhpcy5wcmVsb2FkZWRbdHlwZV0gfHwgIXRoaXMucHJlbG9hZGVkW3R5cGVdW2lkXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhICR7dHlwZX0gYnkgdGhhdCBJRDogJHtpZH1gKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByZWxvYWRlZFt0eXBlXVtpZF1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUtBLFVBQVUsTUFBTSxZQUFZO0FBQ3hDLE9BQU9DLGlCQUFpQixNQUFNLHVCQUF1QjtBQUVyRCxlQUFlLE1BQU1DLGlCQUFpQixDQUFDO0VBQ3JDQyxXQUFXQSxDQUFFQyxRQUFRLEVBQUU7SUFDckIsSUFBSSxDQUFDQSxRQUFRLEdBQUdBLFFBQVE7SUFDeEIsSUFBSSxDQUFDQyxtQkFBbUIsQ0FBQyxDQUFDO0VBQzVCO0VBRUFBLG1CQUFtQkEsQ0FBQSxFQUFJO0lBQ3JCLElBQUksQ0FBQ0MsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUVuQixLQUFLLE1BQU1DLGFBQWEsSUFBSSxJQUFJLENBQUNILFFBQVEsQ0FBQ0UsU0FBUyxFQUFFO01BQ25ELE1BQU1FLGNBQWMsR0FBR1IsVUFBVSxDQUFDUyxRQUFRLENBQUNGLGFBQWEsQ0FBQztNQUN6RCxNQUFNRyxVQUFVLEdBQUdULGlCQUFpQixDQUFDTyxjQUFjLENBQUM7TUFFcEQsS0FBSyxNQUFNRyxXQUFXLElBQUksSUFBSSxDQUFDUCxRQUFRLENBQUNFLFNBQVMsQ0FBQ0MsYUFBYSxDQUFDLEVBQUU7UUFDaEUsTUFBTUssYUFBYSxHQUFHLElBQUksQ0FBQ1IsUUFBUSxDQUFDRSxTQUFTLENBQUNDLGFBQWEsQ0FBQyxDQUFDSSxXQUFXLENBQUM7UUFDekUsTUFBTUUsS0FBSyxHQUFHLElBQUlILFVBQVUsQ0FBQztVQUFDSSxJQUFJLEVBQUVGLGFBQWE7VUFBRUcsV0FBVyxFQUFFO1FBQUssQ0FBQyxDQUFDO1FBRXZFLElBQUksQ0FBQyxJQUFJLENBQUNULFNBQVMsQ0FBQ0MsYUFBYSxDQUFDLEVBQUU7VUFDbEMsSUFBSSxDQUFDRCxTQUFTLENBQUNDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQztRQUVBLElBQUksQ0FBQ0QsU0FBUyxDQUFDQyxhQUFhLENBQUMsQ0FBQ0ksV0FBVyxDQUFDLEdBQUdFLEtBQUs7TUFDcEQ7SUFDRjtJQUVBLEtBQUssTUFBTUcsU0FBUyxJQUFJLElBQUksQ0FBQ1YsU0FBUyxFQUFFO01BQ3RDLEtBQUssTUFBTVcsT0FBTyxJQUFJLElBQUksQ0FBQ1gsU0FBUyxDQUFDVSxTQUFTLENBQUMsRUFBRTtRQUMvQyxJQUFJLENBQUNWLFNBQVMsQ0FBQ1UsU0FBUyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxDQUFDQywyQkFBMkIsQ0FBQyxJQUFJLENBQUM7TUFDdEU7SUFDRjtFQUNGO0VBRUFDLFFBQVFBLENBQUVDLElBQUksRUFBRUMsRUFBRSxFQUFFO0lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUNmLFNBQVMsQ0FBQ2MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUNkLFNBQVMsQ0FBQ2MsSUFBSSxDQUFDLENBQUNDLEVBQUUsQ0FBQyxFQUFFO01BQ3RELE1BQU0sSUFBSUMsS0FBSyxDQUFDLG9CQUFvQkYsSUFBSSxnQkFBZ0JDLEVBQUUsRUFBRSxDQUFDO0lBQy9EO0lBRUEsT0FBTyxJQUFJLENBQUNmLFNBQVMsQ0FBQ2MsSUFBSSxDQUFDLENBQUNDLEVBQUUsQ0FBQztFQUNqQztBQUNGIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import memo from "set-state-compare/src/memo";
|
|
2
|
+
import useResizeObserver from "./use-resize-observer";
|
|
3
|
+
const ApiMakerResizeObserver = memo(({
|
|
4
|
+
element,
|
|
5
|
+
onResize
|
|
6
|
+
}) => {
|
|
7
|
+
useResizeObserver(element, onResize);
|
|
8
|
+
return null;
|
|
9
|
+
});
|
|
10
|
+
export default ApiMakerResizeObserver;
|
|
11
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtZW1vIiwidXNlUmVzaXplT2JzZXJ2ZXIiLCJBcGlNYWtlclJlc2l6ZU9ic2VydmVyIiwiZWxlbWVudCIsIm9uUmVzaXplIl0sInNvdXJjZXMiOlsiLi4vc3JjL3Jlc2l6ZS1vYnNlcnZlci5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCB1c2VSZXNpemVPYnNlcnZlciBmcm9tIFwiLi91c2UtcmVzaXplLW9ic2VydmVyXCJcblxuY29uc3QgQXBpTWFrZXJSZXNpemVPYnNlcnZlciA9IG1lbW8oKHtlbGVtZW50LCBvblJlc2l6ZX0pID0+IHtcbiAgdXNlUmVzaXplT2JzZXJ2ZXIoZWxlbWVudCwgb25SZXNpemUpXG5cbiAgcmV0dXJuIG51bGxcbn0pXG5cbmV4cG9ydCBkZWZhdWx0IEFwaU1ha2VyUmVzaXplT2JzZXJ2ZXJcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsSUFBSSxNQUFNLDRCQUE0QjtBQUM3QyxPQUFPQyxpQkFBaUIsTUFBTSx1QkFBdUI7QUFFckQsTUFBTUMsc0JBQXNCLEdBQUdGLElBQUksQ0FBQyxDQUFDO0VBQUNHLE9BQU87RUFBRUM7QUFBUSxDQUFDLEtBQUs7RUFDM0RILGlCQUFpQixDQUFDRSxPQUFPLEVBQUVDLFFBQVEsQ0FBQztFQUVwQyxPQUFPLElBQUk7QUFDYixDQUFDLENBQUM7QUFFRixlQUFlRixzQkFBc0IiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/build/result.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export default class ApiMakerResult {
|
|
2
|
+
constructor(data) {
|
|
3
|
+
this.data = data;
|
|
4
|
+
}
|
|
5
|
+
count = () => this.data.response.meta.count;
|
|
6
|
+
currentPage = () => this.data.response.meta.currentPage;
|
|
7
|
+
models = () => this.data.models;
|
|
8
|
+
modelClass = () => this.data.collection.modelClass();
|
|
9
|
+
perPage = () => this.data.response.meta.perPage;
|
|
10
|
+
totalCount = () => this.data.response.meta.totalCount;
|
|
11
|
+
totalPages = () => this.data.response.meta.totalPages;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcGlNYWtlclJlc3VsdCIsImNvbnN0cnVjdG9yIiwiZGF0YSIsImNvdW50IiwicmVzcG9uc2UiLCJtZXRhIiwiY3VycmVudFBhZ2UiLCJtb2RlbHMiLCJtb2RlbENsYXNzIiwiY29sbGVjdGlvbiIsInBlclBhZ2UiLCJ0b3RhbENvdW50IiwidG90YWxQYWdlcyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXN1bHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJSZXN1bHQge1xuICBjb25zdHJ1Y3RvciAoZGF0YSkge1xuICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgfVxuXG4gIGNvdW50ID0gKCkgPT4gdGhpcy5kYXRhLnJlc3BvbnNlLm1ldGEuY291bnRcbiAgY3VycmVudFBhZ2UgPSAoKSA9PiB0aGlzLmRhdGEucmVzcG9uc2UubWV0YS5jdXJyZW50UGFnZVxuICBtb2RlbHMgPSAoKSA9PiB0aGlzLmRhdGEubW9kZWxzXG4gIG1vZGVsQ2xhc3MgPSAoKSA9PiB0aGlzLmRhdGEuY29sbGVjdGlvbi5tb2RlbENsYXNzKClcbiAgcGVyUGFnZSA9ICgpID0+IHRoaXMuZGF0YS5yZXNwb25zZS5tZXRhLnBlclBhZ2VcbiAgdG90YWxDb3VudCA9ICgpID0+IHRoaXMuZGF0YS5yZXNwb25zZS5tZXRhLnRvdGFsQ291bnRcbiAgdG90YWxQYWdlcyA9ICgpID0+IHRoaXMuZGF0YS5yZXNwb25zZS5tZXRhLnRvdGFsUGFnZXNcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxNQUFNQSxjQUFjLENBQUM7RUFDbENDLFdBQVdBLENBQUVDLElBQUksRUFBRTtJQUNqQixJQUFJLENBQUNBLElBQUksR0FBR0EsSUFBSTtFQUNsQjtFQUVBQyxLQUFLLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUNELElBQUksQ0FBQ0UsUUFBUSxDQUFDQyxJQUFJLENBQUNGLEtBQUs7RUFDM0NHLFdBQVcsR0FBR0EsQ0FBQSxLQUFNLElBQUksQ0FBQ0osSUFBSSxDQUFDRSxRQUFRLENBQUNDLElBQUksQ0FBQ0MsV0FBVztFQUN2REMsTUFBTSxHQUFHQSxDQUFBLEtBQU0sSUFBSSxDQUFDTCxJQUFJLENBQUNLLE1BQU07RUFDL0JDLFVBQVUsR0FBR0EsQ0FBQSxLQUFNLElBQUksQ0FBQ04sSUFBSSxDQUFDTyxVQUFVLENBQUNELFVBQVUsQ0FBQyxDQUFDO0VBQ3BERSxPQUFPLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUNSLElBQUksQ0FBQ0UsUUFBUSxDQUFDQyxJQUFJLENBQUNLLE9BQU87RUFDL0NDLFVBQVUsR0FBR0EsQ0FBQSxLQUFNLElBQUksQ0FBQ1QsSUFBSSxDQUFDRSxRQUFRLENBQUNDLElBQUksQ0FBQ00sVUFBVTtFQUNyREMsVUFBVSxHQUFHQSxDQUFBLEtBQU0sSUFBSSxDQUFDVixJQUFJLENBQUNFLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDTyxVQUFVO0FBQ3ZEIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import BaseComponent from "../base-component";
|
|
2
|
+
import React, { createContext, useContext, useMemo } from "react";
|
|
3
|
+
import memo from "set-state-compare/src/memo";
|
|
4
|
+
import PropTypes from "prop-types";
|
|
5
|
+
import propTypesExact from "prop-types-exact";
|
|
6
|
+
import { shapeComponent } from "set-state-compare/src/shape-component";
|
|
7
|
+
import Switch, { CurrentSwitchContext } from "./switch";
|
|
8
|
+
import useI18n from "i18n-on-steroids/src/use-i18n";
|
|
9
|
+
const CurrentPathContext = /*#__PURE__*/createContext([]);
|
|
10
|
+
const ParamsContext = /*#__PURE__*/createContext({});
|
|
11
|
+
const RequireComponentContext = /*#__PURE__*/createContext(null);
|
|
12
|
+
const RouteContext = /*#__PURE__*/createContext(null);
|
|
13
|
+
const useParams = () => useContext(ParamsContext);
|
|
14
|
+
const Route = memo(shapeComponent(class Route extends BaseComponent {
|
|
15
|
+
static defaultProps = {
|
|
16
|
+
exact: false,
|
|
17
|
+
fallback: false,
|
|
18
|
+
includeInPath: true
|
|
19
|
+
};
|
|
20
|
+
static propTypes = propTypesExact({
|
|
21
|
+
children: PropTypes.node,
|
|
22
|
+
component: PropTypes.string,
|
|
23
|
+
componentPath: PropTypes.string,
|
|
24
|
+
exact: PropTypes.bool.isRequired,
|
|
25
|
+
fallback: PropTypes.bool.isRequired,
|
|
26
|
+
includeInPath: PropTypes.bool.isRequired,
|
|
27
|
+
onMatch: PropTypes.func,
|
|
28
|
+
path: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)])
|
|
29
|
+
});
|
|
30
|
+
match = null;
|
|
31
|
+
newParams = null;
|
|
32
|
+
pathParts = null;
|
|
33
|
+
setup() {
|
|
34
|
+
const {
|
|
35
|
+
t
|
|
36
|
+
} = useI18n({
|
|
37
|
+
namespace: "js.api_maker.router.route"
|
|
38
|
+
});
|
|
39
|
+
const {
|
|
40
|
+
path
|
|
41
|
+
} = this.props;
|
|
42
|
+
const {
|
|
43
|
+
pathsMatched,
|
|
44
|
+
switchGroup
|
|
45
|
+
} = useContext(CurrentSwitchContext);
|
|
46
|
+
const givenRoute = useContext(RouteContext);
|
|
47
|
+
const {
|
|
48
|
+
pathShown
|
|
49
|
+
} = switchGroup.s;
|
|
50
|
+
this.debug = false;
|
|
51
|
+
this.log(() => ({
|
|
52
|
+
givenRoute
|
|
53
|
+
}));
|
|
54
|
+
this.t = t;
|
|
55
|
+
this.requireComponent = useContext(RequireComponentContext);
|
|
56
|
+
this.currentParams = useContext(ParamsContext);
|
|
57
|
+
this.currentPath = useContext(CurrentPathContext);
|
|
58
|
+
this.switchGroup = switchGroup;
|
|
59
|
+
this.routeParts = useMemo(() => givenRoute?.split("/"), [path, givenRoute]);
|
|
60
|
+
this.pathParts = useMemo(() => path?.split("/"), [path]);
|
|
61
|
+
this.newRouteParts = useMemo(() => {
|
|
62
|
+
if (!path) {
|
|
63
|
+
if (givenRoute == "") {
|
|
64
|
+
return [];
|
|
65
|
+
} else {
|
|
66
|
+
return this.routeParts;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return this.routeParts.slice(this.pathParts.length, this.routeParts.length);
|
|
70
|
+
}, [givenRoute].concat(this.pathParts));
|
|
71
|
+
this.useStates({
|
|
72
|
+
Component: null,
|
|
73
|
+
componentNotFound: null,
|
|
74
|
+
matches: false
|
|
75
|
+
});
|
|
76
|
+
useMemo(() => {
|
|
77
|
+
this.loadMatches();
|
|
78
|
+
}, [givenRoute, path, pathsMatched]);
|
|
79
|
+
useMemo(() => {
|
|
80
|
+
if (this.hasSwitchMatch() && !this.s.Component && this.s.matches) {
|
|
81
|
+
if (this.props.onMatch) {
|
|
82
|
+
this.props.onMatch();
|
|
83
|
+
}
|
|
84
|
+
if (!this.props.children && (this.props.path || this.props.component || this.props.componentPath)) {
|
|
85
|
+
this.loadComponent();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}, [path, pathShown, this.s.matches]);
|
|
89
|
+
}
|
|
90
|
+
hasSwitchMatch = () => this.switchGroup.s.pathShown && this.switchGroup.s.pathShown == this.pathId();
|
|
91
|
+
pathId() {
|
|
92
|
+
const {
|
|
93
|
+
fallback
|
|
94
|
+
} = this.p;
|
|
95
|
+
const {
|
|
96
|
+
path
|
|
97
|
+
} = this.props;
|
|
98
|
+
let pathId;
|
|
99
|
+
if (fallback) {
|
|
100
|
+
pathId = "[FALLBACK]";
|
|
101
|
+
} else if (!path) {
|
|
102
|
+
pathId = "[PATH-EMPTY]";
|
|
103
|
+
} else {
|
|
104
|
+
pathId = path;
|
|
105
|
+
}
|
|
106
|
+
return pathId;
|
|
107
|
+
}
|
|
108
|
+
loadMatches() {
|
|
109
|
+
const {
|
|
110
|
+
newRouteParts,
|
|
111
|
+
t
|
|
112
|
+
} = this.tt;
|
|
113
|
+
const {
|
|
114
|
+
component,
|
|
115
|
+
path
|
|
116
|
+
} = this.props;
|
|
117
|
+
const {
|
|
118
|
+
exact,
|
|
119
|
+
includeInPath,
|
|
120
|
+
fallback
|
|
121
|
+
} = this.p;
|
|
122
|
+
let matches = true;
|
|
123
|
+
const params = {};
|
|
124
|
+
const componentPathParts = [...this.currentPath];
|
|
125
|
+
this.log(() => [this.props.path, "Start generating component paths", JSON.stringify(componentPathParts)]);
|
|
126
|
+
for (const pathPartIndex in this.pathParts) {
|
|
127
|
+
const pathPart = this.pathParts[pathPartIndex];
|
|
128
|
+
const translatedPathPart = t(`routes.${pathPart}`, {
|
|
129
|
+
defaultValue: pathPart
|
|
130
|
+
});
|
|
131
|
+
if (!(pathPartIndex in this.routeParts)) {
|
|
132
|
+
this.log(() => `No match for: ${pathPartIndex}`);
|
|
133
|
+
matches = false;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
const routePart = decodeURIComponent(this.routeParts[pathPartIndex]);
|
|
137
|
+
if (pathPart.startsWith(":") && routePart) {
|
|
138
|
+
const paramName = pathPart.slice(1, pathPart.length);
|
|
139
|
+
params[paramName] = routePart;
|
|
140
|
+
} else if (translatedPathPart != routePart) {
|
|
141
|
+
matches = false;
|
|
142
|
+
break;
|
|
143
|
+
} else if (!component && includeInPath) {
|
|
144
|
+
componentPathParts.push(pathPart);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (exact && newRouteParts.length > 0) {
|
|
148
|
+
this.log(() => ["Exact and more route parts", {
|
|
149
|
+
newRouteParts,
|
|
150
|
+
pathParts: this.pathParts,
|
|
151
|
+
routeParts: this.routeParts
|
|
152
|
+
}]);
|
|
153
|
+
matches = false;
|
|
154
|
+
} else if (matches && path) {
|
|
155
|
+
matches = true;
|
|
156
|
+
} else if (this.routeParts.length == 0) {
|
|
157
|
+
matches = true;
|
|
158
|
+
}
|
|
159
|
+
const matchId = this.pathId();
|
|
160
|
+
if (!matches && fallback) {
|
|
161
|
+
matches = true;
|
|
162
|
+
}
|
|
163
|
+
this.log(() => [this.props.path, "End generating component paths", JSON.stringify(componentPathParts), {
|
|
164
|
+
matches
|
|
165
|
+
}]);
|
|
166
|
+
if (matches) {
|
|
167
|
+
if (component && includeInPath) {
|
|
168
|
+
componentPathParts.push(component);
|
|
169
|
+
}
|
|
170
|
+
const newParams = Object.assign({}, this.currentParams, params);
|
|
171
|
+
this.setInstance({
|
|
172
|
+
componentPathParts,
|
|
173
|
+
match: {
|
|
174
|
+
params
|
|
175
|
+
},
|
|
176
|
+
newParams
|
|
177
|
+
});
|
|
178
|
+
this.setState({
|
|
179
|
+
matches
|
|
180
|
+
});
|
|
181
|
+
this.switchGroup?.setPathMatched(matchId, true);
|
|
182
|
+
} else {
|
|
183
|
+
this.setInstance({
|
|
184
|
+
componentPathParts: null,
|
|
185
|
+
match: null,
|
|
186
|
+
newParams: null
|
|
187
|
+
});
|
|
188
|
+
this.setState({
|
|
189
|
+
matches
|
|
190
|
+
});
|
|
191
|
+
this.switchGroup?.setPathMatched(matchId, false);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
async loadComponent() {
|
|
195
|
+
const actualComponentPath = this.props.componentPath || this.tt.componentPathParts.join("/");
|
|
196
|
+
let Component;
|
|
197
|
+
this.log(() => ["loadComponent", {
|
|
198
|
+
componentPath: this.props.componentPath,
|
|
199
|
+
componentPathParts: this.componentPathParts,
|
|
200
|
+
actualComponentPath
|
|
201
|
+
}]);
|
|
202
|
+
try {
|
|
203
|
+
const componentImport = await this.tt.requireComponent({
|
|
204
|
+
routeDefinition: {
|
|
205
|
+
component: actualComponentPath
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
Component = componentImport;
|
|
209
|
+
} catch (error) {
|
|
210
|
+
console.error(`Couldn't find component: ${actualComponentPath}`);
|
|
211
|
+
throw error;
|
|
212
|
+
}
|
|
213
|
+
this.setState({
|
|
214
|
+
Component,
|
|
215
|
+
componentNotFound: !Component
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
log(callbackArgs) {
|
|
219
|
+
if (this.debug) {
|
|
220
|
+
let args = callbackArgs();
|
|
221
|
+
if (!Array.isArray(args)) args = [args];
|
|
222
|
+
console.log(...args);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
render() {
|
|
226
|
+
const {
|
|
227
|
+
componentPathParts,
|
|
228
|
+
match,
|
|
229
|
+
newParams,
|
|
230
|
+
newRouteParts
|
|
231
|
+
} = this.tt;
|
|
232
|
+
const {
|
|
233
|
+
children,
|
|
234
|
+
component,
|
|
235
|
+
path
|
|
236
|
+
} = this.props;
|
|
237
|
+
const {
|
|
238
|
+
Component,
|
|
239
|
+
componentNotFound,
|
|
240
|
+
matches
|
|
241
|
+
} = this.s;
|
|
242
|
+
if (!matches || !this.hasSwitchMatch()) {
|
|
243
|
+
// Route isn't matching and shouldn't be rendered at all.
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
if (!Component && !children && !componentNotFound) {
|
|
247
|
+
// Route is matching but hasn't been loaded yet.
|
|
248
|
+
return /*#__PURE__*/React.createElement("div", null, "Loading ", component || this.props.componentPath || componentPathParts.join("/"));
|
|
249
|
+
}
|
|
250
|
+
if (!Component && !children && componentNotFound) {
|
|
251
|
+
// Don't render anything if the component couldn't be found.
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
return /*#__PURE__*/React.createElement(CurrentPathContext.Provider, {
|
|
255
|
+
value: componentPathParts
|
|
256
|
+
}, /*#__PURE__*/React.createElement(RouteContext.Provider, {
|
|
257
|
+
value: newRouteParts.join("/")
|
|
258
|
+
}, /*#__PURE__*/React.createElement(ParamsContext.Provider, {
|
|
259
|
+
value: newParams
|
|
260
|
+
}, /*#__PURE__*/React.createElement(Switch, {
|
|
261
|
+
name: `route-group-${path}`,
|
|
262
|
+
single: false
|
|
263
|
+
}, Component && /*#__PURE__*/React.createElement(Component, {
|
|
264
|
+
match: match
|
|
265
|
+
}), children))));
|
|
266
|
+
}
|
|
267
|
+
}));
|
|
268
|
+
export { RequireComponentContext, RouteContext, Switch, useParams };
|
|
269
|
+
export default Route;
|
|
270
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsInVzZU1lbW8iLCJtZW1vIiwiUHJvcFR5cGVzIiwicHJvcFR5cGVzRXhhY3QiLCJzaGFwZUNvbXBvbmVudCIsIlN3aXRjaCIsIkN1cnJlbnRTd2l0Y2hDb250ZXh0IiwidXNlSTE4biIsIkN1cnJlbnRQYXRoQ29udGV4dCIsIlBhcmFtc0NvbnRleHQiLCJSZXF1aXJlQ29tcG9uZW50Q29udGV4dCIsIlJvdXRlQ29udGV4dCIsInVzZVBhcmFtcyIsIlJvdXRlIiwiZGVmYXVsdFByb3BzIiwiZXhhY3QiLCJmYWxsYmFjayIsImluY2x1ZGVJblBhdGgiLCJwcm9wVHlwZXMiLCJjaGlsZHJlbiIsIm5vZGUiLCJjb21wb25lbnQiLCJzdHJpbmciLCJjb21wb25lbnRQYXRoIiwiYm9vbCIsImlzUmVxdWlyZWQiLCJvbk1hdGNoIiwiZnVuYyIsInBhdGgiLCJvbmVPZlR5cGUiLCJpbnN0YW5jZU9mIiwiUmVnRXhwIiwibWF0Y2giLCJuZXdQYXJhbXMiLCJwYXRoUGFydHMiLCJzZXR1cCIsInQiLCJuYW1lc3BhY2UiLCJwcm9wcyIsInBhdGhzTWF0Y2hlZCIsInN3aXRjaEdyb3VwIiwiZ2l2ZW5Sb3V0ZSIsInBhdGhTaG93biIsInMiLCJkZWJ1ZyIsImxvZyIsInJlcXVpcmVDb21wb25lbnQiLCJjdXJyZW50UGFyYW1zIiwiY3VycmVudFBhdGgiLCJyb3V0ZVBhcnRzIiwic3BsaXQiLCJuZXdSb3V0ZVBhcnRzIiwic2xpY2UiLCJsZW5ndGgiLCJjb25jYXQiLCJ1c2VTdGF0ZXMiLCJDb21wb25lbnQiLCJjb21wb25lbnROb3RGb3VuZCIsIm1hdGNoZXMiLCJsb2FkTWF0Y2hlcyIsImhhc1N3aXRjaE1hdGNoIiwibG9hZENvbXBvbmVudCIsInBhdGhJZCIsInAiLCJ0dCIsInBhcmFtcyIsImNvbXBvbmVudFBhdGhQYXJ0cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXRoUGFydEluZGV4IiwicGF0aFBhcnQiLCJ0cmFuc2xhdGVkUGF0aFBhcnQiLCJkZWZhdWx0VmFsdWUiLCJyb3V0ZVBhcnQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJzdGFydHNXaXRoIiwicGFyYW1OYW1lIiwicHVzaCIsIm1hdGNoSWQiLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRJbnN0YW5jZSIsInNldFN0YXRlIiwic2V0UGF0aE1hdGNoZWQiLCJhY3R1YWxDb21wb25lbnRQYXRoIiwiam9pbiIsImNvbXBvbmVudEltcG9ydCIsInJvdXRlRGVmaW5pdGlvbiIsImVycm9yIiwiY29uc29sZSIsImNhbGxiYWNrQXJncyIsImFyZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIm5hbWUiLCJzaW5nbGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcm91dGVyL3JvdXRlLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IFJlYWN0LCB7Y3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgU3dpdGNoLCB7Q3VycmVudFN3aXRjaENvbnRleHR9IGZyb20gXCIuL3N3aXRjaFwiXG5pbXBvcnQgdXNlSTE4biBmcm9tIFwiaTE4bi1vbi1zdGVyb2lkcy9zcmMvdXNlLWkxOG5cIlxuXG5jb25zdCBDdXJyZW50UGF0aENvbnRleHQgPSBjcmVhdGVDb250ZXh0KFtdKVxuY29uc3QgUGFyYW1zQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoe30pXG5jb25zdCBSZXF1aXJlQ29tcG9uZW50Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQobnVsbClcbmNvbnN0IFJvdXRlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQobnVsbClcbmNvbnN0IHVzZVBhcmFtcyA9ICgpID0+IHVzZUNvbnRleHQoUGFyYW1zQ29udGV4dClcblxuY29uc3QgUm91dGUgPSBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIFJvdXRlIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgZXhhY3Q6IGZhbHNlLFxuICAgIGZhbGxiYWNrOiBmYWxzZSxcbiAgICBpbmNsdWRlSW5QYXRoOiB0cnVlXG4gIH1cblxuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICBjb21wb25lbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29tcG9uZW50UGF0aDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBleGFjdDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBmYWxsYmFjazogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBpbmNsdWRlSW5QYXRoOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIG9uTWF0Y2g6IFByb3BUeXBlcy5mdW5jLFxuICAgIHBhdGg6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5pbnN0YW5jZU9mKFJlZ0V4cCldKVxuICB9KVxuXG4gIG1hdGNoID0gbnVsbFxuICBuZXdQYXJhbXMgPSBudWxsXG4gIHBhdGhQYXJ0cyA9IG51bGxcblxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7dH0gPSB1c2VJMThuKHtuYW1lc3BhY2U6IFwianMuYXBpX21ha2VyLnJvdXRlci5yb3V0ZVwifSlcbiAgICBjb25zdCB7cGF0aH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge3BhdGhzTWF0Y2hlZCwgc3dpdGNoR3JvdXB9ID0gdXNlQ29udGV4dChDdXJyZW50U3dpdGNoQ29udGV4dClcbiAgICBjb25zdCBnaXZlblJvdXRlID0gdXNlQ29udGV4dChSb3V0ZUNvbnRleHQpXG4gICAgY29uc3Qge3BhdGhTaG93bn0gPSBzd2l0Y2hHcm91cC5zXG5cbiAgICB0aGlzLmRlYnVnID0gZmFsc2VcbiAgICB0aGlzLmxvZygoKSA9PiAoe2dpdmVuUm91dGV9KSlcbiAgICB0aGlzLnQgPSB0XG5cbiAgICB0aGlzLnJlcXVpcmVDb21wb25lbnQgPSB1c2VDb250ZXh0KFJlcXVpcmVDb21wb25lbnRDb250ZXh0KVxuICAgIHRoaXMuY3VycmVudFBhcmFtcyA9IHVzZUNvbnRleHQoUGFyYW1zQ29udGV4dClcbiAgICB0aGlzLmN1cnJlbnRQYXRoID0gdXNlQ29udGV4dChDdXJyZW50UGF0aENvbnRleHQpXG4gICAgdGhpcy5zd2l0Y2hHcm91cCA9IHN3aXRjaEdyb3VwXG4gICAgdGhpcy5yb3V0ZVBhcnRzID0gdXNlTWVtbygoKSA9PiBnaXZlblJvdXRlPy5zcGxpdChcIi9cIiksIFtwYXRoLCBnaXZlblJvdXRlXSlcbiAgICB0aGlzLnBhdGhQYXJ0cyA9IHVzZU1lbW8oKCkgPT4gcGF0aD8uc3BsaXQoXCIvXCIpLCBbcGF0aF0pXG5cbiAgICB0aGlzLm5ld1JvdXRlUGFydHMgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgICBpZiAoZ2l2ZW5Sb3V0ZSA9PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVQYXJ0c1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlUGFydHMuc2xpY2UodGhpcy5wYXRoUGFydHMubGVuZ3RoLCB0aGlzLnJvdXRlUGFydHMubGVuZ3RoKVxuICAgICAgfSxcbiAgICAgIFtnaXZlblJvdXRlXS5jb25jYXQodGhpcy5wYXRoUGFydHMpXG4gICAgKVxuXG4gICAgdGhpcy51c2VTdGF0ZXMoe0NvbXBvbmVudDogbnVsbCwgY29tcG9uZW50Tm90Rm91bmQ6IG51bGwsIG1hdGNoZXM6IGZhbHNlfSlcblxuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkTWF0Y2hlcygpXG4gICAgfSwgW2dpdmVuUm91dGUsIHBhdGgsIHBhdGhzTWF0Y2hlZF0pXG5cbiAgICB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhhc1N3aXRjaE1hdGNoKCkgJiYgIXRoaXMucy5Db21wb25lbnQgJiYgdGhpcy5zLm1hdGNoZXMpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25NYXRjaCkge1xuICAgICAgICAgIHRoaXMucHJvcHMub25NYXRjaCgpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMucHJvcHMuY2hpbGRyZW4gJiYgKHRoaXMucHJvcHMucGF0aCB8fCB0aGlzLnByb3BzLmNvbXBvbmVudCB8fCB0aGlzLnByb3BzLmNvbXBvbmVudFBhdGgpKSB7XG4gICAgICAgICAgdGhpcy5sb2FkQ29tcG9uZW50KClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtwYXRoLCBwYXRoU2hvd24sIHRoaXMucy5tYXRjaGVzXSlcbiAgfVxuXG4gIGhhc1N3aXRjaE1hdGNoID0gKCkgPT4gdGhpcy5zd2l0Y2hHcm91cC5zLnBhdGhTaG93biAmJiB0aGlzLnN3aXRjaEdyb3VwLnMucGF0aFNob3duID09IHRoaXMucGF0aElkKClcblxuICBwYXRoSWQoKSB7XG4gICAgY29uc3Qge2ZhbGxiYWNrfSA9IHRoaXMucFxuICAgIGNvbnN0IHtwYXRofSA9IHRoaXMucHJvcHNcbiAgICBsZXQgcGF0aElkXG5cbiAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgIHBhdGhJZCA9IFwiW0ZBTExCQUNLXVwiXG4gICAgfSBlbHNlIGlmICghcGF0aCkge1xuICAgICAgcGF0aElkID0gXCJbUEFUSC1FTVBUWV1cIlxuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoSWQgPSBwYXRoXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGhJZFxuICB9XG5cbiAgbG9hZE1hdGNoZXMoKSB7XG4gICAgY29uc3Qge25ld1JvdXRlUGFydHMsIHR9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtjb21wb25lbnQsIHBhdGh9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtleGFjdCwgaW5jbHVkZUluUGF0aCwgZmFsbGJhY2t9ID0gdGhpcy5wXG5cbiAgICBsZXQgbWF0Y2hlcyA9IHRydWVcbiAgICBjb25zdCBwYXJhbXMgPSB7fVxuICAgIGNvbnN0IGNvbXBvbmVudFBhdGhQYXJ0cyA9IFsuLi50aGlzLmN1cnJlbnRQYXRoXVxuXG4gICAgdGhpcy5sb2coKCkgPT4gW3RoaXMucHJvcHMucGF0aCwgXCJTdGFydCBnZW5lcmF0aW5nIGNvbXBvbmVudCBwYXRoc1wiLCBKU09OLnN0cmluZ2lmeShjb21wb25lbnRQYXRoUGFydHMpXSlcblxuICAgIGZvciAoY29uc3QgcGF0aFBhcnRJbmRleCBpbiB0aGlzLnBhdGhQYXJ0cykge1xuICAgICAgY29uc3QgcGF0aFBhcnQgPSB0aGlzLnBhdGhQYXJ0c1twYXRoUGFydEluZGV4XVxuICAgICAgY29uc3QgdHJhbnNsYXRlZFBhdGhQYXJ0ID0gdChgcm91dGVzLiR7cGF0aFBhcnR9YCwge2RlZmF1bHRWYWx1ZTogcGF0aFBhcnR9KVxuXG4gICAgICBpZiAoIShwYXRoUGFydEluZGV4IGluIHRoaXMucm91dGVQYXJ0cykpIHtcbiAgICAgICAgdGhpcy5sb2coKCkgPT4gYE5vIG1hdGNoIGZvcjogJHtwYXRoUGFydEluZGV4fWApXG4gICAgICAgIG1hdGNoZXMgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb25zdCByb3V0ZVBhcnQgPSBkZWNvZGVVUklDb21wb25lbnQodGhpcy5yb3V0ZVBhcnRzW3BhdGhQYXJ0SW5kZXhdKVxuXG4gICAgICBpZiAocGF0aFBhcnQuc3RhcnRzV2l0aChcIjpcIikgJiYgcm91dGVQYXJ0KSB7XG4gICAgICAgIGNvbnN0IHBhcmFtTmFtZSA9IHBhdGhQYXJ0LnNsaWNlKDEsIHBhdGhQYXJ0Lmxlbmd0aClcblxuICAgICAgICBwYXJhbXNbcGFyYW1OYW1lXSA9IHJvdXRlUGFydFxuICAgICAgfSBlbHNlIGlmICh0cmFuc2xhdGVkUGF0aFBhcnQgIT0gcm91dGVQYXJ0KSB7XG4gICAgICAgIG1hdGNoZXMgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmICghY29tcG9uZW50ICYmIGluY2x1ZGVJblBhdGgpIHtcbiAgICAgICAgY29tcG9uZW50UGF0aFBhcnRzLnB1c2gocGF0aFBhcnQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4YWN0ICYmIG5ld1JvdXRlUGFydHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sb2coKCkgPT4gW1wiRXhhY3QgYW5kIG1vcmUgcm91dGUgcGFydHNcIiwge25ld1JvdXRlUGFydHMsIHBhdGhQYXJ0czogdGhpcy5wYXRoUGFydHMsIHJvdXRlUGFydHM6IHRoaXMucm91dGVQYXJ0c31dKVxuICAgICAgbWF0Y2hlcyA9IGZhbHNlXG4gICAgfSBlbHNlIGlmIChtYXRjaGVzICYmIHBhdGgpIHtcbiAgICAgIG1hdGNoZXMgPSB0cnVlXG4gICAgfSBlbHNlIGlmICh0aGlzLnJvdXRlUGFydHMubGVuZ3RoID09IDApIHtcbiAgICAgIG1hdGNoZXMgPSB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hJZCA9IHRoaXMucGF0aElkKClcblxuICAgIGlmICghbWF0Y2hlcyAmJiBmYWxsYmFjaykge1xuICAgICAgbWF0Y2hlcyA9IHRydWVcbiAgICB9XG5cbiAgICB0aGlzLmxvZygoKSA9PiBbdGhpcy5wcm9wcy5wYXRoLCBcIkVuZCBnZW5lcmF0aW5nIGNvbXBvbmVudCBwYXRoc1wiLCBKU09OLnN0cmluZ2lmeShjb21wb25lbnRQYXRoUGFydHMpLCB7bWF0Y2hlc31dKVxuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIGlmIChjb21wb25lbnQgJiYgaW5jbHVkZUluUGF0aCkge1xuICAgICAgICBjb21wb25lbnRQYXRoUGFydHMucHVzaChjb21wb25lbnQpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1BhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY3VycmVudFBhcmFtcywgcGFyYW1zKVxuXG4gICAgICB0aGlzLnNldEluc3RhbmNlKHtjb21wb25lbnRQYXRoUGFydHMsIG1hdGNoOiB7cGFyYW1zfSwgbmV3UGFyYW1zfSlcbiAgICAgIHRoaXMuc2V0U3RhdGUoe21hdGNoZXN9KVxuICAgICAgdGhpcy5zd2l0Y2hHcm91cD8uc2V0UGF0aE1hdGNoZWQobWF0Y2hJZCwgdHJ1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRJbnN0YW5jZSh7Y29tcG9uZW50UGF0aFBhcnRzOiBudWxsLCBtYXRjaDogbnVsbCwgbmV3UGFyYW1zOiBudWxsfSlcbiAgICAgIHRoaXMuc2V0U3RhdGUoe21hdGNoZXN9KVxuICAgICAgdGhpcy5zd2l0Y2hHcm91cD8uc2V0UGF0aE1hdGNoZWQobWF0Y2hJZCwgZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZENvbXBvbmVudCgpIHtcbiAgICBjb25zdCBhY3R1YWxDb21wb25lbnRQYXRoID0gdGhpcy5wcm9wcy5jb21wb25lbnRQYXRoIHx8IHRoaXMudHQuY29tcG9uZW50UGF0aFBhcnRzLmpvaW4oXCIvXCIpXG4gICAgbGV0IENvbXBvbmVudFxuXG4gICAgdGhpcy5sb2coKCkgPT4gW1wibG9hZENvbXBvbmVudFwiLCB7Y29tcG9uZW50UGF0aDogdGhpcy5wcm9wcy5jb21wb25lbnRQYXRoLCBjb21wb25lbnRQYXRoUGFydHM6IHRoaXMuY29tcG9uZW50UGF0aFBhcnRzLCBhY3R1YWxDb21wb25lbnRQYXRofV0pXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY29tcG9uZW50SW1wb3J0ID0gYXdhaXQgdGhpcy50dC5yZXF1aXJlQ29tcG9uZW50KHtyb3V0ZURlZmluaXRpb246IHtjb21wb25lbnQ6IGFjdHVhbENvbXBvbmVudFBhdGh9fSlcblxuICAgICAgQ29tcG9uZW50ID0gY29tcG9uZW50SW1wb3J0XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYENvdWxkbid0IGZpbmQgY29tcG9uZW50OiAke2FjdHVhbENvbXBvbmVudFBhdGh9YClcblxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtDb21wb25lbnQsIGNvbXBvbmVudE5vdEZvdW5kOiAhQ29tcG9uZW50fSlcbiAgfVxuXG4gIGxvZyhjYWxsYmFja0FyZ3MpIHtcbiAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgbGV0IGFyZ3MgPSBjYWxsYmFja0FyZ3MoKVxuXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJncykpIGFyZ3MgPSBbYXJnc11cblxuICAgICAgY29uc29sZS5sb2coLi4uYXJncylcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2NvbXBvbmVudFBhdGhQYXJ0cywgbWF0Y2gsIG5ld1BhcmFtcywgbmV3Um91dGVQYXJ0c30gPSB0aGlzLnR0XG4gICAgY29uc3Qge2NoaWxkcmVuLCBjb21wb25lbnQsIHBhdGh9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtDb21wb25lbnQsIGNvbXBvbmVudE5vdEZvdW5kLCBtYXRjaGVzfSA9IHRoaXMuc1xuXG4gICAgaWYgKCFtYXRjaGVzIHx8ICF0aGlzLmhhc1N3aXRjaE1hdGNoKCkpIHtcbiAgICAgIC8vIFJvdXRlIGlzbid0IG1hdGNoaW5nIGFuZCBzaG91bGRuJ3QgYmUgcmVuZGVyZWQgYXQgYWxsLlxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAoIUNvbXBvbmVudCAmJiAhY2hpbGRyZW4gJiYgIWNvbXBvbmVudE5vdEZvdW5kKSB7XG4gICAgICAvLyBSb3V0ZSBpcyBtYXRjaGluZyBidXQgaGFzbid0IGJlZW4gbG9hZGVkIHlldC5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgTG9hZGluZyB7Y29tcG9uZW50IHx8IHRoaXMucHJvcHMuY29tcG9uZW50UGF0aCB8fCBjb21wb25lbnRQYXRoUGFydHMuam9pbihcIi9cIil9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghQ29tcG9uZW50ICYmICFjaGlsZHJlbiAmJiBjb21wb25lbnROb3RGb3VuZCkge1xuICAgICAgLy8gRG9uJ3QgcmVuZGVyIGFueXRoaW5nIGlmIHRoZSBjb21wb25lbnQgY291bGRuJ3QgYmUgZm91bmQuXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8Q3VycmVudFBhdGhDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb21wb25lbnRQYXRoUGFydHN9PlxuICAgICAgICA8Um91dGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtuZXdSb3V0ZVBhcnRzLmpvaW4oXCIvXCIpfT5cbiAgICAgICAgICA8UGFyYW1zQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bmV3UGFyYW1zfT5cbiAgICAgICAgICAgIDxTd2l0Y2ggbmFtZT17YHJvdXRlLWdyb3VwLSR7cGF0aH1gfSBzaW5nbGU9e2ZhbHNlfT5cbiAgICAgICAgICAgICAge0NvbXBvbmVudCAmJiA8Q29tcG9uZW50IG1hdGNoPXttYXRjaH0gLz59XG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgIDwvUGFyYW1zQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9Sb3V0ZUNvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L0N1cnJlbnRQYXRoQ29udGV4dC5Qcm92aWRlcj5cbiAgICApXG4gIH1cbn0pKVxuXG5leHBvcnQge1JlcXVpcmVDb21wb25lbnRDb250ZXh0LCBSb3V0ZUNvbnRleHQsIFN3aXRjaCwgdXNlUGFyYW1zfVxuZXhwb3J0IGRlZmF1bHQgUm91dGVcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsYUFBYSxNQUFNLG1CQUFtQjtBQUM3QyxPQUFPQyxLQUFLLElBQUdDLGFBQWEsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLFFBQU8sT0FBTztBQUMvRCxPQUFPQyxJQUFJLE1BQU0sNEJBQTRCO0FBQzdDLE9BQU9DLFNBQVMsTUFBTSxZQUFZO0FBQ2xDLE9BQU9DLGNBQWMsTUFBTSxrQkFBa0I7QUFDN0MsU0FBUUMsY0FBYyxRQUFPLHVDQUF1QztBQUNwRSxPQUFPQyxNQUFNLElBQUdDLG9CQUFvQixRQUFPLFVBQVU7QUFDckQsT0FBT0MsT0FBTyxNQUFNLCtCQUErQjtBQUVuRCxNQUFNQyxrQkFBa0IsZ0JBQUdWLGFBQWEsQ0FBQyxFQUFFLENBQUM7QUFDNUMsTUFBTVcsYUFBYSxnQkFBR1gsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1ZLHVCQUF1QixnQkFBR1osYUFBYSxDQUFDLElBQUksQ0FBQztBQUNuRCxNQUFNYSxZQUFZLGdCQUFHYixhQUFhLENBQUMsSUFBSSxDQUFDO0FBQ3hDLE1BQU1jLFNBQVMsR0FBR0EsQ0FBQSxLQUFNYixVQUFVLENBQUNVLGFBQWEsQ0FBQztBQUVqRCxNQUFNSSxLQUFLLEdBQUdaLElBQUksQ0FBQ0csY0FBYyxDQUFDLE1BQU1TLEtBQUssU0FBU2pCLGFBQWEsQ0FBQztFQUNsRSxPQUFPa0IsWUFBWSxHQUFHO0lBQ3BCQyxLQUFLLEVBQUUsS0FBSztJQUNaQyxRQUFRLEVBQUUsS0FBSztJQUNmQyxhQUFhLEVBQUU7RUFDakIsQ0FBQztFQUVELE9BQU9DLFNBQVMsR0FBR2YsY0FBYyxDQUFDO0lBQ2hDZ0IsUUFBUSxFQUFFakIsU0FBUyxDQUFDa0IsSUFBSTtJQUN4QkMsU0FBUyxFQUFFbkIsU0FBUyxDQUFDb0IsTUFBTTtJQUMzQkMsYUFBYSxF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U0FBUztNQUFFTztJQUFJLENBQUMsR0FBRyxJQUFJLENBQUNVLEtBQUs7SUFDOUMsTUFBTTtNQUFDa0IsU0FBUztNQUFFQyxpQkFBaUI7TUFBRUM7SUFBTyxDQUFDLEdBQUcsSUFBSSxDQUFDZixDQUFDO0lBRXRELElBQUksQ0FBQ2UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDRSxjQUFjLENBQUMsQ0FBQyxFQUFFO01BQ3RDO01BQ0EsT0FBTyxJQUFJO0lBQ2I7SUFFQSxJQUFJLENBQUNKLFNBQVMsSUFBSSxDQUFDckMsUUFBUSxJQUFJLENBQUNzQyxpQkFBaUIsRUFBRTtNQUNqRDtNQUNBLG9CQUNFNUQsS0FBQSxDQUFBa0csYUFBQSxjQUFLLFVBQ0ssRUFBQzFFLFNBQVMsSUFBSSxJQUFJLENBQUNpQixLQUFLLENBQUNmLGFBQWEsSUFBSTJDLGtCQUFrQixDQUFDbUIsSUFBSSxDQUFDLEdBQUcsQ0FDMUUsQ0FBQztJQUVWO0lBRUEsSUFBSSxDQUFDN0IsU0FBUyxJQUFJLENBQUNyQyxRQUFRLElBQUlzQyxpQkFBaUIsRUFBRTtNQUNoRDtNQUNBLE9BQU8sSUFBSTtJQUNiO0lBRUEsb0JBQ0U1RCxLQUFBLENBQUFrRyxhQUFBLENBQUN2RixrQkFBa0IsQ0FBQ3dGLFFBQVE7TUFBQ0MsS0FBSyxFQUFFL0I7SUFBbUIsZ0JBQ3JEckUsS0FBQSxDQUFBa0csYUFBQSxDQUFDcEYsWUFBWSxDQUFDcUYsUUFBUTtNQUFDQyxLQUFLLEVBQUU5QyxhQUFhLENBQUNrQyxJQUFJLENBQUMsR0FBRztJQUFFLGdCQUNwRHhGLEtBQUEsQ0FBQWtHLGFBQUEsQ0FBQ3RGLGFBQWEsQ0FBQ3VGLFFBQVE7TUFBQ0MsS0FBSyxFQUFFaEU7SUFBVSxnQkFDdkNwQyxLQUFBLENBQUFrRyxhQUFBLENBQUMxRixNQUFNO01BQUM2RixJQUFJLEVBQUUsZUFBZXRFLElBQUksRUFBRztNQUFDdUUsTUFBTSxFQUFFO0lBQU0sR0FDaEQzQyxTQUFTLGlCQUFJM0QsS0FBQSxDQUFBa0csYUFBQSxDQUFDdkMsU0FBUztNQUFDeEIsS0FBSyxFQUFFQTtJQUFNLENBQUUsQ0FBQyxFQUN4Q2IsUUFDSyxDQUNjLENBQ0gsQ0FDSSxDQUFDO0VBRWxDO0FBQ0YsQ0FBQyxDQUFDLENBQUM7QUFFSCxTQUFRVCx1QkFBdUIsRUFBRUMsWUFBWSxFQUFFTixNQUFNLEVBQUVPLFNBQVM7QUFDaEUsZUFBZUMsS0FBSyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import BaseComponent from "../base-component";
|
|
2
|
+
import React, { createContext } from "react";
|
|
3
|
+
import memo from "set-state-compare/src/memo";
|
|
4
|
+
import PropTypes from "prop-types";
|
|
5
|
+
import propTypesExact from "prop-types-exact";
|
|
6
|
+
import { shapeComponent } from "set-state-compare/src/shape-component";
|
|
7
|
+
const CurrentSwitchContext = /*#__PURE__*/createContext([]);
|
|
8
|
+
const Switch = memo(shapeComponent(class Switch extends BaseComponent {
|
|
9
|
+
static defaultProps = {
|
|
10
|
+
name: "[no name]",
|
|
11
|
+
single: true
|
|
12
|
+
};
|
|
13
|
+
static propTypes = propTypesExact({
|
|
14
|
+
children: PropTypes.node,
|
|
15
|
+
name: PropTypes.string,
|
|
16
|
+
single: PropTypes.bool
|
|
17
|
+
});
|
|
18
|
+
pathsMatchedKeys = [];
|
|
19
|
+
setup() {
|
|
20
|
+
this.useStates({
|
|
21
|
+
lastUpdate: new Date(),
|
|
22
|
+
pathShown: undefined,
|
|
23
|
+
pathsMatched: {}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
render() {
|
|
27
|
+
const {
|
|
28
|
+
pathShown,
|
|
29
|
+
pathsMatched
|
|
30
|
+
} = this.s;
|
|
31
|
+
return /*#__PURE__*/React.createElement(CurrentSwitchContext.Provider, {
|
|
32
|
+
value: {
|
|
33
|
+
pathShown,
|
|
34
|
+
pathsMatched,
|
|
35
|
+
switchGroup: this
|
|
36
|
+
}
|
|
37
|
+
}, this.props.children);
|
|
38
|
+
}
|
|
39
|
+
pathShown(pathsMatched) {
|
|
40
|
+
for (const pathMatched of this.tt.pathsMatchedKeys) {
|
|
41
|
+
const isPathMatched = pathsMatched[pathMatched];
|
|
42
|
+
if (isPathMatched) {
|
|
43
|
+
return pathMatched;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
setPathMatched(path, matched) {
|
|
48
|
+
const {
|
|
49
|
+
pathsMatchedKeys
|
|
50
|
+
} = this.tt;
|
|
51
|
+
const {
|
|
52
|
+
pathsMatched
|
|
53
|
+
} = this.s;
|
|
54
|
+
if (!path) throw new Error("No 'path' given");
|
|
55
|
+
if (pathsMatched[path] == matched) return;
|
|
56
|
+
if (!pathsMatchedKeys.includes(path)) {
|
|
57
|
+
pathsMatchedKeys.push(path);
|
|
58
|
+
}
|
|
59
|
+
const newPathsMatched = {
|
|
60
|
+
...this.s.pathsMatched
|
|
61
|
+
};
|
|
62
|
+
newPathsMatched[path] = matched;
|
|
63
|
+
this.setState({
|
|
64
|
+
lastUpdate: Math.random() + new Date().getTime(),
|
|
65
|
+
pathShown: this.pathShown(newPathsMatched),
|
|
66
|
+
pathsMatched: newPathsMatched
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}));
|
|
70
|
+
export { CurrentSwitchContext };
|
|
71
|
+
export default Switch;
|
|
72
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwibWVtbyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0Iiwic2hhcGVDb21wb25lbnQiLCJDdXJyZW50U3dpdGNoQ29udGV4dCIsIlN3aXRjaCIsImRlZmF1bHRQcm9wcyIsIm5hbWUiLCJzaW5nbGUiLCJwcm9wVHlwZXMiLCJjaGlsZHJlbiIsIm5vZGUiLCJzdHJpbmciLCJib29sIiwicGF0aHNNYXRjaGVkS2V5cyIsInNldHVwIiwidXNlU3RhdGVzIiwibGFzdFVwZGF0ZSIsIkRhdGUiLCJwYXRoU2hvd24iLCJ1bmRlZmluZWQiLCJwYXRoc01hdGNoZWQiLCJyZW5kZXIiLCJzIiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIiwidmFsdWUiLCJzd2l0Y2hHcm91cCIsInByb3BzIiwicGF0aE1hdGNoZWQiLCJ0dCIsImlzUGF0aE1hdGNoZWQiLCJzZXRQYXRoTWF0Y2hlZCIsInBhdGgiLCJtYXRjaGVkIiwiRXJyb3IiLCJpbmNsdWRlcyIsInB1c2giLCJuZXdQYXRoc01hdGNoZWQiLCJzZXRTdGF0ZSIsIk1hdGgiLCJyYW5kb20iLCJnZXRUaW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlci9zd2l0Y2guanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuLi9iYXNlLWNvbXBvbmVudFwiXG5pbXBvcnQgUmVhY3QsIHtjcmVhdGVDb250ZXh0fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvc2hhcGUtY29tcG9uZW50XCJcblxuY29uc3QgQ3VycmVudFN3aXRjaENvbnRleHQgPSBjcmVhdGVDb250ZXh0KFtdKVxuXG5jb25zdCBTd2l0Y2ggPSBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIFN3aXRjaCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIG5hbWU6IFwiW25vIG5hbWVdXCIsXG4gICAgc2luZ2xlOiB0cnVlXG4gIH1cblxuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHNpbmdsZTogUHJvcFR5cGVzLmJvb2xcbiAgfSlcblxuICBwYXRoc01hdGNoZWRLZXlzID0gW11cblxuICBzZXR1cCgpIHtcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBsYXN0VXBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgcGF0aFNob3duOiB1bmRlZmluZWQsXG4gICAgICBwYXRoc01hdGNoZWQ6IHt9XG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7cGF0aFNob3duLCBwYXRoc01hdGNoZWR9ID0gdGhpcy5zXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEN1cnJlbnRTd2l0Y2hDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7cGF0aFNob3duLCBwYXRoc01hdGNoZWQsIHN3aXRjaEdyb3VwOiB0aGlzfX0+XG4gICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgPC9DdXJyZW50U3dpdGNoQ29udGV4dC5Qcm92aWRlcj5cbiAgICApXG4gIH1cblxuICBwYXRoU2hvd24ocGF0aHNNYXRjaGVkKSB7XG4gICAgZm9yIChjb25zdCBwYXRoTWF0Y2hlZCBvZiB0aGlzLnR0LnBhdGhzTWF0Y2hlZEtleXMpIHtcbiAgICAgIGNvbnN0IGlzUGF0aE1hdGNoZWQgPSBwYXRoc01hdGNoZWRbcGF0aE1hdGNoZWRdXG5cbiAgICAgIGlmIChpc1BhdGhNYXRjaGVkKSB7XG4gICAgICAgIHJldHVybiBwYXRoTWF0Y2hlZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFBhdGhNYXRjaGVkKHBhdGgsIG1hdGNoZWQpIHtcbiAgICBjb25zdCB7cGF0aHNNYXRjaGVkS2V5c30gPSB0aGlzLnR0XG4gICAgY29uc3Qge3BhdGhzTWF0Y2hlZH0gPSB0aGlzLnNcblxuICAgIGlmICghcGF0aCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gJ3BhdGgnIGdpdmVuXCIpXG4gICAgaWYgKHBhdGhzTWF0Y2hlZFtwYXRoXSA9PSBtYXRjaGVkKSByZXR1cm5cblxuICAgIGlmICghcGF0aHNNYXRjaGVkS2V5cy5pbmNsdWRlcyhwYXRoKSkge1xuICAgICAgcGF0aHNNYXRjaGVkS2V5cy5wdXNoKHBhdGgpXG4gICAgfVxuXG4gICAgY29uc3QgbmV3UGF0aHNNYXRjaGVkID0gey4uLnRoaXMucy5wYXRoc01hdGNoZWR9XG5cbiAgICBuZXdQYXRoc01hdGNoZWRbcGF0aF0gPSBtYXRjaGVkXG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGxhc3RVcGRhdGU6IE1hdGgucmFuZG9tKCkgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgIHBhdGhTaG93bjogdGhpcy5wYXRoU2hvd24obmV3UGF0aHNNYXRjaGVkKSxcbiAgICAgIHBhdGhzTWF0Y2hlZDogbmV3UGF0aHNNYXRjaGVkXG4gICAgfSlcbiAgfVxufSkpXG5cbmV4cG9ydCB7Q3VycmVudFN3aXRjaENvbnRleHR9XG5leHBvcnQgZGVmYXVsdCBTd2l0Y2hcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsYUFBYSxNQUFNLG1CQUFtQjtBQUM3QyxPQUFPQyxLQUFLLElBQUdDLGFBQWEsUUFBTyxPQUFPO0FBQzFDLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsT0FBT0MsU0FBUyxNQUFNLFlBQVk7QUFDbEMsT0FBT0MsY0FBYyxNQUFNLGtCQUFrQjtBQUM3QyxTQUFRQyxj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
|
package/build/router.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import BaseComponent from "./base-component";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import propTypesExact from "prop-types-exact";
|
|
4
|
+
import React, { memo, Suspense } from "react";
|
|
5
|
+
import { shapeComponent } from "set-state-compare/src/shape-component";
|
|
6
|
+
import usePath from "on-location-changed/build/use-path";
|
|
7
|
+
import useRouter from "./use-router";
|
|
8
|
+
export default /*#__PURE__*/memo(shapeComponent(class ApiMakerRouter extends BaseComponent {
|
|
9
|
+
static propTypes = propTypesExact({
|
|
10
|
+
history: PropTypes.object,
|
|
11
|
+
locales: PropTypes.array.isRequired,
|
|
12
|
+
notFoundComponent: PropTypes.elementType,
|
|
13
|
+
requireComponent: PropTypes.func.isRequired,
|
|
14
|
+
routeDefinitions: PropTypes.object,
|
|
15
|
+
routes: PropTypes.object
|
|
16
|
+
});
|
|
17
|
+
render() {
|
|
18
|
+
const path = usePath();
|
|
19
|
+
const {
|
|
20
|
+
locales,
|
|
21
|
+
notFoundComponent,
|
|
22
|
+
requireComponent,
|
|
23
|
+
routeDefinitions,
|
|
24
|
+
routes
|
|
25
|
+
} = this.props;
|
|
26
|
+
const {
|
|
27
|
+
match
|
|
28
|
+
} = useRouter({
|
|
29
|
+
locales,
|
|
30
|
+
path,
|
|
31
|
+
routes,
|
|
32
|
+
routeDefinitions
|
|
33
|
+
});
|
|
34
|
+
const {
|
|
35
|
+
matchingRoute
|
|
36
|
+
} = match;
|
|
37
|
+
if (!matchingRoute) {
|
|
38
|
+
if (notFoundComponent) {
|
|
39
|
+
const NotFoundComponent = notFoundComponent;
|
|
40
|
+
return /*#__PURE__*/React.createElement(Suspense, {
|
|
41
|
+
fallback: /*#__PURE__*/React.createElement("div", null)
|
|
42
|
+
}, /*#__PURE__*/React.createElement(NotFoundComponent, {
|
|
43
|
+
match: match
|
|
44
|
+
}));
|
|
45
|
+
} else {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const Component = requireComponent({
|
|
50
|
+
routeDefinition: matchingRoute.parsedRouteDefinition.routeDefinition
|
|
51
|
+
});
|
|
52
|
+
return /*#__PURE__*/React.createElement(Suspense, {
|
|
53
|
+
fallback: /*#__PURE__*/React.createElement("div", null)
|
|
54
|
+
}, /*#__PURE__*/React.createElement(Component, {
|
|
55
|
+
match: match
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
}));
|
|
59
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwicHJvcFR5cGVzRXhhY3QiLCJSZWFjdCIsIm1lbW8iLCJTdXNwZW5zZSIsInNoYXBlQ29tcG9uZW50IiwidXNlUGF0aCIsInVzZVJvdXRlciIsIkFwaU1ha2VyUm91dGVyIiwicHJvcFR5cGVzIiwiaGlzdG9yeSIsIm9iamVjdCIsImxvY2FsZXMiLCJhcnJheSIsImlzUmVxdWlyZWQiLCJub3RGb3VuZENvbXBvbmVudCIsImVsZW1lbnRUeXBlIiwicmVxdWlyZUNvbXBvbmVudCIsImZ1bmMiLCJyb3V0ZURlZmluaXRpb25zIiwicm91dGVzIiwicmVuZGVyIiwicGF0aCIsInByb3BzIiwibWF0Y2giLCJtYXRjaGluZ1JvdXRlIiwiTm90Rm91bmRDb21wb25lbnQiLCJjcmVhdGVFbGVtZW50IiwiZmFsbGJhY2siLCJDb21wb25lbnQiLCJyb3V0ZURlZmluaXRpb24iLCJwYXJzZWRSb3V0ZURlZmluaXRpb24iXSwic291cmNlcyI6WyIuLi9zcmMvcm91dGVyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi9iYXNlLWNvbXBvbmVudFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgUmVhY3QsIHttZW1vLCBTdXNwZW5zZX0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvc2hhcGUtY29tcG9uZW50XCJcbmltcG9ydCB1c2VQYXRoIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1wYXRoXCJcbmltcG9ydCB1c2VSb3V0ZXIgZnJvbSBcIi4vdXNlLXJvdXRlclwiXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJSb3V0ZXIgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBoaXN0b3J5OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGxvY2FsZXM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAgIG5vdEZvdW5kQ29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgcmVxdWlyZUNvbXBvbmVudDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICByb3V0ZURlZmluaXRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHJvdXRlczogUHJvcFR5cGVzLm9iamVjdFxuICB9KVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBwYXRoID0gdXNlUGF0aCgpXG4gICAgY29uc3Qge2xvY2FsZXMsIG5vdEZvdW5kQ29tcG9uZW50LCByZXF1aXJlQ29tcG9uZW50LCByb3V0ZURlZmluaXRpb25zLCByb3V0ZXN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHttYXRjaH0gPSB1c2VSb3V0ZXIoe2xvY2FsZXMsIHBhdGgsIHJvdXRlcywgcm91dGVEZWZpbml0aW9uc30pXG4gICAgY29uc3Qge21hdGNoaW5nUm91dGV9ID0gbWF0Y2hcblxuICAgIGlmICghbWF0Y2hpbmdSb3V0ZSkge1xuICAgICAgaWYgKG5vdEZvdW5kQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IE5vdEZvdW5kQ29tcG9uZW50ID0gbm90Rm91bmRDb21wb25lbnRcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxTdXNwZW5zZSBmYWxsYmFjaz17PGRpdiAvPn0+XG4gICAgICAgICAgICA8Tm90Rm91bmRDb21wb25lbnQgbWF0Y2g9e21hdGNofSAvPlxuICAgICAgICAgIDwvU3VzcGVuc2U+XG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgQ29tcG9uZW50ID0gcmVxdWlyZUNvbXBvbmVudCh7cm91dGVEZWZpbml0aW9uOiBtYXRjaGluZ1JvdXRlLnBhcnNlZFJvdXRlRGVmaW5pdGlvbi5yb3V0ZURlZmluaXRpb259KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdXNwZW5zZSBmYWxsYmFjaz17PGRpdiAvPn0+XG4gICAgICAgIDxDb21wb25lbnQgbWF0Y2g9e21hdGNofSAvPlxuICAgICAgPC9TdXNwZW5zZT5cbiAgICApXG4gIH1cbn0pKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxhQUFhLE1BQU0sa0JBQWtCO0FBQzVDLE9BQU9DLFNBQVMsTUFBTSxZQUFZO0FBQ2xDLE9BQU9DLGNBQWMsTUFBTSxrQkFBa0I7QUFDN0MsT0FBT0MsS0FBSyxJQUFHQyxJQUFJLEVBQUVDLFFBQVEsUUFBTyxPQUFPO0FBQzNDLFNBQVFDLGNBQWMsUUFBTyx1Q0FBdUM7QUFDcEUsT0FBT0MsT0FBTyxNQUFNLG9DQUFvQztBQUN4RCxPQUFPQyxTQUFTLE1BQU0sY0FBYztBQUVwQyw0QkFBZUosSUFBSSxDQUFDRSxjQUFjLENBQUMsTUFBTUcsY0FBYyxTQUFTVCxhQUFhLENBQUM7RUFDNUUsT0FBT1UsU0FBUyxHQUFHUixjQUFjLENBQUM7SUFDaENTLE9BQU8sRUFBRVYsU0FBUyxDQUFDVyxNQUFNO0lBQ3pCQyxPQUFPLEVBQUVaLFNBQVMsQ0FBQ2EsS0FBSyxDQUFDQyxVQUFVO0lBQ25DQyxpQkFBaUIsRUFBRWYsU0FBUyxDQUFDZ0IsV0FBVztJQUN4Q0MsZ0JBQWdCLEVBQUVqQixTQUFTLENBQUNrQixJQUFJLENBQUNKLFVBQVU7SUFDM0NLLGdCQUFnQixFQUFFbkIsU0FBUyxDQUFDVyxNQUFNO0lBQ2xDUyxNQUFNLEVBQUVwQixTQUFTLENBQUNXO0VBQ3BCLENBQUMsQ0FBQztFQUVGVSxNQUFNQSxDQUFBLEVBQUc7SUFDUCxNQUFNQyxJQUFJLEdBQUdoQixPQUFPLENBQUMsQ0FBQztJQUN0QixNQUFNO01BQUNNLE9BQU87TUFBRUcsaUJBQWlCO01BQUVFLGdCQUFnQjtNQUFFRSxnQkFBZ0I7TUFBRUM7SUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDRyxLQUFLO0lBQzNGLE1BQU07TUFBQ0M7SUFBSyxDQUFDLEdBQUdqQixTQUFTLENBQUM7TUFBQ0ssT0FBTztNQUFFVSxJQUFJO01BQUVGLE1BQU07TUFBRUQ7SUFBZ0IsQ0FBQyxDQUFDO0lBQ3BFLE1BQU07TUFBQ007SUFBYSxDQUFDLEdBQUdELEtBQUs7SUFFN0IsSUFBSSxDQUFDQyxhQUFhLEVBQUU7TUFDbEIsSUFBSVYsaUJBQWlCLEVBQUU7UUFDckIsTUFBTVcsaUJBQWlCLEdBQUdYLGlCQUFpQjtRQUUzQyxvQkFDRWIsS0FBQSxDQUFBeUIsYUFBQSxDQUFDdkIsUUFBUTtVQUFDd0IsUUFBUSxlQUFFMUIsS0FBQSxDQUFBeUIsYUFBQSxZQUFNO1FBQUUsZ0JBQzFCekIsS0FBQSxDQUFBeUIsYUFBQSxDQUFDRCxpQkFBaUI7VUFBQ0YsS0FBSyxFQUFFQTtRQUFNLENBQUUsQ0FDMUIsQ0FBQztNQUVmLENBQUMsTUFBTTtRQUNMLE9BQU8sSUFBSTtNQUNiO0lBQ0Y7SUFFQSxNQUFNSyxTQUFTLEdBQUdaLGdCQUFnQixDQUFDO01BQUNhLGVBQWUsRUFBRUwsYUFBYSxDQUFDTSxxQkFBcUIsQ0FBQ0Q7SUFBZSxDQUFDLENBQUM7SUFFMUcsb0JBQ0U1QixLQUFBLENBQUF5QixhQUFBLENBQUN2QixRQUFRO01BQUN3QixRQUFRLGVBQUUxQixLQUFBLENBQUF5QixhQUFBLFlBQU07SUFBRSxnQkFDMUJ6QixLQUFBLENBQUF5QixhQUFBLENBQUNFLFNBQVM7TUFBQ0wsS0FBSyxFQUFFQTtJQUFNLENBQUUsQ0FDbEIsQ0FBQztFQUVmO0FBQ0YsQ0FBQyxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|