@alfresco/adf-core 8.1.0-16295248176 → 8.1.0-16342534841
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/bundles/assets/adf-core/i18n/de.json +1 -1
- package/bundles/assets/adf-core/i18n/es.json +1 -1
- package/bundles/assets/adf-core/i18n/fr.json +1 -1
- package/bundles/assets/adf-core/i18n/it.json +1 -1
- package/bundles/assets/adf-core/i18n/pl.json +1 -1
- package/bundles/assets/adf-core/i18n/pt.json +1 -1
- package/esm2022/adf-core.mjs +5 -0
- package/esm2022/api/alfresco-adf-core-api.mjs +5 -0
- package/esm2022/api/index.mjs +20 -0
- package/esm2022/api/lib/adf-http-client.service.mjs +311 -0
- package/esm2022/api/lib/alfresco-api/alfresco-api.param-encoder.mjs +33 -0
- package/esm2022/api/lib/alfresco-api/alfresco-api.response-error.mjs +25 -0
- package/esm2022/api/lib/alfresco-api/alfresco-api.utils.mjs +80 -0
- package/esm2022/api/lib/interfaces.mjs +18 -0
- package/esm2022/api/lib/types.mjs +18 -0
- package/esm2022/auth/alfresco-adf-core-auth.mjs +5 -0
- package/esm2022/auth/authentication-interceptor/authentication.interceptor.mjs +56 -0
- package/esm2022/auth/authentication.mjs +19 -0
- package/esm2022/auth/index.mjs +19 -0
- package/esm2022/breadcrumbs/alfresco-adf-core-breadcrumbs.mjs +5 -0
- package/esm2022/breadcrumbs/components/breadcrumb/breadcrumb.component.mjs +82 -0
- package/esm2022/breadcrumbs/components/breadcrumb-item/breadcrumb-item.component.mjs +42 -0
- package/esm2022/breadcrumbs/directives/breadcrumb-focus.directive.mjs +44 -0
- package/esm2022/breadcrumbs/index.mjs +19 -0
- package/esm2022/feature-flags/alfresco-adf-core-feature-flags.mjs +5 -0
- package/esm2022/feature-flags/index.mjs +29 -0
- package/esm2022/feature-flags/lib/components/feature-flags-wrapper.mjs +36 -0
- package/esm2022/feature-flags/lib/components/feature-override-indicator.component.mjs +56 -0
- package/esm2022/feature-flags/lib/components/flags/flags.component.mjs +129 -0
- package/esm2022/feature-flags/lib/directives/features.directive.mjs +63 -0
- package/esm2022/feature-flags/lib/directives/not-features.directive.mjs +63 -0
- package/esm2022/feature-flags/lib/guards/is-feature-off.guard.mjs +38 -0
- package/esm2022/feature-flags/lib/guards/is-feature-on.guard.mjs +38 -0
- package/esm2022/feature-flags/lib/guards/is-flags-override-on.guard.mjs +40 -0
- package/esm2022/feature-flags/lib/interfaces/features.interface.mjs +24 -0
- package/esm2022/feature-flags/lib/mocks/features-service-mock.factory.mjs +62 -0
- package/esm2022/feature-flags/lib/providers/debug-feature-flags.provider.mjs +51 -0
- package/esm2022/feature-flags/lib/providers/dummy-feature-flags.provider.mjs +36 -0
- package/esm2022/feature-flags/lib/services/debug-features.service.mjs +94 -0
- package/esm2022/feature-flags/lib/services/dummy-features.service.mjs +40 -0
- package/esm2022/feature-flags/lib/services/flagset.parser.mjs +38 -0
- package/esm2022/feature-flags/lib/services/qa-features.helper.mjs +62 -0
- package/esm2022/feature-flags/lib/services/storage-features.service.mjs +126 -0
- package/esm2022/lib/about/about-extension-list/about-extension-list.component.mjs +51 -0
- package/esm2022/lib/about/about-license-list/about-license-list.component.mjs +51 -0
- package/esm2022/lib/about/about-module-list/module-list.component.mjs +51 -0
- package/esm2022/lib/about/about-package/package-list.component.mjs +65 -0
- package/esm2022/lib/about/about-panel.directive.mjs +37 -0
- package/esm2022/lib/about/about-repository-info/about-repository-info.component.mjs +59 -0
- package/esm2022/lib/about/about-repository-info/repository-info.interface.mjs +18 -0
- package/esm2022/lib/about/about-server-settings/about-server-settings.component.mjs +42 -0
- package/esm2022/lib/about/about-status-list/about-status-list.component.mjs +51 -0
- package/esm2022/lib/about/about.component.mjs +35 -0
- package/esm2022/lib/about/about.module.mjs +75 -0
- package/esm2022/lib/about/index.mjs +18 -0
- package/esm2022/lib/about/interfaces.mjs +18 -0
- package/esm2022/lib/about/public-api.mjs +28 -0
- package/esm2022/lib/app-config/app-config-storage-prefix.factory.mjs +51 -0
- package/esm2022/lib/app-config/app-config.loader.mjs +41 -0
- package/esm2022/lib/app-config/app-config.module.mjs +33 -0
- package/esm2022/lib/app-config/app-config.pipe.mjs +38 -0
- package/esm2022/lib/app-config/app-config.service.mjs +243 -0
- package/esm2022/lib/app-config/debug-app-config.service.mjs +44 -0
- package/esm2022/lib/app-config/index.mjs +18 -0
- package/esm2022/lib/app-config/provide-app-config.mjs +44 -0
- package/esm2022/lib/app-config/public-api.mjs +23 -0
- package/esm2022/lib/auth/authentication-interceptor/auth-bearer.interceptor.mjs +67 -0
- package/esm2022/lib/auth/basic-auth/basic-alfresco-auth.service.mjs +356 -0
- package/esm2022/lib/auth/basic-auth/content-auth.mjs +189 -0
- package/esm2022/lib/auth/basic-auth/process-auth.mjs +193 -0
- package/esm2022/lib/auth/guard/auth-guard-bpm.service.mjs +31 -0
- package/esm2022/lib/auth/guard/auth-guard-ecm.service.mjs +31 -0
- package/esm2022/lib/auth/guard/auth-guard-sso-role.service.mjs +57 -0
- package/esm2022/lib/auth/guard/auth-guard.mjs +53 -0
- package/esm2022/lib/auth/guard/auth-guard.service.mjs +113 -0
- package/esm2022/lib/auth/index.mjs +18 -0
- package/esm2022/lib/auth/interfaces/authentication-service.interface.mjs +18 -0
- package/esm2022/lib/auth/interfaces/authentication.interface.mjs +18 -0
- package/esm2022/lib/auth/interfaces/identity-group.interface.mjs +18 -0
- package/esm2022/lib/auth/interfaces/identity-user.service.interface.mjs +18 -0
- package/esm2022/lib/auth/interfaces/openid-configuration.interface.mjs +18 -0
- package/esm2022/lib/auth/models/application-access.model.mjs +18 -0
- package/esm2022/lib/auth/models/identity-group.model.mjs +18 -0
- package/esm2022/lib/auth/models/identity-role.model.mjs +30 -0
- package/esm2022/lib/auth/models/identity-user.model.mjs +18 -0
- package/esm2022/lib/auth/models/oauth-config.model.mjs +18 -0
- package/esm2022/lib/auth/models/redirection.model.mjs +28 -0
- package/esm2022/lib/auth/models/user-access.model.mjs +18 -0
- package/esm2022/lib/auth/oidc/auth-config.mjs +19 -0
- package/esm2022/lib/auth/oidc/auth-config.service.mjs +110 -0
- package/esm2022/lib/auth/oidc/auth-routing.module.mjs +34 -0
- package/esm2022/lib/auth/oidc/auth.module.mjs +112 -0
- package/esm2022/lib/auth/oidc/auth.service.mjs +22 -0
- package/esm2022/lib/auth/oidc/oidc-auth.guard.mjs +37 -0
- package/esm2022/lib/auth/oidc/oidc-authentication.service.mjs +202 -0
- package/esm2022/lib/auth/oidc/public-api.mjs +24 -0
- package/esm2022/lib/auth/oidc/redirect-auth.service.mjs +267 -0
- package/esm2022/lib/auth/oidc/retry-login.service.mjs +66 -0
- package/esm2022/lib/auth/oidc/token.interceptor.mjs +62 -0
- package/esm2022/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.mjs +31 -0
- package/esm2022/lib/auth/public-api.mjs +44 -0
- package/esm2022/lib/auth/services/authentication.service.mjs +190 -0
- package/esm2022/lib/auth/services/base-authentication.service.mjs +99 -0
- package/esm2022/lib/auth/services/identity-group.service.mjs +269 -0
- package/esm2022/lib/auth/services/identity-role.service.mjs +99 -0
- package/esm2022/lib/auth/services/identity-user.service.mjs +443 -0
- package/esm2022/lib/auth/services/jwt-helper.service.mjs +205 -0
- package/esm2022/lib/auth/services/oauth2.service.mjs +69 -0
- package/esm2022/lib/auth/services/time-sync.service.mjs +83 -0
- package/esm2022/lib/auth/services/user-access.service.mjs +110 -0
- package/esm2022/lib/avatar/avatar.component.mjs +51 -0
- package/esm2022/lib/blank-page/blank-page.component.mjs +31 -0
- package/esm2022/lib/blank-page/blank-page.module.mjs +33 -0
- package/esm2022/lib/blank-page/index.mjs +18 -0
- package/esm2022/lib/blank-page/public-api.mjs +19 -0
- package/esm2022/lib/button/button.component.mjs +61 -0
- package/esm2022/lib/card-view/card-view.module.mjs +80 -0
- package/esm2022/lib/card-view/components/base-card-view.mjs +51 -0
- package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +66 -0
- package/esm2022/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.mjs +55 -0
- package/esm2022/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.mjs +39 -0
- package/esm2022/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.mjs +182 -0
- package/esm2022/lib/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.mjs +108 -0
- package/esm2022/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.mjs +64 -0
- package/esm2022/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.mjs +46 -0
- package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +137 -0
- package/esm2022/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.mjs +113 -0
- package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +239 -0
- package/esm2022/lib/card-view/components/card-view.components.mjs +28 -0
- package/esm2022/lib/card-view/index.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/base-card-view-update.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-arrayitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-boolitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-dateitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-item-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-item-validator.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-item.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-keyvaluepairsitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-selectitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-textitem-pipe-property.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-textitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view.interfaces.mjs +29 -0
- package/esm2022/lib/card-view/interfaces/click-notification.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/update-notification.interface.mjs +18 -0
- package/esm2022/lib/card-view/models/card-view-arrayitem.model.mjs +28 -0
- package/esm2022/lib/card-view/models/card-view-baseitem.model.mjs +64 -0
- package/esm2022/lib/card-view/models/card-view-boolitem.model.mjs +36 -0
- package/esm2022/lib/card-view/models/card-view-dateitem.model.mjs +58 -0
- package/esm2022/lib/card-view/models/card-view-datetimeitem.model.mjs +28 -0
- package/esm2022/lib/card-view/models/card-view-floatitem.model.mjs +33 -0
- package/esm2022/lib/card-view/models/card-view-intitem.model.mjs +36 -0
- package/esm2022/lib/card-view/models/card-view-keyvaluepairs.model.mjs +27 -0
- package/esm2022/lib/card-view/models/card-view-longitem.model.mjs +36 -0
- package/esm2022/lib/card-view/models/card-view-mapitem.model.mjs +32 -0
- package/esm2022/lib/card-view/models/card-view-selectitem.model.mjs +41 -0
- package/esm2022/lib/card-view/models/card-view-textitem.model.mjs +40 -0
- package/esm2022/lib/card-view/models/card-view.models.mjs +29 -0
- package/esm2022/lib/card-view/public-api.mjs +25 -0
- package/esm2022/lib/card-view/services/card-item-types.service.mjs +54 -0
- package/esm2022/lib/card-view/services/card-view-update.service.mjs +59 -0
- package/esm2022/lib/card-view/services/card-view.services.mjs +19 -0
- package/esm2022/lib/card-view/validators/card-view-item-float.validator.mjs +31 -0
- package/esm2022/lib/card-view/validators/card-view-item-int.validator.mjs +35 -0
- package/esm2022/lib/card-view/validators/card-view-item-length.validator.mjs +34 -0
- package/esm2022/lib/card-view/validators/card-view-item-long.validator.mjs +35 -0
- package/esm2022/lib/card-view/validators/card-view-item-match.validator.mjs +35 -0
- package/esm2022/lib/card-view/validators/card-view-item-minmax.validator.mjs +35 -0
- package/esm2022/lib/card-view/validators/card-view-item-only-positive-int.validator.mjs +32 -0
- package/esm2022/lib/card-view/validators/card-view-item-only-positive-long.validator.mjs +31 -0
- package/esm2022/lib/card-view/validators/card-view.validators.mjs +26 -0
- package/esm2022/lib/card-view/validators/validators.map.mjs +26 -0
- package/esm2022/lib/clipboard/clipboard.directive.mjs +98 -0
- package/esm2022/lib/clipboard/clipboard.module.mjs +34 -0
- package/esm2022/lib/clipboard/clipboard.service.mjs +103 -0
- package/esm2022/lib/clipboard/index.mjs +18 -0
- package/esm2022/lib/clipboard/public-api.mjs +21 -0
- package/esm2022/lib/comments/comment-list/comment-list.component.mjs +52 -0
- package/esm2022/lib/comments/comment-list/comment-list.module.mjs +33 -0
- package/esm2022/lib/comments/comment-list/index.mjs +18 -0
- package/esm2022/lib/comments/comment-list/public-api.mjs +19 -0
- package/esm2022/lib/comments/comments.component.mjs +132 -0
- package/esm2022/lib/comments/comments.module.mjs +33 -0
- package/esm2022/lib/comments/index.mjs +18 -0
- package/esm2022/lib/comments/interfaces/comments-service.interface.mjs +18 -0
- package/esm2022/lib/comments/interfaces/comments.token.mjs +19 -0
- package/esm2022/lib/comments/public-api.mjs +22 -0
- package/esm2022/lib/common/index.mjs +35 -0
- package/esm2022/lib/common/interface/search-component.interface.mjs +18 -0
- package/esm2022/lib/common/mock/app-config.service.mock.mjs +47 -0
- package/esm2022/lib/common/models/default-languages.model.mjs +36 -0
- package/esm2022/lib/common/models/log-levels.model.mjs +33 -0
- package/esm2022/lib/common/models/user-info-mode.enum.mjs +25 -0
- package/esm2022/lib/common/services/cookie.service.mjs +82 -0
- package/esm2022/lib/common/services/download.service.mjs +102 -0
- package/esm2022/lib/common/services/dynamic-component-mapper.service.mjs +89 -0
- package/esm2022/lib/common/services/highlight-transform.service.mjs +61 -0
- package/esm2022/lib/common/services/language-item.interface.mjs +18 -0
- package/esm2022/lib/common/services/log.service.mjs +171 -0
- package/esm2022/lib/common/services/page-title.service.mjs +63 -0
- package/esm2022/lib/common/services/sort-by-category.service.mjs +81 -0
- package/esm2022/lib/common/services/storage.service.mjs +143 -0
- package/esm2022/lib/common/services/thumbnail.service.mjs +194 -0
- package/esm2022/lib/common/services/url.service.mjs +45 -0
- package/esm2022/lib/common/services/user-preferences.service.mjs +238 -0
- package/esm2022/lib/common/utils/date-fns-adapter.mjs +115 -0
- package/esm2022/lib/common/utils/date-fns-utils.mjs +222 -0
- package/esm2022/lib/common/utils/datetime-fns-adapter.mjs +134 -0
- package/esm2022/lib/common/utils/file-utils.mjs +65 -0
- package/esm2022/lib/common/utils/index.mjs +18 -0
- package/esm2022/lib/common/utils/moment-date-adapter.mjs +202 -0
- package/esm2022/lib/common/utils/moment-date-formats.model.mjs +32 -0
- package/esm2022/lib/common/utils/object-utils.mjs +107 -0
- package/esm2022/lib/common/utils/public-api.mjs +25 -0
- package/esm2022/lib/common/utils/string-utils.mjs +45 -0
- package/esm2022/lib/context-menu/animations.mjs +33 -0
- package/esm2022/lib/context-menu/context-menu-list.component.mjs +91 -0
- package/esm2022/lib/context-menu/context-menu-overlay.mjs +25 -0
- package/esm2022/lib/context-menu/context-menu-overlay.service.mjs +109 -0
- package/esm2022/lib/context-menu/context-menu.directive.mjs +63 -0
- package/esm2022/lib/context-menu/context-menu.module.mjs +35 -0
- package/esm2022/lib/context-menu/context-menu.tokens.mjs +19 -0
- package/esm2022/lib/context-menu/index.mjs +18 -0
- package/esm2022/lib/context-menu/interfaces.mjs +18 -0
- package/esm2022/lib/context-menu/public-api.mjs +21 -0
- package/esm2022/lib/core.module.mjs +296 -0
- package/esm2022/lib/datatable/components/amount-cell/amount-cell.component.mjs +45 -0
- package/esm2022/lib/datatable/components/boolean-cell/boolean-cell.component.mjs +65 -0
- package/esm2022/lib/datatable/components/columns-selector/columns-search-filter.pipe.mjs +55 -0
- package/esm2022/lib/datatable/components/columns-selector/columns-selector.component.mjs +113 -0
- package/esm2022/lib/datatable/components/data-cell.event.mjs +31 -0
- package/esm2022/lib/datatable/components/data-row-action.event.mjs +34 -0
- package/esm2022/lib/datatable/components/datatable/datatable.component.mjs +914 -0
- package/esm2022/lib/datatable/components/datatable-cell/datatable-cell.component.mjs +126 -0
- package/esm2022/lib/datatable/components/datatable-row/datatable-row.component.mjs +98 -0
- package/esm2022/lib/datatable/components/date-cell/date-cell.component.mjs +78 -0
- package/esm2022/lib/datatable/components/empty-list/empty-list.component.mjs +60 -0
- package/esm2022/lib/datatable/components/filesize-cell/filesize-cell.component.mjs +49 -0
- package/esm2022/lib/datatable/components/icon-cell/icon-cell.component.mjs +67 -0
- package/esm2022/lib/datatable/components/json-cell/json-cell.component.mjs +86 -0
- package/esm2022/lib/datatable/components/location-cell/location-cell.component.mjs +69 -0
- package/esm2022/lib/datatable/components/mocks/datatable.mock.mjs +153 -0
- package/esm2022/lib/datatable/components/number-cell/number-cell.component.mjs +42 -0
- package/esm2022/lib/datatable/data/data-column.model.mjs +18 -0
- package/esm2022/lib/datatable/data/data-row-event.model.mjs +26 -0
- package/esm2022/lib/datatable/data/data-row-update.model.mjs +18 -0
- package/esm2022/lib/datatable/data/data-row.model.mjs +18 -0
- package/esm2022/lib/datatable/data/data-sorting.model.mjs +24 -0
- package/esm2022/lib/datatable/data/data-table.schema.mjs +132 -0
- package/esm2022/lib/datatable/data/datatable-adapter.mjs +18 -0
- package/esm2022/lib/datatable/data/object-datacolumn.model.mjs +46 -0
- package/esm2022/lib/datatable/data/object-datarow.model.mjs +41 -0
- package/esm2022/lib/datatable/data/object-datatable-adapter.mjs +134 -0
- package/esm2022/lib/datatable/data-column/data-column-header.component.mjs +45 -0
- package/esm2022/lib/datatable/data-column/data-column-list.component.mjs +36 -0
- package/esm2022/lib/datatable/data-column/data-column.component.mjs +114 -0
- package/esm2022/lib/datatable/data-column/index.mjs +18 -0
- package/esm2022/lib/datatable/data-column/public-api.mjs +20 -0
- package/esm2022/lib/datatable/datatable.module.mjs +161 -0
- package/esm2022/lib/datatable/directives/custom-empty-content-template.directive.mjs +35 -0
- package/esm2022/lib/datatable/directives/custom-loading-template.directive.mjs +30 -0
- package/esm2022/lib/datatable/directives/custom-no-permission-template.directive.mjs +35 -0
- package/esm2022/lib/datatable/directives/drop-zone.directive.mjs +89 -0
- package/esm2022/lib/datatable/directives/header-filter-template.directive.mjs +43 -0
- package/esm2022/lib/datatable/directives/loading-template.directive.mjs +46 -0
- package/esm2022/lib/datatable/directives/main-data-table-action-template.directive.mjs +43 -0
- package/esm2022/lib/datatable/directives/no-content-template.directive.mjs +46 -0
- package/esm2022/lib/datatable/directives/no-permission-template.directive.mjs +46 -0
- package/esm2022/lib/datatable/directives/resizable/resizable.directive.mjs +173 -0
- package/esm2022/lib/datatable/directives/resizable/resize-handle.directive.mjs +72 -0
- package/esm2022/lib/datatable/directives/resizable/types.mjs +18 -0
- package/esm2022/lib/datatable/index.mjs +18 -0
- package/esm2022/lib/datatable/public-api.mjs +55 -0
- package/esm2022/lib/datatable/services/datatable.service.mjs +33 -0
- package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.mjs +50 -0
- package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.module.mjs +38 -0
- package/esm2022/lib/dialogs/dialog/dialog-data.interface.mjs +18 -0
- package/esm2022/lib/dialogs/dialog/dialog.component.mjs +70 -0
- package/esm2022/lib/dialogs/dialog/dialog.model.mjs +22 -0
- package/esm2022/lib/dialogs/dialog/index.mjs +20 -0
- package/esm2022/lib/dialogs/edit-json/edit-json.dialog.mjs +52 -0
- package/esm2022/lib/dialogs/edit-json/edit-json.dialog.module.mjs +34 -0
- package/esm2022/lib/dialogs/index.mjs +18 -0
- package/esm2022/lib/dialogs/public-api.mjs +25 -0
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +73 -0
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.model.mjs +18 -0
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +33 -0
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.mjs +64 -0
- package/esm2022/lib/directives/directive.module.mjs +56 -0
- package/esm2022/lib/directives/highlight.directive.mjs +67 -0
- package/esm2022/lib/directives/index.mjs +18 -0
- package/esm2022/lib/directives/infinite-select-scroll.directive.mjs +67 -0
- package/esm2022/lib/directives/logout.directive.mjs +72 -0
- package/esm2022/lib/directives/public-api.mjs +24 -0
- package/esm2022/lib/directives/tooltip-card/tooltip-card.component.mjs +60 -0
- package/esm2022/lib/directives/tooltip-card/tooltip-card.directive.mjs +104 -0
- package/esm2022/lib/directives/upload.directive.mjs +241 -0
- package/esm2022/lib/dynamic-chip-list/chip.mjs +18 -0
- package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.component.mjs +204 -0
- package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.module.mjs +33 -0
- package/esm2022/lib/dynamic-chip-list/index.mjs +18 -0
- package/esm2022/lib/dynamic-chip-list/public-api.mjs +20 -0
- package/esm2022/lib/events/base-ui.event.mjs +21 -0
- package/esm2022/lib/events/base.event.mjs +29 -0
- package/esm2022/lib/events/index.mjs +18 -0
- package/esm2022/lib/events/public-api.mjs +19 -0
- package/esm2022/lib/form/components/form-base.component.mjs +212 -0
- package/esm2022/lib/form/components/form-custom-button.directive.mjs +30 -0
- package/esm2022/lib/form/components/form-field/form-field.component.mjs +142 -0
- package/esm2022/lib/form/components/form-renderer.component.mjs +161 -0
- package/esm2022/lib/form/components/form-section/form-section.component.mjs +46 -0
- package/esm2022/lib/form/components/helpers/buttons-visibility.mjs +37 -0
- package/esm2022/lib/form/components/inplace-form-input/inplace-form-input.component.mjs +37 -0
- package/esm2022/lib/form/components/middlewares/decimal-middleware.service.mjs +48 -0
- package/esm2022/lib/form/components/middlewares/middleware.mjs +19 -0
- package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +77 -0
- package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +59 -0
- package/esm2022/lib/form/components/widgets/checkbox/checkbox.widget.mjs +52 -0
- package/esm2022/lib/form/components/widgets/core/container-column.model.mjs +28 -0
- package/esm2022/lib/form/components/widgets/core/container.model.mjs +50 -0
- package/esm2022/lib/form/components/widgets/core/content-link.model.mjs +52 -0
- package/esm2022/lib/form/components/widgets/core/displayable-cm-properties.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/error-message.model.mjs +38 -0
- package/esm2022/lib/form/components/widgets/core/external-content-link.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/external-content.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-file-source.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-metadata.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-option.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-rule.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-selected-folder.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-templates.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-types.mjs +74 -0
- package/esm2022/lib/form/components/widgets/core/form-field-utils.mjs +23 -0
- package/esm2022/lib/form/components/widgets/core/form-field-validator.mjs +268 -0
- package/esm2022/lib/form/components/widgets/core/form-field-variable-options.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field.model.mjs +490 -0
- package/esm2022/lib/form/components/widgets/core/form-outcome-event.model.mjs +32 -0
- package/esm2022/lib/form/components/widgets/core/form-outcome.model.mjs +38 -0
- package/esm2022/lib/form/components/widgets/core/form-values.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-variable.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-widget.model.mjs +33 -0
- package/esm2022/lib/form/components/widgets/core/form.model.mjs +387 -0
- package/esm2022/lib/form/components/widgets/core/group.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/index.mjs +49 -0
- package/esm2022/lib/form/components/widgets/core/predefined-theme.mjs +115 -0
- package/esm2022/lib/form/components/widgets/core/process-form-model.interface.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/process-variable.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/tab.model.mjs +34 -0
- package/esm2022/lib/form/components/widgets/core/theme.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/upload-widget-content-link.model.mjs +27 -0
- package/esm2022/lib/form/components/widgets/core/widget-schema.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/date/date.widget.mjs +162 -0
- package/esm2022/lib/form/components/widgets/date-time/date-time.widget.mjs +153 -0
- package/esm2022/lib/form/components/widgets/decimal/decimal.component.mjs +53 -0
- package/esm2022/lib/form/components/widgets/display-text/display-text.schema.mjs +86 -0
- package/esm2022/lib/form/components/widgets/display-text/display-text.widget.mjs +46 -0
- package/esm2022/lib/form/components/widgets/display-text/index.mjs +19 -0
- package/esm2022/lib/form/components/widgets/error/error.component.mjs +92 -0
- package/esm2022/lib/form/components/widgets/header/header.schema.mjs +86 -0
- package/esm2022/lib/form/components/widgets/header/header.widget.mjs +42 -0
- package/esm2022/lib/form/components/widgets/header/index.mjs +19 -0
- package/esm2022/lib/form/components/widgets/hyperlink/hyperlink.widget.mjs +69 -0
- package/esm2022/lib/form/components/widgets/index.mjs +71 -0
- package/esm2022/lib/form/components/widgets/json/json.widget.mjs +66 -0
- package/esm2022/lib/form/components/widgets/multiline-text/multiline-text.widget.mjs +55 -0
- package/esm2022/lib/form/components/widgets/number/number.widget.mjs +71 -0
- package/esm2022/lib/form/components/widgets/reactive-widget.interface.mjs +18 -0
- package/esm2022/lib/form/components/widgets/text/text-mask.component.mjs +215 -0
- package/esm2022/lib/form/components/widgets/text/text.widget.mjs +65 -0
- package/esm2022/lib/form/components/widgets/unknown/unknown.widget.mjs +63 -0
- package/esm2022/lib/form/components/widgets/widget.component.mjs +110 -0
- package/esm2022/lib/form/events/form-error.event.mjs +24 -0
- package/esm2022/lib/form/events/form-field.event.mjs +24 -0
- package/esm2022/lib/form/events/form-rules.event.mjs +25 -0
- package/esm2022/lib/form/events/form-spinner.event.mjs +23 -0
- package/esm2022/lib/form/events/form.event.mjs +29 -0
- package/esm2022/lib/form/events/index.mjs +24 -0
- package/esm2022/lib/form/events/validate-form-field.event.mjs +24 -0
- package/esm2022/lib/form/events/validate-form.event.mjs +25 -0
- package/esm2022/lib/form/form-base.module.mjs +75 -0
- package/esm2022/lib/form/index.mjs +18 -0
- package/esm2022/lib/form/models/form-rules.model.mjs +77 -0
- package/esm2022/lib/form/models/task-process-variable.model.mjs +19 -0
- package/esm2022/lib/form/models/widget-visibility.model.mjs +104 -0
- package/esm2022/lib/form/pipes/field-style.pipe.mjs +45 -0
- package/esm2022/lib/form/pipes/index.mjs +18 -0
- package/esm2022/lib/form/public-api.mjs +35 -0
- package/esm2022/lib/form/services/form-rendering.service.mjs +53 -0
- package/esm2022/lib/form/services/form-validation-service.interface.mjs +18 -0
- package/esm2022/lib/form/services/form.service.mjs +86 -0
- package/esm2022/lib/form/services/widget-visibility.service.mjs +294 -0
- package/esm2022/lib/header/header.component.mjs +73 -0
- package/esm2022/lib/header/index.mjs +18 -0
- package/esm2022/lib/header/navbar/navbar-item.component.mjs +37 -0
- package/esm2022/lib/header/navbar/navbar.component.mjs +36 -0
- package/esm2022/lib/header/public-api.mjs +20 -0
- package/esm2022/lib/icon/icon.component.mjs +51 -0
- package/esm2022/lib/icon/icon.module.mjs +36 -0
- package/esm2022/lib/icon/index.mjs +18 -0
- package/esm2022/lib/icon/public-api.mjs +19 -0
- package/esm2022/lib/identity-user-info/identity-user-info.component.mjs +86 -0
- package/esm2022/lib/identity-user-info/identity-user-info.module.mjs +33 -0
- package/esm2022/lib/identity-user-info/index.mjs +18 -0
- package/esm2022/lib/identity-user-info/public-api.mjs +19 -0
- package/esm2022/lib/info-drawer/index.mjs +18 -0
- package/esm2022/lib/info-drawer/info-drawer-layout.component.mjs +71 -0
- package/esm2022/lib/info-drawer/info-drawer.component.mjs +113 -0
- package/esm2022/lib/info-drawer/info-drawer.module.mjs +53 -0
- package/esm2022/lib/info-drawer/public-api.mjs +20 -0
- package/esm2022/lib/interface/index.mjs +18 -0
- package/esm2022/lib/interface/injection.tokens.mjs +19 -0
- package/esm2022/lib/interface/public-api.mjs +18 -0
- package/esm2022/lib/language-menu/index.mjs +18 -0
- package/esm2022/lib/language-menu/language-menu.component.mjs +61 -0
- package/esm2022/lib/language-menu/language-menu.module.mjs +35 -0
- package/esm2022/lib/language-menu/language-picker.component.mjs +77 -0
- package/esm2022/lib/language-menu/public-api.mjs +21 -0
- package/esm2022/lib/language-menu/service/language.service.interface.mjs +18 -0
- package/esm2022/lib/language-menu/service/language.service.mjs +34 -0
- package/esm2022/lib/layout/components/header/header.component.mjs +99 -0
- package/esm2022/lib/layout/components/layout-container/layout-container.component.mjs +180 -0
- package/esm2022/lib/layout/components/sidebar-action/sidebar-action-menu.component.mjs +82 -0
- package/esm2022/lib/layout/components/sidenav-layout/sidenav-layout.component.mjs +145 -0
- package/esm2022/lib/layout/directives/sidenav-layout-content.directive.mjs +33 -0
- package/esm2022/lib/layout/directives/sidenav-layout-header.directive.mjs +33 -0
- package/esm2022/lib/layout/directives/sidenav-layout-navigation.directive.mjs +33 -0
- package/esm2022/lib/layout/index.mjs +18 -0
- package/esm2022/lib/layout/layout.module.mjs +72 -0
- package/esm2022/lib/layout/public-api.mjs +25 -0
- package/esm2022/lib/login/components/login/login.component.mjs +367 -0
- package/esm2022/lib/login/components/login-dialog/login-dialog-component-data.interface.mjs +18 -0
- package/esm2022/lib/login/components/login-dialog/login-dialog.component.mjs +57 -0
- package/esm2022/lib/login/components/login-dialog-panel/login-dialog-panel.component.mjs +48 -0
- package/esm2022/lib/login/directives/login-footer.directive.mjs +41 -0
- package/esm2022/lib/login/directives/login-header.directive.mjs +41 -0
- package/esm2022/lib/login/index.mjs +18 -0
- package/esm2022/lib/login/login.module.mjs +54 -0
- package/esm2022/lib/login/models/login-error.event.mjs +22 -0
- package/esm2022/lib/login/models/login-submit.event.mjs +32 -0
- package/esm2022/lib/login/models/login-success.event.mjs +24 -0
- package/esm2022/lib/login/public-api.mjs +27 -0
- package/esm2022/lib/material.module.mjs +254 -0
- package/esm2022/lib/mock/cookie.service.mock.mjs +43 -0
- package/esm2022/lib/mock/data-column.mock.mjs +73 -0
- package/esm2022/lib/mock/event.mock.mjs +39 -0
- package/esm2022/lib/mock/form/form-definition-readonly.mock.mjs +225 -0
- package/esm2022/lib/mock/form/form-definition-visibility.mock.mjs +347 -0
- package/esm2022/lib/mock/form/form-definition.mock.mjs +403 -0
- package/esm2022/lib/mock/form/form.component.mock.mjs +275 -0
- package/esm2022/lib/mock/form/form.service.mock.mjs +248 -0
- package/esm2022/lib/mock/form/widget-visibility.service.mock.mjs +1835 -0
- package/esm2022/lib/mock/index.mjs +18 -0
- package/esm2022/lib/mock/public-api.mjs +27 -0
- package/esm2022/lib/mock/translation.service.mock.mjs +44 -0
- package/esm2022/lib/models/comment.model.mjs +51 -0
- package/esm2022/lib/models/component.model.mjs +24 -0
- package/esm2022/lib/models/decimal-number.model.mjs +26 -0
- package/esm2022/lib/models/general-user.model.mjs +24 -0
- package/esm2022/lib/models/index.mjs +18 -0
- package/esm2022/lib/models/pagination.model.mjs +29 -0
- package/esm2022/lib/models/path.model.mjs +24 -0
- package/esm2022/lib/models/product-version.model.mjs +28 -0
- package/esm2022/lib/models/public-api.mjs +24 -0
- package/esm2022/lib/models/request-pagination.model.mjs +25 -0
- package/esm2022/lib/notifications/components/add-notification.stories.component.mjs +44 -0
- package/esm2022/lib/notifications/components/notification-history.component.mjs +138 -0
- package/esm2022/lib/notifications/helpers/notification.factory.mjs +43 -0
- package/esm2022/lib/notifications/index.mjs +18 -0
- package/esm2022/lib/notifications/models/notification.model.mjs +25 -0
- package/esm2022/lib/notifications/notification-history.module.mjs +35 -0
- package/esm2022/lib/notifications/public-api.mjs +23 -0
- package/esm2022/lib/notifications/services/notification.service.mjs +166 -0
- package/esm2022/lib/pagination/index.mjs +18 -0
- package/esm2022/lib/pagination/infinite-pagination.component.mjs +111 -0
- package/esm2022/lib/pagination/paginated-component.interface.mjs +18 -0
- package/esm2022/lib/pagination/pagination-component.interface.mjs +18 -0
- package/esm2022/lib/pagination/pagination.component.mjs +263 -0
- package/esm2022/lib/pagination/pagination.module.mjs +35 -0
- package/esm2022/lib/pagination/public-api.mjs +22 -0
- package/esm2022/lib/pipes/date-time.pipe.mjs +46 -0
- package/esm2022/lib/pipes/decimal-number.pipe.mjs +78 -0
- package/esm2022/lib/pipes/file-size.pipe.mjs +54 -0
- package/esm2022/lib/pipes/file-type.pipe.mjs +40 -0
- package/esm2022/lib/pipes/format-space.pipe.mjs +39 -0
- package/esm2022/lib/pipes/full-name.pipe.mjs +43 -0
- package/esm2022/lib/pipes/index.mjs +18 -0
- package/esm2022/lib/pipes/localized-date.pipe.mjs +70 -0
- package/esm2022/lib/pipes/multi-value.pipe.mjs +37 -0
- package/esm2022/lib/pipes/pipe.module.mjs +83 -0
- package/esm2022/lib/pipes/public-api.mjs +30 -0
- package/esm2022/lib/pipes/text-highlight.pipe.mjs +39 -0
- package/esm2022/lib/pipes/time-ago.pipe.mjs +65 -0
- package/esm2022/lib/pipes/truncate.pipe.mjs +33 -0
- package/esm2022/lib/pipes/user-initial.pipe.mjs +52 -0
- package/esm2022/lib/pipes/user-like.interface.mjs +18 -0
- package/esm2022/lib/progress/progress.component.mjs +90 -0
- package/esm2022/lib/search-text/animations.mjs +32 -0
- package/esm2022/lib/search-text/index.mjs +18 -0
- package/esm2022/lib/search-text/models/search-text-input.model.mjs +23 -0
- package/esm2022/lib/search-text/public-api.mjs +22 -0
- package/esm2022/lib/search-text/search-text-input.component.mjs +283 -0
- package/esm2022/lib/search-text/search-text-input.module.mjs +35 -0
- package/esm2022/lib/search-text/search-trigger.directive.mjs +181 -0
- package/esm2022/lib/snackbar-content/index.mjs +18 -0
- package/esm2022/lib/snackbar-content/public-api.mjs +20 -0
- package/esm2022/lib/snackbar-content/snack-bar-data.mjs +18 -0
- package/esm2022/lib/snackbar-content/snackbar-content.component.mjs +49 -0
- package/esm2022/lib/snackbar-content/snackbar-content.module.mjs +33 -0
- package/esm2022/lib/sorting-picker/index.mjs +18 -0
- package/esm2022/lib/sorting-picker/public-api.mjs +18 -0
- package/esm2022/lib/sorting-picker/sorting-picker.component.mjs +67 -0
- package/esm2022/lib/templates/empty-content/empty-content.component.mjs +43 -0
- package/esm2022/lib/templates/error-content/error-content.component.mjs +61 -0
- package/esm2022/lib/templates/index.mjs +18 -0
- package/esm2022/lib/templates/public-api.mjs +20 -0
- package/esm2022/lib/templates/template.module.mjs +38 -0
- package/esm2022/lib/testing/core.story.module.mjs +39 -0
- package/esm2022/lib/testing/core.testing.module.mjs +36 -0
- package/esm2022/lib/testing/index.mjs +22 -0
- package/esm2022/lib/testing/noop-auth.module.mjs +80 -0
- package/esm2022/lib/testing/noop-translate.module.mjs +75 -0
- package/esm2022/lib/testing/unit-testing-utils.mjs +364 -0
- package/esm2022/lib/toolbar/index.mjs +18 -0
- package/esm2022/lib/toolbar/public-api.mjs +21 -0
- package/esm2022/lib/toolbar/toolbar-divider.component.mjs +27 -0
- package/esm2022/lib/toolbar/toolbar-title.component.mjs +32 -0
- package/esm2022/lib/toolbar/toolbar.component.mjs +39 -0
- package/esm2022/lib/toolbar/toolbar.module.mjs +36 -0
- package/esm2022/lib/translation/index.mjs +18 -0
- package/esm2022/lib/translation/public-api.mjs +19 -0
- package/esm2022/lib/translation/translate-loader.service.mjs +153 -0
- package/esm2022/lib/translation/translation.service.mjs +148 -0
- package/esm2022/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.mjs +36 -0
- package/esm2022/lib/viewer/components/img-viewer/img-viewer.component.mjs +220 -0
- package/esm2022/lib/viewer/components/media-player/media-player.component.mjs +64 -0
- package/esm2022/lib/viewer/components/pdf-viewer/pdf-viewer.component.mjs +550 -0
- package/esm2022/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.mjs +60 -0
- package/esm2022/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.mjs +48 -0
- package/esm2022/lib/viewer/components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component.mjs +198 -0
- package/esm2022/lib/viewer/components/txt-viewer/txt-viewer.component.mjs +85 -0
- package/esm2022/lib/viewer/components/unknown-format/unknown-format.component.mjs +32 -0
- package/esm2022/lib/viewer/components/viewer-more-actions.component.mjs +34 -0
- package/esm2022/lib/viewer/components/viewer-open-with.component.mjs +34 -0
- package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +216 -0
- package/esm2022/lib/viewer/components/viewer-sidebar.component.mjs +46 -0
- package/esm2022/lib/viewer/components/viewer-toolbar-actions.component.mjs +34 -0
- package/esm2022/lib/viewer/components/viewer-toolbar-custom-actions.component.mjs +34 -0
- package/esm2022/lib/viewer/components/viewer-toolbar.component.mjs +34 -0
- package/esm2022/lib/viewer/components/viewer.component.mjs +486 -0
- package/esm2022/lib/viewer/directives/viewer-extension.directive.mjs +67 -0
- package/esm2022/lib/viewer/index.mjs +18 -0
- package/esm2022/lib/viewer/models/download-prompt.actions.mjs +23 -0
- package/esm2022/lib/viewer/models/viewer.model.mjs +22 -0
- package/esm2022/lib/viewer/public-api.mjs +40 -0
- package/esm2022/lib/viewer/services/rendering-queue.services.mjs +179 -0
- package/esm2022/lib/viewer/services/view-util.service.mjs +149 -0
- package/esm2022/lib/viewer/viewer.module.mjs +110 -0
- package/esm2022/public-api.mjs +60 -0
- package/esm2022/shell/alfresco-adf-core-shell.mjs +5 -0
- package/esm2022/shell/index.mjs +21 -0
- package/esm2022/shell/lib/components/shell/shell.component.mjs +122 -0
- package/esm2022/shell/lib/services/shell-app.service.mjs +22 -0
- package/esm2022/shell/lib/shell.module.mjs +75 -0
- package/esm2022/shell/lib/shell.routes.mjs +50 -0
- package/feature-flags/lib/providers/debug-feature-flags.provider.d.ts +35 -4
- package/fesm2022/adf-core.mjs +1083 -1101
- package/fesm2022/adf-core.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-api.mjs +4 -4
- package/fesm2022/alfresco-adf-core-api.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-auth.mjs +3 -3
- package/fesm2022/alfresco-adf-core-auth.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-breadcrumbs.mjs +11 -11
- package/fesm2022/alfresco-adf-core-breadcrumbs.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-feature-flags.mjs +59 -52
- package/fesm2022/alfresco-adf-core-feature-flags.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-shell.mjs +14 -68
- package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
- package/lib/app-config/provide-app-config.d.ts +2 -2
- package/lib/auth/oidc/auth.module.d.ts +4 -4
- package/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.d.ts +1 -1
- package/lib/card-view/components/base-card-view.d.ts +1 -1
- package/lib/card-view/components/card-view/card-view.component.scss +9 -12
- package/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.scss +2 -1
- package/lib/card-view/components/card-view-textitem/card-view-textitem.component.scss +5 -2
- package/lib/datatable/data/data-table.schema.d.ts +1 -1
- package/lib/dialogs/confirm-dialog/confirm.dialog.d.ts +1 -1
- package/lib/dialogs/confirm-dialog/confirm.dialog.module.d.ts +6 -2
- package/lib/form/components/form-renderer.component.scss +4 -5
- package/lib/translation/public-api.d.ts +0 -1
- package/package.json +15 -3
- package/public-api.d.ts +0 -1
- package/shell/README.md +3 -13
- package/shell/index.d.ts +0 -1
- package/shell/lib/shell.module.d.ts +1 -1
- package/lib/landing-page/index.d.ts +0 -17
- package/lib/landing-page/provider.d.ts +0 -24
- package/lib/landing-page/public-api.d.ts +0 -17
- package/lib/translation/provide-i18n.d.ts +0 -39
- package/shell/lib/providers.d.ts +0 -36
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
18
|
+
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
|
19
|
+
import { Component, ContentChild, DestroyRef, ElementRef, EventEmitter, HostBinding, HostListener, inject, Input, Output, TemplateRef, ViewEncapsulation } from '@angular/core';
|
|
20
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
21
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
22
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
23
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
24
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
25
|
+
import { fromEvent } from 'rxjs';
|
|
26
|
+
import { filter, first, skipWhile } from 'rxjs/operators';
|
|
27
|
+
import { AppConfigService } from '../../app-config';
|
|
28
|
+
import { ToolbarComponent, ToolbarDividerComponent, ToolbarTitleComponent } from '../../toolbar';
|
|
29
|
+
import { DownloadPromptActions } from '../models/download-prompt.actions';
|
|
30
|
+
import { CloseButtonPosition } from '../models/viewer.model';
|
|
31
|
+
import { ViewUtilService } from '../services/view-util.service';
|
|
32
|
+
import { DownloadPromptDialogComponent } from './download-prompt-dialog/download-prompt-dialog.component';
|
|
33
|
+
import { ViewerMoreActionsComponent } from './viewer-more-actions.component';
|
|
34
|
+
import { ViewerOpenWithComponent } from './viewer-open-with.component';
|
|
35
|
+
import { ViewerRenderComponent } from './viewer-render/viewer-render.component';
|
|
36
|
+
import { ViewerSidebarComponent } from './viewer-sidebar.component';
|
|
37
|
+
import { ViewerToolbarComponent } from './viewer-toolbar.component';
|
|
38
|
+
import { ViewerToolbarActionsComponent } from './viewer-toolbar-actions.component';
|
|
39
|
+
import { ViewerToolbarCustomActionsComponent } from './viewer-toolbar-custom-actions.component';
|
|
40
|
+
import { IconComponent } from '../../icon';
|
|
41
|
+
import { ThumbnailService } from '../../common';
|
|
42
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
43
|
+
import * as i0 from "@angular/core";
|
|
44
|
+
import * as i1 from "@angular/material/dialog";
|
|
45
|
+
import * as i2 from "../services/view-util.service";
|
|
46
|
+
import * as i3 from "../../app-config";
|
|
47
|
+
import * as i4 from "@angular/cdk/a11y";
|
|
48
|
+
import * as i5 from "@angular/material/button";
|
|
49
|
+
import * as i6 from "@angular/material/icon";
|
|
50
|
+
import * as i7 from "@angular/material/menu";
|
|
51
|
+
const DEFAULT_NON_PREVIEW_CONFIG = {
|
|
52
|
+
enableDownloadPrompt: false,
|
|
53
|
+
enableDownloadPromptReminder: false,
|
|
54
|
+
downloadPromptDelay: 50,
|
|
55
|
+
downloadPromptReminderDelay: 30
|
|
56
|
+
};
|
|
57
|
+
export class ViewerComponent {
|
|
58
|
+
get isInline() {
|
|
59
|
+
return !this.overlayMode;
|
|
60
|
+
}
|
|
61
|
+
get CloseButtonPosition() {
|
|
62
|
+
return CloseButtonPosition;
|
|
63
|
+
}
|
|
64
|
+
/** Override Content filename. */
|
|
65
|
+
set fileName(fileName) {
|
|
66
|
+
this._fileName = fileName;
|
|
67
|
+
this._fileExtension = this.viewUtilsService.getFileExtension(this.fileName);
|
|
68
|
+
this._fileNameWithoutExtension = this.fileName?.replace(new RegExp(`${this.fileExtension}$`), '') || '';
|
|
69
|
+
this.displayName = this.getDisplayFileName();
|
|
70
|
+
}
|
|
71
|
+
get fileName() {
|
|
72
|
+
return this._fileName;
|
|
73
|
+
}
|
|
74
|
+
get fileExtension() {
|
|
75
|
+
return this._fileExtension;
|
|
76
|
+
}
|
|
77
|
+
get fileNameWithoutExtension() {
|
|
78
|
+
return this._fileNameWithoutExtension;
|
|
79
|
+
}
|
|
80
|
+
constructor(el, dialog, viewUtilsService, appConfigService) {
|
|
81
|
+
this.el = el;
|
|
82
|
+
this.dialog = dialog;
|
|
83
|
+
this.viewUtilsService = viewUtilsService;
|
|
84
|
+
this.appConfigService = appConfigService;
|
|
85
|
+
this.thumbnailService = inject(ThumbnailService);
|
|
86
|
+
/**
|
|
87
|
+
* If you want to load an external file that does not come from ACS you
|
|
88
|
+
* can use this URL to specify where to load the file from.
|
|
89
|
+
*/
|
|
90
|
+
this.urlFile = '';
|
|
91
|
+
/** Hide or show the viewer */
|
|
92
|
+
this.showViewer = true;
|
|
93
|
+
/** Allows `back` navigation */
|
|
94
|
+
this.allowGoBack = true;
|
|
95
|
+
/** Toggles the 'Full Screen' feature. */
|
|
96
|
+
this.allowFullScreen = true;
|
|
97
|
+
/** Hide or show the toolbar */
|
|
98
|
+
this.showToolbar = true;
|
|
99
|
+
/**
|
|
100
|
+
* If `true` then show the Viewer as a full page over the current content.
|
|
101
|
+
* Otherwise, fit inside the parent div.
|
|
102
|
+
*/
|
|
103
|
+
this.overlayMode = false;
|
|
104
|
+
/**
|
|
105
|
+
* Toggles before/next navigation. You can use the arrow buttons to navigate
|
|
106
|
+
* between documents in the collection.
|
|
107
|
+
*/
|
|
108
|
+
this.allowNavigate = false;
|
|
109
|
+
/** Toggles the "before" ("<") button. Requires `allowNavigate` to be enabled. */
|
|
110
|
+
this.canNavigateBefore = true;
|
|
111
|
+
/** Toggles the next (">") button. Requires `allowNavigate` to be enabled. */
|
|
112
|
+
this.canNavigateNext = true;
|
|
113
|
+
/** Allow the left the sidebar. */
|
|
114
|
+
this.allowLeftSidebar = false;
|
|
115
|
+
/** Allow the right sidebar. */
|
|
116
|
+
this.allowRightSidebar = false;
|
|
117
|
+
/** Toggles right sidebar visibility. Requires `allowRightSidebar` to be set to `true`. */
|
|
118
|
+
this.showRightSidebar = false;
|
|
119
|
+
/** Toggles left sidebar visibility. Requires `allowLeftSidebar` to be set to `true`. */
|
|
120
|
+
this.showLeftSidebar = false;
|
|
121
|
+
/** The template for the right sidebar. The template context contains the loaded node data. */
|
|
122
|
+
this.sidebarRightTemplate = null;
|
|
123
|
+
/** The template for the left sidebar. The template context contains the loaded node data. */
|
|
124
|
+
this.sidebarLeftTemplate = null;
|
|
125
|
+
/** Enable when where is possible the editing functionalities */
|
|
126
|
+
this.readOnly = true;
|
|
127
|
+
/**
|
|
128
|
+
* Controls which actions are enabled in the viewer.
|
|
129
|
+
* Example:
|
|
130
|
+
* { rotate: true, crop: false } will enable rotation but disable cropping.
|
|
131
|
+
*/
|
|
132
|
+
this.allowedEditActions = {
|
|
133
|
+
rotate: true,
|
|
134
|
+
crop: true
|
|
135
|
+
};
|
|
136
|
+
/** media subtitles for the media player*/
|
|
137
|
+
this.tracks = [];
|
|
138
|
+
/**
|
|
139
|
+
* Context object available for binding by the local sidebarRightTemplate with let declarations.
|
|
140
|
+
*/
|
|
141
|
+
this.sidebarRightTemplateContext = null;
|
|
142
|
+
/**
|
|
143
|
+
* Context object available for binding by the local sidebarLeftTemplate with let declarations.
|
|
144
|
+
*/
|
|
145
|
+
this.sidebarLeftTemplateContext = null;
|
|
146
|
+
/**
|
|
147
|
+
* Change the close button position Right/Left.
|
|
148
|
+
*/
|
|
149
|
+
this.closeButtonPosition = CloseButtonPosition.Left;
|
|
150
|
+
/** Toggles the 'Info Button' */
|
|
151
|
+
this.hideInfoButton = false;
|
|
152
|
+
/** Identifier of a node that is opened by the viewer. */
|
|
153
|
+
this.nodeId = null;
|
|
154
|
+
/** Original node mime type, should be provided when renditiona mime type is different. */
|
|
155
|
+
this.nodeMimeType = undefined;
|
|
156
|
+
/** Custom error message to be displayed in the viewer. */
|
|
157
|
+
this.customError = undefined;
|
|
158
|
+
/** Toggles dividers visibility */
|
|
159
|
+
this.showToolbarDividers = true;
|
|
160
|
+
/**
|
|
161
|
+
* Enable dialog box to allow user to download the previewed file, in case the preview is not responding for a set period of time.
|
|
162
|
+
*/
|
|
163
|
+
this.enableDownloadPrompt = false;
|
|
164
|
+
/**
|
|
165
|
+
* Enable reminder dialogs to prompt user to download the file, in case the preview is not responding for a set period of time.
|
|
166
|
+
*/
|
|
167
|
+
this.enableDownloadPromptReminder = false;
|
|
168
|
+
/**
|
|
169
|
+
* Initial time in seconds to wait before giving the first prompt to user to download the file
|
|
170
|
+
*/
|
|
171
|
+
this.downloadPromptDelay = 50;
|
|
172
|
+
/**
|
|
173
|
+
* Time in seconds to wait before giving the second and consequent reminders to the user to download the file.
|
|
174
|
+
*/
|
|
175
|
+
this.downloadPromptReminderDelay = 15;
|
|
176
|
+
/**
|
|
177
|
+
* Emitted when user clicks on download button on download prompt dialog.
|
|
178
|
+
*/
|
|
179
|
+
this.downloadFile = new EventEmitter();
|
|
180
|
+
/** Emitted when user clicks 'Navigate Before' ("<") button. */
|
|
181
|
+
this.navigateBefore = new EventEmitter();
|
|
182
|
+
/** Emitted when user clicks 'Navigate Next' (">") button. */
|
|
183
|
+
this.navigateNext = new EventEmitter();
|
|
184
|
+
/** Emitted when the viewer close */
|
|
185
|
+
this.showViewerChange = new EventEmitter();
|
|
186
|
+
/** Emitted when the img is submitted in the img viewer. */
|
|
187
|
+
this.submitFile = new EventEmitter();
|
|
188
|
+
this.closeViewer = true;
|
|
189
|
+
this.keyDown$ = fromEvent(document, 'keydown');
|
|
190
|
+
this.isDialogVisible = false;
|
|
191
|
+
this.destroyRef = inject(DestroyRef);
|
|
192
|
+
}
|
|
193
|
+
ngOnChanges(changes) {
|
|
194
|
+
const { blobFile, urlFile, mimeType, nodeMimeType } = changes;
|
|
195
|
+
if (blobFile?.currentValue) {
|
|
196
|
+
this.mimeType = blobFile.currentValue.type;
|
|
197
|
+
this.mimeTypeIconUrl = this.thumbnailService.getMimeTypeIcon(blobFile.currentValue.type);
|
|
198
|
+
}
|
|
199
|
+
if (urlFile?.currentValue) {
|
|
200
|
+
this.fileName ||= this.viewUtilsService.getFilenameFromUrl(urlFile.currentValue);
|
|
201
|
+
}
|
|
202
|
+
if (mimeType?.currentValue && !nodeMimeType?.currentValue) {
|
|
203
|
+
this.mimeTypeIconUrl = this.thumbnailService.getMimeTypeIcon(mimeType.currentValue);
|
|
204
|
+
}
|
|
205
|
+
if (nodeMimeType?.currentValue) {
|
|
206
|
+
this.mimeTypeIconUrl = this.thumbnailService.getMimeTypeIcon(nodeMimeType.currentValue);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
ngOnInit() {
|
|
210
|
+
this.closeOverlayManager();
|
|
211
|
+
this.configureAndInitDownloadPrompt();
|
|
212
|
+
}
|
|
213
|
+
closeOverlayManager() {
|
|
214
|
+
this.dialog.afterOpened
|
|
215
|
+
.pipe(skipWhile(() => !this.overlayMode), takeUntilDestroyed(this.destroyRef))
|
|
216
|
+
.subscribe(() => (this.closeViewer = false));
|
|
217
|
+
this.dialog.afterAllClosed
|
|
218
|
+
.pipe(skipWhile(() => !this.overlayMode), takeUntilDestroyed(this.destroyRef))
|
|
219
|
+
.subscribe(() => (this.closeViewer = true));
|
|
220
|
+
this.keyDown$
|
|
221
|
+
.pipe(skipWhile(() => !this.overlayMode), filter((e) => e.keyCode === 27), takeUntilDestroyed(this.destroyRef))
|
|
222
|
+
.subscribe((event) => {
|
|
223
|
+
event.preventDefault();
|
|
224
|
+
if (this.closeViewer) {
|
|
225
|
+
this.onClose();
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
onNavigateBeforeClick(event) {
|
|
230
|
+
this.resetLoadingSpinner();
|
|
231
|
+
this.navigateBefore.next(event);
|
|
232
|
+
}
|
|
233
|
+
onNavigateNextClick(event) {
|
|
234
|
+
this.resetLoadingSpinner();
|
|
235
|
+
this.navigateNext.next(event);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* close the viewer
|
|
239
|
+
*/
|
|
240
|
+
onClose() {
|
|
241
|
+
this.showViewer = false;
|
|
242
|
+
this.showViewerChange.emit(this.showViewer);
|
|
243
|
+
}
|
|
244
|
+
toggleRightSidebar() {
|
|
245
|
+
this.showRightSidebar = !this.showRightSidebar;
|
|
246
|
+
}
|
|
247
|
+
toggleLeftSidebar() {
|
|
248
|
+
this.showLeftSidebar = !this.showLeftSidebar;
|
|
249
|
+
}
|
|
250
|
+
handleKeyboardEvent(event) {
|
|
251
|
+
if (event?.defaultPrevented) {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
if (event.key === 'ArrowLeft' && this.canNavigateBefore) {
|
|
255
|
+
event.preventDefault();
|
|
256
|
+
this.onNavigateBeforeClick(event);
|
|
257
|
+
}
|
|
258
|
+
if (event.key === 'ArrowRight' && this.canNavigateNext) {
|
|
259
|
+
event.preventDefault();
|
|
260
|
+
this.onNavigateNextClick(event);
|
|
261
|
+
}
|
|
262
|
+
if (event.code === 'KeyF' && event.ctrlKey) {
|
|
263
|
+
event.preventDefault();
|
|
264
|
+
this.enterFullScreen();
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Triggers full screen mode with a main content area displayed.
|
|
269
|
+
*/
|
|
270
|
+
enterFullScreen() {
|
|
271
|
+
if (this.allowFullScreen) {
|
|
272
|
+
const container = this.el.nativeElement.querySelector('.adf-viewer__fullscreen-container');
|
|
273
|
+
if (container) {
|
|
274
|
+
if (container.requestFullscreen) {
|
|
275
|
+
container.requestFullscreen();
|
|
276
|
+
}
|
|
277
|
+
else if (container.webkitRequestFullscreen) {
|
|
278
|
+
container.webkitRequestFullscreen();
|
|
279
|
+
}
|
|
280
|
+
else if (container.mozRequestFullScreen) {
|
|
281
|
+
container.mozRequestFullScreen();
|
|
282
|
+
}
|
|
283
|
+
else if (container.msRequestFullscreen) {
|
|
284
|
+
container.msRequestFullscreen();
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
onSubmitFile(newImageBlob) {
|
|
290
|
+
this.submitFile.emit(newImageBlob);
|
|
291
|
+
}
|
|
292
|
+
ngOnDestroy() {
|
|
293
|
+
this.clearDownloadPromptTimeouts();
|
|
294
|
+
}
|
|
295
|
+
getDisplayFileName() {
|
|
296
|
+
const fullName = (this.fileNameWithoutExtension || '') + (this.fileExtension || '');
|
|
297
|
+
const maxLength = 50;
|
|
298
|
+
if (fullName.length <= maxLength) {
|
|
299
|
+
return fullName;
|
|
300
|
+
}
|
|
301
|
+
const amountOfTruncateDots = 5;
|
|
302
|
+
const availableSpace = maxLength - amountOfTruncateDots;
|
|
303
|
+
const endLength = 8;
|
|
304
|
+
const startLength = availableSpace - endLength;
|
|
305
|
+
const start = fullName.substring(0, startLength);
|
|
306
|
+
const end = fullName.substring(fullName.length - endLength);
|
|
307
|
+
return start + '.....' + end;
|
|
308
|
+
}
|
|
309
|
+
configureAndInitDownloadPrompt() {
|
|
310
|
+
this.configureDownloadPromptProperties();
|
|
311
|
+
if (this.enableDownloadPrompt) {
|
|
312
|
+
this.initDownloadPrompt();
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
configureDownloadPromptProperties() {
|
|
316
|
+
const nonResponsivePreviewConfig = this.appConfigService.get('viewer', DEFAULT_NON_PREVIEW_CONFIG);
|
|
317
|
+
this.enableDownloadPrompt = nonResponsivePreviewConfig.enableDownloadPrompt;
|
|
318
|
+
this.enableDownloadPromptReminder = nonResponsivePreviewConfig.enableDownloadPromptReminder;
|
|
319
|
+
this.downloadPromptDelay = nonResponsivePreviewConfig.downloadPromptDelay;
|
|
320
|
+
this.downloadPromptReminderDelay = nonResponsivePreviewConfig.downloadPromptReminderDelay;
|
|
321
|
+
}
|
|
322
|
+
initDownloadPrompt() {
|
|
323
|
+
this.downloadPromptTimer = window.setTimeout(() => {
|
|
324
|
+
this.showOrClearDownloadPrompt();
|
|
325
|
+
}, this.downloadPromptDelay * 1000);
|
|
326
|
+
}
|
|
327
|
+
showOrClearDownloadPrompt() {
|
|
328
|
+
if (!this.urlFile && !this.blobFile) {
|
|
329
|
+
this.showDownloadPrompt();
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
this.clearDownloadPromptTimeouts();
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
clearDownloadPromptTimeouts() {
|
|
336
|
+
if (this.downloadPromptTimer) {
|
|
337
|
+
clearTimeout(this.downloadPromptTimer);
|
|
338
|
+
}
|
|
339
|
+
if (this.downloadPromptReminderTimer) {
|
|
340
|
+
clearTimeout(this.downloadPromptReminderTimer);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
showDownloadPrompt() {
|
|
344
|
+
if (!this.isDialogVisible) {
|
|
345
|
+
this.isDialogVisible = true;
|
|
346
|
+
this.dialog
|
|
347
|
+
.open(DownloadPromptDialogComponent, { disableClose: true })
|
|
348
|
+
.afterClosed()
|
|
349
|
+
.pipe(first())
|
|
350
|
+
.subscribe((result) => {
|
|
351
|
+
this.isDialogVisible = false;
|
|
352
|
+
if (result === DownloadPromptActions.DOWNLOAD) {
|
|
353
|
+
this.downloadFile.emit();
|
|
354
|
+
this.onClose();
|
|
355
|
+
}
|
|
356
|
+
else if (result === DownloadPromptActions.WAIT) {
|
|
357
|
+
if (this.enableDownloadPromptReminder) {
|
|
358
|
+
this.clearDownloadPromptTimeouts();
|
|
359
|
+
this.downloadPromptReminderTimer = window.setTimeout(() => {
|
|
360
|
+
this.showOrClearDownloadPrompt();
|
|
361
|
+
}, this.downloadPromptReminderDelay * 1000);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
resetLoadingSpinner() {
|
|
368
|
+
this.urlFile = '';
|
|
369
|
+
this.blobFile = null;
|
|
370
|
+
}
|
|
371
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewerComponent, deps: [{ token: i0.ElementRef }, { token: i1.MatDialog }, { token: i2.ViewUtilService }, { token: i3.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
372
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ViewerComponent, isStandalone: true, selector: "adf-viewer", inputs: { urlFile: "urlFile", blobFile: "blobFile", showViewer: "showViewer", allowGoBack: "allowGoBack", allowFullScreen: "allowFullScreen", showToolbar: "showToolbar", overlayMode: "overlayMode", allowNavigate: "allowNavigate", canNavigateBefore: "canNavigateBefore", canNavigateNext: "canNavigateNext", allowLeftSidebar: "allowLeftSidebar", allowRightSidebar: "allowRightSidebar", showRightSidebar: "showRightSidebar", showLeftSidebar: "showLeftSidebar", sidebarRightTemplate: "sidebarRightTemplate", sidebarLeftTemplate: "sidebarLeftTemplate", readOnly: "readOnly", allowedEditActions: "allowedEditActions", tracks: "tracks", mimeType: "mimeType", sidebarRightTemplateContext: "sidebarRightTemplateContext", sidebarLeftTemplateContext: "sidebarLeftTemplateContext", closeButtonPosition: "closeButtonPosition", hideInfoButton: "hideInfoButton", viewerExtensions: "viewerExtensions", nodeId: "nodeId", nodeMimeType: "nodeMimeType", customError: "customError", showToolbarDividers: "showToolbarDividers", fileName: "fileName" }, outputs: { downloadFile: "downloadFile", navigateBefore: "navigateBefore", navigateNext: "navigateNext", showViewerChange: "showViewerChange", submitFile: "submitFile" }, host: { listeners: { "document:keyup": "handleKeyboardEvent($event)" }, properties: { "class.adf-viewer-inline": "this.isInline" }, classAttribute: "adf-viewer" }, providers: [ViewUtilService], queries: [{ propertyName: "toolbar", first: true, predicate: ViewerToolbarComponent, descendants: true }, { propertyName: "sidebar", first: true, predicate: ViewerSidebarComponent, descendants: true }, { propertyName: "mnuOpenWith", first: true, predicate: ViewerOpenWithComponent, descendants: true }, { propertyName: "mnuMoreActions", first: true, predicate: ViewerMoreActionsComponent, descendants: true }, { propertyName: "viewerTemplateExtensions", first: true, predicate: ["viewerExtensions"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"showViewer\"\n class=\"adf-viewer-container\"\n [class.adf-viewer-overlay-container]=\"overlayMode\"\n [class.adf-viewer-inline-container]=\"!overlayMode\">\n\n <div class=\"adf-viewer-content\"\n [cdkTrapFocus]=\"overlayMode\"\n cdkTrapFocusAutoCapture>\n <ng-content select=\"adf-viewer-toolbar\" />\n <ng-container *ngIf=\"showToolbar && !toolbar\">\n <adf-toolbar id=\"adf-viewer-toolbar\" class=\"adf-viewer-toolbar\">\n <adf-toolbar-title>\n <ng-container *ngIf=\"allowLeftSidebar\">\n <button mat-icon-button\n [attr.aria-expanded]=\"showLeftSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-left-sidebar\"\n [color]=\"showLeftSidebar ? 'accent' : null\"\n (click)=\"toggleLeftSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </ng-container>\n\n <button *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Left\"\n class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-left-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar-title>\n\n <div class=\"adf-viewer__file-title\">\n <button *ngIf=\"allowNavigate && canNavigateBefore\"\n data-automation-id=\"adf-toolbar-pref-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PREV_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREV_FILE' | translate }}\"\n (click)=\"onNavigateBeforeClick($event)\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <img class=\"adf-viewer__mimeicon\"\n [alt]=\"'ADF_VIEWER.ARIA.MIME_TYPE_ICON' | translate\"\n [src]=\"mimeTypeIconUrl\"\n data-automation-id=\"adf-file-thumbnail\">\n <div class=\"adf-viewer__display-name\"\n id=\"adf-viewer-display-name\"\n [title]=\"fileName\">\n <span>{{ displayName }}</span>\n </div>\n <button *ngIf=\"allowNavigate && canNavigateNext\"\n data-automation-id=\"adf-toolbar-next-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate }}\"\n (click)=\"onNavigateNextClick($event)\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n </div>\n\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n\n <ng-container *ngIf=\"mnuOpenWith\"\n data-automation-id='adf-toolbar-custom-btn'>\n <button id=\"adf-viewer-openwith\"\n mat-button\n [matMenuTriggerFor]=\"mnuOpenWith\"\n data-automation-id=\"adf-toolbar-open-with\">\n <span>{{ 'ADF_VIEWER.ACTIONS.OPEN_WITH' | translate }}</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n <mat-menu #mnuOpenWith=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-open-with\" />\n </mat-menu>\n </ng-container>\n\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n\n <ng-content select=\"adf-viewer-toolbar-custom-actions\" />\n\n <button id=\"adf-viewer-fullscreen\"\n *ngIf=\"allowFullScreen\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate }}\"\n data-automation-id=\"adf-toolbar-fullscreen\"\n (click)=\"enterFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n\n <ng-container *ngIf=\"allowRightSidebar && !hideInfoButton\">\n <adf-toolbar-divider />\n\n <button mat-icon-button\n [attr.aria-expanded]=\"showRightSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-sidebar\"\n [color]=\"showRightSidebar ? 'accent' : null\"\n (click)=\"toggleRightSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n\n </ng-container>\n\n <ng-container *ngIf=\"mnuMoreActions\">\n <button id=\"adf-viewer-moreactions\"\n mat-icon-button\n [matMenuTriggerFor]=\"mnuMoreActions\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate }}\"\n data-automation-id=\"adf-toolbar-more-actions\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #mnuMoreActions=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </mat-menu>\n </ng-container>\n\n <ng-container *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Right\">\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n <button class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n\n </adf-toolbar>\n </ng-container>\n\n <div class=\"adf-viewer-sidebars\">\n\n <ng-container *ngIf=\"allowRightSidebar && showRightSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__right\"\n id=\"adf-right-sidebar\">\n <ng-container *ngIf=\"sidebarRightTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarRightTemplate;context:sidebarRightTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarRightTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"allowLeftSidebar && showLeftSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__left\"\n id=\"adf-left-sidebar\">\n <ng-container *ngIf=\"sidebarLeftTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarLeftTemplate;context:sidebarLeftTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarLeftTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <adf-viewer-render (close)=\"onClose()\"\n [mimeType]=\"mimeType\"\n [fileName]=\"fileName\"\n [blobFile]=\"blobFile\"\n [readOnly]=\"readOnly\"\n (submitFile)=\"onSubmitFile($event)\"\n [allowedEditActions]=\"allowedEditActions\"\n [urlFile]=\"urlFile\"\n (isSaving)=\"allowNavigate = !$event\"\n [tracks]=\"tracks\"\n [viewerTemplateExtensions]=\"viewerExtensions ?? viewerTemplateExtensions\"\n [nodeId]=\"nodeId\"\n [customError]=\"customError\" />\n\n </div>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-viewer-inline-container,.adf-viewer-container .adf-viewer-content,.adf-viewer-container .adf-viewer-layout,.adf-viewer-container .adf-viewer-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer{position:absolute;width:100%;height:100%}.adf-viewer .mat-toolbar{color:var(--adf-theme-foreground-text-color-054)}.adf-viewer .mat-toolbar .adf-toolbar-title{width:auto}.adf-viewer-main{width:0}.adf-viewer__mimeicon{vertical-align:middle;height:18px;width:18px;margin-left:4px;margin-right:4px}.adf-viewer-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-viewer__file-title{text-align:center;flex:1 1 auto;position:absolute;left:50%;transform:translate(-50%);display:flex;flex-direction:row;align-items:center}@media screen and (width <= 1450px){.adf-viewer__file-title{left:30%}}.adf-viewer__display-name{font-size:var(--theme-subheading-2-font-size);line-height:1.5;vertical-align:middle;color:var(--adf-theme-foreground-text-color);white-space:nowrap}.adf-viewer-container .adf-viewer-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-direction:row;flex-wrap:wrap;flex:1}.adf-viewer-container .adf-viewer-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:100%}.adf-viewer-container .adf-viewer-layout{display:flex;flex-direction:row;overflow:hidden auto;position:relative}.adf-viewer-container .adf-viewer-content{flex:1;flex-direction:column;display:flex}.adf-viewer-container .adf-viewer-content>div{height:0}.adf-viewer-overlay-container .adf-viewer-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-sidebars{display:flex;flex:1 1 auto}.adf-viewer-sidebars .adf-viewer__sidebar{width:350px;display:block;padding:0;background-color:var(--theme-background-color);box-shadow:0 2px 4px 0 var(--adf-theme-foreground-text-color-027);overflow:auto}.adf-viewer-sidebars .adf-viewer__sidebar__right{border-left:1px solid var(--adf-theme-foreground-text-color-007);order:4}.adf-viewer-sidebars .adf-viewer__sidebar__left{border-right:1px solid var(--adf-theme-foreground-text-color-007);order:1}.adf-viewer-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: ToolbarDividerComponent, selector: "adf-toolbar-divider" }, { kind: "component", type: ViewerRenderComponent, selector: "adf-viewer-render", inputs: ["urlFile", "blobFile", "allowFullScreen", "allowThumbnails", "thumbnailsTemplate", "mimeType", "fileName", "readOnly", "allowedEditActions", "tracks", "nodeId", "viewerTemplateExtensions", "customError"], outputs: ["extensionChange", "submitFile", "close", "isSaving"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
373
|
+
}
|
|
374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewerComponent, decorators: [{
|
|
375
|
+
type: Component,
|
|
376
|
+
args: [{ selector: 'adf-viewer', standalone: true, host: { class: 'adf-viewer' }, encapsulation: ViewEncapsulation.None, imports: [
|
|
377
|
+
NgIf,
|
|
378
|
+
A11yModule,
|
|
379
|
+
ToolbarComponent,
|
|
380
|
+
ToolbarTitleComponent,
|
|
381
|
+
MatButtonModule,
|
|
382
|
+
TranslatePipe,
|
|
383
|
+
MatIconModule,
|
|
384
|
+
MatMenuModule,
|
|
385
|
+
ToolbarDividerComponent,
|
|
386
|
+
ViewerRenderComponent,
|
|
387
|
+
NgTemplateOutlet,
|
|
388
|
+
ViewerToolbarComponent,
|
|
389
|
+
ViewerSidebarComponent,
|
|
390
|
+
ViewerToolbarActionsComponent,
|
|
391
|
+
ViewerToolbarCustomActionsComponent,
|
|
392
|
+
IconComponent
|
|
393
|
+
], providers: [ViewUtilService], template: "<div *ngIf=\"showViewer\"\n class=\"adf-viewer-container\"\n [class.adf-viewer-overlay-container]=\"overlayMode\"\n [class.adf-viewer-inline-container]=\"!overlayMode\">\n\n <div class=\"adf-viewer-content\"\n [cdkTrapFocus]=\"overlayMode\"\n cdkTrapFocusAutoCapture>\n <ng-content select=\"adf-viewer-toolbar\" />\n <ng-container *ngIf=\"showToolbar && !toolbar\">\n <adf-toolbar id=\"adf-viewer-toolbar\" class=\"adf-viewer-toolbar\">\n <adf-toolbar-title>\n <ng-container *ngIf=\"allowLeftSidebar\">\n <button mat-icon-button\n [attr.aria-expanded]=\"showLeftSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-left-sidebar\"\n [color]=\"showLeftSidebar ? 'accent' : null\"\n (click)=\"toggleLeftSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </ng-container>\n\n <button *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Left\"\n class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-left-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar-title>\n\n <div class=\"adf-viewer__file-title\">\n <button *ngIf=\"allowNavigate && canNavigateBefore\"\n data-automation-id=\"adf-toolbar-pref-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PREV_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREV_FILE' | translate }}\"\n (click)=\"onNavigateBeforeClick($event)\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <img class=\"adf-viewer__mimeicon\"\n [alt]=\"'ADF_VIEWER.ARIA.MIME_TYPE_ICON' | translate\"\n [src]=\"mimeTypeIconUrl\"\n data-automation-id=\"adf-file-thumbnail\">\n <div class=\"adf-viewer__display-name\"\n id=\"adf-viewer-display-name\"\n [title]=\"fileName\">\n <span>{{ displayName }}</span>\n </div>\n <button *ngIf=\"allowNavigate && canNavigateNext\"\n data-automation-id=\"adf-toolbar-next-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate }}\"\n (click)=\"onNavigateNextClick($event)\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n </div>\n\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n\n <ng-container *ngIf=\"mnuOpenWith\"\n data-automation-id='adf-toolbar-custom-btn'>\n <button id=\"adf-viewer-openwith\"\n mat-button\n [matMenuTriggerFor]=\"mnuOpenWith\"\n data-automation-id=\"adf-toolbar-open-with\">\n <span>{{ 'ADF_VIEWER.ACTIONS.OPEN_WITH' | translate }}</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n <mat-menu #mnuOpenWith=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-open-with\" />\n </mat-menu>\n </ng-container>\n\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n\n <ng-content select=\"adf-viewer-toolbar-custom-actions\" />\n\n <button id=\"adf-viewer-fullscreen\"\n *ngIf=\"allowFullScreen\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate }}\"\n data-automation-id=\"adf-toolbar-fullscreen\"\n (click)=\"enterFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n\n <ng-container *ngIf=\"allowRightSidebar && !hideInfoButton\">\n <adf-toolbar-divider />\n\n <button mat-icon-button\n [attr.aria-expanded]=\"showRightSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-sidebar\"\n [color]=\"showRightSidebar ? 'accent' : null\"\n (click)=\"toggleRightSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n\n </ng-container>\n\n <ng-container *ngIf=\"mnuMoreActions\">\n <button id=\"adf-viewer-moreactions\"\n mat-icon-button\n [matMenuTriggerFor]=\"mnuMoreActions\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate }}\"\n data-automation-id=\"adf-toolbar-more-actions\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #mnuMoreActions=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </mat-menu>\n </ng-container>\n\n <ng-container *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Right\">\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n <button class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n\n </adf-toolbar>\n </ng-container>\n\n <div class=\"adf-viewer-sidebars\">\n\n <ng-container *ngIf=\"allowRightSidebar && showRightSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__right\"\n id=\"adf-right-sidebar\">\n <ng-container *ngIf=\"sidebarRightTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarRightTemplate;context:sidebarRightTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarRightTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"allowLeftSidebar && showLeftSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__left\"\n id=\"adf-left-sidebar\">\n <ng-container *ngIf=\"sidebarLeftTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarLeftTemplate;context:sidebarLeftTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarLeftTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <adf-viewer-render (close)=\"onClose()\"\n [mimeType]=\"mimeType\"\n [fileName]=\"fileName\"\n [blobFile]=\"blobFile\"\n [readOnly]=\"readOnly\"\n (submitFile)=\"onSubmitFile($event)\"\n [allowedEditActions]=\"allowedEditActions\"\n [urlFile]=\"urlFile\"\n (isSaving)=\"allowNavigate = !$event\"\n [tracks]=\"tracks\"\n [viewerTemplateExtensions]=\"viewerExtensions ?? viewerTemplateExtensions\"\n [nodeId]=\"nodeId\"\n [customError]=\"customError\" />\n\n </div>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-viewer-inline-container,.adf-viewer-container .adf-viewer-content,.adf-viewer-container .adf-viewer-layout,.adf-viewer-container .adf-viewer-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer{position:absolute;width:100%;height:100%}.adf-viewer .mat-toolbar{color:var(--adf-theme-foreground-text-color-054)}.adf-viewer .mat-toolbar .adf-toolbar-title{width:auto}.adf-viewer-main{width:0}.adf-viewer__mimeicon{vertical-align:middle;height:18px;width:18px;margin-left:4px;margin-right:4px}.adf-viewer-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-viewer__file-title{text-align:center;flex:1 1 auto;position:absolute;left:50%;transform:translate(-50%);display:flex;flex-direction:row;align-items:center}@media screen and (width <= 1450px){.adf-viewer__file-title{left:30%}}.adf-viewer__display-name{font-size:var(--theme-subheading-2-font-size);line-height:1.5;vertical-align:middle;color:var(--adf-theme-foreground-text-color);white-space:nowrap}.adf-viewer-container .adf-viewer-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-direction:row;flex-wrap:wrap;flex:1}.adf-viewer-container .adf-viewer-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:100%}.adf-viewer-container .adf-viewer-layout{display:flex;flex-direction:row;overflow:hidden auto;position:relative}.adf-viewer-container .adf-viewer-content{flex:1;flex-direction:column;display:flex}.adf-viewer-container .adf-viewer-content>div{height:0}.adf-viewer-overlay-container .adf-viewer-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-sidebars{display:flex;flex:1 1 auto}.adf-viewer-sidebars .adf-viewer__sidebar{width:350px;display:block;padding:0;background-color:var(--theme-background-color);box-shadow:0 2px 4px 0 var(--adf-theme-foreground-text-color-027);overflow:auto}.adf-viewer-sidebars .adf-viewer__sidebar__right{border-left:1px solid var(--adf-theme-foreground-text-color-007);order:4}.adf-viewer-sidebars .adf-viewer__sidebar__left{border-right:1px solid var(--adf-theme-foreground-text-color-007);order:1}.adf-viewer-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}\n"] }]
|
|
394
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MatDialog }, { type: i2.ViewUtilService }, { type: i3.AppConfigService }], propDecorators: { isInline: [{
|
|
395
|
+
type: HostBinding,
|
|
396
|
+
args: ['class.adf-viewer-inline']
|
|
397
|
+
}], toolbar: [{
|
|
398
|
+
type: ContentChild,
|
|
399
|
+
args: [ViewerToolbarComponent]
|
|
400
|
+
}], sidebar: [{
|
|
401
|
+
type: ContentChild,
|
|
402
|
+
args: [ViewerSidebarComponent]
|
|
403
|
+
}], mnuOpenWith: [{
|
|
404
|
+
type: ContentChild,
|
|
405
|
+
args: [ViewerOpenWithComponent]
|
|
406
|
+
}], mnuMoreActions: [{
|
|
407
|
+
type: ContentChild,
|
|
408
|
+
args: [ViewerMoreActionsComponent]
|
|
409
|
+
}], viewerTemplateExtensions: [{
|
|
410
|
+
type: ContentChild,
|
|
411
|
+
args: ['viewerExtensions', { static: false }]
|
|
412
|
+
}], urlFile: [{
|
|
413
|
+
type: Input
|
|
414
|
+
}], blobFile: [{
|
|
415
|
+
type: Input
|
|
416
|
+
}], showViewer: [{
|
|
417
|
+
type: Input
|
|
418
|
+
}], allowGoBack: [{
|
|
419
|
+
type: Input
|
|
420
|
+
}], allowFullScreen: [{
|
|
421
|
+
type: Input
|
|
422
|
+
}], showToolbar: [{
|
|
423
|
+
type: Input
|
|
424
|
+
}], overlayMode: [{
|
|
425
|
+
type: Input
|
|
426
|
+
}], allowNavigate: [{
|
|
427
|
+
type: Input
|
|
428
|
+
}], canNavigateBefore: [{
|
|
429
|
+
type: Input
|
|
430
|
+
}], canNavigateNext: [{
|
|
431
|
+
type: Input
|
|
432
|
+
}], allowLeftSidebar: [{
|
|
433
|
+
type: Input
|
|
434
|
+
}], allowRightSidebar: [{
|
|
435
|
+
type: Input
|
|
436
|
+
}], showRightSidebar: [{
|
|
437
|
+
type: Input
|
|
438
|
+
}], showLeftSidebar: [{
|
|
439
|
+
type: Input
|
|
440
|
+
}], sidebarRightTemplate: [{
|
|
441
|
+
type: Input
|
|
442
|
+
}], sidebarLeftTemplate: [{
|
|
443
|
+
type: Input
|
|
444
|
+
}], readOnly: [{
|
|
445
|
+
type: Input
|
|
446
|
+
}], allowedEditActions: [{
|
|
447
|
+
type: Input
|
|
448
|
+
}], tracks: [{
|
|
449
|
+
type: Input
|
|
450
|
+
}], mimeType: [{
|
|
451
|
+
type: Input
|
|
452
|
+
}], sidebarRightTemplateContext: [{
|
|
453
|
+
type: Input
|
|
454
|
+
}], sidebarLeftTemplateContext: [{
|
|
455
|
+
type: Input
|
|
456
|
+
}], closeButtonPosition: [{
|
|
457
|
+
type: Input
|
|
458
|
+
}], hideInfoButton: [{
|
|
459
|
+
type: Input
|
|
460
|
+
}], viewerExtensions: [{
|
|
461
|
+
type: Input
|
|
462
|
+
}], nodeId: [{
|
|
463
|
+
type: Input
|
|
464
|
+
}], nodeMimeType: [{
|
|
465
|
+
type: Input
|
|
466
|
+
}], customError: [{
|
|
467
|
+
type: Input
|
|
468
|
+
}], showToolbarDividers: [{
|
|
469
|
+
type: Input
|
|
470
|
+
}], downloadFile: [{
|
|
471
|
+
type: Output
|
|
472
|
+
}], navigateBefore: [{
|
|
473
|
+
type: Output
|
|
474
|
+
}], navigateNext: [{
|
|
475
|
+
type: Output
|
|
476
|
+
}], showViewerChange: [{
|
|
477
|
+
type: Output
|
|
478
|
+
}], submitFile: [{
|
|
479
|
+
type: Output
|
|
480
|
+
}], fileName: [{
|
|
481
|
+
type: Input
|
|
482
|
+
}], handleKeyboardEvent: [{
|
|
483
|
+
type: HostListener,
|
|
484
|
+
args: ['document:keyup', ['$event']]
|
|
485
|
+
}] } });
|
|
486
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFFTixXQUFXLEVBQ1gsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFP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Q0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBza2lwV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbmZpZyc7XG5pbXBvcnQgeyBUb29sYmFyQ29tcG9uZW50LCBUb29sYmFyRGl2aWRlckNvbXBvbmVudCwgVG9vbGJhclRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdG9vbGJhcic7XG5pbXBvcnQgeyBEb3dubG9hZFByb21wdEFjdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvZG93bmxvYWQtcHJvbXB0LmFjdGlvbnMnO1xuaW1wb3J0IHsgQ2xvc2VCdXR0b25Qb3NpdGlvbiwgVHJhY2sgfSBmcm9tICcuLi9tb2RlbHMvdmlld2VyLm1vZGVsJztcbmltcG9ydCB7IFZpZXdVdGlsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ZpZXctdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IERvd25sb2FkUHJvbXB0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9kb3dubG9hZC1wcm9tcHQtZGlhbG9nL2Rvd25sb2FkLXByb21wdC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlck1vcmVBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItbW9yZS1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJPcGVuV2l0aENvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLW9wZW4td2l0aC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyUmVuZGVyQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItcmVuZGVyL3ZpZXdlci1yZW5kZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlclNpZGViYXJDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci1zaWRlYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyVG9vbGJhckFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci10b29sYmFyLWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlclRvb2xiYXJDdXN0b21BY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItdG9vbGJhci1jdXN0b20tYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ljb24nO1xuaW1wb3J0IHsgVGh1bWJuYWlsU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmNvbnN0IERFRkFVTFRfTk9OX1BSRVZJRVdfQ09ORklHID0ge1xuICAgIGVuYWJsZURvd25sb2FkUHJvbXB0OiBmYWxzZSxcbiAgICBlbmFibGVEb3dubG9hZFByb21wdFJlbWluZGVyOiBmYWxzZSxcbiAgICBkb3dubG9hZFByb21wdERlbGF5OiA1MCxcbiAgICBkb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXk6IDMwXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi12aWV3ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3ZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi12aWV3ZXInIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nSWYsXG4gICAgICAgIEExMXlNb2R1bGUsXG4gICAgICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVQaXBlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRNZW51TW9kdWxlLFxuICAgICAgICBUb29sYmFyRGl2aWRlckNvbXBvbmVudCxcbiAgICAgICAgVmlld2VyUmVuZGVyQ29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBWaWV3ZXJUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBWaWV3ZXJTaWRlYmFyQ29tcG9uZW50LFxuICAgICAgICBWaWV3ZXJUb29sYmFyQWN0aW9uc0NvbXBvbmVudCxcbiAgICAgICAgVmlld2VyVG9vbGJhckN1c3RvbUFjdGlvbnNDb21wb25lbnQsXG4gICAgICAgIEljb25Db21wb25lbnRcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1ZpZXdVdGlsU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVmlld2VyQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSB0aHVtYm5haWxTZXJ2aWNlID0gaW5qZWN0KFRodW1ibmFpbFNlcnZpY2UpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hZGYtdmlld2VyLWlubGluZScpXG4gICAgZ2V0IGlzSW5saW5lKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMub3ZlcmxheU1vZGU7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJUb29sYmFyQ29tcG9uZW50KVxuICAgIHRvb2xiYXI6IFZpZXdlclRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKFZpZXdlclNpZGViYXJDb21wb25lbnQpXG4gICAgc2lkZWJhcjogVmlld2VyU2lkZWJhckNvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoVmlld2VyT3BlbldpdGhDb21wb25lbnQpXG4gICAgbW51T3BlbldpdGg6IFZpZXdlck9wZW5XaXRoQ29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJNb3JlQWN0aW9uc0NvbXBvbmVudClcbiAgICBtbnVNb3JlQWN0aW9uczogVmlld2VyTW9yZUFjdGlvbnNDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKCd2aWV3ZXJFeHRlbnNpb25zJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgdmlld2VyVGVtcGxhdGVFeHRlbnNpb25zOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZ2V0IENsb3NlQnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiBDbG9zZUJ1dHRvblBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHlvdSB3YW50IHRvIGxvYWQgYW4gZXh0ZXJuYWwgZmlsZSB0aGF0IGRvZXMgbm90IGNvbWUgZnJvbSBBQ1MgeW91XG4gICAgICogY2FuIHVzZSB0aGlzIFVSTCB0byBzcGVjaWZ5IHdoZXJlIHRvIGxvYWQgdGhlIGZpbGUgZnJvbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHVybEZpbGUgPSAnJztcblxuICAgIC8qKiBMb2FkcyBhIEJsb2IgRmlsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYmxvYkZpbGU6IEJsb2I7XG5cbiAgICAvKiogSGlkZSBvciBzaG93IHRoZSB2aWV3ZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dWaWV3ZXIgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93cyBgYmFja2AgbmF2aWdhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dHb0JhY2sgPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgdGhlICdGdWxsIFNjcmVlbicgZmVhdHVyZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RnVsbFNjcmVlbiA9IHRydWU7XG5cbiAgICAvKiogSGlkZSBvciBzaG93IHRoZSB0b29sYmFyICovXG4gICAgQElucHV0KClcbiAgICBzaG93VG9vbGJhciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJZiBgdHJ1ZWAgdGhlbiBzaG93IHRoZSBWaWV3ZXIgYXMgYSBmdWxsIHBhZ2Ugb3ZlciB0aGUgY3VycmVudCBjb250ZW50LlxuICAgICAqIE90aGVyd2lzZSwgZml0IGluc2lkZSB0aGUgcGFyZW50IGRpdi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG92ZXJsYXlNb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIGJlZm9yZS9uZXh0IG5hdmlnYXRpb24uIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBidXR0b25zIHRvIG5hdmlnYXRlXG4gICAgICogYmV0d2VlbiBkb2N1bWVudHMgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd05hdmlnYXRlID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgXCJiZWZvcmVcIiAoXCI8XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZUJlZm9yZSA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgbmV4dCAoXCI+XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZU5leHQgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93IHRoZSBsZWZ0IHRoZSBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dMZWZ0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIEFsbG93IHRoZSByaWdodCBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dSaWdodFNpZGViYXIgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIHJpZ2h0IHNpZGViYXIgdmlzaWJpbGl0eS4gUmVxdWlyZXMgYGFsbG93UmlnaHRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1JpZ2h0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgbGVmdCBzaWRlYmFyIHZpc2liaWxpdHkuIFJlcXVpcmVzIGBhbGxvd0xlZnRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0xlZnRTaWRlYmFyID0gZmFsc2U7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgcmlnaHQgc2lkZWJhci4gVGhlIHRlbXBsYXRlIGNvbnRleHQgY29udGFpbnMgdGhlIGxvYWRlZCBub2RlIGRhdGEuICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyUmlnaHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgbGVmdCBzaWRlYmFyLiBUaGUgdGVtcGxhdGUgY29udGV4dCBjb250YWlucyB0aGUgbG9hZGVkIG5vZGUgZGF0YS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNpZGViYXJMZWZ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqIEVuYWJsZSB3aGVuIHdoZXJlIGlzIHBvc3NpYmxlIHRoZSBlZGl0aW5nIGZ1bmN0aW9uYWxpdGllcyAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRPbmx5ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHdoaWNoIGFjdGlvbnMgYXJlIGVuYWJsZWQgaW4gdGhlIHZpZXdlci5cbiAgICAgKiBFeGFtcGxlOlxuICAgICAqIHsgcm90YXRlOiB0cnVlLCBjcm9wOiBmYWxzZSB9IHdpbGwgZW5hYmxlIHJvdGF0aW9uIGJ1dCBkaXNhYmxlIGNyb3BwaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dlZEVkaXRBY3Rpb25zOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHtcbiAgICAgICAgcm90YXRlOiB0cnVlLFxuICAgICAgICBjcm9wOiB0cnVlXG4gICAgfTtcblxuICAgIC8qKiBtZWRpYSBzdWJ0aXRsZXMgZm9yIHRoZSBtZWRpYSBwbGF5ZXIqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJhY2tzOiBUcmFja1tdID0gW107XG5cbiAgICAvKiogT3ZlcmxvYWQgbWltZVR5cGUqL1xuICAgIEBJbnB1dCgpXG4gICAgbWltZVR5cGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIENvbnRleHQgb2JqZWN0IGF2YWlsYWJsZSBmb3IgYmluZGluZyBieSB0aGUgbG9jYWwgc2lkZWJhclJpZ2h0VGVtcGxhdGUgd2l0aCBsZXQgZGVjbGFyYXRpb25zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0OiBUID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENvbnRleHQgb2JqZWN0IGF2YWlsYWJsZSBmb3IgYmluZGluZyBieSB0aGUgbG9jYWwgc2lkZWJhckxlZnRUZW1wbGF0ZSB3aXRoIGxldCBkZWNsYXJhdGlvbnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyTGVmdFRlbXBsYXRlQ29udGV4dDogVCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2UgdGhlIGNsb3NlIGJ1dHRvbiBwb3NpdGlvbiBSaWdodC9MZWZ0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VCdXR0b25Qb3NpdGlvbiA9IENsb3NlQnV0dG9uUG9zaXRpb24uTGVmdDtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSAnSW5mbyBCdXR0b24nICovXG4gICAgQElucHV0KClcbiAgICBoaWRlSW5mb0J1dHRvbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRlbXBsYXRlIGNvbnRhaW5pbmcgVmlld2VyRXh0ZW5zaW9uRGlyZWN0aXZlIGluc3RhbmNlcyBwcm92aWRpbmcgZGlmZmVyZW50IHZpZXdlciBleHRlbnNpb25zIGJhc2VkIG9uIHN1cHBvcnRlZCBmaWxlIGV4dGVuc2lvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHZpZXdlckV4dGVuc2lvbnM6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogSWRlbnRpZmllciBvZiBhIG5vZGUgdGhhdCBpcyBvcGVuZWQgYnkgdGhlIHZpZXdlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKiBPcmlnaW5hbCBub2RlIG1pbWUgdHlwZSwgc2hvdWxkIGJlIHByb3ZpZGVkIHdoZW4gcmVuZGl0aW9uYSBtaW1lIHR5cGUgaXMgZGlmZmVyZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbm9kZU1pbWVUeXBlOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiogQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB2aWV3ZXIuICovXG4gICAgQElucHV0KClcbiAgICBjdXN0b21FcnJvcjogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqIFRvZ2dsZXMgZGl2aWRlcnMgdmlzaWJpbGl0eSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1Rvb2xiYXJEaXZpZGVycyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUgZGlhbG9nIGJveCB0byBhbGxvdyB1c2VyIHRvIGRvd25sb2FkIHRoZSBwcmV2aWV3ZWQgZmlsZSwgaW4gY2FzZSB0aGUgcHJldmlldyBpcyBub3QgcmVzcG9uZGluZyBmb3IgYSBzZXQgcGVyaW9kIG9mIHRpbWUuXG4gICAgICovXG4gICAgZW5hYmxlRG93bmxvYWRQcm9tcHQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZSByZW1pbmRlciBkaWFsb2dzIHRvIHByb21wdCB1c2VyIHRvIGRvd25sb2FkIHRoZSBmaWxlLCBpbiBjYXNlIHRoZSBwcmV2aWV3IGlzIG5vdCByZXNwb25kaW5nIGZvciBhIHNldCBwZXJpb2Qgb2YgdGltZS5cbiAgICAgKi9cbiAgICBlbmFibGVEb3dubG9hZFByb21wdFJlbWluZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHRpbWUgaW4gc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBnaXZpbmcgdGhlIGZpcnN0IHByb21wdCB0byB1c2VyIHRvIGRvd25sb2FkIHRoZSBmaWxlXG4gICAgICovXG4gICAgZG93bmxvYWRQcm9tcHREZWxheTogbnVtYmVyID0gNTA7XG5cbiAgICAvKipcbiAgICAgKiBUaW1lIGluIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgZ2l2aW5nIHRoZSBzZWNvbmQgYW5kIGNvbnNlcXVlbnQgcmVtaW5kZXJzIHRvIHRoZSB1c2VyIHRvIGRvd25sb2FkIHRoZSBmaWxlLlxuICAgICAqL1xuICAgIGRvd25sb2FkUHJvbXB0UmVtaW5kZXJEZWxheTogbnVtYmVyID0gMTU7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdXNlciBjbGlja3Mgb24gZG93bmxvYWQgYnV0dG9uIG9uIGRvd25sb2FkIHByb21wdCBkaWFsb2cuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgZG93bmxvYWRGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrcyAnTmF2aWdhdGUgQmVmb3JlJyAoXCI8XCIpIGJ1dHRvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBuYXZpZ2F0ZUJlZm9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzICdOYXZpZ2F0ZSBOZXh0JyAoXCI+XCIpIGJ1dHRvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBuYXZpZ2F0ZU5leHQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdmlld2VyIGNsb3NlICovXG4gICAgQE91dHB1dCgpXG4gICAgc2hvd1ZpZXdlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGltZyBpcyBzdWJtaXR0ZWQgaW4gdGhlIGltZyB2aWV3ZXIuICovXG4gICAgQE91dHB1dCgpXG4gICAgc3VibWl0RmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8QmxvYj4oKTtcblxuICAgIHByaXZhdGUgY2xvc2VWaWV3ZXIgPSB0cnVlO1xuICAgIHByaXZhdGUga2V5RG93biQgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXlkb3duJyk7XG4gICAgcHJpdmF0ZSBpc0RpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9maWxlTmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgX2ZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgX2ZpbGVFeHRlbnNpb246IHN0cmluZztcblxuICAgIHB1YmxpYyBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyBkb3dubG9hZFByb21wdFRpbWVyOiBudW1iZXI7XG4gICAgcHVibGljIGRvd25sb2FkUHJvbXB0UmVtaW5kZXJUaW1lcjogbnVtYmVyO1xuICAgIHB1YmxpYyBtaW1lVHlwZUljb25Vcmw6IHN0cmluZztcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBPdmVycmlkZSBDb250ZW50IGZpbGVuYW1lLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpbGVOYW1lKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZmlsZU5hbWUgPSBmaWxlTmFtZTtcbiAgICAgICAgdGhpcy5fZmlsZUV4dGVuc2lvbiA9IHRoaXMudmlld1V0aWxzU2VydmljZS5nZXRGaWxlRXh0ZW5zaW9uKHRoaXMuZmlsZU5hbWUpO1xuICAgICAgICB0aGlzLl9maWxlTmFtZVdpdGhvdXRFeHRlbnNpb24gPSB0aGlzLmZpbGVOYW1lPy5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7dGhpcy5maWxlRXh0ZW5zaW9ufSRgKSwgJycpIHx8ICcnO1xuICAgICAgICB0aGlzLmRpc3BsYXlOYW1lID0gdGhpcy5nZXREaXNwbGF5RmlsZU5hbWUoKTtcbiAgICB9XG5cbiAgICBnZXQgZmlsZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVOYW1lO1xuICAgIH1cblxuICAgIGdldCBmaWxlRXh0ZW5zaW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlRXh0ZW5zaW9uO1xuICAgIH1cblxuICAgIGdldCBmaWxlTmFtZVdpdGhvdXRFeHRlbnNpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbjtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHZpZXdVdGlsc1NlcnZpY2U6IFZpZXdVdGlsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCB7IGJsb2JGaWxlLCB1cmxGaWxlLCBtaW1lVHlwZSwgbm9kZU1pbWVUeXBlIH0gPSBjaGFuZ2VzO1xuXG4gICAgICAgIGlmIChibG9iRmlsZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm1pbWVUeXBlID0gYmxvYkZpbGUuY3VycmVudFZhbHVlLnR5cGU7XG4gICAgICAgICAgICB0aGlzLm1pbWVUeXBlSWNvblVybCA9IHRoaXMudGh1bWJuYWlsU2VydmljZS5nZXRNaW1lVHlwZUljb24oYmxvYkZpbGUuY3VycmVudFZhbHVlLnR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVybEZpbGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlTmFtZSB8fD0gdGhpcy52aWV3VXRpbHNTZXJ2aWNlLmdldEZpbGVuYW1lRnJvbVVybCh1cmxGaWxlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWltZVR5cGU/LmN1cnJlbnRWYWx1ZSAmJiAhbm9kZU1pbWVUeXBlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubWltZVR5cGVJY29uVXJsID0gdGhpcy50aHVtYm5haWxTZXJ2aWNlLmdldE1pbWVUeXBlSWNvbihtaW1lVHlwZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGVNaW1lVHlwZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm1pbWVUeXBlSWNvblVybCA9IHRoaXMudGh1bWJuYWlsU2VydmljZS5nZXRNaW1lVHlwZUljb24obm9kZU1pbWVUeXBlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZU92ZXJsYXlNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuY29uZmlndXJlQW5kSW5pdERvd25sb2FkUHJvbXB0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZU92ZXJsYXlNYW5hZ2VyKCkge1xuICAgICAgICB0aGlzLmRpYWxvZy5hZnRlck9wZW5lZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc2tpcFdoaWxlKCgpID0+ICF0aGlzLm92ZXJsYXlNb2RlKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiAodGhpcy5jbG9zZVZpZXdlciA9IGZhbHNlKSk7XG5cbiAgICAgICAgdGhpcy5kaWFsb2cuYWZ0ZXJBbGxDbG9zZWRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXBXaGlsZSgoKSA9PiAhdGhpcy5vdmVybGF5TW9kZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuY2xvc2VWaWV3ZXIgPSB0cnVlKSk7XG5cbiAgICAgICAgdGhpcy5rZXlEb3duJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc2tpcFdoaWxlKCgpID0+ICF0aGlzLm92ZXJsYXlNb2RlKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGU6IEtleWJvYXJkRXZlbnQpID0+IGUua2V5Q29kZSA9PT0gMjcpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jbG9zZVZpZXdlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk5hdmlnYXRlQmVmb3JlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzZXRMb2FkaW5nU3Bpbm5lcigpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlQmVmb3JlLm5leHQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uTmF2aWdhdGVOZXh0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzZXRMb2FkaW5nU3Bpbm5lcigpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlTmV4dC5uZXh0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjbG9zZSB0aGUgdmlld2VyXG4gICAgICovXG4gICAgb25DbG9zZSgpIHtcbiAgICAgICAgdGhpcy5zaG93Vmlld2VyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1ZpZXdlckNoYW5nZS5lbWl0KHRoaXMuc2hvd1ZpZXdlcik7XG4gICAgfVxuXG4gICAgdG9nZ2xlUmlnaHRTaWRlYmFyKCkge1xuICAgICAgICB0aGlzLnNob3dSaWdodFNpZGViYXIgPSAhdGhpcy5zaG93UmlnaHRTaWRlYmFyO1xuICAgIH1cblxuICAgIHRvZ2dsZUxlZnRTaWRlYmFyKCkge1xuICAgICAgICB0aGlzLnNob3dMZWZ0U2lkZWJhciA9ICF0aGlzLnNob3dMZWZ0U2lkZWJhcjtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQ/LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0xlZnQnICYmIHRoaXMuY2FuTmF2aWdhdGVCZWZvcmUpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLm9uTmF2aWdhdGVCZWZvcmVDbGljayhldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcgJiYgdGhpcy5jYW5OYXZpZ2F0ZU5leHQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLm9uTmF2aWdhdGVOZXh0Q2xpY2soZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdLZXlGJyAmJiBldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5lbnRlckZ1bGxTY3JlZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIGZ1bGwgc2NyZWVuIG1vZGUgd2l0aCBhIG1haW4gY29udGVudCBhcmVhIGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBlbnRlckZ1bGxTY3JlZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFsbG93RnVsbFNjcmVlbikge1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZGYtdmlld2VyX19mdWxsc2NyZWVuLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIucmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250YWluZXIud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250YWluZXIubW96UmVxdWVzdEZ1bGxTY3JlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLm1velJlcXVlc3RGdWxsU2NyZWVuKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250YWluZXIubXNSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIubXNSZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU3VibWl0RmlsZShuZXdJbWFnZUJsb2I6IEJsb2IpIHtcbiAgICAgICAgdGhpcy5zdWJtaXRGaWxlLmVtaXQobmV3SW1hZ2VCbG9iKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbGVhckRvd25sb2FkUHJvbXB0VGltZW91dHMoKTtcbiAgICB9XG5cbiAgICBnZXREaXNwbGF5RmlsZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZnVsbE5hbWUgPSAodGhpcy5maWxlTmFtZVdpdGhvdXRFeHRlbnNpb24gfHwgJycpICsgKHRoaXMuZmlsZUV4dGVuc2lvbiB8fCAnJyk7XG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IDUwO1xuXG4gICAgICAgIGlmIChmdWxsTmFtZS5sZW5ndGggPD0gbWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVsbE5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhbW91bnRPZlRydW5jYXRlRG90cyA9IDU7XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZVNwYWNlID0gbWF4TGVuZ3RoIC0gYW1vdW50T2ZUcnVuY2F0ZURvdHM7XG4gICAgICAgIGNvbnN0IGVuZExlbmd0aCA9IDg7XG4gICAgICAgIGNvbnN0IHN0YXJ0TGVuZ3RoID0gYXZhaWxhYmxlU3BhY2UgLSBlbmRMZW5ndGg7XG5cbiAgICAgICAgY29uc3Qgc3RhcnQgPSBmdWxsTmFtZS5zdWJzdHJpbmcoMCwgc3RhcnRMZW5ndGgpO1xuICAgICAgICBjb25zdCBlbmQgPSBmdWxsTmFtZS5zdWJzdHJpbmcoZnVsbE5hbWUubGVuZ3RoIC0gZW5kTGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0ICsgJy4uLi4uJyArIGVuZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpZ3VyZUFuZEluaXREb3dubG9hZFByb21wdCgpIHtcbiAgICAgICAgdGhpcy5jb25maWd1cmVEb3dubG9hZFByb21wdFByb3BlcnRpZXMoKTtcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlRG93bmxvYWRQcm9tcHQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdERvd25sb2FkUHJvbXB0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpZ3VyZURvd25sb2FkUHJvbXB0UHJvcGVydGllcygpIHtcbiAgICAgICAgY29uc3Qgbm9uUmVzcG9uc2l2ZVByZXZpZXdDb25maWcgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0KCd2aWV3ZXInLCBERUZBVUxUX05PTl9QUkVWSUVXX0NPTkZJRyk7XG5cbiAgICAgICAgdGhpcy5lbmFibGVEb3dubG9hZFByb21wdCA9IG5vblJlc3BvbnNpdmVQcmV2aWV3Q29uZmlnLmVuYWJsZURvd25sb2FkUHJvbXB0O1xuICAgICAgICB0aGlzLmVuYWJsZURvd25sb2FkUHJvbXB0UmVtaW5kZXIgPSBub25SZXNwb25zaXZlUHJldmlld0NvbmZpZy5lbmFibGVEb3dubG9hZFByb21wdFJlbWluZGVyO1xuICAgICAgICB0aGlzLmRvd25sb2FkUHJvbXB0RGVsYXkgPSBub25SZXNwb25zaXZlUHJldmlld0NvbmZpZy5kb3dubG9hZFByb21wdERlbGF5O1xuICAgICAgICB0aGlzLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJEZWxheSA9IG5vblJlc3BvbnNpdmVQcmV2aWV3Q29uZmlnLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJEZWxheTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREb3dubG9hZFByb21wdCgpIHtcbiAgICAgICAgdGhpcy5kb3dubG9hZFByb21wdFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93T3JDbGVhckRvd25sb2FkUHJvbXB0KCk7XG4gICAgICAgIH0sIHRoaXMuZG93bmxvYWRQcm9tcHREZWxheSAqIDEwMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd09yQ2xlYXJEb3dubG9hZFByb21wdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnVybEZpbGUgJiYgIXRoaXMuYmxvYkZpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0Rvd25sb2FkUHJvbXB0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRG93bmxvYWRQcm9tcHRUaW1lb3V0cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyRG93bmxvYWRQcm9tcHRUaW1lb3V0cygpIHtcbiAgICAgICAgaWYgKHRoaXMuZG93bmxvYWRQcm9tcHRUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZG93bmxvYWRQcm9tcHRUaW1lcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZG93bmxvYWRQcm9tcHRSZW1pbmRlclRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5kb3dubG9hZFByb21wdFJlbWluZGVyVGltZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93RG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0RpYWxvZ1Zpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNEaWFsb2dWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nXG4gICAgICAgICAgICAgICAgLm9wZW4oRG93bmxvYWRQcm9tcHREaWFsb2dDb21wb25lbnQsIHsgZGlzYWJsZUNsb3NlOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogRG93bmxvYWRQcm9tcHRBY3Rpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEaWFsb2dWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IERvd25sb2FkUHJvbXB0QWN0aW9ucy5ET1dOTE9BRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUuZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSBEb3dubG9hZFByb21wdEFjdGlvbnMuV0FJVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZW5hYmxlRG93bmxvYWRQcm9tcHRSZW1pbmRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJEb3dubG9hZFByb21wdFRpbWVvdXRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFByb21wdFJlbWluZGVyVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd09yQ2xlYXJEb3dubG9hZFByb21wdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuZG93bmxvYWRQcm9tcHRSZW1pbmRlckRlbGF5ICogMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRMb2FkaW5nU3Bpbm5lcigpIHtcbiAgICAgICAgdGhpcy51cmxGaWxlID0gJyc7XG4gICAgICAgIHRoaXMuYmxvYkZpbGUgPSBudWxsO1xuICAgIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJzaG93Vmlld2VyXCJcbiAgICAgY2xhc3M9XCJhZGYtdmlld2VyLWNvbnRhaW5lclwiXG4gICAgIFtjbGFzcy5hZGYtdmlld2VyLW92ZXJsYXktY29udGFpbmVyXT1cIm92ZXJsYXlNb2RlXCJcbiAgICAgW2NsYXNzLmFkZi12aWV3ZXItaW5saW5lLWNvbnRhaW5lcl09XCIhb3ZlcmxheU1vZGVcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyLWNvbnRlbnRcIlxuICAgICAgICAgW2Nka1RyYXBGb2N1c109XCJvdmVybGF5TW9kZVwiXG4gICAgICAgICBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZT5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLXZpZXdlci10b29sYmFyXCIgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb29sYmFyICYmICF0b29sYmFyXCI+XG4gICAgICAgICAgICA8YWRmLXRvb2xiYXIgaWQ9XCJhZGYtdmlld2VyLXRvb2xiYXJcIiBjbGFzcz1cImFkZi12aWV3ZXItdG9vbGJhclwiPlxuICAgICAgICAgICAgICAgIDxhZGYtdG9vbGJhci10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93TGVmdFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwic2hvd0xlZnRTaWRlYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLklORk8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLklORk8nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItbGVmdC1zaWRlYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInNob3dMZWZ0U2lkZWJhciA/ICdhY2NlbnQnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVMZWZ0U2lkZWJhcigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmluZm9fb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFsbG93R29CYWNrICYmIGNsb3NlQnV0dG9uUG9zaXRpb24gPT09IENsb3NlQnV0dG9uUG9zaXRpb24uTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtdmlld2VyLWNsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItbGVmdC1iYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2FkZi10b29sYmFyLXRpdGxlPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi12aWV3ZXJfX2ZpbGUtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFsbG93TmF2aWdhdGUgJiYgY2FuTmF2aWdhdGVCZWZvcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLXByZWYtZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLlBSRVZfRklMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5QUkVWX0ZJTEUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZpZ2F0ZUJlZm9yZUNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5uYXZpZ2F0ZV9iZWZvcmU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImFkZi12aWV3ZXJfX21pbWVpY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIidBREZfVklFV0VSLkFSSUEuTUlNRV9UWVBFX0lDT04nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm1pbWVUeXBlSWNvblVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWZpbGUtdGh1bWJuYWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyX19kaXNwbGF5LW5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLXZpZXdlci1kaXNwbGF5LW5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGlzcGxheU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWxsb3dOYXZpZ2F0ZSAmJiBjYW5OYXZpZ2F0ZU5leHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLW5leHQtZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLk5FWFRfRklMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5ORVhUX0ZJTEUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZpZ2F0ZU5leHRDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bmF2aWdhdGVfbmV4dDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnNcIiAvPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1udU9wZW5XaXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD0nYWRmLXRvb2xiYXItY3VzdG9tLWJ0bic+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJhZGYtdmlld2VyLW9wZW53aXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1udU9wZW5XaXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1vcGVuLXdpdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdBREZfVklFV0VSLkFDVElPTlMuT1BFTl9XSVRIJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtbnVPcGVuV2l0aD1cIm1hdE1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW292ZXJsYXBUcmlnZ2VyXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLW9wZW4td2l0aFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICBAaWYgKHNob3dUb29sYmFyRGl2aWRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFkZi10b29sYmFyLWRpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLXRvb2xiYXItY3VzdG9tLWFjdGlvbnNcIiAvPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImFkZi12aWV3ZXItZnVsbHNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFsbG93RnVsbFNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5GVUxMU0NSRUVOJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuRlVMTFNDUkVFTicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItZnVsbHNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW50ZXJGdWxsU2NyZWVuKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmZ1bGxzY3JlZW48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93UmlnaHRTaWRlYmFyICYmICFoaWRlSW5mb0J1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLXRvb2xiYXItZGl2aWRlciAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJzaG93UmlnaHRTaWRlYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuSU5GTycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItc2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInNob3dSaWdodFNpZGViYXIgPyAnYWNjZW50JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSaWdodFNpZGViYXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmluZm9fb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW51TW9yZUFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImFkZi12aWV3ZXItbW9yZWFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtbnVNb3JlQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLk1PUkVfQUNUSU9OUycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5NT1JFX0FDVElPTlMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1tb3JlLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtbnVNb3JlQWN0aW9ucz1cIm1hdE1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW292ZXJsYXBUcmlnZ2VyXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLW1vcmUtYWN0aW9uc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dHb0JhY2sgJiYgY2xvc2VCdXR0b25Qb3NpdGlvbiA9PT0gQ2xvc2VCdXR0b25Qb3NpdGlvbi5SaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dUb29sYmFyRGl2aWRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZi12aWV3ZXItY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1yaWdodC1iYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi12aWV3ZXItc2lkZWJhcnNcIj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93UmlnaHRTaWRlYmFyICYmIHNob3dSaWdodFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICBpZD1cImFkZi1yaWdodC1zaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaWRlYmFyUmlnaHRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJSaWdodFRlbXBsYXRlO2NvbnRleHQ6c2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIXNpZGViYXJSaWdodFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dMZWZ0U2lkZWJhciAmJiBzaG93TGVmdFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLWxlZnQtc2lkZWJhclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2lkZWJhckxlZnRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJMZWZ0VGVtcGxhdGU7Y29udGV4dDpzaWRlYmFyTGVmdFRlbXBsYXRlQ29udGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFzaWRlYmFyTGVmdFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8YWRmLXZpZXdlci1yZW5kZXIgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbWVUeXBlXT1cIm1pbWVUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsZU5hbWVdPVwiZmlsZU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtibG9iRmlsZV09XCJibG9iRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VibWl0RmlsZSk9XCJvblN1Ym1pdEZpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG93ZWRFZGl0QWN0aW9uc109XCJhbGxvd2VkRWRpdEFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxGaWxlXT1cInVybEZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc1NhdmluZyk9XCJhbGxvd05hdmlnYXRlID0gISRldmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYWNrc109XCJ0cmFja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNdPVwidmlld2VyRXh0ZW5zaW9ucyA/PyB2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRXJyb3JdPVwiY3VzdG9tRXJyb3JcIiAvPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|