@bizdoc/core 3.2.9 → 3.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/themes/brown.min.css +1 -1
- package/assets/themes/dark.min.css +3 -3
- package/assets/themes/deep-purple-light-blue.min.css +1 -1
- package/assets/themes/deep-purple-teal.min.css +1 -1
- package/assets/themes/default.min.css +8 -8
- package/assets/themes/green.min.css +1 -1
- package/assets/themes/indigo-amber.min.css +1 -1
- package/assets/themes/indigo.min.css +1 -1
- package/fesm2022/bizdoc-core.mjs +2152 -1924
- package/fesm2022/bizdoc-core.mjs.map +1 -1
- package/lib/admin/admin-menu.component.d.ts +1 -3
- package/lib/admin/architecture/designer.base.d.ts +3 -3
- package/lib/admin/architecture/elements/form.component.d.ts +1 -1
- package/lib/bizdoc.module.d.ts +6 -7
- package/lib/compose/trace/trace.base.d.ts +1 -1
- package/lib/core/base.d.ts +5 -0
- package/lib/core/configuration.d.ts +3 -0
- package/lib/core/fields/options.base.d.ts +2 -2
- package/lib/core/functions.d.ts +1 -1
- package/lib/core/inputs/combination-picker-body.d.ts +0 -2
- package/lib/core/inputs/combination-picker.d.ts +1 -1
- package/lib/core/session.service.d.ts +2 -2
- package/lib/core/slots/slots.component.d.ts +1 -0
- package/lib/core/tagging/edit-input.component.d.ts +7 -3
- package/lib/core/tagging/tagging.component-base.d.ts +2 -2
- package/lib/core/translate.service.d.ts +2 -2
- package/lib/core/window-title.service.d.ts +1 -0
- package/lib/cube/matrix/matrix.base.d.ts +1 -1
- package/lib/cube/view-base.d.ts +1 -1
- package/lib/dashboard/cube/cube-analysis.base.d.ts +1 -1
- package/lib/home/home-base.component.d.ts +1 -1
- package/lib/home/home.desktop.component.d.ts +5 -3
- package/lib/notifications/types/notification-base.d.ts +1 -1
- package/lib/reports/cube/usage-base.d.ts +1 -1
- package/lib/routes.mobile.d.ts +1 -1
- package/lib/views/cube/cube-base.d.ts +1 -1
- package/package.json +31 -33
- package/esm2022/bizdoc-core.mjs +0 -5
- package/esm2022/lib/admin/admin-dismiss.service.mjs +0 -28
- package/esm2022/lib/admin/admin-menu.component.mjs +0 -24
- package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +0 -93
- package/esm2022/lib/admin/architecture/declarations.mjs +0 -79
- package/esm2022/lib/admin/architecture/designer-element.component.mjs +0 -270
- package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +0 -96
- package/esm2022/lib/admin/architecture/designer.base.mjs +0 -136
- package/esm2022/lib/admin/architecture/designer.component.mjs +0 -396
- package/esm2022/lib/admin/architecture/elements/action.component.mjs +0 -43
- package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +0 -50
- package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +0 -49
- package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +0 -29
- package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +0 -35
- package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +0 -49
- package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +0 -66
- package/esm2022/lib/admin/architecture/elements/control.component.mjs +0 -21
- package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +0 -32
- package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +0 -34
- package/esm2022/lib/admin/architecture/elements/cube.component.mjs +0 -254
- package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +0 -40
- package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +0 -34
- package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +0 -40
- package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +0 -35
- package/esm2022/lib/admin/architecture/elements/folder.component.mjs +0 -56
- package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +0 -126
- package/esm2022/lib/admin/architecture/elements/form.component.mjs +0 -156
- package/esm2022/lib/admin/architecture/elements/guide.component.mjs +0 -53
- package/esm2022/lib/admin/architecture/elements/job.component.mjs +0 -57
- package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +0 -98
- package/esm2022/lib/admin/architecture/elements/node.component.mjs +0 -18
- package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +0 -38
- package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +0 -32
- package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +0 -34
- package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +0 -40
- package/esm2022/lib/admin/architecture/elements/policy.component.mjs +0 -18
- package/esm2022/lib/admin/architecture/elements/report.component.mjs +0 -29
- package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +0 -33
- package/esm2022/lib/admin/architecture/elements/role.component.mjs +0 -43
- package/esm2022/lib/admin/architecture/elements/rule.component.mjs +0 -18
- package/esm2022/lib/admin/architecture/elements/source.component.mjs +0 -25
- package/esm2022/lib/admin/architecture/elements/state.component.mjs +0 -44
- package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +0 -38
- package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +0 -39
- package/esm2022/lib/admin/architecture/elements/type.component.mjs +0 -83
- package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +0 -64
- package/esm2022/lib/admin/architecture/elements/utility.component.mjs +0 -18
- package/esm2022/lib/admin/architecture/elements/view.component.mjs +0 -18
- package/esm2022/lib/admin/architecture/elements/widget.component.mjs +0 -29
- package/esm2022/lib/admin/architecture/icon-picker.component.mjs +0 -173
- package/esm2022/lib/admin/core/ace.input.mjs +0 -144
- package/esm2022/lib/admin/core/color-picker.input.mjs +0 -183
- package/esm2022/lib/admin/core/localized-string.component.mjs +0 -129
- package/esm2022/lib/admin/core/search.input.mjs +0 -52
- package/esm2022/lib/admin/diff/configuration-diff.component.mjs +0 -573
- package/esm2022/lib/admin/document-trace/document-trace.component.mjs +0 -537
- package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +0 -39
- package/esm2022/lib/admin/document-trace/timeline.mjs +0 -2
- package/esm2022/lib/admin/document-trace/trace-element.component.mjs +0 -125
- package/esm2022/lib/admin/form/designer/box-designer.component.mjs +0 -270
- package/esm2022/lib/admin/form/designer/declarations.mjs +0 -2
- package/esm2022/lib/admin/form/designer/design-control.component.mjs +0 -41
- package/esm2022/lib/admin/form/designer/properties.component.mjs +0 -71
- package/esm2022/lib/admin/form/designer/section.component.mjs +0 -53
- package/esm2022/lib/admin/form/designer/settings.component.mjs +0 -51
- package/esm2022/lib/admin/form/form.resolve.service.mjs +0 -18
- package/esm2022/lib/admin/form/workflow/node-ref.mjs +0 -8
- package/esm2022/lib/admin/form/workflow/node.component.mjs +0 -156
- package/esm2022/lib/admin/form/workflow/role-node.component.mjs +0 -88
- package/esm2022/lib/admin/form/workflow/workflow.component.mjs +0 -586
- package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +0 -160
- package/esm2022/lib/admin/patterns/patterns.component.mjs +0 -180
- package/esm2022/lib/admin/permissions/permissions.component.mjs +0 -98
- package/esm2022/lib/admin/positions/positions-popup.component.mjs +0 -75
- package/esm2022/lib/admin/positions/positions.component.mjs +0 -463
- package/esm2022/lib/admin/profiler/outofoffice.component.mjs +0 -156
- package/esm2022/lib/admin/profiler/profiler.component.mjs +0 -284
- package/esm2022/lib/admin/system.service.mjs +0 -127
- package/esm2022/lib/admin/utility-ref.mjs +0 -39
- package/esm2022/lib/admin/utility-wrapper.component.mjs +0 -53
- package/esm2022/lib/admin/utility.pane.component.mjs +0 -48
- package/esm2022/lib/app.component.mjs +0 -73
- package/esm2022/lib/bizdoc.module.mjs +0 -100
- package/esm2022/lib/browse/browse-items.component.mjs +0 -496
- package/esm2022/lib/browse/browse.mobile.component.mjs +0 -102
- package/esm2022/lib/browse/browse.pane.component.mjs +0 -169
- package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +0 -316
- package/esm2022/lib/browse/filter/filter.component.mjs +0 -140
- package/esm2022/lib/browse/folders-menu.component.mjs +0 -49
- package/esm2022/lib/chat/chat-info.mjs +0 -77
- package/esm2022/lib/chat/chat.mobile.component.mjs +0 -24
- package/esm2022/lib/chat/chat.service.mjs +0 -122
- package/esm2022/lib/chat/contacts.component.mjs +0 -107
- package/esm2022/lib/chat/contacts.pane.component.mjs +0 -26
- package/esm2022/lib/chat/conversation.component.mjs +0 -196
- package/esm2022/lib/chat/conversation.pane.component.mjs +0 -46
- package/esm2022/lib/compose/action/action-picker.component.mjs +0 -82
- package/esm2022/lib/compose/action/action-ref.mjs +0 -19
- package/esm2022/lib/compose/action/action.base.mjs +0 -50
- package/esm2022/lib/compose/action/action.dialog.mjs +0 -62
- package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +0 -68
- package/esm2022/lib/compose/action/assign-action.component.mjs +0 -77
- package/esm2022/lib/compose/action/moveto-action.component.mjs +0 -90
- package/esm2022/lib/compose/action/return-action.component.mjs +0 -51
- package/esm2022/lib/compose/attachments/attachments.component.mjs +0 -130
- package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +0 -157
- package/esm2022/lib/compose/attachments/progress-button.directive.mjs +0 -25
- package/esm2022/lib/compose/box/box.component.mjs +0 -44
- package/esm2022/lib/compose/box/control.component.mjs +0 -50
- package/esm2022/lib/compose/box/row.component.mjs +0 -41
- package/esm2022/lib/compose/can-deactivate-changes.service.mjs +0 -27
- package/esm2022/lib/compose/comments/comment.component.mjs +0 -188
- package/esm2022/lib/compose/comments/comments.component.mjs +0 -226
- package/esm2022/lib/compose/comments/comments.pane.component.mjs +0 -40
- package/esm2022/lib/compose/comments/edit-comment.component.mjs +0 -32
- package/esm2022/lib/compose/comments/edits.component.mjs +0 -30
- package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +0 -64
- package/esm2022/lib/compose/comments/votes.component.mjs +0 -42
- package/esm2022/lib/compose/compose-resolve.service.mjs +0 -34
- package/esm2022/lib/compose/compose.mobile.component.mjs +0 -114
- package/esm2022/lib/compose/compose.pane.component.mjs +0 -202
- package/esm2022/lib/compose/copy/copy.dialog.mjs +0 -45
- package/esm2022/lib/compose/dismiss.service.mjs +0 -25
- package/esm2022/lib/compose/document-resolve.service.mjs +0 -33
- package/esm2022/lib/compose/document-resolver.service.mjs +0 -17
- package/esm2022/lib/compose/document.component.mjs +0 -48
- package/esm2022/lib/compose/document.mobile.component.mjs +0 -23
- package/esm2022/lib/compose/document.pane.component.mjs +0 -27
- package/esm2022/lib/compose/events/events.component.mjs +0 -29
- package/esm2022/lib/compose/form-ref.mjs +0 -43
- package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +0 -57
- package/esm2022/lib/compose/form.component.mjs +0 -512
- package/esm2022/lib/compose/new-menu.component.mjs +0 -94
- package/esm2022/lib/compose/overlay.component.exp.mjs +0 -71
- package/esm2022/lib/compose/privilage.directive.mjs +0 -64
- package/esm2022/lib/compose/recipient-resolver.service.mjs +0 -18
- package/esm2022/lib/compose/state.component.mjs +0 -37
- package/esm2022/lib/compose/tag/tags.component.mjs +0 -89
- package/esm2022/lib/compose/trace/flow.component.mjs +0 -687
- package/esm2022/lib/compose/trace/people.component.mjs +0 -39
- package/esm2022/lib/compose/trace/trace.base.mjs +0 -79
- package/esm2022/lib/compose/trace/trace.component.mjs +0 -353
- package/esm2022/lib/compose/trace/trace.pane.component.mjs +0 -48
- package/esm2022/lib/compose/version-compare/version-compare.component.mjs +0 -58
- package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +0 -345
- package/esm2022/lib/compose/version-compare/version.pane.component.mjs +0 -53
- package/esm2022/lib/core/account.service.mjs +0 -38
- package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +0 -17
- package/esm2022/lib/core/animations.mjs +0 -168
- package/esm2022/lib/core/authentication.mjs +0 -4
- package/esm2022/lib/core/avatar/avatar.component.mjs +0 -111
- package/esm2022/lib/core/base.mjs +0 -2
- package/esm2022/lib/core/checkbox.mjs +0 -38
- package/esm2022/lib/core/colors.mjs +0 -322
- package/esm2022/lib/core/component-factory-resolver.mjs +0 -48
- package/esm2022/lib/core/configuration.mjs +0 -17
- package/esm2022/lib/core/datasource.service.mjs +0 -75
- package/esm2022/lib/core/decorators.mjs +0 -46
- package/esm2022/lib/core/document-factory.service.mjs +0 -156
- package/esm2022/lib/core/fields/address.designer.mjs +0 -39
- package/esm2022/lib/core/fields/address.field.mjs +0 -65
- package/esm2022/lib/core/fields/autocomplete.field.mjs +0 -136
- package/esm2022/lib/core/fields/axes-picker.designer.mjs +0 -59
- package/esm2022/lib/core/fields/axes-picker.field.mjs +0 -46
- package/esm2022/lib/core/fields/checkbox.designer.mjs +0 -38
- package/esm2022/lib/core/fields/checkbox.field.mjs +0 -35
- package/esm2022/lib/core/fields/checklist.designer.mjs +0 -98
- package/esm2022/lib/core/fields/checklist.field.mjs +0 -36
- package/esm2022/lib/core/fields/date-range.designer.mjs +0 -43
- package/esm2022/lib/core/fields/date-range.field.mjs +0 -46
- package/esm2022/lib/core/fields/date.designer.mjs +0 -40
- package/esm2022/lib/core/fields/date.field.mjs +0 -40
- package/esm2022/lib/core/fields/expression.field.mjs +0 -87
- package/esm2022/lib/core/fields/file.designer.mjs +0 -39
- package/esm2022/lib/core/fields/file.field.mjs +0 -35
- package/esm2022/lib/core/fields/html.designer.mjs +0 -61
- package/esm2022/lib/core/fields/html.field.mjs +0 -44
- package/esm2022/lib/core/fields/input.designer.mjs +0 -38
- package/esm2022/lib/core/fields/input.field.mjs +0 -54
- package/esm2022/lib/core/fields/localized-string.field.mjs +0 -49
- package/esm2022/lib/core/fields/numeric.designer.mjs +0 -72
- package/esm2022/lib/core/fields/numeric.field.mjs +0 -37
- package/esm2022/lib/core/fields/options.base.mjs +0 -41
- package/esm2022/lib/core/fields/options.component.mjs +0 -58
- package/esm2022/lib/core/fields/radio-button.designer.mjs +0 -39
- package/esm2022/lib/core/fields/radio-button.field.mjs +0 -33
- package/esm2022/lib/core/fields/select.designer.mjs +0 -104
- package/esm2022/lib/core/fields/select.field.mjs +0 -36
- package/esm2022/lib/core/fields/signature.designer.mjs +0 -37
- package/esm2022/lib/core/fields/signature.field.mjs +0 -52
- package/esm2022/lib/core/fields/switch.field.mjs +0 -35
- package/esm2022/lib/core/fields/tags.designer.mjs +0 -28
- package/esm2022/lib/core/fields/tags.field.mjs +0 -51
- package/esm2022/lib/core/fields/textarea.designer.mjs +0 -33
- package/esm2022/lib/core/fields/textarea.field.mjs +0 -37
- package/esm2022/lib/core/fields/time.designer.mjs +0 -41
- package/esm2022/lib/core/fields/time.field.mjs +0 -39
- package/esm2022/lib/core/fields/timespan.field.mjs +0 -82
- package/esm2022/lib/core/fields/yesno.designer.mjs +0 -52
- package/esm2022/lib/core/fields/yesno.field.mjs +0 -34
- package/esm2022/lib/core/firebase.service.mjs +0 -51
- package/esm2022/lib/core/functions.mjs +0 -225
- package/esm2022/lib/core/guide/guide.component.mjs +0 -220
- package/esm2022/lib/core/guide/guide.service.mjs +0 -124
- package/esm2022/lib/core/guide/help-tip.component.mjs +0 -52
- package/esm2022/lib/core/http.interceptor.mjs +0 -63
- package/esm2022/lib/core/hub.service.mjs +0 -117
- package/esm2022/lib/core/identity/identity.component.mjs +0 -66
- package/esm2022/lib/core/info/attachment-info.service.mjs +0 -53
- package/esm2022/lib/core/info/document-info.service.mjs +0 -21
- package/esm2022/lib/core/info/location-info.component.mjs +0 -60
- package/esm2022/lib/core/info/map-info.mjs +0 -42
- package/esm2022/lib/core/inputs/address.input.mjs +0 -203
- package/esm2022/lib/core/inputs/auto-complete.input.mjs +0 -273
- package/esm2022/lib/core/inputs/combination-picker-body.mjs +0 -171
- package/esm2022/lib/core/inputs/combination-picker.mjs +0 -285
- package/esm2022/lib/core/inputs/combination-pool.mjs +0 -105
- package/esm2022/lib/core/inputs/file.input.mjs +0 -432
- package/esm2022/lib/core/inputs/select.input.mjs +0 -254
- package/esm2022/lib/core/inputs/signature.input.mjs +0 -150
- package/esm2022/lib/core/inputs/time-picker.mjs +0 -195
- package/esm2022/lib/core/inputs/timespan.input.mjs +0 -180
- package/esm2022/lib/core/layout.component.mjs +0 -93
- package/esm2022/lib/core/lottie-animation.exp.mjs +0 -49
- package/esm2022/lib/core/mailbox.service.mjs +0 -445
- package/esm2022/lib/core/models.mjs +0 -25
- package/esm2022/lib/core/none.component.mjs +0 -37
- package/esm2022/lib/core/pipes/action.pipe.mjs +0 -25
- package/esm2022/lib/core/pipes/calendar.pipe.mjs +0 -72
- package/esm2022/lib/core/pipes/date-format.pipe.mjs +0 -19
- package/esm2022/lib/core/pipes/daterange.pipe.mjs +0 -62
- package/esm2022/lib/core/pipes/difference.pipe.mjs +0 -15
- package/esm2022/lib/core/pipes/duration-format.pipe.mjs +0 -48
- package/esm2022/lib/core/pipes/duration.pipe.mjs +0 -19
- package/esm2022/lib/core/pipes/filter.pipe.mjs +0 -25
- package/esm2022/lib/core/pipes/form.pipe.mjs +0 -25
- package/esm2022/lib/core/pipes/join.pipe.mjs +0 -18
- package/esm2022/lib/core/pipes/localized-string.pipe.mjs +0 -26
- package/esm2022/lib/core/pipes/role.pipe.mjs +0 -25
- package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +0 -18
- package/esm2022/lib/core/pipes/sort.pipe.mjs +0 -42
- package/esm2022/lib/core/pipes/state.pipe.mjs +0 -25
- package/esm2022/lib/core/pipes/time-ago.pipe.mjs +0 -51
- package/esm2022/lib/core/pipes/to-now.pipe.mjs +0 -66
- package/esm2022/lib/core/pipes/translate.pipe.mjs +0 -58
- package/esm2022/lib/core/pipes/type-value.pipe.mjs +0 -42
- package/esm2022/lib/core/pipes/user-name.pipe.mjs +0 -21
- package/esm2022/lib/core/popup/popup-ref.mjs +0 -20
- package/esm2022/lib/core/popup/popup.component.mjs +0 -36
- package/esm2022/lib/core/popup/popup.service.mjs +0 -158
- package/esm2022/lib/core/popup/tooltip.directive.mjs +0 -81
- package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +0 -29
- package/esm2022/lib/core/prompt/mask/mask.component.mjs +0 -21
- package/esm2022/lib/core/prompt.service.mjs +0 -88
- package/esm2022/lib/core/router.mjs +0 -37
- package/esm2022/lib/core/save-changes.dialog.mjs +0 -18
- package/esm2022/lib/core/session.service.mjs +0 -291
- package/esm2022/lib/core/slots/pane-ref.mjs +0 -152
- package/esm2022/lib/core/slots/router.directive.mjs +0 -68
- package/esm2022/lib/core/slots/router.service.mjs +0 -40
- package/esm2022/lib/core/slots/slots.component.mjs +0 -1191
- package/esm2022/lib/core/sticky-toolbar.exp.mjs +0 -33
- package/esm2022/lib/core/tagging/documents.component.mjs +0 -25
- package/esm2022/lib/core/tagging/edit-input.component.mjs +0 -231
- package/esm2022/lib/core/tagging/emoji.component.mjs +0 -35
- package/esm2022/lib/core/tagging/tagging-item.directive.mjs +0 -39
- package/esm2022/lib/core/tagging/tagging.component-base.mjs +0 -29
- package/esm2022/lib/core/tagging/tagging.directive.mjs +0 -137
- package/esm2022/lib/core/tagging/tagging.pipe.mjs +0 -72
- package/esm2022/lib/core/tagging/users.component.mjs +0 -32
- package/esm2022/lib/core/translate.service.mjs +0 -125
- package/esm2022/lib/core/translations.mjs +0 -1068
- package/esm2022/lib/core/virtual-tabs.component.exp.mjs +0 -84
- package/esm2022/lib/core/window-title.service.mjs +0 -61
- package/esm2022/lib/cube/accum/accum.component.mjs +0 -262
- package/esm2022/lib/cube/chart/chart.component.mjs +0 -345
- package/esm2022/lib/cube/cube-info.service.mjs +0 -103
- package/esm2022/lib/cube/cube-menu.component.mjs +0 -25
- package/esm2022/lib/cube/cube-view.component.mjs +0 -186
- package/esm2022/lib/cube/cube.service.mjs +0 -446
- package/esm2022/lib/cube/declarations.mjs +0 -2
- package/esm2022/lib/cube/explore/document-item.component.mjs +0 -38
- package/esm2022/lib/cube/explore/explore-item.component.mjs +0 -27
- package/esm2022/lib/cube/explore/explore-items.component.mjs +0 -193
- package/esm2022/lib/cube/explore/explore.pane.component.mjs +0 -78
- package/esm2022/lib/cube/explore/item-resolver.service.mjs +0 -30
- package/esm2022/lib/cube/explore/item.pane.component.mjs +0 -21
- package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +0 -75
- package/esm2022/lib/cube/filter/filter.component.mjs +0 -137
- package/esm2022/lib/cube/grid/grid.component.mjs +0 -210
- package/esm2022/lib/cube/matrix/matrix.base.mjs +0 -124
- package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +0 -67
- package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +0 -78
- package/esm2022/lib/cube/matrix/popup.component.mjs +0 -70
- package/esm2022/lib/cube/matrix/table.component.mjs +0 -512
- package/esm2022/lib/cube/parallel/item.mjs +0 -40
- package/esm2022/lib/cube/parallel/parallel.component.mjs +0 -162
- package/esm2022/lib/cube/pivot/pivot.component.mjs +0 -564
- package/esm2022/lib/cube/spreadsheet/spreadsheet.component.mjs +0 -382
- package/esm2022/lib/cube/spreadsheet/spreadsheet.container.exp.mjs +0 -19
- package/esm2022/lib/cube/sum/sum.component.mjs +0 -403
- package/esm2022/lib/cube/view-base.mjs +0 -74
- package/esm2022/lib/cube/view.mobile.component.mjs +0 -121
- package/esm2022/lib/cube/view.pane.component.mjs +0 -99
- package/esm2022/lib/dashboard/actions/actions.widget.mjs +0 -127
- package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +0 -151
- package/esm2022/lib/dashboard/cube/compare.widget.mjs +0 -216
- package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +0 -117
- package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +0 -50
- package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +0 -146
- package/esm2022/lib/dashboard/cube/document-state.widget.mjs +0 -85
- package/esm2022/lib/dashboard/cube/documents.widget.mjs +0 -66
- package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +0 -61
- package/esm2022/lib/dashboard/dashboard.component.mjs +0 -67
- package/esm2022/lib/dashboard/dashboard.pane.component.mjs +0 -18
- package/esm2022/lib/dashboard/recents/recents.widget.mjs +0 -98
- package/esm2022/lib/dashboard/score/activity.widget.mjs +0 -177
- package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +0 -215
- package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +0 -251
- package/esm2022/lib/dashboard/score/pending-results.widget.mjs +0 -59
- package/esm2022/lib/dashboard/score/personal-score.widget.mjs +0 -222
- package/esm2022/lib/dashboard/widget-item.component.mjs +0 -91
- package/esm2022/lib/dashboard/widget-ref.mjs +0 -18
- package/esm2022/lib/designer.module.mjs +0 -106
- package/esm2022/lib/desktop.module.mjs +0 -140
- package/esm2022/lib/home/about/about.dialog.mjs +0 -25
- package/esm2022/lib/home/home-base.component.mjs +0 -92
- package/esm2022/lib/home/home.desktop.component.mjs +0 -286
- package/esm2022/lib/home/home.mobile.component.mjs +0 -131
- package/esm2022/lib/home/notifications/notifications.component.mjs +0 -64
- package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +0 -37
- package/esm2022/lib/home/sign/sign.component.mjs +0 -56
- package/esm2022/lib/impersonate/impersonate.component.mjs +0 -77
- package/esm2022/lib/mobile.module.mjs +0 -61
- package/esm2022/lib/modules/chart.module.mjs +0 -44
- package/esm2022/lib/modules/circular-gauge.module.mjs +0 -20
- package/esm2022/lib/modules/date.adapter.mjs +0 -23
- package/esm2022/lib/modules/datepicker.intl.mjs +0 -41
- package/esm2022/lib/modules/dayjs.module.mjs +0 -43
- package/esm2022/lib/modules/diagram.module.mjs +0 -39
- package/esm2022/lib/modules/gantt.module.mjs +0 -22
- package/esm2022/lib/modules/grid.module.mjs +0 -26
- package/esm2022/lib/modules/linear-gauge.module.mjs +0 -17
- package/esm2022/lib/modules/material.module.mjs +0 -182
- package/esm2022/lib/modules/paginator.intl.mjs +0 -21
- package/esm2022/lib/modules/pivot.module.mjs +0 -24
- package/esm2022/lib/modules/schedule.module.mjs +0 -24
- package/esm2022/lib/modules/spreadsheet.module.mjs +0 -28
- package/esm2022/lib/modules/stepper.intl.mjs +0 -17
- package/esm2022/lib/modules/texteditor.module.mjs +0 -26
- package/esm2022/lib/notifications/filter.component.mjs +0 -24
- package/esm2022/lib/notifications/notifications-table.component.mjs +0 -105
- package/esm2022/lib/notifications/notifications.component-base.mjs +0 -50
- package/esm2022/lib/notifications/notifications.mobile.component.mjs +0 -20
- package/esm2022/lib/notifications/notifications.pane.component.mjs +0 -21
- package/esm2022/lib/notifications/notifications.service.mjs +0 -78
- package/esm2022/lib/notifications/types/commented.notification.mjs +0 -60
- package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +0 -58
- package/esm2022/lib/notifications/types/escalated.notification.mjs +0 -33
- package/esm2022/lib/notifications/types/invite.notification.mjs +0 -45
- package/esm2022/lib/notifications/types/liked.notification.mjs +0 -58
- package/esm2022/lib/notifications/types/long-running-task.notification.mjs +0 -31
- package/esm2022/lib/notifications/types/notification-base.mjs +0 -40
- package/esm2022/lib/notifications/types/nudge.notification.mjs +0 -31
- package/esm2022/lib/notifications/types/state-changed.notification.mjs +0 -30
- package/esm2022/lib/notifications/types/tagged.notification.mjs +0 -43
- package/esm2022/lib/notifications/types/text.notification.mjs +0 -23
- package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +0 -36
- package/esm2022/lib/options/options.component.mjs +0 -308
- package/esm2022/lib/options/options.desktop.component.mjs +0 -26
- package/esm2022/lib/options/options.mobile.component.mjs +0 -23
- package/esm2022/lib/reports/arguments-component.mjs +0 -81
- package/esm2022/lib/reports/cube/documents.component.mjs +0 -38
- package/esm2022/lib/reports/cube/grid-documents.component.mjs +0 -72
- package/esm2022/lib/reports/cube/performance-hilo.component.mjs +0 -260
- package/esm2022/lib/reports/cube/performance-wind.component.mjs +0 -269
- package/esm2022/lib/reports/cube/table-documents.component.mjs +0 -57
- package/esm2022/lib/reports/cube/usage-args.component.mjs +0 -62
- package/esm2022/lib/reports/cube/usage-base.mjs +0 -79
- package/esm2022/lib/reports/cube/usage-chart.component.mjs +0 -354
- package/esm2022/lib/reports/cube/usage-pivot.component.mjs +0 -257
- package/esm2022/lib/reports/cube/usage.component.mjs +0 -40
- package/esm2022/lib/reports/report-ref.mjs +0 -38
- package/esm2022/lib/reports/report-viewer.component.mjs +0 -156
- package/esm2022/lib/reports/report.mobile.component.mjs +0 -127
- package/esm2022/lib/reports/report.pane.component.mjs +0 -109
- package/esm2022/lib/reports/reports-menu.component.mjs +0 -24
- package/esm2022/lib/reports/substitution/substitution.component.mjs +0 -39
- package/esm2022/lib/reports/table/table-view.component.mjs +0 -40
- package/esm2022/lib/reports/tasks/tasks.component.mjs +0 -95
- package/esm2022/lib/routes.desktop.mjs +0 -209
- package/esm2022/lib/routes.mobile.mjs +0 -85
- package/esm2022/lib/scheduler/schedule.component.mjs +0 -164
- package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +0 -37
- package/esm2022/lib/scheduler/scheduler.pane.component.mjs +0 -50
- package/esm2022/lib/search/cube.component.mjs +0 -47
- package/esm2022/lib/search/declarations.mjs +0 -7
- package/esm2022/lib/search/document.component.mjs +0 -41
- package/esm2022/lib/search/guide.component.mjs +0 -28
- package/esm2022/lib/search/path.component.mjs +0 -44
- package/esm2022/lib/search/search.service.mjs +0 -155
- package/esm2022/lib/shared.module.mjs +0 -622
- package/esm2022/lib/system.module.mjs +0 -562
- package/esm2022/lib/views/cube/chart.component.mjs +0 -74
- package/esm2022/lib/views/cube/cube-base.mjs +0 -101
- package/esm2022/lib/views/cube/explore.component.mjs +0 -85
- package/esm2022/lib/views/cube/matrix.component.mjs +0 -101
- package/esm2022/lib/views/cube/parallel.component.mjs +0 -53
- package/esm2022/lib/views/cube/pivot.component.mjs +0 -50
- package/esm2022/lib/views/cube/sum.component.mjs +0 -66
- package/esm2022/lib/views/cube/view.component.mjs +0 -101
- package/esm2022/lib/views/document-view-ref.mjs +0 -27
- package/esm2022/lib/views/timeline/timeline.component.mjs +0 -329
- package/esm2022/lib/views/view-item.component.mjs +0 -68
- package/esm2022/lib/views/views.component.mjs +0 -32
- package/esm2022/lib/views/views.mobile.component.mjs +0 -21
- package/esm2022/lib/views/views.pane.component.mjs +0 -29
- package/esm2022/public-api.mjs +0 -182
@@ -1,225 +0,0 @@
|
|
1
|
-
import { MATERIAL_PALETTES } from "./colors";
|
2
|
-
const IMAGE_TYPE = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif'];
|
3
|
-
export function getColor(selector) {
|
4
|
-
return getComputedStyle(document.querySelector(selector)).color;
|
5
|
-
}
|
6
|
-
export function eraseCookie(name) {
|
7
|
-
document.cookie = name + '=; Max-Age=-99999999;';
|
8
|
-
}
|
9
|
-
export function mapToArray(map) {
|
10
|
-
return Object.keys(map).map(k => ({ key: k, value: map[k] }));
|
11
|
-
}
|
12
|
-
export function isImage(contentType) {
|
13
|
-
return IMAGE_TYPE.indexOf(contentType) > -1;
|
14
|
-
}
|
15
|
-
export function cleanup(params) {
|
16
|
-
Object.keys(params).forEach(k => {
|
17
|
-
const val = params[k];
|
18
|
-
if (val === null || val === undefined)
|
19
|
-
delete params[k];
|
20
|
-
else if (typeof val === 'string' || val instanceof Date || typeof val === 'boolean')
|
21
|
-
return;
|
22
|
-
else if (Array.isArray(val)) {
|
23
|
-
if (val.length === 0)
|
24
|
-
delete params[k];
|
25
|
-
else
|
26
|
-
for (let i = 0; i < val.length; i++)
|
27
|
-
isObject(val[i]) && cleanup(val[i]);
|
28
|
-
}
|
29
|
-
else if (isObject(val)) {
|
30
|
-
cleanup(val);
|
31
|
-
if (Object.keys(val).length === 0)
|
32
|
-
delete params[k];
|
33
|
-
}
|
34
|
-
});
|
35
|
-
return params;
|
36
|
-
}
|
37
|
-
export function outOfBound(element) {
|
38
|
-
const bounding = element.getBoundingClientRect();
|
39
|
-
return bounding.top < 0 ||
|
40
|
-
bounding.left < 0 ||
|
41
|
-
bounding.right > document.documentElement.clientWidth ||
|
42
|
-
bounding.bottom > document.documentElement.clientHeight;
|
43
|
-
}
|
44
|
-
const IS_MOBILE = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
45
|
-
export function isMobile() {
|
46
|
-
return IS_MOBILE /*|| document.cookie.indexOf('aria=1') > -1*/;
|
47
|
-
}
|
48
|
-
export function isFunction(val) {
|
49
|
-
return typeof val === 'function';
|
50
|
-
}
|
51
|
-
export function isBoolean(val) {
|
52
|
-
return typeof val === 'boolean';
|
53
|
-
}
|
54
|
-
export function isObject(val) {
|
55
|
-
return val !== null && typeof val === 'object';
|
56
|
-
}
|
57
|
-
export function isPrimitive(val) {
|
58
|
-
return typeof val !== 'object' && !Array.isArray(val);
|
59
|
-
}
|
60
|
-
export function isPromise(obj) {
|
61
|
-
return obj instanceof Promise;
|
62
|
-
}
|
63
|
-
export function isDate(val) {
|
64
|
-
return val instanceof Date;
|
65
|
-
}
|
66
|
-
export function isArray(val) {
|
67
|
-
return Array.isArray(val);
|
68
|
-
}
|
69
|
-
export function isString(val) {
|
70
|
-
return typeof val === 'string' || val instanceof String;
|
71
|
-
}
|
72
|
-
export function getWarn(mode = 500) {
|
73
|
-
return MATERIAL_PALETTES['red'][mode];
|
74
|
-
}
|
75
|
-
export function playAudio(name) {
|
76
|
-
try {
|
77
|
-
const audio = new Audio();
|
78
|
-
audio.src = `/assets/sounds/${name}.ogg`;
|
79
|
-
audio.load();
|
80
|
-
audio.play();
|
81
|
-
}
|
82
|
-
catch (e) {
|
83
|
-
console.log(e);
|
84
|
-
}
|
85
|
-
}
|
86
|
-
/**
|
87
|
-
*
|
88
|
-
* @param o1
|
89
|
-
* @param o2
|
90
|
-
*/
|
91
|
-
export function deepAssign(o1, o2) {
|
92
|
-
o2 && Object.keys(o2).forEach(p => {
|
93
|
-
const val2 = o2[p], val1 = o1[p];
|
94
|
-
if (val1 === undefined || val1 === null || isPrimitive(val2)) // val !== 'object' && !Array.isArray(val)
|
95
|
-
o1[p] = val2;
|
96
|
-
else if (Array.isArray(val2)) {
|
97
|
-
if (val2.length && !isPrimitive(val2[0])) {
|
98
|
-
for (let i = 0; i < val2.length; i++) {
|
99
|
-
if (val1[i] !== undefined)
|
100
|
-
deepAssign(val1[i], val2[i]);
|
101
|
-
else
|
102
|
-
val1.push(val2[i]);
|
103
|
-
}
|
104
|
-
val1.splice(val2.length);
|
105
|
-
}
|
106
|
-
else
|
107
|
-
//(val2 as any[]).splice(0, val2.length, ...val);
|
108
|
-
o1[p] = val2;
|
109
|
-
}
|
110
|
-
else //if (isObject(val2))
|
111
|
-
deepAssign(val1, val2);
|
112
|
-
});
|
113
|
-
return o1;
|
114
|
-
}
|
115
|
-
function generateEncryptionMap() {
|
116
|
-
const values = {};
|
117
|
-
for (let i = 65; i < 91; i++) {
|
118
|
-
const d = (i - 65).toString(), c = String.fromCharCode(i);
|
119
|
-
values[d] = c;
|
120
|
-
values[c] = d;
|
121
|
-
}
|
122
|
-
for (let i = 97; i < 123; i++) {
|
123
|
-
const d = (i - 71).toString(), c = String.fromCharCode(i);
|
124
|
-
values[d] = c;
|
125
|
-
values[c] = d;
|
126
|
-
}
|
127
|
-
return values;
|
128
|
-
}
|
129
|
-
const decode = generateEncryptionMap();
|
130
|
-
String.prototype.decodeId = function () {
|
131
|
-
let v = '';
|
132
|
-
for (let i = 0; i < this.length; i++) {
|
133
|
-
const c = this.charAt(i);
|
134
|
-
v += decode[c];
|
135
|
-
}
|
136
|
-
return parseInt(v);
|
137
|
-
};
|
138
|
-
Number.prototype.encodeId = function () {
|
139
|
-
let v = '', d = this.toString();
|
140
|
-
while (d.length > 0) {
|
141
|
-
let i = 51, c = i.toString();
|
142
|
-
while (!d.startsWith(c)) {
|
143
|
-
--i, c = i.toString();
|
144
|
-
}
|
145
|
-
v += decode[c];
|
146
|
-
d = d.substring(c.length);
|
147
|
-
}
|
148
|
-
return v;
|
149
|
-
};
|
150
|
-
/** global extended array functions */
|
151
|
-
window.global = window;
|
152
|
-
String.prototype.normalize = function () {
|
153
|
-
return this.replace(/ /g, '_').replace(/[^\w]/g, '').toLowerCase();
|
154
|
-
};
|
155
|
-
String.prototype.formatArgs = function (...args) {
|
156
|
-
return this.replace(/{(\d+)}/g, (_, index) => args[index] || '');
|
157
|
-
};
|
158
|
-
Array.prototype.last = function () {
|
159
|
-
return this[this.length - 1];
|
160
|
-
};
|
161
|
-
/** remove element from array */
|
162
|
-
Array.prototype.remove = function (value) {
|
163
|
-
const index = this.indexOf(value);
|
164
|
-
if (index > -1)
|
165
|
-
this.splice(index, 1);
|
166
|
-
return this;
|
167
|
-
};
|
168
|
-
/** calculate average using element predicate */
|
169
|
-
Array.prototype.average = function (predicate) {
|
170
|
-
let average = 0;
|
171
|
-
this.forEach(i => average += predicate(i));
|
172
|
-
return average !== 0 ? average / this.length : 0;
|
173
|
-
};
|
174
|
-
Array.prototype.distinct = function (predicate) {
|
175
|
-
const values = new Set();
|
176
|
-
this.forEach(i => values.add(predicate(i)));
|
177
|
-
return values;
|
178
|
-
};
|
179
|
-
Array.prototype.max = function (predicate) {
|
180
|
-
let n = 0;
|
181
|
-
this.forEach(i => n = Math.max(n, predicate(i)));
|
182
|
-
return n;
|
183
|
-
};
|
184
|
-
/** sum elements using predicate */
|
185
|
-
Array.prototype.sum = function (predicate) {
|
186
|
-
let n = 0;
|
187
|
-
this.forEach(i => n += predicate(i));
|
188
|
-
return n;
|
189
|
-
};
|
190
|
-
/**
|
191
|
-
*
|
192
|
-
* @param args
|
193
|
-
*/
|
194
|
-
export function queryParams(args) {
|
195
|
-
const params = {};
|
196
|
-
args &&
|
197
|
-
Object.keys(args).forEach(k => {
|
198
|
-
const val = args[k];
|
199
|
-
if (val !== null && val !== undefined) {
|
200
|
-
if (isString(val))
|
201
|
-
params[k] = val;
|
202
|
-
else if (isArray(val) && val.length)
|
203
|
-
params[k] = val;
|
204
|
-
else if (isDate(val))
|
205
|
-
params[k] = val.toJSON();
|
206
|
-
else if (isObject(val)) {
|
207
|
-
if (Object.keys(val).length)
|
208
|
-
params[k] = queryParams(val);
|
209
|
-
}
|
210
|
-
else
|
211
|
-
params[k] = val;
|
212
|
-
}
|
213
|
-
});
|
214
|
-
return params;
|
215
|
-
}
|
216
|
-
function getParameterByName(name, url = window.location.href) {
|
217
|
-
name = name.replace(/[\[\]]/g, '\\$&');
|
218
|
-
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url);
|
219
|
-
if (!results)
|
220
|
-
return null;
|
221
|
-
if (!results[2])
|
222
|
-
return '';
|
223
|
-
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
224
|
-
}
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvcmUvZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUk3QyxNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRXpFLE1BQU0sVUFBVSxRQUFRLENBQUMsUUFBZ0I7SUFDdkMsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBRSxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ25FLENBQUM7QUFDRCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDdEMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsdUJBQXVCLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBMkI7SUFDcEQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsV0FBbUI7SUFDekMsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFJLE1BQVc7SUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFnQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3hELE1BQU0sR0FBRyxHQUFJLE1BQWMsQ0FBQyxDQUFDLENBQUMs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QztJQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLG1CQUFtQixDQUFDLEVBQ3pELE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMzQixPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1BVEVSSUFMX1BBTEVUVEVTIH0gZnJvbSBcIi4vY29sb3JzXCI7XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIE1hdGVyaWFsTW9kZSA9IDUwIHwgMTAwIHwgMjAwIHwgMzAwIHwgNDAwIHwgNTAwIHwgNjAwIHwgNzAwIHwgODAwIHwgOTAwIHwgJ0ExMDAnIHwgJ0EyMDAnIHwgJ0E0MDAnIHwgJ0E3MDAnO1xyXG5cclxuY29uc3QgSU1BR0VfVFlQRSA9IFsnaW1hZ2UvcG5nJywgJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvanBnJywgJ2ltYWdlL2dpZiddO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yKHNlbGVjdG9yOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpISkuY29sb3I7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGVyYXNlQ29va2llKG5hbWU6IHN0cmluZykge1xyXG4gIGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyAnPTsgTWF4LUFnZT0tOTk5OTk5OTk7JztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1hcCkubWFwKGsgPT4gKHsga2V5OiBrLCB2YWx1ZTogbWFwW2tdIH0pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzSW1hZ2UoY29udGVudFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBJTUFHRV9UWVBFLmluZGV4T2YoY29udGVudFR5cGUpID4gLTE7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwPFQ+KHBhcmFtczogYW55KSB7XHJcbiAgT2JqZWN0LmtleXMocGFyYW1zIGFzIHsgW2tleTogc3RyaW5nXTogYW55IH0pLmZvckVhY2goayA9PiB7XHJcbiAgICBjb25zdCB2YWwgPSAocGFyYW1zIGFzIGFueSlba107XHJcbiAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSBkZWxldGUgcGFyYW1zW2tdO1xyXG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdmFsIGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicpIHJldHVybjtcclxuICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xyXG4gICAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkgZGVsZXRlIHBhcmFtc1trXTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgaXNPYmplY3QodmFsW2ldKSAmJiBjbGVhbnVwKHZhbFtpXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XHJcbiAgICAgIGNsZWFudXAodmFsKTtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbCkubGVuZ3RoID09PSAwKSBkZWxldGUgcGFyYW1zW2tdO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBwYXJhbXMgYXMgVDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG91dE9mQm91bmQoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcclxuICBjb25zdCBib3VuZGluZyA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgcmV0dXJuIGJvdW5kaW5nLnRvcCA8IDAgfHxcclxuICAgIGJvdW5kaW5nLmxlZnQgPCAwIHx8XHJcbiAgICBib3VuZGluZy5yaWdodCA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fFxyXG4gICAgYm91bmRpbmcuYm90dG9tID4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcclxufVxyXG5cclxuY29uc3QgSVNfTU9CSUxFID0gL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xyXG5leHBvcnQgZnVuY3Rpb24gaXNNb2JpbGUoKSB7XHJcbiAgcmV0dXJuIElTX01PQklMRSAvKnx8IGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKCdhcmlhPTEnKSA+IC0xKi87XHJcbn0gZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsOiBhbnkpOiB2YWwgaXMgRnVuY3Rpb24ge1xyXG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsOiBhbnkpOiB2YWwgaXMgYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdib29sZWFuJztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodmFsOiBhbnkpIHtcclxuICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc1ByaW1pdGl2ZSh2YWw6IGFueSkge1xyXG4gIHJldHVybiB0eXBlb2YgdmFsICE9PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2Uob2JqOiBhbnkpOiBvYmogaXMgUHJvbWlzZTxhbnk+IHtcclxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUHJvbWlzZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKHZhbDogYW55KTogdmFsIGlzIERhdGUge1xyXG4gIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEYXRlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc0FycmF5KHZhbDogYW55KTogdmFsIGlzIEFycmF5PGFueT4ge1xyXG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbDogYW55KTogdmFsIGlzIHN0cmluZyB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHZhbCBpbnN0YW5jZW9mIFN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFdhcm4obW9kZTogTWF0ZXJpYWxNb2RlID0gNTAwKSB7XHJcbiAgcmV0dXJuIE1BVEVSSUFMX1BBTEVUVEVTWydyZWQnXVttb2RlXTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBsYXlBdWRpbyhuYW1lOiAnbm90aWZpY2F0aW9uX3NpbXBsZS0wMScgfCAnYWxlcnRfZXJyb3ItMDMnKSB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IGF1ZGlvID0gbmV3IEF1ZGlvKCk7XHJcbiAgICBhdWRpby5zcmMgPSBgL2Fzc2V0cy9zb3VuZHMvJHtuYW1lfS5vZ2dgO1xyXG4gICAgYXVkaW8ubG9hZCgpO1xyXG4gICAgYXVkaW8ucGxheSgpO1xyXG4gIH0gY2F0Y2ggKGUpIHtcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFxyXG4gKiBAcGFyYW0gbzFcclxuICogQHBhcmFtIG8yXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVlcEFzc2lnbihvMTogYW55LCBvMjogYW55KSB7XHJcbiAgbzIgJiYgT2JqZWN0LmtleXMobzIpLmZvckVhY2gocCA9PiB7XHJcbiAgICBjb25zdCB2YWwyID0gbzJbcF0sIHZhbDEgPSBvMVtwXTtcclxuICAgIGlmICh2YWwxID09PSB1bmRlZmluZWQgfHwgdmFsMSA9PT0gbnVsbCB8fCBpc1ByaW1pdGl2ZSh2YWwyKSkgLy8gdmFsICE9PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpXHJcbiAgICAgIG8xW3BdID0gdmFsMjtcclxuICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsMikpIHtcclxuICAgICAgaWYgKHZhbDIubGVuZ3RoICYmICFpc1ByaW1pdGl2ZSh2YWwyWzBdKSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsMi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHZhbDFbaV0gIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgZGVlcEFzc2lnbih2YWwxW2ldLCB2YWwyW2ldKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdmFsMS5wdXNoKHZhbDJbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAodmFsMSBhcyBhbnlbXSkuc3BsaWNlKHZhbDIubGVuZ3RoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgLy8odmFsMiBhcyBhbnlbXSkuc3BsaWNlKDAsIHZhbDIubGVuZ3RoLCAuLi52YWwpO1xyXG4gICAgICAgIG8xW3BdID0gdmFsMjtcclxuICAgIH1cclxuICAgIGVsc2UgLy9pZiAoaXNPYmplY3QodmFsMikpXHJcbiAgICAgIGRlZXBBc3NpZ24odmFsMSwgdmFsMik7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG8xO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZW5lcmF0ZUVuY3J5cHRpb25NYXAoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSB7XHJcbiAgY29uc3QgdmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgZm9yIChsZXQgaSA9IDY1OyBpIDwgOTE7IGkrKykge1xyXG4gICAgY29uc3QgZCA9IChpIC0gNjUpLnRvU3RyaW5nKCksXHJcbiAgICAgIGMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpO1xyXG4gICAgdmFsdWVzW2RdID0gYztcclxuICAgIHZhbHVlc1tjXSA9IGQ7XHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSA5NzsgaSA8IDEyMzsgaSsrKSB7XHJcbiAgICBjb25zdCBkID0gKGkgLSA3MSkudG9TdHJpbmcoKSxcclxuICAgICAgYyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XHJcbiAgICB2YWx1ZXNbZF0gPSBjO1xyXG4gICAgdmFsdWVzW2NdID0gZDtcclxuICB9XHJcbiAgcmV0dXJuIHZhbHVlcztcclxufVxyXG5jb25zdCBkZWNvZGUgPSBnZW5lcmF0ZUVuY3J5cHRpb25NYXAoKTtcclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIGludGVyZmFjZSBTdHJpbmcge1xyXG4gICAgZGVjb2RlSWQ6ICgpID0+IG51bWJlcjtcclxuICB9XHJcbiAgaW50ZXJmYWNlIE51bWJlciB7XHJcbiAgICBlbmNvZGVJZDogKCkgPT4gc3RyaW5nO1xyXG4gIH1cclxufVxyXG5TdHJpbmcucHJvdG90eXBlLmRlY29kZUlkID0gZnVuY3Rpb24gKCk6IG51bWJlciB7XHJcbiAgbGV0IHYgPSAnJztcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGNvbnN0IGMgPSB0aGlzLmNoYXJBdChpKTtcclxuICAgIHYgKz0gZGVjb2RlW2NdO1xyXG4gIH1cclxuICByZXR1cm4gcGFyc2VJbnQodik7XHJcbn07XHJcbk51bWJlci5wcm90b3R5cGUuZW5jb2RlSWQgPSBmdW5jdGlvbiAoKTogc3RyaW5nIHtcclxuICBsZXQgdiA9ICcnLFxyXG4gICAgZCA9IHRoaXMudG9TdHJpbmcoKTtcclxuICB3aGlsZSAoZC5sZW5ndGggPiAwKSB7XHJcbiAgICBsZXQgaSA9IDUxLFxyXG4gICAgICBjID0gaS50b1N0cmluZygpO1xyXG4gICAgd2hpbGUgKCFkLnN0YXJ0c1dpdGgoYykpIHtcclxuICAgICAgLS1pLCBjID0gaS50b1N0cmluZygpO1xyXG4gICAgfSB2ICs9IGRlY29kZVtjXTtcclxuICAgIGQgPSBkLnN1YnN0cmluZyhjLmxlbmd0aCk7XHJcbiAgfVxyXG4gIHJldHVybiB2O1xyXG59O1xyXG5cclxuLyoqIGdsb2JhbCBleHRlbmRlZCBhcnJheSBmdW5jdGlvbnMgKi9cclxuKHdpbmRvdyBhcyBhbnkpLmdsb2JhbCA9IHdpbmRvdztcclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIGludGVyZmFjZSBBcnJheTxUPiB7XHJcbiAgICByZW1vdmUoaXRlbTogVCk6IFRbXTtcclxuICAgIGxhc3QoKTogVDtcclxuICAgIGF2ZXJhZ2UocHJlZGljYXRlOiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyO1xyXG4gICAgZGlzdGluY3Q8TT4ocHJlZGljYXRlOiAoaTogVCkgPT4gTSk6IFNldDxNPjtcclxuICAgIHN1bShwcmVkaWNhdGU6IChpOiBUKSA9PiBudW1iZXIpOiBudW1iZXI7XHJcbiAgICBtYXgocHJlZGljYXRlOiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyO1xyXG4gIH1cclxuICBpbnRlcmZhY2UgU3RyaW5nIHtcclxuICAgIGZvcm1hdEFyZ3MoLi4uYXJnczogW3N0cmluZyB8IG51bWJlcl0pOiBzdHJpbmc7XHJcbiAgICBub3JtYWxpemUoKTogc3RyaW5nO1xyXG4gIH1cclxufVxyXG5TdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uICgpIHtcclxuICByZXR1cm4gdGhpcy5yZXBsYWNlKC8gL2csICdfJykucmVwbGFjZSgvW15cXHddL2csICcnKS50b0xvd2VyQ2FzZSgpO1xyXG59XHJcblxyXG5TdHJpbmcucHJvdG90eXBlLmZvcm1hdEFyZ3MgPSBmdW5jdGlvbiAoLi4uYXJnczogW3N0cmluZ10pOiBzdHJpbmcge1xyXG4gIHJldHVybiB0aGlzLnJlcGxhY2UoL3soXFxkKyl9L2csIChfLCBpbmRleCkgPT4gYXJnc1tpbmRleF0gfHwgJycpO1xyXG59XHJcbkFycmF5LnByb3RvdHlwZS5sYXN0ID0gZnVuY3Rpb24gKCkge1xyXG4gIHJldHVybiB0aGlzW3RoaXMubGVuZ3RoIC0gMV07XHJcbn1cclxuLyoqIHJlbW92ZSBlbGVtZW50IGZyb20gYXJyYXkgKi9cclxuQXJyYXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIDxUPih2YWx1ZTogVCk6IFRbXSB7XHJcbiAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4T2YodmFsdWUpO1xyXG4gIGlmIChpbmRleCA+IC0xKSB0aGlzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgcmV0dXJuIHRoaXM7XHJcbn07XHJcbi8qKiBjYWxjdWxhdGUgYXZlcmFnZSB1c2luZyBlbGVtZW50IHByZWRpY2F0ZSAqL1xyXG5BcnJheS5wcm90b3R5cGUuYXZlcmFnZSA9IGZ1bmN0aW9uIDxUPihwcmVkaWNhdGU6IChpOiBUKSA9PiBudW1iZXIpOiBudW1iZXIge1xyXG4gIGxldCBhdmVyYWdlID0gMDtcclxuICB0aGlzLmZvckVhY2goaSA9PlxyXG4gICAgYXZlcmFnZSArPSBwcmVkaWNhdGUoaSlcclxuICApO1xyXG4gIHJldHVybiBhdmVyYWdlICE9PSAwID8gYXZlcmFnZSAvIHRoaXMubGVuZ3RoIDogMDtcclxufVxyXG5BcnJheS5wcm90b3R5cGUuZGlzdGluY3QgPSBmdW5jdGlvbiA8VCwgTT4ocHJlZGljYXRlOiAoaTogVCkgPT4gTSk6IFNldDxNPiB7XHJcbiAgY29uc3QgdmFsdWVzID0gbmV3IFNldDxNPigpO1xyXG4gIHRoaXMuZm9yRWFjaChpID0+XHJcbiAgICB2YWx1ZXMuYWRkKHByZWRpY2F0ZShpKSlcclxuICApO1xyXG4gIHJldHVybiB2YWx1ZXM7XHJcbn1cclxuQXJyYXkucHJvdG90eXBlLm1heCA9IGZ1bmN0aW9uIDxUPihwcmVkaWNhdGU6IChpOiBUKSA9PiBudW1iZXIpOiBudW1iZXIge1xyXG4gIGxldCBuID0gMDtcclxuICB0aGlzLmZvckVhY2goaSA9PlxyXG4gICAgbiA9IE1hdGgubWF4KG4sIHByZWRpY2F0ZShpKSlcclxuICApO1xyXG4gIHJldHVybiBuO1xyXG59XHJcbi8qKiBzdW0gZWxlbWVudHMgdXNpbmcgcHJlZGljYXRlICovXHJcbkFycmF5LnByb3RvdHlwZS5zdW0gPSBmdW5jdGlvbiA8VD4ocHJlZGljYXRlOiAoaTogVCkgPT4gbnVtYmVyKTogbnVtYmVyIHtcclxuICBsZXQgbiA9IDA7XHJcbiAgdGhpcy5mb3JFYWNoKGkgPT5cclxuICAgIG4gKz0gcHJlZGljYXRlKGkpXHJcbiAgKTtcclxuICByZXR1cm4gbjtcclxufVxyXG4vKipcclxuICogXHJcbiAqIEBwYXJhbSBhcmdzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlQYXJhbXMoYXJnczogYW55KSB7XHJcbiAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdIHwgbnVtYmVyW10gfCBPYmplY3QgfSA9IHt9O1xyXG4gIGFyZ3MgJiZcclxuICAgIE9iamVjdC5rZXlzKGFyZ3MpLmZvckVhY2goayA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbCA9IGFyZ3Nba107XHJcblxyXG4gICAgICBpZiAodmFsICE9PSBudWxsICYmIHZhbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbCkpXHJcbiAgICAgICAgICBwYXJhbXNba10gPSB2YWw7XHJcbiAgICAgICAgZWxzZSBpZiAoaXNBcnJheSh2YWwpICYmIHZhbC5sZW5ndGgpXHJcbiAgICAgICAgICBwYXJhbXNba10gPSB2YWw7XHJcbiAgICAgICAgZWxzZSBpZiAoaXNEYXRlKHZhbCkpXHJcbiAgICAgICAgICBwYXJhbXNba10gPSB2YWwudG9KU09OKCk7XHJcbiAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QodmFsKSkge1xyXG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbCkubGVuZ3RoKSBwYXJhbXNba10gPSBxdWVyeVBhcmFtcyh2YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBwYXJhbXNba10gPSB2YWw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIHJldHVybiBwYXJhbXM7XHJcbn1cclxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKG5hbWU6IHN0cmluZywgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYpIHtcclxuICBuYW1lID0gbmFtZS5yZXBsYWNlKC9bXFxbXFxdXS9nLCAnXFxcXCQmJyk7XHJcbiAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cCgnWz8mXScgKyBuYW1lICsgJyg9KFteJiNdKil8JnwjfCQpJyksXHJcbiAgICByZXN1bHRzID0gcmVnZXguZXhlYyh1cmwpO1xyXG4gIGlmICghcmVzdWx0cykgcmV0dXJuIG51bGw7XHJcbiAgaWYgKCFyZXN1bHRzWzJdKSByZXR1cm4gJyc7XHJcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzJdLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcclxufVxyXG4iXX0=
|
@@ -1,220 +0,0 @@
|
|
1
|
-
import { Inject, Component, ElementRef, InjectionToken, HostListener } from '@angular/core';
|
2
|
-
import { trigger, state, style, transition, animate } from '@angular/animations';
|
3
|
-
import { interval, firstValueFrom, takeWhile } from 'rxjs';
|
4
|
-
import { outOfBound } from '../functions';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "../session.service";
|
7
|
-
import * as i2 from "@angular/cdk/overlay";
|
8
|
-
import * as i3 from "@angular/router";
|
9
|
-
import * as i4 from "@angular/material/button";
|
10
|
-
import * as i5 from "@angular/material/icon";
|
11
|
-
import * as i6 from "../pipes/translate.pipe";
|
12
|
-
import * as i7 from "../pipes/sanitize-html.pipe";
|
13
|
-
export const TOUR_TOKEN = new InjectionToken('guide');
|
14
|
-
const BELOW = [{
|
15
|
-
originX: 'start',
|
16
|
-
originY: 'bottom',
|
17
|
-
overlayX: 'start',
|
18
|
-
overlayY: 'top',
|
19
|
-
panelClass: ['below', 'start']
|
20
|
-
}, {
|
21
|
-
originX: 'center',
|
22
|
-
originY: 'bottom',
|
23
|
-
overlayX: 'center',
|
24
|
-
overlayY: 'top',
|
25
|
-
panelClass: ['below', 'center']
|
26
|
-
}, {
|
27
|
-
originX: 'end',
|
28
|
-
originY: 'bottom',
|
29
|
-
overlayX: 'end',
|
30
|
-
overlayY: 'top',
|
31
|
-
panelClass: ['below', 'end']
|
32
|
-
}], ABOVE = [{
|
33
|
-
originX: 'start',
|
34
|
-
originY: 'top',
|
35
|
-
overlayX: 'start',
|
36
|
-
overlayY: 'bottom',
|
37
|
-
panelClass: ['above', 'start']
|
38
|
-
},
|
39
|
-
{
|
40
|
-
originX: 'center',
|
41
|
-
originY: 'top',
|
42
|
-
overlayX: 'center',
|
43
|
-
overlayY: 'bottom',
|
44
|
-
panelClass: ['above', 'center']
|
45
|
-
},
|
46
|
-
{
|
47
|
-
originX: 'start',
|
48
|
-
originY: 'top',
|
49
|
-
overlayX: 'end',
|
50
|
-
overlayY: 'bottom',
|
51
|
-
panelClass: ['above', 'end']
|
52
|
-
}], AFTER = [{
|
53
|
-
originX: 'end',
|
54
|
-
originY: 'top',
|
55
|
-
overlayX: 'start',
|
56
|
-
overlayY: 'top',
|
57
|
-
panelClass: ['after', 'start']
|
58
|
-
},
|
59
|
-
{
|
60
|
-
originX: 'end',
|
61
|
-
originY: 'center',
|
62
|
-
overlayX: 'start',
|
63
|
-
overlayY: 'center',
|
64
|
-
panelClass: ['after', 'center']
|
65
|
-
},
|
66
|
-
{
|
67
|
-
originX: 'end',
|
68
|
-
originY: 'bottom',
|
69
|
-
overlayX: 'start',
|
70
|
-
overlayY: 'bottom',
|
71
|
-
panelClass: ['after', 'end']
|
72
|
-
}], BEFORE = [{
|
73
|
-
originX: 'start',
|
74
|
-
originY: 'top',
|
75
|
-
overlayX: 'end',
|
76
|
-
overlayY: 'top',
|
77
|
-
panelClass: ['before', 'start']
|
78
|
-
}, {
|
79
|
-
originX: 'start',
|
80
|
-
originY: 'center',
|
81
|
-
overlayX: 'end',
|
82
|
-
overlayY: 'center',
|
83
|
-
panelClass: ['before', 'center']
|
84
|
-
}, {
|
85
|
-
originX: 'start',
|
86
|
-
originY: 'center',
|
87
|
-
overlayX: 'end',
|
88
|
-
overlayY: 'bottom',
|
89
|
-
panelClass: ['before', 'end']
|
90
|
-
}];
|
91
|
-
export class GuideComponent {
|
92
|
-
constructor(_data, _session, _overlay, _ngRouter, _overlayRef) {
|
93
|
-
this._data = _data;
|
94
|
-
this._session = _session;
|
95
|
-
this._overlay = _overlay;
|
96
|
-
this._ngRouter = _ngRouter;
|
97
|
-
this._overlayRef = _overlayRef;
|
98
|
-
this.index = -1;
|
99
|
-
this.count = this._data.steps.length;
|
100
|
-
this.working = true;
|
101
|
-
}
|
102
|
-
ngOnInit() {
|
103
|
-
if (this._data.name) {
|
104
|
-
const lastindex = localStorage.getItem(this._data.name + '_guide_step');
|
105
|
-
if (lastindex) {
|
106
|
-
this.index = Number.parseInt(lastindex);
|
107
|
-
}
|
108
|
-
}
|
109
|
-
this._moveBy(1);
|
110
|
-
}
|
111
|
-
/**
|
112
|
-
*
|
113
|
-
* @param steps
|
114
|
-
*/
|
115
|
-
async _moveBy(steps) {
|
116
|
-
const index = this.index + steps;
|
117
|
-
if ((index < 0) || (index > this.count - 1)) {
|
118
|
-
this._clear();
|
119
|
-
this.working = false;
|
120
|
-
return;
|
121
|
-
}
|
122
|
-
this.working = true;
|
123
|
-
const step = this._data.steps[index];
|
124
|
-
const { selector, position, navigate, execute } = step;
|
125
|
-
if (navigate)
|
126
|
-
await this._ngRouter.navigateByUrl(navigate);
|
127
|
-
let positionStrategy;
|
128
|
-
if (selector) {
|
129
|
-
const element = document.querySelector(selector);
|
130
|
-
if (!element) {
|
131
|
-
console.warn(`Guide ${this._data.name} selector '${selector}' not found. skipping.`);
|
132
|
-
this._moveBy(steps < 0 ? steps - 1 : steps + 1);
|
133
|
-
return;
|
134
|
-
}
|
135
|
-
let positions;
|
136
|
-
switch (position) {
|
137
|
-
case 'Above':
|
138
|
-
positions = [...ABOVE, ...BELOW, ...AFTER, ...BEFORE];
|
139
|
-
break;
|
140
|
-
case 'End':
|
141
|
-
positions = [...AFTER, ...BEFORE, ...BELOW, ...ABOVE];
|
142
|
-
break;
|
143
|
-
case 'Start':
|
144
|
-
positions = [...BEFORE, ...AFTER, ...BELOW, ...ABOVE];
|
145
|
-
break;
|
146
|
-
case 'Below':
|
147
|
-
positions = [...BELOW, ...BEFORE, ...ABOVE, ...AFTER];
|
148
|
-
break;
|
149
|
-
default:
|
150
|
-
positions = [...BEFORE, ...BELOW, ...ABOVE, ...AFTER];
|
151
|
-
}
|
152
|
-
positionStrategy = this._overlay.position().
|
153
|
-
flexibleConnectedTo(new ElementRef(element)).
|
154
|
-
withPositions(positions).
|
155
|
-
withGrowAfterOpen();
|
156
|
-
if (outOfBound(element)) {
|
157
|
-
element.scrollIntoView({ behavior: 'smooth' });
|
158
|
-
await firstValueFrom(interval(150).pipe(takeWhile(() => outOfBound(element))));
|
159
|
-
}
|
160
|
-
execute &&
|
161
|
-
element.click();
|
162
|
-
}
|
163
|
-
else
|
164
|
-
positionStrategy = this._overlay.position().global().centerVertically().centerHorizontally();
|
165
|
-
this._data.name && localStorage.setItem(this._data.name + '_guide_step', this.index.toString());
|
166
|
-
this.index = index;
|
167
|
-
this.step = step;
|
168
|
-
this.working = false;
|
169
|
-
this._overlayRef.updatePositionStrategy(positionStrategy);
|
170
|
-
this._overlayRef.updatePosition();
|
171
|
-
}
|
172
|
-
_clear() {
|
173
|
-
this._data.name && localStorage.removeItem(this._data.name + '_guide_step');
|
174
|
-
}
|
175
|
-
keydown(evt) {
|
176
|
-
if (this.working)
|
177
|
-
return;
|
178
|
-
switch (evt.key) {
|
179
|
-
case 'ArrowLeft':
|
180
|
-
this._moveBy(this._session.direction === 'ltr' ? -1 : 1);
|
181
|
-
break;
|
182
|
-
case 'ArrowRight':
|
183
|
-
this._moveBy(this._session.direction === 'ltr' ? 1 : -1);
|
184
|
-
break;
|
185
|
-
case 'Escape':
|
186
|
-
this.close();
|
187
|
-
evt.stopPropagation();
|
188
|
-
break;
|
189
|
-
}
|
190
|
-
}
|
191
|
-
next() {
|
192
|
-
this._moveBy(1);
|
193
|
-
}
|
194
|
-
prev() {
|
195
|
-
this._moveBy(-1);
|
196
|
-
}
|
197
|
-
close(done) {
|
198
|
-
this._overlayRef.detach();
|
199
|
-
done && this._clear();
|
200
|
-
}
|
201
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: GuideComponent, deps: [{ token: TOUR_TOKEN }, { token: i1.SessionService }, { token: i2.Overlay }, { token: i3.Router }, { token: i2.OverlayRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
202
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: GuideComponent, selector: "ng-component", host: { listeners: { "window:keydown": "keydown($event)" } }, ngImport: i0, template: "<div class=\"container\" [style.display]=\"step ? '': 'none'\" cdkTrapFocus>\r\n <div class=\"column content\">\r\n <div class=\"row\">\r\n @if (step?.title) {\r\n <h2 class=\"mat-h2\">{{step?.title}}</h2>\r\n }\r\n <span class=\"divider\"></span>\r\n @if (index < count - 1) {\r\n <button mat-icon-button (click)=\"close()\"><mat-icon>close</mat-icon></button>\r\n }\r\n </div>\r\n <p class=\"mat-body\" [innerHTML]=\"step?.content | sanitizeHtml\">\r\n </p>\r\n <div class=\"row center\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"prev()\" [disabled]=\"index < 1 || working\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <button mat-icon-button (click)=\"next()\" [disabled]=\"index >= count - 1 || working\" cdkFocusInitial><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>\r\n @if (index >= count - 1) {\r\n <button mat-button (click)=\"close(true)\">{{'GuideFinish'|translate}}</button>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"tooltip-container\">\r\n <div class=\"tooltip\"></div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.SanitizeHtmlPipe, name: "sanitizeHtml" }], animations: [trigger('body', [
|
203
|
-
state('here', style({ width: '*', height: '*' })),
|
204
|
-
transition('*<=>*', animate('250ms', style({})))
|
205
|
-
])] }); }
|
206
|
-
}
|
207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: GuideComponent, decorators: [{
|
208
|
-
type: Component,
|
209
|
-
args: [{ animations: [trigger('body', [
|
210
|
-
state('here', style({ width: '*', height: '*' })),
|
211
|
-
transition('*<=>*', animate('250ms', style({})))
|
212
|
-
])], template: "<div class=\"container\" [style.display]=\"step ? '': 'none'\" cdkTrapFocus>\r\n <div class=\"column content\">\r\n <div class=\"row\">\r\n @if (step?.title) {\r\n <h2 class=\"mat-h2\">{{step?.title}}</h2>\r\n }\r\n <span class=\"divider\"></span>\r\n @if (index < count - 1) {\r\n <button mat-icon-button (click)=\"close()\"><mat-icon>close</mat-icon></button>\r\n }\r\n </div>\r\n <p class=\"mat-body\" [innerHTML]=\"step?.content | sanitizeHtml\">\r\n </p>\r\n <div class=\"row center\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"prev()\" [disabled]=\"index < 1 || working\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <button mat-icon-button (click)=\"next()\" [disabled]=\"index >= count - 1 || working\" cdkFocusInitial><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_right</mat-icon></button>\r\n @if (index >= count - 1) {\r\n <button mat-button (click)=\"close(true)\">{{'GuideFinish'|translate}}</button>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"tooltip-container\">\r\n <div class=\"tooltip\"></div>\r\n </div>\r\n</div>\r\n" }]
|
213
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
214
|
-
type: Inject,
|
215
|
-
args: [TOUR_TOKEN]
|
216
|
-
}] }, { type: i1.SessionService }, { type: i2.Overlay }, { type: i3.Router }, { type: i2.OverlayRef }], propDecorators: { keydown: [{
|
217
|
-
type: HostListener,
|
218
|
-
args: ['window:keydown', ['$event']]
|
219
|
-
}] } });
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvcmUvZ3VpZGUvZ3VpZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvcmUvZ3VpZGUvZ3VpZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQVUsVUFBVSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7O0FBRzFDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBUSxPQUFPLENBQUMsQ0FBQztBQUU3RCxNQUFNLEtBQUssR0FBd0IsQ0FBQztRQUNsQyxPQUFPLEVBQUUsT0FBTztRQUNoQixPQUFPLEVBQUUsUUFBUTtRQUNqQixRQUFRLEVBQUUsT0FBTztRQUNqQixRQUFRLEVBQUUsS0FBSztRQUNmLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7S0FDL0IsRUFBRTtRQUNELE9BQU8sRUFBRSxRQUFRO1FBQ2pCLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQztLQUNoQyxFQUFFO1FBQ0QsT0FBTyxFQUFFLEtBQUs7UUFDZCxPQUFPLEVB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O2dCQUNqRCxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFBQyxDQUFDLENBQUM7OzJGQUUxQyxjQUFjO2tCQU4xQixTQUFTO2lDQUVJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTs0QkFDM0IsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDOzRCQUNqRCxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7eUJBQUMsQ0FBQyxDQUFDOzswQkFRbEQsTUFBTTsyQkFBQyxVQUFVOzBJQW1GcEIsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5qZWN0aW9uVG9rZW4sIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmLCBQb3NpdGlvblN0cmF0ZWd5LCBDb25uZWN0ZWRQb3NpdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xyXG5pbXBvcnQgeyB0cmlnZ2VyLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIGFuaW1hdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgaW50ZXJ2YWwsIGZpcnN0VmFsdWVGcm9tLCB0YWtlV2hpbGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR3VpZGVTdGVwLCBHdWlkZSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IG91dE9mQm91bmQgfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24uc2VydmljZSc7XHJcblxyXG5leHBvcnQgY29uc3QgVE9VUl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxHdWlkZT4oJ2d1aWRlJyk7XHJcblxyXG5jb25zdCBCRUxPVzogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFt7XHJcbiAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgcGFuZWxDbGFzczogWydiZWxvdycsICdzdGFydCddXHJcbn0sIHtcclxuICBvcmlnaW5YOiAnY2VudGVyJyxcclxuICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICBvdmVybGF5WDogJ2NlbnRlcicsXHJcbiAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gIHBhbmVsQ2xhc3M6IFsnYmVsb3cnLCAnY2VudGVyJ11cclxufSwge1xyXG4gIG9yaWdpblg6ICdlbmQnLFxyXG4gIG9yaWdpblk6ICdib3R0b20nLFxyXG4gIG92ZXJsYXlYOiAnZW5kJyxcclxuICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgcGFuZWxDbGFzczogWydiZWxvdycsICdlbmQnXVxyXG59XSxcclxuICBBQk9WRTogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFt7XHJcbiAgICBvcmlnaW5YOiAnc3RhcnQnLFxyXG4gICAgb3JpZ2luWTogJ3RvcCcsXHJcbiAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcclxuICAgIHBhbmVsQ2xhc3M6IFsnYWJvdmUnLCAnc3RhcnQnXVxyXG4gIH0sXHJcbiAge1xyXG4gICAgb3JpZ2luWDogJ2NlbnRlcicsXHJcbiAgICBvcmlnaW5ZOiAndG9wJyxcclxuICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcclxuICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcclxuICAgIHBhbmVsQ2xhc3M6IFsnYWJvdmUnLCAnY2VudGVyJ11cclxuICB9LFxyXG4gIHtcclxuICAgIG9yaWdpblg6ICdzdGFydCcsXHJcbiAgICBvcmlnaW5ZOiAndG9wJyxcclxuICAgIG92ZXJsYXlYOiAnZW5kJyxcclxuICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcclxuICAgIHBhbmVsQ2xhc3M6IFsnYWJvdmUnLCAnZW5kJ11cclxuICB9XSxcclxuICBBRlRFUjogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFt7XHJcbiAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICBwYW5lbENsYXNzOiBbJ2FmdGVyJywgJ3N0YXJ0J11cclxuICB9LFxyXG4gIHtcclxuICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgb3JpZ2luWTogJ2NlbnRlcicsXHJcbiAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcclxuICAgIHBhbmVsQ2xhc3M6IFsnYWZ0ZXInLCAnY2VudGVyJ11cclxuICB9LFxyXG4gIHtcclxuICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgb3JpZ2luWTogJ2JvdHRvbScsXHJcbiAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcclxuICAgIHBhbmVsQ2xhc3M6IFsnYWZ0ZXInLCAnZW5kJ11cclxuICB9XSxcclxuICBCRUZPUkU6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbe1xyXG4gICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgb3ZlcmxheVg6ICdlbmQnLFxyXG4gICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgcGFuZWxDbGFzczogWydiZWZvcmUnLCAnc3RhcnQnXVxyXG4gIH0sIHtcclxuICAgIG9yaWdpblg6ICdzdGFydCcsXHJcbiAgICBvcmlnaW5ZOiAnY2VudGVyJyxcclxuICAgIG92ZXJsYXlYOiAnZW5kJyxcclxuICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcclxuICAgIHBhbmVsQ2xhc3M6IFsnYmVmb3JlJywgJ2NlbnRlciddXHJcbiAgfSwge1xyXG4gICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgIG9yaWdpblk6ICdjZW50ZXInLFxyXG4gICAgb3ZlcmxheVg6ICdlbmQnLFxyXG4gICAgb3ZlcmxheVk6ICdib3R0b20nLFxyXG4gICAgcGFuZWxDbGFzczogWydiZWZvcmUnLCAnZW5kJ11cclxuICB9XTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9ndWlkZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgYW5pbWF0aW9uczogW3RyaWdnZXIoJ2JvZHknLCBbXHJcbiAgICBzdGF0ZSgnaGVyZScsIHN0eWxlKHsgd2lkdGg6ICcqJywgaGVpZ2h0OiAnKicgfSkpLFxyXG4gICAgdHJhbnNpdGlvbignKjw9PionLCBhbmltYXRlKCcyNTBtcycsIHN0eWxlKHt9KSkpXSldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHdWlkZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc3RlcDogR3VpZGVTdGVwO1xyXG4gIGluZGV4ID0gLTE7XHJcbiAgcmVhZG9ubHkgY291bnQ6IG51bWJlciA9IHRoaXMuX2RhdGEuc3RlcHMubGVuZ3RoO1xyXG4gIHdvcmtpbmcgPSB0cnVlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChUT1VSX1RPS0VOKVxyXG4gICAgcHJpdmF0ZSBfZGF0YTogR3VpZGUsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIF9uZ1JvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZikge1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9kYXRhLm5hbWUpIHtcclxuICAgICAgY29uc3QgbGFzdGluZGV4ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5fZGF0YS5uYW1lICsgJ19ndWlkZV9zdGVwJyk7XHJcbiAgICAgIGlmIChsYXN0aW5kZXgpIHtcclxuICAgICAgICB0aGlzLmluZGV4ID0gTnVtYmVyLnBhcnNlSW50KGxhc3RpbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX21vdmVCeSgxKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHN0ZXBzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBfbW92ZUJ5KHN0ZXBzOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbmRleCArIHN0ZXBzO1xyXG4gICAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+IHRoaXMuY291bnQgLSAxKSkge1xyXG4gICAgICB0aGlzLl9jbGVhcigpO1xyXG4gICAgICB0aGlzLndvcmtpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy53b3JraW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLl9kYXRhLnN0ZXBzW2luZGV4XTtcclxuICAgIGNvbnN0IHsgc2VsZWN0b3IsIHBvc2l0aW9uLCBuYXZpZ2F0ZSwgZXhlY3V0ZSB9ID0gc3RlcDtcclxuICAgIGlmIChuYXZpZ2F0ZSlcclxuICAgICAgYXdhaXQgdGhpcy5fbmdSb3V0ZXIubmF2aWdhdGVCeVVybChuYXZpZ2F0ZSk7XHJcbiAgICBsZXQgcG9zaXRpb25TdHJhdGVneTogUG9zaXRpb25TdHJhdGVneTtcclxuICAgIGlmIChzZWxlY3Rvcikge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcikgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghZWxlbWVudCkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgR3VpZGUgJHt0aGlzLl9kYXRhLm5hbWV9IHNlbGVjdG9yICcke3NlbGVjdG9yfScgbm90IGZvdW5kLiBza2lwcGluZy5gKTtcclxuICAgICAgICB0aGlzLl9tb3ZlQnkoc3RlcHMgPCAwID8gc3RlcHMgLSAxIDogc3RlcHMgKyAxKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXTtcclxuICAgICAgc3dpdGNoIChwb3NpdGlvbikge1xyXG4gICAgICAgIGNhc2UgJ0Fib3ZlJzpcclxuICAgICAgICAgIHBvc2l0aW9ucyA9IFsuLi5BQk9WRSwgLi4uQkVMT1csIC4uLkFGVEVSLCAuLi5CRUZPUkVdO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnRW5kJzpcclxuICAgICAgICAgIHBvc2l0aW9ucyA9IFsuLi5BRlRFUiwgLi4uQkVGT1JFLCAuLi5CRUxPVywgLi4uQUJPVkVdO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnU3RhcnQnOlxyXG4gICAgICAgICAgcG9zaXRpb25zID0gWy4uLkJFRk9SRSwgLi4uQUZURVIsIC4uLkJFTE9XLCAuLi5BQk9WRV07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdCZWxvdyc6XHJcbiAgICAgICAgICBwb3NpdGlvbnMgPSBbLi4uQkVMT1csIC4uLkJFRk9SRSwgLi4uQUJPVkUsIC4uLkFGVEVSXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBwb3NpdGlvbnMgPSBbLi4uQkVGT1JFLCAuLi5CRUxPVywgLi4uQUJPVkUsIC4uLkFGVEVSXTtcclxuICAgICAgfVxyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLlxyXG4gICAgICAgIGZsZXhpYmxlQ29ubmVjdGVkVG8obmV3IEVsZW1lbnRSZWYoZWxlbWVudCkpLlxyXG4gICAgICAgIHdpdGhQb3NpdGlvbnMocG9zaXRpb25zKS5cclxuICAgICAgICB3aXRoR3Jvd0FmdGVyT3BlbigpO1xyXG4gICAgICBpZiAob3V0T2ZCb3VuZChlbGVtZW50KSkge1xyXG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XHJcbiAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oaW50ZXJ2YWwoMTUwKS5waXBlKFxyXG4gICAgICAgICAgdGFrZVdoaWxlKCgpID0+IG91dE9mQm91bmQoZWxlbWVudCkpKSk7XHJcbiAgICAgIH1cclxuICAgICAgZXhlY3V0ZSAmJlxyXG4gICAgICAgIGVsZW1lbnQuY2xpY2soKTtcclxuICAgIH1cclxuICAgIGVsc2UgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5jZW50ZXJWZXJ0aWNhbGx5KCkuY2VudGVySG9yaXpvbnRhbGx5KCk7XHJcblxyXG4gICAgdGhpcy5fZGF0YS5uYW1lICYmIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuX2RhdGEubmFtZSArICdfZ3VpZGVfc3RlcCcsIHRoaXMuaW5kZXgudG9TdHJpbmcoKSk7XHJcbiAgICB0aGlzLmluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLnN0ZXAgPSBzdGVwO1xyXG4gICAgdGhpcy53b3JraW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kocG9zaXRpb25TdHJhdGVneSk7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NsZWFyKCkge1xyXG4gICAgdGhpcy5fZGF0YS5uYW1lICYmIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuX2RhdGEubmFtZSArICdfZ3VpZGVfc3RlcCcpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGtleWRvd24oZXZ0OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy53b3JraW5nKSByZXR1cm47XHJcbiAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcclxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcclxuICAgICAgICB0aGlzLl9tb3ZlQnkodGhpcy5fc2Vzc2lvbi5kaXJlY3Rpb24gPT09ICdsdHInID8gLTEgOiAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XHJcbiAgICAgICAgdGhpcy5fbW92ZUJ5KHRoaXMuX3Nlc3Npb24uZGlyZWN0aW9uID09PSAnbHRyJyA/IDEgOiAtMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgbmV4dCgpIHtcclxuICAgIHRoaXMuX21vdmVCeSgxKTtcclxuICB9XHJcbiAgcHJldigpIHtcclxuICAgIHRoaXMuX21vdmVCeSgtMSk7XHJcbiAgfVxyXG4gIGNsb3NlKGRvbmU/OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xyXG4gICAgZG9uZSAmJiB0aGlzLl9jbGVhcigpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgW3N0eWxlLmRpc3BsYXldPVwic3RlcCA/ICcnOiAnbm9uZSdcIiBjZGtUcmFwRm9jdXM+XHJcbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIEBpZiAoc3RlcD8udGl0bGUpIHtcclxuICAgICAgICA8aDIgY2xhc3M9XCJtYXQtaDJcIj57e3N0ZXA/LnRpdGxlfX08L2gyPlxyXG4gICAgICB9XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgQGlmIChpbmRleCA8IGNvdW50IC0gMSkge1xyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCI+PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICA8cCBjbGFzcz1cIm1hdC1ib2R5XCIgW2lubmVySFRNTF09XCJzdGVwPy5jb250ZW50IHwgc2FuaXRpemVIdG1sXCI+XHJcbiAgICA8L3A+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGNlbnRlclwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwcmV2KClcIiBbZGlzYWJsZWRdPVwiaW5kZXggPCAxIHx8IHdvcmtpbmdcIj48bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+a2V5Ym9hcmRfYXJyb3dfbGVmdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJuZXh0KClcIiBbZGlzYWJsZWRdPVwiaW5kZXggPj0gY291bnQgLSAxIHx8IHdvcmtpbmdcIiBjZGtGb2N1c0luaXRpYWw+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmtleWJvYXJkX2Fycm93X3JpZ2h0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgQGlmIChpbmRleCA+PSBjb3VudCAtIDEpIHtcclxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNsb3NlKHRydWUpXCI+e3snR3VpZGVGaW5pc2gnfHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2x0aXBcIj48L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|