@kaspernj/api-maker 1.0.2054 → 1.0.2056
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/api.js +65 -213
- package/build/attribute-not-loaded-error.js +3 -26
- package/build/base-component.js +4 -27
- package/build/base-error.js +21 -46
- package/build/base-model/attribute.js +15 -22
- package/build/base-model/column.js +5 -9
- package/build/base-model/reflection.js +12 -52
- package/build/base-model/scope.js +9 -46
- package/build/base-model.js +584 -837
- package/build/bootstrap/attribute-row.js +88 -173
- package/build/bootstrap/attribute-rows.js +22 -51
- package/build/bootstrap/card.js +77 -160
- package/build/bootstrap/checkbox.js +54 -103
- package/build/bootstrap/checkboxes.js +117 -203
- package/build/bootstrap/index.js +1 -1
- package/build/bootstrap/input.js +81 -132
- package/build/bootstrap/invalid-feedback.js +19 -47
- package/build/bootstrap/paginate.js +100 -165
- package/build/bootstrap/radio-buttons.js +44 -81
- package/build/bootstrap/select.js +44 -91
- package/build/bootstrap/sort-link.js +69 -152
- package/build/cable-connection-pool.js +44 -66
- package/build/cable-subscription-pool.js +105 -162
- package/build/cable-subscription.js +10 -17
- package/build/cache-key-generator.js +28 -37
- package/build/can-can.js +81 -202
- package/build/channels-consumer.js +6 -11
- package/build/collection-loader.js +36 -54
- package/build/collection.d.ts.map +1 -1
- package/build/collection.js +160 -308
- package/build/command-submit-data.d.ts +1 -1
- package/build/command-submit-data.d.ts.map +1 -1
- package/build/command-submit-data.js +30 -39
- package/build/commands-pool.js +140 -216
- package/build/compose.js +4 -12
- package/build/config.js +21 -68
- package/build/custom-error.js +5 -30
- package/build/data-set-to-attributes.js +6 -42
- package/build/deserializer.js +27 -80
- package/build/destroy-error.js +5 -30
- package/build/devise.js +84 -188
- package/build/draggable-sort/controller.js +88 -111
- package/build/draggable-sort/index.js +68 -145
- package/build/draggable-sort/item.js +132 -198
- package/build/error-logger.js +79 -164
- package/build/error-messages.js +5 -8
- package/build/event-connection.js +24 -62
- package/build/event-emitter-listener.js +7 -24
- package/build/event-model-class.js +20 -47
- package/build/events.js +4 -9
- package/build/form.js +66 -154
- package/build/history-expo.js +13 -25
- package/build/history-react-native.js +15 -27
- package/build/history.js +3 -5
- package/build/index.js +3 -6
- package/build/inputs/attachment.js +72 -123
- package/build/inputs/auto-submit.js +16 -55
- package/build/inputs/checkbox.js +78 -167
- package/build/inputs/checkboxes.js +76 -159
- package/build/inputs/id-for-component.js +5 -41
- package/build/inputs/input-wrapper.js +8 -27
- package/build/inputs/input.js +159 -245
- package/build/inputs/money.js +124 -186
- package/build/inputs/name-for-component.js +5 -41
- package/build/inputs/select.js +69 -123
- package/build/instance-of-class-name.js +16 -21
- package/build/is-expo.js +9 -11
- package/build/key-value-store.js +52 -128
- package/build/link.js +52 -115
- package/build/logger.js +20 -26
- package/build/merge-styles.js +6 -10
- package/build/modal.js +15 -62
- package/build/model-class-require.js +9 -44
- package/build/model-events.js +25 -34
- package/build/model-name.js +16 -57
- package/build/model-prop-type.js +52 -63
- package/build/model-recipes-loader.js +17 -25
- package/build/model-recipes-model-loader.d.ts +1 -1
- package/build/model-recipes-model-loader.js +130 -208
- package/build/models-response-reader.js +25 -66
- package/build/models.js +6 -11
- package/build/money-formatter.d.ts +2 -2
- package/build/money-formatter.d.ts.map +1 -1
- package/build/money-formatter.js +46 -56
- package/build/not-loaded-error.js +3 -26
- package/build/params.js +32 -42
- package/build/preloaded.js +19 -59
- package/build/resize-observer.js +6 -12
- package/build/rest-props-validator.js +5 -7
- package/build/result.js +11 -15
- package/build/router/route.js +179 -312
- package/build/router/switch.js +56 -130
- package/build/router.js +34 -94
- package/build/routes-native.js +64 -148
- package/build/routes.js +26 -80
- package/build/run-last.js +20 -25
- package/build/serializer.js +29 -34
- package/build/services.js +10 -19
- package/build/session-status-updater.js +85 -184
- package/build/source-maps-loader.d.ts +37 -0
- package/build/source-maps-loader.d.ts.map +1 -0
- package/build/source-maps-loader.js +103 -225
- package/build/super-admin/config-reader.d.ts +2 -2
- package/build/super-admin/config-reader.js +42 -83
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +53 -115
- package/build/super-admin/edit-page/edit-attribute-content.js +47 -77
- package/build/super-admin/edit-page/edit-attribute-input.js +57 -119
- package/build/super-admin/edit-page/edit-attribute.js +40 -104
- package/build/super-admin/edit-page.js +88 -201
- package/build/super-admin/has-edit-config.js +7 -13
- package/build/super-admin/index-page.js +17 -44
- package/build/super-admin/index.js +87 -210
- package/build/super-admin/layout/header/index.js +91 -152
- package/build/super-admin/layout/index.js +70 -153
- package/build/super-admin/layout/menu/index.js +85 -161
- package/build/super-admin/layout/menu/menu-content.js +25 -85
- package/build/super-admin/layout/menu/menu-item.js +52 -102
- package/build/super-admin/layout/no-access.js +19 -45
- package/build/super-admin/model-class-table.js +45 -129
- package/build/super-admin/models.js +6 -42
- package/build/super-admin/show-nav.js +27 -89
- package/build/super-admin/show-page/belongs-to-attribute-row.js +18 -76
- package/build/super-admin/show-page/index.js +101 -187
- package/build/super-admin/show-reflection-actions.js +39 -100
- package/build/super-admin/show-reflection-link.js +27 -99
- package/build/super-admin/show-reflection-page.js +34 -97
- package/build/table/column-content.js +77 -121
- package/build/table/column-identifier.js +7 -11
- package/build/table/column-visible.js +2 -5
- package/build/table/components/column.js +13 -60
- package/build/table/components/flat-list.js +13 -60
- package/build/table/components/header.js +15 -62
- package/build/table/components/row.js +16 -63
- package/build/table/filters/attribute-element.js +34 -62
- package/build/table/filters/filter-form.js +280 -483
- package/build/table/filters/filter.js +45 -73
- package/build/table/filters/index.js +95 -139
- package/build/table/filters/load-search-modal.js +64 -212
- package/build/table/filters/reflection-element.js +27 -55
- package/build/table/filters/save-search-modal.js +44 -140
- package/build/table/filters/scope-element.js +28 -56
- package/build/table/header-column-content.js +33 -71
- package/build/table/header-column.js +89 -218
- package/build/table/header-select.js +45 -77
- package/build/table/model-callback-args.js +5 -41
- package/build/table/model-column.js +59 -144
- package/build/table/model-row.js +75 -187
- package/build/table/select-calculator.js +27 -86
- package/build/table/settings/column-row.js +66 -186
- package/build/table/settings/download-action.js +38 -74
- package/build/table/settings/index.js +38 -102
- package/build/table/table-settings.js +185 -323
- package/build/table/table.js +583 -781
- package/build/table/use-sorting.js +16 -35
- package/build/table/widths.js +32 -38
- package/build/table/worker-plugins-check-all-checkbox.js +77 -225
- package/build/table/worker-plugins-checkbox.js +74 -185
- package/build/translated-attributes.js +6 -11
- package/build/translated-collections.js +11 -20
- package/build/updated-attribute.js +47 -120
- package/build/url-encode.js +6 -12
- package/build/use-breakpoint.js +43 -95
- package/build/use-can-can.js +30 -92
- package/build/use-collection.js +119 -229
- package/build/use-created-event.js +27 -44
- package/build/use-current-user-context.js +57 -151
- package/build/use-current-user.js +14 -32
- package/build/use-destroyed-event.js +22 -43
- package/build/use-event-emitter.d.ts +1 -2
- package/build/use-event-emitter.d.ts.map +1 -1
- package/build/use-event-emitter.js +10 -16
- package/build/use-event-listener.js +13 -22
- package/build/use-input.js +49 -69
- package/build/use-model-event.js +22 -43
- package/build/use-model.js +96 -199
- package/build/use-resize-observer.js +11 -21
- package/build/use-router.js +65 -107
- package/build/use-screen-layout.js +17 -19
- package/build/use-styles.js +24 -75
- package/build/use-updated-event.js +22 -44
- package/build/use-validation-errors.js +12 -18
- package/build/utils/button.js +86 -136
- package/build/utils/card.js +31 -106
- package/build/utils/checkbox.js +51 -112
- package/build/utils/checkboxes.js +109 -182
- package/build/utils/default-style.js +29 -103
- package/build/utils/header.js +8 -35
- package/build/utils/icon.js +36 -117
- package/build/utils/invalid-feedback.js +16 -43
- package/build/utils/modal.js +25 -108
- package/build/utils/text.js +10 -37
- package/build/validation-error.js +31 -89
- package/build/validation-errors.js +61 -111
- package/build/with-api-maker.js +15 -67
- package/build/with-collection.js +14 -64
- package/build/with-current-user.js +7 -23
- package/build/with-model.js +11 -27
- package/build/with-router.js +8 -35
- package/package.json +4 -3
- package/build/api.js.map +0 -1
- package/build/attribute-not-loaded-error.js.map +0 -1
- package/build/base-component.js.map +0 -1
- package/build/base-error.js.map +0 -1
- package/build/base-model/attribute.js.map +0 -1
- package/build/base-model/column.js.map +0 -1
- package/build/base-model/reflection.js.map +0 -1
- package/build/base-model/scope.js.map +0 -1
- package/build/base-model.js.map +0 -1
- package/build/bootstrap/attribute-row.js.map +0 -1
- package/build/bootstrap/attribute-rows.js.map +0 -1
- package/build/bootstrap/card.js.map +0 -1
- package/build/bootstrap/checkbox.js.map +0 -1
- package/build/bootstrap/checkboxes.js.map +0 -1
- package/build/bootstrap/index.js.map +0 -1
- package/build/bootstrap/input.js.map +0 -1
- package/build/bootstrap/invalid-feedback.js.map +0 -1
- package/build/bootstrap/paginate.js.map +0 -1
- package/build/bootstrap/radio-buttons.js.map +0 -1
- package/build/bootstrap/select.js.map +0 -1
- package/build/bootstrap/sort-link.js.map +0 -1
- package/build/cable-connection-pool.js.map +0 -1
- package/build/cable-subscription-pool.js.map +0 -1
- package/build/cable-subscription.js.map +0 -1
- package/build/cache-key-generator.js.map +0 -1
- package/build/can-can.js.map +0 -1
- package/build/channels-consumer.js.map +0 -1
- package/build/collection-loader.js.map +0 -1
- package/build/collection.js.map +0 -1
- package/build/command-submit-data.js.map +0 -1
- package/build/commands-pool.js.map +0 -1
- package/build/compose.js.map +0 -1
- package/build/config.js.map +0 -1
- package/build/custom-error.js.map +0 -1
- package/build/data-set-to-attributes.js.map +0 -1
- package/build/deserializer.js.map +0 -1
- package/build/destroy-error.js.map +0 -1
- package/build/devise.js.map +0 -1
- package/build/draggable-sort/controller.js.map +0 -1
- package/build/draggable-sort/index.js.map +0 -1
- package/build/draggable-sort/item.js.map +0 -1
- package/build/error-logger.js.map +0 -1
- package/build/error-messages.js.map +0 -1
- package/build/event-connection.js.map +0 -1
- package/build/event-emitter-listener.js.map +0 -1
- package/build/event-model-class.js.map +0 -1
- package/build/events.js.map +0 -1
- package/build/form.js.map +0 -1
- package/build/history-expo.js.map +0 -1
- package/build/history-react-native.js.map +0 -1
- package/build/history.js.map +0 -1
- package/build/index.js.map +0 -1
- package/build/inputs/attachment.js.map +0 -1
- package/build/inputs/auto-submit.js.map +0 -1
- package/build/inputs/checkbox.js.map +0 -1
- package/build/inputs/checkboxes.js.map +0 -1
- package/build/inputs/id-for-component.js.map +0 -1
- package/build/inputs/input-wrapper.js.map +0 -1
- package/build/inputs/input.js.map +0 -1
- package/build/inputs/money.js.map +0 -1
- package/build/inputs/name-for-component.js.map +0 -1
- package/build/inputs/select.js.map +0 -1
- package/build/instance-of-class-name.js.map +0 -1
- package/build/is-expo.js.map +0 -1
- package/build/key-value-store.js.map +0 -1
- package/build/link.js.map +0 -1
- package/build/logger.js.map +0 -1
- package/build/merge-styles.js.map +0 -1
- package/build/modal.js.map +0 -1
- package/build/model-class-require.js.map +0 -1
- package/build/model-events.js.map +0 -1
- package/build/model-name.js.map +0 -1
- package/build/model-prop-type.js.map +0 -1
- package/build/model-recipes-loader.js.map +0 -1
- package/build/model-recipes-model-loader.js.map +0 -1
- package/build/models-response-reader.js.map +0 -1
- package/build/models.js.map +0 -1
- package/build/money-formatter.js.map +0 -1
- package/build/not-loaded-error.js.map +0 -1
- package/build/params.js.map +0 -1
- package/build/preloaded.js.map +0 -1
- package/build/resize-observer.js.map +0 -1
- package/build/rest-props-validator.js.map +0 -1
- package/build/result.js.map +0 -1
- package/build/router/route.js.map +0 -1
- package/build/router/switch.js.map +0 -1
- package/build/router.js.map +0 -1
- package/build/routes-native.js.map +0 -1
- package/build/routes.js.map +0 -1
- package/build/run-last.js.map +0 -1
- package/build/serializer.js.map +0 -1
- package/build/services.js.map +0 -1
- package/build/session-status-updater.js.map +0 -1
- package/build/source-maps-loader.js.map +0 -1
- package/build/super-admin/config-reader.js.map +0 -1
- package/build/super-admin/edit-page/edit-attribute-checkbox.js.map +0 -1
- package/build/super-admin/edit-page/edit-attribute-content.js.map +0 -1
- package/build/super-admin/edit-page/edit-attribute-input.js.map +0 -1
- package/build/super-admin/edit-page/edit-attribute.js.map +0 -1
- package/build/super-admin/edit-page.js.map +0 -1
- package/build/super-admin/has-edit-config.js.map +0 -1
- package/build/super-admin/index-page.js.map +0 -1
- package/build/super-admin/index.js.map +0 -1
- package/build/super-admin/layout/header/index.js.map +0 -1
- package/build/super-admin/layout/index.js.map +0 -1
- package/build/super-admin/layout/menu/index.js.map +0 -1
- package/build/super-admin/layout/menu/menu-content.js.map +0 -1
- package/build/super-admin/layout/menu/menu-item.js.map +0 -1
- package/build/super-admin/layout/no-access.js.map +0 -1
- package/build/super-admin/model-class-table.js.map +0 -1
- package/build/super-admin/models.js.map +0 -1
- package/build/super-admin/show-nav.js.map +0 -1
- package/build/super-admin/show-page/belongs-to-attribute-row.js.map +0 -1
- package/build/super-admin/show-page/index.js.map +0 -1
- package/build/super-admin/show-reflection-actions.js.map +0 -1
- package/build/super-admin/show-reflection-link.js.map +0 -1
- package/build/super-admin/show-reflection-page.js.map +0 -1
- package/build/table/column-content.js.map +0 -1
- package/build/table/column-identifier.js.map +0 -1
- package/build/table/column-visible.js.map +0 -1
- package/build/table/components/column.js.map +0 -1
- package/build/table/components/flat-list.js.map +0 -1
- package/build/table/components/header.js.map +0 -1
- package/build/table/components/row.js.map +0 -1
- package/build/table/filters/attribute-element.js.map +0 -1
- package/build/table/filters/filter-form.js.map +0 -1
- package/build/table/filters/filter.js.map +0 -1
- package/build/table/filters/index.js.map +0 -1
- package/build/table/filters/load-search-modal.js.map +0 -1
- package/build/table/filters/reflection-element.js.map +0 -1
- package/build/table/filters/save-search-modal.js.map +0 -1
- package/build/table/filters/scope-element.js.map +0 -1
- package/build/table/header-column-content.js.map +0 -1
- package/build/table/header-column.js.map +0 -1
- package/build/table/header-select.js.map +0 -1
- package/build/table/model-callback-args.js.map +0 -1
- package/build/table/model-column.js.map +0 -1
- package/build/table/model-row.js.map +0 -1
- package/build/table/select-calculator.js.map +0 -1
- package/build/table/settings/column-row.js.map +0 -1
- package/build/table/settings/download-action.js.map +0 -1
- package/build/table/settings/index.js.map +0 -1
- package/build/table/table-settings.js.map +0 -1
- package/build/table/table.js.map +0 -1
- package/build/table/use-sorting.js.map +0 -1
- package/build/table/widths.js.map +0 -1
- package/build/table/worker-plugins-check-all-checkbox.js.map +0 -1
- package/build/table/worker-plugins-checkbox.js.map +0 -1
- package/build/translated-attributes.js.map +0 -1
- package/build/translated-collections.js.map +0 -1
- package/build/updated-attribute.js.map +0 -1
- package/build/url-encode.js.map +0 -1
- package/build/use-breakpoint.js.map +0 -1
- package/build/use-can-can.js.map +0 -1
- package/build/use-collection.js.map +0 -1
- package/build/use-created-event.js.map +0 -1
- package/build/use-current-user-context.js.map +0 -1
- package/build/use-current-user.js.map +0 -1
- package/build/use-destroyed-event.js.map +0 -1
- package/build/use-event-emitter.js.map +0 -1
- package/build/use-event-listener.js.map +0 -1
- package/build/use-input.js.map +0 -1
- package/build/use-model-event.js.map +0 -1
- package/build/use-model.js.map +0 -1
- package/build/use-resize-observer.js.map +0 -1
- package/build/use-router.js.map +0 -1
- package/build/use-screen-layout.js.map +0 -1
- package/build/use-styles.js.map +0 -1
- package/build/use-updated-event.js.map +0 -1
- package/build/use-validation-errors.js.map +0 -1
- package/build/utils/button.js.map +0 -1
- package/build/utils/card.js.map +0 -1
- package/build/utils/checkbox.js.map +0 -1
- package/build/utils/checkboxes.js.map +0 -1
- package/build/utils/default-style.js.map +0 -1
- package/build/utils/header.js.map +0 -1
- package/build/utils/icon.js.map +0 -1
- package/build/utils/invalid-feedback.js.map +0 -1
- package/build/utils/modal.js.map +0 -1
- package/build/utils/text.js.map +0 -1
- package/build/validation-error.js.map +0 -1
- package/build/validation-errors.js.map +0 -1
- package/build/with-api-maker.js.map +0 -1
- package/build/with-collection.js.map +0 -1
- package/build/with-current-user.js.map +0 -1
- package/build/with-model.js.map +0 -1
- package/build/with-router.js.map +0 -1
|
@@ -1,117 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
-
if (k2 === undefined) k2 = k;
|
|
19
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
-
}
|
|
23
|
-
Object.defineProperty(o, k2, desc);
|
|
24
|
-
}) : (function(o, m, k, k2) {
|
|
25
|
-
if (k2 === undefined) k2 = k;
|
|
26
|
-
o[k2] = m[k];
|
|
27
|
-
}));
|
|
28
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
-
}) : function(o, v) {
|
|
31
|
-
o["default"] = v;
|
|
32
|
-
});
|
|
33
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
-
var ownKeys = function(o) {
|
|
35
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
-
var ar = [];
|
|
37
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
-
return ar;
|
|
39
|
-
};
|
|
40
|
-
return ownKeys(o);
|
|
41
|
-
};
|
|
42
|
-
return function (mod) {
|
|
43
|
-
if (mod && mod.__esModule) return mod;
|
|
44
|
-
var result = {};
|
|
45
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
-
__setModuleDefault(result, mod);
|
|
47
|
-
return result;
|
|
48
|
-
};
|
|
49
|
-
})();
|
|
50
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
51
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
52
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
53
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
54
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
55
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
56
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
60
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
61
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
62
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
63
|
-
function step(op) {
|
|
64
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
65
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
66
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
67
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
68
|
-
switch (op[0]) {
|
|
69
|
-
case 0: case 1: t = op; break;
|
|
70
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
71
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
72
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
73
|
-
default:
|
|
74
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
75
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
76
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
77
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
78
|
-
if (t[2]) _.ops.pop();
|
|
79
|
-
_.trys.pop(); continue;
|
|
80
|
-
}
|
|
81
|
-
op = body.call(thisArg, _);
|
|
82
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
83
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
87
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
88
|
-
};
|
|
89
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
90
|
-
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
91
|
-
var react_1 = __importStar(require("react"));
|
|
92
|
-
var react_native_1 = require("react-native");
|
|
93
|
-
var base_component_js_1 = __importDefault(require("../base-component.js"));
|
|
94
|
-
var config_reader_js_1 = __importDefault(require("./config-reader.js"));
|
|
95
|
-
var edit_page_1 = __importDefault(require("./edit-page"));
|
|
96
|
-
var flash_notifications_js_1 = __importDefault(require("flash-notifications/build/flash-notifications.js"));
|
|
97
|
-
var has_edit_config_js_1 = __importDefault(require("./has-edit-config.js"));
|
|
98
|
-
var index_page_1 = __importDefault(require("./index-page"));
|
|
99
|
-
var index_1 = __importDefault(require("./layout/index"));
|
|
100
|
-
var link_1 = __importDefault(require("../link"));
|
|
101
|
-
var memo_js_1 = __importDefault(require("set-state-compare/build/memo.js"));
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useMemo } from "react";
|
|
3
|
+
import { Pressable, StyleSheet, View } from "react-native";
|
|
4
|
+
import BaseComponent from "../base-component.js";
|
|
5
|
+
import ConfigReader from "./config-reader.js";
|
|
6
|
+
import EditPage from "./edit-page";
|
|
7
|
+
import FlashNotifications from "flash-notifications/build/flash-notifications.js";
|
|
8
|
+
import hasEditConfig from "./has-edit-config.js";
|
|
9
|
+
import IndexPage from "./index-page";
|
|
10
|
+
import Layout from "./layout/index";
|
|
11
|
+
import Link from "../link";
|
|
12
|
+
import memo from "set-state-compare/build/memo.js";
|
|
102
13
|
// @ts-expect-error
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
14
|
+
import * as models from "models.js";
|
|
15
|
+
import Params from "../params.js";
|
|
16
|
+
import { shapeComponent } from "set-state-compare/build/shape-component.js";
|
|
17
|
+
import ShowPage from "./show-page/index";
|
|
18
|
+
import ShowReflectionActions from "./show-reflection-actions";
|
|
19
|
+
import ShowReflectionPage from "./show-reflection-page";
|
|
20
|
+
import Text from "../utils/text";
|
|
21
|
+
import useCanCan from "../use-can-can.js";
|
|
22
|
+
import useCurrentUser from "../use-current-user.js";
|
|
23
|
+
import useQueryParams from "on-location-changed/build/use-query-params.js";
|
|
24
|
+
import useStyles from "../use-styles.js";
|
|
25
|
+
const styles = StyleSheet.create({
|
|
115
26
|
actionsView: {
|
|
116
27
|
flexDirection: "row",
|
|
117
28
|
alignItems: "center"
|
|
@@ -129,99 +40,54 @@ var styles = react_native_1.StyleSheet.create({
|
|
|
129
40
|
marginRight: 10
|
|
130
41
|
}
|
|
131
42
|
});
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
136
|
-
_this.loadModel = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
137
|
-
var _a, configReader, modelClass, modelId, modelName, abilities, abilitiesForModel, layoutSelect, query, model;
|
|
138
|
-
var _b, _c;
|
|
139
|
-
return __generator(this, function (_d) {
|
|
140
|
-
switch (_d.label) {
|
|
141
|
-
case 0:
|
|
142
|
-
_a = this.tt, configReader = _a.configReader, modelClass = _a.modelClass, modelId = _a.modelId, modelName = _a.modelName;
|
|
143
|
-
if (!(modelId && modelClass)) return [3 /*break*/, 3];
|
|
144
|
-
abilities = {};
|
|
145
|
-
abilitiesForModel = ["destroy", "edit"];
|
|
146
|
-
layoutSelect = (_c = (_b = configReader === null || configReader === void 0 ? void 0 : configReader.modelConfig) === null || _b === void 0 ? void 0 : _b.layout) === null || _c === void 0 ? void 0 : _c.select;
|
|
147
|
-
abilities[modelName] = abilitiesForModel;
|
|
148
|
-
return [4 /*yield*/, modelClass
|
|
149
|
-
.ransack({ id_eq: modelId })
|
|
150
|
-
.abilities(abilities)];
|
|
151
|
-
case 1:
|
|
152
|
-
query = _d.sent();
|
|
153
|
-
if (layoutSelect)
|
|
154
|
-
query.select(layoutSelect);
|
|
155
|
-
return [4 /*yield*/, query.first()];
|
|
156
|
-
case 2:
|
|
157
|
-
model = _d.sent();
|
|
158
|
-
this.setState({ model: model });
|
|
159
|
-
return [3 /*break*/, 4];
|
|
160
|
-
case 3:
|
|
161
|
-
this.setState({ model: undefined });
|
|
162
|
-
_d.label = 4;
|
|
163
|
-
case 4: return [2 /*return*/];
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
}); };
|
|
167
|
-
_this.onDestroyClicked = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
168
|
-
var error_1;
|
|
169
|
-
return __generator(this, function (_a) {
|
|
170
|
-
switch (_a.label) {
|
|
171
|
-
case 0:
|
|
172
|
-
if (!confirm("Are you sure?")) {
|
|
173
|
-
return [2 /*return*/];
|
|
174
|
-
}
|
|
175
|
-
_a.label = 1;
|
|
176
|
-
case 1:
|
|
177
|
-
_a.trys.push([1, 3, , 4]);
|
|
178
|
-
return [4 /*yield*/, this.s.model.destroy()];
|
|
179
|
-
case 2:
|
|
180
|
-
_a.sent();
|
|
181
|
-
params_js_1.default.changeParams({ mode: undefined, model_id: undefined });
|
|
182
|
-
return [3 /*break*/, 4];
|
|
183
|
-
case 3:
|
|
184
|
-
error_1 = _a.sent();
|
|
185
|
-
flash_notifications_js_1.default.errorResponse(error_1);
|
|
186
|
-
return [3 /*break*/, 4];
|
|
187
|
-
case 4: return [2 /*return*/];
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
}); };
|
|
191
|
-
return _this;
|
|
192
|
-
}
|
|
193
|
-
ApiMakerSuperAdmin.prototype.setup = function () {
|
|
194
|
-
var _this = this;
|
|
195
|
-
var _a, _b, _c;
|
|
196
|
-
this.queryParams = (0, use_query_params_js_1.default)();
|
|
43
|
+
export default memo(shapeComponent(class ApiMakerSuperAdmin extends BaseComponent {
|
|
44
|
+
setup() {
|
|
45
|
+
this.queryParams = useQueryParams();
|
|
197
46
|
if (this.queryParams.model) {
|
|
198
47
|
this.modelClass = models[this.queryParams.model];
|
|
199
48
|
}
|
|
200
49
|
else {
|
|
201
50
|
this.modelClass = null;
|
|
202
51
|
}
|
|
203
|
-
this.configReader =
|
|
52
|
+
this.configReader = useMemo(() => this.modelClass && ConfigReader.forModel(this.modelClass), [this.modelClass]);
|
|
204
53
|
this.modelId = this.queryParams.model_id;
|
|
205
|
-
this.modelName =
|
|
206
|
-
this.currentUser = (
|
|
207
|
-
this.canCan = (
|
|
208
|
-
|
|
209
|
-
if (
|
|
210
|
-
abilities.push([
|
|
54
|
+
this.modelName = this.modelClass?.modelClassData()?.name;
|
|
55
|
+
this.currentUser = useCurrentUser();
|
|
56
|
+
this.canCan = useCanCan(() => {
|
|
57
|
+
const abilities = [];
|
|
58
|
+
if (this.modelClass)
|
|
59
|
+
abilities.push([this.modelClass, ["new"]]);
|
|
211
60
|
return abilities;
|
|
212
|
-
}, [
|
|
61
|
+
}, [this.currentUser?.id(), this.modelClass]);
|
|
213
62
|
this.useStates({
|
|
214
63
|
model: undefined
|
|
215
64
|
});
|
|
216
|
-
|
|
65
|
+
useMemo(() => { this.loadModel(); }, [this.modelId]);
|
|
66
|
+
}
|
|
67
|
+
loadModel = async () => {
|
|
68
|
+
const { configReader, modelClass, modelId, modelName } = this.tt;
|
|
69
|
+
if (modelId && modelClass) {
|
|
70
|
+
const abilities = {};
|
|
71
|
+
const abilitiesForModel = ["destroy", "edit"];
|
|
72
|
+
const layoutSelect = configReader?.modelConfig?.layout?.select;
|
|
73
|
+
abilities[modelName] = abilitiesForModel;
|
|
74
|
+
const query = await modelClass
|
|
75
|
+
.ransack({ id_eq: modelId })
|
|
76
|
+
.abilities(abilities);
|
|
77
|
+
if (layoutSelect)
|
|
78
|
+
query.select(layoutSelect);
|
|
79
|
+
const model = await query.first();
|
|
80
|
+
this.setState({ model });
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.setState({ model: undefined });
|
|
84
|
+
}
|
|
217
85
|
};
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
var modelConfigActions = (_a = configReader === null || configReader === void 0 ? void 0 : configReader.modelConfig) === null || _a === void 0 ? void 0 : _a.actions;
|
|
224
|
-
var pageToShow;
|
|
86
|
+
render() {
|
|
87
|
+
const { canCan, configReader, modelClass, modelId, modelName, queryParams } = this.tt;
|
|
88
|
+
const { model } = this.s;
|
|
89
|
+
const modelConfigActions = configReader?.modelConfig?.actions;
|
|
90
|
+
let pageToShow;
|
|
225
91
|
if (queryParams.model && queryParams.model_id && queryParams.model_reflection) {
|
|
226
92
|
pageToShow = "show_reflection";
|
|
227
93
|
}
|
|
@@ -240,20 +106,31 @@ exports.default = (0, memo_js_1.default)((0, shape_component_js_1.shapeComponent
|
|
|
240
106
|
else {
|
|
241
107
|
pageToShow = "welcome";
|
|
242
108
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
(
|
|
246
|
-
(
|
|
247
|
-
(
|
|
248
|
-
(
|
|
249
|
-
(
|
|
250
|
-
(
|
|
251
|
-
return ((
|
|
252
|
-
(
|
|
253
|
-
(
|
|
254
|
-
(
|
|
255
|
-
(
|
|
109
|
+
const actionsViewStyle = useStyles(styles, "actionsView");
|
|
110
|
+
const actions = useMemo(() => _jsxs(View, { style: actionsViewStyle, children: [model && modelConfigActions && modelConfigActions({ model }), modelClass && pageToShow == "index" &&
|
|
111
|
+
_jsx(_Fragment, { children: canCan?.can("new", modelClass) && hasEditConfig(modelClass) &&
|
|
112
|
+
_jsx(Link, { dataSet: { class: "create-new-model-link" }, style: styles.createNewModelLink, to: Params.withParams({ model: modelName, mode: "new" }), children: _jsx(Text, { children: "Create new" }) }) }), model && pageToShow == "show" &&
|
|
113
|
+
_jsxs(_Fragment, { children: [model.can("edit") && hasEditConfig(modelClass) &&
|
|
114
|
+
_jsx(Link, { dataSet: { class: "edit-model-link" }, style: styles.editModelLink, to: Params.withParams({ model: modelName, model_id: modelId, mode: "edit" }), children: _jsx(Text, { children: "Edit" }) }), model.can("destroy") &&
|
|
115
|
+
_jsx(Pressable, { dataSet: { class: "destroy-model-link" }, onPress: this.tt.onDestroyClicked, style: styles.destroyModelLink, children: _jsx(Text, { children: "Delete" }) })] }), pageToShow == "show_reflection" &&
|
|
116
|
+
_jsx(ShowReflectionActions, { model: model, modelClass: modelClass, reflectionName: queryParams.model_reflection })] }), [canCan, configReader?.actions, model, modelClass, pageToShow]);
|
|
117
|
+
return (_jsxs(Layout, { actions: actions, active: queryParams.model, headerTitle: modelClass?.modelName()?.human({ count: 2 }), children: [pageToShow == "index" &&
|
|
118
|
+
_jsx(IndexPage, { modelClass: modelClass }, `index-page-${modelName}`), pageToShow == "show" &&
|
|
119
|
+
_jsx(ShowPage, { modelClass: modelClass, modelId: modelId }, `show-page-${modelName}-${modelId}`), pageToShow == "show_reflection" &&
|
|
120
|
+
_jsx(ShowReflectionPage, { modelClass: modelClass, modelId: modelId }, `show-reflection-page-${modelName}-${modelId}`), pageToShow == "edit" &&
|
|
121
|
+
_jsx(EditPage, { modelClass: modelClass }, `edit-page-${modelName}-${modelId}`)] }));
|
|
122
|
+
}
|
|
123
|
+
onDestroyClicked = async () => {
|
|
124
|
+
if (!confirm("Are you sure?")) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
await this.s.model.destroy();
|
|
129
|
+
Params.changeParams({ mode: undefined, model_id: undefined });
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
FlashNotifications.errorResponse(error);
|
|
133
|
+
}
|
|
256
134
|
};
|
|
257
|
-
|
|
258
|
-
}(base_component_js_1.default))));
|
|
259
|
-
//# sourceMappingURL=index.js.map
|
|
135
|
+
}));
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInN1cGVyLWFkbWluL2luZGV4LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLEVBQUUsRUFBQyxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3hELE9BQU8sYUFBYSxNQUFNLHNCQUFzQixDQUFBO0FBQ2hELE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sUUFBUSxNQUFNLGFBQWEsQ0FBQTtBQUNsQyxPQUFPLGtCQUFrQixNQUFNLGtEQUFrRCxDQUFBO0FBQ2pGLE9BQU8sYUFBYSxNQUFNLHNCQUFzQixDQUFBO0FBQ2hELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQTtBQUNwQyxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuQyxPQUFPLElBQUksTUFBTSxTQUFTLENBQUE7QUFDMUIsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsbUJBQW1CO0FBQ25CLE9BQU8sS0FBSyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBQ25DLE9BQU8sTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUNqQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekUsT0FBTyxRQUFRLE1BQU0sbUJBQW1CLENBQUE7QUFDeEMsT0FBTyxxQkFBcUIsTUFBTSwyQkFBMkIsQ0FBQTtBQUM3RCxPQUFPLGtCQUFrQixNQUFNLHdCQUF3QixDQUFBO0FBQ3ZELE9BQU8sSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNoQyxPQUFPLFNBQVMsTUFBTSxtQkFBbUIsQ0FBQTtBQUN6QyxPQUFPLGNBQWMsTUFBTSx3QkFBd0IsQ0FBQTtBQUNuRCxPQUFPLGNBQWMsTUFBTSwrQ0FBK0MsQ0FBQTtBQUMxRSxPQUFPLFNBQVMsTUFBTSxrQkFBa0Is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QjtvQkFDOUIsS0FBQyxrQkFBa0IsSUFFakIsVUFBVSxFQUFFLFVBQVUsRUFDdEIsT0FBTyxFQUFFLE9BQU8sSUFGWCx3QkFBd0IsU0FBUyxJQUFJLE9BQU8sRUFBRSxDQUduRCxFQUVILFVBQVUsSUFBSSxNQUFNO29CQUNuQixLQUFDLFFBQVEsSUFFUCxVQUFVLEVBQUUsVUFBVSxJQURqQixhQUFhLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FFeEMsSUFFRyxDQUNWLENBQUE7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUU1QixNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUM3RCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN6QyxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHt1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtQcmVzc2FibGUsIFN0eWxlU2hlZXQsIFZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uL2Jhc2UtY29tcG9uZW50LmpzXCJcbmltcG9ydCBDb25maWdSZWFkZXIgZnJvbSBcIi4vY29uZmlnLXJlYWRlci5qc1wiXG5pbXBvcnQgRWRpdFBhZ2UgZnJvbSBcIi4vZWRpdC1wYWdlXCJcbmltcG9ydCBGbGFzaE5vdGlmaWNhdGlvbnMgZnJvbSBcImZsYXNoLW5vdGlmaWNhdGlvbnMvYnVpbGQvZmxhc2gtbm90aWZpY2F0aW9ucy5qc1wiXG5pbXBvcnQgaGFzRWRpdENvbmZpZyBmcm9tIFwiLi9oYXMtZWRpdC1jb25maWcuanNcIlxuaW1wb3J0IEluZGV4UGFnZSBmcm9tIFwiLi9pbmRleC1wYWdlXCJcbmltcG9ydCBMYXlvdXQgZnJvbSBcIi4vbGF5b3V0L2luZGV4XCJcbmltcG9ydCBMaW5rIGZyb20gXCIuLi9saW5rXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbi8vIEB0cy1leHBlY3QtZXJyb3JcbmltcG9ydCAqIGFzIG1vZGVscyBmcm9tIFwibW9kZWxzLmpzXCJcbmltcG9ydCBQYXJhbXMgZnJvbSBcIi4uL3BhcmFtcy5qc1wiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBTaG93UGFnZSBmcm9tIFwiLi9zaG93LXBhZ2UvaW5kZXhcIlxuaW1wb3J0IFNob3dSZWZsZWN0aW9uQWN0aW9ucyBmcm9tIFwiLi9zaG93LXJlZmxlY3Rpb24tYWN0aW9uc1wiXG5pbXBvcnQgU2hvd1JlZmxlY3Rpb25QYWdlIGZyb20gXCIuL3Nob3ctcmVmbGVjdGlvbi1wYWdlXCJcbmltcG9ydCBUZXh0IGZyb20gXCIuLi91dGlscy90ZXh0XCJcbmltcG9ydCB1c2VDYW5DYW4gZnJvbSBcIi4uL3VzZS1jYW4tY2FuLmpzXCJcbmltcG9ydCB1c2VDdXJyZW50VXNlciBmcm9tIFwiLi4vdXNlLWN1cnJlbnQtdXNlci5qc1wiXG5pbXBvcnQgdXNlUXVlcnlQYXJhbXMgZnJvbSBcIm9uLWxvY2F0aW9uLWNoYW5nZWQvYnVpbGQvdXNlLXF1ZXJ5LXBhcmFtcy5qc1wiXG5pbXBvcnQgdXNlU3R5bGVzIGZyb20gXCIuLi91c2Utc3R5bGVzLmpzXCJcblxuY29uc3Qgc3R5bGVzID0gU3R5bGVTaGVldC5jcmVhdGUoe1xuICBhY3Rpb25zVmlldzoge1xuICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXG4gICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIlxuICB9LFxuICBjcmVhdGVOZXdNb2RlbExpbms6IHtcbiAgICBtYXJnaW5MZWZ0OiAxMCxcbiAgICBtYXJnaW5SaWdodDogMTBcbiAgfSxcbiAgZGVzdHJveU1vZGVsTGluazoge1xuICAgIG1hcmdpbkxlZnQ6IDEwLFxuICAgIG1hcmdpblJpZ2h0OiAxMFxuICB9LFxuICBlZGl0TW9kZWxMaW5rOiB7XG4gICAgbWFyZ2luTGVmdDogMTAsXG4gICAgbWFyZ2luUmlnaHQ6IDEwXG4gIH1cbn0pXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJTdXBlckFkbWluIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHNldHVwKCkge1xuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB1c2VRdWVyeVBhcmFtcygpXG5cbiAgICBpZiAodGhpcy5xdWVyeVBhcmFtcy5tb2RlbCkge1xuICAgICAgdGhpcy5tb2RlbENsYXNzID0gbW9kZWxzW3RoaXMucXVlcnlQYXJhbXMubW9kZWxdXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9kZWxDbGFzcyA9IG51bGxcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZ1JlYWRlciA9IHVzZU1lbW8oKCkgPT4gdGhpcy5tb2RlbENsYXNzICYmIENvbmZpZ1JlYWRlci5mb3JNb2RlbCh0aGlzLm1vZGVsQ2xhc3MpLCBbdGhpcy5tb2RlbENsYXNzXSlcbiAgICB0aGlzLm1vZGVsSWQgPSB0aGlzLnF1ZXJ5UGFyYW1zLm1vZGVsX2lkXG4gICAgdGhpcy5tb2RlbE5hbWUgPSB0aGlzLm1vZGVsQ2xhc3M/Lm1vZGVsQ2xhc3NEYXRhKCk/Lm5hbWVcbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gdXNlQ3VycmVudFVzZXIoKVxuXG4gICAgdGhpcy5jYW5DYW4gPSB1c2VDYW5DYW4oXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFiaWxpdGllcyA9IFtdXG5cbiAgICAgICAgaWYgKHRoaXMubW9kZWxDbGFzcykgYWJpbGl0aWVzLnB1c2goW3RoaXMubW9kZWxDbGFzcywgW1wibmV3XCJdXSlcblxuICAgICAgICByZXR1cm4gYWJpbGl0aWVzXG4gICAgICB9LFxuICAgICAgW3RoaXMuY3VycmVudFVzZXI/LmlkKCksIHRoaXMubW9kZWxDbGFzc11cbiAgICApXG5cbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBtb2RlbDogdW5kZWZpbmVkXG4gICAgfSlcbiAgICB1c2VNZW1vKFxuICAgICAgKCkgPT4geyB0aGlzLmxvYWRNb2RlbCgpIH0sXG4gICAgICBbdGhpcy5tb2RlbElkXVxuICAgIClcbiAgfVxuXG4gIGxvYWRNb2RlbCA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7Y29uZmlnUmVhZGVyLCBtb2RlbENsYXNzLCBtb2RlbElkLCBtb2RlbE5hbWV9ID0gdGhpcy50dFxuXG4gICAgaWYgKG1vZGVsSWQgJiYgbW9kZWxDbGFzcykge1xuICAgICAgY29uc3QgYWJpbGl0aWVzID0ge31cbiAgICAgIGNvbnN0IGFiaWxpdGllc0Zvck1vZGVsID0gW1wiZGVzdHJveVwiLCBcImVkaXRcIl1cbiAgICAgIGNvbnN0IGxheW91dFNlbGVjdCA9IGNvbmZpZ1JlYWRlcj8ubW9kZWxDb25maWc/LmxheW91dD8uc2VsZWN0XG5cbiAgICAgIGFiaWxpdGllc1ttb2RlbE5hbWVdID0gYWJpbGl0aWVzRm9yTW9kZWxcblxuICAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCBtb2RlbENsYXNzXG4gICAgICAgIC5yYW5zYWNrKHtpZF9lcTogbW9kZWxJZH0pXG4gICAgICAgIC5hYmlsaXRpZXMoYWJpbGl0aWVzKVxuXG4gICAgICBpZiAobGF5b3V0U2VsZWN0KSBxdWVyeS5zZWxlY3QobGF5b3V0U2VsZWN0KVxuXG4gICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHF1ZXJ5LmZpcnN0KClcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWx9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHttb2RlbDogdW5kZWZpbmVkfSlcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2NhbkNhbiwgY29uZmlnUmVhZGVyLCBtb2RlbENsYXNzLCBtb2RlbElkLCBtb2RlbE5hbWUsIHF1ZXJ5UGFyYW1zfSA9IHRoaXMudHRcbiAgICBjb25zdCB7bW9kZWx9ID0gdGhpcy5zXG4gICAgY29uc3QgbW9kZWxDb25maWdBY3Rpb25zID0gY29uZmlnUmVhZGVyPy5tb2RlbENvbmZpZz8uYWN0aW9uc1xuICAgIGxldCBwYWdlVG9TaG93XG5cbiAgICBpZiAocXVlcnlQYXJhbXMubW9kZWwgJiYgcXVlcnlQYXJhbXMubW9kZWxfaWQgJiYgcXVlcnlQYXJhbXMubW9kZWxfcmVmbGVjdGlvbikge1xuICAgICAgcGFnZVRvU2hvdyA9IFwic2hvd19yZWZsZWN0aW9uXCJcbiAgICB9IGVsc2UgaWYgKHF1ZXJ5UGFyYW1zLm1vZGVsICYmIHF1ZXJ5UGFyYW1zLm1vZGVsX2lkICYmIHF1ZXJ5UGFyYW1zLm1vZGUgPT0gXCJlZGl0XCIpIHtcbiAgICAgIHBhZ2VUb1Nob3cgPSBcImVkaXRcIlxuICAgIH0gZWxzZSBpZiAocXVlcnlQYXJhbXMubW9kZWwgJiYgcXVlcnlQYXJhbXMubW9kZWxfaWQpIHtcbiAgICAgIHBhZ2VUb1Nob3cgPSBcInNob3dcIlxuICAgIH0gZWxzZSBpZiAocXVlcnlQYXJhbXMubW9kZWwgJiYgcXVlcnlQYXJhbXMubW9kZSA9PSBcIm5ld1wiKSB7XG4gICAgICBwYWdlVG9TaG93ID0gXCJlZGl0XCJcbiAgICB9IGVsc2UgaWYgKHF1ZXJ5UGFyYW1zLm1vZGVsKSB7XG4gICAgICBwYWdlVG9TaG93ID0gXCJpbmRleFwiXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhZ2VUb1Nob3cgPSBcIndlbGNvbWVcIlxuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbnNWaWV3U3R5bGUgPSB1c2VTdHlsZXMoc3R5bGVzLCBcImFjdGlvbnNWaWV3XCIpXG5cbiAgICBjb25zdCBhY3Rpb25zID0gdXNlTWVtbyhcbiAgICAgICgpID0+IDxWaWV3IHN0eWxlPXthY3Rpb25zVmlld1N0eWxlfT5cbiAgICAgICAge21vZGVsICYmIG1vZGVsQ29uZmlnQWN0aW9ucyAmJiBtb2RlbENvbmZpZ0FjdGlvbnMoe21vZGVsfSl9XG4gICAgICAgIHttb2RlbENsYXNzICYmIHBhZ2VUb1Nob3cgPT0gXCJpbmRleFwiICYmXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHtjYW5DYW4/LmNhbihcIm5ld1wiLCBtb2RlbENsYXNzKSAmJiBoYXNFZGl0Q29uZmlnKG1vZGVsQ2xhc3MpICYmXG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgZGF0YVNldD17e2NsYXNzOiBcImNyZWF0ZS1uZXctbW9kZWwtbGlua1wifX1cbiAgICAgICAgICAgICAgICBzdHlsZT17c3R5bGVzLmNyZWF0ZU5ld01vZGVsTGlua31cbiAgICAgICAgICAgICAgICB0bz17UGFyYW1zLndpdGhQYXJhbXMoe21vZGVsOiBtb2RlbE5hbWUsIG1vZGU6IFwibmV3XCJ9KX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgICAgICAgQ3JlYXRlIG5ld1xuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvPlxuICAgICAgICB9XG4gICAgICAgIHttb2RlbCAmJiBwYWdlVG9TaG93ID09IFwic2hvd1wiICYmXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHttb2RlbC5jYW4oXCJlZGl0XCIpICYmIGhhc0VkaXRDb25maWcobW9kZWxDbGFzcykgJiZcbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBkYXRhU2V0PXt7Y2xhc3M6IFwiZWRpdC1tb2RlbC1saW5rXCJ9fVxuICAgICAgICAgICAgICAgIHN0eWxlPXtzdHlsZXMuZWRpdE1vZGVsTGlua31cbiAgICAgICAgICAgICAgICB0bz17UGFyYW1zLndpdGhQYXJhbXMoe21vZGVsOiBtb2RlbE5hbWUsIG1vZGVsX2lkOiBtb2RlbElkLCBtb2RlOiBcImVkaXRcIn0pfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICAgICBFZGl0XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7bW9kZWwuY2FuKFwiZGVzdHJveVwiKSAmJlxuICAgICAgICAgICAgICA8UHJlc3NhYmxlXG4gICAgICAgICAgICAgICAgZGF0YVNldD17e2NsYXNzOiBcImRlc3Ryb3ktbW9kZWwtbGlua1wifX1cbiAgICAgICAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uRGVzdHJveUNsaWNrZWR9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5kZXN0cm95TW9kZWxMaW5rfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvPlxuICAgICAgICB9XG4gICAgICAgIHtwYWdlVG9TaG93ID09IFwic2hvd19yZWZsZWN0aW9uXCIgJiZcbiAgICAgICAgICA8U2hvd1JlZmxlY3Rpb25BY3Rpb25zIG1vZGVsPXttb2RlbH0gbW9kZWxDbGFzcz17bW9kZWxDbGFzc30gcmVmbGVjdGlvbk5hbWU9e3F1ZXJ5UGFyYW1zLm1vZGVsX3JlZmxlY3Rpb259IC8+XG4gICAgICAgIH1cbiAgICAgIDwvVmlldz4sXG4gICAgICBbY2FuQ2FuLCBjb25maWdSZWFkZXI/LmFjdGlvbnMsIG1vZGVsLCBtb2RlbENsYXNzLCBwYWdlVG9TaG93XVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8TGF5b3V0IGFjdGlvbnM9e2FjdGlvbnN9IGFjdGl2ZT17cXVlcnlQYXJhbXMubW9kZWx9IGhlYWRlclRpdGxlPXttb2RlbENsYXNzPy5tb2RlbE5hbWUoKT8uaHVtYW4oe2NvdW50OiAyfSl9PlxuICAgICAgICB7cGFnZVRvU2hvdyA9PSBcImluZGV4XCIgJiZcbiAgICAgICAgICA8SW5kZXhQYWdlXG4gICAgICAgICAgICBrZXk9e2BpbmRleC1wYWdlLSR7bW9kZWxOYW1lfWB9XG4gICAgICAgICAgICBtb2RlbENsYXNzPXttb2RlbENsYXNzfVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAge3BhZ2VUb1Nob3cgPT0gXCJzaG93XCIgJiZcbiAgICAgICAgICA8U2hvd1BhZ2VcbiAgICAgICAgICAgIGtleT17YHNob3ctcGFnZS0ke21vZGVsTmFtZX0tJHttb2RlbElkfWB9XG4gICAgICAgICAgICBtb2RlbENsYXNzPXttb2RlbENsYXNzfVxuICAgICAgICAgICAgbW9kZWxJZD17bW9kZWxJZH1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIHtwYWdlVG9TaG93ID09IFwic2hvd19yZWZsZWN0aW9uXCIgJiZcbiAgICAgICAgICA8U2hvd1JlZmxlY3Rpb25QYWdlXG4gICAgICAgICAgICBrZXk9e2BzaG93LXJlZmxlY3Rpb24tcGFnZS0ke21vZGVsTmFtZX0tJHttb2RlbElkfWB9XG4gICAgICAgICAgICBtb2RlbENsYXNzPXttb2RlbENsYXNzfVxuICAgICAgICAgICAgbW9kZWxJZD17bW9kZWxJZH1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIHtwYWdlVG9TaG93ID09IFwiZWRpdFwiICYmXG4gICAgICAgICAgPEVkaXRQYWdlXG4gICAgICAgICAgICBrZXk9e2BlZGl0LXBhZ2UtJHttb2RlbE5hbWV9LSR7bW9kZWxJZH1gfVxuICAgICAgICAgICAgbW9kZWxDbGFzcz17bW9kZWxDbGFzc31cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8L0xheW91dD5cbiAgICApXG4gIH1cblxuICBvbkRlc3Ryb3lDbGlja2VkID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghY29uZmlybShcIkFyZSB5b3Ugc3VyZT9cIikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnMubW9kZWwuZGVzdHJveSgpXG5cbiAgICAgIFBhcmFtcy5jaGFuZ2VQYXJhbXMoe21vZGU6IHVuZGVmaW5lZCwgbW9kZWxfaWQ6IHVuZGVmaW5lZH0pXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIEZsYXNoTm90aWZpY2F0aW9ucy5lcnJvclJlc3BvbnNlKGVycm9yKVxuICAgIH1cbiAgfVxufSkpXG4iXX0=
|