@bizdoc/core 1.16.17 → 1.16.22
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/assets/bizdoc-schema.json +15 -0
- package/assets/themes/brown.min.css +2 -2
- package/assets/themes/dark.min.css +2 -2
- package/assets/themes/deep-purple-light-blue.min.css +3 -3
- package/assets/themes/deep-purple-teal.min.css +3 -3
- package/assets/themes/default.min.css +3 -3
- package/assets/themes/green.min.css +2 -2
- package/assets/themes/indigo.min.css +2 -2
- package/esm2020/lib/admin/admin-dismiss.service.mjs +3 -3
- package/esm2020/lib/admin/admin-menu.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/cube-axes-filter.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/declarations.mjs +1 -1
- package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +54 -54
- package/esm2020/lib/admin/configuration-designer/designer-privileges.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/designer.base.mjs +9 -9
- package/esm2020/lib/admin/configuration-designer/designer.component.mjs +18 -14
- package/esm2020/lib/admin/configuration-designer/elements/action.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/analysis-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/analysis-widget.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/anomaly-rule.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/box-form.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/configuration-datasource.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/cube-index-utility.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/cube-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +37 -29
- package/esm2020/lib/admin/configuration-designer/elements/documents-report.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/documents-widget.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/explore-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/folder.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/matrix-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/parallel-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/performance-widget.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/pivot-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/policy.component.mjs +17 -0
- package/esm2020/lib/admin/configuration-designer/elements/report.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/return-to-role-action.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/role.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/rule.component.mjs +5 -5
- package/esm2020/lib/admin/configuration-designer/elements/state.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/sum-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/tasks-report.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/type.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/usage-report.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/utility.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/widget.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/icon-picker.component.mjs +3 -3
- package/esm2020/lib/admin/core/ace.input.mjs +3 -3
- package/esm2020/lib/admin/core/color-picker.input.mjs +3 -3
- package/esm2020/lib/admin/core/search.input.mjs +3 -3
- package/esm2020/lib/admin/diff/configuration-diff.component.mjs +3 -3
- package/esm2020/lib/admin/document-trace/document-trace.component.mjs +3 -3
- package/esm2020/lib/admin/document-trace/reassign.dialog.mjs +3 -3
- package/esm2020/lib/admin/document-trace/trace-element.component.mjs +3 -3
- package/esm2020/lib/admin/form/designer/designer.component.mjs +3 -3
- package/esm2020/lib/admin/form/form.resolve.service.mjs +3 -3
- package/esm2020/lib/admin/form/workflow/node.component.mjs +3 -3
- package/esm2020/lib/admin/form/workflow/role-node.component.mjs +3 -3
- package/esm2020/lib/admin/form/workflow/workflow.component.mjs +3 -3
- package/esm2020/lib/admin/indices/manage-cube-index.component.mjs +3 -3
- package/esm2020/lib/admin/patterns/patterns.component.mjs +3 -3
- package/esm2020/lib/admin/permissions/permissions.component.mjs +3 -3
- package/esm2020/lib/admin/positions/positions-popup.component.mjs +3 -3
- package/esm2020/lib/admin/positions/positions.component.mjs +3 -3
- package/esm2020/lib/admin/profiler/outofoffice.component.mjs +3 -3
- package/esm2020/lib/admin/profiler/profiler.component.mjs +3 -3
- package/esm2020/lib/admin/system.service.mjs +4 -4
- package/esm2020/lib/admin/utility-wrapper.component.mjs +3 -3
- package/esm2020/lib/admin/utility.pane.component.mjs +3 -3
- package/esm2020/lib/app.component.mjs +6 -6
- package/esm2020/lib/bizdoc.module.mjs +4 -4
- package/esm2020/lib/browse/browse-items.component.mjs +3 -3
- package/esm2020/lib/browse/browse.mobile.component.mjs +3 -3
- package/esm2020/lib/browse/browse.pane.component.mjs +3 -3
- package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +3 -3
- package/esm2020/lib/browse/filter/filter.component.mjs +3 -3
- package/esm2020/lib/browse/folders-menu.component.mjs +3 -3
- package/esm2020/lib/chat/chat-info.mjs +3 -3
- package/esm2020/lib/chat/chat.mobile.component.mjs +3 -3
- package/esm2020/lib/chat/chat.service.mjs +3 -3
- package/esm2020/lib/chat/contacts.component.mjs +6 -6
- package/esm2020/lib/chat/contacts.pane.component.mjs +3 -3
- package/esm2020/lib/chat/conversation.component.mjs +3 -3
- package/esm2020/lib/chat/conversation.pane.component.mjs +3 -3
- package/esm2020/lib/compose/action/action-picker.component.mjs +3 -3
- package/esm2020/lib/compose/action/action.dialog.mjs +3 -3
- package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +3 -3
- package/esm2020/lib/compose/action/assign-action.component.mjs +3 -3
- package/esm2020/lib/compose/action/moveto-action.component.mjs +3 -3
- package/esm2020/lib/compose/action/return-action.component.mjs +3 -3
- package/esm2020/lib/compose/attachments/attachments.component.mjs +3 -3
- package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +3 -3
- package/esm2020/lib/compose/attachments/progress-button.directive.mjs +3 -3
- package/esm2020/lib/compose/box/box.component.mjs +3 -3
- package/esm2020/lib/compose/can-deactivate-changes.service.mjs +3 -3
- package/esm2020/lib/compose/comments/comment.component.mjs +3 -3
- package/esm2020/lib/compose/comments/comments.component.mjs +3 -3
- package/esm2020/lib/compose/comments/comments.pane.component.mjs +3 -3
- package/esm2020/lib/compose/comments/edit-comment.component.mjs +3 -3
- package/esm2020/lib/compose/comments/edits.component.mjs +3 -3
- package/esm2020/lib/compose/comments/quick-comment.component.exp.mjs +3 -3
- package/esm2020/lib/compose/comments/votes.component.mjs +3 -3
- package/esm2020/lib/compose/compose-resolve.service.mjs +6 -6
- package/esm2020/lib/compose/compose.mobile.component.mjs +3 -3
- package/esm2020/lib/compose/compose.pane.component.mjs +3 -3
- package/esm2020/lib/compose/copy/copy.dialog.mjs +3 -3
- package/esm2020/lib/compose/dismiss.service.mjs +3 -3
- package/esm2020/lib/compose/document-resolver.service.mjs +3 -3
- package/esm2020/lib/compose/document.component.mjs +3 -3
- package/esm2020/lib/compose/document.mobile.component.mjs +3 -3
- package/esm2020/lib/compose/document.pane.component.mjs +3 -3
- package/esm2020/lib/compose/events/events.component.mjs +3 -3
- package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
- package/esm2020/lib/compose/form.component.mjs +3 -3
- package/esm2020/lib/compose/new-menu.component.mjs +3 -3
- package/esm2020/lib/compose/privilage.directive.mjs +6 -6
- package/esm2020/lib/compose/recipient-resolver.service.mjs +3 -3
- package/esm2020/lib/compose/state.component.mjs +3 -3
- package/esm2020/lib/compose/tag/tags.component.mjs +3 -3
- package/esm2020/lib/compose/trace/flow.component.mjs +3 -3
- package/esm2020/lib/compose/trace/people.component.mjs +3 -3
- package/esm2020/lib/compose/trace/trace.base.mjs +3 -3
- package/esm2020/lib/compose/trace/trace.component.mjs +3 -3
- package/esm2020/lib/compose/trace/trace.pane.component.mjs +3 -3
- package/esm2020/lib/compose/version-compare/version-compare.component.mjs +3 -3
- package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +9 -9
- package/esm2020/lib/compose/version-compare/version.pane.component.mjs +3 -3
- package/esm2020/lib/core/NgComponentOutlet.mjs +3 -3
- package/esm2020/lib/core/account.service.mjs +3 -3
- package/esm2020/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
- package/esm2020/lib/core/avatar/avatar.component.mjs +3 -3
- package/esm2020/lib/core/component-factory-resolver.mjs +3 -3
- package/esm2020/lib/core/controls/address.input.mjs +3 -3
- package/esm2020/lib/core/controls/auto-complete.input.mjs +3 -3
- package/esm2020/lib/core/controls/combination-picker-body.mjs +3 -3
- package/esm2020/lib/core/controls/combination-picker.mjs +3 -3
- package/esm2020/lib/core/controls/combination-pool.mjs +3 -3
- package/esm2020/lib/core/controls/file.input.mjs +3 -3
- package/esm2020/lib/core/controls/select.input.mjs +3 -3
- package/esm2020/lib/core/controls/time-picker.mjs +3 -3
- package/esm2020/lib/core/controls/timespan.input.mjs +3 -3
- package/esm2020/lib/core/datasource.service.mjs +3 -3
- package/esm2020/lib/core/guide/guide.component.mjs +3 -3
- package/esm2020/lib/core/guide/guide.service.mjs +3 -3
- package/esm2020/lib/core/guide/help-tip.component.mjs +3 -3
- package/esm2020/lib/core/http.interceptor.mjs +3 -3
- package/esm2020/lib/core/hub.service.mjs +3 -3
- package/esm2020/lib/core/identity/identity.component.mjs +3 -3
- package/esm2020/lib/core/info/attachment-info.service.mjs +3 -3
- package/esm2020/lib/core/info/document-info.service.mjs +3 -3
- package/esm2020/lib/core/info/location-info.component.mjs +3 -3
- package/esm2020/lib/core/info/map-info.mjs +3 -3
- package/esm2020/lib/core/layout/autocomplete.field.mjs +6 -5
- package/esm2020/lib/core/layout/checkbox.field.mjs +3 -3
- package/esm2020/lib/core/layout/checkbox.mjs +5 -5
- package/esm2020/lib/core/layout/date-range.field.mjs +6 -5
- package/esm2020/lib/core/layout/date.field.mjs +6 -5
- package/esm2020/lib/core/layout/expression.field.mjs +6 -5
- package/esm2020/lib/core/layout/file.field.mjs +3 -3
- package/esm2020/lib/core/layout/html.field.mjs +6 -5
- package/esm2020/lib/core/layout/input.base.mjs +3 -3
- package/esm2020/lib/core/layout/input.field.mjs +6 -5
- package/esm2020/lib/core/layout/layout.component.mjs +4 -4
- package/esm2020/lib/core/layout/numeric.field.mjs +6 -5
- package/esm2020/lib/core/layout/select.field.mjs +23 -16
- package/esm2020/lib/core/layout/switch.field.mjs +6 -5
- package/esm2020/lib/core/layout/textarea.field.mjs +6 -5
- package/esm2020/lib/core/layout/timespan.field.mjs +6 -5
- package/esm2020/lib/core/lottie-animation.mjs +3 -3
- package/esm2020/lib/core/mailbox.service.mjs +3 -3
- package/esm2020/lib/core/none.component.mjs +3 -3
- package/esm2020/lib/core/pipes/action.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/calendar.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/date-format.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/daterange.pipe.mjs +6 -6
- package/esm2020/lib/core/pipes/difference.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/duration-format.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/duration.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/form.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/join.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/role.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/sort.pipe.mjs +6 -6
- package/esm2020/lib/core/pipes/state.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/time-ago.pipe.mjs +50 -4
- package/esm2020/lib/core/pipes/translate.pipe.mjs +6 -6
- package/esm2020/lib/core/pipes/type-value.pipe.mjs +3 -3
- package/esm2020/lib/core/pipes/user-name.pipe.mjs +3 -3
- package/esm2020/lib/core/popup/popup.component.mjs +3 -3
- package/esm2020/lib/core/popup/popup.service.mjs +3 -3
- package/esm2020/lib/core/popup/tooltip.directive.mjs +6 -6
- package/esm2020/lib/core/prompt/ask/ask.dialog.mjs +3 -3
- package/esm2020/lib/core/prompt/mask/mask.component.mjs +3 -3
- package/esm2020/lib/core/prompt.service.mjs +3 -3
- package/esm2020/lib/core/router.mjs +6 -6
- package/esm2020/lib/core/save-changes.dialog.mjs +3 -3
- package/esm2020/lib/core/session.service.mjs +3 -3
- package/esm2020/lib/core/slots/router.directive.mjs +3 -3
- package/esm2020/lib/core/slots/router.service.mjs +3 -3
- package/esm2020/lib/core/slots/slots.component.mjs +3 -3
- package/esm2020/lib/core/tagging/documents.component.mjs +3 -3
- package/esm2020/lib/core/tagging/edit-input.component.mjs +3 -3
- package/esm2020/lib/core/tagging/emoji.component.mjs +3 -3
- package/esm2020/lib/core/tagging/tagging-item.directive.mjs +3 -3
- package/esm2020/lib/core/tagging/tagging.component-base.mjs +3 -3
- package/esm2020/lib/core/tagging/tagging.directive.mjs +3 -3
- package/esm2020/lib/core/tagging/tagging.pipe.mjs +3 -3
- package/esm2020/lib/core/tagging/users.component.mjs +3 -3
- package/esm2020/lib/core/translate.service.mjs +3 -3
- package/esm2020/lib/core/translations.mjs +3 -1
- package/esm2020/lib/core/window-title.service.mjs +3 -3
- package/esm2020/lib/cube/accum/accum.component.mjs +3 -3
- package/esm2020/lib/cube/chart/chart.component.mjs +3 -3
- package/esm2020/lib/cube/cube-info.service.mjs +3 -3
- package/esm2020/lib/cube/cube-menu.component.mjs +3 -3
- package/esm2020/lib/cube/cube-view.component.mjs +3 -3
- package/esm2020/lib/cube/cube.service.mjs +3 -3
- package/esm2020/lib/cube/explore/document-item.component.mjs +3 -3
- package/esm2020/lib/cube/explore/explore-item.component.mjs +3 -3
- package/esm2020/lib/cube/explore/explore-items.component.mjs +3 -3
- package/esm2020/lib/cube/explore/explore.pane.component.mjs +3 -3
- package/esm2020/lib/cube/explore/item-resolver.service.mjs +6 -6
- package/esm2020/lib/cube/explore/item.pane.component.mjs +3 -3
- package/esm2020/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
- package/esm2020/lib/cube/filter/filter.component.mjs +3 -3
- package/esm2020/lib/cube/grid/grid.component.mjs +3 -3
- package/esm2020/lib/cube/grid/spreadsheet.component.mjs +3 -3
- package/esm2020/lib/cube/matrix/matrix.base.mjs +3 -3
- package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
- package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +3 -3
- package/esm2020/lib/cube/matrix/popup.component.mjs +3 -3
- package/esm2020/lib/cube/matrix/table.component.mjs +3 -3
- package/esm2020/lib/cube/parallel/parallel.component.mjs +3 -3
- package/esm2020/lib/cube/pivot/pivot.component.mjs +3 -3
- package/esm2020/lib/cube/sum/sum.component.mjs +3 -3
- package/esm2020/lib/cube/view-base.mjs +3 -3
- package/esm2020/lib/cube/view.mobile.component.mjs +3 -3
- package/esm2020/lib/cube/view.pane.component.mjs +3 -3
- package/esm2020/lib/dashboard/actions/actions.widget.mjs +3 -3
- package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +3 -3
- package/esm2020/lib/dashboard/cube/compare.widget.mjs +3 -3
- package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +3 -3
- package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +3 -3
- package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +3 -3
- package/esm2020/lib/dashboard/cube/documents.widget.mjs +3 -3
- package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +3 -3
- package/esm2020/lib/dashboard/dashboard.component.mjs +3 -3
- package/esm2020/lib/dashboard/dashboard.pane.component.mjs +3 -3
- package/esm2020/lib/dashboard/recents/recents.widget.mjs +3 -3
- package/esm2020/lib/dashboard/score/activity.widget.mjs +3 -3
- package/esm2020/lib/dashboard/score/compare-groups.widget.mjs +3 -3
- package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +3 -3
- package/esm2020/lib/dashboard/score/pending-results.widget.mjs +3 -3
- package/esm2020/lib/dashboard/score/personal-score.widget.mjs +3 -3
- package/esm2020/lib/dashboard/widget-item.component.mjs +3 -3
- package/esm2020/lib/desktop.module.mjs +4 -4
- package/esm2020/lib/home/about/about.dialog.mjs +3 -3
- package/esm2020/lib/home/home-base.component.mjs +3 -3
- package/esm2020/lib/home/home.desktop.component.mjs +3 -3
- package/esm2020/lib/home/home.mobile.component.mjs +3 -3
- package/esm2020/lib/home/notifications/notifications.component.mjs +3 -3
- package/esm2020/lib/home/options/options.component.mjs +3 -3
- package/esm2020/lib/home/outofoffice/outofoffice.component.mjs +3 -3
- package/esm2020/lib/home/search.service.mjs +3 -3
- package/esm2020/lib/home/sign/sign.component.mjs +3 -3
- package/esm2020/lib/home/tools.component.mjs +3 -3
- package/esm2020/lib/impersonate/impersonate.component.mjs +3 -3
- package/esm2020/lib/mobile.module.mjs +4 -4
- package/esm2020/lib/modules/chart.module.mjs +4 -4
- package/esm2020/lib/modules/circular-gauge.module.mjs +4 -4
- package/esm2020/lib/modules/datepicker.intl.mjs +3 -3
- package/esm2020/lib/modules/dayjs.module.mjs +4 -4
- package/esm2020/lib/modules/diagram.module.mjs +4 -4
- package/esm2020/lib/modules/gantt.module.mjs +4 -4
- package/esm2020/lib/modules/grid.module.mjs +4 -4
- package/esm2020/lib/modules/material.module.mjs +4 -4
- package/esm2020/lib/modules/paginator.intl.mjs +3 -3
- package/esm2020/lib/modules/pivot.module.mjs +4 -4
- package/esm2020/lib/modules/schedule.module.mjs +4 -4
- package/esm2020/lib/modules/spreadsheet.module.mjs +4 -4
- package/esm2020/lib/modules/stepper.intl.mjs +3 -3
- package/esm2020/lib/modules/texteditor.module.mjs +4 -4
- package/esm2020/lib/notifications/filter.component.mjs +3 -3
- package/esm2020/lib/notifications/notifications-table.component.mjs +3 -3
- package/esm2020/lib/notifications/notifications.mobile.component.mjs +3 -3
- package/esm2020/lib/notifications/notifications.pane.component.mjs +3 -3
- package/esm2020/lib/notifications/notifications.service.mjs +3 -3
- package/esm2020/lib/notifications/types/commented.notification.mjs +3 -3
- package/esm2020/lib/notifications/types/cube-anomaly.notification.mjs +3 -3
- package/esm2020/lib/notifications/types/escalated.notification.mjs +3 -3
- package/esm2020/lib/notifications/types/liked.notification.mjs +3 -3
- package/esm2020/lib/notifications/types/long-running-task.notification.mjs +3 -3
- package/esm2020/lib/notifications/types/notification-base.mjs +3 -3
- package/esm2020/lib/notifications/types/nudge.notification.mjs +3 -3
- package/esm2020/lib/notifications/types/state-changed.notification.mjs +3 -3
- package/esm2020/lib/notifications/types/tagged.notification.mjs +3 -3
- package/esm2020/lib/notifications/types/text.notification.mjs +3 -3
- package/esm2020/lib/notifications/types/upcoming-event.notification.mjs +3 -3
- package/esm2020/lib/options/options.component.mjs +3 -3
- package/esm2020/lib/options/options.service.mjs +3 -3
- package/esm2020/lib/reports/arguments-component.mjs +3 -3
- package/esm2020/lib/reports/cube/documents.component.mjs +3 -3
- package/esm2020/lib/reports/cube/grid-documents.component.mjs +3 -3
- package/esm2020/lib/reports/cube/table-documents.component.mjs +3 -3
- package/esm2020/lib/reports/cube/usage-args.component.mjs +3 -3
- package/esm2020/lib/reports/cube/usage-base.mjs +3 -3
- package/esm2020/lib/reports/cube/usage-chart.component.mjs +3 -3
- package/esm2020/lib/reports/cube/usage-pivot.component.mjs +3 -3
- package/esm2020/lib/reports/cube/usage.component.mjs +3 -3
- package/esm2020/lib/reports/report-viewer.component.mjs +3 -3
- package/esm2020/lib/reports/report.mobile.component.mjs +3 -3
- package/esm2020/lib/reports/report.pane.component.mjs +3 -3
- package/esm2020/lib/reports/reports-menu.component.mjs +3 -3
- package/esm2020/lib/reports/substitution/substitution.component.mjs +3 -3
- package/esm2020/lib/reports/table/table-view.component.mjs +3 -3
- package/esm2020/lib/reports/tasks/tasks.component.mjs +3 -3
- package/esm2020/lib/scheduler/schedule.component.mjs +3 -3
- package/esm2020/lib/scheduler/scheduler.mobile.component.mjs +3 -3
- package/esm2020/lib/scheduler/scheduler.pane.component.mjs +3 -3
- package/esm2020/lib/shared.module.mjs +10 -10
- package/esm2020/lib/system.module.mjs +15 -9
- package/esm2020/lib/views/cube/chart.component.mjs +3 -3
- package/esm2020/lib/views/cube/cube-base.mjs +3 -3
- package/esm2020/lib/views/cube/explore.component.mjs +3 -3
- package/esm2020/lib/views/cube/matrix.component.mjs +3 -3
- package/esm2020/lib/views/cube/parallel.component.mjs +3 -3
- package/esm2020/lib/views/cube/pivot.component.mjs +3 -3
- package/esm2020/lib/views/cube/sum.component.mjs +3 -3
- package/esm2020/lib/views/cube/view.component.mjs +3 -3
- package/esm2020/lib/views/timeline/timeline.component.exp.mjs +3 -3
- package/esm2020/lib/views/view-item.component.mjs +3 -3
- package/esm2020/lib/views/views.component.mjs +3 -3
- package/esm2020/lib/views/views.mobile.component.mjs +3 -3
- package/esm2020/lib/views/views.pane.component.mjs +3 -3
- package/esm2020/public-api.mjs +2 -2
- package/fesm2015/bizdoc-core.mjs +1219 -1128
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +1219 -1128
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/configuration-designer/declarations.d.ts +3 -0
- package/lib/admin/configuration-designer/designer-element.component.d.ts +3 -5
- package/lib/admin/configuration-designer/elements/cube.component.d.ts +17 -11
- package/lib/admin/configuration-designer/elements/policy.component.d.ts +8 -0
- package/lib/admin/system.service.d.ts +5 -0
- package/lib/core/pipes/time-ago.pipe.d.ts +13 -0
- package/lib/core/translations.d.ts +2 -0
- package/lib/shared.module.d.ts +1 -1
- package/lib/system.module.d.ts +63 -62
- package/package.json +14 -14
- package/public-api.d.ts +1 -1
@@ -11,6 +11,7 @@ import { CubeDesignComponent } from "./elements/cube.component";
|
|
11
11
|
import { FolderDesignComponent } from "./elements/folder.component";
|
12
12
|
import { FormDesignComponent } from "./elements/form.component";
|
13
13
|
import { GuideDesignComponent } from "./elements/guide.component";
|
14
|
+
import { PolicyDesignComponent } from "./elements/policy.component";
|
14
15
|
import { ReportDesignerComponent } from "./elements/report.component";
|
15
16
|
import { RoleDesignComponent } from "./elements/role.component";
|
16
17
|
import { RuleDesignComponent } from "./elements/rule.component";
|
@@ -29,12 +30,13 @@ import * as i6 from "@angular/flex-layout/flex";
|
|
29
30
|
import * as i7 from "@angular/cdk/drag-drop";
|
30
31
|
import * as i8 from "@angular/material/card";
|
31
32
|
import * as i9 from "@angular/material/core";
|
32
|
-
import * as i10 from "@angular/material/
|
33
|
-
import * as i11 from "@angular/material/
|
34
|
-
import * as i12 from "@angular/material/
|
35
|
-
import * as i13 from "@angular/material/
|
36
|
-
import * as i14 from "
|
37
|
-
import * as i15 from "../../core/
|
33
|
+
import * as i10 from "@angular/material/progress-bar";
|
34
|
+
import * as i11 from "@angular/material/toolbar";
|
35
|
+
import * as i12 from "@angular/material/button";
|
36
|
+
import * as i13 from "@angular/material/icon";
|
37
|
+
import * as i14 from "@angular/material/menu";
|
38
|
+
import * as i15 from "../../core/popup/tooltip.directive";
|
39
|
+
import * as i16 from "../../core/pipes/translate.pipe";
|
38
40
|
/** */
|
39
41
|
let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
|
40
42
|
constructor(_panes, _translate, _ps, _injector, _ref) {
|
@@ -64,6 +66,7 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
|
|
64
66
|
{ elements: r.utilities, type: 'Utilities', comp: UtilityDesignComponent, templates: r.tUtilities, privileges: true },
|
65
67
|
{ elements: r.types, type: 'Types', comp: TypeDesignComponent, templates: r.tTypes },
|
66
68
|
{ elements: r.rules, type: 'Rules', comp: RuleDesignComponent, templates: r.tRules },
|
69
|
+
{ elements: r.policies, type: 'Policies', comp: PolicyDesignComponent, templates: r.tPolicies },
|
67
70
|
];
|
68
71
|
this.sections.forEach(s => s.elements.forEach(e => {
|
69
72
|
if (s.privileges && !e.privileges)
|
@@ -124,7 +127,7 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
|
|
124
127
|
eclone = clone(eclone); // deep
|
125
128
|
const injector = this._createInjector(eclone, mode);
|
126
129
|
return new Promise((resolve, reject) => this._panes.navigate(section.comp, {
|
127
|
-
policy: mode === 'add' ? OpenPolicy.Dialog | OpenPolicy.Stretch : OpenPolicy.Tab | OpenPolicy.
|
130
|
+
policy: mode === 'add' ? OpenPolicy.Dialog | OpenPolicy.Stretch : OpenPolicy.Tab | OpenPolicy.Toggle,
|
128
131
|
group: this._translate.get(section.type),
|
129
132
|
//title,
|
130
133
|
injector: injector
|
@@ -184,7 +187,7 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
|
|
184
187
|
}
|
185
188
|
save() {
|
186
189
|
this.saving = true;
|
187
|
-
const { actions, cubes, folders, forms, guides, reports, roles, rules, states, types, utilities, views, widgets } = this.model;
|
190
|
+
const { policies, actions, cubes, folders, forms, guides, reports, roles, rules, states, types, utilities, views, widgets } = this.model;
|
188
191
|
const model = {
|
189
192
|
actions: strip(actions),
|
190
193
|
cubes: strip(cubes),
|
@@ -194,6 +197,7 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
|
|
194
197
|
reports: strip(reports),
|
195
198
|
roles: strip(roles),
|
196
199
|
rules: strip(rules),
|
200
|
+
policies: strip(policies),
|
197
201
|
states: strip(states),
|
198
202
|
types: strip(types),
|
199
203
|
utilities: strip(utilities),
|
@@ -202,7 +206,7 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
|
|
202
206
|
};
|
203
207
|
return this._ref.execute(model).toPromise().then(() => {
|
204
208
|
this._ps.toast('ChangesSaved');
|
205
|
-
apply(actions, cubes, folders, forms, guides, reports, roles, rules, states, types, utilities, views, widgets);
|
209
|
+
apply(policies, actions, cubes, folders, forms, guides, reports, roles, rules, states, types, utilities, views, widgets);
|
206
210
|
this.saving = false;
|
207
211
|
this.dirty = false;
|
208
212
|
}, () => {
|
@@ -221,17 +225,17 @@ let ConfigurationDesignerComponent = class ConfigurationDesignerComponent {
|
|
221
225
|
}
|
222
226
|
}
|
223
227
|
};
|
224
|
-
ConfigurationDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0
|
225
|
-
ConfigurationDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0
|
228
|
+
ConfigurationDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ConfigurationDesignerComponent, deps: [{ token: i1.PanesRouter }, { token: i2.TranslateService }, { token: i3.PromptService }, { token: i0.Injector }, { token: i4.UtilityRef }], target: i0.ɵɵFactoryTarget.Component });
|
229
|
+
ConfigurationDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ConfigurationDesignerComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading ? 'buffer' : 'indeterminate'\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<section *ngFor=\"let s of sections\">\r\n <h2 class=\"mat-title\">{{s.type | translate}}</h2>\r\n <div class=\"elements\" cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"s.elements\" (cdkDropListDropped)=\"drop($event)\">\r\n <mat-card *ngFor=\"let e of s.elements\" [class.disabled]=\"e.disabled\" cdkDrag cdkDragRootElement=\".mat-card-title\">\r\n <!-- @item-->\r\n <mat-card-title>\r\n {{e.title}}\r\n <span class=\"divider\"></span>\r\n <mat-icon [bizdocTooltip]=\"e.help\" *ngIf=\"e.help\">help_outline</mat-icon>\r\n </mat-card-title>\r\n <mat-card-subtitle>\r\n {{e.name}}\r\n </mat-card-subtitle>\r\n <mat-card-content>\r\n <ng-container *ngComponentOutlet=\"s.comp; injector: e.injector\"></ng-container>\r\n </mat-card-content>\r\n <mat-card-actions fxLayout=\"row\">\r\n <button mat-icon-button (click)=\"copy(s, e)\" *ngIf=\"!e.copyOf\" [bizdocTooltip]=\"'Copy'|translate\"><mat-icon>file_copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"s.elements.remove(e)\" *ngIf=\"e.draft || e.empty\" [bizdocTooltip]=\"'Discard'|translate\"><mat-icon>delete</mat-icon></button>\r\n <button mat-icon-button (click)=\"toggleDisabled(e)\" [bizdocTooltip]=\"(e.disabled ? 'Enable' : 'Disable')|translate\"><mat-icon>{{e.disabled ? 'visibility' : 'visibility_off'}}</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"edit(e, s)\" [bizdocTooltip]=\"'Settings'|translate\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <div class=\"add-element\" matRipple (click)=\"add(s, menuTrigger, $event)\" *ngIf=\"s.templates?.length\">\r\n <span [matMenuTriggerFor]=\"templateMenu\" #menuTrigger=\"matMenuTrigger\"></span>\r\n <button mat-icon-button><mat-icon [bizdocTooltip]=\"'New'|translate\" disableRipple=\"true\">add</mat-icon></button>\r\n <mat-menu #templateMenu>\r\n <button mat-menu-item *ngFor=\"let t of s.templates\" (click)=\"create(s, t)\">\r\n <span *ngIf=\"t.family\">\r\n {{t.family}}\r\n - \r\n </span>\r\n <span>\r\n {{t.title}}\r\n </span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["section h2{margin:0 8px;position:sticky}section .elements{display:flex;flex-wrap:wrap}section .elements .disabled{opacity:.5;background-color:transparent}section .add-element{border:2px dashed gray;min-width:126px;min-height:126px;border-radius:3px;margin:1px 0 6px;text-align:center}section .add-element button{top:50%;transform:translateY(-50%)}:host ::ng-deep .mat-card{margin:0 6px 6px;display:flex;flex-direction:column}:host ::ng-deep .mat-card button{opacity:.1}:host ::ng-deep .mat-card:hover button{opacity:1}:host ::ng-deep .mat-card-header-text{width:100%}:host ::ng-deep .mat-card-title{display:flex;flex-direction:row;align-items:center}.divider{min-width:3px}:host ::ng-deep .mat-card-content{flex:1}\n"], dependencies: [{ kind: "directive", type: i5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i8.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i8.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i8.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i9.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i11.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i12.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i14.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i14.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i15.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }], animations: [itemAnimation] });
|
226
230
|
ConfigurationDesignerComponent = __decorate([
|
227
231
|
BizDoc({ selector: 'bizdoc-configuration-designer' })
|
228
232
|
], ConfigurationDesignerComponent);
|
229
233
|
export { ConfigurationDesignerComponent };
|
230
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ConfigurationDesignerComponent, decorators: [{
|
231
235
|
type: Component,
|
232
|
-
args: [{ animations: [itemAnimation], template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<section *ngFor=\"let s of sections\">\r\n <h2 class=\"mat-title\">{{s.type | translate}}</h2>\r\n <div class=\"elements\" cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"s.elements\" (cdkDropListDropped)=\"drop($event)\">\r\n <mat-card *ngFor=\"let e of s.elements\" [class.disabled]=\"e.disabled\" cdkDrag cdkDragRootElement=\".mat-card-title\">\r\n <!-- @item-->\r\n <mat-card-title>\r\n
|
236
|
+
args: [{ animations: [itemAnimation], template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading ? 'buffer' : 'indeterminate'\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<section *ngFor=\"let s of sections\">\r\n <h2 class=\"mat-title\">{{s.type | translate}}</h2>\r\n <div class=\"elements\" cdkDropList cdkDropListOrientation=\"horizontal\" [cdkDropListData]=\"s.elements\" (cdkDropListDropped)=\"drop($event)\">\r\n <mat-card *ngFor=\"let e of s.elements\" [class.disabled]=\"e.disabled\" cdkDrag cdkDragRootElement=\".mat-card-title\">\r\n <!-- @item-->\r\n <mat-card-title>\r\n {{e.title}}\r\n <span class=\"divider\"></span>\r\n <mat-icon [bizdocTooltip]=\"e.help\" *ngIf=\"e.help\">help_outline</mat-icon>\r\n </mat-card-title>\r\n <mat-card-subtitle>\r\n {{e.name}}\r\n </mat-card-subtitle>\r\n <mat-card-content>\r\n <ng-container *ngComponentOutlet=\"s.comp; injector: e.injector\"></ng-container>\r\n </mat-card-content>\r\n <mat-card-actions fxLayout=\"row\">\r\n <button mat-icon-button (click)=\"copy(s, e)\" *ngIf=\"!e.copyOf\" [bizdocTooltip]=\"'Copy'|translate\"><mat-icon>file_copy</mat-icon></button>\r\n <button mat-icon-button (click)=\"s.elements.remove(e)\" *ngIf=\"e.draft || e.empty\" [bizdocTooltip]=\"'Discard'|translate\"><mat-icon>delete</mat-icon></button>\r\n <button mat-icon-button (click)=\"toggleDisabled(e)\" [bizdocTooltip]=\"(e.disabled ? 'Enable' : 'Disable')|translate\"><mat-icon>{{e.disabled ? 'visibility' : 'visibility_off'}}</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"edit(e, s)\" [bizdocTooltip]=\"'Settings'|translate\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <div class=\"add-element\" matRipple (click)=\"add(s, menuTrigger, $event)\" *ngIf=\"s.templates?.length\">\r\n <span [matMenuTriggerFor]=\"templateMenu\" #menuTrigger=\"matMenuTrigger\"></span>\r\n <button mat-icon-button><mat-icon [bizdocTooltip]=\"'New'|translate\" disableRipple=\"true\">add</mat-icon></button>\r\n <mat-menu #templateMenu>\r\n <button mat-menu-item *ngFor=\"let t of s.templates\" (click)=\"create(s, t)\">\r\n <span *ngIf=\"t.family\">\r\n {{t.family}}\r\n - \r\n </span>\r\n <span>\r\n {{t.title}}\r\n </span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n</section>\r\n", styles: ["section h2{margin:0 8px;position:sticky}section .elements{display:flex;flex-wrap:wrap}section .elements .disabled{opacity:.5;background-color:transparent}section .add-element{border:2px dashed gray;min-width:126px;min-height:126px;border-radius:3px;margin:1px 0 6px;text-align:center}section .add-element button{top:50%;transform:translateY(-50%)}:host ::ng-deep .mat-card{margin:0 6px 6px;display:flex;flex-direction:column}:host ::ng-deep .mat-card button{opacity:.1}:host ::ng-deep .mat-card:hover button{opacity:1}:host ::ng-deep .mat-card-header-text{width:100%}:host ::ng-deep .mat-card-title{display:flex;flex-direction:row;align-items:center}.divider{min-width:3px}:host ::ng-deep .mat-card-content{flex:1}\n"] }]
|
233
237
|
}], ctorParameters: function () { return [{ type: i1.PanesRouter }, { type: i2.TranslateService }, { type: i3.PromptService }, { type: i0.Injector }, { type: i4.UtilityRef }]; }, propDecorators: { handleKeyboardEvent: [{
|
234
238
|
type: HostListener,
|
235
239
|
args: ['document:keydown', ['$event']]
|
236
240
|
}] } });
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9jb25maWd1cmF0aW9uLWRlc2lnbmVyL2Rlc2lnbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vY29uZmlndXJhdGlvbi1kZXNpZ25lci9kZXNpZ25lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFLL0MsT0FBTyxFQUE2QyxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBRXhILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RF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QUFDLGFBQWEsQ0FBQzs2TUFxRTNCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7IGl0ZW1BbmltYXRpb24gfSBmcm9tIFwiLi4vLi4vY29yZS9hbmltYXRpb25zXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS9iYXNlXCI7XHJcbmltcG9ydCB7IE9wZW5Qb2xpY3kgfSBmcm9tIFwiLi4vLi4vY29yZS9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gXCIuLi8uLi9jb3JlL2RlY29yYXRvcnNcIjtcclxuaW1wb3J0IHsgY2xlYW51cCB9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tIFwiLi4vLi4vY29yZS9zbG90cy9yb3V0ZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVXRpbGl0eVJlZiB9IGZyb20gXCIuLi91dGlsaXR5LXJlZlwiO1xyXG5pbXBvcnQgeyBFbGVtZW50TW9kZWwsIERlc2lnbmVyTW9kZWwsIFRlbXBsYXRlSW5mbywgcHJvZ3JhbU5hbWUsIERlc2lnbmVyUmVmLCBjbG9uZSwgRGVzaWduTW9kZSB9IGZyb20gXCIuL2RlY2xhcmF0aW9uc1wiO1xyXG5pbXBvcnQgeyBEZXNpZ25lclR5cGVFbGVtZW50Q29tcG9uZW50IH0gZnJvbSBcIi4vZGVzaWduZXIuYmFzZVwiO1xyXG5pbXBvcnQgeyBBY3Rpb25EZXNpZ25lckNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2FjdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ3ViZURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2N1YmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEZvbGRlckRlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2ZvbGRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRm9ybURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2Zvcm0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEd1aWRlRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvZ3VpZGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFJlcG9ydERlc2lnbmVyQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvcmVwb3J0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSb2xlRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvcm9sZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUnVsZURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3J1bGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFN0YXRlRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvc3RhdGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFR5cGVEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy90eXBlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBVdGlsaXR5RGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvdXRpbGl0eS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgVmlld0Rlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3ZpZXcuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFdpZGdldERlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3dpZGdldC5jb21wb25lbnRcIjtcclxuLyoqICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnZGVzaWduZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydkZXNpZ25lci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtpdGVtQW5pbWF0aW9uXVxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdiaXpkb2MtY29uZmlndXJhdGlvbi1kZXNpZ25lcicgfSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25EZXNpZ25lckNvbXBvbmVudCBpbXBsZW1lbnRzIFV0aWxpdHlDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgbG9hZGluZyA9IHRydWU7XHJcbiAgc2F2aW5nID0gZmFsc2U7XHJcbiAgZGlydHkgPSBmYWxzZTtcclxuICBzZWN0aW9uczogU2VjdGlvbltdO1xyXG4gIG1vZGVsOiBEZXNpZ25lck1vZGVsO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfcGFuZXM6IFBhbmVzUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcHM6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9yZWY6IFV0aWxpdHlSZWY8Ym9vbGVhbiwgRGVzaWduZXJNb2RlbCwgRGVzaWduZXJNb2RlbD4pIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVmLnBvcHVsYXRlKCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICB0aGlzLm1vZGVsID0gcjtcclxuICAgICAgdGhpcy5zZWN0aW9ucyA9IFtcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmZvcm1zLCB0eXBlOiAnRm9ybXMnLCBjb21wOiBGb3JtRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudEZvcm1zLCBwcml2aWxlZ2VzOiB0cnVlIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5hY3Rpb25zLCB0eXBlOiAnQWN0aW9ucycsIGNvbXA6IEFjdGlvbkRlc2lnbmVyQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudEFjdGlvbnMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnJlcG9ydHMsIHR5cGU6ICdSZXBvcnRzJywgY29tcDogUmVwb3J0RGVzaWduZXJDb21wb25lbnQsIHRlbXBsYXRlczogci50UmVwb3J0cywgcHJpdmlsZWdlczogdHJ1ZSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIud2lkZ2V0cywgdHlwZTogJ1dpZGdldHMnLCBjb21wOiBXaWRnZXREZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogci50V2lkZ2V0cywgcHJpdmlsZWdlczogdHJ1ZSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIudmlld3MsIHR5cGU6ICdWaWV3cycsIGNvbXA6IFZpZXdEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogci50Vmlld3MsIHByaXZpbGVnZXM6IHRydWUgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmd1aWRlcywgdHlwZTogJ0d1aWRlcycsIGNvbXA6IEd1aWRlRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IFt7IHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdHdWlkZScpIH1dLCBwcml2aWxlZ2VzOiB0cnVlIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5jdWJlcywgdHlwZTogJ0N1YmVzJywgY29tcDogQ3ViZURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRDdWJlcywgcHJpdmlsZWdlczogdHJ1ZSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuZm9sZGVycywgdHlwZTogJ0ZvbGRlcnMnLCBjb21wOiBGb2xkZXJEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogW3sgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0ZvbGRlcicpIH1dLCBwcml2aWxlZ2VzOiB0cnVlIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5yb2xlcywgdHlwZTogJ1JvbGVzJywgY29tcDogUm9sZURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiBbeyB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnUm9sZScpIH1dIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5zdGF0ZXMsIHR5cGU6ICdTdGF0ZXMnLCBjb21wOiBTdGF0ZURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiBbeyB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnU3RhdGUnKSB9XSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIudXRpbGl0aWVzLCB0eXBlOiAnVXRpbGl0aWVzJywgY29tcDogVXRpbGl0eURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRVdGlsaXRpZXMsIHByaXZpbGVnZXM6IHRydWUgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnR5cGVzLCB0eXBlOiAnVHlwZXMnLCBjb21wOiBUeXBlRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFR5cGVzIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5ydWxlcywgdHlwZTogJ1J1bGVzJywgY29tcDogUnVsZURlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRSdWxlcyB9LFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLnNlY3Rpb25zLmZvckVhY2gocyA9PlxyXG4gICAgICAgIHMuZWxlbWVudHMuZm9yRWFjaChlID0+IHtcclxuICAgICAgICAgIGlmIChzLnByaXZpbGVnZXMgJiYgIWUucHJpdmlsZWdlcykgZS5wcml2aWxlZ2VzID0ge307XHJcbiAgICAgICAgICBpZiAoIWUub3B0aW9ucykgZS5vcHRpb25zID0ge307XHJcblxyXG4gICAgICAgICAgZS5pbmplY3RvciA9IHRoaXMuX2NyZWF0ZUluamVjdG9yKGUsICd3aWRnZXQnKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxFbGVtZW50TW9kZWxbXT4pIHtcclxuICAgIGNvbnN0IHJhbmdlID0gZXZlbnQuY29udGFpbmVyLmRhdGEuc2xpY2UoXHJcbiAgICAgIE1hdGgubWluKGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCksXHJcbiAgICAgIE1hdGgubWF4KGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleClcclxuICAgICksIGZpbGUgPSByYW5nZVswXS5jb25maWd1cmF0aW9uRmlsZTtcclxuICAgIGlmXHJcbiAgICAgIC8vIGFjcm9zcyBmaWxlc1xyXG4gICAgICAocmFuZ2Uuc2xpY2UoMSkuc29tZShlID0+IGUuY29uZmlndXJhdGlvbkZpbGUgIT09IGZpbGUpKSB7XHJcbiAgICAgIC8vIHN0YXJ0IG9yZGluYWxcclxuICAgICAgbGV0IGkgPSBldmVudC5jb250YWluZXIuZGF0YVtldmVudC5jdXJyZW50SW5kZXhdLm9yZGluYWwgfHwgLTE7XHJcbiAgICAgIC8vIHNldCBvcmRpbmFsIHRvIGl0ZW1zIGluIHJhbmdlXHJcbiAgICAgIHJhbmdlLmZvckVhY2goZSA9PiBlLm9yZGluYWwgPSBpKyspO1xyXG4gICAgICAvLyBpbmNyZWFzZSBvdGhlciBoaWdoZXIgdGhhbiBsYXN0IGluIHJhbmdlXHJcbiAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLmZpbHRlcihlID0+IGUub3JkaW5hbCAmJiBlLm9yZGluYWwgPiBpKS5mb3JFYWNoKGUgPT4gZS5vcmRpbmFsICs9IDEpO1xyXG4gICAgfSBlbHNlIC8vIG5hdGl2ZSBvcmRlciBpbiBjb2xsZWN0aW9uXHJcbiAgICAgIHJhbmdlLmZvckVhY2goZSA9PiBlLm9yZGluYWwgPSBudWxsKTtcclxuICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcmVzZXR0eXBpbmc7XHJcbiAgcHJpdmF0ZSBfdHlwaW5nO1xyXG4gIC8qKlxyXG4gICAqIEN0cmwtcyBzYXZlXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgKGV2ZW50LndoaWNoID09PSA4MyB8fCBldmVudC53aGljaCA9PT0gMTE1KSkge1xyXG4gICAgICB0aGlzLmRpcnR5ICYmIHRoaXMuc2F2ZSgpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9yZXNldHR5cGluZyk7XHJcbiAgICAgIHRoaXMuX3R5cGluZyA9IHRoaXMuX3R5cGluZyA/IHRoaXMuX3R5cGluZyArIGV2ZW50LmtleSA6IGV2ZW50LmtleVxyXG4gICAgICB0aGlzLl9yZXNldHR5cGluZyA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fdHlwaW5nID0gbnVsbCwgMjUwKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBfaW5zZXJ0KHNlY3Rpb246IFNlY3Rpb24sIGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgbGV0IGkgPSBlbGVtZW50Lm5hbWUubGFzdEluZGV4T2YoJ18nKSxcclxuICAgICAgaiA9IGVsZW1lbnQudGl0bGUubGFzdEluZGV4T2YoJyAnKSxcclxuICAgICAgbiA9IDAsIG5hbWUsIHRpdGxlO1xyXG4gICAgZG8ge1xyXG4gICAgICBuKys7XHJcbiAgICAgIG5hbWUgPSAoaSA8IDAgfHwgaXNOYU4ocGFyc2VJbnQoZWxlbWVudC5uYW1lLnN1YnN0cihpICsgMSkpKSA/IGVsZW1lbnQubmFtZSA6IGVsZW1lbnQubmFtZS5zdWJzdHIoMCwgaSkpICsgJ18nICsgbjtcclxuICAgICAgdGl0bGUgPSAoaiA8IDAgfHwgaXNOYU4ocGFyc2VJbnQoZWxlbWVudC50aXRsZS5zdWJzdHIoaiArIDEpKSkgPyBlbGVtZW50LnRpdGxlIDogZWxlbWVudC50aXRsZS5zdWJzdHIoMCwgaikpICsgJyAnICsgbjtcclxuICAgIH1cclxuICAgIHdoaWxlIChzZWN0aW9uLmVsZW1lbnRzLmZpbmQoZSA9PiBlLm5hbWUgPT09IG5hbWUgfHwgZS50aXRsZSA9PT0gdGl0bGUpKTtcclxuICAgIGVsZW1lbnQubmFtZSA9IG5hbWUsIGVsZW1lbnQudGl0bGUgPSB0aXRsZTtcclxuXHJcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuX2NyZWF0ZUluamVjdG9yKGVsZW1lbnQsICd3aWRnZXQnKTtcclxuICAgIGVsZW1lbnQuaW5qZWN0b3IgPSBpbmplY3RvcjtcclxuICAgIHRoaXMuX29wZW4oZWxlbWVudCwgc2VjdGlvbiwgJ2FkZCcpLnRoZW4oKCkgPT5cclxuICAgICAgc2VjdGlvbi5lbGVtZW50cy5zcGxpY2UoaW5kZXggKyAxLCAwLCBlbGVtZW50KVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfb3BlbihlbGVtZW50OiBFbGVtZW50TW9kZWwsXHJcbiAgICBzZWN0aW9uOiBTZWN0aW9uLFxyXG4gICAgbW9kZTogRGVzaWduTW9kZSwgdGl0bGU/OiBzdHJpbmcpIHtcclxuICAgIGxldCBlY2xvbmUgPSB7IC4uLmVsZW1lbnQgfTtcclxuICAgIGRlbGV0ZSBlY2xvbmUuaW5qZWN0b3I7XHJcbiAgICBlY2xvbmUgPSBjbG9uZShlY2xvbmUpOyAvLyBkZWVwXHJcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuX2NyZWF0ZUluamVjdG9yKGVjbG9uZSwgbW9kZSk7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGFuZXMubmF2aWdhdGU8RGVzaWduZXJUeXBlRWxlbWVudENvbXBvbmVudD4oc2VjdGlvbi5jb21wLCB7XHJcbiAgICAgIHBvbGljeTogbW9kZSA9PT0gJ2FkZCcgPyBPcGVuUG9saWN5LkRpYWxvZyB8IE9wZW5Qb2xpY3kuU3RyZXRjaCA6IE9wZW5Qb2xpY3kuVGFiIHwgT3BlblBvbGljeS5EaXNtaXNzYWJsZSxcclxuICAgICAgZ3JvdXA6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoc2VjdGlvbi50eXBlKSxcclxuICAgICAgLy90aXRsZSxcclxuICAgICAgaW5qZWN0b3I6IGluamVjdG9yXHJcbiAgICB9KS50aGVuKGUgPT5cclxuICAgICAgZS5pbnN0YW5jZS5kZXNpZ25lci5vblNhdmUuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQsIGUpO1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgICByZXNvbHZlKGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHJlamVjdCgpO1xyXG4gICAgICB9KVxyXG4gICAgKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NyZWF0ZUluamVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRNb2RlbDxhbnk+LCBtb2RlOiBEZXNpZ25Nb2RlKSB7XHJcbiAgICBjb25zdCByZWYgPSBuZXcgRGVzaWduZXJSZWYodGhpcy5tb2RlbCwgZWxlbWVudCwgbW9kZSk7XHJcblxyXG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoW3tcclxuICAgICAgcHJvdmlkZTogRGVzaWduZXJSZWYsIHVzZVZhbHVlOiByZWZcclxuICAgIH1dLCB0aGlzLl9pbmplY3Rvcik7XHJcbiAgICByZXR1cm4gaW5qZWN0b3I7XHJcbiAgfVxyXG4gIGFkZChzZWN0aW9uOiBTZWN0aW9uLCBtZW51OiBNYXRNZW51VHJpZ2dlciwgZXZ0OiBFdmVudCkge1xyXG4gICAgaWYgKHNlY3Rpb24udGVtcGxhdGVzLmxlbmd0aCA+IDEpXHJcbiAgICAgIG1lbnUub3Blbk1lbnUoKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZShzZWN0aW9uLCBzZWN0aW9uLnRlbXBsYXRlc1swXSk7XHJcbiAgICB9XHJcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbiAgY3JlYXRlKHNlY3Rpb246IFNlY3Rpb24sIHRlbXBsYXRlOiBUZW1wbGF0ZUluZm8pIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIC4uLnRlbXBsYXRlLFxyXG4gICAgICBuYW1lOiBwcm9ncmFtTmFtZSh0ZW1wbGF0ZS50aXRsZSksXHJcbiAgICAgIGRyYWZ0OiB0cnVlLFxyXG4gICAgICBvcHRpb25zOiB7fVxyXG4gICAgfSBhcyBFbGVtZW50TW9kZWw7XHJcbiAgICBpZiAoc2VjdGlvbi5wcml2aWxlZ2VzKSBlbGVtZW50LnByaXZpbGVnZXMgPSB7fTtcclxuICAgIHRoaXMuX2luc2VydChzZWN0aW9uLCBlbGVtZW50LCBzZWN0aW9uLmVsZW1lbnRzLmxlbmd0aCk7XHJcbiAgfVxyXG4gIGNvcHkoc2VjdGlvbjogU2VjdGlvbiwgZWxlbWVudDogRWxlbWVudE1vZGVsKSB7XHJcbiAgICBsZXQgZWNsb25lID0ge1xyXG4gICAgICAuLi5lbGVtZW50LFxyXG4gICAgICBjb3B5T2Y6IGVsZW1lbnQubmFtZSxcclxuICAgICAgZHJhZnQ6IHRydWVcclxuICAgIH07XHJcbiAgICBkZWxldGUgZWNsb25lLmluamVjdG9yO1xyXG4gICAgZGVsZXRlIGVjbG9uZS5yZXNvdXJjZTtcclxuICAgIGVjbG9uZSA9IGNsb25lKGVjbG9uZSk7IC8vIGRlZXBcclxuICAgIHRoaXMuX2luc2VydChzZWN0aW9uLCBlY2xvbmUsIHNlY3Rpb24uZWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSk7XHJcbiAgfVxyXG4gIGVkaXQoZWxlbWVudDogRWxlbWVudE1vZGVsLCBzZWN0aW9uOiBTZWN0aW9uKSB7XHJcbiAgICB0aGlzLl9vcGVuKGVsZW1lbnQsIHNlY3Rpb24sICdlZGl0Jyk7XHJcbiAgfVxyXG4gIHRvZ2dsZURpc2FibGVkKGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCkge1xyXG4gICAgZWxlbWVudC5kaXNhYmxlZCA9ICFlbGVtZW50LmRpc2FibGVkO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XHJcbiAgICBjb25zdCB7IGFjdGlvbnMsIGN1YmVzLCBmb2xkZXJzLCBmb3JtcywgZ3VpZGVzLCByZXBvcnRzLCByb2xlcywgcnVsZXMsIHN0YXRlcywgdHlwZXMsIHV0aWxpdGllcywgdmlld3MsIHdpZGdldHMgfSA9IHRoaXMubW9kZWw7XHJcbiAgICBjb25zdCBtb2RlbCA9IHtcclxuICAgICAgYWN0aW9uczogc3RyaXAoYWN0aW9ucyksXHJcbiAgICAgIGN1YmVzOiBzdHJpcChjdWJlcyksXHJcbiAgICAgIGZvbGRlcnM6IHN0cmlwKGZvbGRlcnMpLFxyXG4gICAgICBmb3Jtczogc3RyaXAoZm9ybXMpLFxyXG4gICAgICBndWlkZXM6IHN0cmlwKGd1aWRlcyksXHJcbiAgICAgIHJlcG9ydHM6IHN0cmlwKHJlcG9ydHMpLFxyXG4gICAgICByb2xlczogc3RyaXAocm9sZXMpLFxyXG4gICAgICBydWxlczogc3RyaXAocnVsZXMpLFxyXG4gICAgICBzdGF0ZXM6IHN0cmlwKHN0YXRlcyksXHJcbiAgICAgIHR5cGVzOiBzdHJpcCh0eXBlcyksXHJcbiAgICAgIHV0aWxpdGllczogc3RyaXAodXRpbGl0aWVzKSxcclxuICAgICAgdmlld3M6IHN0cmlwKHZpZXdzKSxcclxuICAgICAgd2lkZ2V0czogc3RyaXAod2lkZ2V0cylcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5fcmVmLmV4ZWN1dGUoXHJcbiAgICAgIG1vZGVsIGFzIGFueSkudG9Qcm9taXNlKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9wcy50b2FzdCgnQ2hhbmdlc1NhdmVkJyk7XHJcbiAgICAgICAgICBhcHBseShhY3Rpb25zLCBjdWJlcywgZm9sZGVycywgZm9ybXMsIGd1aWRlcywgcmVwb3J0cywgcm9sZXMsIHJ1bGVzLCBzdGF0ZXMsIHR5cGVzLCB1dGlsaXRpZXMsIHZpZXdzLCB3aWRnZXRzKTtcclxuICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2VcclxuICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9wcy5lcnJvcigpO1xyXG4gICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgZnVuY3Rpb24gc3RyaXAoZWxlbWVudHM6IEVsZW1lbnRNb2RlbFtdKSB7XHJcbiAgICAgIHJldHVybiBlbGVtZW50cy5tYXAoZSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHsgLi4uZSB9O1xyXG4gICAgICAgIGRlbGV0ZSBlbGVtZW50LmluamVjdG9yO1xyXG4gICAgICAgIHJldHVybiBjbGVhbnVwKGVsZW1lbnQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGFwcGx5KC4uLmNvbGxlY3Rpb246IEVsZW1lbnRNb2RlbFtdW10pIHtcclxuICAgICAgY29sbGVjdGlvbi5mb3JFYWNoKHMgPT4gcy5mb3JFYWNoKGUgPT4gZGVsZXRlIGUuZHJhZnQpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuaW50ZXJmYWNlIFNlY3Rpb24ge1xyXG4gIGNvbXA6IENvbXBvbmVudFR5cGU8YW55PjtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgZWxlbWVudHM6IEVsZW1lbnRNb2RlbFtdO1xyXG4gIHRlbXBsYXRlczogVGVtcGxhdGVJbmZvW107XHJcbiAgcHJpdmlsZWdlcz86IGJvb2xlYW47XHJcbn1cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiIWRpcnR5IHx8IGxvYWRpbmcgfHwgc2F2aW5nXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1NhdmUnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPHNlY3Rpb24gKm5nRm9yPVwibGV0IHMgb2Ygc2VjdGlvbnNcIj5cclxuICA8aDIgY2xhc3M9XCJtYXQtdGl0bGVcIj57e3MudHlwZSB8IHRyYW5zbGF0ZX19PC9oMj5cclxuICA8ZGl2IGNsYXNzPVwiZWxlbWVudHNcIiBjZGtEcm9wTGlzdCBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiIFtjZGtEcm9wTGlzdERhdGFdPVwicy5lbGVtZW50c1wiIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcbiAgICA8bWF0LWNhcmQgKm5nRm9yPVwibGV0IGUgb2Ygcy5lbGVtZW50c1wiIFtjbGFzcy5kaXNhYmxlZF09XCJlLmRpc2FibGVkXCIgY2RrRHJhZyBjZGtEcmFnUm9vdEVsZW1lbnQ9XCIubWF0LWNhcmQtdGl0bGVcIj5cclxuICAgICAgPCEtLSBAaXRlbS0tPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAge3tlLnRpdGxlfX1cclxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgIHt7ZS5uYW1lfX1cclxuICAgICAgPC9tYXQtY2FyZC1zdWJ0aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJzLmNvbXA7IGluamVjdG9yOiBlLmluamVjdG9yXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPG1hdC1jYXJkLWFjdGlvbnMgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY29weShzLCBlKVwiICpuZ0lmPVwiIWUuY29weU9mXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NvcHknfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5maWxlX2NvcHk8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzLmVsZW1lbnRzLnJlbW92ZShlKVwiICpuZ0lmPVwiZS5kcmFmdCB8fCBlLmVtcHR5XCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0Rpc2NhcmQnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVEaXNhYmxlZChlKVwiIFtiaXpkb2NUb29sdGlwXT1cIihlLmRpc2FibGVkID8gJ0VuYWJsZScgOiAnRGlzYWJsZScpfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj57e2UuZGlzYWJsZWQgPyAndmlzaWJpbGl0eScgOiAndmlzaWJpbGl0eV9vZmYnfX08L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZWRpdChlLCBzKVwiIFtiaXpkb2NUb29sdGlwXT1cIidTZXR0aW5ncyd8dHJhbnNsYXRlXCI+PG1hdC1pY29uPnNldHRpbmdzPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICAgIDxkaXYgY2xhc3M9XCJhZGQtZWxlbWVudFwiIG1hdFJpcHBsZSAoY2xpY2spPVwiYWRkKHMsIG1lbnVUcmlnZ2VyLCAkZXZlbnQpXCIgKm5nSWY9XCJzLnRlbXBsYXRlcz8ubGVuZ3RoXCI+XHJcbiAgICAgIDxzcGFuIFttYXRNZW51VHJpZ2dlckZvcl09XCJ0ZW1wbGF0ZU1lbnVcIiAjbWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiPjwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24+PG1hdC1pY29uIFtiaXpkb2NUb29sdGlwXT1cIidOZXcnfHRyYW5zbGF0ZVwiIGRpc2FibGVSaXBwbGU9XCJ0cnVlXCI+YWRkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICN0ZW1wbGF0ZU1lbnU+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCB0IG9mIHMudGVtcGxhdGVzXCIgKGNsaWNrKT1cImNyZWF0ZShzLCB0KVwiPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIHt7dC5mYW1pbHl9fVxyXG4gICAgICAgICAgICB7e3QudGl0bGV9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1tZW51PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9jb25maWd1cmF0aW9uLWRlc2lnbmVyL2Rlc2lnbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vY29uZmlndXJhdGlvbi1kZXNpZ25lci9kZXNpZ25lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFLL0MsT0FBTyxFQUE2QyxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBRXhILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BF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QUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTsySEEzTVksOEJBQThCOytHQUE5Qiw4QkFBOEIsZ0lDcEMzQyxxcUZBNkNBLGkySkRaYyxDQUFDLGFBQWEsQ0FBQztBQUdoQiw4QkFBOEI7SUFEMUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLCtCQUErQixFQUFFLENBQUM7R0FDekMsOEJBQThCLENBMk0xQztTQTNNWSw4QkFBOEI7MkZBQTlCLDhCQUE4QjtrQkFOMUMsU0FBUztpQ0FHSSxDQUFDLGFBQWEsQ0FBQzs2TUFzRTNCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7IGl0ZW1BbmltYXRpb24gfSBmcm9tIFwiLi4vLi4vY29yZS9hbmltYXRpb25zXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS9iYXNlXCI7XHJcbmltcG9ydCB7IE9wZW5Qb2xpY3kgfSBmcm9tIFwiLi4vLi4vY29yZS9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gXCIuLi8uLi9jb3JlL2RlY29yYXRvcnNcIjtcclxuaW1wb3J0IHsgY2xlYW51cCB9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tIFwiLi4vLi4vY29yZS9zbG90cy9yb3V0ZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVXRpbGl0eVJlZiB9IGZyb20gXCIuLi91dGlsaXR5LXJlZlwiO1xyXG5pbXBvcnQgeyBFbGVtZW50TW9kZWwsIERlc2lnbmVyTW9kZWwsIFRlbXBsYXRlSW5mbywgcHJvZ3JhbU5hbWUsIERlc2lnbmVyUmVmLCBjbG9uZSwgRGVzaWduTW9kZSB9IGZyb20gXCIuL2RlY2xhcmF0aW9uc1wiO1xyXG5pbXBvcnQgeyBEZXNpZ25lclR5cGVFbGVtZW50Q29tcG9uZW50IH0gZnJvbSBcIi4vZGVzaWduZXIuYmFzZVwiO1xyXG5pbXBvcnQgeyBBY3Rpb25EZXNpZ25lckNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2FjdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ3ViZURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2N1YmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEZvbGRlckRlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2ZvbGRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRm9ybURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2Zvcm0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEd1aWRlRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvZ3VpZGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFBvbGljeURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3BvbGljeS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUmVwb3J0RGVzaWduZXJDb21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy9yZXBvcnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFJvbGVEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy9yb2xlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSdWxlRGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvcnVsZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgU3RhdGVEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy9zdGF0ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgVHlwZURlc2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnRzL3R5cGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFV0aWxpdHlEZXNpZ25Db21wb25lbnQgfSBmcm9tIFwiLi9lbGVtZW50cy91dGlsaXR5LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBWaWV3RGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvdmlldy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgV2lkZ2V0RGVzaWduQ29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudHMvd2lkZ2V0LmNvbXBvbmVudFwiO1xyXG4vKiogKi9cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICdkZXNpZ25lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2Rlc2lnbmVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW2l0ZW1BbmltYXRpb25dXHJcbn0pXHJcbkBCaXpEb2MoeyBzZWxlY3RvcjogJ2JpemRvYy1jb25maWd1cmF0aW9uLWRlc2lnbmVyJyB9KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbkRlc2lnbmVyQ29tcG9uZW50IGltcGxlbWVudHMgVXRpbGl0eUNvbXBvbmVudCwgT25Jbml0IHtcclxuICBsb2FkaW5nID0gdHJ1ZTtcclxuICBzYXZpbmcgPSBmYWxzZTtcclxuICBkaXJ0eSA9IGZhbHNlO1xyXG4gIHNlY3Rpb25zOiBTZWN0aW9uW107XHJcbiAgbW9kZWw6IERlc2lnbmVyTW9kZWw7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9wYW5lczogUGFuZXNSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wczogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgX3JlZjogVXRpbGl0eVJlZjxib29sZWFuLCBEZXNpZ25lck1vZGVsLCBEZXNpZ25lck1vZGVsPikgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZWYucG9wdWxhdGUoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSByO1xyXG4gICAgICB0aGlzLnNlY3Rpb25zID0gW1xyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuZm9ybXMsIHR5cGU6ICdGb3JtcycsIGNvbXA6IEZvcm1EZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogci50Rm9ybXMsIHByaXZpbGVnZXM6IHRydWUgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmFjdGlvbnMsIHR5cGU6ICdBY3Rpb25zJywgY29tcDogQWN0aW9uRGVzaWduZXJDb21wb25lbnQsIHRlbXBsYXRlczogci50QWN0aW9ucyB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIucmVwb3J0cywgdHlwZTogJ1JlcG9ydHMnLCBjb21wOiBSZXBvcnREZXNpZ25lckNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRSZXBvcnRzLCBwcml2aWxlZ2VzOiB0cnVlIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci53aWRnZXRzLCB0eXBlOiAnV2lkZ2V0cycsIGNvbXA6IFdpZGdldERlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRXaWRnZXRzLCBwcml2aWxlZ2VzOiB0cnVlIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci52aWV3cywgdHlwZTogJ1ZpZXdzJywgY29tcDogVmlld0Rlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiByLnRWaWV3cywgcHJpdmlsZWdlczogdHJ1ZSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIuZ3VpZGVzLCB0eXBlOiAnR3VpZGVzJywgY29tcDogR3VpZGVEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogW3sgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0d1aWRlJykgfV0sIHByaXZpbGVnZXM6IHRydWUgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLmN1YmVzLCB0eXBlOiAnQ3ViZXMnLCBjb21wOiBDdWJlRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudEN1YmVzLCBwcml2aWxlZ2VzOiB0cnVlIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5mb2xkZXJzLCB0eXBlOiAnRm9sZGVycycsIGNvbXA6IEZvbGRlckRlc2lnbkNvbXBvbmVudCwgdGVtcGxhdGVzOiBbeyB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnRm9sZGVyJykgfV0sIHByaXZpbGVnZXM6IHRydWUgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnJvbGVzLCB0eXBlOiAnUm9sZXMnLCBjb21wOiBSb2xlRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IFt7IHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdSb2xlJykgfV0gfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnN0YXRlcywgdHlwZTogJ1N0YXRlcycsIGNvbXA6IFN0YXRlRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IFt7IHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTdGF0ZScpIH1dIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci51dGlsaXRpZXMsIHR5cGU6ICdVdGlsaXRpZXMnLCBjb21wOiBVdGlsaXR5RGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFV0aWxpdGllcywgcHJpdmlsZWdlczogdHJ1ZSB9LFxyXG4gICAgICAgIHsgZWxlbWVudHM6IHIudHlwZXMsIHR5cGU6ICdUeXBlcycsIGNvbXA6IFR5cGVEZXNpZ25Db21wb25lbnQsIHRlbXBsYXRlczogci50VHlwZXMgfSxcclxuICAgICAgICB7IGVsZW1lbnRzOiByLnJ1bGVzLCB0eXBlOiAnUnVsZXMnLCBjb21wOiBSdWxlRGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFJ1bGVzIH0sXHJcbiAgICAgICAgeyBlbGVtZW50czogci5wb2xpY2llcywgdHlwZTogJ1BvbGljaWVzJywgY29tcDogUG9saWN5RGVzaWduQ29tcG9uZW50LCB0ZW1wbGF0ZXM6IHIudFBvbGljaWVzIH0sXHJcbiAgICAgIF07XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaChzID0+XHJcbiAgICAgICAgcy5lbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICAgICAgaWYgKHMucHJpdmlsZWdlcyAmJiAhZS5wcml2aWxlZ2VzKSBlLnByaXZpbGVnZXMgPSB7fTtcclxuICAgICAgICAgIGlmICghZS5vcHRpb25zKSBlLm9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICAgICAgICBlLmluamVjdG9yID0gdGhpcy5fY3JlYXRlSW5qZWN0b3IoZSwgJ3dpZGdldCcpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEVsZW1lbnRNb2RlbFtdPikge1xyXG4gICAgY29uc3QgcmFuZ2UgPSBldmVudC5jb250YWluZXIuZGF0YS5zbGljZShcclxuICAgICAgTWF0aC5taW4oZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KSxcclxuICAgICAgTWF0aC5tYXgoZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KVxyXG4gICAgKSwgZmlsZSA9IHJhbmdlWzBdLmNvbmZpZ3VyYXRpb25GaWxlO1xyXG4gICAgaWZcclxuICAgICAgLy8gYWNyb3NzIGZpbGVzXHJcbiAgICAgIChyYW5nZS5zbGljZSgxKS5zb21lKGUgPT4gZS5jb25maWd1cmF0aW9uRmlsZSAhPT0gZmlsZSkpIHtcclxuICAgICAgLy8gc3RhcnQgb3JkaW5hbFxyXG4gICAgICBsZXQgaSA9IGV2ZW50LmNvbnRhaW5lci5kYXRhW2V2ZW50LmN1cnJlbnRJbmRleF0ub3JkaW5hbCB8fCAtMTtcclxuICAgICAgLy8gc2V0IG9yZGluYWwgdG8gaXRlbXMgaW4gcmFuZ2VcclxuICAgICAgcmFuZ2UuZm9yRWFjaChlID0+IGUub3JkaW5hbCA9IGkrKyk7XHJcbiAgICAgIC8vIGluY3JlYXNlIG90aGVyIGhpZ2hlciB0aGFuIGxhc3QgaW4gcmFuZ2VcclxuICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEuZmlsdGVyKGUgPT4gZS5vcmRpbmFsICYmIGUub3JkaW5hbCA+IGkpLmZvckVhY2goZSA9PiBlLm9yZGluYWwgKz0gMSk7XHJcbiAgICB9IGVsc2UgLy8gbmF0aXZlIG9yZGVyIGluIGNvbGxlY3Rpb25cclxuICAgICAgcmFuZ2UuZm9yRWFjaChlID0+IGUub3JkaW5hbCA9IG51bGwpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9yZXNldHR5cGluZztcclxuICBwcml2YXRlIF90eXBpbmc7XHJcbiAgLyoqXHJcbiAgICogQ3RybC1zIHNhdmVcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiAoZXZlbnQud2hpY2ggPT09IDgzIHx8IGV2ZW50LndoaWNoID09PSAxMTUpKSB7XHJcbiAgICAgIHRoaXMuZGlydHkgJiYgdGhpcy5zYXZlKCk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc2V0dHlwaW5nKTtcclxuICAgICAgdGhpcy5fdHlwaW5nID0gdGhpcy5fdHlwaW5nID8gdGhpcy5fdHlwaW5nICsgZXZlbnQua2V5IDogZXZlbnQua2V5XHJcbiAgICAgIHRoaXMuX3Jlc2V0dHlwaW5nID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLl90eXBpbmcgPSBudWxsLCAyNTApO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIF9pbnNlcnQoc2VjdGlvbjogU2VjdGlvbiwgZWxlbWVudDogRWxlbWVudE1vZGVsLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBsZXQgaSA9IGVsZW1lbnQubmFtZS5sYXN0SW5kZXhPZignXycpLFxyXG4gICAgICBqID0gZWxlbWVudC50aXRsZS5sYXN0SW5kZXhPZignICcpLFxyXG4gICAgICBuID0gMCwgbmFtZSwgdGl0bGU7XHJcbiAgICBkbyB7XHJcbiAgICAgIG4rKztcclxuICAgICAgbmFtZSA9IChpIDwgMCB8fCBpc05hTihwYXJzZUludChlbGVtZW50Lm5hbWUuc3Vic3RyKGkgKyAxKSkpID8gZWxlbWVudC5uYW1lIDogZWxlbWVudC5uYW1lLnN1YnN0cigwLCBpKSkgKyAnXycgKyBuO1xyXG4gICAgICB0aXRsZSA9IChqIDwgMCB8fCBpc05hTihwYXJzZUludChlbGVtZW50LnRpdGxlLnN1YnN0cihqICsgMSkpKSA/IGVsZW1lbnQudGl0bGUgOiBlbGVtZW50LnRpdGxlLnN1YnN0cigwLCBqKSkgKyAnICcgKyBuO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKHNlY3Rpb24uZWxlbWVudHMuZmluZChlID0+IGUubmFtZSA9PT0gbmFtZSB8fCBlLnRpdGxlID09PSB0aXRsZSkpO1xyXG4gICAgZWxlbWVudC5uYW1lID0gbmFtZSwgZWxlbWVudC50aXRsZSA9IHRpdGxlO1xyXG5cclxuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5fY3JlYXRlSW5qZWN0b3IoZWxlbWVudCwgJ3dpZGdldCcpO1xyXG4gICAgZWxlbWVudC5pbmplY3RvciA9IGluamVjdG9yO1xyXG4gICAgdGhpcy5fb3BlbihlbGVtZW50LCBzZWN0aW9uLCAnYWRkJykudGhlbigoKSA9PlxyXG4gICAgICBzZWN0aW9uLmVsZW1lbnRzLnNwbGljZShpbmRleCArIDEsIDAsIGVsZW1lbnQpXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF9vcGVuKGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCxcclxuICAgIHNlY3Rpb246IFNlY3Rpb24sXHJcbiAgICBtb2RlOiBEZXNpZ25Nb2RlLCB0aXRsZT86IHN0cmluZykge1xyXG4gICAgbGV0IGVjbG9uZSA9IHsgLi4uZWxlbWVudCB9O1xyXG4gICAgZGVsZXRlIGVjbG9uZS5pbmplY3RvcjtcclxuICAgIGVjbG9uZSA9IGNsb25lKGVjbG9uZSk7IC8vIGRlZXBcclxuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5fY3JlYXRlSW5qZWN0b3IoZWNsb25lLCBtb2RlKTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wYW5lcy5uYXZpZ2F0ZTxEZXNpZ25lclR5cGVFbGVtZW50Q29tcG9uZW50PihzZWN0aW9uLmNvbXAsIHtcclxuICAgICAgcG9saWN5OiBtb2RlID09PSAnYWRkJyA/IE9wZW5Qb2xpY3kuRGlhbG9nIHwgT3BlblBvbGljeS5TdHJldGNoIDogT3BlblBvbGljeS5UYWIgfCBPcGVuUG9saWN5LlRvZ2dsZSxcclxuICAgICAgZ3JvdXA6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoc2VjdGlvbi50eXBlKSxcclxuICAgICAgLy90aXRsZSxcclxuICAgICAgaW5qZWN0b3I6IGluamVjdG9yXHJcbiAgICB9KS50aGVuKGUgPT5cclxuICAgICAgZS5pbnN0YW5jZS5kZXNpZ25lci5vblNhdmUuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQsIGUpO1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgICByZXNvbHZlKGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHJlamVjdCgpO1xyXG4gICAgICB9KVxyXG4gICAgKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NyZWF0ZUluamVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRNb2RlbDxhbnk+LCBtb2RlOiBEZXNpZ25Nb2RlKSB7XHJcbiAgICBjb25zdCByZWYgPSBuZXcgRGVzaWduZXJSZWYodGhpcy5tb2RlbCwgZWxlbWVudCwgbW9kZSk7XHJcblxyXG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoW3tcclxuICAgICAgcHJvdmlkZTogRGVzaWduZXJSZWYsIHVzZVZhbHVlOiByZWZcclxuICAgIH1dLCB0aGlzLl9pbmplY3Rvcik7XHJcbiAgICByZXR1cm4gaW5qZWN0b3I7XHJcbiAgfVxyXG4gIGFkZChzZWN0aW9uOiBTZWN0aW9uLCBtZW51OiBNYXRNZW51VHJpZ2dlciwgZXZ0OiBFdmVudCkge1xyXG4gICAgaWYgKHNlY3Rpb24udGVtcGxhdGVzLmxlbmd0aCA+IDEpXHJcbiAgICAgIG1lbnUub3Blbk1lbnUoKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZShzZWN0aW9uLCBzZWN0aW9uLnRlbXBsYXRlc1swXSk7XHJcbiAgICB9XHJcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbiAgY3JlYXRlKHNlY3Rpb246IFNlY3Rpb24sIHRlbXBsYXRlOiBUZW1wbGF0ZUluZm8pIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIC4uLnRlbXBsYXRlLFxyXG4gICAgICBuYW1lOiBwcm9ncmFtTmFtZSh0ZW1wbGF0ZS50aXRsZSksXHJcbiAgICAgIGRyYWZ0OiB0cnVlLFxyXG4gICAgICBvcHRpb25zOiB7fVxyXG4gICAgfSBhcyBFbGVtZW50TW9kZWw7XHJcbiAgICBpZiAoc2VjdGlvbi5wcml2aWxlZ2VzKSBlbGVtZW50LnByaXZpbGVnZXMgPSB7fTtcclxuICAgIHRoaXMuX2luc2VydChzZWN0aW9uLCBlbGVtZW50LCBzZWN0aW9uLmVsZW1lbnRzLmxlbmd0aCk7XHJcbiAgfVxyXG4gIGNvcHkoc2VjdGlvbjogU2VjdGlvbiwgZWxlbWVudDogRWxlbWVudE1vZGVsKSB7XHJcbiAgICBsZXQgZWNsb25lID0ge1xyXG4gICAgICAuLi5lbGVtZW50LFxyXG4gICAgICBjb3B5T2Y6IGVsZW1lbnQubmFtZSxcclxuICAgICAgZHJhZnQ6IHRydWVcclxuICAgIH07XHJcbiAgICBkZWxldGUgZWNsb25lLmluamVjdG9yO1xyXG4gICAgZGVsZXRlIGVjbG9uZS5yZXNvdXJjZTtcclxuICAgIGVjbG9uZSA9IGNsb25lKGVjbG9uZSk7IC8vIGRlZXBcclxuICAgIHRoaXMuX2luc2VydChzZWN0aW9uLCBlY2xvbmUsIHNlY3Rpb24uZWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSk7XHJcbiAgfVxyXG4gIGVkaXQoZWxlbWVudDogRWxlbWVudE1vZGVsLCBzZWN0aW9uOiBTZWN0aW9uKSB7XHJcbiAgICB0aGlzLl9vcGVuKGVsZW1lbnQsIHNlY3Rpb24sICdlZGl0Jyk7XHJcbiAgfVxyXG4gIHRvZ2dsZURpc2FibGVkKGVsZW1lbnQ6IEVsZW1lbnRNb2RlbCkge1xyXG4gICAgZWxlbWVudC5kaXNhYmxlZCA9ICFlbGVtZW50LmRpc2FibGVkO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XHJcbiAgICBjb25zdCB7IHBvbGljaWVzLCBhY3Rpb25zLCBjdWJlcywgZm9sZGVycywgZm9ybXMsIGd1aWRlcywgcmVwb3J0cywgcm9sZXMsIHJ1bGVzLCBzdGF0ZXMsIHR5cGVzLCB1dGlsaXRpZXMsIHZpZXdzLCB3aWRnZXRzIH0gPSB0aGlzLm1vZGVsO1xyXG4gICAgY29uc3QgbW9kZWwgPSB7XHJcbiAgICAgIGFjdGlvbnM6IHN0cmlwKGFjdGlvbnMpLFxyXG4gICAgICBjdWJlczogc3RyaXAoY3ViZXMpLFxyXG4gICAgICBmb2xkZXJzOiBzdHJpcChmb2xkZXJzKSxcclxuICAgICAgZm9ybXM6IHN0cmlwKGZvcm1zKSxcclxuICAgICAgZ3VpZGVzOiBzdHJpcChndWlkZXMpLFxyXG4gICAgICByZXBvcnRzOiBzdHJpcChyZXBvcnRzKSxcclxuICAgICAgcm9sZXM6IHN0cmlwKHJvbGVzKSxcclxuICAgICAgcnVsZXM6IHN0cmlwKHJ1bGVzKSxcclxuICAgICAgcG9saWNpZXM6IHN0cmlwKHBvbGljaWVzKSxcclxuICAgICAgc3RhdGVzOiBzdHJpcChzdGF0ZXMpLFxyXG4gICAgICB0eXBlczogc3RyaXAodHlwZXMpLFxyXG4gICAgICB1dGlsaXRpZXM6IHN0cmlwKHV0aWxpdGllcyksXHJcbiAgICAgIHZpZXdzOiBzdHJpcCh2aWV3cyksXHJcbiAgICAgIHdpZGdldHM6IHN0cmlwKHdpZGdldHMpXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlZi5leGVjdXRlKFxyXG4gICAgICBtb2RlbCBhcyBhbnkpLnRvUHJvbWlzZSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fcHMudG9hc3QoJ0NoYW5nZXNTYXZlZCcpO1xyXG4gICAgICAgIGFwcGx5KHBvbGljaWVzLCBhY3Rpb25zLCBjdWJlcywgZm9sZGVycywgZm9ybXMsIGd1aWRlcywgcmVwb3J0cywgcm9sZXMsIHJ1bGVzLCBzdGF0ZXMsIHR5cGVzLCB1dGlsaXRpZXMsIHZpZXdzLCB3aWRnZXRzKTtcclxuICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2VcclxuICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9wcy5lcnJvcigpO1xyXG4gICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgZnVuY3Rpb24gc3RyaXAoZWxlbWVudHM6IEVsZW1lbnRNb2RlbFtdKSB7XHJcbiAgICAgIHJldHVybiBlbGVtZW50cy5tYXAoZSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHsgLi4uZSB9O1xyXG4gICAgICAgIGRlbGV0ZSBlbGVtZW50LmluamVjdG9yO1xyXG4gICAgICAgIHJldHVybiBjbGVhbnVwKGVsZW1lbnQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGFwcGx5KC4uLmNvbGxlY3Rpb246IEVsZW1lbnRNb2RlbFtdW10pIHtcclxuICAgICAgY29sbGVjdGlvbi5mb3JFYWNoKHMgPT4gcy5mb3JFYWNoKGUgPT4gZGVsZXRlIGUuZHJhZnQpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuaW50ZXJmYWNlIFNlY3Rpb24ge1xyXG4gIGNvbXA6IENvbXBvbmVudFR5cGU8YW55PjtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgZWxlbWVudHM6IEVsZW1lbnRNb2RlbFtdO1xyXG4gIHRlbXBsYXRlczogVGVtcGxhdGVJbmZvW107XHJcbiAgcHJpdmlsZWdlcz86IGJvb2xlYW47XHJcbn1cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiIWRpcnR5IHx8IGxvYWRpbmcgfHwgc2F2aW5nXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1NhdmUnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPG1hdC1wcm9ncmVzcy1iYXIgW21vZGVdPVwibG9hZGluZyA/ICdidWZmZXInIDogJ2luZGV0ZXJtaW5hdGUnXCIgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPHNlY3Rpb24gKm5nRm9yPVwibGV0IHMgb2Ygc2VjdGlvbnNcIj5cclxuICA8aDIgY2xhc3M9XCJtYXQtdGl0bGVcIj57e3MudHlwZSB8IHRyYW5zbGF0ZX19PC9oMj5cclxuICA8ZGl2IGNsYXNzPVwiZWxlbWVudHNcIiBjZGtEcm9wTGlzdCBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiIFtjZGtEcm9wTGlzdERhdGFdPVwicy5lbGVtZW50c1wiIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcbiAgICA8bWF0LWNhcmQgKm5nRm9yPVwibGV0IGUgb2Ygcy5lbGVtZW50c1wiIFtjbGFzcy5kaXNhYmxlZF09XCJlLmRpc2FibGVkXCIgY2RrRHJhZyBjZGtEcmFnUm9vdEVsZW1lbnQ9XCIubWF0LWNhcmQtdGl0bGVcIj5cclxuICAgICAgPCEtLSBAaXRlbS0tPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICB7e2UudGl0bGV9fVxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPG1hdC1pY29uIFtiaXpkb2NUb29sdGlwXT1cImUuaGVscFwiICpuZ0lmPVwiZS5oZWxwXCI+aGVscF9vdXRsaW5lPC9tYXQtaWNvbj5cclxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgIHt7ZS5uYW1lfX1cclxuICAgICAgPC9tYXQtY2FyZC1zdWJ0aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJzLmNvbXA7IGluamVjdG9yOiBlLmluamVjdG9yXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPG1hdC1jYXJkLWFjdGlvbnMgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY29weShzLCBlKVwiICpuZ0lmPVwiIWUuY29weU9mXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NvcHknfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5maWxlX2NvcHk8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzLmVsZW1lbnRzLnJlbW92ZShlKVwiICpuZ0lmPVwiZS5kcmFmdCB8fCBlLmVtcHR5XCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0Rpc2NhcmQnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVEaXNhYmxlZChlKVwiIFtiaXpkb2NUb29sdGlwXT1cIihlLmRpc2FibGVkID8gJ0VuYWJsZScgOiAnRGlzYWJsZScpfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj57e2UuZGlzYWJsZWQgPyAndmlzaWJpbGl0eScgOiAndmlzaWJpbGl0eV9vZmYnfX08L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZWRpdChlLCBzKVwiIFtiaXpkb2NUb29sdGlwXT1cIidTZXR0aW5ncyd8dHJhbnNsYXRlXCI+PG1hdC1pY29uPnNldHRpbmdzPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICAgIDxkaXYgY2xhc3M9XCJhZGQtZWxlbWVudFwiIG1hdFJpcHBsZSAoY2xpY2spPVwiYWRkKHMsIG1lbnVUcmlnZ2VyLCAkZXZlbnQpXCIgKm5nSWY9XCJzLnRlbXBsYXRlcz8ubGVuZ3RoXCI+XHJcbiAgICAgIDxzcGFuIFttYXRNZW51VHJpZ2dlckZvcl09XCJ0ZW1wbGF0ZU1lbnVcIiAjbWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiPjwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24+PG1hdC1pY29uIFtiaXpkb2NUb29sdGlwXT1cIidOZXcnfHRyYW5zbGF0ZVwiIGRpc2FibGVSaXBwbGU9XCJ0cnVlXCI+YWRkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICN0ZW1wbGF0ZU1lbnU+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCB0IG9mIHMudGVtcGxhdGVzXCIgKGNsaWNrKT1cImNyZWF0ZShzLCB0KVwiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0LmZhbWlseVwiPlxyXG4gICAgICAgICAgICB7e3QuZmFtaWx5fX1cclxuICAgICAgICAgICAgJm5ic3A7LSZuYnNwO1xyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIHt7dC50aXRsZX19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
|
@@ -35,9 +35,9 @@ export class ActionDesignerComponent extends DesignerTypeElementComponent {
|
|
35
35
|
}
|
36
36
|
}
|
37
37
|
ActionDesignerComponent.resources = ['you', 'youMale', 'youFemale', 'verb', 'past', 'pastMale', 'pastFemale', 'adjective', 'adjectivePlural'];
|
38
|
-
ActionDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0
|
39
|
-
ActionDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0
|
38
|
+
ActionDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ActionDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
39
|
+
ActionDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ActionDesignerComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<bizdoc-designer-element [form]=\"form\">\r\n <ng-template bizdocEditContent>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <div>\r\n <mat-checkbox formControlName=\"multiple\">{{'EnableMultipleSelection'|translate}}</mat-checkbox>\r\n </div>\r\n <h2 class=\"mat-title\">{{'Labels'|translate}}</h2>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Past'|translate}}</mat-label>\r\n <input matInput formControlName=\"past\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Verb'|translate}}</mat-label>\r\n <input matInput formControlName=\"verb\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Adjective'|translate}}</mat-label>\r\n <input matInput formControlName=\"adjective\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'AdjectivePlural'|translate}}</mat-label>\r\n <input matInput formControlName=\"adjectivePlural\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'You'|translate}}</mat-label>\r\n <input matInput formControlName=\"you\" />\r\n </mat-form-field>\r\n <div>\r\n <bizdoc-color-picker formControlName=\"color\" [label]=\"'Color'|translate\" class=\"flex\"></bizdoc-color-picker>\r\n </div>\r\n </form>\r\n </ng-template>\r\n</bizdoc-designer-element>\r\n", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i5.EditContentDirective, selector: "[bizdocEditContent]" }, { kind: "component", type: i5.DesignerItemComponent, selector: "bizdoc-designer-element", inputs: ["form"], outputs: ["continue", "save"] }, { kind: "component", type: i6.ColorPicker, selector: "bizdoc-color-picker", inputs: ["label", "value", "required", "disabled"], outputs: ["valueChanges"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ActionDesignerComponent, decorators: [{
|
41
41
|
type: Component,
|
42
42
|
args: [{ template: "<bizdoc-designer-element [form]=\"form\">\r\n <ng-template bizdocEditContent>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <div>\r\n <mat-checkbox formControlName=\"multiple\">{{'EnableMultipleSelection'|translate}}</mat-checkbox>\r\n </div>\r\n <h2 class=\"mat-title\">{{'Labels'|translate}}</h2>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Past'|translate}}</mat-label>\r\n <input matInput formControlName=\"past\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Verb'|translate}}</mat-label>\r\n <input matInput formControlName=\"verb\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Adjective'|translate}}</mat-label>\r\n <input matInput formControlName=\"adjective\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'AdjectivePlural'|translate}}</mat-label>\r\n <input matInput formControlName=\"adjectivePlural\" />\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'You'|translate}}</mat-label>\r\n <input matInput formControlName=\"you\" />\r\n </mat-form-field>\r\n <div>\r\n <bizdoc-color-picker formControlName=\"color\" [label]=\"'Color'|translate\" class=\"flex\"></bizdoc-color-picker>\r\n </div>\r\n </form>\r\n </ng-template>\r\n</bizdoc-designer-element>\r\n" }]
|
43
43
|
}] });
|
@@ -37,13 +37,13 @@ let ChartViewDesignComponent = class ChartViewDesignComponent extends DesignerCu
|
|
37
37
|
});
|
38
38
|
}
|
39
39
|
};
|
40
|
-
ChartViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0
|
41
|
-
ChartViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0
|
40
|
+
ChartViewDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ChartViewDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
41
|
+
ChartViewDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ChartViewDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mode === 'widget'; else edit\">\r\n</ng-container>\r\n<ng-template #edit>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple>\r\n <mat-option *ngFor=\"let a of cube?.axes\" [value]=\"a.name\">{{a.title }}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.get('xAxis').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('XAxis'|translate)\"></mat-error>\r\n </mat-form-field>\r\n \r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple>\r\n <ng-container *ngFor=\"let a of cube?.axes\">\r\n <mat-option *ngIf=\"form.get('xAxis').value?.indexOf(a.name) < 0\" [value]=\"a.name\">{{a.title }}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let i of cube.indices\" [value]=\"i.name\">{{i.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\" *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\">\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple>\r\n <ng-container *ngFor=\"let a of cube?.axes\">\r\n <mat-option *ngIf=\"form.get('xAxis').value?.indexOf(a.name) < 0 && form.get('series').value?.indexOf(a.name) < 0\" [value]=\"a.name\">{{a.title }}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-hint></mat-hint>\r\n </mat-form-field>\r\n <bizdoc-designer-cube-filter *ngIf=\"cube\" [cube]=\"cube\" [form]=\"form.get('filters')\"></bizdoc-designer-cube-filter>\r\n </form>\r\n <!--<button mat-stroked-button (click)=\"showPreview = true\">{{'Preview'|translate}}</button>-->\r\n <!--<div *ngIf=\"options.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"options.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"options.scope\"\r\n [cube]=\"selectedCube.name\"\r\n [filters]=\"options.filters\"\r\n [xAxis]=\"options.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"options.xAxis\"\r\n [series]=\"options.series\"\r\n [indices]=\"options.indices\"\r\n [filters]=\"options.filters\"\r\n [chartType]=\"options.chartType\"\r\n [indicesChartType]=\"options.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"options.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>-->\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6.DesignerCubeFilterComponent, selector: "bizdoc-designer-cube-filter", inputs: ["cube", "form"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
42
42
|
ChartViewDesignComponent = __decorate([
|
43
43
|
BizDoc({ selector: 'analysis-view-designer' })
|
44
44
|
], ChartViewDesignComponent);
|
45
45
|
export { ChartViewDesignComponent };
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ChartViewDesignComponent, decorators: [{
|
47
47
|
type: Component,
|
48
48
|
args: [{ template: "<ng-container *ngIf=\"mode === 'widget'; else edit\">\r\n</ng-container>\r\n<ng-template #edit>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple>\r\n <mat-option *ngFor=\"let a of cube?.axes\" [value]=\"a.name\">{{a.title }}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.get('xAxis').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('XAxis'|translate)\"></mat-error>\r\n </mat-form-field>\r\n \r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple>\r\n <ng-container *ngFor=\"let a of cube?.axes\">\r\n <mat-option *ngIf=\"form.get('xAxis').value?.indexOf(a.name) < 0\" [value]=\"a.name\">{{a.title }}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let i of cube.indices\" [value]=\"i.name\">{{i.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\" *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\">\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field>\r\n <mat-label>{{'Aggregate'|translate}}</mat-label>\r\n <mat-select formControlName=\"aggregate\" multiple>\r\n <ng-container *ngFor=\"let a of cube?.axes\">\r\n <mat-option *ngIf=\"form.get('xAxis').value?.indexOf(a.name) < 0 && form.get('series').value?.indexOf(a.name) < 0\" [value]=\"a.name\">{{a.title }}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-hint></mat-hint>\r\n </mat-form-field>\r\n <bizdoc-designer-cube-filter *ngIf=\"cube\" [cube]=\"cube\" [form]=\"form.get('filters')\"></bizdoc-designer-cube-filter>\r\n </form>\r\n <!--<button mat-stroked-button (click)=\"showPreview = true\">{{'Preview'|translate}}</button>-->\r\n <!--<div *ngIf=\"options.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"options.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"options.scope\"\r\n [cube]=\"selectedCube.name\"\r\n [filters]=\"options.filters\"\r\n [xAxis]=\"options.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"options.xAxis\"\r\n [series]=\"options.series\"\r\n [indices]=\"options.indices\"\r\n [filters]=\"options.filters\"\r\n [chartType]=\"options.chartType\"\r\n [indicesChartType]=\"options.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"options.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>-->\r\n</ng-template>\r\n" }]
|
49
49
|
}] });
|
@@ -36,13 +36,13 @@ let AnalysisWidgetDesignComponent = class AnalysisWidgetDesignComponent extends
|
|
36
36
|
});
|
37
37
|
}
|
38
38
|
};
|
39
|
-
AnalysisWidgetDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0
|
40
|
-
AnalysisWidgetDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0
|
39
|
+
AnalysisWidgetDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AnalysisWidgetDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
40
|
+
AnalysisWidgetDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: AnalysisWidgetDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mode === 'widget'; else edit\">\r\n</ng-container>\r\n<ng-template #edit>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple>\r\n <mat-option *ngFor=\"let a of cube?.axes\" [value]=\"a.name\">{{a.title }}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.get('xAxis').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('XAxis'|translate)\"></mat-error>\r\n </mat-form-field>\r\n \r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple>\r\n <ng-container *ngFor=\"let a of cube?.axes\">\r\n <mat-option *ngIf=\"form.get('xAxis').value?.indexOf(a.name) < 0\" [value]=\"a.name\">{{a.title }}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let i of cube?.indices\" [value]=\"i.name\">{{i.title }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\" *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <bizdoc-designer-cube-filter *ngIf=\"cube\" [cube]=\"cube\" [form]=\"form.get('filters')\"></bizdoc-designer-cube-filter>\r\n </form>\r\n <!--<div *ngIf=\"options.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"options.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"options.scope\"\r\n [cube]=\"cube.name\"\r\n [filters]=\"options.filters\"\r\n [xAxis]=\"options.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"options.xAxis\"\r\n [series]=\"options.series\"\r\n [indices]=\"options.indices\"\r\n [filters]=\"options.filters\"\r\n [chartType]=\"options.chartType\"\r\n [indicesChartType]=\"options.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"options.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>-->\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6.DesignerCubeFilterComponent, selector: "bizdoc-designer-cube-filter", inputs: ["cube", "form"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
41
41
|
AnalysisWidgetDesignComponent = __decorate([
|
42
42
|
BizDoc({ selector: 'analysis-widget-designer' })
|
43
43
|
], AnalysisWidgetDesignComponent);
|
44
44
|
export { AnalysisWidgetDesignComponent };
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AnalysisWidgetDesignComponent, decorators: [{
|
46
46
|
type: Component,
|
47
47
|
args: [{ template: "<ng-container *ngIf=\"mode === 'widget'; else edit\">\r\n</ng-container>\r\n<ng-template #edit>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <mat-form-field *ngIf=\"cubes.length > 1\">\r\n <mat-label>{{'Cube'|translate}}</mat-label>\r\n <mat-select required (selectionChange)=\"cubeSelected($event)\">\r\n <mat-option *ngFor=\"let c of cubes\" [value]=\"c\">{{c.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'XAxis'|translate}}</mat-label>\r\n <mat-select formControlName=\"xAxis\" required multiple>\r\n <mat-option *ngFor=\"let a of cube?.axes\" [value]=\"a.name\">{{a.title }}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.get('xAxis').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:('XAxis'|translate)\"></mat-error>\r\n </mat-form-field>\r\n \r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Series'|translate}}</mat-label>\r\n <mat-select formControlName=\"series\" multiple>\r\n <ng-container *ngFor=\"let a of cube?.axes\">\r\n <mat-option *ngIf=\"form.get('xAxis').value?.indexOf(a.name) < 0\" [value]=\"a.name\">{{a.title }}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <mat-form-field *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'Indices'|translate}}</mat-label>\r\n <mat-select formControlName=\"indices\" multiple>\r\n <mat-option *ngFor=\"let i of cube?.indices\" [value]=\"i.name\">{{i.title }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'ChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"chartType\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Pie\">{{'Pie'|translate}}</mat-option>\r\n <mat-option value=\"Doughnut\">{{'Doughnut'|translate}}</mat-option>\r\n <mat-option value=\"HalfDoughnut\">{{'HalfDoughnut'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar\">{{'StackingBar'|translate}}</mat-option>\r\n <mat-option value=\"StackingBar100\">{{'StackingBar100'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea\">{{'StackingArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingArea100\">{{'StackingArea100'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn\">{{'StackingColumn'|translate}}</mat-option>\r\n <mat-option value=\"StackingColumn100\">{{'StackingColumn100'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingStepArea\">{{'StackingStepArea'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine\">{{'StackingLine'|translate}}</mat-option>\r\n <mat-option value=\"StackingLine100\">{{'StackingLine100'|translate}}</mat-option>\r\n <mat-option value=\"Funnel\">{{'Funnel'|translate}}</mat-option>\r\n <mat-option value=\"Pyramid\">{{'Pyramid'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field class=\"flex\" *ngIf=\"cube?.indices?.length\">\r\n <mat-label>{{'IndicesChartType'|translate}}</mat-label>\r\n <mat-select formControlName=\"indicesChartType\">\r\n <mat-option>{{'Default'|translate}}</mat-option>\r\n <mat-option value=\"Column\">{{'Column'|translate}}</mat-option>\r\n <mat-option value=\"Bar\">{{'Bar'|translate}}</mat-option>\r\n <mat-option value=\"Bubble\">{{'Bubble'|translate}}</mat-option>\r\n <mat-option value=\"Line\">{{'Line'|translate}}</mat-option>\r\n <mat-option value=\"Spline\">{{'Spline'|translate}}</mat-option>\r\n <mat-option value=\"Area\">{{'Area'|translate}}</mat-option>\r\n <mat-option value=\"SplineArea\">{{'SplineArea'|translate}}</mat-option>\r\n <mat-option value=\"Scatter\">{{'Scatter'|translate}}</mat-option>\r\n <mat-option value=\"Polar\">{{'Polar'|translate}}</mat-option>\r\n <mat-option value=\"Radar\">{{'Radar'|translate}}</mat-option>\r\n <mat-option value=\"StepLine\">{{'StepLine'|translate}}</mat-option>\r\n <mat-option value=\"StepArea\">{{'StepArea'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <bizdoc-designer-cube-filter *ngIf=\"cube\" [cube]=\"cube\" [form]=\"form.get('filters')\"></bizdoc-designer-cube-filter>\r\n </form>\r\n <!--<div *ngIf=\"options.xAxis\">\r\n <ng-container [ngSwitch]=\"isAccum\">\r\n <bizdoc-cube-accum *ngSwitchCase=\"true\"\r\n [chartType]=\"options.chartType\"\r\n [width]=\"200\"\r\n [scope]=\"options.scope\"\r\n [cube]=\"cube.name\"\r\n [filters]=\"options.filters\"\r\n [xAxis]=\"options.xAxis\"></bizdoc-cube-accum>\r\n <bizdoc-cube-chart *ngSwitchDefault\r\n [cube]=\"cube.name\"\r\n [xAxis]=\"options.xAxis\"\r\n [series]=\"options.series\"\r\n [indices]=\"options.indices\"\r\n [filters]=\"options.filters\"\r\n [chartType]=\"options.chartType\"\r\n [indicesChartType]=\"options.indicesChartType\"\r\n [width]=\"200\"\r\n [scope]=\"options.scope\"></bizdoc-cube-chart>\r\n </ng-container>\r\n </div>-->\r\n</ng-template>\r\n" }]
|
48
48
|
}] });
|
@@ -13,13 +13,13 @@ let AnomalyRuleDesignComponent = class AnomalyRuleDesignComponent extends Design
|
|
13
13
|
ngOnInit() {
|
14
14
|
}
|
15
15
|
};
|
16
|
-
AnomalyRuleDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0
|
17
|
-
AnomalyRuleDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0
|
16
|
+
AnomalyRuleDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AnomalyRuleDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
17
|
+
AnomalyRuleDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: AnomalyRuleDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mode === 'widget'; else edit\">\r\n</ng-container>\r\n<ng-template #edit>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n </ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
|
18
18
|
AnomalyRuleDesignComponent = __decorate([
|
19
19
|
BizDoc({ selector: 'anomaly-rule-designer' })
|
20
20
|
], AnomalyRuleDesignComponent);
|
21
21
|
export { AnomalyRuleDesignComponent };
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AnomalyRuleDesignComponent, decorators: [{
|
23
23
|
type: Component,
|
24
24
|
args: [{ template: "<ng-container *ngIf=\"mode === 'widget'; else edit\">\r\n</ng-container>\r\n<ng-template #edit>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n </ng-template>\r\n" }]
|
25
25
|
}] });
|
@@ -17,13 +17,13 @@ let BoxFormDesignComponent = class BoxFormDesignComponent extends DesignerElemen
|
|
17
17
|
this.model.icon = 'description';
|
18
18
|
}
|
19
19
|
};
|
20
|
-
BoxFormDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0
|
21
|
-
BoxFormDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0
|
20
|
+
BoxFormDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BoxFormDesignComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
21
|
+
BoxFormDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: BoxFormDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mode === 'widget'; else edit\">\r\n</ng-container>\r\n<ng-template #edit>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
|
22
22
|
BoxFormDesignComponent = __decorate([
|
23
23
|
BizDoc({ selector: 'box-form-designer' })
|
24
24
|
], BoxFormDesignComponent);
|
25
25
|
export { BoxFormDesignComponent };
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BoxFormDesignComponent, decorators: [{
|
27
27
|
type: Component,
|
28
28
|
args: [{ template: "<ng-container *ngIf=\"mode === 'widget'; else edit\">\r\n</ng-container>\r\n<ng-template #edit>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n </form>\r\n</ng-template>\r\n" }]
|
29
29
|
}] });
|