@smartbit4all/ng-client 2.2.1 → 3.0.0
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/esm2020/lib/component-factory-service/component-factory-service.module.mjs +17 -0
- package/esm2020/lib/component-factory-service/component-factory-service.service.mjs +35 -0
- package/esm2020/lib/component-factory-service/projects.mjs +6 -0
- package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.mjs +1 -1
- package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.mjs +5 -5
- package/esm2020/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.mjs +1 -1
- package/esm2020/lib/session/dev-tool/smart-dev-tool.service.mjs +2 -2
- package/esm2020/lib/session/smart-session.module.mjs +18 -18
- package/esm2020/lib/session/smart-session.service.mjs +2 -2
- package/esm2020/lib/session/smart-timer/smart-session-timer.service.mjs +2 -2
- package/esm2020/lib/smart-client/smart-authentication.service.mjs +2 -2
- package/esm2020/lib/smart-client/smart-component-api-client.mjs +4 -5
- package/esm2020/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +2 -2
- package/esm2020/lib/smart-component-layout/api/api/api.mjs +4 -0
- package/esm2020/lib/smart-component-layout/api/api/default.service.mjs +133 -0
- package/esm2020/lib/smart-component-layout/api/api.module.mjs +40 -0
- package/esm2020/lib/smart-component-layout/api/configuration.mjs +91 -0
- package/esm2020/lib/smart-component-layout/api/encoder.mjs +19 -0
- package/esm2020/lib/smart-component-layout/api/index.mjs +7 -0
- package/esm2020/lib/smart-component-layout/api/model/componentType.mjs +17 -0
- package/esm2020/lib/smart-component-layout/api/model/componentWidgetType.mjs +17 -0
- package/esm2020/lib/smart-component-layout/api/model/layoutDirection.mjs +16 -0
- package/esm2020/lib/smart-component-layout/api/model/models.mjs +6 -0
- package/esm2020/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +2 -0
- package/esm2020/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.mjs +2 -0
- package/esm2020/lib/smart-component-layout/api/param.mjs +2 -0
- package/esm2020/lib/smart-component-layout/api/variables.mjs +9 -0
- package/esm2020/lib/smart-component-layout/projects.mjs +8 -0
- package/esm2020/lib/smart-component-layout/smart-component-layout-utility.mjs +7 -0
- package/esm2020/lib/smart-component-layout/smart-component-layout.component.mjs +123 -0
- package/esm2020/lib/smart-component-layout/smart-component-layout.module.mjs +43 -0
- package/esm2020/lib/smart-dialog/projects.mjs +8 -0
- package/esm2020/lib/smart-dialog/smartdialog.component.mjs +54 -0
- package/esm2020/lib/smart-dialog/smartdialog.model.mjs +16 -0
- package/esm2020/lib/smart-dialog/smartdialog.module.mjs +49 -0
- package/esm2020/lib/smart-dialog/smartdialog.service.mjs +60 -0
- package/esm2020/lib/smart-expandable-section/expandable-section.component.mjs +82 -0
- package/esm2020/lib/smart-expandable-section/expandable-section.model.mjs +12 -0
- package/esm2020/lib/smart-expandable-section/projects.mjs +8 -0
- package/esm2020/lib/smart-expandable-section/smart-expandable-section.module.mjs +51 -0
- package/esm2020/lib/smart-expandable-section/smart-expandable-section.service.mjs +14 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +16 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +2 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +9 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +2 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionData.mjs +2 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +19 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionField.mjs +2 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +2 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +25 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionList.mjs +2 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +2 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +31 -0
- package/esm2020/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +19 -0
- package/esm2020/lib/smart-filter/api/filter/model/model.mjs +16 -0
- package/esm2020/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.mjs +2 -0
- package/esm2020/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.mjs +13 -0
- package/esm2020/lib/smart-filter/api/value/model/value.mjs +13 -0
- package/esm2020/lib/smart-filter/projects.mjs +9 -0
- package/esm2020/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +14 -0
- package/esm2020/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +159 -0
- package/esm2020/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +45 -0
- package/esm2020/lib/smart-filter/smart-filter/smart-filter.component.mjs +36 -0
- package/esm2020/lib/smart-filter/smart-filter/smart-filter.service.mjs +31 -0
- package/esm2020/lib/smart-filter/smart-filter.model.mjs +13 -0
- package/esm2020/lib/smart-filter/smart-filter.module.mjs +33 -0
- package/esm2020/lib/smart-form/api/api/api.mjs +4 -0
- package/esm2020/lib/smart-form/api/api/default.service.mjs +133 -0
- package/esm2020/lib/smart-form/api/api.module.mjs +40 -0
- package/esm2020/lib/smart-form/api/configuration.mjs +91 -0
- package/esm2020/lib/smart-form/api/encoder.mjs +19 -0
- package/esm2020/lib/smart-form/api/index.mjs +7 -0
- package/esm2020/lib/smart-form/api/model/models.mjs +8 -0
- package/esm2020/lib/smart-form/api/model/propertyMapping.mjs +13 -0
- package/esm2020/lib/smart-form/api/model/selectionDefinition.mjs +8 -0
- package/esm2020/lib/smart-form/api/model/smartFormWidgetDirection.mjs +16 -0
- package/esm2020/lib/smart-form/api/model/smartFormWidgetType.mjs +44 -0
- package/esm2020/lib/smart-form/api/model/smartLayoutDefinition.mjs +2 -0
- package/esm2020/lib/smart-form/api/model/smartMatrixModel.mjs +2 -0
- package/esm2020/lib/smart-form/api/model/smartWidgetDefinition.mjs +2 -0
- package/esm2020/lib/smart-form/api/param.mjs +2 -0
- package/esm2020/lib/smart-form/api/variables.mjs +9 -0
- package/esm2020/lib/smart-form/projects.mjs +13 -0
- package/esm2020/lib/smart-form/services/smartform.layout-definition.service.mjs +397 -0
- package/esm2020/lib/smart-form/services/smartform.service.mjs +483 -0
- package/esm2020/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +14 -0
- package/esm2020/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +78 -0
- package/esm2020/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +2 -0
- package/esm2020/lib/smart-form/smartform.component.mjs +117 -0
- package/esm2020/lib/smart-form/smartform.form-model.mjs +2 -0
- package/esm2020/lib/smart-form/smartform.model.mjs +38 -0
- package/esm2020/lib/smart-form/smartform.module.mjs +146 -0
- package/esm2020/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +76 -0
- package/esm2020/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +589 -0
- package/esm2020/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +59 -0
- package/esm2020/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +31 -0
- package/esm2020/lib/smart-grid/api/grid-api/api/api.mjs +4 -0
- package/esm2020/lib/smart-grid/api/grid-api/api/grid.service.mjs +372 -0
- package/esm2020/lib/smart-grid/api/grid-api/api.module.mjs +40 -0
- package/esm2020/lib/smart-grid/api/grid-api/configuration.mjs +72 -0
- package/esm2020/lib/smart-grid/api/grid-api/encoder.mjs +19 -0
- package/esm2020/lib/smart-grid/api/grid-api/index.mjs +6 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +13 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +21 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/gridModel.mjs +2 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/gridPage.mjs +2 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/gridRow.mjs +2 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +17 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +16 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +2 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +2 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/gridView.mjs +2 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +8 -0
- package/esm2020/lib/smart-grid/api/grid-api/model/models.mjs +12 -0
- package/esm2020/lib/smart-grid/api/grid-api/variables.mjs +9 -0
- package/esm2020/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +20 -0
- package/esm2020/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +56 -0
- package/esm2020/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +166 -0
- package/esm2020/lib/smart-grid/models/model.mjs +28 -0
- package/esm2020/lib/smart-grid/projects.mjs +9 -0
- package/esm2020/lib/smart-grid/smart-grid.component.mjs +452 -0
- package/esm2020/lib/smart-grid/smart-grid.module.mjs +69 -0
- package/esm2020/lib/smart-grid/smart-grid.service.mjs +71 -0
- package/esm2020/lib/smart-icon/projects.mjs +7 -0
- package/esm2020/lib/smart-icon/smart-icon/smart-icon.component.mjs +48 -0
- package/esm2020/lib/smart-icon/smart-icon.module.mjs +22 -0
- package/esm2020/lib/smart-icon/smart-icon.service.mjs +45 -0
- package/esm2020/lib/smart-navbar/projects.mjs +8 -0
- package/esm2020/lib/smart-navbar/smart-navbar.component.mjs +61 -0
- package/esm2020/lib/smart-navbar/smart-navbar.model.mjs +6 -0
- package/esm2020/lib/smart-navbar/smart-navbar.module.mjs +65 -0
- package/esm2020/lib/smart-navbar/smart-navbar.service.mjs +14 -0
- package/esm2020/lib/smart-navigation/projects.mjs +6 -0
- package/esm2020/lib/smart-navigation/smart-navigation.interface.mjs +2 -0
- package/esm2020/lib/smart-navigation/smart-navigation.module.mjs +18 -0
- package/esm2020/lib/smart-navigation/smart-navigation.service.mjs +56 -0
- package/esm2020/lib/smart-ng-client.module.mjs +16 -4
- package/esm2020/lib/smart-subject/projects.mjs +5 -0
- package/esm2020/lib/smart-subject/smart-subject.mjs +21 -0
- package/esm2020/lib/smart-tab-group/projects.mjs +8 -0
- package/esm2020/lib/smart-tab-group/smart-tab-group.component.mjs +43 -0
- package/esm2020/lib/smart-tab-group/smart-tab-group.module.mjs +25 -0
- package/esm2020/lib/smart-tab-group/smart-tab-group.service.mjs +14 -0
- package/esm2020/lib/smart-tab-group/tab-content/tab-content.component.mjs +31 -0
- package/esm2020/lib/smart-tab-group/tab-group-simplified/tab-group.component.mjs +66 -0
- package/esm2020/lib/smart-tab-group/tabTile.model.mjs +2 -0
- package/esm2020/lib/smart-table/components/loading/loading.component.mjs +15 -0
- package/esm2020/lib/smart-table/projects.mjs +9 -0
- package/esm2020/lib/smart-table/smarttable.component.mjs +98 -0
- package/esm2020/lib/smart-table/smarttable.date-pipe.mjs +43 -0
- package/esm2020/lib/smart-table/smarttable.model.mjs +167 -0
- package/esm2020/lib/smart-table/smarttable.module.mjs +89 -0
- package/esm2020/lib/smart-table/smarttable.service.mjs +14 -0
- package/esm2020/lib/smart-table/tables/material-table/material-table.component.mjs +36 -0
- package/esm2020/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +22 -0
- package/esm2020/lib/smart-table/tables/table.mjs +411 -0
- package/esm2020/lib/smart-tree/smarttree.component.mjs +2 -2
- package/esm2020/lib/smart-tree/smarttree.model.mjs +1 -1
- package/esm2020/lib/smart-tree/smarttree.module.mjs +2 -2
- package/esm2020/lib/smart-tree/smarttree.service.interface.mjs +1 -1
- package/esm2020/lib/smart-tree/smarttree.service.mjs +1 -1
- package/esm2020/lib/view-context/api/api/api.mjs +1 -1
- package/esm2020/lib/view-context/api/api/view.service.mjs +1 -1
- package/esm2020/lib/view-context/api/api.module.mjs +1 -1
- package/esm2020/lib/view-context/api/configuration.mjs +1 -1
- package/esm2020/lib/view-context/api/encoder.mjs +1 -1
- package/esm2020/lib/view-context/api/index.mjs +1 -1
- package/esm2020/lib/view-context/api/model/closeResult.mjs +1 -1
- package/esm2020/lib/view-context/api/model/componentConstraint.mjs +1 -1
- package/esm2020/lib/view-context/api/model/componentModel.mjs +1 -1
- package/esm2020/lib/view-context/api/model/componentModelChange.mjs +1 -1
- package/esm2020/lib/view-context/api/model/dataChange.mjs +1 -1
- package/esm2020/lib/view-context/api/model/dataChangeEvent.mjs +1 -1
- package/esm2020/lib/view-context/api/model/dataChangeKind.mjs +1 -1
- package/esm2020/lib/view-context/api/model/messageData.mjs +1 -1
- package/esm2020/lib/view-context/api/model/messageOption.mjs +1 -1
- package/esm2020/lib/view-context/api/model/messageOptionType.mjs +1 -1
- package/esm2020/lib/view-context/api/model/messageResult.mjs +1 -1
- package/esm2020/lib/view-context/api/model/messageType.mjs +1 -1
- package/esm2020/lib/view-context/api/model/models.mjs +1 -1
- package/esm2020/lib/view-context/api/model/openPendingData.mjs +1 -1
- package/esm2020/lib/view-context/api/model/smartLinkData.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiAction.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionButtonDescriptor.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionButtonIconPos.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionButtonType.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionConstraint.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionDescriptor.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionDialogDescriptor.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionFeedbackType.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionInputType.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionRequest.mjs +1 -1
- package/esm2020/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
- package/esm2020/lib/view-context/api/model/valueSet.mjs +1 -1
- package/esm2020/lib/view-context/api/model/view.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewApiError.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewConstraint.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewContext.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewContextChange.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewContextData.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewContextUpdate.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewData.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewState.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewStateUpdate.mjs +1 -1
- package/esm2020/lib/view-context/api/model/viewType.mjs +1 -1
- package/esm2020/lib/view-context/api/param.mjs +1 -1
- package/esm2020/lib/view-context/api/variables.mjs +1 -1
- package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +1 -1
- package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +3 -3
- package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +3 -3
- package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +3 -3
- package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +8 -7
- package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +3 -3
- package/esm2020/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +4 -3
- package/esm2020/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +2 -2
- package/esm2020/lib/view-context/smart-ui-action/ui-action.model.mjs +1 -1
- package/esm2020/lib/view-context/smart-ui-action/ui-action.service.mjs +2 -2
- package/esm2020/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +2 -2
- package/esm2020/lib/view-context/smart-view-context.module.mjs +3 -3
- package/esm2020/lib/view-context/smart-view-context.service.mjs +4 -4
- package/esm2020/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +9 -9
- package/esm2020/lib/view-context/value-api/model/valueSetData.mjs +1 -1
- package/esm2020/projects.mjs +15 -3
- package/fesm2015/smartbit4all-ng-client.mjs +9465 -3578
- package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
- package/fesm2020/smartbit4all-ng-client.mjs +9275 -3460
- package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/component-factory-service/component-factory-service.module.d.ts +6 -0
- package/lib/component-factory-service/component-factory-service.service.d.ts +13 -0
- package/lib/component-factory-service/projects.d.ts +2 -0
- package/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.d.ts +1 -1
- package/lib/session/smart-session.module.d.ts +1 -1
- package/lib/smart-client/smart-component-api-client.d.ts +3 -4
- package/lib/smart-client/smart-file-uploader/smart-file-uploader.component.d.ts +3 -3
- package/lib/smart-component-layout/api/api/api.d.ts +3 -0
- package/lib/smart-component-layout/api/api/default.service.d.ts +33 -0
- package/lib/smart-component-layout/api/api.module.d.ts +11 -0
- package/lib/smart-component-layout/api/configuration.d.ts +104 -0
- package/lib/smart-component-layout/api/encoder.d.ts +11 -0
- package/lib/smart-component-layout/api/index.d.ts +6 -0
- package/lib/smart-component-layout/api/model/componentType.d.ts +17 -0
- package/lib/smart-component-layout/api/model/componentWidgetType.d.ts +17 -0
- package/lib/smart-component-layout/api/model/layoutDirection.d.ts +16 -0
- package/lib/smart-component-layout/api/model/models.d.ts +5 -0
- package/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.d.ts +29 -0
- package/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.d.ts +21 -0
- package/lib/smart-component-layout/api/param.d.ts +37 -0
- package/lib/smart-component-layout/api/variables.d.ts +8 -0
- package/lib/smart-component-layout/projects.d.ts +4 -0
- package/lib/smart-component-layout/smart-component-layout-utility.d.ts +4 -0
- package/lib/smart-component-layout/smart-component-layout.component.d.ts +35 -0
- package/lib/smart-component-layout/smart-component-layout.module.d.ts +13 -0
- package/lib/smart-dialog/projects.d.ts +4 -0
- package/lib/smart-dialog/smartdialog.component.d.ts +19 -0
- package/lib/smart-dialog/smartdialog.model.d.ts +67 -0
- package/lib/smart-dialog/smartdialog.module.d.ts +14 -0
- package/lib/smart-dialog/smartdialog.service.d.ts +20 -0
- package/lib/smart-expandable-section/expandable-section.component.d.ts +25 -0
- package/lib/smart-expandable-section/expandable-section.model.d.ts +40 -0
- package/lib/smart-expandable-section/projects.d.ts +4 -0
- package/lib/smart-expandable-section/smart-expandable-section.module.d.ts +15 -0
- package/lib/smart-expandable-section/smart-expandable-section.service.d.ts +6 -0
- package/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.d.ts +16 -0
- package/lib/smart-filter/api/filter/model/filterExpressionBuilderField.d.ts +27 -0
- package/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.d.ts +39 -0
- package/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.d.ts +21 -0
- package/lib/smart-filter/api/filter/model/filterExpressionData.d.ts +27 -0
- package/lib/smart-filter/api/filter/model/filterExpressionDataType.d.ts +19 -0
- package/lib/smart-filter/api/filter/model/filterExpressionField.d.ts +37 -0
- package/lib/smart-filter/api/filter/model/filterExpressionFieldList.d.ts +21 -0
- package/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.d.ts +25 -0
- package/lib/smart-filter/api/filter/model/filterExpressionList.d.ts +18 -0
- package/lib/smart-filter/api/filter/model/filterExpressionOperandData.d.ts +24 -0
- package/lib/smart-filter/api/filter/model/filterExpressionOperation.d.ts +31 -0
- package/lib/smart-filter/api/filter/model/filterExpressionOrderBy.d.ts +28 -0
- package/lib/smart-filter/api/filter/model/model.d.ts +15 -0
- package/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.d.ts +19 -0
- package/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.d.ts +18 -0
- package/lib/smart-filter/api/value/model/value.d.ts +29 -0
- package/lib/smart-filter/projects.d.ts +5 -0
- package/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.d.ts +8 -0
- package/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.d.ts +31 -0
- package/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.d.ts +18 -0
- package/lib/smart-filter/smart-filter/smart-filter.component.d.ts +15 -0
- package/lib/smart-filter/smart-filter/smart-filter.service.d.ts +16 -0
- package/lib/smart-filter/smart-filter.model.d.ts +25 -0
- package/lib/smart-filter/smart-filter.module.d.ts +15 -0
- package/lib/smart-form/api/api/api.d.ts +3 -0
- package/lib/smart-form/api/api/default.service.d.ts +33 -0
- package/lib/smart-form/api/api.module.d.ts +11 -0
- package/lib/smart-form/api/configuration.d.ts +104 -0
- package/lib/smart-form/api/encoder.d.ts +11 -0
- package/lib/smart-form/api/index.d.ts +6 -0
- package/lib/smart-form/api/model/models.d.ts +7 -0
- package/lib/smart-form/api/model/propertyMapping.d.ts +24 -0
- package/lib/smart-form/api/model/selectionDefinition.d.ts +40 -0
- package/lib/smart-form/api/model/smartFormWidgetDirection.d.ts +16 -0
- package/lib/smart-form/api/model/smartFormWidgetType.d.ts +42 -0
- package/lib/smart-form/api/model/smartLayoutDefinition.d.ts +15 -0
- package/lib/smart-form/api/model/smartMatrixModel.d.ts +28 -0
- package/lib/smart-form/api/model/smartWidgetDefinition.d.ts +77 -0
- package/lib/smart-form/api/param.d.ts +37 -0
- package/lib/smart-form/api/variables.d.ts +8 -0
- package/lib/smart-form/projects.d.ts +9 -0
- package/lib/smart-form/services/smartform.layout-definition.service.d.ts +40 -0
- package/lib/smart-form/services/smartform.service.d.ts +29 -0
- package/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.d.ts +8 -0
- package/lib/smart-form/smartfileuploader/smartfileuploader.component.d.ts +22 -0
- package/lib/smart-form/smartfileuploader/smartfileuploader.model.d.ts +7 -0
- package/lib/smart-form/smartform.component.d.ts +33 -0
- package/lib/smart-form/smartform.form-model.d.ts +521 -0
- package/lib/smart-form/smartform.model.d.ts +120 -0
- package/lib/smart-form/smartform.module.d.ts +34 -0
- package/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.d.ts +29 -0
- package/lib/smart-form/widgets/smartformwidget/smartformwidget.component.d.ts +84 -0
- package/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.d.ts +20 -0
- package/lib/smart-form/widgets/smartformwidget/trackCaps.directive.d.ts +9 -0
- package/lib/smart-grid/api/grid-api/api/api.d.ts +3 -0
- package/lib/smart-grid/api/grid-api/api/grid.service.d.ts +140 -0
- package/lib/smart-grid/api/grid-api/api.module.d.ts +11 -0
- package/lib/smart-grid/api/grid-api/configuration.d.ts +80 -0
- package/lib/smart-grid/api/grid-api/encoder.d.ts +11 -0
- package/lib/smart-grid/api/grid-api/index.d.ts +5 -0
- package/lib/smart-grid/api/grid-api/model/gridColumnMeta.d.ts +18 -0
- package/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.d.ts +35 -0
- package/lib/smart-grid/api/grid-api/model/gridModel.d.ts +30 -0
- package/lib/smart-grid/api/grid-api/model/gridPage.d.ts +26 -0
- package/lib/smart-grid/api/grid-api/model/gridRow.d.ts +22 -0
- package/lib/smart-grid/api/grid-api/model/gridSelectionMode.d.ts +17 -0
- package/lib/smart-grid/api/grid-api/model/gridSelectionType.d.ts +16 -0
- package/lib/smart-grid/api/grid-api/model/gridServerModel.d.ts +20 -0
- package/lib/smart-grid/api/grid-api/model/gridUpdateData.d.ts +19 -0
- package/lib/smart-grid/api/grid-api/model/gridView.d.ts +21 -0
- package/lib/smart-grid/api/grid-api/model/gridViewDescriptor.d.ts +33 -0
- package/lib/smart-grid/api/grid-api/model/models.d.ts +11 -0
- package/lib/smart-grid/api/grid-api/variables.d.ts +8 -0
- package/lib/smart-grid/components/expandable-grid/expandable-grid.component.d.ts +10 -0
- package/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.d.ts +21 -0
- package/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.d.ts +40 -0
- package/lib/smart-grid/models/model.d.ts +70 -0
- package/lib/smart-grid/projects.d.ts +5 -0
- package/lib/smart-grid/smart-grid.component.d.ts +67 -0
- package/lib/smart-grid/smart-grid.module.d.ts +20 -0
- package/lib/smart-grid/smart-grid.service.d.ts +26 -0
- package/lib/smart-icon/projects.d.ts +3 -0
- package/lib/smart-icon/smart-icon/smart-icon.component.d.ts +17 -0
- package/lib/smart-icon/smart-icon.module.d.ts +10 -0
- package/lib/smart-icon/smart-icon.service.d.ts +21 -0
- package/lib/smart-navbar/projects.d.ts +4 -0
- package/lib/smart-navbar/smart-navbar.component.d.ts +20 -0
- package/lib/smart-navbar/smart-navbar.model.d.ts +48 -0
- package/lib/smart-navbar/smart-navbar.module.d.ts +18 -0
- package/lib/smart-navbar/smart-navbar.service.d.ts +6 -0
- package/lib/smart-navigation/projects.d.ts +2 -0
- package/lib/smart-navigation/smart-navigation.interface.d.ts +11 -0
- package/lib/smart-navigation/smart-navigation.module.d.ts +6 -0
- package/lib/smart-navigation/smart-navigation.service.d.ts +18 -0
- package/lib/smart-ng-client.module.d.ts +9 -6
- package/lib/smart-subject/projects.d.ts +1 -0
- package/lib/smart-subject/smart-subject.d.ts +6 -0
- package/lib/smart-tab-group/projects.d.ts +4 -0
- package/lib/smart-tab-group/smart-tab-group.component.d.ts +21 -0
- package/lib/smart-tab-group/smart-tab-group.module.d.ts +13 -0
- package/lib/smart-tab-group/smart-tab-group.service.d.ts +6 -0
- package/lib/smart-tab-group/tab-content/tab-content.component.d.ts +14 -0
- package/lib/smart-tab-group/tab-group-simplified/tab-group.component.d.ts +29 -0
- package/lib/smart-tab-group/tabTile.model.d.ts +8 -0
- package/lib/smart-table/components/loading/loading.component.d.ts +8 -0
- package/lib/smart-table/projects.d.ts +5 -0
- package/lib/smart-table/smarttable.component.d.ts +34 -0
- package/lib/smart-table/smarttable.date-pipe.d.ts +18 -0
- package/lib/smart-table/smarttable.model.d.ts +183 -0
- package/lib/smart-table/smarttable.module.d.ts +23 -0
- package/lib/smart-table/smarttable.service.d.ts +6 -0
- package/lib/smart-table/tables/material-table/material-table.component.d.ts +8 -0
- package/lib/smart-table/tables/mobile-table/mobile-table.component.d.ts +8 -0
- package/lib/smart-table/tables/table.d.ts +59 -0
- package/lib/smart-tree/smarttree.component.d.ts +1 -1
- package/lib/smart-tree/smarttree.model.d.ts +1 -1
- package/lib/smart-tree/smarttree.module.d.ts +1 -1
- package/lib/smart-tree/smarttree.service.d.ts +1 -1
- package/lib/smart-tree/smarttree.service.interface.d.ts +1 -1
- package/lib/view-context/api/model/componentModel.d.ts +3 -2
- package/lib/view-context/api/model/view.d.ts +1 -1
- package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.d.ts +1 -1
- package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.d.ts +1 -1
- package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.d.ts +1 -1
- package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.d.ts +1 -1
- package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.d.ts +1 -1
- package/lib/view-context/smart-ui-action/ui-action-toolbar.component.d.ts +1 -1
- package/lib/view-context/smart-ui-action/ui-action.model.d.ts +3 -1
- package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.d.ts +1 -1
- package/lib/view-context/smart-view-context.module.d.ts +2 -2
- package/lib/view-context/smart-view-context.service.d.ts +3 -3
- package/lib/view-context/smart-view-redirect/smart-view-redirect.d.ts +3 -3
- package/lib/view-context/value-api/model/valueSetData.d.ts +1 -1
- package/package.json +1 -4
- package/projects.d.ts +14 -2
- package/smartbit4all-ng-client-3.0.0.tgz +0 -0
- package/src/lib/component-factory-service/README.md +99 -0
- package/src/lib/smart-component-layout/README.md +31 -0
- package/src/lib/smart-component-layout/api/README.md +226 -0
- package/src/lib/smart-dialog/README.md +197 -0
- package/src/lib/smart-expandable-section/README.md +249 -0
- package/src/lib/smart-filter/README.md +101 -0
- package/src/lib/smart-form/README.md +1178 -0
- package/src/lib/smart-form/api/README.md +226 -0
- package/src/lib/smart-grid/README.md +24 -0
- package/src/lib/smart-grid/api/grid-api/README.md +203 -0
- package/src/lib/smart-icon/README.md +116 -0
- package/src/lib/smart-navbar/README.md +119 -0
- package/src/lib/smart-navigation/README.md +141 -0
- package/src/lib/smart-tab-group/README.md +155 -0
- package/src/lib/smart-table/README.md +667 -0
- package/src/lib/view-context/api/README.md +226 -226
- package/esm2020/lib/smart-client/projects.mjs +0 -5
- package/esm2020/lib/smart-client/smart.component.mjs +0 -30
- package/esm2020/lib/smart-client/smart.service.mjs +0 -30
- package/lib/smart-client/projects.d.ts +0 -4
- package/lib/smart-client/smart.component.d.ts +0 -11
- package/lib/smart-client/smart.service.d.ts +0 -11
- package/smartbit4all-ng-client-2.2.1.tgz +0 -0
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
2
|
+
import { Component, Input, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
3
|
+
import { SmartTable, SmartTableButtonType, SmartTableHeaderPropertyType, SmartTableInterfaceTypeEnum, SmartTableOrder, SmartTableType, SmarttableComponent, } from '../smart-table/projects';
|
|
4
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
5
|
+
import { GridSelectionMode, GridSelectionType, } from './api/grid-api';
|
|
6
|
+
import { GridUiActionType, SmartLayoutDef } from './models/model';
|
|
7
|
+
import { SmartGridService } from './smart-grid.service';
|
|
8
|
+
import { TableLayoutDefinerComponent } from './components/table-layout-definer/table-layout-definer.component';
|
|
9
|
+
import { FilterExpressionOrderBy } from '../smart-filter/projects';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "./smart-grid.service";
|
|
12
|
+
import * as i2 from "../component-factory-service/projects";
|
|
13
|
+
import * as i3 from "@angular/material/button";
|
|
14
|
+
import * as i4 from "../smart-expandable-section/expandable-section.component";
|
|
15
|
+
import * as i5 from "./components/smart-grid-card/smart-grid-card.component";
|
|
16
|
+
import * as i6 from "@angular/material/paginator";
|
|
17
|
+
import * as i7 from "@angular/common";
|
|
18
|
+
export class SmartGridComponent {
|
|
19
|
+
constructor(service, cfService) {
|
|
20
|
+
this.service = service;
|
|
21
|
+
this.cfService = cfService;
|
|
22
|
+
this._destroy$ = new Subject();
|
|
23
|
+
this.dev = false;
|
|
24
|
+
this.pageSizeOptions = [2, 3, 4, 10];
|
|
25
|
+
this.selectionChanges = new Subject();
|
|
26
|
+
this.uiActionDescriptors = new Map();
|
|
27
|
+
this.afterViewInitExecuted = false;
|
|
28
|
+
this.isBlocked = true;
|
|
29
|
+
this.service.gridModelChanged.subscribe(() => {
|
|
30
|
+
this.smartGrid.gridModel = this.service.gridModel;
|
|
31
|
+
if (this.service.gridModel.pageSizeOptions) {
|
|
32
|
+
this.pageSizeOptions = this.service.gridModel.pageSizeOptions;
|
|
33
|
+
}
|
|
34
|
+
this.render();
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
ngOnChanges(changes) {
|
|
38
|
+
if (changes['smartGrid']) {
|
|
39
|
+
this.smartGrid = changes['smartGrid'].currentValue;
|
|
40
|
+
}
|
|
41
|
+
if (changes['uuid']) {
|
|
42
|
+
this.uuid = changes['uuid'].currentValue;
|
|
43
|
+
}
|
|
44
|
+
if (this.afterViewInitExecuted && this.uuid && this.smartGrid) {
|
|
45
|
+
this.refresh();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
ngOnDestroy() {
|
|
49
|
+
this._destroy$.next();
|
|
50
|
+
this._destroy$.complete();
|
|
51
|
+
}
|
|
52
|
+
ngAfterViewInit() {
|
|
53
|
+
if (this.dev) {
|
|
54
|
+
this.render();
|
|
55
|
+
}
|
|
56
|
+
if (this.uuid && this.smartGrid && !this.dev) {
|
|
57
|
+
this.refresh();
|
|
58
|
+
}
|
|
59
|
+
this.afterViewInitExecuted = true;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
*
|
|
63
|
+
* @returns the selected rows of the table
|
|
64
|
+
*/
|
|
65
|
+
getSelectedRows() {
|
|
66
|
+
if (!this.smartTable.selection)
|
|
67
|
+
throw new Error();
|
|
68
|
+
return this.smartTable.selection;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* This method sends a GET request to the generic GridAPI and refreshes the presented
|
|
72
|
+
* grid with the newest one.
|
|
73
|
+
*/
|
|
74
|
+
async refresh() {
|
|
75
|
+
await this.service.load(this.uuid, this.smartGrid.gridIdentifier);
|
|
76
|
+
this.length = this.service.gridModel.totalRowCount;
|
|
77
|
+
this.pageSize = this.service.gridModel.pageSize ?? 5;
|
|
78
|
+
}
|
|
79
|
+
async render() {
|
|
80
|
+
this.length = this.service.length;
|
|
81
|
+
this.pageSize = this.service.pageSize;
|
|
82
|
+
// this.smartGrid!.gridModel = this.service.gridModel;
|
|
83
|
+
this.service.gridModel = this.smartGrid.gridModel;
|
|
84
|
+
if (this.smartGrid.layoutDef === SmartLayoutDef.TABLE) {
|
|
85
|
+
this.renderTable();
|
|
86
|
+
}
|
|
87
|
+
else if (this.smartGrid.layoutDef === SmartLayoutDef.EXPANDABLE) {
|
|
88
|
+
this.renderExpandableSections();
|
|
89
|
+
}
|
|
90
|
+
else if (this.smartGrid.layoutDef === SmartLayoutDef.CARD) {
|
|
91
|
+
this.renderCards();
|
|
92
|
+
}
|
|
93
|
+
this.isBlocked = false;
|
|
94
|
+
}
|
|
95
|
+
async renderTable() {
|
|
96
|
+
let tableRow = this.smartGrid.gridModel.page.rows.map((item) => {
|
|
97
|
+
return item;
|
|
98
|
+
});
|
|
99
|
+
if (!tableRow.length) {
|
|
100
|
+
let placeHolderRow = {};
|
|
101
|
+
this.smartGrid.gridModel.view?.descriptor?.columns.map((meta) => {
|
|
102
|
+
placeHolderRow[meta.propertyName] = undefined;
|
|
103
|
+
});
|
|
104
|
+
this.smartGrid.gridModel.page.rows = [placeHolderRow];
|
|
105
|
+
}
|
|
106
|
+
let tableType;
|
|
107
|
+
if (this.smartGrid.tableConfig?.tableType) {
|
|
108
|
+
tableType = this.smartGrid.tableConfig.tableType;
|
|
109
|
+
}
|
|
110
|
+
else if (this.service.gridModel?.view?.descriptor?.selectionType) {
|
|
111
|
+
tableType =
|
|
112
|
+
this.service.gridModel.view.descriptor.selectionType === GridSelectionType.Checkbox
|
|
113
|
+
? SmartTableType.CHECK_BOX
|
|
114
|
+
: SmartTableType.ROW_SELECT;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
tableType = SmartTableType.INHERITED;
|
|
118
|
+
}
|
|
119
|
+
if (this.smartGrid.layoutDef === SmartLayoutDef.TABLE) {
|
|
120
|
+
let tableConfig = {
|
|
121
|
+
...this.smartGrid.tableConfig,
|
|
122
|
+
tableRows: tableRow,
|
|
123
|
+
tableType,
|
|
124
|
+
customSmartTableHeaders: await this.constructHeader(),
|
|
125
|
+
expandable: this.smartGrid.expandable,
|
|
126
|
+
expandedComponent: this.smartGrid.expandedComponent,
|
|
127
|
+
type: SmartTableInterfaceTypeEnum.NORMAL,
|
|
128
|
+
sortable: true,
|
|
129
|
+
};
|
|
130
|
+
if (this.smartGrid.uiActionService &&
|
|
131
|
+
this.smartGrid.uiActionDescriptorService &&
|
|
132
|
+
this.smartGrid.serviceToUse &&
|
|
133
|
+
this.smartGrid.viewContextService) {
|
|
134
|
+
tableConfig.onSelection = this.onSelect.bind(this);
|
|
135
|
+
tableConfig.onAllSelection = this.onSelectAll.bind(this);
|
|
136
|
+
}
|
|
137
|
+
// Prepared for simple clicks
|
|
138
|
+
// if (!tableConfig.onRowClick) {
|
|
139
|
+
// tableConfig.onRowClick = this.onClick.bind(this);
|
|
140
|
+
// }
|
|
141
|
+
if (!tableConfig.onRowDoubleClick) {
|
|
142
|
+
tableConfig.onRowDoubleClick = this.onDoubleClick.bind(this);
|
|
143
|
+
}
|
|
144
|
+
if (!tableConfig.isRowDisabledPropertyName) {
|
|
145
|
+
tableConfig.selectablePropertyName = 'selectable';
|
|
146
|
+
}
|
|
147
|
+
if (tableConfig.asyncOnExpand) {
|
|
148
|
+
tableConfig.rowExpander = this;
|
|
149
|
+
}
|
|
150
|
+
const selectionMode = this.service.gridModel.view?.descriptor?.selectionMode;
|
|
151
|
+
if (!tableConfig.selection &&
|
|
152
|
+
!tableConfig.selectionProperty &&
|
|
153
|
+
selectionMode !== GridSelectionMode.None) {
|
|
154
|
+
const isMultiple = selectionMode === GridSelectionMode.Multiple;
|
|
155
|
+
tableConfig.selectionProperty = 'id';
|
|
156
|
+
const selectedIds = this.service.gridModel.page
|
|
157
|
+
.rows.filter((gridRow) => gridRow.selected)
|
|
158
|
+
.map((gridRow) => gridRow.id);
|
|
159
|
+
tableConfig.selection = new SelectionModel(isMultiple, selectedIds);
|
|
160
|
+
}
|
|
161
|
+
this.smartTable = new SmartTable(tableConfig);
|
|
162
|
+
if (this.componentRefTable) {
|
|
163
|
+
this.componentRefTable.instance.updateSmartTable(this.smartTable);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
this.vcRefTable?.clear();
|
|
167
|
+
if (!this.vcRefTable) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
this.componentRefTable = this.cfService.createComponent(this.vcRefTable, SmarttableComponent, new Map([['smartTable', this.smartTable]]));
|
|
171
|
+
let subscription = this.componentRefTable.instance.sortEvent
|
|
172
|
+
.pipe(takeUntil(this.componentRefTable.instance._destroy$))
|
|
173
|
+
.subscribe((header) => {
|
|
174
|
+
header.propertyName = header.propertyName.substring(5);
|
|
175
|
+
switch (header.order) {
|
|
176
|
+
case undefined:
|
|
177
|
+
header.order = SmartTableOrder.ASC;
|
|
178
|
+
break;
|
|
179
|
+
case SmartTableOrder.ASC:
|
|
180
|
+
header.order = SmartTableOrder.DESC;
|
|
181
|
+
break;
|
|
182
|
+
case SmartTableOrder.DESC:
|
|
183
|
+
header.order = undefined;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
let filter = this.smartGrid.gridModel.view.orderByList.find((filterExpression) => filterExpression.propertyName === header.propertyName);
|
|
187
|
+
if (filter && !header.order) {
|
|
188
|
+
let index = this.smartGrid.gridModel.view?.orderByList.indexOf(filter);
|
|
189
|
+
this.smartGrid.gridModel.view?.orderByList.splice(index, 1);
|
|
190
|
+
}
|
|
191
|
+
else if (filter) {
|
|
192
|
+
filter.order = header.order;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
this.smartGrid.gridModel.view.orderByList.push({
|
|
196
|
+
order: header.order,
|
|
197
|
+
propertyName: header.propertyName,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
let gridUpdateData = {
|
|
201
|
+
orderByList: this.smartGrid.gridModel.view.orderByList,
|
|
202
|
+
orderedColumnNames: this.smartGrid.gridModel.view.orderedColumnNames,
|
|
203
|
+
};
|
|
204
|
+
this.service.sort(this.smartGrid, gridUpdateData);
|
|
205
|
+
});
|
|
206
|
+
this.componentRefTable.instance.smartTable.selection?.changed
|
|
207
|
+
.pipe(takeUntil(this.componentRefTable.instance._destroy$))
|
|
208
|
+
.subscribe((row) => {
|
|
209
|
+
this.selectionChanges.next(row);
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
expand(rowId) { }
|
|
215
|
+
async expandAsync(rowIndex) {
|
|
216
|
+
if (this.smartGrid.gridModel.page.rows) {
|
|
217
|
+
let row = this.smartGrid.gridModel.page.rows[rowIndex];
|
|
218
|
+
if (row && row.id) {
|
|
219
|
+
return await this.service.expand(this.smartGrid, row.id);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return await this.service.expand(this.smartGrid, rowIndex.toString());
|
|
223
|
+
}
|
|
224
|
+
renderExpandableSections() {
|
|
225
|
+
this.expandableSections = this.smartGrid.gridModel.page.rows.map((item) => {
|
|
226
|
+
return {
|
|
227
|
+
title: '',
|
|
228
|
+
headerComponent: this.smartGrid.headerComponent,
|
|
229
|
+
headerInputName: this.smartGrid.headerComponentInputName,
|
|
230
|
+
headerData: item,
|
|
231
|
+
customComponent: this.smartGrid.expandableComponent,
|
|
232
|
+
inputName: this.smartGrid.expandableComponentInputName,
|
|
233
|
+
data: item,
|
|
234
|
+
};
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
renderCards() {
|
|
238
|
+
// TODO
|
|
239
|
+
}
|
|
240
|
+
async constructHeader() {
|
|
241
|
+
let header = [];
|
|
242
|
+
if (this.smartGrid.gridModel.page.rows && this.smartGrid.gridModel.page.rows.length) {
|
|
243
|
+
await Promise.all(this.smartGrid.gridModel.page.rows.map(async (gridRow) => {
|
|
244
|
+
let newUiActions = gridRow.actions?.filter((uiAction) => !this.uiActionDescriptors.get(uiAction.code));
|
|
245
|
+
if (newUiActions) {
|
|
246
|
+
await Promise.all(newUiActions.map(async (uiAction) => {
|
|
247
|
+
let descriptor = await this.smartGrid.uiActionDescriptorService.getActionDescriptor(uiAction);
|
|
248
|
+
this.uiActionDescriptors.set(uiAction.code, descriptor);
|
|
249
|
+
}));
|
|
250
|
+
}
|
|
251
|
+
}));
|
|
252
|
+
}
|
|
253
|
+
await Promise.all(this.smartGrid.gridModel.view.orderedColumnNames.map(async (propertyName) => {
|
|
254
|
+
let descColumn = this.smartGrid.gridModel.view.descriptor.columns.find((colDescriptor) => colDescriptor.propertyName === propertyName);
|
|
255
|
+
let customTableHeader = this.smartGrid.tableConfig?.customSmartTableHeaders?.find((header) => header.propertyName === propertyName);
|
|
256
|
+
if (descColumn) {
|
|
257
|
+
let filterExpressionOrderByItem = this.smartGrid.gridModel.view?.orderByList?.find((filterExpression) => filterExpression.propertyName === descColumn.propertyName);
|
|
258
|
+
let order;
|
|
259
|
+
let orderNumber;
|
|
260
|
+
if (filterExpressionOrderByItem) {
|
|
261
|
+
order =
|
|
262
|
+
filterExpressionOrderByItem.order === FilterExpressionOrderBy.OrderEnum.Asc
|
|
263
|
+
? SmartTableOrder.ASC
|
|
264
|
+
: SmartTableOrder.DESC;
|
|
265
|
+
if (this.service.gridModel.view.orderByList.length > 1) {
|
|
266
|
+
orderNumber = this.service.gridModel.view.orderByList.findIndex((filter) => filter.propertyName === descColumn.propertyName);
|
|
267
|
+
orderNumber++;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
const orignalLabel = customTableHeader?.label ?? descColumn.label;
|
|
271
|
+
let label;
|
|
272
|
+
if (this.smartGrid.translateService) {
|
|
273
|
+
label = await this.smartGrid.translateService?.get(orignalLabel).toPromise();
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
label = orignalLabel;
|
|
277
|
+
}
|
|
278
|
+
let properties = customTableHeader?.properties;
|
|
279
|
+
if (!properties) {
|
|
280
|
+
if (descColumn.typeClass === 'java.time.OffsetDateTime') {
|
|
281
|
+
properties = {
|
|
282
|
+
type: SmartTableHeaderPropertyType.DATETIME,
|
|
283
|
+
dateFormat: 'yyyy.MM.dd H:mm',
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
else if (descColumn.typeClass === 'java.time.OffsetDate') {
|
|
287
|
+
properties = {
|
|
288
|
+
type: SmartTableHeaderPropertyType.DATETIME,
|
|
289
|
+
dateFormat: 'yyyy.MM.dd',
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
header.push({
|
|
294
|
+
...customTableHeader,
|
|
295
|
+
label: label,
|
|
296
|
+
propertyName: 'data.' + descColumn.propertyName,
|
|
297
|
+
order,
|
|
298
|
+
orderNumber,
|
|
299
|
+
properties,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}));
|
|
303
|
+
let complement = this.smartGrid.tableConfig?.customSmartTableHeaders?.filter((tableHeader) => !header.some((tH) => tH.propertyName.includes(tableHeader.propertyName)));
|
|
304
|
+
if (complement) {
|
|
305
|
+
header.push(...complement);
|
|
306
|
+
}
|
|
307
|
+
if (this.smartGrid.options?.simpleButtons) {
|
|
308
|
+
this.smartGrid.options.simpleButtons.forEach((uiActionCode) => {
|
|
309
|
+
header.push({
|
|
310
|
+
label: '',
|
|
311
|
+
propertyName: 'simple_buttons',
|
|
312
|
+
buttons: [
|
|
313
|
+
{
|
|
314
|
+
type: SmartTableButtonType.RAISED,
|
|
315
|
+
callback: this.execute.bind(this),
|
|
316
|
+
label: this.buttonTranslator({ code: uiActionCode }),
|
|
317
|
+
args: [
|
|
318
|
+
{
|
|
319
|
+
code: uiActionCode,
|
|
320
|
+
},
|
|
321
|
+
],
|
|
322
|
+
color: 'primary',
|
|
323
|
+
showButtonIf: (row) => row.actions.some((item) => {
|
|
324
|
+
return item.code === uiActionCode;
|
|
325
|
+
}),
|
|
326
|
+
},
|
|
327
|
+
],
|
|
328
|
+
});
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
if (!header.some((header) => header.propertyName === 'my_menu')) {
|
|
332
|
+
if (this.smartGrid.options?.rowUiActionType === GridUiActionType.POPUP_MENU) {
|
|
333
|
+
header.push({
|
|
334
|
+
label: '',
|
|
335
|
+
propertyName: 'my_menu',
|
|
336
|
+
buttons: [
|
|
337
|
+
{
|
|
338
|
+
type: SmartTableButtonType.MENU,
|
|
339
|
+
callback: this.execute.bind(this),
|
|
340
|
+
icon: 'more_vert',
|
|
341
|
+
menuItemButtonsPropertyName: 'actions',
|
|
342
|
+
translator: this.buttonTranslator.bind(this),
|
|
343
|
+
args: [],
|
|
344
|
+
},
|
|
345
|
+
],
|
|
346
|
+
isSortable: false,
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return header;
|
|
351
|
+
}
|
|
352
|
+
async onChangePage(event) {
|
|
353
|
+
let offset = event?.pageSize * event?.pageIndex;
|
|
354
|
+
let limit = event.pageSize;
|
|
355
|
+
await this.service.setPage(this.smartGrid.gridModel.viewUuid, this.smartGrid.gridIdentifier, offset.toString(), limit.toString());
|
|
356
|
+
}
|
|
357
|
+
async execute(args, row, uiAction) {
|
|
358
|
+
let _uiAction;
|
|
359
|
+
if (!uiAction) {
|
|
360
|
+
uiAction = row.actions.filter((action) => action.code === args[0].code)[0];
|
|
361
|
+
}
|
|
362
|
+
_uiAction = { ...uiAction };
|
|
363
|
+
_uiAction.params = {
|
|
364
|
+
...uiAction.params,
|
|
365
|
+
model: row,
|
|
366
|
+
};
|
|
367
|
+
let uiActionModel = {
|
|
368
|
+
serviceToUse: this.smartGrid.serviceToUse,
|
|
369
|
+
uiAction: _uiAction,
|
|
370
|
+
};
|
|
371
|
+
if (this.smartGrid.options?.uiActionModelCallback) {
|
|
372
|
+
uiActionModel = this.smartGrid.options.uiActionModelCallback(uiActionModel);
|
|
373
|
+
}
|
|
374
|
+
this.smartGrid.uiActionService.uiActionModel = uiActionModel;
|
|
375
|
+
this.smartGrid.uiActionService.execute(_uiAction, {
|
|
376
|
+
widgetId: this.smartGrid.gridIdentifier,
|
|
377
|
+
nodeId: row.id,
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
buttonTranslator(uiAction) {
|
|
381
|
+
let desc = this.uiActionDescriptors.get(uiAction.code);
|
|
382
|
+
return desc ? desc.title : uiAction.code;
|
|
383
|
+
}
|
|
384
|
+
layoutDef() {
|
|
385
|
+
return SmartLayoutDef;
|
|
386
|
+
}
|
|
387
|
+
onClick(gridRow) {
|
|
388
|
+
this.handleOnClick(gridRow);
|
|
389
|
+
}
|
|
390
|
+
onDoubleClick(gridRow) {
|
|
391
|
+
this.handleOnClick(gridRow);
|
|
392
|
+
}
|
|
393
|
+
handleOnClick(gridRow) {
|
|
394
|
+
let defaultRowAction;
|
|
395
|
+
if (this.service.gridModel?.defaultRowActions) {
|
|
396
|
+
for (let index = 0; index < this.service.gridModel.defaultRowActions.length; index++) {
|
|
397
|
+
const defaultRowActionCode = this.service.gridModel.defaultRowActions[index];
|
|
398
|
+
defaultRowAction = gridRow.actions.find((uiAction) => uiAction.code === defaultRowActionCode);
|
|
399
|
+
if (defaultRowAction) {
|
|
400
|
+
this.execute([], gridRow, defaultRowAction);
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
async onSelect(rowId) {
|
|
407
|
+
this.isBlocked = true;
|
|
408
|
+
const row = this.service.gridModel.page.rows?.find((gridRow) => gridRow.id === rowId);
|
|
409
|
+
const viewContextChange = await this.service.select(this.smartGrid, row);
|
|
410
|
+
this.smartGrid.viewContextService.handleChanges(viewContextChange.changes);
|
|
411
|
+
this.refresh();
|
|
412
|
+
}
|
|
413
|
+
async onSelectAll(selected) {
|
|
414
|
+
this.isBlocked = true;
|
|
415
|
+
const viewContextChange = await this.service.selectAll(this.smartGrid, selected);
|
|
416
|
+
this.smartGrid.viewContextService.handleChanges(viewContextChange.changes);
|
|
417
|
+
this.refresh();
|
|
418
|
+
}
|
|
419
|
+
editColumns() {
|
|
420
|
+
let dialogData = {
|
|
421
|
+
content: {
|
|
422
|
+
title: 'Oszlopok testreszabása',
|
|
423
|
+
},
|
|
424
|
+
size: {},
|
|
425
|
+
customComponent: TableLayoutDefinerComponent,
|
|
426
|
+
customComponentInputs: {
|
|
427
|
+
config: {
|
|
428
|
+
uuid: this.uuid,
|
|
429
|
+
identifier: this.smartGrid.gridIdentifier,
|
|
430
|
+
view: this.service.gridModel.view,
|
|
431
|
+
},
|
|
432
|
+
},
|
|
433
|
+
};
|
|
434
|
+
this.service.createDialog(dialogData, TableLayoutDefinerComponent);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
SmartGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridComponent, deps: [{ token: i1.SmartGridService }, { token: i2.ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
438
|
+
SmartGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SmartGridComponent, selector: "smart-grid", inputs: { smartGrid: "smartGrid", uuid: "uuid", dev: "dev" }, providers: [SmartGridService], viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\r\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\r\n <div class=\"smartGridContent\">\r\n <div>\r\n <div *ngIf=\"smartGrid.showResultCount\">\r\n <div class=\"smartGrid-data-number\">\r\n {{ smartGrid.gridModel.totalRowCount }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"smart-grid-table-container\">\r\n <div class=\"smart-grid-edit-button\" *ngIf=\"smartGrid.showEditColumns\">\r\n <button (click)=\"editColumns()\" mat-raised-button color=\"primary\">\r\n Oszlopok testreszab\u00E1sa\r\n </button>\r\n </div>\r\n <ng-template #table></ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\r\n <smart-expandable-section\r\n #gridExpandableSection\r\n *ngFor=\"let expandableSection of expandableSections\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n ></app-smart-grid-card>\r\n </div>\r\n </div>\r\n\r\n <mat-paginator\r\n *ngIf=\"smartGrid.paginator\"\r\n #paginator\r\n [length]=\"length\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onChangePage($event)\"\r\n ></mat-paginator>\r\n</div>\r\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;grid-gap:1rem;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column}.smart-grid-edit-button{display:flex;flex-direction:row;justify-content:flex-end}\n"], components: [{ type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { type: i5.SmartGridCardComponent, selector: "app-smart-grid-card", inputs: ["item", "smartGrid"] }, { type: i6.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridComponent, decorators: [{
|
|
440
|
+
type: Component,
|
|
441
|
+
args: [{ selector: 'smart-grid', providers: [SmartGridService], template: "<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\r\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\r\n <div class=\"smartGridContent\">\r\n <div>\r\n <div *ngIf=\"smartGrid.showResultCount\">\r\n <div class=\"smartGrid-data-number\">\r\n {{ smartGrid.gridModel.totalRowCount }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"smart-grid-table-container\">\r\n <div class=\"smart-grid-edit-button\" *ngIf=\"smartGrid.showEditColumns\">\r\n <button (click)=\"editColumns()\" mat-raised-button color=\"primary\">\r\n Oszlopok testreszab\u00E1sa\r\n </button>\r\n </div>\r\n <ng-template #table></ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\r\n <smart-expandable-section\r\n #gridExpandableSection\r\n *ngFor=\"let expandableSection of expandableSections\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n ></app-smart-grid-card>\r\n </div>\r\n </div>\r\n\r\n <mat-paginator\r\n *ngIf=\"smartGrid.paginator\"\r\n #paginator\r\n [length]=\"length\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onChangePage($event)\"\r\n ></mat-paginator>\r\n</div>\r\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column}.smartGrid-data-number{padding-bottom:1rem}.cards-container{display:grid;grid-gap:1rem;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column}.smart-grid-edit-button{display:flex;flex-direction:row;justify-content:flex-end}\n"] }]
|
|
442
|
+
}], ctorParameters: function () { return [{ type: i1.SmartGridService }, { type: i2.ComponentFactoryService }]; }, propDecorators: { smartGrid: [{
|
|
443
|
+
type: Input
|
|
444
|
+
}], uuid: [{
|
|
445
|
+
type: Input
|
|
446
|
+
}], dev: [{
|
|
447
|
+
type: Input
|
|
448
|
+
}], vcRefTable: [{
|
|
449
|
+
type: ViewChild,
|
|
450
|
+
args: ['table', { read: ViewContainerRef }]
|
|
451
|
+
}] } });
|
|
452
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1ncmlkL3NtYXJ0LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9zbWFydC1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFJTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxVQUFVLEVBQ1Ysb0JBQW9CLEVBRXBCLDRCQUE0QixFQUU1QiwyQkFBMkIsRUFDM0IsZUFBZSxFQUNmLGNBQWMsRUFDZCxtQkFBbUIsR0FDcEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLGlCQUFpQixHQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUcvRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7O0FBVW5FLE1BQU0sT0FBTyxrQkFBa0I7SUErQjdCLFlBQW9CLE9BQXlCLEVBQVUsU0FBa0M7UUFBckUsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFBVSxjQUFTLEdB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QUNsRixJQUFJLENBQUMsU0FBVSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1RSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLFVBQVUsR0FBb0I7WUFDaEMsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSx3QkFBd0I7YUFDaEM7WUFDRCxJQUFJLEVBQUUsRUFBRTtZQUNSLGVBQWUsRUFBRSwyQkFBMkI7WUFDNUMscUJBQXFCLEVBQUU7Z0JBQ3JCLE1BQU0sRUFBRTtvQkFDTixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFVLENBQUMsY0FBYztvQkFDMUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUk7aUJBQ2xDO2FBQ0Y7U0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDckUsQ0FBQzs7K0dBbGhCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixtR0FGbEIsQ0FBQyxnQkFBZ0IsQ0FBQywwR0FTRCxnQkFBZ0Isa0RDdEQ5Qyx1MURBdURBOzJGRFJhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxZQUFZLGFBR1gsQ0FBQyxnQkFBZ0IsQ0FBQzs2SUFJcEIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUcwQyxVQUFVO3NCQUF6RCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQge1xyXG4gIFNtYXJ0VGFibGUsXHJcbiAgU21hcnRUYWJsZUJ1dHRvblR5cGUsXHJcbiAgU21hcnRUYWJsZUhlYWRlcixcclxuICBTbWFydFRhYmxlSGVhZGVyUHJvcGVydHlUeXBlLFxyXG4gIFNtYXJ0VGFibGVJbnRlcmZhY2UsXHJcbiAgU21hcnRUYWJsZUludGVyZmFjZVR5cGVFbnVtLFxyXG4gIFNtYXJ0VGFibGVPcmRlcixcclxuICBTbWFydFRhYmxlVHlwZSxcclxuICBTbWFydHRhYmxlQ29tcG9uZW50LFxyXG59IGZyb20gJy4uL3NtYXJ0LXRhYmxlL3Byb2plY3RzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgR3JpZENvbHVtbk1ldGEsXHJcbiAgR3JpZFJvdyxcclxuICBHcmlkU2VsZWN0aW9uTW9kZSxcclxuICBHcmlkU2VsZWN0aW9uVHlwZSxcclxuICBHcmlkVXBkYXRlRGF0YSxcclxufSBmcm9tICcuL2FwaS9ncmlkLWFwaSc7XHJcbmltcG9ydCB7IEdyaWRVaUFjdGlvblR5cGUsIFNtYXJ0R3JpZCwgU21hcnRMYXlvdXREZWYgfSBmcm9tICcuL21vZGVscy9tb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0R3JpZFNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LWdyaWQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRhYmxlTGF5b3V0RGVmaW5lckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1sYXlvdXQtZGVmaW5lci90YWJsZS1sYXlvdXQtZGVmaW5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFeHBhbmRhYmxlU2VjdGlvbiB9IGZyb20gJy4uL3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbi9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50LWZhY3Rvcnktc2VydmljZS9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IEZpbHRlckV4cHJlc3Npb25PcmRlckJ5IH0gZnJvbSAnLi4vc21hcnQtZmlsdGVyL3Byb2plY3RzJztcclxuaW1wb3J0IHsgU21hcnREaWFsb2dEYXRhIH0gZnJvbSAnLi4vc21hcnQtZGlhbG9nL3Byb2plY3RzJztcclxuaW1wb3J0IHsgVWlBY3Rpb24gfSBmcm9tICcuLi92aWV3LWNvbnRleHQvYXBpJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnQtZ3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWdyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LWdyaWQuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW1NtYXJ0R3JpZFNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBASW5wdXQoKSBzbWFydEdyaWQ/OiBTbWFydEdyaWQ7XHJcbiAgQElucHV0KCkgdXVpZCE6IHN0cmluZztcclxuICBASW5wdXQoKSBkZXY6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gdGFibGVcclxuICBAVmlld0NoaWxkKCd0YWJsZScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSB2Y1JlZlRhYmxlPzogVmlld0NvbnRhaW5lclJlZjtcclxuICBjb21wb25lbnRSZWZUYWJsZSE6IENvbXBvbmVudFJlZjxTbWFydHRhYmxlQ29tcG9uZW50PjtcclxuICBzbWFydFRhYmxlITogU21hcnRUYWJsZTxHcmlkUm93PjtcclxuXHJcbiAgLy8gZXhwYW5kYWJsZVxyXG4gIC8vIGdyaWREYXRhXHJcbiAgZXhwYW5kYWJsZVNlY3Rpb25zPzogRXhwYW5kYWJsZVNlY3Rpb248YW55PltdO1xyXG5cclxuICBwYWdlRXZlbnQ/OiBQYWdlRXZlbnQ7XHJcbiAgZGF0YXNvdXJjZT86IG51bGw7XHJcbiAgcGFnZVNpemU/OiBudW1iZXI7XHJcbiAgbGVuZ3RoPzogbnVtYmVyO1xyXG4gIHZhbHVlczogYW55O1xyXG4gIGdyaWRUYWJsZSE6IFNtYXJ0VGFibGU8YW55PjtcclxuXHJcbiAgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFsyLCAzLCA0LCAxMF07XHJcblxyXG4gIHNlbGVjdGlvbkNoYW5nZXM6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHVpQWN0aW9uRGVzY3JpcHRvcnM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGFmdGVyVmlld0luaXRFeGVjdXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzQmxvY2tlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogU21hcnRHcmlkU2VydmljZSwgcHJpdmF0ZSBjZlNlcnZpY2U6IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNtYXJ0R3JpZCEhLmdyaWRNb2RlbCA9IHRoaXMuc2VydmljZS5ncmlkTW9kZWw7XHJcbiAgICAgIGlmICh0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsLnBhZ2VTaXplT3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbC5wYWdlU2l6ZU9wdGlvbnM7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3NtYXJ0R3JpZCddKSB7XHJcbiAgICAgIHRoaXMuc21hcnRHcmlkID0gY2hhbmdlc1snc21hcnRHcmlkJ10uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3V1aWQnXSkge1xyXG4gICAgICB0aGlzLnV1aWQgPSBjaGFuZ2VzWyd1dWlkJ10uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYWZ0ZXJWaWV3SW5pdEV4ZWN1dGVkICYmIHRoaXMudXVpZCAmJiB0aGlzLnNtYXJ0R3JpZCkge1xyXG4gICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRldikge1xyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnV1aWQgJiYgdGhpcy5zbWFydEdyaWQgJiYgIXRoaXMuZGV2KSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hZnRlclZpZXdJbml0RXhlY3V0ZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB0aGUgc2VsZWN0ZWQgcm93cyBvZiB0aGUgdGFibGVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U2VsZWN0ZWRSb3dzKCk6IFNlbGVjdGlvbk1vZGVsPEdyaWRSb3c+IHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbikgdGhyb3cgbmV3IEVycm9yKCk7XHJcbiAgICByZXR1cm4gdGhpcy5zbWFydFRhYmxlIS5zZWxlY3Rpb24hO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2Qgc2VuZHMgYSBHRVQgcmVxdWVzdCB0byB0aGUgZ2VuZXJpYyBHcmlkQVBJIGFuZCByZWZyZXNoZXMgdGhlIHByZXNlbnRlZFxyXG4gICAqIGdyaWQgd2l0aCB0aGUgbmV3ZXN0IG9uZS5cclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgcmVmcmVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuc2VydmljZS5sb2FkKHRoaXMudXVpZCwgdGhpcy5zbWFydEdyaWQhLmdyaWRJZGVudGlmaWVyKTtcclxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbC50b3RhbFJvd0NvdW50O1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMuc2VydmljZS5ncmlkTW9kZWwucGFnZVNpemUgPz8gNTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcmVuZGVyKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLnNlcnZpY2UubGVuZ3RoO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMuc2VydmljZS5wYWdlU2l6ZTtcclxuICAgIC8vIHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwgPSB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbCA9IHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWw7XHJcbiAgICBpZiAodGhpcy5zbWFydEdyaWQhLmxheW91dERlZiA9PT0gU21hcnRMYXlvdXREZWYuVEFCTEUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJUYWJsZSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0R3JpZCEubGF5b3V0RGVmID09PSBTbWFydExheW91dERlZi5FWFBBTkRBQkxFKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyRXhwYW5kYWJsZVNlY3Rpb25zKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRHcmlkIS5sYXlvdXREZWYgPT09IFNtYXJ0TGF5b3V0RGVmLkNBUkQpIHtcclxuICAgICAgdGhpcy5yZW5kZXJDYXJkcygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0Jsb2NrZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcmVuZGVyVGFibGUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgdGFibGVSb3cgPSB0aGlzLnNtYXJ0R3JpZCEhLmdyaWRNb2RlbCEucGFnZS5yb3dzIS5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGFibGVSb3cubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBwbGFjZUhvbGRlclJvdzogYW55ID0ge307XHJcbiAgICAgIHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwudmlldz8uZGVzY3JpcHRvcj8uY29sdW1ucy5tYXAoKG1ldGE6IEdyaWRDb2x1bW5NZXRhKSA9PiB7XHJcbiAgICAgICAgcGxhY2VIb2xkZXJSb3dbbWV0YS5wcm9wZXJ0eU5hbWVdID0gdW5kZWZpbmVkO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC5wYWdlLnJvd3MgPSBbcGxhY2VIb2xkZXJSb3ddO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB0YWJsZVR5cGU7XHJcbiAgICBpZiAodGhpcy5zbWFydEdyaWQhLnRhYmxlQ29uZmlnPy50YWJsZVR5cGUpIHtcclxuICAgICAgdGFibGVUeXBlID0gdGhpcy5zbWFydEdyaWQhLnRhYmxlQ29uZmlnLnRhYmxlVHlwZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZXJ2aWNlLmdyaWRNb2RlbD8udmlldz8uZGVzY3JpcHRvcj8uc2VsZWN0aW9uVHlwZSkge1xyXG4gICAgICB0YWJsZVR5cGUgPVxyXG4gICAgICAgIHRoaXMuc2VydmljZS5ncmlkTW9kZWwudmlldy5kZXNjcmlwdG9yLnNlbGVjdGlvblR5cGUgPT09IEdyaWRTZWxlY3Rpb25UeXBlLkNoZWNrYm94XHJcbiAgICAgICAgICA/IFNtYXJ0VGFibGVUeXBlLkNIRUNLX0JPWFxyXG4gICAgICAgICAgOiBTbWFydFRhYmxlVHlwZS5ST1dfU0VMRUNUO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGFibGVUeXBlID0gU21hcnRUYWJsZVR5cGUuSU5IRVJJVEVEO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0R3JpZCEubGF5b3V0RGVmID09PSBTbWFydExheW91dERlZi5UQUJMRSkge1xyXG4gICAgICBsZXQgdGFibGVDb25maWc6IFNtYXJ0VGFibGVJbnRlcmZhY2U8R3JpZFJvdz4gPSB7XHJcbiAgICAgICAgLi4udGhpcy5zbWFydEdyaWQhLnRhYmxlQ29uZmlnLFxyXG4gICAgICAgIHRhYmxlUm93czogdGFibGVSb3csXHJcbiAgICAgICAgdGFibGVUeXBlLFxyXG4gICAgICAgIGN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzOiBhd2FpdCB0aGlzLmNvbnN0cnVjdEhlYWRlcigpISxcclxuICAgICAgICBleHBhbmRhYmxlOiB0aGlzLnNtYXJ0R3JpZCEuZXhwYW5kYWJsZSxcclxuICAgICAgICBleHBhbmRlZENvbXBvbmVudDogdGhpcy5zbWFydEdyaWQhLmV4cGFuZGVkQ29tcG9uZW50LFxyXG4gICAgICAgIHR5cGU6IFNtYXJ0VGFibGVJbnRlcmZhY2VUeXBlRW51bS5OT1JNQUwsXHJcbiAgICAgICAgc29ydGFibGU6IHRydWUsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5zbWFydEdyaWQhLnVpQWN0aW9uU2VydmljZSAmJlxyXG4gICAgICAgIHRoaXMuc21hcnRHcmlkIS51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlICYmXHJcbiAgICAgICAgdGhpcy5zbWFydEdyaWQhLnNlcnZpY2VUb1VzZSAmJlxyXG4gICAgICAgIHRoaXMuc21hcnRHcmlkIS52aWV3Q29udGV4dFNlcnZpY2VcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGFibGVDb25maWcub25TZWxlY3Rpb24gPSB0aGlzLm9uU2VsZWN0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGFibGVDb25maWcub25BbGxTZWxlY3Rpb24gPSB0aGlzLm9uU2VsZWN0QWxsLmJpbmQodGhpcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFByZXBhcmVkIGZvciBzaW1wbGUgY2xpY2tzXHJcbiAgICAgIC8vIGlmICghdGFibGVDb25maWcub25Sb3dDbGljaykge1xyXG4gICAgICAvLyAgIHRhYmxlQ29uZmlnLm9uUm93Q2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgaWYgKCF0YWJsZUNvbmZpZy5vblJvd0RvdWJsZUNsaWNrKSB7XHJcbiAgICAgICAgdGFibGVDb25maWcub25Sb3dEb3VibGVDbGljayA9IHRoaXMub25Eb3VibGVDbGljay5iaW5kKHRoaXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRhYmxlQ29uZmlnLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgICB0YWJsZUNvbmZpZy5zZWxlY3RhYmxlUHJvcGVydHlOYW1lID0gJ3NlbGVjdGFibGUnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGFibGVDb25maWcuYXN5bmNPbkV4cGFuZCkge1xyXG4gICAgICAgIHRhYmxlQ29uZmlnLnJvd0V4cGFuZGVyID0gdGhpcztcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc2VsZWN0aW9uTW9kZSA9IHRoaXMuc2VydmljZSEuZ3JpZE1vZGVsLnZpZXc/LmRlc2NyaXB0b3I/LnNlbGVjdGlvbk1vZGU7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXRhYmxlQ29uZmlnLnNlbGVjdGlvbiAmJlxyXG4gICAgICAgICF0YWJsZUNvbmZpZy5zZWxlY3Rpb25Qcm9wZXJ0eSAmJlxyXG4gICAgICAgIHNlbGVjdGlvbk1vZGUgIT09IEdyaWRTZWxlY3Rpb25Nb2RlLk5vbmVcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgaXNNdWx0aXBsZSA9IHNlbGVjdGlvbk1vZGUgPT09IEdyaWRTZWxlY3Rpb25Nb2RlLk11bHRpcGxlO1xyXG5cclxuICAgICAgICB0YWJsZUNvbmZpZy5zZWxlY3Rpb25Qcm9wZXJ0eSA9ICdpZCc7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSWRzID0gdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbC5wYWdlXHJcbiAgICAgICAgICAucm93cyEuZmlsdGVyKChncmlkUm93OiBHcmlkUm93KSA9PiBncmlkUm93LnNlbGVjdGVkKVxyXG4gICAgICAgICAgLm1hcCgoZ3JpZFJvdzogR3JpZFJvdykgPT4gZ3JpZFJvdy5pZCEpO1xyXG5cclxuICAgICAgICB0YWJsZUNvbmZpZy5zZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPihpc011bHRpcGxlLCBzZWxlY3RlZElkcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZSA9IG5ldyBTbWFydFRhYmxlPGFueT4odGFibGVDb25maWcpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmVGFibGUpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZlRhYmxlLmluc3RhbmNlLnVwZGF0ZVNtYXJ0VGFibGUodGhpcy5zbWFydFRhYmxlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZjUmVmVGFibGU/LmNsZWFyKCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy52Y1JlZlRhYmxlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmVGFibGUgPSB0aGlzLmNmU2VydmljZS5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgICB0aGlzLnZjUmVmVGFibGUhLFxyXG4gICAgICAgICAgU21hcnR0YWJsZUNvbXBvbmVudCxcclxuICAgICAgICAgIG5ldyBNYXA8c3RyaW5nLCBhbnk+KFtbJ3NtYXJ0VGFibGUnLCB0aGlzLnNtYXJ0VGFibGVdXSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBsZXQgc3Vic2NyaXB0aW9uID0gdGhpcy5jb21wb25lbnRSZWZUYWJsZS5pbnN0YW5jZS5zb3J0RXZlbnRcclxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudFJlZlRhYmxlLmluc3RhbmNlLl9kZXN0cm95JCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHtcclxuICAgICAgICAgICAgaGVhZGVyLnByb3BlcnR5TmFtZSA9IGhlYWRlci5wcm9wZXJ0eU5hbWUuc3Vic3RyaW5nKDUpO1xyXG5cclxuICAgICAgICAgICAgc3dpdGNoIChoZWFkZXIub3JkZXIpIHtcclxuICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcclxuICAgICAgICAgICAgICAgIGhlYWRlci5vcmRlciA9IFNtYXJ0VGFibGVPcmRlci5BU0M7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIFNtYXJ0VGFibGVPcmRlci5BU0M6XHJcbiAgICAgICAgICAgICAgICBoZWFkZXIub3JkZXIgPSBTbWFydFRhYmxlT3JkZXIuREVTQztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgU21hcnRUYWJsZU9yZGVyLkRFU0M6XHJcbiAgICAgICAgICAgICAgICBoZWFkZXIub3JkZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGZpbHRlciA9IHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwudmlldyEub3JkZXJCeUxpc3QuZmluZChcclxuICAgICAgICAgICAgICAoZmlsdGVyRXhwcmVzc2lvbjogRmlsdGVyRXhwcmVzc2lvbk9yZGVyQnkpID0+XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyLnByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyICYmICFoZWFkZXIub3JkZXIpIHtcclxuICAgICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXc/Lm9yZGVyQnlMaXN0LmluZGV4T2YoZmlsdGVyKTtcclxuICAgICAgICAgICAgICB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXc/Lm9yZGVyQnlMaXN0LnNwbGljZShpbmRleCEsIDEpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcikge1xyXG4gICAgICAgICAgICAgIGZpbHRlci5vcmRlciA9IGhlYWRlci5vcmRlcjtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXchLm9yZGVyQnlMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgb3JkZXI6IGhlYWRlci5vcmRlcixcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZTogaGVhZGVyLnByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGdyaWRVcGRhdGVEYXRhOiBHcmlkVXBkYXRlRGF0YSA9IHtcclxuICAgICAgICAgICAgICBvcmRlckJ5TGlzdDogdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC52aWV3IS5vcmRlckJ5TGlzdCxcclxuICAgICAgICAgICAgICBvcmRlcmVkQ29sdW1uTmFtZXM6IHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwudmlldyEub3JkZXJlZENvbHVtbk5hbWVzLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc29ydCh0aGlzLnNtYXJ0R3JpZCEsIGdyaWRVcGRhdGVEYXRhKTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZlRhYmxlLmluc3RhbmNlLnNtYXJ0VGFibGUuc2VsZWN0aW9uPy5jaGFuZ2VkXHJcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnRSZWZUYWJsZS5pbnN0YW5jZS5fZGVzdHJveSQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocm93OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VzLm5leHQocm93KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kKHJvd0lkOiBudW1iZXIpOiBhbnkge31cclxuXHJcbiAgcHVibGljIGFzeW5jIGV4cGFuZEFzeW5jKHJvd0luZGV4OiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgaWYgKHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwucGFnZS5yb3dzKSB7XHJcbiAgICAgIGxldCByb3cgPSB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnBhZ2Uucm93c1tyb3dJbmRleF07XHJcbiAgICAgIGlmIChyb3cgJiYgcm93LmlkKSB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VydmljZS5leHBhbmQodGhpcy5zbWFydEdyaWQhLCByb3cuaWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZXJ2aWNlLmV4cGFuZCh0aGlzLnNtYXJ0R3JpZCEsIHJvd0luZGV4LnRvU3RyaW5nKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5kZXJFeHBhbmRhYmxlU2VjdGlvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGFuZGFibGVTZWN0aW9ucyA9IHRoaXMuc21hcnRHcmlkISEuZ3JpZE1vZGVsIS5wYWdlLnJvd3MhLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICAgIGhlYWRlckNvbXBvbmVudDogdGhpcy5zbWFydEdyaWQhLmhlYWRlckNvbXBvbmVudCxcclxuICAgICAgICBoZWFkZXJJbnB1dE5hbWU6IHRoaXMuc21hcnRHcmlkIS5oZWFkZXJDb21wb25lbnRJbnB1dE5hbWUsXHJcbiAgICAgICAgaGVhZGVyRGF0YTogaXRlbSxcclxuICAgICAgICBjdXN0b21Db21wb25lbnQ6IHRoaXMuc21hcnRHcmlkIS5leHBhbmRhYmxlQ29tcG9uZW50LFxyXG4gICAgICAgIGlucHV0TmFtZTogdGhpcy5zbWFydEdyaWQhLmV4cGFuZGFibGVDb21wb25lbnRJbnB1dE5hbWUsXHJcbiAgICAgICAgZGF0YTogaXRlbSxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5kZXJDYXJkcygpOiB2b2lkIHtcclxuICAgIC8vIFRPRE9cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgY29uc3RydWN0SGVhZGVyKCk6IFByb21pc2U8U21hcnRUYWJsZUhlYWRlcltdPiB7XHJcbiAgICBsZXQgaGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyW10gPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC5wYWdlLnJvd3MgJiYgdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC5wYWdlLnJvd3MubGVuZ3RoKSB7XHJcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgIHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwucGFnZS5yb3dzLm1hcChhc3luYyAoZ3JpZFJvdzogR3JpZFJvdykgPT4ge1xyXG4gICAgICAgICAgbGV0IG5ld1VpQWN0aW9ucyA9IGdyaWRSb3cuYWN0aW9ucz8uZmlsdGVyKFxyXG4gICAgICAgICAgICAodWlBY3Rpb246IGFueSkgPT4gIXRoaXMudWlBY3Rpb25EZXNjcmlwdG9ycy5nZXQodWlBY3Rpb24uY29kZSEpXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGlmIChuZXdVaUFjdGlvbnMpIHtcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgbmV3VWlBY3Rpb25zLm1hcChhc3luYyAodWlBY3Rpb246IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPVxyXG4gICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNtYXJ0R3JpZCEudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZS5nZXRBY3Rpb25EZXNjcmlwdG9yKHVpQWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudWlBY3Rpb25EZXNjcmlwdG9ycy5zZXQodWlBY3Rpb24uY29kZSEsIGRlc2NyaXB0b3IpO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC52aWV3IS5vcmRlcmVkQ29sdW1uTmFtZXMubWFwKGFzeW5jIChwcm9wZXJ0eU5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGxldCBkZXNjQ29sdW1uOiBhbnkgPSB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXchLmRlc2NyaXB0b3IhLmNvbHVtbnMhLmZpbmQoXHJcbiAgICAgICAgICAoY29sRGVzY3JpcHRvcjogR3JpZENvbHVtbk1ldGEpID0+IGNvbERlc2NyaXB0b3IucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBjdXN0b21UYWJsZUhlYWRlciA9IHRoaXMuc21hcnRHcmlkIS50YWJsZUNvbmZpZz8uY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/LmZpbmQoXHJcbiAgICAgICAgICAoaGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiBoZWFkZXIucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChkZXNjQ29sdW1uKSB7XHJcbiAgICAgICAgICBsZXQgZmlsdGVyRXhwcmVzc2lvbk9yZGVyQnlJdGVtID0gdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC52aWV3Py5vcmRlckJ5TGlzdD8uZmluZChcclxuICAgICAgICAgICAgKGZpbHRlckV4cHJlc3Npb246IEZpbHRlckV4cHJlc3Npb25PcmRlckJ5KSA9PlxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb24ucHJvcGVydHlOYW1lID09PSBkZXNjQ29sdW1uLnByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGxldCBvcmRlcjtcclxuICAgICAgICAgIGxldCBvcmRlck51bWJlcjtcclxuICAgICAgICAgIGlmIChmaWx0ZXJFeHByZXNzaW9uT3JkZXJCeUl0ZW0pIHtcclxuICAgICAgICAgICAgb3JkZXIgPVxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25PcmRlckJ5SXRlbS5vcmRlciA9PT0gRmlsdGVyRXhwcmVzc2lvbk9yZGVyQnkuT3JkZXJFbnVtLkFzY1xyXG4gICAgICAgICAgICAgICAgPyBTbWFydFRhYmxlT3JkZXIuQVNDXHJcbiAgICAgICAgICAgICAgICA6IFNtYXJ0VGFibGVPcmRlci5ERVNDO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLmdyaWRNb2RlbC52aWV3IS5vcmRlckJ5TGlzdC5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgb3JkZXJOdW1iZXIgPSB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsLnZpZXchLm9yZGVyQnlMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAgIChmaWx0ZXI6IEZpbHRlckV4cHJlc3Npb25PcmRlckJ5KSA9PiBmaWx0ZXIucHJvcGVydHlOYW1lID09PSBkZXNjQ29sdW1uLnByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgb3JkZXJOdW1iZXIrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3Qgb3JpZ25hbExhYmVsID0gY3VzdG9tVGFibGVIZWFkZXI/LmxhYmVsID8/IGRlc2NDb2x1bW4ubGFiZWw7XHJcbiAgICAgICAgICBsZXQgbGFiZWw6IHN0cmluZztcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5zbWFydEdyaWQhLnRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgbGFiZWwgPSBhd2FpdCB0aGlzLnNtYXJ0R3JpZCEudHJhbnNsYXRlU2VydmljZT8uZ2V0KG9yaWduYWxMYWJlbCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsYWJlbCA9IG9yaWduYWxMYWJlbDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IGN1c3RvbVRhYmxlSGVhZGVyPy5wcm9wZXJ0aWVzO1xyXG4gICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgIGlmIChkZXNjQ29sdW1uLnR5cGVDbGFzcyA9PT0gJ2phdmEudGltZS5PZmZzZXREYXRlVGltZScpIHtcclxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZS5EQVRFVElNRSxcclxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6ICd5eXl5Lk1NLmRkIEg6bW0nLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVzY0NvbHVtbi50eXBlQ2xhc3MgPT09ICdqYXZhLnRpbWUuT2Zmc2V0RGF0ZScpIHtcclxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZS5EQVRFVElNRSxcclxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6ICd5eXl5Lk1NLmRkJyxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaGVhZGVyLnB1c2goe1xyXG4gICAgICAgICAgICAuLi5jdXN0b21UYWJsZUhlYWRlcixcclxuICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWU6ICdkYXRhLicgKyBkZXNjQ29sdW1uLnByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgb3JkZXIsXHJcbiAgICAgICAgICAgIG9yZGVyTnVtYmVyLFxyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgY29tcGxlbWVudCA9IHRoaXMuc21hcnRHcmlkIS50YWJsZUNvbmZpZz8uY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/LmZpbHRlcihcclxuICAgICAgKHRhYmxlSGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PlxyXG4gICAgICAgICFoZWFkZXIuc29tZSgodEg6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRILnByb3BlcnR5TmFtZS5pbmNsdWRlcyh0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUpKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoY29tcGxlbWVudCkge1xyXG4gICAgICBoZWFkZXIucHVzaCguLi5jb21wbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEdyaWQhLm9wdGlvbnM/LnNpbXBsZUJ1dHRvbnMpIHtcclxuICAgICAgdGhpcy5zbWFydEdyaWQhLm9wdGlvbnMuc2ltcGxlQnV0dG9ucy5mb3JFYWNoKCh1aUFjdGlvbkNvZGU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGhlYWRlci5wdXNoKHtcclxuICAgICAgICAgIGxhYmVsOiAnJyxcclxuICAgICAgICAgIHByb3BlcnR5TmFtZTogJ3NpbXBsZV9idXR0b25zJyxcclxuICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IFNtYXJ0VGFibGVCdXR0b25UeXBlLlJBSVNFRCxcclxuICAgICAgICAgICAgICBjYWxsYmFjazogdGhpcy5leGVjdXRlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuYnV0dG9uVHJhbnNsYXRvcih7IGNvZGU6IHVpQWN0aW9uQ29kZSB9KSxcclxuICAgICAgICAgICAgICBhcmdzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGNvZGU6IHVpQWN0aW9uQ29kZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICAgICAgICAgIHNob3dCdXR0b25JZjogKHJvdzogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgcm93LmFjdGlvbnMuc29tZSgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmNvZGUgPT09IHVpQWN0aW9uQ29kZTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFoZWFkZXIuc29tZSgoaGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiBoZWFkZXIucHJvcGVydHlOYW1lID09PSAnbXlfbWVudScpKSB7XHJcbiAgICAgIGlmICh0aGlzLnNtYXJ0R3JpZCEub3B0aW9ucz8ucm93VWlBY3Rpb25UeXBlID09PSBHcmlkVWlBY3Rpb25UeXBlLlBPUFVQX01FTlUpIHtcclxuICAgICAgICBoZWFkZXIucHVzaCh7XHJcbiAgICAgICAgICBsYWJlbDogJycsXHJcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6ICdteV9tZW51JyxcclxuICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IFNtYXJ0VGFibGVCdXR0b25UeXBlLk1FTlUsXHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6IHRoaXMuZXhlY3V0ZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgIGljb246ICdtb3JlX3ZlcnQnLFxyXG4gICAgICAgICAgICAgIG1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZTogJ2FjdGlvbnMnLFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0b3I6IHRoaXMuYnV0dG9uVHJhbnNsYXRvci5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgIGFyZ3M6IFtdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIGlzU29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGhlYWRlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBvbkNoYW5nZVBhZ2UoZXZlbnQ6IFBhZ2VFdmVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IG9mZnNldCA9IGV2ZW50Py5wYWdlU2l6ZSAqIGV2ZW50Py5wYWdlSW5kZXg7XHJcbiAgICBsZXQgbGltaXQgPSBldmVudC5wYWdlU2l6ZTtcclxuICAgIGF3YWl0IHRoaXMuc2VydmljZS5zZXRQYWdlKFxyXG4gICAgICB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXdVdWlkISxcclxuICAgICAgdGhpcy5zbWFydEdyaWQhLmdyaWRJZGVudGlmaWVyLFxyXG4gICAgICBvZmZzZXQudG9TdHJpbmcoKSxcclxuICAgICAgbGltaXQudG9TdHJpbmcoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZShhcmdzOiBhbnlbXSwgcm93OiBhbnksIHVpQWN0aW9uOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBfdWlBY3Rpb246IFVpQWN0aW9uO1xyXG5cclxuICAgIGlmICghdWlBY3Rpb24pIHtcclxuICAgICAgdWlBY3Rpb24gPSByb3cuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbjogVWlBY3Rpb24pID0+IGFjdGlvbi5jb2RlID09PSBhcmdzWzBdLmNvZGUpWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIF91aUFjdGlvbiA9IHsgLi4udWlBY3Rpb24gfTtcclxuICAgIF91aUFjdGlvbi5wYXJhbXMgPSB7XHJcbiAgICAgIC4uLnVpQWN0aW9uLnBhcmFtcyxcclxuICAgICAgbW9kZWw6IHJvdyxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IHVpQWN0aW9uTW9kZWw6IGFueSA9IHtcclxuICAgICAgc2VydmljZVRvVXNlOiB0aGlzLnNtYXJ0R3JpZCEuc2VydmljZVRvVXNlLFxyXG4gICAgICB1aUFjdGlvbjogX3VpQWN0aW9uLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEdyaWQhLm9wdGlvbnM/LnVpQWN0aW9uTW9kZWxDYWxsYmFjaykge1xyXG4gICAgICB1aUFjdGlvbk1vZGVsID0gdGhpcy5zbWFydEdyaWQhLm9wdGlvbnMhLnVpQWN0aW9uTW9kZWxDYWxsYmFjayh1aUFjdGlvbk1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNtYXJ0R3JpZCEudWlBY3Rpb25TZXJ2aWNlLnVpQWN0aW9uTW9kZWwgPSB1aUFjdGlvbk1vZGVsO1xyXG4gICAgdGhpcy5zbWFydEdyaWQhLnVpQWN0aW9uU2VydmljZS5leGVjdXRlKF91aUFjdGlvbiwge1xyXG4gICAgICB3aWRnZXRJZDogdGhpcy5zbWFydEdyaWQhLmdyaWRJZGVudGlmaWVyLFxyXG4gICAgICBub2RlSWQ6IHJvdy5pZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidXR0b25UcmFuc2xhdG9yKHVpQWN0aW9uOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgbGV0IGRlc2MgPSB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvcnMuZ2V0KHVpQWN0aW9uLmNvZGUpO1xyXG4gICAgcmV0dXJuIGRlc2MgPyBkZXNjLnRpdGxlIDogdWlBY3Rpb24uY29kZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsYXlvdXREZWYoKTogdHlwZW9mIFNtYXJ0TGF5b3V0RGVmIHtcclxuICAgIHJldHVybiBTbWFydExheW91dERlZjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsaWNrKGdyaWRSb3c6IEdyaWRSb3cpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFuZGxlT25DbGljayhncmlkUm93KTtcclxuICB9XHJcbiAgcHVibGljIG9uRG91YmxlQ2xpY2soZ3JpZFJvdzogR3JpZFJvdyk6IHZvaWQge1xyXG4gICAgdGhpcy5oYW5kbGVPbkNsaWNrKGdyaWRSb3cpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVPbkNsaWNrKGdyaWRSb3c6IEdyaWRSb3cpOiB2b2lkIHtcclxuICAgIGxldCBkZWZhdWx0Um93QWN0aW9uOiBVaUFjdGlvbiB8IHVuZGVmaW5lZDtcclxuICAgIGlmICh0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsPy5kZWZhdWx0Um93QWN0aW9ucykge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbC5kZWZhdWx0Um93QWN0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBkZWZhdWx0Um93QWN0aW9uQ29kZSA9IHRoaXMuc2VydmljZS5ncmlkTW9kZWwuZGVmYXVsdFJvd0FjdGlvbnNbaW5kZXhdO1xyXG5cclxuICAgICAgICBkZWZhdWx0Um93QWN0aW9uID0gZ3JpZFJvdy5hY3Rpb25zLmZpbmQoXHJcbiAgICAgICAgICAodWlBY3Rpb246IFVpQWN0aW9uKSA9PiB1aUFjdGlvbi5jb2RlID09PSBkZWZhdWx0Um93QWN0aW9uQ29kZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGRlZmF1bHRSb3dBY3Rpb24pIHtcclxuICAgICAgICAgIHRoaXMuZXhlY3V0ZShbXSwgZ3JpZFJvdywgZGVmYXVsdFJvd0FjdGlvbik7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIG9uU2VsZWN0KHJvd0lkOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuaXNCbG9ja2VkID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCByb3cgPSB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsLnBhZ2Uucm93cz8uZmluZCgoZ3JpZFJvdzogR3JpZFJvdykgPT4gZ3JpZFJvdy5pZCA9PT0gcm93SWQpO1xyXG4gICAgY29uc3Qgdmlld0NvbnRleHRDaGFuZ2UgPSBhd2FpdCB0aGlzLnNlcnZpY2Uuc2VsZWN0KHRoaXMuc21hcnRHcmlkISwgcm93ISk7XHJcbiAgICB0aGlzLnNtYXJ0R3JpZCEudmlld0NvbnRleHRTZXJ2aWNlLmhhbmRsZUNoYW5nZXModmlld0NvbnRleHRDaGFuZ2UuY2hhbmdlcyk7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgb25TZWxlY3RBbGwoc2VsZWN0ZWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuaXNCbG9ja2VkID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCB2aWV3Q29udGV4dENoYW5nZSA9IGF3YWl0IHRoaXMuc2VydmljZS5zZWxlY3RBbGwodGhpcy5zbWFydEdyaWQhLCBzZWxlY3RlZCk7XHJcbiAgICB0aGlzLnNtYXJ0R3JpZCEudmlld0NvbnRleHRTZXJ2aWNlLmhhbmRsZUNoYW5nZXModmlld0NvbnRleHRDaGFuZ2UuY2hhbmdlcyk7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIGVkaXRDb2x1bW5zKCk6IHZvaWQge1xyXG4gICAgbGV0IGRpYWxvZ0RhdGE6IFNtYXJ0RGlhbG9nRGF0YSA9IHtcclxuICAgICAgY29udGVudDoge1xyXG4gICAgICAgIHRpdGxlOiAnT3N6bG9wb2sgdGVzdHJlc3phYsOhc2EnLFxyXG4gICAgICB9LFxyXG4gICAgICBzaXplOiB7fSxcclxuICAgICAgY3VzdG9tQ29tcG9uZW50OiBUYWJsZUxheW91dERlZmluZXJDb21wb25lbnQsXHJcbiAgICAgIGN1c3RvbUNvbXBvbmVudElucHV0czoge1xyXG4gICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgdXVpZDogdGhpcy51dWlkLFxyXG4gICAgICAgICAgaWRlbnRpZmllcjogdGhpcy5zbWFydEdyaWQhLmdyaWRJZGVudGlmaWVyLFxyXG4gICAgICAgICAgdmlldzogdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbC52aWV3LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZURpYWxvZyhkaWFsb2dEYXRhLCBUYWJsZUxheW91dERlZmluZXJDb21wb25lbnQpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwic21hcnRHcmlkXCIgY2xhc3M9XCJzbWFydEdyaWQtY29udGFpbmVyXCI+XHJcbiAgPCEtLSA8ZGl2IFtuZ0NsYXNzXT1cImlzQmxvY2tlZCA/ICdibG9ja2VkJyA6ICcnXCI+PC9kaXY+IC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJzbWFydEdyaWRDb250ZW50XCI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic21hcnRHcmlkLnNob3dSZXN1bHRDb3VudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWFydEdyaWQtZGF0YS1udW1iZXJcIj5cclxuICAgICAgICAgIHt7IHNtYXJ0R3JpZC5ncmlkTW9kZWwudG90YWxSb3dDb3VudCB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWFydC1ncmlkLXRhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic21hcnQtZ3JpZC1lZGl0LWJ1dHRvblwiICpuZ0lmPVwic21hcnRHcmlkLnNob3dFZGl0Q29sdW1uc1wiPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImVkaXRDb2x1bW5zKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgIE9zemxvcG9rIHRlc3RyZXN6YWLDoXNhXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3RhYmxlPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic21hcnRHcmlkLmxheW91dERlZiA9PT0gbGF5b3V0RGVmKCkuRVhQQU5EQUJMRVwiPlxyXG4gICAgICA8c21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uXHJcbiAgICAgICAgI2dyaWRFeHBhbmRhYmxlU2VjdGlvblxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBleHBhbmRhYmxlU2VjdGlvbiBvZiBleHBhbmRhYmxlU2VjdGlvbnNcIlxyXG4gICAgICAgIFtkYXRhXT1cImV4cGFuZGFibGVTZWN0aW9uXCJcclxuICAgICAgPjwvc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwic21hcnRHcmlkLmxheW91dERlZiA9PT0gbGF5b3V0RGVmKCkuQ0FSRFwiXHJcbiAgICAgIGNsYXNzPVwiY2FyZHMtY29udGFpbmVyXCJcclxuICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICdncmlkLXRlbXBsYXRlLWNvbHVtbnMnOlxyXG4gICAgICAgICAgc21hcnRHcmlkLm51bWJlck9mQ29sdW1uICE9PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgPyAncmVwZWF0KCcgKyBzbWFydEdyaWQubnVtYmVyT2ZDb2x1bW4gKyAnLCAxZnIpJ1xyXG4gICAgICAgICAgICA6ICcnXHJcbiAgICAgIH1cIlxyXG4gICAgPlxyXG4gICAgICA8YXBwLXNtYXJ0LWdyaWQtY2FyZFxyXG4gICAgICAgIGNsYXNzPVwic21hcnRHcmlkLWNhcmQtY29udGFpbmVyXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFzayBvZiBzbWFydEdyaWQuZ3JpZE1vZGVsLnBhZ2Uucm93c1wiXHJcbiAgICAgICAgW2l0ZW1dPVwidGFza1wiXHJcbiAgICAgICAgW3NtYXJ0R3JpZF09XCJzbWFydEdyaWRcIlxyXG4gICAgICA+PC9hcHAtc21hcnQtZ3JpZC1jYXJkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtYXQtcGFnaW5hdG9yXHJcbiAgICAqbmdJZj1cInNtYXJ0R3JpZC5wYWdpbmF0b3JcIlxyXG4gICAgI3BhZ2luYXRvclxyXG4gICAgW2xlbmd0aF09XCJsZW5ndGhcIlxyXG4gICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcclxuICAgIChwYWdlKT1cIm9uQ2hhbmdlUGFnZSgkZXZlbnQpXCJcclxuICA+PC9tYXQtcGFnaW5hdG9yPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
import { BrowserModule } from '@angular/platform-browser';
|
|
5
|
+
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
6
|
+
import { ExpandableGridComponent } from './components/expandable-grid/expandable-grid.component';
|
|
7
|
+
import { SmartGridCardComponent } from './components/smart-grid-card/smart-grid-card.component';
|
|
8
|
+
import { SmartGridComponent } from './smart-grid.component';
|
|
9
|
+
import { TableLayoutDefinerComponent } from './components/table-layout-definer/table-layout-definer.component';
|
|
10
|
+
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
11
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
12
|
+
import { SmartIconModule } from '../smart-icon/projects';
|
|
13
|
+
import { SmarttableModule } from '../smart-table/projects';
|
|
14
|
+
import { SmartExpandableSectionModule } from '../smart-expandable-section/projects';
|
|
15
|
+
import { SmartformModule } from '../smart-form/projects';
|
|
16
|
+
import * as i0 from "@angular/core";
|
|
17
|
+
export class SmartGridModule {
|
|
18
|
+
}
|
|
19
|
+
SmartGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20
|
+
SmartGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridModule, declarations: [SmartGridComponent,
|
|
21
|
+
SmartGridCardComponent,
|
|
22
|
+
ExpandableGridComponent,
|
|
23
|
+
TableLayoutDefinerComponent], imports: [BrowserModule,
|
|
24
|
+
SmartIconModule,
|
|
25
|
+
SmarttableModule,
|
|
26
|
+
MatIconModule,
|
|
27
|
+
MatButtonModule,
|
|
28
|
+
MatPaginatorModule,
|
|
29
|
+
SmartExpandableSectionModule,
|
|
30
|
+
DragDropModule,
|
|
31
|
+
SmartformModule,
|
|
32
|
+
MatSelectModule], exports: [SmartGridComponent] });
|
|
33
|
+
SmartGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridModule, imports: [[
|
|
34
|
+
BrowserModule,
|
|
35
|
+
SmartIconModule,
|
|
36
|
+
SmarttableModule,
|
|
37
|
+
MatIconModule,
|
|
38
|
+
MatButtonModule,
|
|
39
|
+
MatPaginatorModule,
|
|
40
|
+
SmartExpandableSectionModule,
|
|
41
|
+
DragDropModule,
|
|
42
|
+
SmartformModule,
|
|
43
|
+
MatSelectModule,
|
|
44
|
+
]] });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridModule, decorators: [{
|
|
46
|
+
type: NgModule,
|
|
47
|
+
args: [{
|
|
48
|
+
declarations: [
|
|
49
|
+
SmartGridComponent,
|
|
50
|
+
SmartGridCardComponent,
|
|
51
|
+
ExpandableGridComponent,
|
|
52
|
+
TableLayoutDefinerComponent,
|
|
53
|
+
],
|
|
54
|
+
imports: [
|
|
55
|
+
BrowserModule,
|
|
56
|
+
SmartIconModule,
|
|
57
|
+
SmarttableModule,
|
|
58
|
+
MatIconModule,
|
|
59
|
+
MatButtonModule,
|
|
60
|
+
MatPaginatorModule,
|
|
61
|
+
SmartExpandableSectionModule,
|
|
62
|
+
DragDropModule,
|
|
63
|
+
SmartformModule,
|
|
64
|
+
MatSelectModule,
|
|
65
|
+
],
|
|
66
|
+
exports: [SmartGridComponent],
|
|
67
|
+
}]
|
|
68
|
+
}] });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZ3JpZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1ncmlkL3NtYXJ0LWdyaWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDakcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDaEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDL0csT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQXVCekQsTUFBTSxPQUFPLGVBQWU7OzRHQUFmLGVBQWU7NkdBQWYsZUFBZSxpQkFuQnhCLGtCQUFrQjtRQUNsQixzQkFBc0I7UUFDdEIsdUJBQXVCO1FBQ3ZCLDJCQUEyQixhQUczQixhQUFhO1FBQ2IsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixhQUFhO1FBQ2IsZUFBZTtRQUNmLGtCQUFrQjtRQUNsQiw0QkFBNEI7UUFDNUIsY0FBYztRQUNkLGVBQWU7UUFDZixlQUFlLGFBRVAsa0JBQWtCOzZHQUVqQixlQUFlLFlBZGpCO1lBQ1AsYUFBYTtZQUNiLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLGVBQWU7WUFDZixrQkFBa0I7WUFDbEIsNEJBQTRCO1lBQzVCLGNBQWM7WUFDZCxlQUFlO1lBQ2YsZUFBZTtTQUNoQjsyRkFHVSxlQUFlO2tCQXJCM0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLHVCQUF1Qjt3QkFDdkIsMkJBQTJCO3FCQUM1QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsNEJBQTRCO3dCQUM1QixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsZUFBZTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5cclxuaW1wb3J0IHsgRXhwYW5kYWJsZUdyaWRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZXhwYW5kYWJsZS1ncmlkL2V4cGFuZGFibGUtZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydEdyaWRDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NtYXJ0LWdyaWQtY2FyZC9zbWFydC1ncmlkLWNhcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1ncmlkLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBUYWJsZUxheW91dERlZmluZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtbGF5b3V0LWRlZmluZXIvdGFibGUtbGF5b3V0LWRlZmluZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgU21hcnRJY29uTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtaWNvbi9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0dGFibGVNb2R1bGUgfSBmcm9tICcuLi9zbWFydC10YWJsZS9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0RXhwYW5kYWJsZVNlY3Rpb25Nb2R1bGUgfSBmcm9tICcuLi9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24vcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTbWFydGZvcm1Nb2R1bGUgfSBmcm9tICcuLi9zbWFydC1mb3JtL3Byb2plY3RzJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBTbWFydEdyaWRDb21wb25lbnQsXHJcbiAgICBTbWFydEdyaWRDYXJkQ29tcG9uZW50LFxyXG4gICAgRXhwYW5kYWJsZUdyaWRDb21wb25lbnQsXHJcbiAgICBUYWJsZUxheW91dERlZmluZXJDb21wb25lbnQsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBCcm93c2VyTW9kdWxlLFxyXG4gICAgU21hcnRJY29uTW9kdWxlLFxyXG4gICAgU21hcnR0YWJsZU1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXHJcbiAgICBTbWFydEV4cGFuZGFibGVTZWN0aW9uTW9kdWxlLFxyXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXHJcbiAgICBTbWFydGZvcm1Nb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbU21hcnRHcmlkQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0R3JpZE1vZHVsZSB7fVxyXG4iXX0=
|