barsa-sap-ui 2.1.1 → 2.1.2
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/fesm2022/barsa-sap-ui.mjs +289 -257
- package/fesm2022/barsa-sap-ui.mjs.map +1 -1
- package/lib/ui-map/ui-map.component.d.ts +2 -0
- package/package.json +3 -5
- package/esm2022/barsa-sap-ui.mjs +0 -5
- package/esm2022/lib/apply-conditional-formmatings.directive.mjs +0 -89
- package/esm2022/lib/avatar-size.pipe.mjs +0 -40
- package/esm2022/lib/barsa-answer-card/barsa-answer-card.component.mjs +0 -41
- package/esm2022/lib/barsa-asp-viewer/barsa-asp-viewer.component.mjs +0 -145
- package/esm2022/lib/barsa-bar-panel/barsa-bar-panel.component.mjs +0 -23
- package/esm2022/lib/barsa-base-panel/barsa-base-layout-panel.component.mjs +0 -29
- package/esm2022/lib/barsa-breadcrumbs/barsa-breadcrumbs.component.mjs +0 -24
- package/esm2022/lib/barsa-card-layout-panel/barsa-card-layout-panel.component.mjs +0 -24
- package/esm2022/lib/barsa-card-row-payam/barsa-card-row-payam.component.mjs +0 -31
- package/esm2022/lib/barsa-cartable-form/barsa-cartable-form.component.mjs +0 -41
- package/esm2022/lib/barsa-cartable-template/barsa-cartable-template.component.mjs +0 -24
- package/esm2022/lib/barsa-chat/barsa-chat.component.mjs +0 -242
- package/esm2022/lib/barsa-chat/chat.model.mjs +0 -8
- package/esm2022/lib/barsa-chat-content/barsa-chat-content.component.mjs +0 -13
- package/esm2022/lib/barsa-chat-content-toolbar/barsa-chat-content-toolbar.component.mjs +0 -22
- package/esm2022/lib/barsa-chat-list/barsa-chat-list.component.mjs +0 -66
- package/esm2022/lib/barsa-chat-message/barsa-chat-message.component.mjs +0 -78
- package/esm2022/lib/barsa-chat-thread/barsa-chat-thread.component.mjs +0 -22
- package/esm2022/lib/barsa-chat-threads-list/barsa-chat-threads-list.component.mjs +0 -13
- package/esm2022/lib/barsa-chat-threads-list-toolbar/barsa-chat-threads-list-toolbar.component.mjs +0 -15
- package/esm2022/lib/barsa-chip/barsa-chip.component.mjs +0 -72
- package/esm2022/lib/barsa-column-indicator/barsa-column-indicator.component.mjs +0 -23
- package/esm2022/lib/barsa-column-rownumber/barsa-column-rownumber.component.mjs +0 -14
- package/esm2022/lib/barsa-custom-inline-edit/barsa-custom-inline-edit.component.mjs +0 -14
- package/esm2022/lib/barsa-custom-inline-edit-row/barsa-custom-inline-edit-row.component.mjs +0 -26
- package/esm2022/lib/barsa-date-time-picker/barsa-date-time-picker.component.mjs +0 -71
- package/esm2022/lib/barsa-dynamic-field/barsa-dynamic-field.component.mjs +0 -40
- package/esm2022/lib/barsa-enum-menu-button/barsa-enum-menu-button.component.mjs +0 -61
- package/esm2022/lib/barsa-field-key-value/barsa-field-key-value.component.mjs +0 -45
- package/esm2022/lib/barsa-form-side-content/barsa-form-side-content.component.mjs +0 -58
- package/esm2022/lib/barsa-grid-layout-panel/barsa-grid-layout-panel.component.mjs +0 -27
- package/esm2022/lib/barsa-group-cartable/barsa-cartable-group.component.mjs +0 -94
- package/esm2022/lib/barsa-horizontal-flex-panel/barsa-horizontal-flex-panel.component.mjs +0 -22
- package/esm2022/lib/barsa-linkable-items-panel/barsa-linkable-items-panel.component.mjs +0 -37
- package/esm2022/lib/barsa-list-file-linear/barsa-list-file-linear.component.mjs +0 -41
- package/esm2022/lib/barsa-list-file-linear-gmail/barsa-list-file-linear-gmail.component.mjs +0 -29
- package/esm2022/lib/barsa-list-layout-panel/barsa-list-layout-panel.component.mjs +0 -23
- package/esm2022/lib/barsa-modal/barsa-modal.component.mjs +0 -43
- package/esm2022/lib/barsa-monaco-editor/barsa-monaco-editor.component.mjs +0 -83
- package/esm2022/lib/barsa-network-offline/barsa-network-offline.component.mjs +0 -57
- package/esm2022/lib/barsa-pishnamayesh-payam/barsa-pishnamayesh-payam.component.mjs +0 -159
- package/esm2022/lib/barsa-question-answer-comments-section/barsa-question-answer-comments-section.component.mjs +0 -17
- package/esm2022/lib/barsa-question-answer-content-actions-section/barsa-question-answer-content-actions-section.component.mjs +0 -30
- package/esm2022/lib/barsa-question-answer-creator-time-section/barsa-question-answer-creator-time-section.component.mjs +0 -14
- package/esm2022/lib/barsa-question-answer-form/barsa-question-answer-form.component.mjs +0 -34
- package/esm2022/lib/barsa-question-answer-form-add-comment/barsa-question-answer-form-add-comment.component.mjs +0 -46
- package/esm2022/lib/barsa-question-answer-vote-section/barsa-question-answer-vote-section.component.mjs +0 -79
- package/esm2022/lib/barsa-question-post/barsa-question-post.component.mjs +0 -30
- package/esm2022/lib/barsa-report-card-flex-view/barsa-report-card-flex-view.component.mjs +0 -31
- package/esm2022/lib/barsa-report-checkbox-switch-button/barsa-report-checkbox-switch-button.component.mjs +0 -28
- package/esm2022/lib/barsa-report-one-of-list/barsa-report-one-of-list.component.mjs +0 -102
- package/esm2022/lib/barsa-row-inline-actionlist/barsa-row-inline-actionlist.component.mjs +0 -26
- package/esm2022/lib/barsa-sap-ui-routing.module.mjs +0 -18
- package/esm2022/lib/barsa-sap-ui.module.mjs +0 -374
- package/esm2022/lib/barsa-search-form/barsa-search-form.component.mjs +0 -29
- package/esm2022/lib/barsa-simple-form/barsa-simple-form.component.mjs +0 -170
- package/esm2022/lib/barsa-tab-route-manager/barsa-tab-route-manager.component.mjs +0 -18
- package/esm2022/lib/barsa-table-column/barsa-table-column.component.mjs +0 -29
- package/esm2022/lib/barsa-table-header/barsa-table-header.component.mjs +0 -222
- package/esm2022/lib/barsa-table-row/barsa-table-row.component.mjs +0 -87
- package/esm2022/lib/barsa-tag-categories/barsa-tag-categories.component.mjs +0 -60
- package/esm2022/lib/barsa-tag-chip/barsa-tag-chip.component.mjs +0 -26
- package/esm2022/lib/barsa-tags-category-row/barsa-tags-category-row.component.mjs +0 -23
- package/esm2022/lib/barsa-text-ellipsis/barsa-text-ellipsis.component.mjs +0 -37
- package/esm2022/lib/barsa-tinyemce/barsa-tinyemce.component.mjs +0 -418
- package/esm2022/lib/barsa-toolbaritem-search/barsa-toolbaritem-search.component.mjs +0 -36
- package/esm2022/lib/barsa-tree-item/barsa-tree-item.component.mjs +0 -153
- package/esm2022/lib/barsa-tree-item/node-has-one-depth-level.pipe.mjs +0 -19
- package/esm2022/lib/barsa-ulv-main/barsa-ulv-main.component.mjs +0 -216
- package/esm2022/lib/blob-viewer/blob-viewer.component.mjs +0 -74
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -50
- package/esm2022/lib/captcha-field/captcha-field.component.mjs +0 -28
- package/esm2022/lib/card-item/card-item.component.mjs +0 -64
- package/esm2022/lib/card-view-content/card-view-content.component.mjs +0 -46
- package/esm2022/lib/col-renderer.directive.mjs +0 -46
- package/esm2022/lib/column-matrix-renderer/column-matrix-renderer.component.mjs +0 -56
- package/esm2022/lib/column-matrix-renderer/matrix-value.pipe.mjs +0 -60
- package/esm2022/lib/column-renderer/column-renderer.component.mjs +0 -88
- package/esm2022/lib/constants.mjs +0 -425
- package/esm2022/lib/custom-date-time/custom-date-time.component.mjs +0 -41
- package/esm2022/lib/device-info-field-base.mjs +0 -23
- package/esm2022/lib/dialog-handler.directive.mjs +0 -28
- package/esm2022/lib/download-files.directive.mjs +0 -33
- package/esm2022/lib/dynamic-page-size.pipe.mjs +0 -26
- package/esm2022/lib/file-in-dialog/file-in-dialog.component.mjs +0 -44
- package/esm2022/lib/file-viewer/file-viewer.component.mjs +0 -47
- package/esm2022/lib/file-viewer-content/file-viewer-content.component.mjs +0 -71
- package/esm2022/lib/file-viewer-popover/file-viewer-popover.component.mjs +0 -39
- package/esm2022/lib/form-dialog/form-dialog.component.mjs +0 -171
- package/esm2022/lib/form-dialog-less/form-dialog-less.component.mjs +0 -50
- package/esm2022/lib/form-toolbar/form-toolbar.component.mjs +0 -62
- package/esm2022/lib/form-toolbar-button/form-toolbar-button.component.mjs +0 -45
- package/esm2022/lib/form-wizard/form-wizard.component.mjs +0 -21
- package/esm2022/lib/fullscreen-dialog.directive.mjs +0 -59
- package/esm2022/lib/fullscreen-files.directive.mjs +0 -42
- package/esm2022/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +0 -213
- package/esm2022/lib/gantt-dhtml-chart-view/gantt-dhtml-chart-view.component.mjs +0 -215
- package/esm2022/lib/global-search/global-search.component.mjs +0 -27
- package/esm2022/lib/global-search-module/global-search-module.component.mjs +0 -29
- package/esm2022/lib/global-search-panel/global-search-panel.component.mjs +0 -25
- package/esm2022/lib/header-avatar/header-avatar.component.mjs +0 -18
- package/esm2022/lib/htree-create-new/htree-create-new.component.mjs +0 -48
- package/esm2022/lib/hyperlink/hyperlink.component.mjs +0 -23
- package/esm2022/lib/index.mjs +0 -543
- package/esm2022/lib/inline-save-and-cancel/inline-save-and-cancel.component.mjs +0 -32
- package/esm2022/lib/layout-actions/layout-actions.component.mjs +0 -70
- package/esm2022/lib/layout-control/layout-control.component.mjs +0 -302
- package/esm2022/lib/layout-wizard/layout-wizard.component.mjs +0 -183
- package/esm2022/lib/list-item/list-item.component.mjs +0 -34
- package/esm2022/lib/ly-empty-space/ly-empty-space.component.mjs +0 -42
- package/esm2022/lib/ly-horizontal-layout/ly-horizontal-layout.component.mjs +0 -82
- package/esm2022/lib/ly-label/ly-label.component.mjs +0 -37
- package/esm2022/lib/ly-layout-container/ly-layout-container.component.mjs +0 -83
- package/esm2022/lib/ly-layout-container-of-root/ly-layout-container-of-root.component.mjs +0 -17
- package/esm2022/lib/ly-layout-field-label/ly-layout-field-label.component.mjs +0 -24
- package/esm2022/lib/ly-layout-panel/ly-layout-panel.component.mjs +0 -83
- package/esm2022/lib/ly-line/ly-line.component.mjs +0 -56
- package/esm2022/lib/ly-simple-label/ly-simple-label.component.mjs +0 -22
- package/esm2022/lib/ly-tab-container/ly-tab-container.component.mjs +0 -45
- package/esm2022/lib/ly-tab-page/ly-tab-page.component.mjs +0 -44
- package/esm2022/lib/ly-vertical-layout/ly-vertical-layout.component.mjs +0 -51
- package/esm2022/lib/manage-filters-report/manage-filters-report.component.mjs +0 -43
- package/esm2022/lib/mask/mask.component.mjs +0 -22
- package/esm2022/lib/message-strip/message-strip.component.mjs +0 -28
- package/esm2022/lib/models/grid-data-provider.mjs +0 -114
- package/esm2022/lib/models/grid-view.mjs +0 -2
- package/esm2022/lib/models/index.mjs +0 -2
- package/esm2022/lib/no-data/no-data.component.mjs +0 -31
- package/esm2022/lib/notification-item/notification-item.component.mjs +0 -57
- package/esm2022/lib/notification-popup.service.mjs +0 -92
- package/esm2022/lib/object-status-icon.pipe.mjs +0 -26
- package/esm2022/lib/progress-indicator/progress-indicator.component.mjs +0 -18
- package/esm2022/lib/report-navigator/report-navigator.component.mjs +0 -68
- package/esm2022/lib/report-new-top-form/report-new-top-form.component.mjs +0 -60
- package/esm2022/lib/report-search-fields-hidden-settings/report-search-fields-hidden-settings.component.mjs +0 -35
- package/esm2022/lib/report-search-fields-manage/report-search-fields-manage.component.mjs +0 -97
- package/esm2022/lib/report-search-panel-save/report-search-panel-save.component.mjs +0 -88
- package/esm2022/lib/report-tree-base.mjs +0 -386
- package/esm2022/lib/report-view-renderer.directive.mjs +0 -385
- package/esm2022/lib/responsive-toolbar/responsive-toolbar.component.mjs +0 -50
- package/esm2022/lib/responsive-toolbar-renderer/responsive-toolbar-renderer.component.mjs +0 -84
- package/esm2022/lib/rich-text-static/rich-text-static.component.mjs +0 -72
- package/esm2022/lib/sap-font-class.pipe.mjs +0 -29
- package/esm2022/lib/sap-font.pipe.mjs +0 -29
- package/esm2022/lib/sap-size.pipe.mjs +0 -27
- package/esm2022/lib/sap-ui-report-base.component.mjs +0 -805
- package/esm2022/lib/search-panel/search-panel.component.mjs +0 -63
- package/esm2022/lib/static-text/static-text.component.mjs +0 -15
- package/esm2022/lib/table-th.directive.mjs +0 -86
- package/esm2022/lib/title/title.component.mjs +0 -15
- package/esm2022/lib/ui-asp-report-viewer/ui-asp-report-viewer.component.mjs +0 -34
- package/esm2022/lib/ui-bpmn-viewer/ui-bpmn-viewer.component.mjs +0 -33
- package/esm2022/lib/ui-button/ui-button.component.mjs +0 -32
- package/esm2022/lib/ui-calendar/ui-calendar.component.mjs +0 -53
- package/esm2022/lib/ui-card-view/ui-card-view.component.mjs +0 -57
- package/esm2022/lib/ui-card-view-horizontal-group/ui-card-view-horizontal-group.component.mjs +0 -42
- package/esm2022/lib/ui-check-box/ui-check-box.component.mjs +0 -39
- package/esm2022/lib/ui-color-ui/ui-color-ui.component.mjs +0 -50
- package/esm2022/lib/ui-container-with-button/ui-container-with-button.component.mjs +0 -38
- package/esm2022/lib/ui-date-range-ex/ui-date-range-ex.component.mjs +0 -191
- package/esm2022/lib/ui-date-time/ui-date-time.component.mjs +0 -150
- package/esm2022/lib/ui-editable-grid/ui-editable-grid.component.mjs +0 -110
- package/esm2022/lib/ui-exception-form/ui-exception-form.component.mjs +0 -53
- package/esm2022/lib/ui-file-linear-list-box/ui-file-linear-list-box.component.mjs +0 -121
- package/esm2022/lib/ui-form-panel/ui-form-panel.component.mjs +0 -100
- package/esm2022/lib/ui-gantt-chart/ui-gantt-chart.component.mjs +0 -32
- package/esm2022/lib/ui-graph/ui-graph.component.mjs +0 -17
- package/esm2022/lib/ui-grid/ui-grid.component.mjs +0 -25
- package/esm2022/lib/ui-grid-columns/ui-grid-columns.component.mjs +0 -43
- package/esm2022/lib/ui-grid-filter-item/ui-grid-filter-item.component.mjs +0 -66
- package/esm2022/lib/ui-grid-filter-settings/ui-grid-filter-settings.component.mjs +0 -75
- package/esm2022/lib/ui-grid-sort-item/ui-grid-sort-item.component.mjs +0 -58
- package/esm2022/lib/ui-grid-sort-setting/ui-grid-sort-setting.component.mjs +0 -123
- package/esm2022/lib/ui-html-viewer/ui-html-viewer.component.mjs +0 -16
- package/esm2022/lib/ui-info-bar-panel/ui-info-bar-panel.component.mjs +0 -11
- package/esm2022/lib/ui-label/ui-label.component.mjs +0 -12
- package/esm2022/lib/ui-linear-list-container-with-button/ui-linear-list-container-with-button.component.mjs +0 -379
- package/esm2022/lib/ui-list-view/ui-list-view.component.mjs +0 -84
- package/esm2022/lib/ui-map/ui-map.component.mjs +0 -58
- package/esm2022/lib/ui-matrix-view/ui-matrix-view.component.mjs +0 -124
- package/esm2022/lib/ui-mo-info-combo-viewer/ui-mo-info-combo-viewer.component.mjs +0 -19
- package/esm2022/lib/ui-mo-info-general-object-ui/ui-mo-info-general-object-ui.component.mjs +0 -14
- package/esm2022/lib/ui-mo-info-sub-form-ui/ui-mo-info-sub-form-ui.component.mjs +0 -55
- package/esm2022/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.mjs +0 -429
- package/esm2022/lib/ui-monaco-editor/ui-monaco-editor.component.mjs +0 -28
- package/esm2022/lib/ui-multi-select-card/ui-multi-select-card.component.mjs +0 -37
- package/esm2022/lib/ui-multi-select-checkbox/ui-multi-select-checkbox.component.mjs +0 -59
- package/esm2022/lib/ui-multi-select-combo/ui-multi-select-combo.component.mjs +0 -93
- package/esm2022/lib/ui-multi-select-radio/ui-multi-select-radio.component.mjs +0 -36
- package/esm2022/lib/ui-multi-select-slider/ui-multi-select-slider.component.mjs +0 -56
- package/esm2022/lib/ui-multi-select-smile/ui-multi-select-smile.component.mjs +0 -28
- package/esm2022/lib/ui-num-decimal-ui/ui-num-decimal-ui.component.mjs +0 -33
- package/esm2022/lib/ui-num-int-slider/ui-num-int-slider.component.mjs +0 -27
- package/esm2022/lib/ui-num-int-ui/ui-num-int-ui.component.mjs +0 -21
- package/esm2022/lib/ui-pdf-viewer/ui-pdf-viewer.component.mjs +0 -268
- package/esm2022/lib/ui-picture-file/ui-picture-file.component.mjs +0 -101
- package/esm2022/lib/ui-pictures-info/ui-pictures-info.component.mjs +0 -261
- package/esm2022/lib/ui-radio-group/ui-radio-group.component.mjs +0 -48
- package/esm2022/lib/ui-read-only-field/ui-read-only-field.component.mjs +0 -36
- package/esm2022/lib/ui-report-container/ui-report-container.component.mjs +0 -46
- package/esm2022/lib/ui-search-command-info-ui/ui-search-command-info-ui.component.mjs +0 -24
- package/esm2022/lib/ui-simple-combo/ui-simple-combo.component.mjs +0 -55
- package/esm2022/lib/ui-single-picture/ui-single-picture.component.mjs +0 -36
- package/esm2022/lib/ui-switch-button/ui-switch-button.component.mjs +0 -20
- package/esm2022/lib/ui-table-view/ui-table-view.component.mjs +0 -289
- package/esm2022/lib/ui-text-area/ui-text-area.component.mjs +0 -49
- package/esm2022/lib/ui-text-field/ui-text-field.component.mjs +0 -52
- package/esm2022/lib/ui-text-field-auto-complete/ui-text-field-auto-complete.component.mjs +0 -48
- package/esm2022/lib/ui-time-span/ui-time-span.component.mjs +0 -24
- package/esm2022/lib/ui-tinymce/ui-tinymce.component.mjs +0 -53
- package/esm2022/lib/ui-tree/ui-tree.component.mjs +0 -114
- package/esm2022/lib/ui-tree-view/ui-tree-view.component.mjs +0 -100
- package/esm2022/lib/ui-ulv-form-multi-select-ui/ui-ulv-form-multi-select-ui.component.mjs +0 -23
- package/esm2022/lib/ui-ulv-main-ui/ui-ulv-main-ui.component.mjs +0 -306
- package/esm2022/lib/ui-workflow-panel-ui/ui-workflow-panel-ui.component.mjs +0 -25
- package/esm2022/lib/ul-loading-mask-ui/ul-loading-mask-ui.component.mjs +0 -93
- package/esm2022/lib/ul-msg-box-adapter/ul-msg-box-adapter.component.mjs +0 -119
- package/esm2022/lib/ul-notify-popup/ul-notify-popup.component.mjs +0 -32
- package/esm2022/lib/ul-toast-adapter/ul-toast-adapter.component.mjs +0 -48
- package/esm2022/lib/ulv-column-settings/ulv-column-settings.component.mjs +0 -53
- package/esm2022/lib/ulv-context-menu/ulv-context-menu.component.mjs +0 -114
- package/esm2022/lib/ulv-filter-settings/ulv-filter-settings.component.mjs +0 -43
- package/esm2022/lib/ulv-form-multi-select/ulv-form-multi-select.component.mjs +0 -196
- package/esm2022/lib/ulv-groupby-settings/ulv-groupby-settings.component.mjs +0 -44
- package/esm2022/lib/ulv-paging/ulv-paging.component.mjs +0 -84
- package/esm2022/lib/ulv-selection/ulv-selection.component.mjs +0 -65
- package/esm2022/lib/ulv-settings/ulv-settings.component.mjs +0 -116
- package/esm2022/lib/ulv-sort-settings/ulv-sort-settings.component.mjs +0 -54
- package/esm2022/lib/ulv-toolbar/ulv-toolbar.component.mjs +0 -174
- package/esm2022/lib/upload-file-status.pipe.mjs +0 -28
- package/esm2022/lib/util-chat-time-badge.pipe.mjs +0 -18
- package/esm2022/lib/util-date-to-hh-mm.pipe.mjs +0 -23
- package/esm2022/lib/wizard-layout.directive.mjs +0 -103
- package/esm2022/public-api.mjs +0 -233
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { takeUntil } from 'rxjs/operators';
|
|
3
|
-
import { BaseDirective } from 'barsa-novin-ray-core';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "barsa-novin-ray-core";
|
|
6
|
-
export class ReportViewRendererDirective extends BaseDirective {
|
|
7
|
-
constructor(_portalService, _ulvMainService, _vcr, _injector, _el) {
|
|
8
|
-
super(_el);
|
|
9
|
-
this._portalService = _portalService;
|
|
10
|
-
this._ulvMainService = _ulvMainService;
|
|
11
|
-
this._vcr = _vcr;
|
|
12
|
-
this._injector = _injector;
|
|
13
|
-
this._el = _el;
|
|
14
|
-
this.editFormPanelCancel = new EventEmitter();
|
|
15
|
-
this.editFormPanelValueChange = new EventEmitter();
|
|
16
|
-
this.resetWorkflowState = new EventEmitter();
|
|
17
|
-
this.ulvCommandClick = new EventEmitter();
|
|
18
|
-
this.sortAscending = new EventEmitter();
|
|
19
|
-
this.sortDescending = new EventEmitter();
|
|
20
|
-
this.filter = new EventEmitter();
|
|
21
|
-
this.deselectAll = new EventEmitter();
|
|
22
|
-
this.rowCheck = new EventEmitter();
|
|
23
|
-
this.rowClick = new EventEmitter();
|
|
24
|
-
this.executeToolbarButton = new EventEmitter();
|
|
25
|
-
this.expandClick = new EventEmitter();
|
|
26
|
-
this.trackBySelectedFn = new EventEmitter();
|
|
27
|
-
this.cartableFormClosed = new EventEmitter();
|
|
28
|
-
this.createNewMo = new EventEmitter();
|
|
29
|
-
this.updateMo = new EventEmitter();
|
|
30
|
-
this.hasDetailsInRow = new EventEmitter();
|
|
31
|
-
this.allCheckbox = new EventEmitter();
|
|
32
|
-
this.mandatory = new EventEmitter();
|
|
33
|
-
this.editFormPanelSave = new EventEmitter();
|
|
34
|
-
this.columnResized = new EventEmitter();
|
|
35
|
-
this.selectNextInlineRecord = new EventEmitter();
|
|
36
|
-
this.workflowShareButtons = new EventEmitter();
|
|
37
|
-
this.escapeKey = new EventEmitter();
|
|
38
|
-
this.resetGridSettings = new EventEmitter();
|
|
39
|
-
}
|
|
40
|
-
ngOnChanges(changes) {
|
|
41
|
-
const { view } = changes;
|
|
42
|
-
if (view && !view.firstChange) {
|
|
43
|
-
this._reportViewRef.destroy();
|
|
44
|
-
this._vcr.clear();
|
|
45
|
-
this._insertView(view.currentValue);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
if (this._reportViewRef) {
|
|
49
|
-
this._reportViewRef.instance.ngOnChanges(changes);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
ngOnInit() {
|
|
54
|
-
super.ngOnInit();
|
|
55
|
-
this._insertView(this.view);
|
|
56
|
-
}
|
|
57
|
-
ngOnDestroy() {
|
|
58
|
-
super.ngOnDestroy();
|
|
59
|
-
this._reportViewRef?.destroy();
|
|
60
|
-
}
|
|
61
|
-
_insertView(view) {
|
|
62
|
-
if (!view) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
const { Module, ModuleFileName, Name, Selector } = view.UiComponent;
|
|
66
|
-
this._ulvMainService.setUiViewerClass(Selector);
|
|
67
|
-
this._portalService
|
|
68
|
-
.getComponent(Module, ModuleFileName, Name, Selector, this._injector)
|
|
69
|
-
.pipe(takeUntil(this._onDestroy$))
|
|
70
|
-
.subscribe((componentRef) => {
|
|
71
|
-
const instance = componentRef.instance;
|
|
72
|
-
instance.cartableTemplates = this.cartableTemplates;
|
|
73
|
-
instance.cartableChildsMo = this.cartableChildsMo;
|
|
74
|
-
instance.moDataList = this.moDataList;
|
|
75
|
-
instance.contextSetting = this.contextSetting;
|
|
76
|
-
instance.groupby = this.groupby;
|
|
77
|
-
instance.groupSummary = this.groupSummary;
|
|
78
|
-
instance.simpleInlineEdit = this.simpleInlineEdit;
|
|
79
|
-
instance.UlvMainCtrlr = this.UlvMainCtrlr;
|
|
80
|
-
instance.pagingSetting = this.pagingSetting;
|
|
81
|
-
instance.hideSearchpanel = this.hideSearchpanel;
|
|
82
|
-
instance.customFieldInfo = this.customFieldInfo;
|
|
83
|
-
instance.disableResponsive = this.disableResponsive;
|
|
84
|
-
instance.toolbarButtons = this.toolbarButtons;
|
|
85
|
-
instance.popin = this.popin;
|
|
86
|
-
instance.contextView = this.contextView;
|
|
87
|
-
instance.isCheckList = this.isCheckList;
|
|
88
|
-
instance.toolbarButtons = this.toolbarButtons;
|
|
89
|
-
instance.columns = this.columns;
|
|
90
|
-
instance.listEditViewId = this.listEditViewId;
|
|
91
|
-
instance.typeViewId = this.typeViewId;
|
|
92
|
-
instance.gridFreeColumnSizing = this.gridFreeColumnSizing;
|
|
93
|
-
instance.inDialog = this.inDialog;
|
|
94
|
-
instance.hasInlineDeleteButton = this.hasInlineDeleteButton;
|
|
95
|
-
instance.hasInlineEditButton = this.hasInlineEditButton;
|
|
96
|
-
instance.isMultiSelect = this.isMultiSelect;
|
|
97
|
-
instance.columnsCount = this.columnsCount;
|
|
98
|
-
instance.hideToolbar = this.hideToolbar;
|
|
99
|
-
instance.hideTitle = this.hideTitle;
|
|
100
|
-
instance.extraRelation = this.extraRelation;
|
|
101
|
-
instance.secondaryColumns = this.secondaryColumns;
|
|
102
|
-
instance.contextMenuItems = this.contextMenuItems;
|
|
103
|
-
instance.conditionalFormats = this.conditionalFormats;
|
|
104
|
-
instance.disableOverflowContextMenu = this.disableOverflowContextMenu;
|
|
105
|
-
instance.typeDefId = this.typeDefId;
|
|
106
|
-
instance.reportId = this.reportId;
|
|
107
|
-
instance.deviceName = this.deviceName;
|
|
108
|
-
instance.deviceSize = this.deviceSize;
|
|
109
|
-
instance.mobileOrTablet = this.mobileOrTablet;
|
|
110
|
-
instance.containerWidth = this.containerWidth;
|
|
111
|
-
instance.columnsCount = this.columnsCount;
|
|
112
|
-
instance.selectedCount = this.selectedCount;
|
|
113
|
-
instance.hideOpenIcon = this.hideOpenIcon;
|
|
114
|
-
instance.openOnClick = this.openOnClick;
|
|
115
|
-
instance.access = this.access;
|
|
116
|
-
instance.title = this.title;
|
|
117
|
-
instance.hasSummary = this.hasSummary;
|
|
118
|
-
instance.contentDensity = this.contentDensity;
|
|
119
|
-
instance.relationList = this.relationList;
|
|
120
|
-
instance.allColumns = this.allColumns ?? this.columns;
|
|
121
|
-
instance.viewSetting = view.UiComponent.Settings;
|
|
122
|
-
instance.inlineEditMode = this.inlineEditMode;
|
|
123
|
-
instance.onlyInlineEdit = this.onlyInlineEdit;
|
|
124
|
-
instance.allowInlineEdit = this.allowInlineEdit;
|
|
125
|
-
instance.formSetting = this.formSetting;
|
|
126
|
-
instance.navigationArrow = this.navigationArrow;
|
|
127
|
-
instance.selectedMo = this.selectedMo;
|
|
128
|
-
instance.hasSelected = this.hasSelected;
|
|
129
|
-
instance.rtl = this.rtl;
|
|
130
|
-
instance.escapeKey?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
|
|
131
|
-
this.escapeKey.emit(mo);
|
|
132
|
-
});
|
|
133
|
-
instance.resetWorkflowState?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
|
|
134
|
-
this.resetWorkflowState.emit(mo);
|
|
135
|
-
});
|
|
136
|
-
instance.editFormPanelValueChange
|
|
137
|
-
?.pipe(takeUntil(this._onDestroy$))
|
|
138
|
-
.subscribe(({ mo, fieldDbName }) => {
|
|
139
|
-
this.editFormPanelValueChange.emit({ mo, fieldDbName });
|
|
140
|
-
});
|
|
141
|
-
instance.selectNextInlineRecord?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
|
|
142
|
-
this.selectNextInlineRecord.emit(mo);
|
|
143
|
-
});
|
|
144
|
-
instance.editFormPanelCancel?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
|
|
145
|
-
this.editFormPanelCancel.emit(mo);
|
|
146
|
-
});
|
|
147
|
-
instance.ulvCommandClick?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
148
|
-
this.ulvCommandClick.emit(e);
|
|
149
|
-
});
|
|
150
|
-
instance.sortAscending?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
151
|
-
this.sortAscending.emit(e);
|
|
152
|
-
});
|
|
153
|
-
instance.sortDescending?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
154
|
-
this.sortDescending.emit(e);
|
|
155
|
-
});
|
|
156
|
-
instance.filter?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
157
|
-
this.filter.emit(e);
|
|
158
|
-
});
|
|
159
|
-
instance.columnResized?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
160
|
-
this.columnResized.emit(e);
|
|
161
|
-
});
|
|
162
|
-
instance.rowCheck?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
163
|
-
this.rowCheck.emit(e);
|
|
164
|
-
});
|
|
165
|
-
instance.deselectAll?.pipe(takeUntil(this._onDestroy$)).subscribe(() => {
|
|
166
|
-
this.deselectAll.emit();
|
|
167
|
-
});
|
|
168
|
-
instance.rowClick?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
169
|
-
this.rowClick.emit(e);
|
|
170
|
-
});
|
|
171
|
-
instance.expandClick?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
172
|
-
this.expandClick.emit(e);
|
|
173
|
-
});
|
|
174
|
-
instance.allCheckbox?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
175
|
-
this.allCheckbox.emit(e);
|
|
176
|
-
});
|
|
177
|
-
instance.editFormPanelSave?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
|
|
178
|
-
this.editFormPanelSave.emit(mo);
|
|
179
|
-
});
|
|
180
|
-
instance.cartableFormClosed?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
181
|
-
this.cartableFormClosed.emit(e);
|
|
182
|
-
});
|
|
183
|
-
instance.createNewMo?.pipe(takeUntil(this._onDestroy$)).subscribe(() => {
|
|
184
|
-
this.createNewMo.emit();
|
|
185
|
-
});
|
|
186
|
-
instance.hasDetailsInRow?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
|
|
187
|
-
this.hasDetailsInRow.emit(mo);
|
|
188
|
-
});
|
|
189
|
-
instance.updateMo?.pipe(takeUntil(this._onDestroy$)).subscribe((mo) => {
|
|
190
|
-
this.updateMo.emit(mo);
|
|
191
|
-
});
|
|
192
|
-
instance.mandatory?.pipe(takeUntil(this._onDestroy$)).subscribe((isValid) => {
|
|
193
|
-
this.mandatory.emit(isValid);
|
|
194
|
-
});
|
|
195
|
-
instance.executeToolbarButton?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
196
|
-
this.executeToolbarButton.emit(e);
|
|
197
|
-
});
|
|
198
|
-
instance.resetGridSettings?.pipe(takeUntil(this._onDestroy$)).subscribe((e) => {
|
|
199
|
-
this.resetGridSettings.emit();
|
|
200
|
-
});
|
|
201
|
-
instance.workflowShareButtons
|
|
202
|
-
?.pipe(takeUntil(this._onDestroy$))
|
|
203
|
-
.subscribe((e) => {
|
|
204
|
-
this.workflowShareButtons.emit(e);
|
|
205
|
-
});
|
|
206
|
-
this._vcr.insert(componentRef.hostView);
|
|
207
|
-
this._reportViewRef = componentRef;
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportViewRendererDirective, deps: [{ token: i1.PortalService }, { token: i1.UlvMainService }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
211
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ReportViewRendererDirective, selector: "[reportViewRenderer]", inputs: { view: "view", moDataList: "moDataList", allChecked: "allChecked", contextSetting: "contextSetting", groupby: "groupby", isCheckList: "isCheckList", hasInlineDeleteButton: "hasInlineDeleteButton", hasInlineEditButton: "hasInlineEditButton", selectedCount: "selectedCount", hideToolbar: "hideToolbar", toolbarButtons: "toolbarButtons", pagingSetting: "pagingSetting", UlvMainCtrlr: "UlvMainCtrlr", hasSummary: "hasSummary", relationList: "relationList", columns: "columns", columnsCount: "columnsCount", secondaryColumns: "secondaryColumns", contextMenuItems: "contextMenuItems", conditionalFormats: "conditionalFormats", deviceName: "deviceName", deviceSize: "deviceSize", mobileOrTablet: "mobileOrTablet", access: "access", title: "title", customFieldInfo: "customFieldInfo", selectedMo: "selectedMo", allColumns: "allColumns", viewSetting: "viewSetting", inlineEditMode: "inlineEditMode", onlyInlineEdit: "onlyInlineEdit", allowInlineEdit: "allowInlineEdit", popin: "popin", hasSelected: "hasSelected", formSetting: "formSetting", disableOverflowContextMenu: "disableOverflowContextMenu", navigationArrow: "navigationArrow", typeDefId: "typeDefId", reportId: "reportId", listEditViewId: "listEditViewId", typeViewId: "typeViewId", containerWidth: "containerWidth", extraRelation: "extraRelation", contextView: "contextView", contentDensity: "contentDensity", hideOpenIcon: "hideOpenIcon", hideTitle: "hideTitle", groupSummary: "groupSummary", openOnClick: "openOnClick", inDialog: "inDialog", isMultiSelect: "isMultiSelect", rtl: "rtl", disableResponsive: "disableResponsive", simpleInlineEdit: "simpleInlineEdit", hideSearchpanel: "hideSearchpanel", gridFreeColumnSizing: "gridFreeColumnSizing", cartableTemplates: "cartableTemplates", cartableChildsMo: "cartableChildsMo" }, outputs: { editFormPanelCancel: "editFormPanelCancel", editFormPanelValueChange: "editFormPanelValueChange", resetWorkflowState: "resetWorkflowState", ulvCommandClick: "ulvCommandClick", sortAscending: "sortAscending", sortDescending: "sortDescending", filter: "filter", deselectAll: "deselectAll", rowCheck: "rowCheck", rowClick: "rowClick", executeToolbarButton: "executeToolbarButton", expandClick: "expandClick", trackBySelectedFn: "trackBySelectedFn", cartableFormClosed: "cartableFormClosed", createNewMo: "createNewMo", updateMo: "updateMo", hasDetailsInRow: "hasDetailsInRow", allCheckbox: "allCheckbox", mandatory: "mandatory", editFormPanelSave: "editFormPanelSave", columnResized: "columnResized", selectNextInlineRecord: "selectNextInlineRecord", workflowShareButtons: "workflowShareButtons", escapeKey: "escapeKey", resetGridSettings: "resetGridSettings" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
212
|
-
}
|
|
213
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportViewRendererDirective, decorators: [{
|
|
214
|
-
type: Directive,
|
|
215
|
-
args: [{
|
|
216
|
-
selector: '[reportViewRenderer]'
|
|
217
|
-
}]
|
|
218
|
-
}], ctorParameters: () => [{ type: i1.PortalService }, { type: i1.UlvMainService }, { type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i0.ElementRef }], propDecorators: { view: [{
|
|
219
|
-
type: Input
|
|
220
|
-
}], moDataList: [{
|
|
221
|
-
type: Input
|
|
222
|
-
}], allChecked: [{
|
|
223
|
-
type: Input
|
|
224
|
-
}], contextSetting: [{
|
|
225
|
-
type: Input
|
|
226
|
-
}], groupby: [{
|
|
227
|
-
type: Input
|
|
228
|
-
}], isCheckList: [{
|
|
229
|
-
type: Input
|
|
230
|
-
}], hasInlineDeleteButton: [{
|
|
231
|
-
type: Input
|
|
232
|
-
}], hasInlineEditButton: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], selectedCount: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], hideToolbar: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], toolbarButtons: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], pagingSetting: [{
|
|
241
|
-
type: Input
|
|
242
|
-
}], UlvMainCtrlr: [{
|
|
243
|
-
type: Input
|
|
244
|
-
}], hasSummary: [{
|
|
245
|
-
type: Input
|
|
246
|
-
}], relationList: [{
|
|
247
|
-
type: Input
|
|
248
|
-
}], columns: [{
|
|
249
|
-
type: Input
|
|
250
|
-
}], columnsCount: [{
|
|
251
|
-
type: Input
|
|
252
|
-
}], secondaryColumns: [{
|
|
253
|
-
type: Input
|
|
254
|
-
}], contextMenuItems: [{
|
|
255
|
-
type: Input
|
|
256
|
-
}], conditionalFormats: [{
|
|
257
|
-
type: Input
|
|
258
|
-
}], deviceName: [{
|
|
259
|
-
type: Input
|
|
260
|
-
}], deviceSize: [{
|
|
261
|
-
type: Input
|
|
262
|
-
}], mobileOrTablet: [{
|
|
263
|
-
type: Input
|
|
264
|
-
}], access: [{
|
|
265
|
-
type: Input
|
|
266
|
-
}], title: [{
|
|
267
|
-
type: Input
|
|
268
|
-
}], customFieldInfo: [{
|
|
269
|
-
type: Input
|
|
270
|
-
}], selectedMo: [{
|
|
271
|
-
type: Input
|
|
272
|
-
}], allColumns: [{
|
|
273
|
-
type: Input
|
|
274
|
-
}], viewSetting: [{
|
|
275
|
-
type: Input
|
|
276
|
-
}], inlineEditMode: [{
|
|
277
|
-
type: Input
|
|
278
|
-
}], onlyInlineEdit: [{
|
|
279
|
-
type: Input
|
|
280
|
-
}], allowInlineEdit: [{
|
|
281
|
-
type: Input
|
|
282
|
-
}], popin: [{
|
|
283
|
-
type: Input
|
|
284
|
-
}], hasSelected: [{
|
|
285
|
-
type: Input
|
|
286
|
-
}], formSetting: [{
|
|
287
|
-
type: Input
|
|
288
|
-
}], disableOverflowContextMenu: [{
|
|
289
|
-
type: Input
|
|
290
|
-
}], navigationArrow: [{
|
|
291
|
-
type: Input
|
|
292
|
-
}], typeDefId: [{
|
|
293
|
-
type: Input
|
|
294
|
-
}], reportId: [{
|
|
295
|
-
type: Input
|
|
296
|
-
}], listEditViewId: [{
|
|
297
|
-
type: Input
|
|
298
|
-
}], typeViewId: [{
|
|
299
|
-
type: Input
|
|
300
|
-
}], containerWidth: [{
|
|
301
|
-
type: Input
|
|
302
|
-
}], extraRelation: [{
|
|
303
|
-
type: Input
|
|
304
|
-
}], contextView: [{
|
|
305
|
-
type: Input
|
|
306
|
-
}], contentDensity: [{
|
|
307
|
-
type: Input
|
|
308
|
-
}], hideOpenIcon: [{
|
|
309
|
-
type: Input
|
|
310
|
-
}], hideTitle: [{
|
|
311
|
-
type: Input
|
|
312
|
-
}], groupSummary: [{
|
|
313
|
-
type: Input
|
|
314
|
-
}], openOnClick: [{
|
|
315
|
-
type: Input
|
|
316
|
-
}], inDialog: [{
|
|
317
|
-
type: Input
|
|
318
|
-
}], isMultiSelect: [{
|
|
319
|
-
type: Input
|
|
320
|
-
}], rtl: [{
|
|
321
|
-
type: Input
|
|
322
|
-
}], disableResponsive: [{
|
|
323
|
-
type: Input
|
|
324
|
-
}], simpleInlineEdit: [{
|
|
325
|
-
type: Input
|
|
326
|
-
}], hideSearchpanel: [{
|
|
327
|
-
type: Input
|
|
328
|
-
}], gridFreeColumnSizing: [{
|
|
329
|
-
type: Input
|
|
330
|
-
}], cartableTemplates: [{
|
|
331
|
-
type: Input
|
|
332
|
-
}], cartableChildsMo: [{
|
|
333
|
-
type: Input
|
|
334
|
-
}], editFormPanelCancel: [{
|
|
335
|
-
type: Output
|
|
336
|
-
}], editFormPanelValueChange: [{
|
|
337
|
-
type: Output
|
|
338
|
-
}], resetWorkflowState: [{
|
|
339
|
-
type: Output
|
|
340
|
-
}], ulvCommandClick: [{
|
|
341
|
-
type: Output
|
|
342
|
-
}], sortAscending: [{
|
|
343
|
-
type: Output
|
|
344
|
-
}], sortDescending: [{
|
|
345
|
-
type: Output
|
|
346
|
-
}], filter: [{
|
|
347
|
-
type: Output
|
|
348
|
-
}], deselectAll: [{
|
|
349
|
-
type: Output
|
|
350
|
-
}], rowCheck: [{
|
|
351
|
-
type: Output
|
|
352
|
-
}], rowClick: [{
|
|
353
|
-
type: Output
|
|
354
|
-
}], executeToolbarButton: [{
|
|
355
|
-
type: Output
|
|
356
|
-
}], expandClick: [{
|
|
357
|
-
type: Output
|
|
358
|
-
}], trackBySelectedFn: [{
|
|
359
|
-
type: Output
|
|
360
|
-
}], cartableFormClosed: [{
|
|
361
|
-
type: Output
|
|
362
|
-
}], createNewMo: [{
|
|
363
|
-
type: Output
|
|
364
|
-
}], updateMo: [{
|
|
365
|
-
type: Output
|
|
366
|
-
}], hasDetailsInRow: [{
|
|
367
|
-
type: Output
|
|
368
|
-
}], allCheckbox: [{
|
|
369
|
-
type: Output
|
|
370
|
-
}], mandatory: [{
|
|
371
|
-
type: Output
|
|
372
|
-
}], editFormPanelSave: [{
|
|
373
|
-
type: Output
|
|
374
|
-
}], columnResized: [{
|
|
375
|
-
type: Output
|
|
376
|
-
}], selectNextInlineRecord: [{
|
|
377
|
-
type: Output
|
|
378
|
-
}], workflowShareButtons: [{
|
|
379
|
-
type: Output
|
|
380
|
-
}], escapeKey: [{
|
|
381
|
-
type: Output
|
|
382
|
-
}], resetGridSettings: [{
|
|
383
|
-
type: Output
|
|
384
|
-
}] } });
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXctcmVuZGVyZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvcmVwb3J0LXZpZXctcmVuZGVyZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFJTCxNQUFNLEVBR1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFFSCxhQUFhLEVBa0JoQixNQUFNLHNCQUFzQixDQUFDOzs7QUFLOUIsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGFBQWE7SUF3RjFELFlBQ1ksY0FBNkIsRUFDN0IsZUFBK0IsRUFDL0IsSUFBc0IsRUFDdEIsU0FBbUIsRUFDakIsR0FBZTtRQUV6QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFOSCxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFDdEIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBakNuQix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUM5RCw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFBcUQsQ0FBQztRQUVqRyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzdDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVB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QixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudFJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQWJicmV2YXRpb25EZXZpY2VTaXplLFxuICAgIEJhc2VEaXJlY3RpdmUsXG4gICAgY29sdW1uc1Jlc2l6ZWRFdmVudEFyZ3MsXG4gICAgRGVmYXVsdENvbW1hbmRzQWNjZXNzLFxuICAgIERldmljZVNpemUsXG4gICAgRm9ybVNldHRpbmcsXG4gICAgTWVudUl0ZW0sXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBQb3J0YWxTZXJ2aWNlLFxuICAgIFJlbGF0aW9uSXRlbVR5cGUsXG4gICAgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQsXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcbiAgICBTb3J0U2V0dGluZyxcbiAgICBVaVJlcG9ydFZpZXdCYXNlLFxuICAgIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nLFxuICAgIFNoYXJlQnV0dG9uc0Nob2ljZURlZixcbiAgICBUeXBlVWx2TWFpbkN0cmxyLFxuICAgIFBhZ2luZ1NldHRpbmcsXG4gICAgVWx2TWFpblNlcnZpY2Vcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZXBvcnRWaWV3UmVuZGVyZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRWaWV3UmVuZGVyZXJEaXJlY3RpdmUgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgdmlldzogVWlSZXBvcnRWaWV3QmFzZTtcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgQElucHV0KCkgYWxsQ2hlY2tlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjb250ZXh0U2V0dGluZzogYW55O1xuICAgIEBJbnB1dCgpIGdyb3VwYnk6IFNvcnRTZXR0aW5nW107XG4gICAgQElucHV0KCkgaXNDaGVja0xpc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGFzSW5saW5lRGVsZXRlQnV0dG9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc0lubGluZUVkaXRCdXR0b246IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2VsZWN0ZWRDb3VudDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGhpZGVUb29sYmFyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJCdXR0b25zOiBNZW51SXRlbVtdO1xuICAgIEBJbnB1dCgpIHBhZ2luZ1NldHRpbmc6IFBhZ2luZ1NldHRpbmc7XG4gICAgQElucHV0KCkgVWx2TWFpbkN0cmxyOiBUeXBlVWx2TWFpbkN0cmxyO1xuICAgIEBJbnB1dCgpIGhhc1N1bW1hcnk6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcmVsYXRpb25MaXN0OiBBcnJheTxSZWxhdGlvbkl0ZW1UeXBlPjtcbiAgICBASW5wdXQoKSBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107XG4gICAgQElucHV0KCkgY29sdW1uc0NvdW50OiBudW1iZXI7XG4gICAgQElucHV0KCkgc2Vjb25kYXJ5Q29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdO1xuICAgIEBJbnB1dCgpIGNvbnRleHRNZW51SXRlbXM6IE1lbnVJdGVtW107XG4gICAgQElucHV0KCkgY29uZGl0aW9uYWxGb3JtYXRzOiBhbnlbXTtcbiAgICBASW5wdXQoKSBkZXZpY2VOYW1lOiBEZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBtb2JpbGVPclRhYmxldDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBhY2Nlc3M6IERlZmF1bHRDb21tYW5kc0FjY2VzcztcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGN1c3RvbUZpZWxkSW5mbzogTWV0YW9iamVjdERhdGFNb2RlbCB8IGFueTtcbiAgICBASW5wdXQoKSBzZWxlY3RlZE1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIEBJbnB1dCgpIGFsbENvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXTtcbiAgICBASW5wdXQoKSB2aWV3U2V0dGluZzogVWlSZXBvcnRWaWV3QmFzZVNldHRpbmc7XG4gICAgQElucHV0KCkgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgb25seUlubGluZUVkaXQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgYWxsb3dJbmxpbmVFZGl0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHBvcGluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGZvcm1TZXR0aW5nOiBGb3JtU2V0dGluZztcbiAgICBASW5wdXQoKSBkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBuYXZpZ2F0aW9uQXJyb3c6IHN0cmluZztcbiAgICBASW5wdXQoKSB0eXBlRGVmSWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSByZXBvcnRJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxpc3RFZGl0Vmlld0lkOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdHlwZVZpZXdJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbnRhaW5lcldpZHRoOiBudW1iZXI7XG4gICAgQElucHV0KCkgZXh0cmFSZWxhdGlvbjogYW55O1xuICAgIEBJbnB1dCgpIGNvbnRleHRWaWV3OiBhbnk7XG4gICAgQElucHV0KCkgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5O1xuICAgIEBJbnB1dCgpIGhpZGVPcGVuSWNvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlVGl0bGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZ3JvdXBTdW1tYXJ5OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG9wZW5PbkNsaWNrOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGluRGlhbG9nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcnRsOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRpc2FibGVSZXNwb25zaXZlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNpbXBsZUlubGluZUVkaXQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGlkZVNlYXJjaHBhbmVsOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGdyaWRGcmVlQ29sdW1uU2l6aW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNhcnRhYmxlVGVtcGxhdGVzOiB7IFtrZXk6IHN0cmluZ106IEZvcm1TZXR0aW5nIH07XG4gICAgQElucHV0KCkgY2FydGFibGVDaGlsZHNNbzogeyBba2V5OiBzdHJpbmddOiBNZXRhb2JqZWN0RGF0YU1vZGVsIH07XG5cbiAgICBAT3V0cHV0KCkgZWRpdEZvcm1QYW5lbENhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBmaWVsZERiTmFtZT86IHN0cmluZyB9PigpO1xuXG4gICAgQE91dHB1dCgpIHJlc2V0V29ya2Zsb3dTdGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSB1bHZDb21tYW5kQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgc29ydEFzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBzb3J0RGVzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBmaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZGVzZWxlY3RBbGwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHJvd0NoZWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vOyBpbmRleDsgY2F1c2U/IH0+KCk7XG4gICAgQE91dHB1dCgpIHJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vOyBpbmRleCB9PigpO1xuICAgIEBPdXRwdXQoKSBleGVjdXRlVG9vbGJhckJ1dHRvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtSWQ6IHN0cmluZzsgb3B0aW9ucz86IGFueSB9PigpO1xuICAgIEBPdXRwdXQoKSBleHBhbmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgdHJhY2tCeVNlbGVjdGVkRm4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaW5kZXg7IHJlY29yZCB9PigpO1xuICAgIEBPdXRwdXQoKSBjYXJ0YWJsZUZvcm1DbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaW5kZXg7IG1vIH0+KCk7XG4gICAgQE91dHB1dCgpIGNyZWF0ZU5ld01vID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSB1cGRhdGVNbyA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgaGFzRGV0YWlsc0luUm93ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBhbGxDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgbWFuZGF0b3J5ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBlZGl0Rm9ybVBhbmVsU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgY29sdW1uUmVzaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8Y29sdW1uc1Jlc2l6ZWRFdmVudEFyZ3M+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdE5leHRJbmxpbmVSZWNvcmQgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIHdvcmtmbG93U2hhcmVCdXR0b25zID0gbmV3IEV2ZW50RW1pdHRlcjxTaGFyZUJ1dHRvbnNDaG9pY2VEZWY+KCk7XG4gICAgQE91dHB1dCgpIGVzY2FwZUtleSA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgcmVzZXRHcmlkU2V0dGluZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBfcmVwb3J0Vmlld1JlZjogQ29tcG9uZW50UmVmPFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50PFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPj47XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3Vsdk1haW5TZXJ2aWNlOiBVbHZNYWluU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfdmNyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2VsKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHZpZXcgfSA9IGNoYW5nZXM7XG5cbiAgICAgICAgaWYgKHZpZXcgJiYgIXZpZXcuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlcG9ydFZpZXdSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5fdmNyLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLl9pbnNlcnRWaWV3KHZpZXcuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9yZXBvcnRWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVwb3J0Vmlld1JlZi5pbnN0YW5jZS5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5faW5zZXJ0Vmlldyh0aGlzLnZpZXcpO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fcmVwb3J0Vmlld1JlZj8uZGVzdHJveSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pbnNlcnRWaWV3KHZpZXcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF2aWV3KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBNb2R1bGUsIE1vZHVsZUZpbGVOYW1lLCBOYW1lLCBTZWxlY3RvciB9ID0gdmlldy5VaUNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5fdWx2TWFpblNlcnZpY2Uuc2V0VWlWaWV3ZXJDbGFzcyhTZWxlY3Rvcik7XG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRDb21wb25lbnQoTW9kdWxlLCBNb2R1bGVGaWxlTmFtZSwgTmFtZSwgU2VsZWN0b3IsIHRoaXMuX2luamVjdG9yKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8UmVwb3J0Vmlld0Jhc2VDb21wb25lbnQ8VWlSZXBvcnRWaWV3QmFzZVNldHRpbmc+PikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNhcnRhYmxlVGVtcGxhdGVzID0gdGhpcy5jYXJ0YWJsZVRlbXBsYXRlcztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jYXJ0YWJsZUNoaWxkc01vID0gdGhpcy5jYXJ0YWJsZUNoaWxkc01vO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLm1vRGF0YUxpc3QgPSB0aGlzLm1vRGF0YUxpc3Q7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29udGV4dFNldHRpbmcgPSB0aGlzLmNvbnRleHRTZXR0aW5nO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmdyb3VwYnkgPSB0aGlzLmdyb3VwYnk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZ3JvdXBTdW1tYXJ5ID0gdGhpcy5ncm91cFN1bW1hcnk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2ltcGxlSW5saW5lRWRpdCA9IHRoaXMuc2ltcGxlSW5saW5lRWRpdDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5VbHZNYWluQ3RybHIgPSB0aGlzLlVsdk1haW5DdHJscjtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYWdpbmdTZXR0aW5nID0gdGhpcy5wYWdpbmdTZXR0aW5nO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhpZGVTZWFyY2hwYW5lbCA9IHRoaXMuaGlkZVNlYXJjaHBhbmVsO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmN1c3RvbUZpZWxkSW5mbyA9IHRoaXMuY3VzdG9tRmllbGRJbmZvO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRpc2FibGVSZXNwb25zaXZlID0gdGhpcy5kaXNhYmxlUmVzcG9uc2l2ZTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS50b29sYmFyQnV0dG9ucyA9IHRoaXMudG9vbGJhckJ1dHRvbnM7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucG9waW4gPSB0aGlzLnBvcGluO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbnRleHRWaWV3ID0gdGhpcy5jb250ZXh0VmlldztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc0NoZWNrTGlzdCA9IHRoaXMuaXNDaGVja0xpc3Q7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudG9vbGJhckJ1dHRvbnMgPSB0aGlzLnRvb2xiYXJCdXR0b25zO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UubGlzdEVkaXRWaWV3SWQgPSB0aGlzLmxpc3RFZGl0Vmlld0lkO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnR5cGVWaWV3SWQgPSB0aGlzLnR5cGVWaWV3SWQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZ3JpZEZyZWVDb2x1bW5TaXppbmcgPSB0aGlzLmdyaWRGcmVlQ29sdW1uU2l6aW5nO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmluRGlhbG9nID0gdGhpcy5pbkRpYWxvZztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5oYXNJbmxpbmVEZWxldGVCdXR0b24gPSB0aGlzLmhhc0lubGluZURlbGV0ZUJ1dHRvbjtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5oYXNJbmxpbmVFZGl0QnV0dG9uID0gdGhpcy5oYXNJbmxpbmVFZGl0QnV0dG9uO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmlzTXVsdGlTZWxlY3QgPSB0aGlzLmlzTXVsdGlTZWxlY3Q7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29sdW1uc0NvdW50ID0gdGhpcy5jb2x1bW5zQ291bnQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuaGlkZVRvb2xiYXIgPSB0aGlzLmhpZGVUb29sYmFyO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhpZGVUaXRsZSA9IHRoaXMuaGlkZVRpdGxlO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmV4dHJhUmVsYXRpb24gPSB0aGlzLmV4dHJhUmVsYXRpb247XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2Vjb25kYXJ5Q29sdW1ucyA9IHRoaXMuc2Vjb25kYXJ5Q29sdW1ucztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb250ZXh0TWVudUl0ZW1zID0gdGhpcy5jb250ZXh0TWVudUl0ZW1zO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsRm9ybWF0cyA9IHRoaXMuY29uZGl0aW9uYWxGb3JtYXRzO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51ID0gdGhpcy5kaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS50eXBlRGVmSWQgPSB0aGlzLnR5cGVEZWZJZDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5yZXBvcnRJZCA9IHRoaXMucmVwb3J0SWQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZGV2aWNlTmFtZSA9IHRoaXMuZGV2aWNlTmFtZTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5kZXZpY2VTaXplID0gdGhpcy5kZXZpY2VTaXplO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLm1vYmlsZU9yVGFibGV0ID0gdGhpcy5tb2JpbGVPclRhYmxldDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb250YWluZXJXaWR0aCA9IHRoaXMuY29udGFpbmVyV2lkdGg7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29sdW1uc0NvdW50ID0gdGhpcy5jb2x1bW5zQ291bnQ7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0ZWRDb3VudCA9IHRoaXMuc2VsZWN0ZWRDb3VudDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5oaWRlT3Blbkljb24gPSB0aGlzLmhpZGVPcGVuSWNvbjtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5vcGVuT25DbGljayA9IHRoaXMub3Blbk9uQ2xpY2s7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuYWNjZXNzID0gdGhpcy5hY2Nlc3M7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudGl0bGUgPSB0aGlzLnRpdGxlO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhhc1N1bW1hcnkgPSB0aGlzLmhhc1N1bW1hcnk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29udGVudERlbnNpdHkgPSB0aGlzLmNvbnRlbnREZW5zaXR5O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlbGF0aW9uTGlzdCA9IHRoaXMucmVsYXRpb25MaXN0O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFsbENvbHVtbnMgPSB0aGlzLmFsbENvbHVtbnMgPz8gdGhpcy5jb2x1bW5zO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnZpZXdTZXR0aW5nID0gdmlldy5VaUNvbXBvbmVudC5TZXR0aW5ncztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pbmxpbmVFZGl0TW9kZSA9IHRoaXMuaW5saW5lRWRpdE1vZGU7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uub25seUlubGluZUVkaXQgPSB0aGlzLm9ubHlJbmxpbmVFZGl0O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFsbG93SW5saW5lRWRpdCA9IHRoaXMuYWxsb3dJbmxpbmVFZGl0O1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmZvcm1TZXR0aW5nID0gdGhpcy5mb3JtU2V0dGluZztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5uYXZpZ2F0aW9uQXJyb3cgPSB0aGlzLm5hdmlnYXRpb25BcnJvdztcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zZWxlY3RlZE1vID0gdGhpcy5zZWxlY3RlZE1vO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhhc1NlbGVjdGVkID0gdGhpcy5oYXNTZWxlY3RlZDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5ydGwgPSB0aGlzLnJ0bDtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5lc2NhcGVLZXk/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXNjYXBlS2V5LmVtaXQobW8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlc2V0V29ya2Zsb3dTdGF0ZT8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldFdvcmtmbG93U3RhdGUuZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlXG4gICAgICAgICAgICAgICAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgbW8sIGZpZWxkRGJOYW1lIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlLmVtaXQoeyBtbywgZmllbGREYk5hbWUgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnNlbGVjdE5leHRJbmxpbmVSZWNvcmQ/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dElubGluZVJlY29yZC5lbWl0KG1vKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5lZGl0Rm9ybVBhbmVsQ2FuY2VsPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChtbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxDYW5jZWwuZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudWx2Q29tbWFuZENsaWNrPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudWx2Q29tbWFuZENsaWNrLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc29ydEFzY2VuZGluZz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnRBc2NlbmRpbmcuZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zb3J0RGVzY2VuZGluZz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnREZXNjZW5kaW5nLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZmlsdGVyPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb2x1bW5SZXNpemVkPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uUmVzaXplZC5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uucm93Q2hlY2s/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGU6IHsgbW87IGluZGV4OyBjYXVzZT8gfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0NoZWNrLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZGVzZWxlY3RBbGw/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc2VsZWN0QWxsLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5yb3dDbGljaz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoZTogeyBtbzsgaW5kZXggfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZXhwYW5kQ2xpY2s/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGU6IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmRDbGljay5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFsbENoZWNrYm94Py5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsQ2hlY2tib3guZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5lZGl0Rm9ybVBhbmVsU2F2ZT8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsU2F2ZS5lbWl0KG1vKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jYXJ0YWJsZUZvcm1DbG9zZWQ/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGU6IHsgbW87IGluZGV4IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0YWJsZUZvcm1DbG9zZWQuZW1pdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jcmVhdGVOZXdNbz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlTmV3TW8uZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLmhhc0RldGFpbHNJblJvdz8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNEZXRhaWxzSW5Sb3cuZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UudXBkYXRlTW8/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTW8uZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UubWFuZGF0b3J5Py5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1ZhbGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFuZGF0b3J5LmVtaXQoaXNWYWxpZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZXhlY3V0ZVRvb2xiYXJCdXR0b24/LnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlVG9vbGJhckJ1dHRvbi5lbWl0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnJlc2V0R3JpZFNldHRpbmdzPy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRHcmlkU2V0dGluZ3MuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLndvcmtmbG93U2hhcmVCdXR0b25zXG4gICAgICAgICAgICAgICAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGU6IFNoYXJlQnV0dG9uc0Nob2ljZURlZikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NoYXJlQnV0dG9ucy5lbWl0KGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl92Y3IuaW5zZXJ0KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVwb3J0Vmlld1JlZiA9IGNvbXBvbmVudFJlZjtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChildren } from '@angular/core';
|
|
2
|
-
import { BaseComponent } from 'barsa-novin-ray-core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "barsa-novin-ray-core";
|
|
5
|
-
import * as i2 from "@fundamental-ngx/core/button";
|
|
6
|
-
import * as i3 from "@fundamental-ngx/core/toolbar";
|
|
7
|
-
import * as i4 from "@angular/common";
|
|
8
|
-
export class ResponsiveToolbarComponent extends BaseComponent {
|
|
9
|
-
constructor(portalService) {
|
|
10
|
-
super();
|
|
11
|
-
this.portalService = portalService;
|
|
12
|
-
this.btnClick = new EventEmitter();
|
|
13
|
-
this.dirValue$ = this.portalService.dirValue$;
|
|
14
|
-
}
|
|
15
|
-
ngOnInit() {
|
|
16
|
-
super.ngOnInit();
|
|
17
|
-
this.btns = this.buttons;
|
|
18
|
-
}
|
|
19
|
-
calculateWidthOfButtons() {
|
|
20
|
-
const tempList = [];
|
|
21
|
-
this.btnListRef.toArray().forEach((btnRef, i) => {
|
|
22
|
-
let btnTemp = this.buttons[i];
|
|
23
|
-
if (this.buttons[i] === '-') {
|
|
24
|
-
btnTemp = { text: '-', width: btnRef.nativeElement.offsetWidth };
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
btnTemp.width = btnRef.nativeElement.offsetWidth + 10;
|
|
28
|
-
}
|
|
29
|
-
tempList.push(btnTemp);
|
|
30
|
-
});
|
|
31
|
-
this.buttonsCalculated = [...tempList];
|
|
32
|
-
}
|
|
33
|
-
onButtonClick(button) {
|
|
34
|
-
this.btnClick.emit(button);
|
|
35
|
-
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResponsiveToolbarComponent, deps: [{ token: i1.PortalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ResponsiveToolbarComponent, selector: "bsu-responsive-toolbar", inputs: { buttons: "buttons" }, outputs: { btnClick: "btnClick" }, viewQueries: [{ propertyName: "btnListRef", predicate: ["btnRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- <div style=\"width: 100%; height: 0; visibility: hidden\" #containerRef>\n<ng-container\n *ngTemplateOutlet=\"renderToolbar; context: { $implicit: buttons }\"\n></ng-container>\n</div>\n<bsu-responsive-toolbar-renderer\n *ngIf=\"buttonsCalculated\"\n [buttons]=\"buttonsCalculated\"\n (btnClick)=\"onButtonClick($event)\"\n [renderToolbar]=\"renderToolbar\"\n></bsu-responsive-toolbar-renderer>\n\n<ng-template #renderToolbar let-btnList>\n <ng-container *ngFor=\"let btn of btnList\">\n <ng-container *ngIf=\"btn === '-' || btn.text === '-'; else btnCommand\">\n <span #btnRef class=\"toolbar-btn toolbar-vseperator\"></span>\n </ng-container>\n <ng-template #btnCommand>\n <ui5-button\n #btnRef\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n class=\"toolbar-btn\"\n [attr.design]=\"btn.emphasized ? 'Emphasized' : 'Transparent'\"\n [attr.icon]=\"btn.newIcon ? btn.newIcon : null\"\n >{{ btn.text }}\n <img *ngIf=\"!btn.newIcon && !btn.isBuiltin\" width=\"16\" [src]=\"btn.icon\"\n /></ui5-button>\n </ng-template>\n </ng-container>\n </ng-template> -->\n\n<fd-toolbar [shouldOverflow]=\"true\" [style.direction]=\"dirValue$ | async\">\n @for (btn of btns; track btn) { @if (btn === '-' || btn.text === '-') {\n <fd-toolbar-separator></fd-toolbar-separator>\n } @else {\n <button\n fd-toolbar-item\n fd-button\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n [fdType]=\"btn.emphasized ? 'emphasized' : 'transparent'\"\n [label]=\"btn.text\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n >\n @if (!btn.newIcon && !btn.isBuiltin) {\n <img width=\"16\" [src]=\"btn.icon\" />\n }\n </button>\n }\n <ng-template #btnCommand>\n <button\n fd-toolbar-item\n fd-button\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n [fdType]=\"btn.emphasized ? 'emphasized' : 'transparent'\"\n [label]=\"btn.text\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n >\n @if (!btn.newIcon && !btn.isBuiltin) {\n <img width=\"16\" [src]=\"btn.icon\" />\n }\n </button>\n </ng-template>\n }\n</fd-toolbar>\n", styles: [":host{display:block;width:100%;position:relative}:host ::ng-deep .fd-toolbar--solid{background-color:var(--sapBackgroundColor, #f7f7f7);border:none}\n"], dependencies: [{ kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i3.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38
|
-
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResponsiveToolbarComponent, decorators: [{
|
|
40
|
-
type: Component,
|
|
41
|
-
args: [{ selector: 'bsu-responsive-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <div style=\"width: 100%; height: 0; visibility: hidden\" #containerRef>\n<ng-container\n *ngTemplateOutlet=\"renderToolbar; context: { $implicit: buttons }\"\n></ng-container>\n</div>\n<bsu-responsive-toolbar-renderer\n *ngIf=\"buttonsCalculated\"\n [buttons]=\"buttonsCalculated\"\n (btnClick)=\"onButtonClick($event)\"\n [renderToolbar]=\"renderToolbar\"\n></bsu-responsive-toolbar-renderer>\n\n<ng-template #renderToolbar let-btnList>\n <ng-container *ngFor=\"let btn of btnList\">\n <ng-container *ngIf=\"btn === '-' || btn.text === '-'; else btnCommand\">\n <span #btnRef class=\"toolbar-btn toolbar-vseperator\"></span>\n </ng-container>\n <ng-template #btnCommand>\n <ui5-button\n #btnRef\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n class=\"toolbar-btn\"\n [attr.design]=\"btn.emphasized ? 'Emphasized' : 'Transparent'\"\n [attr.icon]=\"btn.newIcon ? btn.newIcon : null\"\n >{{ btn.text }}\n <img *ngIf=\"!btn.newIcon && !btn.isBuiltin\" width=\"16\" [src]=\"btn.icon\"\n /></ui5-button>\n </ng-template>\n </ng-container>\n </ng-template> -->\n\n<fd-toolbar [shouldOverflow]=\"true\" [style.direction]=\"dirValue$ | async\">\n @for (btn of btns; track btn) { @if (btn === '-' || btn.text === '-') {\n <fd-toolbar-separator></fd-toolbar-separator>\n } @else {\n <button\n fd-toolbar-item\n fd-button\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n [fdType]=\"btn.emphasized ? 'emphasized' : 'transparent'\"\n [label]=\"btn.text\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n >\n @if (!btn.newIcon && !btn.isBuiltin) {\n <img width=\"16\" [src]=\"btn.icon\" />\n }\n </button>\n }\n <ng-template #btnCommand>\n <button\n fd-toolbar-item\n fd-button\n (click)=\"onButtonClick(btn)\"\n [attr.disabled]=\"btn.enable === false ? true : null\"\n [attr.disabled]=\"btn.readonly === true ? true : null\"\n [fdType]=\"btn.emphasized ? 'emphasized' : 'transparent'\"\n [label]=\"btn.text\"\n [glyph]=\"btn.newIcon ? btn.newIcon : null\"\n >\n @if (!btn.newIcon && !btn.isBuiltin) {\n <img width=\"16\" [src]=\"btn.icon\" />\n }\n </button>\n </ng-template>\n }\n</fd-toolbar>\n", styles: [":host{display:block;width:100%;position:relative}:host ::ng-deep .fd-toolbar--solid{background-color:var(--sapBackgroundColor, #f7f7f7);border:none}\n"] }]
|
|
42
|
-
}], ctorParameters: () => [{ type: i1.PortalService }], propDecorators: { buttons: [{
|
|
43
|
-
type: Input
|
|
44
|
-
}], btnClick: [{
|
|
45
|
-
type: Output
|
|
46
|
-
}], btnListRef: [{
|
|
47
|
-
type: ViewChildren,
|
|
48
|
-
args: ['btnRef']
|
|
49
|
-
}] } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZS10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3Jlc3BvbnNpdmUtdG9vbGJhci9yZXNwb25zaXZlLXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvcmVzcG9uc2l2ZS10b29sYmFyL3Jlc3BvbnNpdmUtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBU3BFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxhQUFhO0lBU3pELFlBQW9CLGFBQTRCO1FBQzVDLEtBQUssRUFBRSxDQUFDO1FBRFEsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFQdEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFTekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQztJQUNELHVCQUF1QjtRQUNuQixNQUFNLFFBQVEsR0FBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckUsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQzFELENBQUM7WUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsYUFBYSxDQUFDLE1BQU07UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQzsrR0FoQ1EsMEJBQTBCO21HQUExQiwwQkFBMEIsaVBDcEJ2Qyx1bEZBc0VBOzs0RkRsRGEsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNJLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTTtrRkFHdEMsT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ2lCLFVBQVU7c0JBQWpDLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFZpZXdDaGlsZHJlblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBQb3J0YWxTZXJ2aWNlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LXJlc3BvbnNpdmUtdG9vbGJhcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVzcG9uc2l2ZS10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Jlc3BvbnNpdmUtdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3BvbnNpdmVUb29sYmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBidXR0b25zOiBhbnlbXTtcclxuICAgIEBPdXRwdXQoKSBidG5DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQFZpZXdDaGlsZHJlbignYnRuUmVmJykgYnRuTGlzdFJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cclxuICAgIGRpclZhbHVlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgYnV0dG9uc0NhbGN1bGF0ZWQ6IGFueVtdO1xyXG4gICAgYnRuczogYW55W107XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmRpclZhbHVlJCA9IHRoaXMucG9ydGFsU2VydmljZS5kaXJWYWx1ZSQ7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYnRucyA9IHRoaXMuYnV0dG9ucztcclxuICAgIH1cclxuICAgIGNhbGN1bGF0ZVdpZHRoT2ZCdXR0b25zKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHRlbXBMaXN0OiBhbnkgPSBbXTtcclxuICAgICAgICB0aGlzLmJ0bkxpc3RSZWYudG9BcnJheSgpLmZvckVhY2goKGJ0blJlZiwgaSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYnRuVGVtcCA9IHRoaXMuYnV0dG9uc1tpXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYnV0dG9uc1tpXSA9PT0gJy0nKSB7XHJcbiAgICAgICAgICAgICAgICBidG5UZW1wID0geyB0ZXh0OiAnLScsIHdpZHRoOiBidG5SZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYnRuVGVtcC53aWR0aCA9IGJ0blJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICsgMTA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGVtcExpc3QucHVzaChidG5UZW1wKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmJ1dHRvbnNDYWxjdWxhdGVkID0gWy4uLnRlbXBMaXN0XTtcclxuICAgIH1cclxuICAgIG9uQnV0dG9uQ2xpY2soYnV0dG9uKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5idG5DbGljay5lbWl0KGJ1dHRvbik7XHJcbiAgICB9XHJcbn1cclxuIiwiPCEtLSA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMDsgdmlzaWJpbGl0eTogaGlkZGVuXCIgI2NvbnRhaW5lclJlZj5cbjxuZy1jb250YWluZXJcbiAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZW5kZXJUb29sYmFyOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogYnV0dG9ucyB9XCJcbj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGJzdS1yZXNwb25zaXZlLXRvb2xiYXItcmVuZGVyZXJcbiAgKm5nSWY9XCJidXR0b25zQ2FsY3VsYXRlZFwiXG4gIFtidXR0b25zXT1cImJ1dHRvbnNDYWxjdWxhdGVkXCJcbiAgKGJ0bkNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gIFtyZW5kZXJUb29sYmFyXT1cInJlbmRlclRvb2xiYXJcIlxuPjwvYnN1LXJlc3BvbnNpdmUtdG9vbGJhci1yZW5kZXJlcj5cblxuPG5nLXRlbXBsYXRlICNyZW5kZXJUb29sYmFyIGxldC1idG5MaXN0PlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidG4gb2YgYnRuTGlzdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidG4gPT09ICctJyB8fCBidG4udGV4dCA9PT0gJy0nOyBlbHNlIGJ0bkNvbW1hbmRcIj5cbiAgICAgIDxzcGFuICNidG5SZWYgY2xhc3M9XCJ0b29sYmFyLWJ0biB0b29sYmFyLXZzZXBlcmF0b3JcIj48L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNidG5Db21tYW5kPlxuICAgICAgPHVpNS1idXR0b25cbiAgICAgICAgI2J0blJlZlxuICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGljayhidG4pXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiYnRuLmVuYWJsZSA9PT0gZmFsc2UgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImJ0bi5yZWFkb25seSA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgY2xhc3M9XCJ0b29sYmFyLWJ0blwiXG4gICAgICAgIFthdHRyLmRlc2lnbl09XCJidG4uZW1waGFzaXplZCA/ICdFbXBoYXNpemVkJyA6ICdUcmFuc3BhcmVudCdcIlxuICAgICAgICBbYXR0ci5pY29uXT1cImJ0bi5uZXdJY29uID8gYnRuLm5ld0ljb24gOiBudWxsXCJcbiAgICAgICAgPnt7IGJ0bi50ZXh0IH19XG4gICAgICAgIDxpbWcgKm5nSWY9XCIhYnRuLm5ld0ljb24gJiYgIWJ0bi5pc0J1aWx0aW5cIiB3aWR0aD1cIjE2XCIgW3NyY109XCJidG4uaWNvblwiXG4gICAgICAgIC8+PC91aTUtYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT4gLS0+XG5cbjxmZC10b29sYmFyIFtzaG91bGRPdmVyZmxvd109XCJ0cnVlXCIgW3N0eWxlLmRpcmVjdGlvbl09XCJkaXJWYWx1ZSQgfCBhc3luY1wiPlxuICAgIEBmb3IgKGJ0biBvZiBidG5zOyB0cmFjayBidG4pIHsgQGlmIChidG4gPT09ICctJyB8fCBidG4udGV4dCA9PT0gJy0nKSB7XG4gICAgPGZkLXRvb2xiYXItc2VwYXJhdG9yPjwvZmQtdG9vbGJhci1zZXBhcmF0b3I+XG4gICAgfSBAZWxzZSB7XG4gICAgPGJ1dHRvblxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrKGJ0bilcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJidG4uZW5hYmxlID09PSBmYWxzZSA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiYnRuLnJlYWRvbmx5ID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICBbZmRUeXBlXT1cImJ0bi5lbXBoYXNpemVkID8gJ2VtcGhhc2l6ZWQnIDogJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFtsYWJlbF09XCJidG4udGV4dFwiXG4gICAgICAgIFtnbHlwaF09XCJidG4ubmV3SWNvbiA/IGJ0bi5uZXdJY29uIDogbnVsbFwiXG4gICAgPlxuICAgICAgICBAaWYgKCFidG4ubmV3SWNvbiAmJiAhYnRuLmlzQnVpbHRpbikge1xuICAgICAgICA8aW1nIHdpZHRoPVwiMTZcIiBbc3JjXT1cImJ0bi5pY29uXCIgLz5cbiAgICAgICAgfVxuICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgICA8bmctdGVtcGxhdGUgI2J0bkNvbW1hbmQ+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGljayhidG4pXCJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImJ0bi5lbmFibGUgPT09IGZhbHNlID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiYnRuLnJlYWRvbmx5ID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICAgICAgW2ZkVHlwZV09XCJidG4uZW1waGFzaXplZCA/ICdlbXBoYXNpemVkJyA6ICd0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImJ0bi50ZXh0XCJcbiAgICAgICAgICAgIFtnbHlwaF09XCJidG4ubmV3SWNvbiA/IGJ0bi5uZXdJY29uIDogbnVsbFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoIWJ0bi5uZXdJY29uICYmICFidG4uaXNCdWlsdGluKSB7XG4gICAgICAgICAgICA8aW1nIHdpZHRoPVwiMTZcIiBbc3JjXT1cImJ0bi5pY29uXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9XG48L2ZkLXRvb2xiYXI+XG4iXX0=
|