@smartbit4all/ng-client 5.0.21 → 6.0.1
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/README.md +386 -386
- package/esm2022/lib/component-factory-service/component-factory-service.module.mjs +17 -0
- package/esm2022/lib/component-factory-service/component-factory-service.service.mjs +35 -0
- package/esm2022/lib/component-factory-service/projects.mjs +6 -0
- package/esm2022/lib/session/api/api/api.mjs +4 -0
- package/esm2022/lib/session/api/api/session.service.mjs +306 -0
- package/esm2022/lib/session/api/configuration.mjs +91 -0
- package/esm2022/lib/session/api/encoder.mjs +19 -0
- package/esm2022/lib/session/api/index.mjs +3 -0
- package/esm2022/lib/session/api/model/accountInfo.mjs +13 -0
- package/esm2022/lib/session/api/model/apiError.mjs +13 -0
- package/esm2022/lib/session/api/model/authenticationProviderData.mjs +13 -0
- package/esm2022/lib/session/api/model/getAuthenticationProvidersResponse.mjs +2 -0
- package/esm2022/lib/session/api/model/models.mjs +9 -0
- package/esm2022/lib/session/api/model/refreshSessionRequest.mjs +13 -0
- package/esm2022/lib/session/api/model/session.mjs +2 -0
- package/esm2022/lib/session/api/model/sessionInfoData.mjs +2 -0
- package/esm2022/lib/session/api/model/userActivityLog.mjs +13 -0
- package/esm2022/lib/session/api/param.mjs +2 -0
- package/esm2022/lib/session/api/variables.mjs +9 -0
- package/esm2022/lib/session/cookie-service/smart-cookie.service.mjs +225 -0
- package/esm2022/lib/session/projects.mjs +13 -0
- package/esm2022/lib/session/smart-backend-bootstrap.config.mjs +2 -0
- package/esm2022/lib/session/smart-backend-bootstrap.service.mjs +214 -0
- package/esm2022/lib/session/smart-default-error-ui.service.mjs +134 -0
- package/esm2022/lib/session/smart-error-catching.interceptor.mjs +109 -0
- package/esm2022/lib/session/smart-header-maintainer.interceptor.mjs +44 -0
- package/esm2022/lib/session/smart-session-handler.service.mjs +7 -0
- package/esm2022/lib/session/smart-session.module.mjs +58 -0
- package/esm2022/lib/session/smart-session.service.mjs +284 -0
- package/esm2022/lib/session/smart-timer/smart-session-timer.component.mjs +39 -0
- package/esm2022/lib/session/smart-timer/smart-session-timer.service.mjs +63 -0
- package/esm2022/lib/shared/projects.mjs +4 -0
- package/esm2022/lib/shared/shared.module.mjs +19 -0
- package/esm2022/lib/shared/smart-tooltip.directive.mjs +58 -0
- package/esm2022/lib/shared/smarttable.date-pipe.mjs +43 -0
- package/esm2022/lib/smart-client/projects.mjs +4 -0
- package/esm2022/lib/smart-client/smart-component-api-client.mjs +934 -0
- package/esm2022/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +79 -0
- package/esm2022/lib/smart-client/smart.component.mjs +88 -0
- package/esm2022/lib/smart-client/smart.service.mjs +71 -0
- package/esm2022/lib/smart-component-layout/api/api/api.mjs +4 -0
- package/esm2022/lib/smart-component-layout/api/api/default.service.mjs +133 -0
- package/esm2022/lib/smart-component-layout/api/api.module.mjs +40 -0
- package/esm2022/lib/smart-component-layout/api/configuration.mjs +91 -0
- package/esm2022/lib/smart-component-layout/api/encoder.mjs +19 -0
- package/esm2022/lib/smart-component-layout/api/index.mjs +7 -0
- package/esm2022/lib/smart-component-layout/api/model/componentType.mjs +18 -0
- package/esm2022/lib/smart-component-layout/api/model/componentWidgetType.mjs +22 -0
- package/esm2022/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.mjs +2 -0
- package/esm2022/lib/smart-component-layout/api/model/layoutDirection.mjs +17 -0
- package/esm2022/lib/smart-component-layout/api/model/models.mjs +9 -0
- package/esm2022/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +2 -0
- package/esm2022/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.mjs +2 -0
- package/esm2022/lib/smart-component-layout/api/model/toolbarDirection.mjs +17 -0
- package/esm2022/lib/smart-component-layout/api/model/toolbarProperties.mjs +2 -0
- package/esm2022/lib/smart-component-layout/api/param.mjs +2 -0
- package/esm2022/lib/smart-component-layout/api/variables.mjs +9 -0
- package/esm2022/lib/smart-component-layout/projects.mjs +8 -0
- package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +169 -0
- package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +436 -0
- package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +57 -0
- package/esm2022/lib/smart-diagram/api/api/api.mjs +4 -0
- package/esm2022/lib/smart-diagram/api/api/diagramService.service.mjs +141 -0
- package/esm2022/lib/smart-diagram/api/api.module.mjs +40 -0
- package/esm2022/lib/smart-diagram/api/configuration.mjs +91 -0
- package/esm2022/lib/smart-diagram/api/encoder.mjs +19 -0
- package/esm2022/lib/smart-diagram/api/index.mjs +7 -0
- package/esm2022/lib/smart-diagram/api/model/diagramColor.mjs +13 -0
- package/esm2022/lib/smart-diagram/api/model/diagramDataContainer.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/diagramDataItem.mjs +13 -0
- package/esm2022/lib/smart-diagram/api/model/diagramDataSet.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/diagramDescriptor.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/diagramModel.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/diagramShape.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/drawTime.mjs +18 -0
- package/esm2022/lib/smart-diagram/api/model/labelText.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/models.mjs +10 -0
- package/esm2022/lib/smart-diagram/api/param.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/variables.mjs +9 -0
- package/esm2022/lib/smart-diagram/component/default-smart-diagram-options.provider.mjs +312 -0
- package/esm2022/lib/smart-diagram/component/smart-diagram.component.mjs +359 -0
- package/esm2022/lib/smart-diagram/component/smart-diagram.module.mjs +40 -0
- package/esm2022/lib/smart-diagram/component/smart-diagram.util.mjs +10 -0
- package/esm2022/lib/smart-diagram/projects.mjs +5 -0
- package/esm2022/lib/smart-dialog/projects.mjs +8 -0
- package/esm2022/lib/smart-dialog/smartdialog.component.mjs +54 -0
- package/esm2022/lib/smart-dialog/smartdialog.model.mjs +16 -0
- package/esm2022/lib/smart-dialog/smartdialog.module.mjs +46 -0
- package/esm2022/lib/smart-dialog/smartdialog.service.mjs +86 -0
- package/esm2022/lib/smart-expandable-section/expandable-section.component.mjs +101 -0
- package/esm2022/lib/smart-expandable-section/expandable-section.model.mjs +12 -0
- package/esm2022/lib/smart-expandable-section/projects.mjs +8 -0
- package/esm2022/lib/smart-expandable-section/smart-expandable-section.module.mjs +57 -0
- package/esm2022/lib/smart-expandable-section/smart-expandable-section.service.mjs +14 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +17 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +2 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +8 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +2 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionData.mjs +2 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +20 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionField.mjs +2 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +2 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +28 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionList.mjs +2 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +2 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +32 -0
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +18 -0
- package/esm2022/lib/smart-filter/api/filter/model/model.mjs +16 -0
- package/esm2022/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.mjs +2 -0
- package/esm2022/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.mjs +13 -0
- package/esm2022/lib/smart-filter/api/value/model/value.mjs +13 -0
- package/esm2022/lib/smart-filter/projects.mjs +9 -0
- package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +14 -0
- package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +166 -0
- package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +45 -0
- package/esm2022/lib/smart-filter/smart-filter/smart-filter.component.mjs +36 -0
- package/esm2022/lib/smart-filter/smart-filter/smart-filter.service.mjs +31 -0
- package/esm2022/lib/smart-filter/smart-filter.model.mjs +13 -0
- package/esm2022/lib/smart-filter/smart-filter.module.mjs +33 -0
- package/esm2022/lib/smart-filter-editor/api/api/filter.service.mjs +198 -0
- package/esm2022/lib/smart-filter-editor/api/configuration.mjs +91 -0
- package/esm2022/lib/smart-filter-editor/api/encoder.mjs +19 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +17 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +13 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +2 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +8 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +2 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +7 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionData.mjs +2 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +20 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionField.mjs +2 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +2 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +2 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +28 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionList.mjs +2 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +2 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +32 -0
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOrderBy.mjs +19 -0
- package/esm2022/lib/smart-filter-editor/api/model/smartFilterType.mjs +17 -0
- package/esm2022/lib/smart-filter-editor/api/param.mjs +2 -0
- package/esm2022/lib/smart-filter-editor/api/variables.mjs +9 -0
- package/esm2022/lib/smart-filter-editor/filterExpressionBuilderApiActions.mjs +15 -0
- package/esm2022/lib/smart-filter-editor/project.mjs +8 -0
- package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +73 -0
- package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +40 -0
- package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +294 -0
- package/esm2022/lib/smart-filter-editor/smart-filter-editor.model.mjs +2 -0
- package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +69 -0
- package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +63 -0
- package/esm2022/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +24 -0
- package/esm2022/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +57 -0
- package/esm2022/lib/smart-form/api/api/api.mjs +4 -0
- package/esm2022/lib/smart-form/api/api/default.service.mjs +133 -0
- package/esm2022/lib/smart-form/api/api.module.mjs +40 -0
- package/esm2022/lib/smart-form/api/configuration.mjs +91 -0
- package/esm2022/lib/smart-form/api/encoder.mjs +19 -0
- package/esm2022/lib/smart-form/api/index.mjs +7 -0
- package/esm2022/lib/smart-form/api/model/dateFieldProperties.mjs +13 -0
- package/esm2022/lib/smart-form/api/model/fileUploaderProperties.mjs +2 -0
- package/esm2022/lib/smart-form/api/model/imageProperties.mjs +2 -0
- package/esm2022/lib/smart-form/api/model/models.mjs +19 -0
- package/esm2022/lib/smart-form/api/model/multiFileUploaderProperties.mjs +2 -0
- package/esm2022/lib/smart-form/api/model/propertyMapping.mjs +13 -0
- package/esm2022/lib/smart-form/api/model/recordingUploaderProperties.mjs +7 -0
- package/esm2022/lib/smart-form/api/model/selectionDefinition.mjs +14 -0
- package/esm2022/lib/smart-form/api/model/smartFormInputMode.mjs +22 -0
- package/esm2022/lib/smart-form/api/model/smartFormWidgetDirection.mjs +17 -0
- package/esm2022/lib/smart-form/api/model/smartFormWidgetType.mjs +49 -0
- package/esm2022/lib/smart-form/api/model/smartLayoutDefinition.mjs +2 -0
- package/esm2022/lib/smart-form/api/model/smartMatrixModel.mjs +2 -0
- package/esm2022/lib/smart-form/api/model/smartWidgetDefinition.mjs +2 -0
- package/esm2022/lib/smart-form/api/model/smartWidgetHint.mjs +18 -0
- package/esm2022/lib/smart-form/api/model/sortDefinition.mjs +13 -0
- package/esm2022/lib/smart-form/api/model/textBoxProperties.mjs +13 -0
- package/esm2022/lib/smart-form/api/model/textFieldProperties.mjs +13 -0
- package/esm2022/lib/smart-form/api/model/valueChangeMode.mjs +21 -0
- package/esm2022/lib/smart-form/api/param.mjs +2 -0
- package/esm2022/lib/smart-form/api/variables.mjs +9 -0
- package/esm2022/lib/smart-form/highlightMacthingString-pipe.mjs +20 -0
- package/esm2022/lib/smart-form/projects.mjs +18 -0
- package/esm2022/lib/smart-form/services/smartform.layout-definition.service.mjs +753 -0
- package/esm2022/lib/smart-form/services/smartform.service.mjs +683 -0
- package/esm2022/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +15 -0
- package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +193 -0
- package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +2 -0
- package/esm2022/lib/smart-form/smartform.component.mjs +190 -0
- package/esm2022/lib/smart-form/smartform.form-model.mjs +2 -0
- package/esm2022/lib/smart-form/smartform.model.mjs +38 -0
- package/esm2022/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.mjs +179 -0
- package/esm2022/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +83 -0
- package/esm2022/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.mjs +170 -0
- package/esm2022/lib/smart-form/widgets/components/smart-voice-recorder/smart-voice-recorder.component.mjs +151 -0
- package/esm2022/lib/smart-form/widgets/directives/comparable-dropdown.directive.mjs +35 -0
- package/esm2022/lib/smart-form/widgets/directives/comparable-multiselect.directive.mjs +79 -0
- package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +1038 -0
- package/esm2022/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +78 -0
- package/esm2022/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +31 -0
- package/esm2022/lib/smart-generic-pages/acl-editing-view/acl-editing-view.component.mjs +98 -0
- package/esm2022/lib/smart-generic-pages/api/platform/acl/model/aCL.mjs +2 -0
- package/esm2022/lib/smart-generic-pages/api/platform/acl/model/aCLEntry.mjs +18 -0
- package/esm2022/lib/smart-generic-pages/api/platform/acl/model/objectValidationSeverity.mjs +19 -0
- package/esm2022/lib/smart-generic-pages/api/platform/acl/model/subject.mjs +13 -0
- package/esm2022/lib/smart-generic-pages/api/platform/api-default/objectHistoryRangeData.mjs +2 -0
- package/esm2022/lib/smart-generic-pages/api/platform/searchpage/model/searchPageModel.mjs +2 -0
- package/esm2022/lib/smart-generic-pages/api/platform/subjectselector/model/subjectSelectorPageModel.mjs +13 -0
- package/esm2022/lib/smart-generic-pages/api/platform/validation/model/validationItem.mjs +2 -0
- package/esm2022/lib/smart-generic-pages/api/platform/validation/model/validationResultPageModel.mjs +2 -0
- package/esm2022/lib/smart-generic-pages/generic-page/generic-page.component.mjs +54 -0
- package/esm2022/lib/smart-generic-pages/invalid-smartlink/invalid-smartlink.component.mjs +40 -0
- package/esm2022/lib/smart-generic-pages/no-permission-page/no-permission-page.component.mjs +40 -0
- package/esm2022/lib/smart-generic-pages/projects.mjs +13 -0
- package/esm2022/lib/smart-generic-pages/search-page/search-page.component.mjs +80 -0
- package/esm2022/lib/smart-generic-pages/smart-generic-pages.module.mjs +116 -0
- package/esm2022/lib/smart-generic-pages/subject-selector/subject-selector.component.mjs +77 -0
- package/esm2022/lib/smart-generic-pages/validation-result-page/validation-result-page.component.mjs +93 -0
- package/esm2022/lib/smart-grid/api/grid-api/api/api.mjs +4 -0
- package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +514 -0
- package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +40 -0
- package/esm2022/lib/smart-grid/api/grid-api/configuration.mjs +91 -0
- package/esm2022/lib/smart-grid/api/grid-api/encoder.mjs +19 -0
- package/esm2022/lib/smart-grid/api/grid-api/index.mjs +7 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +17 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +2 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +20 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +2 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +2 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridPage.mjs +2 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +2 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +13 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +18 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +17 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +2 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +2 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridView.mjs +2 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +8 -0
- package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +15 -0
- package/esm2022/lib/smart-grid/api/grid-api/param.mjs +2 -0
- package/esm2022/lib/smart-grid/api/grid-api/variables.mjs +9 -0
- package/esm2022/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +20 -0
- package/esm2022/lib/smart-grid/components/generic-component/expanded-row-renderer.component.mjs +47 -0
- package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +72 -0
- package/esm2022/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +200 -0
- package/esm2022/lib/smart-grid/models/model.mjs +29 -0
- package/esm2022/lib/smart-grid/projects.mjs +9 -0
- package/esm2022/lib/smart-grid/smart-grid-toolbar-util.mjs +65 -0
- package/esm2022/lib/smart-grid/smart-grid.component.mjs +1035 -0
- package/esm2022/lib/smart-grid/smart-grid.module.mjs +103 -0
- package/esm2022/lib/smart-grid/smart-grid.service.mjs +92 -0
- package/esm2022/lib/smart-icon/projects.mjs +9 -0
- package/esm2022/lib/smart-icon/smart-icon/smart-icon.component.mjs +95 -0
- package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.mjs +40 -0
- package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.mjs +37 -0
- package/esm2022/lib/smart-icon/smart-icon.module.mjs +26 -0
- package/esm2022/lib/smart-icon/smart-icon.service.mjs +93 -0
- package/esm2022/lib/smart-map/abstract-map.mjs +112 -0
- package/esm2022/lib/smart-map/api/api/api.mjs +4 -0
- package/esm2022/lib/smart-map/api/api/geoMap.service.mjs +312 -0
- package/esm2022/lib/smart-map/api/api.module.mjs +40 -0
- package/esm2022/lib/smart-map/api/configuration.mjs +91 -0
- package/esm2022/lib/smart-map/api/encoder.mjs +19 -0
- package/esm2022/lib/smart-map/api/index.mjs +7 -0
- package/esm2022/lib/smart-map/api/model/gPSPosition.mjs +13 -0
- package/esm2022/lib/smart-map/api/model/gPSRoute.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapChange.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapDataLoadingMode.mjs +17 -0
- package/esm2022/lib/smart-map/api/model/geoMapDataSourceDescriptor.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapDataSourceType.mjs +19 -0
- package/esm2022/lib/smart-map/api/model/geoMapEditingSession.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapInteraction.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapItem.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapItemKind.mjs +18 -0
- package/esm2022/lib/smart-map/api/model/geoMapLayer.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapLayerChange.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapLayerDescriptor.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapModel.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapOperationMode.mjs +17 -0
- package/esm2022/lib/smart-map/api/model/geoMapSelectionMode.mjs +18 -0
- package/esm2022/lib/smart-map/api/model/geoMapServerModel.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapTextType.mjs +17 -0
- package/esm2022/lib/smart-map/api/model/geoMapViewState.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/geoMapViewport.mjs +2 -0
- package/esm2022/lib/smart-map/api/model/models.mjs +21 -0
- package/esm2022/lib/smart-map/api/param.mjs +2 -0
- package/esm2022/lib/smart-map/api/variables.mjs +9 -0
- package/esm2022/lib/smart-map/api-default/api-default.mjs +2 -0
- package/esm2022/lib/smart-map/impl/google-map.mjs +224 -0
- package/esm2022/lib/smart-map/impl/leaflet-map.mjs +422 -0
- package/esm2022/lib/smart-map/projects.mjs +9 -0
- package/esm2022/lib/smart-map/smart-map.component.mjs +222 -0
- package/esm2022/lib/smart-map/smart-map.module.mjs +22 -0
- package/esm2022/lib/smart-map/smart-map.types.mjs +2 -0
- package/esm2022/lib/smart-navbar/projects.mjs +8 -0
- package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +61 -0
- package/esm2022/lib/smart-navbar/smart-navbar.model.mjs +6 -0
- package/esm2022/lib/smart-navbar/smart-navbar.module.mjs +63 -0
- package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +14 -0
- package/esm2022/lib/smart-navigation/projects.mjs +6 -0
- package/esm2022/lib/smart-navigation/smart-navigation.interface.mjs +2 -0
- package/esm2022/lib/smart-navigation/smart-navigation.module.mjs +18 -0
- package/esm2022/lib/smart-navigation/smart-navigation.service.mjs +27 -0
- package/esm2022/lib/smart-ng-client.module.mjs +130 -0
- package/esm2022/lib/smart-ng-client.service.mjs +19 -0
- package/esm2022/lib/smart-subject/projects.mjs +5 -0
- package/esm2022/lib/smart-subject/smart-subject.mjs +21 -0
- package/esm2022/lib/smart-tab-group/projects.mjs +5 -0
- package/esm2022/lib/smart-tab-group/smart-tab-group.module.mjs +22 -0
- package/esm2022/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +43 -0
- package/esm2022/lib/smart-table/components/loading/loading.component.mjs +15 -0
- package/esm2022/lib/smart-table/directives/mat-context-menu-trigger-for.directive.mjs +52 -0
- package/esm2022/lib/smart-table/projects.mjs +8 -0
- package/esm2022/lib/smart-table/smarttable.component.mjs +98 -0
- package/esm2022/lib/smart-table/smarttable.model.mjs +177 -0
- package/esm2022/lib/smart-table/smarttable.module.mjs +109 -0
- package/esm2022/lib/smart-table/smarttable.service.mjs +14 -0
- package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +42 -0
- package/esm2022/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +23 -0
- package/esm2022/lib/smart-table/tables/table.mjs +573 -0
- package/esm2022/lib/smart-tree/projects.mjs +9 -0
- package/esm2022/lib/smart-tree/smarttree-generic.service.mjs +292 -0
- package/esm2022/lib/smart-tree/smarttree.component.mjs +187 -0
- package/esm2022/lib/smart-tree/smarttree.model.mjs +7 -0
- package/esm2022/lib/smart-tree/smarttree.module.mjs +60 -0
- package/esm2022/lib/smart-tree/smarttree.node.model.mjs +6 -0
- package/esm2022/lib/smart-tree/smarttree.service.interface.mjs +2 -0
- package/esm2022/lib/smart-tree/smarttree.service.mjs +47 -0
- package/esm2022/lib/smart-tree/tree-api/api/tree.service.mjs +1190 -0
- package/esm2022/lib/smart-tree/tree-api/configuration.mjs +91 -0
- package/esm2022/lib/smart-tree/tree-api/encoder.mjs +19 -0
- package/esm2022/lib/smart-tree/tree-api/param.mjs +2 -0
- package/esm2022/lib/smart-tree/tree-api/variables.mjs +9 -0
- package/esm2022/lib/smart-validation/named-validator.service.mjs +115 -0
- package/esm2022/lib/smart-validation/projects.mjs +4 -0
- package/esm2022/lib/smart-validation/smart-validation.module.mjs +24 -0
- package/esm2022/lib/smart-validation/smart-validation.types.mjs +4 -0
- package/esm2022/lib/view-context/api/api/api.mjs +4 -0
- package/esm2022/lib/view-context/api/api/view.service.mjs +903 -0
- package/esm2022/lib/view-context/api/api-default/binaryData.mjs +2 -0
- package/esm2022/lib/view-context/api/api-default/invocationError.mjs +2 -0
- package/esm2022/lib/view-context/api/api-default/invocationRequest.mjs +2 -0
- package/esm2022/lib/view-context/api/api-default/invocationRun.mjs +2 -0
- package/esm2022/lib/view-context/api/api.module.mjs +40 -0
- package/esm2022/lib/view-context/api/configuration.mjs +91 -0
- package/esm2022/lib/view-context/api/encoder.mjs +19 -0
- package/esm2022/lib/view-context/api/index.mjs +7 -0
- package/esm2022/lib/view-context/api/model/backgroundProcessInfo.mjs +2 -0
- package/esm2022/lib/view-context/api/model/badgeDescriptor.mjs +13 -0
- package/esm2022/lib/view-context/api/model/clipboardData.mjs +13 -0
- package/esm2022/lib/view-context/api/model/closeResult.mjs +18 -0
- package/esm2022/lib/view-context/api/model/componentConstraint.mjs +2 -0
- package/esm2022/lib/view-context/api/model/componentModel.mjs +2 -0
- package/esm2022/lib/view-context/api/model/componentModelChange.mjs +13 -0
- package/esm2022/lib/view-context/api/model/dataChange.mjs +2 -0
- package/esm2022/lib/view-context/api/model/dataChangeEvent.mjs +2 -0
- package/esm2022/lib/view-context/api/model/dataChangeKind.mjs +21 -0
- package/esm2022/lib/view-context/api/model/deviceInfo.mjs +13 -0
- package/esm2022/lib/view-context/api/model/downloadedFile.mjs +13 -0
- package/esm2022/lib/view-context/api/model/iconPosition.mjs +21 -0
- package/esm2022/lib/view-context/api/model/imageResource.mjs +8 -0
- package/esm2022/lib/view-context/api/model/link.mjs +20 -0
- package/esm2022/lib/view-context/api/model/messageData.mjs +2 -0
- package/esm2022/lib/view-context/api/model/messageOption.mjs +2 -0
- package/esm2022/lib/view-context/api/model/messageOptionType.mjs +18 -0
- package/esm2022/lib/view-context/api/model/messageResult.mjs +2 -0
- package/esm2022/lib/view-context/api/model/messageTextType.mjs +17 -0
- package/esm2022/lib/view-context/api/model/messageType.mjs +19 -0
- package/esm2022/lib/view-context/api/model/models.mjs +63 -0
- package/esm2022/lib/view-context/api/model/multiComboBoxElement.mjs +13 -0
- package/esm2022/lib/view-context/api/model/multiComboBoxModel.mjs +2 -0
- package/esm2022/lib/view-context/api/model/namedValidator.mjs +19 -0
- package/esm2022/lib/view-context/api/model/openPendingData.mjs +2 -0
- package/esm2022/lib/view-context/api/model/serverRequestExecutionStat.mjs +2 -0
- package/esm2022/lib/view-context/api/model/serverRequestTrack.mjs +2 -0
- package/esm2022/lib/view-context/api/model/serverRequestType.mjs +24 -0
- package/esm2022/lib/view-context/api/model/smartLinkData.mjs +2 -0
- package/esm2022/lib/view-context/api/model/smartLinkMigrationStatus.mjs +8 -0
- package/esm2022/lib/view-context/api/model/statisticRecord.mjs +13 -0
- package/esm2022/lib/view-context/api/model/style.mjs +13 -0
- package/esm2022/lib/view-context/api/model/uiAction.mjs +2 -0
- package/esm2022/lib/view-context/api/model/uiActionButtonDescriptor.mjs +2 -0
- package/esm2022/lib/view-context/api/model/uiActionButtonType.mjs +27 -0
- package/esm2022/lib/view-context/api/model/uiActionConstraint.mjs +13 -0
- package/esm2022/lib/view-context/api/model/uiActionDefinition.mjs +2 -0
- package/esm2022/lib/view-context/api/model/uiActionDefinitionEntry.mjs +2 -0
- package/esm2022/lib/view-context/api/model/uiActionDescriptor.mjs +2 -0
- package/esm2022/lib/view-context/api/model/uiActionDialogDescriptor.mjs +2 -0
- package/esm2022/lib/view-context/api/model/uiActionFeedbackType.mjs +20 -0
- package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +21 -0
- package/esm2022/lib/view-context/api/model/uiActionRequest.mjs +13 -0
- package/esm2022/lib/view-context/api/model/uiActionSchedule.mjs +13 -0
- package/esm2022/lib/view-context/api/model/uiActionTooltip.mjs +22 -0
- package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +2 -0
- package/esm2022/lib/view-context/api/model/uploadWidgetType.mjs +18 -0
- package/esm2022/lib/view-context/api/model/uploadedFile.mjs +2 -0
- package/esm2022/lib/view-context/api/model/valueSet.mjs +2 -0
- package/esm2022/lib/view-context/api/model/view.mjs +2 -0
- package/esm2022/lib/view-context/api/model/viewApiError.mjs +13 -0
- package/esm2022/lib/view-context/api/model/viewConstraint.mjs +2 -0
- package/esm2022/lib/view-context/api/model/viewContext.mjs +2 -0
- package/esm2022/lib/view-context/api/model/viewContextChange.mjs +2 -0
- package/esm2022/lib/view-context/api/model/viewContextData.mjs +2 -0
- package/esm2022/lib/view-context/api/model/viewContextUpdate.mjs +2 -0
- package/esm2022/lib/view-context/api/model/viewData.mjs +2 -0
- package/esm2022/lib/view-context/api/model/viewEventHandler.mjs +8 -0
- package/esm2022/lib/view-context/api/model/viewPlaceholder.mjs +13 -0
- package/esm2022/lib/view-context/api/model/viewState.mjs +22 -0
- package/esm2022/lib/view-context/api/model/viewStateUpdate.mjs +2 -0
- package/esm2022/lib/view-context/api/model/viewType.mjs +18 -0
- package/esm2022/lib/view-context/api/param.mjs +2 -0
- package/esm2022/lib/view-context/api/variables.mjs +9 -0
- package/esm2022/lib/view-context/default-view-components.token.mjs +9 -0
- package/esm2022/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.mjs +20 -0
- package/esm2022/lib/view-context/message-dialog/message-dialog.component.mjs +93 -0
- package/esm2022/lib/view-context/projects.mjs +29 -0
- package/esm2022/lib/view-context/property-definition-data.mjs +2 -0
- package/esm2022/lib/view-context/reuse-router-slot.token.mjs +4 -0
- package/esm2022/lib/view-context/smart-embedded-slot.directive.mjs +57 -0
- package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.component.mjs +199 -0
- package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.constants.mjs +72 -0
- package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.service.mjs +21 -0
- package/esm2022/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +30 -0
- package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component.mjs +198 -0
- package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.mjs +95 -0
- package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.mjs +134 -0
- package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.mjs +12 -0
- package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component.mjs +256 -0
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +77 -0
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +54 -0
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.mjs +60 -0
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +106 -0
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +60 -0
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +132 -0
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +58 -0
- package/esm2022/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.mjs +33 -0
- package/esm2022/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.mjs +215 -0
- package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +319 -0
- package/esm2022/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +185 -0
- package/esm2022/lib/view-context/smart-ui-action/ui-action.model.mjs +7 -0
- package/esm2022/lib/view-context/smart-ui-action/ui-action.service.mjs +235 -0
- package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +77 -0
- package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +35 -0
- package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +74 -0
- package/esm2022/lib/view-context/smart-view-context.interceptor.mjs +63 -0
- package/esm2022/lib/view-context/smart-view-context.model.mjs +2 -0
- package/esm2022/lib/view-context/smart-view-context.module.mjs +397 -0
- package/esm2022/lib/view-context/smart-view-context.service.mjs +1074 -0
- package/esm2022/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +41 -0
- package/esm2022/lib/view-context/utility/componentLibrary.mjs +9 -0
- package/esm2022/lib/view-context/utility/smart-object-utility.mjs +44 -0
- package/esm2022/lib/view-context/utility/smart-style-utility.mjs +68 -0
- package/esm2022/lib/view-context/value-api/api/api.mjs +4 -0
- package/esm2022/lib/view-context/value-api/api/value.service.mjs +138 -0
- package/esm2022/lib/view-context/value-api/api.module.mjs +40 -0
- package/esm2022/lib/view-context/value-api/configuration.mjs +91 -0
- package/esm2022/lib/view-context/value-api/encoder.mjs +19 -0
- package/esm2022/lib/view-context/value-api/index.mjs +7 -0
- package/esm2022/lib/view-context/value-api/model/genericValue.mjs +13 -0
- package/esm2022/lib/view-context/value-api/model/models.mjs +11 -0
- package/esm2022/lib/view-context/value-api/model/value.mjs +13 -0
- package/esm2022/lib/view-context/value-api/model/valueSetData.mjs +2 -0
- package/esm2022/lib/view-context/value-api/model/valueSetDefinition.mjs +2 -0
- package/esm2022/lib/view-context/value-api/model/valueSetDefinitionData.mjs +2 -0
- package/esm2022/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +13 -0
- package/esm2022/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +24 -0
- package/esm2022/lib/view-context/value-api/model/valueSetExpression.mjs +2 -0
- package/esm2022/lib/view-context/value-api/model/valueSetOperand.mjs +2 -0
- package/esm2022/lib/view-context/value-api/model/valueSetOperation.mjs +19 -0
- package/esm2022/lib/view-context/value-api/param.mjs +2 -0
- package/esm2022/lib/view-context/value-api/variables.mjs +9 -0
- package/esm2022/lib/view-context/view-handler-resolution.mjs +21 -0
- package/esm2022/lib/view-context/view-op.mjs +41 -0
- package/esm2022/lib/view-context/view-slot-resolution.mjs +28 -0
- package/esm2022/projects.mjs +30 -0
- package/esm2022/smartbit4all-ng-client.mjs +5 -0
- package/fesm2022/smartbit4all-ng-client.mjs +8990 -4553
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/session/api/model/accountInfo.d.ts +2 -0
- package/lib/session/projects.d.ts +3 -0
- package/lib/session/smart-backend-bootstrap.config.d.ts +65 -0
- package/lib/session/smart-backend-bootstrap.service.d.ts +55 -0
- package/lib/session/smart-default-error-ui.service.d.ts +90 -0
- package/lib/session/smart-error-catching.interceptor.d.ts +4 -1
- package/lib/session/smart-session-handler.service.d.ts +2 -1
- package/lib/session/smart-session.service.d.ts +16 -1
- package/lib/session/smart-timer/smart-session-timer.component.d.ts +3 -1
- package/lib/smart-client/projects.d.ts +0 -1
- package/lib/smart-client/smart-component-api-client.d.ts +45 -19
- package/lib/smart-client/smart.component.d.ts +7 -5
- package/lib/smart-client/smart.service.d.ts +4 -5
- package/lib/smart-component-layout/api/model/componentWidgetType.d.ts +3 -1
- package/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.d.ts +19 -0
- package/lib/smart-component-layout/api/model/models.d.ts +3 -0
- package/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.d.ts +2 -0
- package/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.d.ts +6 -0
- package/{src/lib/smart-chart/smart-chart/api/model/chartData.d.ts → lib/smart-component-layout/api/model/toolbarDirection.d.ts} +5 -6
- package/lib/smart-component-layout/api/model/toolbarProperties.d.ts +16 -0
- package/lib/smart-component-layout/smart-component-layout-utility.d.ts +9 -1
- package/lib/smart-component-layout/smart-component-layout.component.d.ts +31 -5
- package/lib/smart-component-layout/smart-component-layout.module.d.ts +4 -1
- package/lib/smart-diagram/api/api/api.d.ts +3 -0
- package/lib/smart-diagram/api/api/diagramService.service.d.ts +36 -0
- package/lib/smart-diagram/api/encoder.d.ts +11 -0
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramColor.d.ts +2 -2
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDataContainer.d.ts +2 -3
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDataItem.d.ts +3 -3
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDataSet.d.ts +4 -4
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDescriptor.d.ts +13 -9
- package/{src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramUiModel.d.ts → lib/smart-diagram/api/model/diagramModel.d.ts} +5 -4
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramShape.d.ts +2 -2
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/drawTime.d.ts +2 -2
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/labelText.d.ts +2 -2
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/models.d.ts +1 -2
- package/lib/smart-diagram/component/default-smart-diagram-options.provider.d.ts +33 -0
- package/lib/smart-diagram/component/smart-diagram.component.d.ts +43 -0
- package/lib/smart-diagram/component/smart-diagram.module.d.ts +11 -0
- package/lib/smart-diagram/component/smart-diagram.util.d.ts +1 -0
- package/lib/smart-diagram/projects.d.ts +4 -0
- package/lib/smart-dialog/smartdialog.model.d.ts +2 -1
- package/lib/smart-dialog/smartdialog.module.d.ts +1 -2
- package/lib/smart-dialog/smartdialog.service.d.ts +1 -3
- package/lib/smart-expandable-section/expandable-section.component.d.ts +3 -1
- package/lib/smart-expandable-section/expandable-section.model.d.ts +1 -0
- package/lib/smart-expandable-section/smart-expandable-section.module.d.ts +2 -1
- package/lib/smart-filter-editor/smart-filter-editor.service.d.ts +4 -2
- package/{src/lib/smart-chart/smart-chart/api/model/chartOrientation.d.ts → lib/smart-form/api/model/dateFieldProperties.d.ts} +6 -7
- package/lib/smart-form/api/model/fileUploaderProperties.d.ts +20 -0
- package/lib/smart-form/api/model/imageProperties.d.ts +15 -0
- package/lib/smart-form/api/model/models.d.ts +7 -0
- package/lib/smart-form/api/model/multiFileUploaderProperties.d.ts +19 -0
- package/lib/smart-form/api/model/recordingUploaderProperties.d.ts +20 -0
- package/lib/smart-form/api/model/selectionDefinition.d.ts +17 -0
- package/lib/smart-form/api/model/smartFormWidgetType.d.ts +4 -1
- package/lib/smart-form/api/model/smartWidgetDefinition.d.ts +5 -0
- package/lib/smart-form/api/model/textBoxProperties.d.ts +15 -0
- package/{src/lib/smart-chart/smart-chart/api/model/chartValue.d.ts → lib/smart-form/api/model/textFieldProperties.d.ts} +4 -6
- package/lib/smart-form/api/model/valueChangeMode.d.ts +3 -2
- package/lib/smart-form/projects.d.ts +3 -0
- package/lib/smart-form/services/smartform.layout-definition.service.d.ts +6 -2
- package/lib/smart-form/services/smartform.service.d.ts +3 -2
- package/lib/smart-form/smartfileuploader/smartfileuploader.component.d.ts +19 -3
- package/lib/smart-form/smartform.component.d.ts +3 -2
- package/lib/smart-form/smartform.form-model.d.ts +160 -11
- package/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.d.ts +54 -0
- package/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.d.ts +57 -0
- package/lib/smart-form/widgets/components/smart-voice-recorder/smart-voice-recorder.component.d.ts +50 -0
- package/lib/smart-form/widgets/smartformwidget/smartformwidget.component.d.ts +38 -7
- package/lib/smart-generic-pages/acl-editing-view/acl-editing-view.component.d.ts +21 -0
- package/lib/smart-generic-pages/api/platform/acl/model/aCL.d.ts +18 -0
- package/lib/smart-generic-pages/api/platform/acl/model/aCLEntry.d.ts +54 -0
- package/lib/smart-generic-pages/api/platform/acl/model/objectValidationSeverity.d.ts +19 -0
- package/lib/smart-generic-pages/api/platform/acl/model/subject.d.ts +24 -0
- package/lib/smart-generic-pages/api/platform/api-default/objectHistoryRangeData.d.ts +2 -0
- package/lib/smart-generic-pages/api/platform/searchpage/model/searchPageModel.d.ts +27 -0
- package/lib/smart-generic-pages/api/platform/subjectselector/model/subjectSelectorPageModel.d.ts +14 -0
- package/lib/smart-generic-pages/api/platform/validation/model/validationItem.d.ts +17 -0
- package/lib/smart-generic-pages/api/platform/validation/model/validationResultPageModel.d.ts +18 -0
- package/lib/smart-generic-pages/generic-page/generic-page.component.d.ts +12 -0
- package/lib/smart-generic-pages/invalid-smartlink/invalid-smartlink.component.d.ts +11 -0
- package/lib/smart-generic-pages/no-permission-page/no-permission-page.component.d.ts +11 -0
- package/lib/smart-generic-pages/projects.d.ts +9 -0
- package/lib/smart-generic-pages/search-page/search-page.component.d.ts +25 -0
- package/lib/smart-generic-pages/smart-generic-pages.module.d.ts +19 -0
- package/lib/smart-generic-pages/subject-selector/subject-selector.component.d.ts +17 -0
- package/lib/smart-generic-pages/validation-result-page/validation-result-page.component.d.ts +25 -0
- package/lib/smart-grid/api/grid-api/api/grid.service.d.ts +27 -6
- package/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.d.ts +4 -0
- package/lib/smart-grid/api/grid-api/model/gridExportDescriptor.d.ts +2 -2
- package/lib/smart-grid/api/grid-api/model/gridModel.d.ts +2 -0
- package/lib/smart-grid/api/grid-api/model/gridSelectionChange.d.ts +6 -0
- package/lib/smart-grid/components/generic-component/expanded-row-renderer.component.d.ts +21 -0
- package/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.d.ts +1 -0
- package/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.d.ts +1 -0
- package/lib/smart-grid/smart-grid-toolbar-util.d.ts +1 -0
- package/lib/smart-grid/smart-grid.component.d.ts +20 -6
- package/lib/smart-grid/smart-grid.module.d.ts +20 -21
- package/lib/smart-grid/smart-grid.service.d.ts +2 -0
- package/lib/smart-icon/projects.d.ts +2 -0
- package/lib/smart-icon/smart-icon/smart-icon.component.d.ts +10 -4
- package/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.d.ts +12 -0
- package/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.d.ts +14 -0
- package/lib/smart-icon/smart-icon.module.d.ts +8 -5
- package/lib/smart-map/abstract-map.d.ts +1 -1
- package/lib/smart-navigation/smart-navigation.interface.d.ts +1 -7
- package/lib/smart-navigation/smart-navigation.service.d.ts +2 -8
- package/lib/smart-ng-client.module.d.ts +3 -4
- package/lib/smart-tab-group/projects.d.ts +0 -4
- package/lib/smart-tab-group/smart-tab-group.module.d.ts +5 -8
- package/lib/smart-table/tables/material-table/material-table.component.d.ts +2 -3
- package/lib/smart-table/tables/mobile-table/mobile-table.component.d.ts +1 -2
- package/lib/smart-table/tables/table.d.ts +5 -5
- package/lib/smart-tree/smarttree-generic.service.d.ts +0 -1
- package/lib/smart-tree/smarttree.component.d.ts +1 -0
- package/lib/smart-tree/smarttree.model.d.ts +1 -0
- package/lib/smart-tree/smarttree.service.d.ts +1 -0
- package/lib/view-context/api/api/view.service.d.ts +14 -13
- package/lib/view-context/api/api-default/invocationRun.d.ts +2 -0
- package/lib/view-context/api/model/backgroundProcessInfo.d.ts +25 -0
- package/lib/view-context/api/model/componentModel.d.ts +5 -0
- package/lib/view-context/api/model/deviceInfo.d.ts +4 -0
- package/lib/view-context/api/model/iconPosition.d.ts +2 -1
- package/lib/view-context/api/model/imageResource.d.ts +2 -0
- package/lib/view-context/api/model/messageOption.d.ts +2 -0
- package/lib/view-context/api/model/models.d.ts +6 -0
- package/lib/view-context/api/model/multiComboBoxElement.d.ts +16 -0
- package/lib/view-context/api/model/multiComboBoxModel.d.ts +16 -0
- package/lib/view-context/api/model/namedValidator.d.ts +1 -0
- package/lib/view-context/api/model/smartLinkData.d.ts +3 -0
- package/lib/view-context/api/model/uiAction.d.ts +8 -0
- package/lib/view-context/api/model/uiActionDefinition.d.ts +19 -0
- package/lib/view-context/api/model/uiActionDefinitionEntry.d.ts +18 -0
- package/lib/view-context/api/model/uiActionDescriptor.d.ts +4 -0
- package/lib/view-context/api/model/uiActionRequest.d.ts +3 -0
- package/lib/view-context/api/model/uiActionSchedule.d.ts +14 -0
- package/lib/view-context/api/model/uiActionUploadDescriptor.d.ts +2 -0
- package/lib/view-context/api/model/view.d.ts +7 -0
- package/lib/view-context/api/model/viewContext.d.ts +1 -0
- package/lib/view-context/api/model/viewData.d.ts +2 -0
- package/lib/view-context/api/model/viewEventHandler.d.ts +5 -0
- package/lib/view-context/api/model/viewPlaceholder.d.ts +1 -0
- package/lib/view-context/default-view-components.token.d.ts +18 -0
- package/lib/view-context/message-dialog/message-dialog.component.d.ts +1 -0
- package/lib/view-context/projects.d.ts +8 -3
- package/lib/view-context/reuse-router-slot.token.d.ts +3 -0
- package/lib/view-context/smart-embedded-slot.directive.d.ts +20 -0
- package/lib/view-context/smart-ui-action/components/menu/menu.component.d.ts +6 -2
- package/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.d.ts +32 -0
- package/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.d.ts +40 -0
- package/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.d.ts +3 -0
- package/lib/view-context/smart-ui-action/{dialogs/ui-action-file-upload-dialog → components/upload-widget}/voice-record-widget/voice-record-widget.component.d.ts +15 -6
- package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.d.ts +1 -2
- package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.d.ts +2 -16
- package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.d.ts +3 -3
- package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.d.ts +1 -2
- package/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.d.ts +13 -0
- package/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.d.ts +14 -7
- package/lib/view-context/smart-ui-action/ui-action-toolbar.component.d.ts +27 -3
- package/lib/view-context/smart-ui-action/ui-action.service.d.ts +4 -3
- package/lib/view-context/smart-view-context-dialog.service.d.ts +1 -3
- package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.d.ts +1 -2
- package/lib/view-context/smart-view-context.model.d.ts +7 -2
- package/lib/view-context/smart-view-context.module.d.ts +74 -65
- package/lib/view-context/smart-view-context.service.d.ts +55 -8
- package/lib/view-context/smart-view-redirect/smart-view-redirect.d.ts +3 -1
- package/lib/view-context/view-handler-resolution.d.ts +11 -0
- package/lib/view-context/view-op.d.ts +18 -0
- package/lib/view-context/view-slot-resolution.d.ts +27 -0
- package/package.json +16 -18
- package/projects.d.ts +2 -0
- package/smartbit4all-ng-client-6.0.1.tgz +0 -0
- package/fesm2022/smartbit4all-ng-client-src-lib-smart-chart.mjs +0 -686
- package/fesm2022/smartbit4all-ng-client-src-lib-smart-chart.mjs.map +0 -1
- package/lib/smart-client/smart-authentication.service.d.ts +0 -15
- package/lib/smart-tab-group/smart-tab-group.component.d.ts +0 -21
- package/lib/smart-tab-group/smart-tab-group.service.d.ts +0 -6
- package/lib/smart-tab-group/tab-content/tab-content.component.d.ts +0 -14
- package/lib/smart-tab-group/tab-group-simplified/tab-group.component.d.ts +0 -29
- package/lib/smart-tab-group/tabTile.model.d.ts +0 -8
- package/lib/view-context/smart-ui-action/components/action-badge/action-badge.component.d.ts +0 -12
- package/smartbit4all-ng-client-5.0.21.tgz +0 -0
- package/src/lib/smart-chart/index.d.ts +0 -5
- package/src/lib/smart-chart/smart-chart/api/model/chartDescriptor.d.ts +0 -37
- package/src/lib/smart-chart/smart-chart/api/model/chartType.d.ts +0 -21
- package/src/lib/smart-chart/smart-chart/api/model/models.d.ts +0 -6
- package/src/lib/smart-chart/smart-chart/api/model/pieChartLegendPosition.d.ts +0 -16
- package/src/lib/smart-chart/smart-chart/default-chart-options.provider.d.ts +0 -31
- package/src/lib/smart-chart/smart-chart/smart-chart.component.d.ts +0 -33
- package/src/lib/smart-chart/smart-chart/smart-chart.module.d.ts +0 -11
- package/src/lib/smart-chart/smart-chart/smart-chart2/api/api/api.d.ts +0 -1
- package/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataSetConstructionInstruction.d.ts +0 -21
- package/src/lib/smart-chart/smart-chart-projects.d.ts +0 -5
- package/src/lib/smart-chart/view-context/utility/componentLibrary.d.ts +0 -6
- /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/api.module.d.ts +0 -0
- /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/configuration.d.ts +0 -0
- /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/index.d.ts +0 -0
- /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/param.d.ts +0 -0
- /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/variables.d.ts +0 -0
- /package/lib/view-context/smart-ui-action/{dialogs/ui-action-file-upload-dialog → components/upload-widget}/photo-capture-widget/photo-capture-widget.component.d.ts +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
2
|
+
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
+
import { MatCommonModule } from '@angular/material/core';
|
|
5
|
+
import { MatExpansionModule } from '@angular/material/expansion';
|
|
6
|
+
import { BrowserModule } from '@angular/platform-browser';
|
|
7
|
+
import { SmartdialogModule } from '../smart-dialog/projects';
|
|
8
|
+
import { SmartIconModule } from '../smart-icon/projects';
|
|
9
|
+
import { SmartCookieService } from './cookie-service/smart-cookie.service';
|
|
10
|
+
import { SmartErrorCatchingInterceptor } from './smart-error-catching.interceptor';
|
|
11
|
+
import { SmartHeaderMaintainerInterceptor } from './smart-header-maintainer.interceptor';
|
|
12
|
+
import { SmartSessionService } from './smart-session.service';
|
|
13
|
+
import { SmartSessionTimerComponent } from './smart-timer/smart-session-timer.component';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
export class SmartSessionModule {
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
17
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionModule, declarations: [SmartSessionTimerComponent], imports: [BrowserModule, MatCommonModule, MatExpansionModule, MatButtonModule, SmartIconModule], exports: [SmartSessionTimerComponent] }); }
|
|
18
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionModule, providers: [
|
|
19
|
+
SmartCookieService,
|
|
20
|
+
SmartSessionService,
|
|
21
|
+
SmartdialogModule,
|
|
22
|
+
{
|
|
23
|
+
provide: HTTP_INTERCEPTORS,
|
|
24
|
+
useClass: SmartErrorCatchingInterceptor,
|
|
25
|
+
multi: true,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
provide: HTTP_INTERCEPTORS,
|
|
29
|
+
useClass: SmartHeaderMaintainerInterceptor,
|
|
30
|
+
multi: true,
|
|
31
|
+
},
|
|
32
|
+
], imports: [BrowserModule, MatCommonModule, MatExpansionModule, MatButtonModule, SmartIconModule] }); }
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionModule, decorators: [{
|
|
35
|
+
type: NgModule,
|
|
36
|
+
args: [{
|
|
37
|
+
declarations: [SmartSessionTimerComponent],
|
|
38
|
+
imports: [BrowserModule, MatCommonModule, MatExpansionModule, MatButtonModule, SmartIconModule],
|
|
39
|
+
exports: [SmartSessionTimerComponent],
|
|
40
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
41
|
+
providers: [
|
|
42
|
+
SmartCookieService,
|
|
43
|
+
SmartSessionService,
|
|
44
|
+
SmartdialogModule,
|
|
45
|
+
{
|
|
46
|
+
provide: HTTP_INTERCEPTORS,
|
|
47
|
+
useClass: SmartErrorCatchingInterceptor,
|
|
48
|
+
multi: true,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
provide: HTTP_INTERCEPTORS,
|
|
52
|
+
useClass: SmartHeaderMaintainerInterceptor,
|
|
53
|
+
multi: true,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
}]
|
|
57
|
+
}] });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL3NtYXJ0LXNlc3Npb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQXVCekYsTUFBTSxPQUFPLGtCQUFrQjsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBcEJkLDBCQUEwQixhQUMvQixhQUFhLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxlQUFlLGFBQ3BGLDBCQUEwQjtnSEFrQnpCLGtCQUFrQixhQWhCbEI7WUFDVCxrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQjtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixRQUFRLEVBQUUsNkJBQTZCO2dCQUN2QyxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLGdDQUFnQztnQkFDMUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLFlBakJTLGFBQWEsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLGVBQWU7OzRGQW1CbkYsa0JBQWtCO2tCQXJCOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDMUMsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDO29CQUMvRixPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLFNBQVMsRUFBRTt3QkFDVCxrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQjs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUsNkJBQTZCOzRCQUN2QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUsZ0NBQWdDOzRCQUMxQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEV4cGFuc2lvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTbWFydGRpYWxvZ01vZHVsZSB9IGZyb20gJy4uL3NtYXJ0LWRpYWxvZy9wcm9qZWN0cyc7XG5pbXBvcnQgeyBTbWFydEljb25Nb2R1bGUgfSBmcm9tICcuLi9zbWFydC1pY29uL3Byb2plY3RzJztcbmltcG9ydCB7IFNtYXJ0Q29va2llU2VydmljZSB9IGZyb20gJy4vY29va2llLXNlcnZpY2Uvc21hcnQtY29va2llLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTbWFydEVycm9yQ2F0Y2hpbmdJbnRlcmNlcHRvciB9IGZyb20gJy4vc21hcnQtZXJyb3ItY2F0Y2hpbmcuaW50ZXJjZXB0b3InO1xuaW1wb3J0IHsgU21hcnRIZWFkZXJNYWludGFpbmVySW50ZXJjZXB0b3IgfSBmcm9tICcuL3NtYXJ0LWhlYWRlci1tYWludGFpbmVyLmludGVyY2VwdG9yJztcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LXNlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBTbWFydFNlc3Npb25UaW1lckNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtdGltZXIvc21hcnQtc2Vzc2lvbi10aW1lci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTbWFydFNlc3Npb25UaW1lckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtCcm93c2VyTW9kdWxlLCBNYXRDb21tb25Nb2R1bGUsIE1hdEV4cGFuc2lvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBTbWFydEljb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbU21hcnRTZXNzaW9uVGltZXJDb21wb25lbnRdLFxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG4gIHByb3ZpZGVyczogW1xuICAgIFNtYXJ0Q29va2llU2VydmljZSxcbiAgICBTbWFydFNlc3Npb25TZXJ2aWNlLFxuICAgIFNtYXJ0ZGlhbG9nTW9kdWxlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxuICAgICAgdXNlQ2xhc3M6IFNtYXJ0RXJyb3JDYXRjaGluZ0ludGVyY2VwdG9yLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgIHVzZUNsYXNzOiBTbWFydEhlYWRlck1haW50YWluZXJJbnRlcmNlcHRvcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0U2Vzc2lvbk1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { lastValueFrom, Subject } from 'rxjs';
|
|
4
|
+
import { SmartSubject } from '../smart-subject/projects';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./api";
|
|
7
|
+
import * as i2 from "./cookie-service/smart-cookie.service";
|
|
8
|
+
export class SmartSessionService {
|
|
9
|
+
get sessionInfoData() {
|
|
10
|
+
return this._sessionInfoData;
|
|
11
|
+
}
|
|
12
|
+
set sessionInfoData(sessionInfoData) {
|
|
13
|
+
let expiracyChanged = this.sessionInfoData?.expiration !== sessionInfoData?.expiration;
|
|
14
|
+
this._sessionInfoData = sessionInfoData;
|
|
15
|
+
if (expiracyChanged) {
|
|
16
|
+
this.sessionExpiracyChanged.next();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
constructor(apiService, cookieService) {
|
|
20
|
+
this.apiService = apiService;
|
|
21
|
+
this.cookieService = cookieService;
|
|
22
|
+
this._destroy$ = new Subject();
|
|
23
|
+
this.isAuthenticated = false;
|
|
24
|
+
this.authenticationStateChanged = new SmartSubject(this._destroy$);
|
|
25
|
+
this.headerParams = new Array();
|
|
26
|
+
// Locale
|
|
27
|
+
this.localStorageLocaleName = 'locale';
|
|
28
|
+
this.localeChanged = new SmartSubject(this._destroy$);
|
|
29
|
+
this.sessionExpiracyChanged = new SmartSubject(this._destroy$);
|
|
30
|
+
}
|
|
31
|
+
ngOnDestroy() {
|
|
32
|
+
this._destroy$.next();
|
|
33
|
+
this._destroy$.complete();
|
|
34
|
+
}
|
|
35
|
+
setSessionHandlerService(smartSessionHandlerService) {
|
|
36
|
+
this.sessionHandlerService = smartSessionHandlerService;
|
|
37
|
+
}
|
|
38
|
+
async handleSessionError(sessionError) {
|
|
39
|
+
if (this.sessionHandlerService) {
|
|
40
|
+
return await this.sessionHandlerService.handleSessionError(sessionError);
|
|
41
|
+
}
|
|
42
|
+
throw new Error(`sessionHandlerService was not initialized. Error: ${sessionError.code}`);
|
|
43
|
+
}
|
|
44
|
+
addHeaderParam(headerParam) {
|
|
45
|
+
if (this.headerParams.find((h) => h.headerName === headerParam.headerName)) {
|
|
46
|
+
let index = this.headerParams.findIndex((h) => h.headerName === headerParam.headerName);
|
|
47
|
+
this.headerParams[index].value = headerParam.value;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.headerParams.push(headerParam);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
setUpTokenForSessionService() {
|
|
54
|
+
this.addHeaderParam({
|
|
55
|
+
headerName: 'Authorization',
|
|
56
|
+
value: `Bearer ${this.token}`,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Hydrates the session with an externally obtained SID, bypassing
|
|
61
|
+
* `initialize()`'s backend round-trip. Used by the
|
|
62
|
+
* `SmartBackendBootstrapService.bootstrapWith()` flow when a host
|
|
63
|
+
* (e.g. native mobile shell) hands over an already-authenticated session.
|
|
64
|
+
*
|
|
65
|
+
* Persists the SID to localStorage + cookie so that a page reload can
|
|
66
|
+
* rehydrate the session through `initialize()`'s regular
|
|
67
|
+
* `tokenFromLocalStorage === tokenFromCookies` path. The optional
|
|
68
|
+
* refreshToken is persisted to enable autonomous refresh via
|
|
69
|
+
* `refreshSession()` when the SID expires.
|
|
70
|
+
*/
|
|
71
|
+
setSessionToken(token, refreshToken) {
|
|
72
|
+
this.token = token;
|
|
73
|
+
this.setUpTokenForSessionService();
|
|
74
|
+
if (this.cookieName) {
|
|
75
|
+
localStorage.setItem('token', token);
|
|
76
|
+
this.cookieService.set(this.cookieName, token);
|
|
77
|
+
if (refreshToken) {
|
|
78
|
+
localStorage.setItem('refreshToken', refreshToken);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
setUrl(url) {
|
|
83
|
+
this.basePath = url;
|
|
84
|
+
}
|
|
85
|
+
getBasePath() {
|
|
86
|
+
if (!this.basePath) {
|
|
87
|
+
throw new Error('BasePath has not been set in SmartSessionService!');
|
|
88
|
+
}
|
|
89
|
+
return this.basePath;
|
|
90
|
+
}
|
|
91
|
+
setCookieName(name) {
|
|
92
|
+
this.cookieName = name;
|
|
93
|
+
}
|
|
94
|
+
saveTokenToLocalStorage() {
|
|
95
|
+
if (this.sessionInfoData && this.cookieName) {
|
|
96
|
+
localStorage.setItem('token', this.sessionInfoData.sid);
|
|
97
|
+
if (this.sessionInfoData.refreshToken &&
|
|
98
|
+
this.sessionInfoData.refreshToken !== localStorage.getItem('refreshToken')) {
|
|
99
|
+
localStorage.setItem('refreshToken', this.sessionInfoData.refreshToken);
|
|
100
|
+
}
|
|
101
|
+
this.cookieService.set(this.cookieName, this.token);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
setAuthenticationStatus() {
|
|
105
|
+
const previous = this.isAuthenticated;
|
|
106
|
+
if (this.sessionInfoData && this.sessionInfoData.authentications) {
|
|
107
|
+
this.isAuthenticated = this.sessionInfoData.authentications.length > 0;
|
|
108
|
+
}
|
|
109
|
+
// Emit only on actual transitions. Re-emitting on every session refresh
|
|
110
|
+
// would fan out into duplicated host work (e.g. logout/login navigation
|
|
111
|
+
// subscribers re-firing their flow each time a startSession() returns).
|
|
112
|
+
if (previous !== this.isAuthenticated) {
|
|
113
|
+
this.authenticationStateChanged.next(this.isAuthenticated);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
checkStatements() {
|
|
117
|
+
if (!this.basePath) {
|
|
118
|
+
throw new Error('The url of the backend api has not been set!');
|
|
119
|
+
}
|
|
120
|
+
else if (!this.cookieName) {
|
|
121
|
+
throw new Error('The name of the cookie required by the backend has not been set!');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async initialize() {
|
|
125
|
+
if (this.initializeRunning) {
|
|
126
|
+
return this.initializeRunning.toPromise();
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this.initializeRunning = new SmartSubject(this._destroy$);
|
|
130
|
+
try {
|
|
131
|
+
this.checkStatements();
|
|
132
|
+
let tokenFromLocalStorage = localStorage.getItem('token');
|
|
133
|
+
let tokenFromCookies = this.cookieService.get(this.cookieName);
|
|
134
|
+
if (tokenFromLocalStorage &&
|
|
135
|
+
tokenFromCookies &&
|
|
136
|
+
tokenFromLocalStorage === tokenFromCookies) {
|
|
137
|
+
this.token = tokenFromLocalStorage;
|
|
138
|
+
this.setUpTokenForSessionService();
|
|
139
|
+
try {
|
|
140
|
+
await this.getSession();
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
await this.startSession();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
await this.clearAndStartNewSession();
|
|
148
|
+
}
|
|
149
|
+
if (this.sessionInfoData && this.sessionInfoData.locale) {
|
|
150
|
+
localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);
|
|
151
|
+
this.localeChanged.next();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
finally {
|
|
155
|
+
this.initializeRunning.complete();
|
|
156
|
+
this.initializeRunning = undefined;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async startSession() {
|
|
161
|
+
let sessionInfo = await this.apiService.startSession().toPromise();
|
|
162
|
+
if (sessionInfo) {
|
|
163
|
+
this.updateSessionInfo(sessionInfo);
|
|
164
|
+
}
|
|
165
|
+
return this.sessionInfoData;
|
|
166
|
+
}
|
|
167
|
+
async getSession() {
|
|
168
|
+
let sessionInfo = await this.apiService.getSession().toPromise();
|
|
169
|
+
if (sessionInfo) {
|
|
170
|
+
this.sessionInfoData = sessionInfo;
|
|
171
|
+
this.token = sessionInfo.sid;
|
|
172
|
+
this.saveTokenToLocalStorage();
|
|
173
|
+
this.setAuthenticationStatus();
|
|
174
|
+
}
|
|
175
|
+
return this.sessionInfoData;
|
|
176
|
+
}
|
|
177
|
+
refreshSession() {
|
|
178
|
+
if (this.runningRefresh) {
|
|
179
|
+
return this.runningRefresh;
|
|
180
|
+
}
|
|
181
|
+
this.runningRefresh = this.doRefreshSession();
|
|
182
|
+
return this.runningRefresh;
|
|
183
|
+
}
|
|
184
|
+
async doRefreshSession() {
|
|
185
|
+
try {
|
|
186
|
+
let refreshToken = localStorage.getItem('refreshToken');
|
|
187
|
+
if (!refreshToken) {
|
|
188
|
+
return await this.startSession();
|
|
189
|
+
}
|
|
190
|
+
try {
|
|
191
|
+
const sessionInfo = await lastValueFrom(this.apiService.refreshSession({ refreshToken }));
|
|
192
|
+
if (sessionInfo) {
|
|
193
|
+
this.updateSessionInfo(sessionInfo);
|
|
194
|
+
return sessionInfo;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
if (this.isInvalidRefreshTokenError(error)) {
|
|
199
|
+
await this.clearAndStartNewSession();
|
|
200
|
+
// still throw the error, so the error can be handled in the caller
|
|
201
|
+
}
|
|
202
|
+
throw error;
|
|
203
|
+
}
|
|
204
|
+
// no sessionInfo returned
|
|
205
|
+
throw new Error('Unable to refresh session');
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
this.runningRefresh = undefined;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
updateSessionInfo(sessionInfo) {
|
|
212
|
+
this.sessionInfoData = sessionInfo;
|
|
213
|
+
this.token = sessionInfo.sid;
|
|
214
|
+
this.saveTokenToLocalStorage();
|
|
215
|
+
// Install the Authorization header BEFORE notifying subscribers. Subject
|
|
216
|
+
// emission is synchronous, and host subscribers (e.g. auth-state listeners
|
|
217
|
+
// that immediately initiate BFF calls) execute their sync prologue —
|
|
218
|
+
// including XHR send() — before this method returns. Installing the header
|
|
219
|
+
// first guarantees those synchronous downstream requests carry the new
|
|
220
|
+
// token, preventing a 'session.security.nocontext' / re-auth cascade.
|
|
221
|
+
this.setUpTokenForSessionService();
|
|
222
|
+
this.setAuthenticationStatus();
|
|
223
|
+
}
|
|
224
|
+
isInvalidRefreshTokenError(error) {
|
|
225
|
+
return (error instanceof HttpErrorResponse &&
|
|
226
|
+
error.error &&
|
|
227
|
+
error.error.code === 'session.refreshtoken.invalid');
|
|
228
|
+
}
|
|
229
|
+
async getAuthenticationProviders() {
|
|
230
|
+
let providers = await this.apiService
|
|
231
|
+
.getAuthenticationProviders()
|
|
232
|
+
.toPromise();
|
|
233
|
+
this.providers = providers?.authenticationProviders;
|
|
234
|
+
return this.providers;
|
|
235
|
+
}
|
|
236
|
+
async getIsAuthenticated() {
|
|
237
|
+
if (this.sessionInfoData) {
|
|
238
|
+
return this.isAuthenticated;
|
|
239
|
+
}
|
|
240
|
+
await this.getSession();
|
|
241
|
+
return this.isAuthenticated;
|
|
242
|
+
}
|
|
243
|
+
async is2FANecessary() {
|
|
244
|
+
if (this.sessionInfoData) {
|
|
245
|
+
return (this.sessionInfoData.authentications?.some((accountInfo) => accountInfo.twoFA === true) ??
|
|
246
|
+
false);
|
|
247
|
+
}
|
|
248
|
+
await this.getSession();
|
|
249
|
+
return (this.sessionInfoData.authentications?.some((accountInfo) => accountInfo.twoFA === true) ??
|
|
250
|
+
false);
|
|
251
|
+
}
|
|
252
|
+
async clearAndStartNewSession() {
|
|
253
|
+
sessionStorage.clear();
|
|
254
|
+
localStorage.clear();
|
|
255
|
+
this.headerParams = [];
|
|
256
|
+
this.cookieService.delete(this.cookieName);
|
|
257
|
+
await this.startSession();
|
|
258
|
+
}
|
|
259
|
+
getLocale() {
|
|
260
|
+
if (this.sessionInfoData && this.sessionInfoData.locale) {
|
|
261
|
+
if (localStorage.getItem(this.localStorageLocaleName) !== this.sessionInfoData.locale) {
|
|
262
|
+
localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);
|
|
263
|
+
}
|
|
264
|
+
return this.sessionInfoData.locale;
|
|
265
|
+
}
|
|
266
|
+
throw new Error('There is no SessionInfoData or locale is undefined.');
|
|
267
|
+
}
|
|
268
|
+
async changeLocale(locale) {
|
|
269
|
+
this.sessionInfoData = await this.apiService.setLocale(locale).toPromise();
|
|
270
|
+
if (this.sessionInfoData && this.sessionInfoData.locale) {
|
|
271
|
+
localStorage.setItem(this.localStorageLocaleName, this.sessionInfoData.locale);
|
|
272
|
+
this.localeChanged.next();
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionService, deps: [{ token: i1.SessionService }, { token: i2.SmartCookieService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
276
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionService, providedIn: 'root' }); }
|
|
277
|
+
}
|
|
278
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionService, decorators: [{
|
|
279
|
+
type: Injectable,
|
|
280
|
+
args: [{
|
|
281
|
+
providedIn: 'root',
|
|
282
|
+
}]
|
|
283
|
+
}], ctorParameters: () => [{ type: i1.SessionService }, { type: i2.SmartCookieService }] });
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC1zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVU5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFTekQsTUFBTSxPQUFPLG1CQUFtQjtJQU05QixJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQVksZUFBZSxDQUFDLGVBQTRDO1FBQ3RFLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVSxLQUFLLGVBQWUsRUFBRSxVQUFVLENBQUM7UUFFdkYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztRQUV4QyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQW9CRCxZQUNVLFVBQTBCLEVBQzFCLGFBQWlDO1FBRGpDLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFvQjtRQW5DbkMsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBaUIxQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVqQywrQkFBMEIsR0FBcUIsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWhGLGlCQUFZLEdBQXVCLElB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QVMsRUFBRSxDQUFDO1FBQzNFLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hELFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQzsrR0FoVVUsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBcGlFcnJvcixcbiAgQXV0aGVudGljYXRpb25Qcm92aWRlckRhdGEsXG4gIEdldEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzUmVzcG9uc2UsXG4gIFNlc3Npb25JbmZvRGF0YSxcbiAgU2Vzc2lvblNlcnZpY2UsXG59IGZyb20gJy4vYXBpJztcbmltcG9ydCB7IFNtYXJ0Q29va2llU2VydmljZSB9IGZyb20gJy4vY29va2llLXNlcnZpY2Uvc21hcnQtY29va2llLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbkVycm9yLCBTbWFydFNlc3Npb25IYW5kbGVyU2VydmljZSB9IGZyb20gJy4vc21hcnQtc2Vzc2lvbi1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vc21hcnQtc3ViamVjdC9wcm9qZWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUGFyYW0ge1xuICBoZWFkZXJOYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU21hcnRTZXNzaW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgYmFzZVBhdGg/OiBzdHJpbmc7XG4gIHByaXZhdGUgdG9rZW4/OiBzdHJpbmc7XG4gIHByaXZhdGUgX3Nlc3Npb25JbmZvRGF0YT86IFNlc3Npb25JbmZvRGF0YTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyBnZXQgc2Vzc2lvbkluZm9EYXRhKCk6IFNlc3Npb25JbmZvRGF0YSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JbmZvRGF0YTtcbiAgfVxuICBwcml2YXRlIHNldCBzZXNzaW9uSW5mb0RhdGEoc2Vzc2lvbkluZm9EYXRhOiBTZXNzaW9uSW5mb0RhdGEgfCB1bmRlZmluZWQpIHtcbiAgICBsZXQgZXhwaXJhY3lDaGFuZ2VkID0gdGhpcy5zZXNzaW9uSW5mb0RhdGE/LmV4cGlyYXRpb24gIT09IHNlc3Npb25JbmZvRGF0YT8uZXhwaXJhdGlvbjtcblxuICAgIHRoaXMuX3Nlc3Npb25JbmZvRGF0YSA9IHNlc3Npb25JbmZvRGF0YTtcblxuICAgIGlmIChleHBpcmFjeUNoYW5nZWQpIHtcbiAgICAgIHRoaXMuc2Vzc2lvbkV4cGlyYWN5Q2hhbmdlZC5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm92aWRlcnM/OiBBcnJheTxBdXRoZW50aWNhdGlvblByb3ZpZGVyRGF0YT47XG4gIHByaXZhdGUgY29va2llTmFtZT86IHN0cmluZztcbiAgcHVibGljIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBhdXRoZW50aWNhdGlvblN0YXRlQ2hhbmdlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xuXG4gIHB1YmxpYyBoZWFkZXJQYXJhbXM6IEFycmF5PEhlYWRlclBhcmFtPiA9IG5ldyBBcnJheSgpO1xuXG4gIC8vIExvY2FsZVxuICBwcml2YXRlIGxvY2FsU3RvcmFnZUxvY2FsZU5hbWU6IHN0cmluZyA9ICdsb2NhbGUnO1xuICBwdWJsaWMgbG9jYWxlQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xuICBwcml2YXRlIGluaXRpYWxpemVSdW5uaW5nOiBTdWJqZWN0PHZvaWQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJ1bm5pbmdSZWZyZXNoPzogUHJvbWlzZTxTZXNzaW9uSW5mb0RhdGE+O1xuXG4gIHB1YmxpYyBzZXNzaW9uRXhwaXJhY3lDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG5cbiAgcHJpdmF0ZSBzZXNzaW9uSGFuZGxlclNlcnZpY2U/OiBTbWFydFNlc3Npb25IYW5kbGVyU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IFNlc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29va2llU2VydmljZTogU21hcnRDb29raWVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTZXNzaW9uSGFuZGxlclNlcnZpY2Uoc21hcnRTZXNzaW9uSGFuZGxlclNlcnZpY2U6IFNtYXJ0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlKTogdm9pZCB7XG4gICAgdGhpcy5zZXNzaW9uSGFuZGxlclNlcnZpY2UgPSBzbWFydFNlc3Npb25IYW5kbGVyU2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVTZXNzaW9uRXJyb3Ioc2Vzc2lvbkVycm9yOiBTZXNzaW9uRXJyb3IpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5zZXNzaW9uSGFuZGxlclNlcnZpY2UpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNlc3Npb25IYW5kbGVyU2VydmljZS5oYW5kbGVTZXNzaW9uRXJyb3Ioc2Vzc2lvbkVycm9yKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBzZXNzaW9uSGFuZGxlclNlcnZpY2Ugd2FzIG5vdCBpbml0aWFsaXplZC4gRXJyb3I6ICR7c2Vzc2lvbkVycm9yLmNvZGV9YCk7XG4gIH1cblxuICBwdWJsaWMgYWRkSGVhZGVyUGFyYW0oaGVhZGVyUGFyYW06IEhlYWRlclBhcmFtKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGVhZGVyUGFyYW1zLmZpbmQoKGg6IEhlYWRlclBhcmFtKSA9PiBoLmhlYWRlck5hbWUgPT09IGhlYWRlclBhcmFtLmhlYWRlck5hbWUpKSB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLmhlYWRlclBhcmFtcy5maW5kSW5kZXgoXG4gICAgICAgIChoOiBIZWFkZXJQYXJhbSkgPT4gaC5oZWFkZXJOYW1lID09PSBoZWFkZXJQYXJhbS5oZWFkZXJOYW1lXG4gICAgICApO1xuICAgICAgdGhpcy5oZWFkZXJQYXJhbXNbaW5kZXghXS52YWx1ZSA9IGhlYWRlclBhcmFtLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlYWRlclBhcmFtcy5wdXNoKGhlYWRlclBhcmFtKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFVwVG9rZW5Gb3JTZXNzaW9uU2VydmljZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEhlYWRlclBhcmFtKHtcbiAgICAgIGhlYWRlck5hbWU6ICdBdXRob3JpemF0aW9uJyxcbiAgICAgIHZhbHVlOiBgQmVhcmVyICR7dGhpcy50b2tlbiF9YCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIeWRyYXRlcyB0aGUgc2Vzc2lvbiB3aXRoIGFuIGV4dGVybmFsbHkgb2J0YWluZWQgU0lELCBieXBhc3NpbmdcbiAgICogYGluaXRpYWxpemUoKWAncyBiYWNrZW5kIHJvdW5kLXRyaXAuIFVzZWQgYnkgdGhlXG4gICAqIGBTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlLmJvb3RzdHJhcFdpdGgoKWAgZmxvdyB3aGVuIGEgaG9zdFxuICAgKiAoZS5nLiBuYXRpdmUgbW9iaWxlIHNoZWxsKSBoYW5kcyBvdmVyIGFuIGFscmVhZHktYXV0aGVudGljYXRlZCBzZXNzaW9uLlxuICAgKlxuICAgKiBQZXJzaXN0cyB0aGUgU0lEIHRvIGxvY2FsU3RvcmFnZSArIGNvb2tpZSBzbyB0aGF0IGEgcGFnZSByZWxvYWQgY2FuXG4gICAqIHJlaHlkcmF0ZSB0aGUgc2Vzc2lvbiB0aHJvdWdoIGBpbml0aWFsaXplKClgJ3MgcmVndWxhclxuICAgKiBgdG9rZW5Gcm9tTG9jYWxTdG9yYWdlID09PSB0b2tlbkZyb21Db29raWVzYCBwYXRoLiBUaGUgb3B0aW9uYWxcbiAgICogcmVmcmVzaFRva2VuIGlzIHBlcnNpc3RlZCB0byBlbmFibGUgYXV0b25vbW91cyByZWZyZXNoIHZpYVxuICAgKiBgcmVmcmVzaFNlc3Npb24oKWAgd2hlbiB0aGUgU0lEIGV4cGlyZXMuXG4gICAqL1xuICBwdWJsaWMgc2V0U2Vzc2lvblRva2VuKHRva2VuOiBzdHJpbmcsIHJlZnJlc2hUb2tlbj86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLnNldFVwVG9rZW5Gb3JTZXNzaW9uU2VydmljZSgpO1xuICAgIGlmICh0aGlzLmNvb2tpZU5hbWUpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2tlbicsIHRva2VuKTtcbiAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQodGhpcy5jb29raWVOYW1lLCB0b2tlbik7XG4gICAgICBpZiAocmVmcmVzaFRva2VuKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZWZyZXNoVG9rZW4nLCByZWZyZXNoVG9rZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRVcmwodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmJhc2VQYXRoID0gdXJsO1xuICB9XG4gIHB1YmxpYyBnZXRCYXNlUGF0aCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5iYXNlUGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdCYXNlUGF0aCBoYXMgbm90IGJlZW4gc2V0IGluIFNtYXJ0U2Vzc2lvblNlcnZpY2UhJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJhc2VQYXRoO1xuICB9XG5cbiAgcHVibGljIHNldENvb2tpZU5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb29raWVOYW1lID0gbmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZVRva2VuVG9Mb2NhbFN0b3JhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuY29va2llTmFtZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Rva2VuJywgdGhpcy5zZXNzaW9uSW5mb0RhdGEuc2lkKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5zZXNzaW9uSW5mb0RhdGEucmVmcmVzaFRva2VuICYmXG4gICAgICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhLnJlZnJlc2hUb2tlbiAhPT0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlZnJlc2hUb2tlbicpXG4gICAgICApIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JlZnJlc2hUb2tlbicsIHRoaXMuc2Vzc2lvbkluZm9EYXRhLnJlZnJlc2hUb2tlbik7XG4gICAgICB9XG4gICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KHRoaXMuY29va2llTmFtZSwgdGhpcy50b2tlbiEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0QXV0aGVudGljYXRpb25TdGF0dXMoKTogdm9pZCB7XG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmlzQXV0aGVudGljYXRlZDtcbiAgICBpZiAodGhpcy5zZXNzaW9uSW5mb0RhdGEgJiYgdGhpcy5zZXNzaW9uSW5mb0RhdGEuYXV0aGVudGljYXRpb25zKSB7XG4gICAgICB0aGlzLmlzQXV0aGVudGljYXRlZCA9IHRoaXMuc2Vzc2lvbkluZm9EYXRhLmF1dGhlbnRpY2F0aW9ucy5sZW5ndGggPiAwO1xuICAgIH1cbiAgICAvLyBFbWl0IG9ubHkgb24gYWN0dWFsIHRyYW5zaXRpb25zLiBSZS1lbWl0dGluZyBvbiBldmVyeSBzZXNzaW9uIHJlZnJlc2hcbiAgICAvLyB3b3VsZCBmYW4gb3V0IGludG8gZHVwbGljYXRlZCBob3N0IHdvcmsgKGUuZy4gbG9nb3V0L2xvZ2luIG5hdmlnYXRpb25cbiAgICAvLyBzdWJzY3JpYmVycyByZS1maXJpbmcgdGhlaXIgZmxvdyBlYWNoIHRpbWUgYSBzdGFydFNlc3Npb24oKSByZXR1cm5zKS5cbiAgICBpZiAocHJldmlvdXMgIT09IHRoaXMuaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU3RhdGVDaGFuZ2VkLm5leHQodGhpcy5pc0F1dGhlbnRpY2F0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tTdGF0ZW1lbnRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5iYXNlUGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgdXJsIG9mIHRoZSBiYWNrZW5kIGFwaSBoYXMgbm90IGJlZW4gc2V0IScpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuY29va2llTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgbmFtZSBvZiB0aGUgY29va2llIHJlcXVpcmVkIGJ5IHRoZSBiYWNrZW5kIGhhcyBub3QgYmVlbiBzZXQhJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZVJ1bm5pbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVSdW5uaW5nLnRvUHJvbWlzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVSdW5uaW5nID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmNoZWNrU3RhdGVtZW50cygpO1xuXG4gICAgICAgIGxldCB0b2tlbkZyb21Mb2NhbFN0b3JhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKTtcbiAgICAgICAgbGV0IHRva2VuRnJvbUNvb2tpZXMgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KHRoaXMuY29va2llTmFtZSEpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0b2tlbkZyb21Mb2NhbFN0b3JhZ2UgJiZcbiAgICAgICAgICB0b2tlbkZyb21Db29raWVzICYmXG4gICAgICAgICAgdG9rZW5Gcm9tTG9jYWxTdG9yYWdlID09PSB0b2tlbkZyb21Db29raWVzXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMudG9rZW4gPSB0b2tlbkZyb21Mb2NhbFN0b3JhZ2U7XG4gICAgICAgICAgdGhpcy5zZXRVcFRva2VuRm9yU2Vzc2lvblNlcnZpY2UoKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRTZXNzaW9uKCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0U2Vzc2lvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNsZWFyQW5kU3RhcnROZXdTZXNzaW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSkge1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlTG9jYWxlTmFtZSwgdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlKTtcbiAgICAgICAgICB0aGlzLmxvY2FsZUNoYW5nZWQubmV4dCgpO1xuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVSdW5uaW5nLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVJ1bm5pbmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzdGFydFNlc3Npb24oKTogUHJvbWlzZTxTZXNzaW9uSW5mb0RhdGE+IHtcbiAgICBsZXQgc2Vzc2lvbkluZm8gPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2Uuc3RhcnRTZXNzaW9uKCkudG9Qcm9taXNlKCk7XG4gICAgaWYgKHNlc3Npb25JbmZvKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlc3Npb25JbmZvKHNlc3Npb25JbmZvKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uSW5mb0RhdGEhO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlc3Npb24oKTogUHJvbWlzZTxTZXNzaW9uSW5mb0RhdGE+IHtcbiAgICBsZXQgc2Vzc2lvbkluZm8gPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UuZ2V0U2Vzc2lvbigpLnRvUHJvbWlzZSgpO1xuICAgIGlmIChzZXNzaW9uSW5mbykge1xuICAgICAgdGhpcy5zZXNzaW9uSW5mb0RhdGEgPSBzZXNzaW9uSW5mbztcbiAgICAgIHRoaXMudG9rZW4gPSBzZXNzaW9uSW5mby5zaWQ7XG4gICAgICB0aGlzLnNhdmVUb2tlblRvTG9jYWxTdG9yYWdlKCk7XG4gICAgICB0aGlzLnNldEF1dGhlbnRpY2F0aW9uU3RhdHVzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkluZm9EYXRhITtcbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoU2Vzc2lvbigpOiBQcm9taXNlPFNlc3Npb25JbmZvRGF0YT4ge1xuICAgIGlmICh0aGlzLnJ1bm5pbmdSZWZyZXNoKSB7XG4gICAgICByZXR1cm4gdGhpcy5ydW5uaW5nUmVmcmVzaDtcbiAgICB9XG4gICAgdGhpcy5ydW5uaW5nUmVmcmVzaCA9IHRoaXMuZG9SZWZyZXNoU2Vzc2lvbigpO1xuICAgIHJldHVybiB0aGlzLnJ1bm5pbmdSZWZyZXNoO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkb1JlZnJlc2hTZXNzaW9uKCk6IFByb21pc2U8U2Vzc2lvbkluZm9EYXRhPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCByZWZyZXNoVG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVmcmVzaFRva2VuJyk7XG4gICAgICBpZiAoIXJlZnJlc2hUb2tlbikge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zdGFydFNlc3Npb24oKTtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc2Vzc2lvbkluZm8gPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuYXBpU2VydmljZS5yZWZyZXNoU2Vzc2lvbih7IHJlZnJlc2hUb2tlbiB9KSk7XG4gICAgICAgIGlmIChzZXNzaW9uSW5mbykge1xuICAgICAgICAgIHRoaXMudXBkYXRlU2Vzc2lvbkluZm8oc2Vzc2lvbkluZm8pO1xuICAgICAgICAgIHJldHVybiBzZXNzaW9uSW5mbztcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNJbnZhbGlkUmVmcmVzaFRva2VuRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jbGVhckFuZFN0YXJ0TmV3U2Vzc2lvbigpO1xuICAgICAgICAgIC8vIHN0aWxsIHRocm93IHRoZSBlcnJvciwgc28gdGhlIGVycm9yIGNhbiBiZSBoYW5kbGVkIGluIHRoZSBjYWxsZXJcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIC8vIG5vIHNlc3Npb25JbmZvIHJldHVybmVkXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byByZWZyZXNoIHNlc3Npb24nKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5ydW5uaW5nUmVmcmVzaCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlc3Npb25JbmZvKHNlc3Npb25JbmZvOiBTZXNzaW9uSW5mb0RhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25JbmZvRGF0YSA9IHNlc3Npb25JbmZvO1xuICAgIHRoaXMudG9rZW4gPSBzZXNzaW9uSW5mby5zaWQ7XG4gICAgdGhpcy5zYXZlVG9rZW5Ub0xvY2FsU3RvcmFnZSgpO1xuICAgIC8vIEluc3RhbGwgdGhlIEF1dGhvcml6YXRpb24gaGVhZGVyIEJFRk9SRSBub3RpZnlpbmcgc3Vic2NyaWJlcnMuIFN1YmplY3RcbiAgICAvLyBlbWlzc2lvbiBpcyBzeW5jaHJvbm91cywgYW5kIGhvc3Qgc3Vic2NyaWJlcnMgKGUuZy4gYXV0aC1zdGF0ZSBsaXN0ZW5lcnNcbiAgICAvLyB0aGF0IGltbWVkaWF0ZWx5IGluaXRpYXRlIEJGRiBjYWxscykgZXhlY3V0ZSB0aGVpciBzeW5jIHByb2xvZ3VlIOKAlFxuICAgIC8vIGluY2x1ZGluZyBYSFIgc2VuZCgpIOKAlCBiZWZvcmUgdGhpcyBtZXRob2QgcmV0dXJucy4gSW5zdGFsbGluZyB0aGUgaGVhZGVyXG4gICAgLy8gZmlyc3QgZ3VhcmFudGVlcyB0aG9zZSBzeW5jaHJvbm91cyBkb3duc3RyZWFtIHJlcXVlc3RzIGNhcnJ5IHRoZSBuZXdcbiAgICAvLyB0b2tlbiwgcHJldmVudGluZyBhICdzZXNzaW9uLnNlY3VyaXR5Lm5vY29udGV4dCcgLyByZS1hdXRoIGNhc2NhZGUuXG4gICAgdGhpcy5zZXRVcFRva2VuRm9yU2Vzc2lvblNlcnZpY2UoKTtcbiAgICB0aGlzLnNldEF1dGhlbnRpY2F0aW9uU3RhdHVzKCk7XG4gIH1cblxuICBwcml2YXRlIGlzSW52YWxpZFJlZnJlc2hUb2tlbkVycm9yKGVycm9yOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSAmJlxuICAgICAgZXJyb3IuZXJyb3IgJiZcbiAgICAgIChlcnJvci5lcnJvciBhcyBBcGlFcnJvcikuY29kZSA9PT0gJ3Nlc3Npb24ucmVmcmVzaHRva2VuLmludmFsaWQnXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBdXRoZW50aWNhdGlvblByb3ZpZGVycygpOiBQcm9taXNlPEFycmF5PEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJEYXRhPj4ge1xuICAgIGxldCBwcm92aWRlcnM6IEdldEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzUmVzcG9uc2UgfCB1bmRlZmluZWQgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRBdXRoZW50aWNhdGlvblByb3ZpZGVycygpXG4gICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICB0aGlzLnByb3ZpZGVycyA9IHByb3ZpZGVycz8uYXV0aGVudGljYXRpb25Qcm92aWRlcnM7XG5cbiAgICByZXR1cm4gdGhpcy5wcm92aWRlcnMhO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldElzQXV0aGVudGljYXRlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5zZXNzaW9uSW5mb0RhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzQXV0aGVudGljYXRlZDtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5nZXRTZXNzaW9uKCk7XG4gICAgcmV0dXJuIHRoaXMuaXNBdXRoZW50aWNhdGVkO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGlzMkZBTmVjZXNzYXJ5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnNlc3Npb25JbmZvRGF0YSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5zZXNzaW9uSW5mb0RhdGEuYXV0aGVudGljYXRpb25zPy5zb21lKChhY2NvdW50SW5mbykgPT4gYWNjb3VudEluZm8udHdvRkEgPT09IHRydWUpID8/XG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmdldFNlc3Npb24oKTtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zZXNzaW9uSW5mb0RhdGEhLmF1dGhlbnRpY2F0aW9ucz8uc29tZSgoYWNjb3VudEluZm8pID0+IGFjY291bnRJbmZvLnR3b0ZBID09PSB0cnVlKSA/P1xuICAgICAgZmFsc2VcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNsZWFyQW5kU3RhcnROZXdTZXNzaW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XG4gICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgdGhpcy5oZWFkZXJQYXJhbXMgPSBbXTtcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZGVsZXRlKHRoaXMuY29va2llTmFtZSEpO1xuXG4gICAgYXdhaXQgdGhpcy5zdGFydFNlc3Npb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zZXNzaW9uSW5mb0RhdGEgJiYgdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlKSB7XG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5sb2NhbFN0b3JhZ2VMb2NhbGVOYW1lKSAhPT0gdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlTG9jYWxlTmFtZSwgdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnNlc3Npb25JbmZvRGF0YS5sb2NhbGU7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignVGhlcmUgaXMgbm8gU2Vzc2lvbkluZm9EYXRhIG9yIGxvY2FsZSBpcyB1bmRlZmluZWQuJyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlTG9jYWxlKGxvY2FsZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zZXNzaW9uSW5mb0RhdGEgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2Uuc2V0TG9jYWxlKGxvY2FsZSkudG9Qcm9taXNlKCk7XG4gICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5sb2NhbFN0b3JhZ2VMb2NhbGVOYW1lLCB0aGlzLnNlc3Npb25JbmZvRGF0YS5sb2NhbGUpO1xuICAgICAgdGhpcy5sb2NhbGVDaGFuZ2VkLm5leHQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
3
|
+
import { SmartSessionTimerService } from './smart-session-timer.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./smart-session-timer.service";
|
|
6
|
+
import * as i2 from "../smart-backend-bootstrap.service";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
export class SmartSessionTimerComponent {
|
|
9
|
+
constructor(service, bootstrap) {
|
|
10
|
+
this.service = service;
|
|
11
|
+
this.bootstrap = bootstrap;
|
|
12
|
+
this._destroy$ = new Subject();
|
|
13
|
+
}
|
|
14
|
+
ngOnInit() {
|
|
15
|
+
this.bootstrap.whenReady().then(() => {
|
|
16
|
+
this.service.startTimer();
|
|
17
|
+
this.timeInSeconds = this.service.timeLeftInSeconds;
|
|
18
|
+
this.service.timeChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {
|
|
19
|
+
this.timeInSeconds = this.service.timeLeftInSeconds;
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
ngOnDestroy() {
|
|
24
|
+
this._destroy$.next();
|
|
25
|
+
this._destroy$.complete();
|
|
26
|
+
}
|
|
27
|
+
formatTime(seconds) {
|
|
28
|
+
let minutes = Math.floor(seconds / 60);
|
|
29
|
+
let remainingSeconds = seconds % 60;
|
|
30
|
+
return `${minutes}:${remainingSeconds < 10 ? '0' : ''}${remainingSeconds}`;
|
|
31
|
+
}
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, deps: [{ token: i1.SmartSessionTimerService }, { token: i2.SmartBackendBootstrapService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartSessionTimerComponent, selector: "smart-session-timer", providers: [SmartSessionTimerService], ngImport: i0, template: "<div class=\"smart-session-timer-container\">\n <span class=\"smart-session-timer\" *ngIf=\"timeInSeconds\">\n {{ formatTime(timeInSeconds!) }}\n </span>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{ selector: 'smart-session-timer', providers: [SmartSessionTimerService], template: "<div class=\"smart-session-timer-container\">\n <span class=\"smart-session-timer\" *ngIf=\"timeInSeconds\">\n {{ formatTime(timeInSeconds!) }}\n </span>\n</div>\n" }]
|
|
38
|
+
}], ctorParameters: () => [{ type: i1.SmartSessionTimerService }, { type: i2.SmartBackendBootstrapService }] });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi10aW1lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL3NtYXJ0LXRpbWVyL3NtYXJ0LXNlc3Npb24tdGltZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC10aW1lci9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQVN6RSxNQUFNLE9BQU8sMEJBQTBCO0lBS3JDLFlBQ1MsT0FBaUMsRUFDaEMsU0FBdUM7UUFEeEMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFDaEMsY0FBUyxHQUFULFNBQVMsQ0FBOEI7UUFOekMsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBTzlDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1lBRXBELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDdEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1lBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWU7UUFDeEIsSUFBSSxPQUFPLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxnQkFBZ0IsR0FBVyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQzVDLE9BQU8sR0FBRyxPQUFPLElBQUksZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzdFLENBQUM7K0dBOUJVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDhDQUYxQixDQUFDLHdCQUF3QixDQUFDLDBCQ1Z2QyxrTEFLQTs7NEZET2EsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNFLHFCQUFxQixhQUdwQixDQUFDLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblRpbWVyU2VydmljZSB9IGZyb20gJy4vc21hcnQtc2Vzc2lvbi10aW1lci5zZXJ2aWNlJztcbmltcG9ydCB7IFNtYXJ0QmFja2VuZEJvb3RzdHJhcFNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1iYWNrZW5kLWJvb3RzdHJhcC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc21hcnQtc2Vzc2lvbi10aW1lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtc2Vzc2lvbi10aW1lci5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW1NtYXJ0U2Vzc2lvblRpbWVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0U2Vzc2lvblRpbWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgdGltZUluU2Vjb25kcz86IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2VydmljZTogU21hcnRTZXNzaW9uVGltZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYm9vdHN0cmFwOiBTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJvb3RzdHJhcC53aGVuUmVhZHkoKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuc2VydmljZS5zdGFydFRpbWVyKCk7XG4gICAgICB0aGlzLnRpbWVJblNlY29uZHMgPSB0aGlzLnNlcnZpY2UudGltZUxlZnRJblNlY29uZHM7XG5cbiAgICAgIHRoaXMuc2VydmljZS50aW1lQ2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudGltZUluU2Vjb25kcyA9IHRoaXMuc2VydmljZS50aW1lTGVmdEluU2Vjb25kcztcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBmb3JtYXRUaW1lKHNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IG1pbnV0ZXM6IG51bWJlciA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICBsZXQgcmVtYWluaW5nU2Vjb25kczogbnVtYmVyID0gc2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHttaW51dGVzfToke3JlbWFpbmluZ1NlY29uZHMgPCAxMCA/ICcwJyA6ICcnfSR7cmVtYWluaW5nU2Vjb25kc31gO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic21hcnQtc2Vzc2lvbi10aW1lci1jb250YWluZXJcIj5cbiAgICA8c3BhbiBjbGFzcz1cInNtYXJ0LXNlc3Npb24tdGltZXJcIiAqbmdJZj1cInRpbWVJblNlY29uZHNcIj5cbiAgICAgICAge3sgZm9ybWF0VGltZSh0aW1lSW5TZWNvbmRzISkgfX1cbiAgICA8L3NwYW4+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
3
|
+
import { SmartSubject } from '../../smart-subject/projects';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../smart-session.service";
|
|
6
|
+
export class SmartSessionTimerService {
|
|
7
|
+
constructor(session) {
|
|
8
|
+
this.session = session;
|
|
9
|
+
this._destroy$ = new Subject();
|
|
10
|
+
this.totalTimeInMinutes = 30;
|
|
11
|
+
this.sessionExpiration = 'sessionExpiracy';
|
|
12
|
+
this.timeChanged = new SmartSubject(this._destroy$);
|
|
13
|
+
this.onTimerExpired = new SmartSubject(this._destroy$);
|
|
14
|
+
this.session.sessionExpiracyChanged.pipe(takeUntil(this._destroy$)).subscribe(() => {
|
|
15
|
+
this.restart();
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
this._destroy$.next();
|
|
20
|
+
this._destroy$.complete();
|
|
21
|
+
}
|
|
22
|
+
startTimer() {
|
|
23
|
+
if (this.timer) {
|
|
24
|
+
clearInterval(this.timer);
|
|
25
|
+
}
|
|
26
|
+
const sessionInfoData = this.session.sessionInfoData;
|
|
27
|
+
const lifetimeSeconds = sessionInfoData?.duration;
|
|
28
|
+
if (lifetimeSeconds && lifetimeSeconds !== 0) {
|
|
29
|
+
this.timeLeftInSeconds = lifetimeSeconds;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const expiration = new Date(sessionInfoData.expiration);
|
|
33
|
+
const now = new Date();
|
|
34
|
+
this.timeLeftInSeconds = Math.floor((expiration.getTime() - now.getTime()) / 1000);
|
|
35
|
+
}
|
|
36
|
+
this.timer = setInterval(() => {
|
|
37
|
+
this.timeLeftInSeconds--;
|
|
38
|
+
if (this.timeLeftInSeconds === 0) {
|
|
39
|
+
this.timeout();
|
|
40
|
+
}
|
|
41
|
+
this.timeChanged.next();
|
|
42
|
+
}, 1000);
|
|
43
|
+
}
|
|
44
|
+
restart() {
|
|
45
|
+
clearInterval(this.timer);
|
|
46
|
+
this.timer = undefined;
|
|
47
|
+
this.startTimer();
|
|
48
|
+
}
|
|
49
|
+
timeout() {
|
|
50
|
+
clearInterval(this.timer);
|
|
51
|
+
this.timer = undefined;
|
|
52
|
+
this.onTimerExpired.next();
|
|
53
|
+
}
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerService, deps: [{ token: i1.SmartSessionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
55
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerService, providedIn: 'root' }); }
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerService, decorators: [{
|
|
58
|
+
type: Injectable,
|
|
59
|
+
args: [{
|
|
60
|
+
providedIn: 'root',
|
|
61
|
+
}]
|
|
62
|
+
}], ctorParameters: () => [{ type: i1.SmartSessionService }] });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi10aW1lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC10aW1lci9zbWFydC1zZXNzaW9uLXRpbWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQUs1RCxNQUFNLE9BQU8sd0JBQXdCO0lBY25DLFlBQW9CLE9BQTRCO1FBQTVCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBYnhDLGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVqRCx1QkFBa0IsR0FBVyxFQUFFLENBQUM7UUFHdkIsc0JBQWlCLEdBQVcsaUJBQWlCLENBQUM7UUFFdkQsZ0JBQVcsR0FBa0IsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlELG1CQUFjLEdBQWtCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUsvRCxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDckQsTUFBTSxlQUFlLEdBQUcsZUFBZSxFQUFFLFFBQVEsQ0FBQztRQUNsRCxJQUFJLGVBQWUsSUFBSSxlQUFlLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGVBQWUsQ0FBQztRQUMzQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLGVBQWdCLENBQUMsVUFBVyxDQUFDLENBQUM7WUFDMUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNyRixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQzVCLElBQUksQ0FBQyxpQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELE9BQU87UUFDTCxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTztRQUNMLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDOytHQTFEVSx3QkFBd0I7bUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzs0RkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vLi4vc21hcnQtc3ViamVjdC9wcm9qZWN0cyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydFNlc3Npb25UaW1lclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgdG90YWxUaW1lSW5NaW51dGVzOiBudW1iZXIgPSAzMDtcbiAgdGltZUxlZnRJblNlY29uZHM/OiBudW1iZXI7XG5cbiAgcmVhZG9ubHkgc2Vzc2lvbkV4cGlyYXRpb246IHN0cmluZyA9ICdzZXNzaW9uRXhwaXJhY3knO1xuXG4gIHRpbWVDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XG5cbiAgb25UaW1lckV4cGlyZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcblxuICB0aW1lcjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2Vzc2lvbjogU21hcnRTZXNzaW9uU2VydmljZSkge1xuICAgIHRoaXMuc2Vzc2lvbi5zZXNzaW9uRXhwaXJhY3lDaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVzdGFydCgpO1xuICAgIH0pO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc3RhcnRUaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uSW5mb0RhdGEgPSB0aGlzLnNlc3Npb24uc2Vzc2lvbkluZm9EYXRhO1xuICAgIGNvbnN0IGxpZmV0aW1lU2Vjb25kcyA9IHNlc3Npb25JbmZvRGF0YT8uZHVyYXRpb247XG4gICAgaWYgKGxpZmV0aW1lU2Vjb25kcyAmJiBsaWZldGltZVNlY29uZHMgIT09IDApIHtcbiAgICAgIHRoaXMudGltZUxlZnRJblNlY29uZHMgPSBsaWZldGltZVNlY29uZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4cGlyYXRpb24gPSBuZXcgRGF0ZShzZXNzaW9uSW5mb0RhdGEhLmV4cGlyYXRpb24hKTtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICB0aGlzLnRpbWVMZWZ0SW5TZWNvbmRzID0gTWF0aC5mbG9vcigoZXhwaXJhdGlvbi5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZSgpKSAvIDEwMDApO1xuICAgIH1cblxuICAgIHRoaXMudGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLnRpbWVMZWZ0SW5TZWNvbmRzIS0tO1xuICAgICAgaWYgKHRoaXMudGltZUxlZnRJblNlY29uZHMgPT09IDApIHtcbiAgICAgICAgdGhpcy50aW1lb3V0KCk7XG4gICAgICB9XG4gICAgICB0aGlzLnRpbWVDaGFuZ2VkLm5leHQoKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIHJlc3RhcnQoKTogdm9pZCB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICB0aGlzLnRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc3RhcnRUaW1lcigpO1xuICB9XG5cbiAgdGltZW91dCgpOiB2b2lkIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgIHRoaXMudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vblRpbWVyRXhwaXJlZC5uZXh0KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './shared.module';
|
|
2
|
+
export * from './smart-tooltip.directive';
|
|
3
|
+
export * from './smarttable.date-pipe';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zaGFyZWQvcHJvamVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NoYXJlZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydC10b29sdGlwLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0dGFibGUuZGF0ZS1waXBlJztcbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { SmartTooltipDirective } from './smart-tooltip.directive';
|
|
4
|
+
import { SmartDatePipe, SmartDateTimePipe, SmartTimePipe } from './smarttable.date-pipe';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class SharedModule {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: SharedModule, declarations: [SmartTooltipDirective, SmartDateTimePipe, SmartDatePipe, SmartTimePipe], imports: [CommonModule], exports: [SmartTooltipDirective, SmartDateTimePipe, SmartDatePipe, SmartTimePipe] }); }
|
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SharedModule, imports: [CommonModule] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SharedModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [SmartTooltipDirective, SmartDateTimePipe, SmartDatePipe, SmartTimePipe],
|
|
15
|
+
imports: [CommonModule],
|
|
16
|
+
exports: [SmartTooltipDirective, SmartDateTimePipe, SmartDatePipe, SmartTimePipe],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NoYXJlZC9zaGFyZWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBT3pGLE1BQU0sT0FBTyxZQUFZOytHQUFaLFlBQVk7Z0hBQVosWUFBWSxpQkFKUixxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsYUFBYSxhQUMzRSxZQUFZLGFBQ1oscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGFBQWE7Z0hBRXJFLFlBQVksWUFIYixZQUFZOzs0RkFHWCxZQUFZO2tCQUx4QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUM7b0JBQ3RGLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQztpQkFDbEYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNtYXJ0VG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4vc21hcnQtdG9vbHRpcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU21hcnREYXRlUGlwZSwgU21hcnREYXRlVGltZVBpcGUsIFNtYXJ0VGltZVBpcGUgfSBmcm9tICcuL3NtYXJ0dGFibGUuZGF0ZS1waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU21hcnRUb29sdGlwRGlyZWN0aXZlLCBTbWFydERhdGVUaW1lUGlwZSwgU21hcnREYXRlUGlwZSwgU21hcnRUaW1lUGlwZV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbU21hcnRUb29sdGlwRGlyZWN0aXZlLCBTbWFydERhdGVUaW1lUGlwZSwgU21hcnREYXRlUGlwZSwgU21hcnRUaW1lUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNoYXJlZE1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Directive, HostBinding, HostListener, Input } from '@angular/core';
|
|
2
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/tooltip";
|
|
5
|
+
export class SmartTooltipDirective {
|
|
6
|
+
constructor(tooltip) {
|
|
7
|
+
this.tooltip = tooltip;
|
|
8
|
+
this.cursor = 'pointer';
|
|
9
|
+
}
|
|
10
|
+
mouseover() {
|
|
11
|
+
if (!this.smartTooltip)
|
|
12
|
+
return;
|
|
13
|
+
this.tooltip.message = this.smartTooltip.tooltip;
|
|
14
|
+
this.tooltip.position = this.getTooltipPos(this.smartTooltip.tooltipPosition);
|
|
15
|
+
this.tooltip.showDelay = this.getTooltipDelay(this.smartTooltip.tooltipDelay);
|
|
16
|
+
this.tooltip.tooltipClass = 'override-mouse-over-display';
|
|
17
|
+
this.tooltip.show();
|
|
18
|
+
}
|
|
19
|
+
mouseleave() {
|
|
20
|
+
this.tooltip.tooltipClass = 'override-mouse-out-display';
|
|
21
|
+
this.tooltip.hide();
|
|
22
|
+
}
|
|
23
|
+
getTooltipPos(pos) {
|
|
24
|
+
if (pos) {
|
|
25
|
+
return pos.toLowerCase();
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return 'before';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
getTooltipDelay(delay) {
|
|
32
|
+
return delay ? delay : 1000;
|
|
33
|
+
}
|
|
34
|
+
getTooltipHideDelay(delay) {
|
|
35
|
+
return delay ? delay : 2000;
|
|
36
|
+
}
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartTooltipDirective, deps: [{ token: i1.MatTooltip }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
38
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: { smartTooltip: "smartTooltip" }, host: { listeners: { "mouseover": "mouseover()", "mouseleave": "mouseleave()" }, properties: { "style.cursor": "this.cursor" } }, providers: [MatTooltip], ngImport: i0 }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartTooltipDirective, decorators: [{
|
|
41
|
+
type: Directive,
|
|
42
|
+
args: [{
|
|
43
|
+
selector: '[smartTooltip]',
|
|
44
|
+
providers: [MatTooltip],
|
|
45
|
+
}]
|
|
46
|
+
}], ctorParameters: () => [{ type: i1.MatTooltip }], propDecorators: { smartTooltip: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], cursor: [{
|
|
49
|
+
type: HostBinding,
|
|
50
|
+
args: ['style.cursor']
|
|
51
|
+
}], mouseover: [{
|
|
52
|
+
type: HostListener,
|
|
53
|
+
args: ['mouseover']
|
|
54
|
+
}], mouseleave: [{
|
|
55
|
+
type: HostListener,
|
|
56
|
+
args: ['mouseleave']
|
|
57
|
+
}] } });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zaGFyZWQvc21hcnQtdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLDJCQUEyQixDQUFDOzs7QUFVeEUsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUFvQixPQUFtQjtRQUFuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBRVYsV0FBTSxHQUFXLFNBQVMsQ0FBQztJQUZkLENBQUM7SUFJaEIsU0FBUztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBUSxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsNkJBQTZCLENBQUM7UUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQzJCLFVBQVU7UUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsNEJBQTRCLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQXdDO1FBQ3BELElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixPQUFPLEdBQUcsQ0FBQyxXQUFXLEVBQXFCLENBQUM7UUFDOUMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFjO1FBQzVCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYztRQUNoQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQzsrR0FsQ1UscUJBQXFCO21HQUFyQixxQkFBcUIscU5BRnJCLENBQUMsVUFBVSxDQUFDOzs0RkFFWixxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUN4QjsrRUFFVSxZQUFZO3NCQUFwQixLQUFLO2dCQUl1QixNQUFNO3NCQUFsQyxXQUFXO3VCQUFDLGNBQWM7Z0JBRUEsU0FBUztzQkFBbkMsWUFBWTt1QkFBQyxXQUFXO2dCQVFHLFVBQVU7c0JBQXJDLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFRvb2x0aXAsIFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHtcbiAgVWlBY3Rpb25Ub29sdGlwLFxuICBVaUFjdGlvblRvb2x0aXBUb29sdGlwUG9zaXRpb25FbnVtLFxufSBmcm9tICcuLi92aWV3LWNvbnRleHQvYXBpL21vZGVsL21vZGVscyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzbWFydFRvb2x0aXBdJyxcbiAgcHJvdmlkZXJzOiBbTWF0VG9vbHRpcF0sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0VG9vbHRpcERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIHNtYXJ0VG9vbHRpcD86IFVpQWN0aW9uVG9vbHRpcDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRvb2x0aXA6IE1hdFRvb2x0aXApIHt9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5jdXJzb3InKSBjdXJzb3I6IHN0cmluZyA9ICdwb2ludGVyJztcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInKSBtb3VzZW92ZXIoKSB7XG4gICAgaWYgKCF0aGlzLnNtYXJ0VG9vbHRpcCkgcmV0dXJuO1xuICAgIHRoaXMudG9vbHRpcC5tZXNzYWdlID0gdGhpcy5zbWFydFRvb2x0aXAudG9vbHRpcCE7XG4gICAgdGhpcy50b29sdGlwLnBvc2l0aW9uID0gdGhpcy5nZXRUb29sdGlwUG9zKHRoaXMuc21hcnRUb29sdGlwLnRvb2x0aXBQb3NpdGlvbik7XG4gICAgdGhpcy50b29sdGlwLnNob3dEZWxheSA9IHRoaXMuZ2V0VG9vbHRpcERlbGF5KHRoaXMuc21hcnRUb29sdGlwLnRvb2x0aXBEZWxheSk7XG4gICAgdGhpcy50b29sdGlwLnRvb2x0aXBDbGFzcyA9ICdvdmVycmlkZS1tb3VzZS1vdmVyLWRpc3BsYXknO1xuICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpIG1vdXNlbGVhdmUoKSB7XG4gICAgdGhpcy50b29sdGlwLnRvb2x0aXBDbGFzcyA9ICdvdmVycmlkZS1tb3VzZS1vdXQtZGlzcGxheSc7XG4gICAgdGhpcy50b29sdGlwLmhpZGUoKTtcbiAgfVxuXG4gIGdldFRvb2x0aXBQb3MocG9zPzogVWlBY3Rpb25Ub29sdGlwVG9vbHRpcFBvc2l0aW9uRW51bSk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgaWYgKHBvcykge1xuICAgICAgcmV0dXJuIHBvcy50b0xvd2VyQ2FzZSgpIGFzIFRvb2x0aXBQb3NpdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdiZWZvcmUnO1xuICAgIH1cbiAgfVxuXG4gIGdldFRvb2x0aXBEZWxheShkZWxheT86IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGRlbGF5ID8gZGVsYXkgOiAxMDAwO1xuICB9XG5cbiAgZ2V0VG9vbHRpcEhpZGVEZWxheShkZWxheT86IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGRlbGF5ID8gZGVsYXkgOiAyMDAwO1xuICB9XG59XG4iXX0=
|