@bizdoc/core 3.2.10 → 3.3.3
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 +52 -6
- 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 +52 -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 +2129 -1873
- 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/compose/form-ref.d.ts +1 -0
- package/lib/compose/trace/trace.base.d.ts +1 -1
- package/lib/core/base.d.ts +5 -0
- package/lib/core/fields/options.base.d.ts +2 -2
- 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/tagging/tagging.component-base.d.ts +1 -1
- package/lib/core/translate.service.d.ts +2 -2
- package/lib/cube/cube.service.d.ts +1 -1
- 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/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 -110
- 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 -343
- 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 -1193
- 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 -238
- 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 -136
- 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 -65
- 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 -63
- 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 -43
- 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 -84
- 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,291 +0,0 @@
|
|
1
|
-
import { Injectable, Inject } from '@angular/core';
|
2
|
-
import { Loader } from "@googlemaps/js-api-loader";
|
3
|
-
import { Subject, Observable, firstValueFrom } from 'rxjs';
|
4
|
-
import { tap, map } from 'rxjs/operators';
|
5
|
-
import { HubConnectionState } from '@microsoft/signalr';
|
6
|
-
import dayjs from 'dayjs';
|
7
|
-
import { BIZDOC_CONFIG } from '../core/configuration';
|
8
|
-
import { FirebaseService, FirebaseState } from './firebase.service';
|
9
|
-
import { MATERIAL_PALETTES } from './colors';
|
10
|
-
import * as i0 from "@angular/core";
|
11
|
-
import * as i1 from "@angular/common/http";
|
12
|
-
import * as i2 from "ngx-cookie-service";
|
13
|
-
import * as i3 from "./hub.service";
|
14
|
-
import * as i4 from "@angular/material/icon";
|
15
|
-
import * as i5 from "@angular/platform-browser";
|
16
|
-
export const EXTENTION_ICONS = {
|
17
|
-
'xlsx': 'excel',
|
18
|
-
'docx': 'word',
|
19
|
-
'pptx': 'powerpoint',
|
20
|
-
'pdf': 'pdf'
|
21
|
-
};
|
22
|
-
const EXCEL_ICON = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><path d="M38,8H19.3335A2.33373,2.33373,0,0,0,17,10.3335V20H38Z" fill="#21a366"/><path d="M56.6665,8H38V20H59V10.3335A2.33373,2.33373,0,0,0,56.6665,8Z" fill="#33c481"/><rect x="38" y="32" width="21" height="12" fill="#107c41"/><path d="M38,44V32H17V53.6665A2.33373,2.33373,0,0,0,19.3335,56h37.333A2.33373,2.33373,0,0,0,59,53.6665V44Z" fill="#185c37"/><rect x="17" y="20" width="21" height="12" fill="#107c41"/><rect x="38" y="20" width="21" height="12" fill="#21a366"/><path d="M33,20.33008V46.66992a1.73444,1.73444,0,0,1-.04.3999A2.31378,2.31378,0,0,1,30.66992,49H17V18H30.66992A2.326,2.326,0,0,1,33,20.33008Z" opacity="0.2"/><path d="M34,20.33008V44.66992A3.36171,3.36171,0,0,1,30.66992,48H17V17H30.66992A3.34177,3.34177,0,0,1,34,20.33008Z" opacity="0.1"/><path d="M33,20.33008V44.66992A2.326,2.326,0,0,1,30.66992,47H17V18H30.66992A2.326,2.326,0,0,1,33,20.33008Z" opacity="0.2"/><path d="M32,20.33008V44.66992A2.326,2.326,0,0,1,29.66992,47H17V18H29.66992A2.326,2.326,0,0,1,32,20.33008Z" opacity="0.1"/><rect x="4" y="18.00002" width="27.99996" height="27.99996" rx="2.33333" fill="#107c41"/><path d="M11.2256,39.5835l4.90759-7.60465-4.4951-7.56235h3.61724l2.45379,4.83356q.33839.68763.46538,1.02594h.03173q.24318-.54984.50768-1.06825l2.623-4.79125H24.658l-4.61145,7.52,4.72779,7.647H21.24174L18.40718,34.274a4.43255,4.43255,0,0,1-.33845-.70864h-.04231a3.345,3.345,0,0,1-.32788.68749L14.77937,39.5835Z" fill="#fff"/></svg>', WORD_ICON = '<svg viewBox="0 0 560 400" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero"><path d="m380.829 103.753h-146.659c-5.028 0-9.165 4.137-9.165 9.165v38.959l82.498 24.062 82.497-24.062v-38.959c0-5.028-4.137-9.165-9.164-9.165z" fill="#41a5ee"/><path d="m389.993 151.877h-164.994v48.123l82.497 24.062 82.497-24.062z" fill="#2b7cd3"/><path d="m389.993 200h-164.994v48.124l82.497 24.061 82.497-24.061z" fill="#185abd"/><path d="m389.993 248.124h-164.994v38.959c0 5.027 4.136 9.164 9.163 9.164h146.66c5.027 0 9.164-4.137 9.164-9.164z" fill="#103f91"/><path d="m284.582 138.127h-59.583v130.621h59.583c5.022-.015 9.149-4.143 9.164-9.164v-112.286c-.015-5.021-4.142-9.149-9.164-9.164z" fill-opacity=".098039"/><path d="m277.708 145.002h-52.709v130.621h52.709c5.021-.015 9.149-4.143 9.163-9.165v-112.285c-.014-5.021-4.142-9.149-9.163-9.164zm0 0h-52.709v116.871h52.709c5.021-.015 9.149-4.143 9.163-9.164v-98.536c-.014-5.021-4.142-9.149-9.163-9.164zm-6.875 0h-45.834v116.871h45.834c5.021-.015 9.149-4.143 9.163-9.164v-98.536c-.014-5.021-4.142-9.149-9.163-9.164z" fill-opacity=".2"/><path d="m179.164 145.002h91.661c5.028 0 9.165 4.136 9.165 9.164v91.662c0 5.027-4.137 9.163-9.165 9.163h-91.661c-5.027 0-9.164-4.136-9.164-9.163v-91.662c0-5.028 4.137-9.164 9.164-9.164z" fill="#185abd"/><path d="m252.154 234.374h-12.375l-14.437-47.436-15.125 47.436h-12.374l-13.75-68.748h12.375l9.624 48.123 14.438-46.748h10.312l13.75 46.748 9.624-48.123h11.687z" fill="#fff"/></g><path d="m170 90.004h219.993v219.993h-219.993z" fill="none"/></svg>', POWERPOINT_ICON = '<svg viewBox="-0.12979372698077785 0 32.152389301176754 32" xmlns="http://www.w3.org/2000/svg" width="2500" height="2478"><path d="M18 2A14.041 14.041 0 0 0 4 16l17.737 3.737z" fill="#ed6c47"/><path d="M18 2a14.041 14.041 0 0 1 14 14l-7 4.758L18 16z" fill="#ff8f6b"/><path d="M18 30a14.041 14.041 0 0 0 14-14H4a14.041 14.041 0 0 0 14 14z" fill="#d35230"/><path d="M16.666 7h-9.36a13.914 13.914 0 0 0 .93 19h8.43A1.337 1.337 0 0 0 18 24.667V8.333A1.337 1.337 0 0 0 16.666 7z" opacity=".1"/><path d="M15.666 8H6.54a13.906 13.906 0 0 0 2.845 19h6.282A1.337 1.337 0 0 0 17 25.667V9.333A1.337 1.337 0 0 0 15.666 8z" opacity=".2"/><path d="M15.666 8H6.54a13.89 13.89 0 0 0 .766 17h8.361A1.337 1.337 0 0 0 17 23.667V9.333A1.337 1.337 0 0 0 15.666 8z" opacity=".2"/><path d="M14.666 8H6.54a13.89 13.89 0 0 0 .766 17h7.361A1.337 1.337 0 0 0 16 23.667V9.333A1.337 1.337 0 0 0 14.666 8z" opacity=".2"/><path d="M1.333 8h13.334A1.333 1.333 0 0 1 16 9.333v13.334A1.333 1.333 0 0 1 14.667 24H1.333A1.333 1.333 0 0 1 0 22.667V9.333A1.333 1.333 0 0 1 1.333 8z" fill="#c43e1c"/><path d="M7.997 11a4.168 4.168 0 0 1 2.755.805 2.878 2.878 0 0 1 .956 2.331 2.726 2.726 0 0 1-.473 1.588 3.164 3.164 0 0 1-1.344 1.186 4.57 4.57 0 0 1-2.02.424h-1.91V21H4V11zM5.96 15.683h1.687a2.194 2.194 0 0 0 1.492-.444 1.107 1.107 0 0 0 .504-1.026q0-1.659-1.933-1.659H5.96z" fill="#f9f7f7"/><path d="M0 0h32v32H0z" fill="none"/></svg>', PDF_ICON = '<svg version="1.1" viewBox="0 0 14 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(.04589 0 0 .04589 -.66877 -.73379)"><polygon points="51.791 356.65 51.791 23.99 204.5 23.99 282.65 102.07 282.65 356.65" fill="#fff" stroke-width="212.65"/><path d="m201.19 31.99 73.46 73.393v243.26h-214.86v-316.66h141.4m6.623-16h-164.02v348.66h246.85v-265.9z" stroke-width="21.791"/></g><g transform="matrix(.04589 0 0 .04589 -.66877 -.73379)"><polygon points="282.65 356.65 51.791 356.65 51.791 23.99 204.5 23.99 206.31 25.8 206.31 100.33 280.9 100.33 282.65 102.07" fill="#fff" stroke-width="212.65"/><path d="m198.31 31.99v76.337h76.337v240.32h-214.86v-316.66h138.52m9.5-16h-164.02v348.66h246.85v-265.9l-6.43-6.424h-69.907v-69.842z" stroke-width="21.791"/></g><g transform="matrix(.04589 0 0 .04589 -.66877 -.73379)" stroke-width="21.791"><polygon points="258.31 87.75 219.64 87.75 219.64 48.667 258.31 86.38"/> <path d="m227.64 67.646 12.41 12.104h-12.41v-12.104m-5.002-27.229h-10.998v55.333h54.666v-12.742z"/></g><g transform="matrix(.04589 0 0 .04589 -.66877 -.73379)" fill="#ed1c24" stroke-width="212.65"><polygon points="311.89 284.49 22.544 284.49 22.544 167.68 37.291 152.94 37.291 171.49 297.15 171.49 297.15 152.94 311.89 167.68"/><path d="m303.65 168.63 1.747 1.747v107.62h-276.35v-107.62l1.747-1.747v9.362h272.85v-9.362m-12.999-31.385v27.747h-246.86v-27.747l-27.747 27.747v126h302.35v-126z"/></g><rect x="1.7219" y="7.9544" width="10.684" height="4.0307" fill="none"/><g transform="matrix(.04589 0 0 .04589 1.7219 11.733)" fill="#fff" stroke-width="21.791" aria-label="PDF"><path d="m9.216 0v-83.2h30.464q6.784 0 12.928 1.408 6.144 1.28 10.752 4.608 4.608 3.2 7.296 8.576 2.816 5.248 2.816 13.056 0 7.68-2.816 13.184-2.688 5.504-7.296 9.088-4.608 3.456-10.624 5.248-6.016 1.664-12.544 1.664h-8.96v26.368zm22.016-43.776h7.936q6.528 0 9.6-3.072 3.2-3.072 3.2-8.704t-3.456-7.936-9.856-2.304h-7.424z"/><path d="m87.04 0v-83.2h24.576q9.472 0 17.28 2.304 7.936 2.304 13.568 7.296t8.704 12.8q3.2 7.808 3.2 18.816t-3.072 18.944-8.704 13.056q-5.504 5.12-13.184 7.552-7.552 2.432-16.512 2.432zm22.016-17.664h1.28q4.48 0 8.448-1.024 3.968-1.152 6.784-3.84 2.944-2.688 4.608-7.424t1.664-12.032-1.664-11.904-4.608-7.168q-2.816-2.56-6.784-3.456-3.968-1.024-8.448-1.024h-1.28z"/><path d="m169.22 0v-83.2h54.272v18.432h-32.256v15.872h27.648v18.432h-27.648v30.464z"/></g></svg>';
|
23
|
-
const THEMES = [
|
24
|
-
{ name: 'default', primary: 'purple', color: 'purple', accent: 'amber', title: 'PurpleTheme' },
|
25
|
-
{ name: 'indigo', primary: 'indigo', color: '#3f51b5', accent: 'pink', title: 'IndigoTheme' },
|
26
|
-
{ name: 'green', primary: 'green', color: '#4CAF50', accent: 'amber', title: 'GreenTheme' },
|
27
|
-
{ name: 'dark', primary: 'deepPurple', color: '#404041', accent: 'amber', dark: true, title: 'DeepTheme' },
|
28
|
-
{ name: 'brown', primary: 'brown', color: '#795548', accent: 'grey', title: 'GrayTheme' }
|
29
|
-
];
|
30
|
-
const SUPPORTED_LANGUAGES = ['en', 'he', 'de', 'ar', 'ru'], RTL_LANGUALGES = ['he', 'ar'];
|
31
|
-
export function SessionProviderFactory(provider) {
|
32
|
-
return () => provider.prepare();
|
33
|
-
}
|
34
|
-
export class SessionService {
|
35
|
-
prepare() {
|
36
|
-
('serviceWorker' in navigator) && this._loadServiceWorker();
|
37
|
-
return this._config.maps ? this._loadGoogleMaps() : Promise.resolve();
|
38
|
-
}
|
39
|
-
constructor(_config, _http, _cookies, _hub, iconRegistry, sanitizer) {
|
40
|
-
this._config = _config;
|
41
|
-
this._http = _http;
|
42
|
-
this._cookies = _cookies;
|
43
|
-
this._hub = _hub;
|
44
|
-
this.Themes = this._config.themes || THEMES;
|
45
|
-
this._loaded = new Subject();
|
46
|
-
this._themeChange = new Subject();
|
47
|
-
this.loaded = this._loaded.asObservable();
|
48
|
-
this.themeChange = this._themeChange.asObservable();
|
49
|
-
this._firebase = new FirebaseService(this._config ? this._config.firebase : undefined, this);
|
50
|
-
iconRegistry.addSvgIconLiteral('excel', sanitizer.bypassSecurityTrustHtml(EXCEL_ICON));
|
51
|
-
iconRegistry.addSvgIconLiteral('word', sanitizer.bypassSecurityTrustHtml(WORD_ICON));
|
52
|
-
iconRegistry.addSvgIconLiteral('powerpoint', sanitizer.bypassSecurityTrustHtml(POWERPOINT_ICON));
|
53
|
-
iconRegistry.addSvgIconLiteral('pdf', sanitizer.bypassSecurityTrustHtml(PDF_ICON));
|
54
|
-
}
|
55
|
-
get profile() { return this._profile; }
|
56
|
-
get gender() { return this.profile.byId ? this._profile.byGender : this._profile.gender; }
|
57
|
-
get accentPalette() {
|
58
|
-
return this._accentpalette;
|
59
|
-
}
|
60
|
-
_constructpalette(color) {
|
61
|
-
const palette = MATERIAL_PALETTES[color];
|
62
|
-
return [palette['100'], palette['300'], palette['500'], palette['700'], palette['900'],
|
63
|
-
palette['200'], palette['400'], palette['600'], palette['800'], palette['hex'],
|
64
|
-
palette['a100'], palette['a400'], palette['a200'], palette['a700']];
|
65
|
-
}
|
66
|
-
get primeryPalette() {
|
67
|
-
return this._primarypalette;
|
68
|
-
}
|
69
|
-
getAccent(mode = 500) {
|
70
|
-
return MATERIAL_PALETTES[this.theme.accent][mode];
|
71
|
-
}
|
72
|
-
getPrimery(mode = 500) {
|
73
|
-
return MATERIAL_PALETTES[this.theme.primary][mode];
|
74
|
-
}
|
75
|
-
get theme() {
|
76
|
-
if (!this._theme) {
|
77
|
-
const name = localStorage.getItem('theme');
|
78
|
-
this._theme = name ? this.Themes.find(t => t.name === name) :
|
79
|
-
this.Themes[0];
|
80
|
-
}
|
81
|
-
return this._theme;
|
82
|
-
}
|
83
|
-
set theme(value) {
|
84
|
-
this._theme = value;
|
85
|
-
this._changeTheme(value).then(() => this._themeChange.next(value));
|
86
|
-
localStorage.setItem('theme', value.name);
|
87
|
-
}
|
88
|
-
get ok() { return this.profile !== undefined; }
|
89
|
-
/** language direction */
|
90
|
-
get direction() {
|
91
|
-
return RTL_LANGUALGES.indexOf(this.language) > -1 ? 'rtl' : 'ltr';
|
92
|
-
}
|
93
|
-
get inverse() {
|
94
|
-
return this.direction === 'rtl';
|
95
|
-
}
|
96
|
-
get userId() {
|
97
|
-
return this._profile.byId || this.profile.userId;
|
98
|
-
}
|
99
|
-
get locale() {
|
100
|
-
return this.language.split('-')[0];
|
101
|
-
}
|
102
|
-
get language() {
|
103
|
-
if (!this._lang)
|
104
|
-
this._lang = this._cookies.get('lang') || this._getBrowserLang() || SUPPORTED_LANGUAGES[0];
|
105
|
-
return this._lang;
|
106
|
-
}
|
107
|
-
get aria() { return localStorage.getItem('aria') === '1'; }
|
108
|
-
set aria(val) { localStorage.setItem('aria', val ? '1' : '0'); }
|
109
|
-
set language(code) {
|
110
|
-
this._cookies.set('lang', code, 365, '/');
|
111
|
-
}
|
112
|
-
get languages() { return this._config.languages || SUPPORTED_LANGUAGES; }
|
113
|
-
get isImpersonating() { return this.profile.byId !== undefined; }
|
114
|
-
/** system admin */
|
115
|
-
get isSystem() {
|
116
|
-
return this.profile.system;
|
117
|
-
}
|
118
|
-
/** online or set in profile */
|
119
|
-
get state() {
|
120
|
-
return this.profile.available || 'Online';
|
121
|
-
}
|
122
|
-
set state(value) {
|
123
|
-
this.profile.available = value === 'Online' ? null : value;
|
124
|
-
this._http.put(`/api/account/available?mode=${this.profile.available || ''}`, {}).subscribe();
|
125
|
-
}
|
126
|
-
isInRole(role) {
|
127
|
-
return this._http.get('/api/account/isInRole', {
|
128
|
-
params: { role },
|
129
|
-
responseType: 'text'
|
130
|
-
}).pipe(map(r => r === 'true'));
|
131
|
-
}
|
132
|
-
/** */
|
133
|
-
get isOutOfOffice() {
|
134
|
-
const options = this.profile.options.outOfOffice;
|
135
|
-
if (options && options.active) {
|
136
|
-
const today = dayjs().startOf('day');
|
137
|
-
return (!options.from || dayjs(options.from).startOf('day') <= today)
|
138
|
-
&& (!options.to || dayjs(options.to).startOf('day') >= today);
|
139
|
-
}
|
140
|
-
else
|
141
|
-
return false;
|
142
|
-
}
|
143
|
-
/** update profile */
|
144
|
-
update(profile) {
|
145
|
-
return this._http.put('/api/account/update', profile).pipe(tap(() => Object.assign(this._profile.options, profile)));
|
146
|
-
}
|
147
|
-
/** mark guide as visited in profile */
|
148
|
-
guide(name) {
|
149
|
-
return this._http.put(`/api/account/guide/${encodeURIComponent(name)}`, {}, { headers: { 'no-progress': 'true' } }).pipe(tap(() => {
|
150
|
-
const guide = this._profile.guides.find(g => g.name === name);
|
151
|
-
if (guide)
|
152
|
-
guide.mode = undefined;
|
153
|
-
this._profile.options.guides.push(name);
|
154
|
-
}));
|
155
|
-
}
|
156
|
-
/** get profile */
|
157
|
-
refresh() {
|
158
|
-
return new Observable(observe => {
|
159
|
-
const complete = (profile) => {
|
160
|
-
this._profile = profile;
|
161
|
-
observe.next();
|
162
|
-
this._loaded.next();
|
163
|
-
};
|
164
|
-
this._http.get('/api/account/refresh').subscribe({
|
165
|
-
next: r => {
|
166
|
-
if (!this._profile) // 1st time
|
167
|
-
this._changeTheme(this.theme).
|
168
|
-
then(() => complete(r));
|
169
|
-
else
|
170
|
-
complete(r);
|
171
|
-
this._hub.state !== HubConnectionState.Connected && this._hub.start();
|
172
|
-
this._firebase.state !== FirebaseState.Activated &&
|
173
|
-
this._firebase.activate();
|
174
|
-
}, error: observe.error.bind(this)
|
175
|
-
});
|
176
|
-
});
|
177
|
-
}
|
178
|
-
getProfileExtra(name) {
|
179
|
-
return this._http.get(`/api/account/extra/${name}`);
|
180
|
-
}
|
181
|
-
setProfileExtra(name, profile) {
|
182
|
-
return this._http.post(`/api/account/extra/${name}`, profile);
|
183
|
-
}
|
184
|
-
unregisterDevice(type, token) {
|
185
|
-
return this._http.post('/api/account/unregisterDevice', { type, token });
|
186
|
-
}
|
187
|
-
registerDevice(type, token) {
|
188
|
-
return this._http.post('/api/account/registerDevice', { type, token });
|
189
|
-
}
|
190
|
-
/**
|
191
|
-
*
|
192
|
-
* @param search
|
193
|
-
* @returns
|
194
|
-
*/
|
195
|
-
listImpersonate(search) {
|
196
|
-
const params = {};
|
197
|
-
if (search)
|
198
|
-
params['search'] = search;
|
199
|
-
return this._http.get('/api/account/granted', {
|
200
|
-
params
|
201
|
-
});
|
202
|
-
}
|
203
|
-
impersonate(userId) {
|
204
|
-
return this._http.post('/api/account/impersonate', {
|
205
|
-
userId
|
206
|
-
});
|
207
|
-
}
|
208
|
-
inboxTouch() {
|
209
|
-
return firstValueFrom(this._http.put('/api/account/inboxview', {}, { headers: { 'no-progress': 'true' } }).pipe(tap(e => {
|
210
|
-
this.profile.inboxCount = 0;
|
211
|
-
this.profile.options.inboxView = e.time;
|
212
|
-
})));
|
213
|
-
}
|
214
|
-
notificationsTouch() {
|
215
|
-
return firstValueFrom(this._http.put('/api/account/notificationsView', {}, { headers: { 'no-progress': 'true' } }).pipe(tap(e => {
|
216
|
-
this.profile.notificationsCount = 0;
|
217
|
-
this.profile.options.notificationsView = e.time;
|
218
|
-
})));
|
219
|
-
}
|
220
|
-
_getBrowserLang() {
|
221
|
-
let lang = navigator.language;
|
222
|
-
if (this.languages.indexOf(lang) > -1)
|
223
|
-
return lang;
|
224
|
-
for (let i = 0; i < navigator.languages.length; i++) {
|
225
|
-
lang = navigator.languages[i];
|
226
|
-
if (this.languages.indexOf(lang) > -1)
|
227
|
-
return lang;
|
228
|
-
if (lang.length > 2) {
|
229
|
-
lang = lang.substring(0, 2).toLowerCase();
|
230
|
-
if (this.languages.indexOf(lang) > -1)
|
231
|
-
return lang;
|
232
|
-
lang = this.languages.find(l => l.startsWith(lang));
|
233
|
-
if (lang)
|
234
|
-
return lang;
|
235
|
-
}
|
236
|
-
}
|
237
|
-
return null;
|
238
|
-
}
|
239
|
-
/**
|
240
|
-
*
|
241
|
-
* @param theme
|
242
|
-
*/
|
243
|
-
_changeTheme(theme) {
|
244
|
-
return new Promise((resolve) => {
|
245
|
-
this._accentpalette = this._constructpalette(this.theme.accent);
|
246
|
-
this._primarypalette = this._constructpalette(this.theme.primary);
|
247
|
-
let style = document.getElementById('bizdoc-theme');
|
248
|
-
// remove
|
249
|
-
if (style)
|
250
|
-
document.body.removeChild(style);
|
251
|
-
if (theme.name === this.Themes[0].name)
|
252
|
-
resolve();
|
253
|
-
else {
|
254
|
-
style = document.createElement('link');
|
255
|
-
style.id = 'bizdoc-theme';
|
256
|
-
style.type = 'text/css';
|
257
|
-
style.rel = 'stylesheet';
|
258
|
-
style.href = `/assets/themes/${theme.name}.min.css`;
|
259
|
-
document.body.append(style);
|
260
|
-
style.onload = () => resolve();
|
261
|
-
}
|
262
|
-
});
|
263
|
-
}
|
264
|
-
_loadServiceWorker() {
|
265
|
-
window.addEventListener('load', function () {
|
266
|
-
navigator.serviceWorker.register('/js/app-sw.js').then(function () {
|
267
|
-
}, null);
|
268
|
-
});
|
269
|
-
}
|
270
|
-
_loadGoogleMaps() {
|
271
|
-
const apiKey = this._config.maps.apiKey;
|
272
|
-
const loader = new Loader({
|
273
|
-
apiKey,
|
274
|
-
libraries: ['places'],
|
275
|
-
language: this.language,
|
276
|
-
version: 'weekly',
|
277
|
-
});
|
278
|
-
const maps = loader.importLibrary('maps');
|
279
|
-
return maps;
|
280
|
-
}
|
281
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SessionService, deps: [{ token: BIZDOC_CONFIG }, { token: i1.HttpClient }, { token: i2.CookieService }, { token: i3.HubService }, { token: i4.MatIconRegistry }, { token: i5.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
282
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SessionService, providedIn: 'root' }); }
|
283
|
-
}
|
284
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: SessionService, decorators: [{
|
285
|
-
type: Injectable,
|
286
|
-
args: [{ providedIn: 'root' }]
|
287
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
288
|
-
type: Inject,
|
289
|
-
args: [BIZDOC_CONFIG]
|
290
|
-
}] }, { type: i1.HttpClient }, { type: i2.CookieService }, { type: i3.HubService }, { type: i4.MatIconRegistry }, { type: i5.DomSanitizer }] });
|
291
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFhLFVBQVUsRUFBTSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBMkMsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7OztBQUc3QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQThCO0lBQ3hELE1BQU0sRUFBRSxPQUFPO0lBQ2YsTUFBTSxFQUFFLE1BQU07SUFDZCxNQUFNLEVBQUUsWUFBWTtJQUNwQixLQUFLLEVBQUUsS0FBSztDQUNiLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyw0OENBQTQ4QyxFQUM3OUMsU0FBUyxHQUFHLG0vQ0FBbS9DLEVBQy8vQyxlQUFlLEdBQUcsdzNDQUF3M0MsRUFDMTRDLFFBQVEsR0FBRywwMUVBQTAxRSxDQUFDO0FBRXgyRSxNQUFNLE1BQU0sR0FBWTtJQUN0QixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVB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Q25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFPbkIsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tIFwiQGdvb2dsZW1hcHMvanMtYXBpLWxvYWRlclwiXHJcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgb2YsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBIdWJDb25uZWN0aW9uU3RhdGUgfSBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgQklaRE9DX0NPTkZJRywgQml6RG9jQ29uZmlnLCBHb29nbGVNYXBzU2V0dGluZ3MsIFRoZW1lIH0gZnJvbSAnLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgUHJvZmlsZSwgVXNlckluZm8sIEF2YWlsYWJpbGl0eVN0YXRlLCBPcHRpb25zLCBHZW5kZXIgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IEZpcmViYXNlU2VydmljZSwgRmlyZWJhc2VTdGF0ZSB9IGZyb20gJy4vZmlyZWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTUFURVJJQUxfUEFMRVRURVMgfSBmcm9tICcuL2NvbG9ycyc7XHJcbmltcG9ydCB7IE1hdGVyaWFsTW9kZSB9IGZyb20gJy4vZnVuY3Rpb25zJztcclxuXHJcbmV4cG9ydCBjb25zdCBFWFRFTlRJT05fSUNPTlM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgJ3hsc3gnOiAnZXhjZWwnLFxyXG4gICdkb2N4JzogJ3dvcmQnLFxyXG4gICdwcHR4JzogJ3Bvd2VycG9pbnQnLFxyXG4gICdwZGYnOiAncGRmJ1xyXG59O1xyXG5cclxuY29uc3QgRVhDRUxfSUNPTiA9ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDY0IDY0XCI+PHBhdGggZD1cIk0zOCw4SDE5LjMzMzVBMi4zMzM3MywyLjMzMzczLDAsMCwwLDE3LDEwLjMzMzVWMjBIMzhaXCIgZmlsbD1cIiMyMWEzNjZcIi8+PHBhdGggZD1cIk01Ni42NjY1LDhIMzhWMjBINTlWMTAuMzMzNUEyLjMzMzczLDIuMzMzNzMsMCwwLDAsNTYuNjY2NSw4WlwiIGZpbGw9XCIjMzNjNDgxXCIvPjxyZWN0IHg9XCIzOFwiIHk9XCIzMlwiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCIjMTA3YzQxXCIvPjxwYXRoIGQ9XCJNMzgsNDRWMzJIMTdWNTMuNjY2NUEyLjMzMzczLDIuMzMzNzMsMCwwLDAsMTkuMzMzNSw1NmgzNy4zMzNBMi4zMzM3MywyLjMzMzczLDAsMCwwLDU5LDUzLjY2NjVWNDRaXCIgZmlsbD1cIiMxODVjMzdcIi8+PHJlY3QgeD1cIjE3XCIgeT1cIjIwXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIiMxMDdjNDFcIi8+PHJlY3QgeD1cIjM4XCIgeT1cIjIwXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIiMyMWEzNjZcIi8+PHBhdGggZD1cIk0zMywyMC4zMzAwOFY0Ni42Njk5MmExLjczNDQ0LDEuNzM0NDQsMCwwLDEtLjA0LjM5OTlBMi4zMTM3OCwyLjMxMzc4LDAsMCwxLDMwLjY2OTkyLDQ5SDE3VjE4SDMwLjY2OTkyQTIuMzI2LDIuMzI2LDAsMCwxLDMzLDIwLjMzMDA4WlwiIG9wYWNpdHk9XCIwLjJcIi8+PHBhdGggZD1cIk0zNCwyMC4zMzAwOFY0NC42Njk5MkEzLjM2MTcxLDMuMzYxNzEsMCwwLDEsMzAuNjY5OTIsNDhIMTdWMTdIMzAuNjY5OTJBMy4zNDE3NywzLjM0MTc3LDAsMCwxLDM0LDIwLjMzMDA4WlwiIG9wYWNpdHk9XCIwLjFcIi8+PHBhdGggZD1cIk0zMywyMC4zMzAwOFY0NC42Njk5MkEyLjMyNiwyLjMyNiwwLDAsMSwzMC42Njk5Miw0N0gxN1YxOEgzMC42Njk5MkEyLjMyNiwyLjMyNiwwLDAsMSwzMywyMC4zMzAwOFpcIiBvcGFjaXR5PVwiMC4yXCIvPjxwYXRoIGQ9XCJNMzIsMjAuMzMwMDhWNDQuNjY5OTJBMi4zMjYsMi4zMjYsMCwwLDEsMjkuNjY5OTIsNDdIMTdWMThIMjkuNjY5OTJBMi4zMjYsMi4zMjYsMCwwLDEsMzIsMjAuMzMwMDhaXCIgb3BhY2l0eT1cIjAuMVwiLz48cmVjdCB4PVwiNFwiIHk9XCIxOC4wMDAwMlwiIHdpZHRoPVwiMjcuOTk5OTZcIiBoZWlnaHQ9XCIyNy45OTk5NlwiIHJ4PVwiMi4zMzMzM1wiIGZpbGw9XCIjMTA3YzQxXCIvPjxwYXRoIGQ9XCJNMTEuMjI1NiwzOS41ODM1bDQuOTA3NTktNy42MDQ2NS00LjQ5NTEtNy41NjIzNWgzLjYxNzI0bDIuNDUzNzksNC44MzM1NnEuMzM4MzkuNjg3NjMuNDY1MzgsMS4wMjU5NGguMDMxNzNxLjI0MzE4LS41NDk4NC41MDc2OC0xLjA2ODI1bDIuNjIzLTQuNzkxMjVIMjQuNjU4bC00LjYxMTQ1LDcuNTIsNC43Mjc3OSw3LjY0N0gyMS4yNDE3NEwxOC40MDcxOCwzNC4yNzRhNC40MzI1NSw0LjQzMjU1LDAsMCwxLS4zMzg0NS0uNzA4NjRoLS4wNDIzMWEzLjM0NSwzLjM0NSwwLDAsMS0uMzI3ODguNjg3NDlMMTQuNzc5MzcsMzkuNTgzNVpcIiBmaWxsPVwiI2ZmZlwiLz48L3N2Zz4nLFxyXG4gIFdPUkRfSUNPTiA9ICc8c3ZnIHZpZXdCb3g9XCIwIDAgNTYwIDQwMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48ZyBmaWxsLXJ1bGU9XCJub256ZXJvXCI+PHBhdGggZD1cIm0zODAuODI5IDEwMy43NTNoLTE0Ni42NTljLTUuMDI4IDAtOS4xNjUgNC4xMzctOS4xNjUgOS4xNjV2MzguOTU5bDgyLjQ5OCAyNC4wNjIgODIuNDk3LTI0LjA2MnYtMzguOTU5YzAtNS4wMjgtNC4xMzctOS4xNjUtOS4xNjQtOS4xNjV6XCIgZmlsbD1cIiM0MWE1ZWVcIi8+PHBhdGggZD1cIm0zODkuOTkzIDE1MS44NzdoLTE2NC45OTR2NDguMTIzbDgyLjQ5NyAyNC4wNjIgODIuNDk3LTI0LjA2MnpcIiBmaWxsPVwiIzJiN2NkM1wiLz48cGF0aCBkPVwibTM4OS45OTMgMjAwaC0xNjQuOTk0djQ4LjEyNGw4Mi40OTcgMjQuMDYxIDgyLjQ5Ny0yNC4wNjF6XCIgZmlsbD1cIiMxODVhYmRcIi8+PHBhdGggZD1cIm0zODkuOTkzIDI0OC4xMjRoLTE2NC45OTR2MzguOTU5YzAgNS4wMjcgNC4xMzYgOS4xNjQgOS4xNjMgOS4xNjRoMTQ2LjY2YzUuMDI3IDAgOS4xNjQtNC4xMzcgOS4xNjQtOS4xNjR6XCIgZmlsbD1cIiMxMDNmOTFcIi8+PHBhdGggZD1cIm0yODQuNTgyIDEzOC4xMjdoLTU5LjU4M3YxMzAuNjIxaDU5LjU4M2M1LjAyMi0uMDE1IDkuMTQ5LTQuMTQzIDkuMTY0LTkuMTY0di0xMTIuMjg2Yy0uMDE1LTUuMDIxLTQuMTQyLTkuMTQ5LTkuMTY0LTkuMTY0elwiIGZpbGwtb3BhY2l0eT1cIi4wOTgwMzlcIi8+PHBhdGggZD1cIm0yNzcuNzA4IDE0NS4wMDJoLTUyLjcwOXYxMzAuNjIxaDUyLjcwOWM1LjAyMS0uMDE1IDkuMTQ5LTQuMTQzIDkuMTYzLTkuMTY1di0xMTIuMjg1Yy0uMDE0LTUuMDIxLTQuMTQyLTkuMTQ5LTkuMTYzLTkuMTY0em0wIDBoLTUyLjcwOXYxMTYuODcxaDUyLjcwOWM1LjAyMS0uMDE1IDkuMTQ5LTQuMTQzIDkuMTYzLTkuMTY0di05OC41MzZjLS4wMTQtNS4wMjEtNC4xNDItOS4xNDktOS4xNjMtOS4xNjR6bS02Ljg3NSAwaC00NS44MzR2MTE2Ljg3MWg0NS44MzRjNS4wMjEtLjAxNSA5LjE0OS00LjE0MyA5LjE2My05LjE2NHYtOTguNTM2Yy0uMDE0LTUuMDIxLTQuMTQyLTkuMTQ5LTkuMTYzLTkuMTY0elwiIGZpbGwtb3BhY2l0eT1cIi4yXCIvPjxwYXRoIGQ9XCJtMTc5LjE2NCAxNDUuMDAyaDkxLjY2MWM1LjAyOCAwIDkuMTY1IDQuMTM2IDkuMTY1IDkuMTY0djkxLjY2MmMwIDUuMDI3LTQuMTM3IDkuMTYzLTkuMTY1IDkuMTYzaC05MS42NjFjLTUuMDI3IDAtOS4xNjQtNC4xMzYtOS4xNjQtOS4xNjN2LTkxLjY2MmMwLTUuMDI4IDQuMTM3LTkuMTY0IDkuMTY0LTkuMTY0elwiIGZpbGw9XCIjMTg1YWJkXCIvPjxwYXRoIGQ9XCJtMjUyLjE1NCAyMzQuMzc0aC0xMi4zNzVsLTE0LjQzNy00Ny40MzYtMTUuMTI1IDQ3LjQzNmgtMTIuMzc0bC0xMy43NS02OC43NDhoMTIuMzc1bDkuNjI0IDQ4LjEyMyAxNC40MzgtNDYuNzQ4aDEwLjMxMmwxMy43NSA0Ni43NDggOS42MjQtNDguMTIzaDExLjY4N3pcIiBmaWxsPVwiI2ZmZlwiLz48L2c+PHBhdGggZD1cIm0xNzAgOTAuMDA0aDIxOS45OTN2MjE5Ljk5M2gtMjE5Ljk5M3pcIiBmaWxsPVwibm9uZVwiLz48L3N2Zz4nLFxyXG4gIFBPV0VSUE9JTlRfSUNPTiA9ICc8c3ZnIHZpZXdCb3g9XCItMC4xMjk3OTM3MjY5ODA3Nzc4NSAwIDMyLjE1MjM4OTMwMTE3Njc1NCAzMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI1MDBcIiBoZWlnaHQ9XCIyNDc4XCI+PHBhdGggZD1cIk0xOCAyQTE0LjA0MSAxNC4wNDEgMCAwIDAgNCAxNmwxNy43MzcgMy43Mzd6XCIgZmlsbD1cIiNlZDZjNDdcIi8+PHBhdGggZD1cIk0xOCAyYTE0LjA0MSAxNC4wNDEgMCAwIDEgMTQgMTRsLTcgNC43NThMMTggMTZ6XCIgZmlsbD1cIiNmZjhmNmJcIi8+PHBhdGggZD1cIk0xOCAzMGExNC4wNDEgMTQuMDQxIDAgMCAwIDE0LTE0SDRhMTQuMDQxIDE0LjA0MSAwIDAgMCAxNCAxNHpcIiBmaWxsPVwiI2QzNTIzMFwiLz48cGF0aCBkPVwiTTE2LjY2NiA3aC05LjM2YTEzLjkxNCAxMy45MTQgMCAwIDAgLjkzIDE5aDguNDNBMS4zMzcgMS4zMzcgMCAwIDAgMTggMjQuNjY3VjguMzMzQTEuMzM3IDEuMzM3IDAgMCAwIDE2LjY2NiA3elwiIG9wYWNpdHk9XCIuMVwiLz48cGF0aCBkPVwiTTE1LjY2NiA4SDYuNTRhMTMuOTA2IDEzLjkwNiAwIDAgMCAyLjg0NSAxOWg2LjI4MkExLjMzNyAxLjMzNyAwIDAgMCAxNyAyNS42NjdWOS4zMzNBMS4zMzcgMS4zMzcgMCAwIDAgMTUuNjY2IDh6XCIgb3BhY2l0eT1cIi4yXCIvPjxwYXRoIGQ9XCJNMTUuNjY2IDhINi41NGExMy44OSAxMy44OSAwIDAgMCAuNzY2IDE3aDguMzYxQTEuMzM3IDEuMzM3IDAgMCAwIDE3IDIzLjY2N1Y5LjMzM0ExLjMzNyAxLjMzNyAwIDAgMCAxNS42NjYgOHpcIiBvcGFjaXR5PVwiLjJcIi8+PHBhdGggZD1cIk0xNC42NjYgOEg2LjU0YTEzLjg5IDEzLjg5IDAgMCAwIC43NjYgMTdoNy4zNjFBMS4zMzcgMS4zMzcgMCAwIDAgMTYgMjMuNjY3VjkuMzMzQTEuMzM3IDEuMzM3IDAgMCAwIDE0LjY2NiA4elwiIG9wYWNpdHk9XCIuMlwiLz48cGF0aCBkPVwiTTEuMzMzIDhoMTMuMzM0QTEuMzMzIDEuMzMzIDAgMCAxIDE2IDkuMzMzdjEzLjMzNEExLjMzMyAxLjMzMyAwIDAgMSAxNC42NjcgMjRIMS4zMzNBMS4zMzMgMS4zMzMgMCAwIDEgMCAyMi42NjdWOS4zMzNBMS4zMzMgMS4zMzMgMCAwIDEgMS4zMzMgOHpcIiBmaWxsPVwiI2M0M2UxY1wiLz48cGF0aCBkPVwiTTcuOTk3IDExYTQuMTY4IDQuMTY4IDAgMCAxIDIuNzU1LjgwNSAyLjg3OCAyLjg3OCAwIDAgMSAuOTU2IDIuMzMxIDIuNzI2IDIuNzI2IDAgMCAxLS40NzMgMS41ODggMy4xNjQgMy4xNjQgMCAwIDEtMS4zNDQgMS4xODYgNC41NyA0LjU3IDAgMCAxLTIuMDIuNDI0aC0xLjkxVjIxSDRWMTF6TTUuOTYgMTUuNjgzaDEuNjg3YTIuMTk0IDIuMTk0IDAgMCAwIDEuNDkyLS40NDQgMS4xMDcgMS4xMDcgMCAwIDAgLjUwNC0xLjAyNnEwLTEuNjU5LTEuOTMzLTEuNjU5SDUuOTZ6XCIgZmlsbD1cIiNmOWY3ZjdcIi8+PHBhdGggZD1cIk0wIDBoMzJ2MzJIMHpcIiBmaWxsPVwibm9uZVwiLz48L3N2Zz4nLFxyXG4gIFBERl9JQ09OID0gJzxzdmcgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgMTQgMTZcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48ZyB0cmFuc2Zvcm09XCJtYXRyaXgoLjA0NTg5IDAgMCAuMDQ1ODkgLS42Njg3NyAtLjczMzc5KVwiPjxwb2x5Z29uIHBvaW50cz1cIjUxLjc5MSAzNTYuNjUgNTEuNzkxIDIzLjk5IDIwNC41IDIzLjk5IDI4Mi42NSAxMDIuMDcgMjgyLjY1IDM1Ni42NVwiIGZpbGw9XCIjZmZmXCIgc3Ryb2tlLXdpZHRoPVwiMjEyLjY1XCIvPjxwYXRoIGQ9XCJtMjAxLjE5IDMxLjk5IDczLjQ2IDczLjM5M3YyNDMuMjZoLTIxNC44NnYtMzE2LjY2aDE0MS40bTYuNjIzLTE2aC0xNjQuMDJ2MzQ4LjY2aDI0Ni44NXYtMjY1Ljl6XCIgc3Ryb2tlLXdpZHRoPVwiMjEuNzkxXCIvPjwvZz48ZyB0cmFuc2Zvcm09XCJtYXRyaXgoLjA0NTg5IDAgMCAuMDQ1ODkgLS42Njg3NyAtLjczMzc5KVwiPjxwb2x5Z29uIHBvaW50cz1cIjI4Mi42NSAzNTYuNjUgNTEuNzkxIDM1Ni42NSA1MS43OTEgMjMuOTkgMjA0LjUgMjMuOTkgMjA2LjMxIDI1LjggMjA2LjMxIDEwMC4zMyAyODAuOSAxMDAuMzMgMjgyLjY1IDEwMi4wN1wiIGZpbGw9XCIjZmZmXCIgc3Ryb2tlLXdpZHRoPVwiMjEyLjY1XCIvPjxwYXRoIGQ9XCJtMTk4LjMxIDMxLjk5djc2LjMzN2g3Ni4zMzd2MjQwLjMyaC0yMTQuODZ2LTMxNi42NmgxMzguNTJtOS41LTE2aC0xNjQuMDJ2MzQ4LjY2aDI0Ni44NXYtMjY1LjlsLTYuNDMtNi40MjRoLTY5LjkwN3YtNjkuODQyelwiIHN0cm9rZS13aWR0aD1cIjIxLjc5MVwiLz48L2c+PGcgdHJhbnNmb3JtPVwibWF0cml4KC4wNDU4OSAwIDAgLjA0NTg5IC0uNjY4NzcgLS43MzM3OSlcIiBzdHJva2Utd2lkdGg9XCIyMS43OTFcIj48cG9seWdvbiBwb2ludHM9XCIyNTguMzEgODcuNzUgMjE5LjY0IDg3Ljc1IDIxOS42NCA0OC42NjcgMjU4LjMxIDg2LjM4XCIvPlx0XHQ8cGF0aCBkPVwibTIyNy42NCA2Ny42NDYgMTIuNDEgMTIuMTA0aC0xMi40MXYtMTIuMTA0bS01LjAwMi0yNy4yMjloLTEwLjk5OHY1NS4zMzNoNTQuNjY2di0xMi43NDJ6XCIvPjwvZz48ZyB0cmFuc2Zvcm09XCJtYXRyaXgoLjA0NTg5IDAgMCAuMDQ1ODkgLS42Njg3NyAtLjczMzc5KVwiIGZpbGw9XCIjZWQxYzI0XCIgc3Ryb2tlLXdpZHRoPVwiMjEyLjY1XCI+PHBvbHlnb24gcG9pbnRzPVwiMzExLjg5IDI4NC40OSAyMi41NDQgMjg0LjQ5IDIyLjU0NCAxNjcuNjggMzcuMjkxIDE1Mi45NCAzNy4yOTEgMTcxLjQ5IDI5Ny4xNSAxNzEuNDkgMjk3LjE1IDE1Mi45NCAzMTEuODkgMTY3LjY4XCIvPjxwYXRoIGQ9XCJtMzAzLjY1IDE2OC42MyAxLjc0NyAxLjc0N3YxMDcuNjJoLTI3Ni4zNXYtMTA3LjYybDEuNzQ3LTEuNzQ3djkuMzYyaDI3Mi44NXYtOS4zNjJtLTEyLjk5OS0zMS4zODV2MjcuNzQ3aC0yNDYuODZ2LTI3Ljc0N2wtMjcuNzQ3IDI3Ljc0N3YxMjZoMzAyLjM1di0xMjZ6XCIvPjwvZz48cmVjdCB4PVwiMS43MjE5XCIgeT1cIjcuOTU0NFwiIHdpZHRoPVwiMTAuNjg0XCIgaGVpZ2h0PVwiNC4wMzA3XCIgZmlsbD1cIm5vbmVcIi8+PGcgdHJhbnNmb3JtPVwibWF0cml4KC4wNDU4OSAwIDAgLjA0NTg5IDEuNzIxOSAxMS43MzMpXCIgZmlsbD1cIiNmZmZcIiBzdHJva2Utd2lkdGg9XCIyMS43OTFcIiBhcmlhLWxhYmVsPVwiUERGXCI+PHBhdGggZD1cIm05LjIxNiAwdi04My4yaDMwLjQ2NHE2Ljc4NCAwIDEyLjkyOCAxLjQwOCA2LjE0NCAxLjI4IDEwLjc1MiA0LjYwOCA0LjYwOCAzLjIgNy4yOTYgOC41NzYgMi44MTYgNS4yNDggMi44MTYgMTMuMDU2IDAgNy42OC0yLjgxNiAxMy4xODQtMi42ODggNS41MDQtNy4yOTYgOS4wODgtNC42MDggMy40NTYtMTAuNjI0IDUuMjQ4LTYuMDE2IDEuNjY0LTEyLjU0NCAxLjY2NGgtOC45NnYyNi4zNjh6bTIyLjAxNi00My43NzZoNy45MzZxNi41MjggMCA5LjYtMy4wNzIgMy4yLTMuMDcyIDMuMi04LjcwNHQtMy40NTYtNy45MzYtOS44NTYtMi4zMDRoLTcuNDI0elwiLz48cGF0aCBkPVwibTg3LjA0IDB2LTgzLjJoMjQuNTc2cTkuNDcyIDAgMTcuMjggMi4zMDQgNy45MzYgMi4zMDQgMTMuNTY4IDcuMjk2dDguNzA0IDEyLjhxMy4yIDcuODA4IDMuMiAxOC44MTZ0LTMuMDcyIDE4Ljk0NC04LjcwNCAxMy4wNTZxLTUuNTA0IDUuMTItMTMuMTg0IDcuNTUyLTcuNTUyIDIuNDMyLTE2LjUxMiAyLjQzMnptMjIuMDE2LTE3LjY2NGgxLjI4cTQuNDggMCA4LjQ0OC0xLjAyNCAzLjk2OC0xLjE1MiA2Ljc4NC0zLjg0IDIuOTQ0LTIuNjg4IDQuNjA4LTcuNDI0dDEuNjY0LTEyLjAzMi0xLjY2NC0xMS45MDQtNC42MDgtNy4xNjhxLTIuODE2LTIuNTYtNi43ODQtMy40NTYtMy45NjgtMS4wMjQtOC40NDgtMS4wMjRoLTEuMjh6XCIvPjxwYXRoIGQ9XCJtMTY5LjIyIDB2LTgzLjJoNTQuMjcydjE4LjQzMmgtMzIuMjU2djE1Ljg3MmgyNy42NDh2MTguNDMyaC0yNy42NDh2MzAuNDY0elwiLz48L2c+PC9zdmc+JztcclxuXHJcbmNvbnN0IFRIRU1FUzogVGhlbWVbXSA9IFtcclxuICB7IG5hbWU6ICdkZWZhdWx0JywgcHJpbWFyeTogJ3B1cnBsZScsIGNvbG9yOiAncHVycGxlJywgYWNjZW50OiAnYW1iZXInLCB0aXRsZTogJ1B1cnBsZVRoZW1lJyB9LFxyXG4gIHsgbmFtZTogJ2luZGlnbycsIHByaW1hcnk6ICdpbmRpZ28nLCBjb2xvcjogJyMzZjUxYjUnLCBhY2NlbnQ6ICdwaW5rJywgdGl0bGU6ICdJbmRpZ29UaGVtZScgfSxcclxuICB7IG5hbWU6ICdncmVlbicsIHByaW1hcnk6ICdncmVlbicsIGNvbG9yOiAnIzRDQUY1MCcsIGFjY2VudDogJ2FtYmVyJywgdGl0bGU6ICdHcmVlblRoZW1lJyB9LFxyXG4gIHsgbmFtZTogJ2RhcmsnLCBwcmltYXJ5OiAnZGVlcFB1cnBsZScsIGNvbG9yOiAnIzQwNDA0MScsIGFjY2VudDogJ2FtYmVyJywgZGFyazogdHJ1ZSwgdGl0bGU6ICdEZWVwVGhlbWUnIH0sXHJcbiAgeyBuYW1lOiAnYnJvd24nLCBwcmltYXJ5OiAnYnJvd24nLCBjb2xvcjogJyM3OTU1NDgnLCBhY2NlbnQ6ICdncmV5JywgdGl0bGU6ICdHcmF5VGhlbWUnIH1dO1xyXG5cclxuY29uc3QgU1VQUE9SVEVEX0xBTkdVQUdFUyA9IFsnZW4nLCAnaGUnLCAnZGUnLCAnYXInLCAncnUnXSxcclxuICBSVExfTEFOR1VBTEdFUyA9IFsnaGUnLCAnYXInXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBTZXNzaW9uUHJvdmlkZXJGYWN0b3J5KHByb3ZpZGVyOiBTZXNzaW9uU2VydmljZSkge1xyXG4gIHJldHVybiAoKSA9PiBwcm92aWRlci5wcmVwYXJlKCk7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU2VydmljZSB7XHJcbiAgcHJlcGFyZSgpIHtcclxuICAgICgnc2VydmljZVdvcmtlcicgaW4gbmF2aWdhdG9yKSAmJiB0aGlzLl9sb2FkU2VydmljZVdvcmtlcigpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5tYXBzID8gdGhpcy5fbG9hZEdvb2dsZU1hcHMoKSA6IFByb21pc2UucmVzb2x2ZSgpO1xyXG4gIH1cclxuICByZWFkb25seSBUaGVtZXM6IFRoZW1lW10gPSB0aGlzLl9jb25maWcudGhlbWVzIHx8IFRIRU1FUztcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEJJWkRPQ19DT05GSUcpIHByaXZhdGUgX2NvbmZpZzogQml6RG9jQ29uZmlnLFxyXG4gICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgX2Nvb2tpZXM6IENvb2tpZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9odWI6IEh1YlNlcnZpY2UsXHJcbiAgICBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcclxuICAgIHNhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7XHJcbiAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ2V4Y2VsJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEVYQ0VMX0lDT04pKTtcclxuICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgnd29yZCcsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChXT1JEX0lDT04pKTtcclxuICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgncG93ZXJwb2ludCcsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChQT1dFUlBPSU5UX0lDT04pKTtcclxuICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgncGRmJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFBERl9JQ09OKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhlbWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxUaGVtZT4oKTtcclxuICByZWFkb25seSBsb2FkZWQgPSB0aGlzLl9sb2FkZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcmVhZG9ubHkgdGhlbWVDaGFuZ2UgPSB0aGlzLl90aGVtZUNoYW5nZS5hc09ic2VydmFibGUoKTtcclxuICBwcml2YXRlIF9wcm9maWxlOiBQcm9maWxlO1xyXG4gIHByaXZhdGUgX2xhbmc6IHN0cmluZztcclxuICBwcml2YXRlIF9maXJlYmFzZSA9IG5ldyBGaXJlYmFzZVNlcnZpY2UodGhpcy5fY29uZmlnID8gdGhpcy5fY29uZmlnLmZpcmViYXNlIDogdW5kZWZpbmVkLCB0aGlzKTtcclxuICBnZXQgcHJvZmlsZSgpOiBQcm9maWxlIHsgcmV0dXJuIHRoaXMuX3Byb2ZpbGU7IH1cclxuICBnZXQgZ2VuZGVyKCk6IEdlbmRlciB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLnByb2ZpbGUuYnlJZCA/IHRoaXMuX3Byb2ZpbGUuYnlHZW5kZXIgOiB0aGlzLl9wcm9maWxlLmdlbmRlcjsgfVxyXG4gIHByaXZhdGUgX2FjY2VudHBhbGV0dGU6IHN0cmluZ1tdO1xyXG4gIGdldCBhY2NlbnRQYWxldHRlKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLl9hY2NlbnRwYWxldHRlO1xyXG4gIH1cclxuICBwcml2YXRlIF9jb25zdHJ1Y3RwYWxldHRlKGNvbG9yOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBwYWxldHRlID0gTUFURVJJQUxfUEFMRVRURVNbY29sb3JdO1xyXG4gICAgcmV0dXJuIFtwYWxldHRlWycxMDAnXSwgcGFsZXR0ZVsnMzAwJ10sIHBhbGV0dGVbJzUwMCddLCBwYWxldHRlWyc3MDAnXSwgcGFsZXR0ZVsnOTAwJ10sXHJcbiAgICBwYWxldHRlWycyMDAnXSwgcGFsZXR0ZVsnNDAwJ10sIHBhbGV0dGVbJzYwMCddLCBwYWxldHRlWyc4MDAnXSwgcGFsZXR0ZVsnaGV4J10sXHJcbiAgICBwYWxldHRlWydhMTAwJ10sIHBhbGV0dGVbJ2E0MDAnXSwgcGFsZXR0ZVsnYTIwMCddLCBwYWxldHRlWydhNzAwJ11dO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJpbWFyeXBhbGV0dGU6IHN0cmluZ1tdO1xyXG4gIGdldCBwcmltZXJ5UGFsZXR0ZSgpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJpbWFyeXBhbGV0dGU7XHJcbiAgfVxyXG4gIGdldEFjY2VudChtb2RlOiBNYXRlcmlhbE1vZGUgPSA1MDApOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIE1BVEVSSUFMX1BBTEVUVEVTW3RoaXMudGhlbWUuYWNjZW50XVttb2RlXTtcclxuICB9XHJcbiAgZ2V0UHJpbWVyeShtb2RlOiBNYXRlcmlhbE1vZGUgPSA1MDApOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIE1BVEVSSUFMX1BBTEVUVEVTW3RoaXMudGhlbWUucHJpbWFyeV1bbW9kZV07XHJcbiAgfVxyXG4gIHByaXZhdGUgX3RoZW1lOiBUaGVtZTtcclxuICBnZXQgdGhlbWUoKTogVGhlbWUge1xyXG4gICAgaWYgKCF0aGlzLl90aGVtZSkge1xyXG4gICAgICBjb25zdCBuYW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lJyk7XHJcbiAgICAgIHRoaXMuX3RoZW1lID0gbmFtZSA/IHRoaXMuVGhlbWVzLmZpbmQodCA9PiB0Lm5hbWUgPT09IG5hbWUpISA6XHJcbiAgICAgICAgdGhpcy5UaGVtZXNbMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fdGhlbWU7XHJcbiAgfVxyXG4gIHNldCB0aGVtZSh2YWx1ZTogVGhlbWUpIHtcclxuICAgIHRoaXMuX3RoZW1lID0gdmFsdWU7XHJcbiAgICB0aGlzLl9jaGFuZ2VUaGVtZSh2YWx1ZSkudGhlbigoKSA9PlxyXG4gICAgICB0aGlzLl90aGVtZUNoYW5nZS5uZXh0KHZhbHVlKSk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGhlbWUnLCB2YWx1ZS5uYW1lKTtcclxuICB9XHJcbiAgZ2V0IG9rKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5wcm9maWxlICE9PSB1bmRlZmluZWQ7IH1cclxuICAvKiogbGFuZ3VhZ2UgZGlyZWN0aW9uICovXHJcbiAgZ2V0IGRpcmVjdGlvbigpOiBEaXJlY3Rpb24ge1xyXG4gICAgcmV0dXJuIFJUTF9MQU5HVUFMR0VTLmluZGV4T2YodGhpcy5sYW5ndWFnZSkgPiAtMSA/ICdydGwnIDogJ2x0cic7XHJcbiAgfVxyXG4gIGdldCBpbnZlcnNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlyZWN0aW9uID09PSAncnRsJztcclxuICB9XHJcbiAgZ2V0IHVzZXJJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Byb2ZpbGUuYnlJZCB8fCB0aGlzLnByb2ZpbGUudXNlcklkO1xyXG4gIH1cclxuICBnZXQgbG9jYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2Uuc3BsaXQoJy0nKVswXTtcclxuICB9XHJcbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuX2xhbmcpXHJcbiAgICAgIHRoaXMuX2xhbmcgPSB0aGlzLl9jb29raWVzLmdldCgnbGFuZycpIHx8IHRoaXMuX2dldEJyb3dzZXJMYW5nKCkgfHwgU1VQUE9SVEVEX0xBTkdVQUdFU1swXTtcclxuICAgIHJldHVybiB0aGlzLl9sYW5nO1xyXG4gIH1cclxuICBnZXQgYXJpYSgpIHsgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhcmlhJykgPT09ICcxJyB9XHJcbiAgc2V0IGFyaWEodmFsOiBib29sZWFuKSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcmlhJywgdmFsID8gJzEnIDogJzAnKSB9XHJcbiAgc2V0IGxhbmd1YWdlKGNvZGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fY29va2llcy5zZXQoJ2xhbmcnLCBjb2RlLCAzNjUsICcvJyk7XHJcbiAgfVxyXG4gIGdldCBsYW5ndWFnZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5fY29uZmlnLmxhbmd1YWdlcyB8fCBTVVBQT1JURURfTEFOR1VBR0VTOyB9XHJcbiAgZ2V0IGlzSW1wZXJzb25hdGluZygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMucHJvZmlsZS5ieUlkICE9PSB1bmRlZmluZWQ7IH1cclxuICAvKiogc3lzdGVtIGFkbWluICovXHJcbiAgZ2V0IGlzU3lzdGVtKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZS5zeXN0ZW07XHJcbiAgfVxyXG4gIC8qKiBvbmxpbmUgb3Igc2V0IGluIHByb2ZpbGUgKi9cclxuICBnZXQgc3RhdGUoKTogQXZhaWxhYmlsaXR5U3RhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZS5hdmFpbGFibGUgfHwgJ09ubGluZSc7XHJcbiAgfVxyXG4gIHNldCBzdGF0ZSh2YWx1ZTogQXZhaWxhYmlsaXR5U3RhdGUpIHtcclxuICAgIHRoaXMucHJvZmlsZS5hdmFpbGFibGUgPSB2YWx1ZSA9PT0gJ09ubGluZScgPyBudWxsIDogdmFsdWU7XHJcbiAgICB0aGlzLl9odHRwLnB1dChgL2FwaS9hY2NvdW50L2F2YWlsYWJsZT9tb2RlPSR7dGhpcy5wcm9maWxlLmF2YWlsYWJsZSB8fCAnJ31gLCB7fSkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG4gIGlzSW5Sb2xlKHJvbGU6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0KCcvYXBpL2FjY291bnQvaXNJblJvbGUnLCB7XHJcbiAgICAgIHBhcmFtczogeyByb2xlIH0sXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnIGFzIGNvbnN0XHJcbiAgICB9KS5waXBlKG1hcChyID0+IHIgPT09ICd0cnVlJykpO1xyXG4gIH1cclxuICAvKiogKi9cclxuICBnZXQgaXNPdXRPZk9mZmljZSgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnByb2ZpbGUub3B0aW9ucy5vdXRPZk9mZmljZTtcclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYWN0aXZlKSB7XHJcbiAgICAgIGNvbnN0IHRvZGF5ID0gZGF5anMoKS5zdGFydE9mKCdkYXknKTtcclxuICAgICAgcmV0dXJuICghb3B0aW9ucy5mcm9tIHx8IGRheWpzKG9wdGlvbnMuZnJvbSkuc3RhcnRPZignZGF5JykgPD0gdG9kYXkpXHJcbiAgICAgICAgJiYgKCFvcHRpb25zLnRvIHx8IGRheWpzKG9wdGlvbnMudG8pLnN0YXJ0T2YoJ2RheScpID49IHRvZGF5KTtcclxuICAgIH1cclxuICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICAvKiogdXBkYXRlIHByb2ZpbGUgICovXHJcbiAgdXBkYXRlKHByb2ZpbGU6IE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KCcvYXBpL2FjY291bnQvdXBkYXRlJywgcHJvZmlsZSkucGlwZSh0YXAoKCkgPT5cclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9wcm9maWxlLm9wdGlvbnMsIHByb2ZpbGUpKSk7XHJcbiAgfVxyXG4gIC8qKiBtYXJrIGd1aWRlIGFzIHZpc2l0ZWQgaW4gcHJvZmlsZSAqL1xyXG4gIGd1aWRlKG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvYWNjb3VudC9ndWlkZS8ke2VuY29kZVVSSUNvbXBvbmVudChuYW1lKX1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ3VpZGUgPSB0aGlzLl9wcm9maWxlLmd1aWRlcyEuZmluZChnID0+IGcubmFtZSA9PT0gbmFtZSk7XHJcbiAgICAgICAgaWYgKGd1aWRlKSBndWlkZS5tb2RlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX3Byb2ZpbGUub3B0aW9ucy5ndWlkZXMhLnB1c2gobmFtZSk7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcbiAgLyoqIGdldCBwcm9maWxlICovXHJcbiAgcmVmcmVzaCgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbXBsZXRlID0gKHByb2ZpbGU6IFByb2ZpbGUpID0+IHtcclxuICAgICAgICB0aGlzLl9wcm9maWxlID0gcHJvZmlsZTtcclxuICAgICAgICBvYnNlcnZlLm5leHQoKTtcclxuICAgICAgICB0aGlzLl9sb2FkZWQubmV4dCgpO1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLl9odHRwLmdldDxQcm9maWxlPignL2FwaS9hY2NvdW50L3JlZnJlc2gnKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IHIgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLl9wcm9maWxlKSAvLyAxc3QgdGltZVxyXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VUaGVtZSh0aGlzLnRoZW1lKS5cclxuICAgICAgICAgICAgICB0aGVuKCgpID0+IGNvbXBsZXRlKHIpKTtcclxuICAgICAgICAgIGVsc2UgY29tcGxldGUocik7XHJcbiAgICAgICAgICB0aGlzLl9odWIuc3RhdGUgIT09IEh1YkNvbm5lY3Rpb25TdGF0ZS5Db25uZWN0ZWQgJiYgdGhpcy5faHViLnN0YXJ0KCk7XHJcbiAgICAgICAgICB0aGlzLl9maXJlYmFzZS5zdGF0ZSAhPT0gRmlyZWJhc2VTdGF0ZS5BY3RpdmF0ZWQgJiZcclxuICAgICAgICAgICAgdGhpcy5fZmlyZWJhc2UuYWN0aXZhdGUoKTtcclxuICAgICAgICB9LCBlcnJvcjogb2JzZXJ2ZS5lcnJvci5iaW5kKHRoaXMpXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXRQcm9maWxlRXh0cmE8VCA9IGFueT4obmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8VD4oYC9hcGkvYWNjb3VudC9leHRyYS8ke25hbWV9YCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXRQcm9maWxlRXh0cmE8VCA9IGFueT4obmFtZTogc3RyaW5nLCBwcm9maWxlOiBUKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KGAvYXBpL2FjY291bnQvZXh0cmEvJHtuYW1lfWAsIHByb2ZpbGUpO1xyXG4gIH1cclxuICBwdWJsaWMgdW5yZWdpc3RlckRldmljZSh0eXBlOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdCgnL2FwaS9hY2NvdW50L3VucmVnaXN0ZXJEZXZpY2UnLCB7IHR5cGUsIHRva2VuIH0pO1xyXG4gIH1cclxuICBwdWJsaWMgcmVnaXN0ZXJEZXZpY2UodHlwZTogc3RyaW5nLCB0b2tlbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3QoJy9hcGkvYWNjb3VudC9yZWdpc3RlckRldmljZScsIHsgdHlwZSwgdG9rZW4gfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBzZWFyY2hcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBsaXN0SW1wZXJzb25hdGUoc2VhcmNoPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPiB7XHJcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIGlmIChzZWFyY2gpIHBhcmFtc1snc2VhcmNoJ10gPSBzZWFyY2g7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8VXNlckluZm9bXT4oJy9hcGkvYWNjb3VudC9ncmFudGVkJywge1xyXG4gICAgICBwYXJhbXNcclxuICAgIH0pO1xyXG4gIH1cclxuICBwdWJsaWMgaW1wZXJzb25hdGUodXNlcklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVzZXJJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFVzZXJJbmZvPignL2FwaS9hY2NvdW50L2ltcGVyc29uYXRlJywge1xyXG4gICAgICB1c2VySWRcclxuICAgIH0pO1xyXG4gIH1cclxuICBwdWJsaWMgaW5ib3hUb3VjaCgpIHtcclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9odHRwLnB1dDxXYXRlcm1hcmtJbmZvPignL2FwaS9hY2NvdW50L2luYm94dmlldycsIHt9LCB7IGhlYWRlcnM6IHsgJ25vLXByb2dyZXNzJzogJ3RydWUnIH0gfSkucGlwZShcclxuICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvZmlsZS5pbmJveENvdW50ID0gMDtcclxuICAgICAgICB0aGlzLnByb2ZpbGUub3B0aW9ucy5pbmJveFZpZXcgPSBlLnRpbWU7XHJcbiAgICAgIH0pKSk7XHJcbiAgfVxyXG4gIHB1YmxpYyBub3RpZmljYXRpb25zVG91Y2goKSB7XHJcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5faHR0cC5wdXQ8V2F0ZXJtYXJrSW5mbz4oJy9hcGkvYWNjb3VudC9ub3RpZmljYXRpb25zVmlldycsIHt9LCB7IGhlYWRlcnM6IHsgJ25vLXByb2dyZXNzJzogJ3RydWUnIH0gfSkucGlwZSh0YXAoZSA9PiB7XHJcbiAgICAgIHRoaXMucHJvZmlsZS5ub3RpZmljYXRpb25zQ291bnQgPSAwO1xyXG4gICAgICB0aGlzLnByb2ZpbGUub3B0aW9ucy5ub3RpZmljYXRpb25zVmlldyA9IGUudGltZTtcclxuICAgIH0pKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2dldEJyb3dzZXJMYW5nKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgbGV0IGxhbmc6IHN0cmluZyB8IHVuZGVmaW5lZCA9IG5hdmlnYXRvci5sYW5ndWFnZTtcclxuICAgIGlmICh0aGlzLmxhbmd1YWdlcy5pbmRleE9mKGxhbmcpID4gLTEpXHJcbiAgICAgIHJldHVybiBsYW5nO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXZpZ2F0b3IubGFuZ3VhZ2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxhbmcgPSBuYXZpZ2F0b3IubGFuZ3VhZ2VzW2ldO1xyXG4gICAgICBpZiAodGhpcy5sYW5ndWFnZXMuaW5kZXhPZihsYW5nKSA+IC0xKVxyXG4gICAgICAgIHJldHVybiBsYW5nO1xyXG4gICAgICBpZiAobGFuZy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgbGFuZyA9IGxhbmcuc3Vic3RyaW5nKDAsIDIpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMubGFuZ3VhZ2VzLmluZGV4T2YobGFuZykgPiAtMSlcclxuICAgICAgICAgIHJldHVybiBsYW5nO1xyXG4gICAgICAgIGxhbmcgPSB0aGlzLmxhbmd1YWdlcy5maW5kKGwgPT4gbC5zdGFydHNXaXRoKGxhbmchKSk7XHJcbiAgICAgICAgaWYgKGxhbmcpXHJcbiAgICAgICAgICByZXR1cm4gbGFuZztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB0aGVtZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2NoYW5nZVRoZW1lKHRoZW1lOiBUaGVtZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHRoaXMuX2FjY2VudHBhbGV0dGUgPSB0aGlzLl9jb25zdHJ1Y3RwYWxldHRlKHRoaXMudGhlbWUuYWNjZW50KTtcclxuICAgICAgdGhpcy5fcHJpbWFyeXBhbGV0dGUgPSB0aGlzLl9jb25zdHJ1Y3RwYWxldHRlKHRoaXMudGhlbWUucHJpbWFyeSk7XHJcbiAgICAgIGxldCBzdHlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaXpkb2MtdGhlbWUnKSBhcyBIVE1MTGlua0VsZW1lbnQ7XHJcbiAgICAgIC8vIHJlbW92ZVxyXG4gICAgICBpZiAoc3R5bGUpXHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChzdHlsZSk7XHJcbiAgICAgIGlmICh0aGVtZS5uYW1lID09PSB0aGlzLlRoZW1lc1swXS5uYW1lKVxyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XHJcbiAgICAgICAgc3R5bGUuaWQgPSAnYml6ZG9jLXRoZW1lJztcclxuICAgICAgICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcclxuICAgICAgICBzdHlsZS5yZWwgPSAnc3R5bGVzaGVldCc7XHJcbiAgICAgICAgc3R5bGUuaHJlZiA9IGAvYXNzZXRzL3RoZW1lcy8ke3RoZW1lLm5hbWV9Lm1pbi5jc3NgO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHN0eWxlKTtcclxuICAgICAgICBzdHlsZS5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9sb2FkU2VydmljZVdvcmtlcigpIHtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL2pzL2FwcC1zdy5qcycpLnRoZW4oZnVuY3Rpb24gKCkge1xyXG4gICAgICB9LCBudWxsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9sb2FkR29vZ2xlTWFwcygpIHtcclxuICAgIGNvbnN0IGFwaUtleSA9ICh0aGlzLl9jb25maWcubWFwcyBhcyBHb29nbGVNYXBzU2V0dGluZ3MpLmFwaUtleTtcclxuICAgIGNvbnN0IGxvYWRlciA9IG5ldyBMb2FkZXIoe1xyXG4gICAgICBhcGlLZXksXHJcbiAgICAgIGxpYnJhcmllczogWydwbGFjZXMnXSxcclxuICAgICAgbGFuZ3VhZ2U6IHRoaXMubGFuZ3VhZ2UsXHJcbiAgICAgIHZlcnNpb246ICd3ZWVrbHknLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBtYXBzID0gbG9hZGVyLmltcG9ydExpYnJhcnkoJ21hcHMnKTtcclxuICAgIHJldHVybiBtYXBzO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgV2F0ZXJtYXJrSW5mbyB7XHJcbiAgdGltZTogRGF0ZTtcclxufVxyXG4iXX0=
|
@@ -1,152 +0,0 @@
|
|
1
|
-
import { ComponentPortal } from "@angular/cdk/portal";
|
2
|
-
import { Injector, InjectionToken } from "@angular/core";
|
3
|
-
import { BehaviorSubject, Subject, filter, map } from "rxjs";
|
4
|
-
export const QUERY_CHAR = ':', PATH_CHAR = ';', ARG_CHAR = '&', PANE_CHAR = '~';
|
5
|
-
export const PANES_DATA = new InjectionToken('panes');
|
6
|
-
export class NavigationBase {
|
7
|
-
preventDefault() {
|
8
|
-
this._preventDefault = true;
|
9
|
-
}
|
10
|
-
}
|
11
|
-
export class CollapseNavigation extends NavigationBase {
|
12
|
-
}
|
13
|
-
export class BackNavigation extends NavigationBase {
|
14
|
-
}
|
15
|
-
export class NavigationPaneBase extends NavigationBase {
|
16
|
-
constructor(_pane) {
|
17
|
-
super();
|
18
|
-
this._pane = _pane;
|
19
|
-
}
|
20
|
-
get pane() {
|
21
|
-
return this._pane;
|
22
|
-
}
|
23
|
-
}
|
24
|
-
export class NavigationStart extends NavigationPaneBase {
|
25
|
-
}
|
26
|
-
/** pane fucus change */
|
27
|
-
export class NavigationFocus extends NavigationPaneBase {
|
28
|
-
}
|
29
|
-
export class NavigationEnd extends NavigationPaneBase {
|
30
|
-
}
|
31
|
-
export class NavigationMode extends NavigationPaneBase {
|
32
|
-
constructor(mode, pane) {
|
33
|
-
super(pane);
|
34
|
-
this.mode = mode;
|
35
|
-
}
|
36
|
-
}
|
37
|
-
export class NavigationExpand extends NavigationPaneBase {
|
38
|
-
constructor(expended, pane) {
|
39
|
-
super(pane);
|
40
|
-
this.expended = expended;
|
41
|
-
}
|
42
|
-
}
|
43
|
-
export class NavigationResize extends NavigationPaneBase {
|
44
|
-
constructor(dimentions, pane) {
|
45
|
-
super(pane);
|
46
|
-
this.dimentions = dimentions;
|
47
|
-
}
|
48
|
-
}
|
49
|
-
export class NavigationClose extends NavigationPaneBase {
|
50
|
-
}
|
51
|
-
export class ParamNavigation extends NavigationPaneBase {
|
52
|
-
constructor(params, pane) {
|
53
|
-
super(pane);
|
54
|
-
this.params = params;
|
55
|
-
}
|
56
|
-
}
|
57
|
-
export class QueryParamNavigation extends NavigationPaneBase {
|
58
|
-
constructor(queryParams, pane) {
|
59
|
-
super(pane);
|
60
|
-
this.queryParams = queryParams;
|
61
|
-
}
|
62
|
-
}
|
63
|
-
/** */
|
64
|
-
export class PaneRef {
|
65
|
-
get expandable() { return this._expandable; }
|
66
|
-
get injector() { return this._injector; }
|
67
|
-
get expanded() { return this._expanded; }
|
68
|
-
get fullPath() { return (this._path || '') + (this._queryString ? (QUERY_CHAR + this._queryString) : ''); }
|
69
|
-
get instance() { return this._instance; }
|
70
|
-
get data() { return this._data$.value; }
|
71
|
-
get params() { return this._params$.value; }
|
72
|
-
get queryString() { return this._queryString; }
|
73
|
-
get queryParams() { return this._queryParams$.value; }
|
74
|
-
paramsChange() { return this._params$.asObservable(); }
|
75
|
-
queryParamsChange() { return this._queryParams$.asObservable(); }
|
76
|
-
dataChange() { return this._data$.asObservable(); }
|
77
|
-
resized() { return this._events$.pipe(filter(e => e instanceof NavigationResize)); }
|
78
|
-
closeing() { return this._events$.pipe(filter(e => e instanceof NavigationClose)); }
|
79
|
-
closed() { return this._events$.pipe(filter(e => e instanceof NavigationClose), map(() => this._value)); }
|
80
|
-
expandedChange() { return this._events$.pipe(filter(e => e instanceof NavigationExpand), map(() => this.expanded)); }
|
81
|
-
get path() { return this._path; }
|
82
|
-
;
|
83
|
-
get mode() { return this._mode; }
|
84
|
-
;
|
85
|
-
get parent() { return this._options.parent; }
|
86
|
-
;
|
87
|
-
get stretchable() { return this._stretchable === true; }
|
88
|
-
;
|
89
|
-
set stretchable(val) { this._stretchable = val; }
|
90
|
-
get dialog() { return this._options.dialog; }
|
91
|
-
;
|
92
|
-
get dismissable() { return this._options.dismissable; }
|
93
|
-
;
|
94
|
-
get route() { return this._options.route; }
|
95
|
-
;
|
96
|
-
constructor(component, injector, _options) {
|
97
|
-
this._options = _options;
|
98
|
-
this._command$ = new Subject();
|
99
|
-
/** */
|
100
|
-
this._data$ = new BehaviorSubject({});
|
101
|
-
this._params$ = new BehaviorSubject({});
|
102
|
-
this._queryParams$ = new BehaviorSubject({});
|
103
|
-
this._events$ = new Subject();
|
104
|
-
const { stretchable, mode, data, params, queryParams, path, queryString, title, group, icon, help, guide, animation, expanded, expandable } = _options;
|
105
|
-
this._path = path;
|
106
|
-
this._mode = mode;
|
107
|
-
this._stretchable = stretchable;
|
108
|
-
this._expanded = expanded;
|
109
|
-
this._queryString = queryString;
|
110
|
-
this._expandable = expandable !== false;
|
111
|
-
this._injector = Injector.create({
|
112
|
-
providers: [
|
113
|
-
{ provide: PaneRef, useValue: this }
|
114
|
-
], parent: injector
|
115
|
-
});
|
116
|
-
this._portal = new ComponentPortal(component, null, this._injector);
|
117
|
-
this.title = title;
|
118
|
-
this.group = group;
|
119
|
-
this.guide = guide;
|
120
|
-
this.help = help;
|
121
|
-
this.icon = icon;
|
122
|
-
this.animation = animation;
|
123
|
-
data && this._data$.next(data);
|
124
|
-
params && this._params$.next(params);
|
125
|
-
queryParams && this._queryParams$.next(queryParams);
|
126
|
-
}
|
127
|
-
decendentOf(pane) {
|
128
|
-
return this.parent === pane; //||
|
129
|
-
// (this.path && pane.path && this.path.startsWith(pane.path));
|
130
|
-
}
|
131
|
-
recycle() {
|
132
|
-
this._command$.next('recycle');
|
133
|
-
}
|
134
|
-
focus() {
|
135
|
-
this._command$.next('focus');
|
136
|
-
}
|
137
|
-
close(value) {
|
138
|
-
this._value = value;
|
139
|
-
this._command$.next('close');
|
140
|
-
}
|
141
|
-
expand() {
|
142
|
-
this._command$.next('expand');
|
143
|
-
}
|
144
|
-
_destroy() {
|
145
|
-
this._command$.complete();
|
146
|
-
this._data$.complete();
|
147
|
-
this._params$.complete();
|
148
|
-
this._queryParams$.complete();
|
149
|
-
this._events$.complete();
|
150
|
-
}
|
151
|
-
}
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZS1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS9zbG90cy9wYW5lLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFRLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl6RSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLFNBQVMsR0FBRyxHQUFHLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxTQUFTLEdBQUcsR0FBRyxDQUFDO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBYyxPQUFPLENBQUMsQ0FBQztBQUVuRSxNQUFNLE9BQWdCLGNBQWM7SUFFM0IsY0FBYztRQUNuQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUFDRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsY0FBYztDQUNyRDtBQUNELE1BQU0sT0FBTyxjQUFlLFNBQVEsY0FBYztDQUNqRDtBQUNELE1BQU0sT0FBZ0Isa0JBQTRCLFNBQVEsY0FBYztJQUN0RSxZQUFvQixLQUFpQjtRQUNuQyxLQUFLLEVBQUUsQ0FBQztRQURVLFVBQUssR0FBTCxLQUFLLENBQVk7SUFFckMsQ0FBQztJQUNELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFDRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxrQkFBa0I7Q0FDdEQ7QUFDRCx3QkFBd0I7QUFDeEIsTUFBTSxPQUFPLGVBQWdCLFNBQVEsa0JBQWtCO0NBQ3REO0FBQ0Qs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L0IsQ0FBQztJQUNELE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xyXG5pbXBvcnQgeyBUeXBlLCBJbmplY3RvciwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIGZpbHRlciwgT2JzZXJ2YWJsZSwgbWFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgUGFyYW1NYXAsIFBhbmVSb3V0ZSwgT3BlblBvbGljeSB9IGZyb20gXCIuLi9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IERpbWVudGlvbnMgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgUVVFUllfQ0hBUiA9ICc6JywgUEFUSF9DSEFSID0gJzsnLCBBUkdfQ0hBUiA9ICcmJywgUEFORV9DSEFSID0gJ34nO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBBTkVTX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFuZVJvdXRlW10+KCdwYW5lcycpO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5hdmlnYXRpb25CYXNlIHtcclxuICBfcHJldmVudERlZmF1bHQ6IGJvb2xlYW47XHJcbiAgcHVibGljIHByZXZlbnREZWZhdWx0KCkge1xyXG4gICAgdGhpcy5fcHJldmVudERlZmF1bHQgPSB0cnVlO1xyXG4gIH1cclxufVxyXG5leHBvcnQgY2xhc3MgQ29sbGFwc2VOYXZpZ2F0aW9uIGV4dGVuZHMgTmF2aWdhdGlvbkJhc2Uge1xyXG59XHJcbmV4cG9ydCBjbGFzcyBCYWNrTmF2aWdhdGlvbiBleHRlbmRzIE5hdmlnYXRpb25CYXNlIHtcclxufVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmF2aWdhdGlvblBhbmVCYXNlPFQgPSBhbnk+IGV4dGVuZHMgTmF2aWdhdGlvbkJhc2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3BhbmU6IFBhbmVSZWY8VD4pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgcGFuZSgpOiBQYW5lUmVmPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9wYW5lO1xyXG4gIH1cclxufVxyXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblN0YXJ0IGV4dGVuZHMgTmF2aWdhdGlvblBhbmVCYXNlIHtcclxufVxyXG4vKiogcGFuZSBmdWN1cyBjaGFuZ2UgKi9cclxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25Gb2N1cyBleHRlbmRzIE5hdmlnYXRpb25QYW5lQmFzZSB7XHJcbn1cclxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25FbmQ8VCA9IGFueT4gZXh0ZW5kcyBOYXZpZ2F0aW9uUGFuZUJhc2U8VD4ge1xyXG59XHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uTW9kZTxUID0gYW55PiBleHRlbmRzIE5hdmlnYXRpb25QYW5lQmFzZTxUPiB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IG1vZGU6IFBhbmVNb2RlLCBwYW5lOiBQYW5lUmVmPFQ+KSB7XHJcbiAgICBzdXBlcihwYW5lKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25FeHBhbmQ8VCA9IGFueT4gZXh0ZW5kcyBOYXZpZ2F0aW9uUGFuZUJhc2U8VD4ge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBleHBlbmRlZDogYm9vbGVhbiwgcGFuZTogUGFuZVJlZjxUPikge1xyXG4gICAgc3VwZXIocGFuZSk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uUmVzaXplPFQgPSBhbnk+IGV4dGVuZHMgTmF2aWdhdGlvblBhbmVCYXNlPFQ+IHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZGltZW50aW9uczogRGltZW50aW9ucywgcGFuZTogUGFuZVJlZjxUPikge1xyXG4gICAgc3VwZXIocGFuZSk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uQ2xvc2U8VCA9IGFueT4gZXh0ZW5kcyBOYXZpZ2F0aW9uUGFuZUJhc2U8VD4ge1xyXG59XHJcbmV4cG9ydCBjbGFzcyBQYXJhbU5hdmlnYXRpb248VCA9IGFueT4gZXh0ZW5kcyBOYXZpZ2F0aW9uUGFuZUJhc2U8VD4ge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwYXJhbXM6IFBhcmFtTWFwLCBwYW5lOiBQYW5lUmVmPFQ+KSB7XHJcbiAgICBzdXBlcihwYW5lKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIFF1ZXJ5UGFyYW1OYXZpZ2F0aW9uPFQgPSBhbnk+IGV4dGVuZHMgTmF2aWdhdGlvblBhbmVCYXNlPFQ+IHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcXVlcnlQYXJhbXM6IFBhcmFtTWFwLCBwYW5lOiBQYW5lUmVmPFQ+KSB7XHJcbiAgICBzdXBlcihwYW5lKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFBhbmVNb2RlID0gJ3RhYicgfCAncGFuZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhbmVPcHRpb25zIHtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBncm91cD86IHN0cmluZztcclxuICBoZWxwPzogc3RyaW5nO1xyXG4gIHN0YXRlPzogYW55O1xyXG4gIG9wZW5Qb2xpY3k/OiBPcGVuUG9saWN5O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQYW5lQ29tbWFuZCA9ICdleHBhbmQnIHwgJ2ZvY3VzJyB8ICdjbG9zZScgfCAncmVjeWNsZSc7XHJcbi8qKiAqL1xyXG5leHBvcnQgY2xhc3MgUGFuZVJlZjxDb21wb25lbnRUeXBlID0gYW55LCBEYXRhVHlwZSA9IFBhcmFtTWFwPiB7XHJcbiAgcmVhZG9ubHkgX2NvbW1hbmQkID0gbmV3IFN1YmplY3Q8UGFuZUNvbW1hbmQ+KCk7XHJcbiAgLyoqICovXHJcbiAgcmVhZG9ubHkgX2RhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhVHlwZT4oe30gYXMgRGF0YVR5cGUpO1xyXG4gIHJlYWRvbmx5IF9wYXJhbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJhbU1hcD4oe30pO1xyXG4gIHJlYWRvbmx5IF9xdWVyeVBhcmFtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhcmFtTWFwPih7fSk7XHJcbiAgcmVhZG9ubHkgX2V2ZW50cyQgPSBuZXcgU3ViamVjdDxOYXZpZ2F0aW9uQmFzZT4oKTtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGd1aWRlPzogc3RyaW5nO1xyXG4gIHBpbm5lZDogYm9vbGVhbjtcclxuICBiYWRnZT86IG51bWJlcjtcclxuICBhbmltYXRpb24/OiBzdHJpbmc7XHJcbiAgZ3JvdXA/OiBzdHJpbmc7XHJcbiAgaGVscD86IHN0cmluZztcclxuICBfZXhwYW5kZWQ/OiBib29sZWFuO1xyXG4gIF9pbnN0YW5jZTogQ29tcG9uZW50VHlwZTtcclxuICBfcGF0aD86IHN0cmluZztcclxuICBfcXVlcnlTdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBfbW9kZTogUGFuZU1vZGU7XHJcbiAgcmVhZG9ubHkgX3BvcnRhbDogQ29tcG9uZW50UG9ydGFsPGFueT47XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3I6IEluamVjdG9yO1xyXG4gIHByaXZhdGUgX2V4cGFuZGFibGU6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfc3RyZXRjaGFibGU/OiBib29sZWFuO1xyXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XHJcbiAgZ2V0IGV4cGFuZGFibGUoKSB7IHJldHVybiB0aGlzLl9leHBhbmRhYmxlOyB9XHJcbiAgZ2V0IGluamVjdG9yKCkgeyByZXR1cm4gdGhpcy5faW5qZWN0b3I7IH1cclxuICBnZXQgZXhwYW5kZWQoKSB7IHJldHVybiB0aGlzLl9leHBhbmRlZDsgfVxyXG4gIGdldCBmdWxsUGF0aCgpIHsgcmV0dXJuICh0aGlzLl9wYXRoIHx8ICcnKSArICh0aGlzLl9xdWVyeVN0cmluZyA/IChRVUVSWV9DSEFSICsgdGhpcy5fcXVlcnlTdHJpbmcpIDogJycpIH1cclxuICBnZXQgaW5zdGFuY2UoKTogQ29tcG9uZW50VHlwZSB7IHJldHVybiB0aGlzLl9pbnN0YW5jZTsgfVxyXG4gIGdldCBkYXRhKCkgeyByZXR1cm4gdGhpcy5fZGF0YSQudmFsdWU7IH1cclxuICBnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1zJC52YWx1ZTsgfVxyXG4gIGdldCBxdWVyeVN0cmluZygpIHsgcmV0dXJuIHRoaXMuX3F1ZXJ5U3RyaW5nOyB9XHJcbiAgZ2V0IHF1ZXJ5UGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fcXVlcnlQYXJhbXMkLnZhbHVlOyB9XHJcbiAgcGFyYW1zQ2hhbmdlKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1zJC5hc09ic2VydmFibGUoKTsgfVxyXG4gIHF1ZXJ5UGFyYW1zQ2hhbmdlKCkgeyByZXR1cm4gdGhpcy5fcXVlcnlQYXJhbXMkLmFzT2JzZXJ2YWJsZSgpOyB9XHJcbiAgZGF0YUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX2RhdGEkLmFzT2JzZXJ2YWJsZSgpOyB9XHJcbiAgcmVzaXplZCgpIHsgcmV0dXJuIHRoaXMuX2V2ZW50cyQucGlwZShmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvblJlc2l6ZSkpIGFzIE9ic2VydmFibGU8TmF2aWdhdGlvblJlc2l6ZT47IH1cclxuICBjbG9zZWluZygpIHsgcmV0dXJuIHRoaXMuX2V2ZW50cyQucGlwZShmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkNsb3NlKSkgYXMgT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uQ2xvc2U+OyB9XHJcbiAgY2xvc2VkPFQgPSBhbnk+KCkgeyByZXR1cm4gdGhpcy5fZXZlbnRzJC5waXBlKGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2xvc2UpLCBtYXAoKCkgPT4gdGhpcy5fdmFsdWUpKSBhcyBPYnNlcnZhYmxlPFQ+OyB9XHJcbiAgZXhwYW5kZWRDaGFuZ2UoKSB7IHJldHVybiB0aGlzLl9ldmVudHMkLnBpcGUoZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FeHBhbmQpLCBtYXAoKCkgPT4gdGhpcy5leHBhbmRlZCkpOyB9XHJcbiAgZ2V0IHBhdGgoKSB7IHJldHVybiB0aGlzLl9wYXRoOyB9O1xyXG4gIGdldCBtb2RlKCkgeyByZXR1cm4gdGhpcy5fbW9kZTsgfTtcclxuICBnZXQgcGFyZW50KCkgeyByZXR1cm4gdGhpcy5fb3B0aW9ucy5wYXJlbnQ7IH07XHJcbiAgZ2V0IHN0cmV0Y2hhYmxlKCkgeyByZXR1cm4gdGhpcy5fc3RyZXRjaGFibGUgPT09IHRydWU7IH07XHJcbiAgc2V0IHN0cmV0Y2hhYmxlKHZhbDogYm9vbGVhbikgeyB0aGlzLl9zdHJldGNoYWJsZSA9IHZhbDsgfVxyXG4gIGdldCBkaWFsb2coKSB7IHJldHVybiB0aGlzLl9vcHRpb25zLmRpYWxvZzsgfTtcclxuICBnZXQgZGlzbWlzc2FibGUoKSB7IHJldHVybiB0aGlzLl9vcHRpb25zLmRpc21pc3NhYmxlOyB9O1xyXG4gIGdldCByb3V0ZSgpIHsgcmV0dXJuIHRoaXMuX29wdGlvbnMucm91dGU7IH07XHJcbiAgY29uc3RydWN0b3IoY29tcG9uZW50OiBUeXBlPGFueT4sXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9vcHRpb25zOiB7XHJcbiAgICAgIHBhdGg/OiBzdHJpbmc7XHJcbiAgICAgIHJvdXRlPzogUGFuZVJvdXRlO1xyXG4gICAgICB0aXRsZT86IHN0cmluZztcclxuICAgICAgZ3JvdXA/OiBzdHJpbmc7XHJcbiAgICAgIGd1aWRlPzogc3RyaW5nO1xyXG4gICAgICBpY29uPzogc3RyaW5nO1xyXG4gICAgICBhbmltYXRpb24/OiBzdHJpbmc7XHJcbiAgICAgIGhlbHA/OiBzdHJpbmc7XHJcbiAgICAgIG1vZGU6IFBhbmVNb2RlLFxyXG4gICAgICBleHBhbmRlZD86IGJvb2xlYW47XHJcbiAgICAgIGRpYWxvZz86IGJvb2xlYW47XHJcbiAgICAgIHN0cmV0Y2hhYmxlPzogYm9vbGVhbjtcclxuICAgICAgcGFyZW50PzogUGFuZVJlZjxhbnk+O1xyXG4gICAgICBxdWVyeVN0cmluZz86IHN0cmluZztcclxuICAgICAgZGF0YT86IERhdGFUeXBlO1xyXG4gICAgICBwYXJhbXM/OiBQYXJhbU1hcDtcclxuICAgICAgcXVlcnlQYXJhbXM/OiBQYXJhbU1hcDtcclxuICAgICAgZXhwYW5kYWJsZT86IGJvb2xlYW4sXHJcbiAgICAgIGRpc21pc3NhYmxlPzogYm9vbGVhblxyXG4gICAgfSkge1xyXG4gICAgY29uc3QgeyBzdHJldGNoYWJsZSwgbW9kZSwgZGF0YSwgcGFyYW1zLCBxdWVyeVBhcmFtcywgcGF0aCwgcXVlcnlTdHJpbmcsIHRpdGxlLCBncm91cCwgaWNvbiwgaGVscCwgZ3VpZGUsIGFuaW1hdGlvbiwgZXhwYW5kZWQsIGV4cGFuZGFibGUgfSA9IF9vcHRpb25zO1xyXG4gICAgdGhpcy5fcGF0aCA9IHBhdGg7XHJcbiAgICB0aGlzLl9tb2RlID0gbW9kZTtcclxuICAgIHRoaXMuX3N0cmV0Y2hhYmxlID0gc3RyZXRjaGFibGU7XHJcbiAgICB0aGlzLl9leHBhbmRlZCA9IGV4cGFuZGVkO1xyXG4gICAgdGhpcy5fcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZztcclxuICAgIHRoaXMuX2V4cGFuZGFibGUgPSBleHBhbmRhYmxlICE9PSBmYWxzZTtcclxuICAgIHRoaXMuX2luamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBQYW5lUmVmLCB1c2VWYWx1ZTogdGhpcyB9XHJcbiAgICAgIF0sIHBhcmVudDogaW5qZWN0b3JcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChjb21wb25lbnQsIG51bGwsIHRoaXMuX2luamVjdG9yKTtcclxuICAgIHRoaXMudGl0bGUgPSB0aXRsZTtcclxuICAgIHRoaXMuZ3JvdXAgPSBncm91cDtcclxuICAgIHRoaXMuZ3VpZGUgPSBndWlkZTtcclxuICAgIHRoaXMuaGVscCA9IGhlbHA7XHJcbiAgICB0aGlzLmljb24gPSBpY29uO1xyXG4gICAgdGhpcy5hbmltYXRpb24gPSBhbmltYXRpb247XHJcbiAgICBkYXRhICYmIHRoaXMuX2RhdGEkLm5leHQoZGF0YSk7XHJcbiAgICBwYXJhbXMgJiYgdGhpcy5fcGFyYW1zJC5uZXh0KHBhcmFtcyk7XHJcbiAgICBxdWVyeVBhcmFtcyAmJiB0aGlzLl9xdWVyeVBhcmFtcyQubmV4dChxdWVyeVBhcmFtcyk7XHJcbiAgfVxyXG4gIGRlY2VuZGVudE9mKHBhbmU6IFBhbmVSZWY8YW55Pikge1xyXG4gICAgcmV0dXJuIHRoaXMucGFyZW50ID09PSBwYW5lIC8vfHxcclxuICAgIC8vICAodGhpcy5wYXRoICYmIHBhbmUucGF0aCAmJiB0aGlzLnBhdGguc3RhcnRzV2l0aChwYW5lLnBhdGgpKTtcclxuICB9XHJcbiAgcmVjeWNsZSgpIHtcclxuICAgIHRoaXMuX2NvbW1hbmQkLm5leHQoJ3JlY3ljbGUnKTtcclxuICB9XHJcbiAgZm9jdXMoKSB7XHJcbiAgICB0aGlzLl9jb21tYW5kJC5uZXh0KCdmb2N1cycpO1xyXG4gIH1cclxuICBjbG9zZSh2YWx1ZT86IGFueSkge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2NvbW1hbmQkLm5leHQoJ2Nsb3NlJyk7XHJcbiAgfVxyXG4gIGV4cGFuZCgpIHtcclxuICAgIHRoaXMuX2NvbW1hbmQkLm5leHQoJ2V4cGFuZCcpO1xyXG4gIH1cclxuICBfZGVzdHJveSgpIHtcclxuICAgIHRoaXMuX2NvbW1hbmQkLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9kYXRhJC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5fcGFyYW1zJC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5fcXVlcnlQYXJhbXMkLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9ldmVudHMkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|