ngx-edu-sharing-ui 0.7.0 → 9.0.1
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/scss/mixins.scss +4 -1
- package/assets/scss/variables.scss +3 -0
- package/esm2022/lib/actionbar/actionbar.component.mjs +188 -0
- package/esm2022/lib/common/edu-sharing-ui-common.module.mjs +134 -0
- package/esm2022/lib/directives/border-box-observer.directive.mjs +71 -0
- package/esm2022/lib/directives/check-text-overflow.directive.mjs +65 -0
- package/esm2022/lib/directives/drag-nodes/drag-nodes.mjs +14 -0
- package/esm2022/lib/directives/drag-nodes/nodes-drag-source.directive.mjs +79 -0
- package/esm2022/lib/directives/drag-nodes/nodes-drag.directive.mjs +49 -0
- package/esm2022/lib/directives/drag-nodes/nodes-drop-target.directive.mjs +105 -0
- package/esm2022/lib/directives/focus-state.directive.mjs +44 -0
- package/esm2022/lib/directives/icon.directive.mjs +139 -0
- package/esm2022/lib/dropdown/dropdown.component.mjs +70 -0
- package/esm2022/lib/edu-sharing-ui-configuration.mjs +41 -0
- package/esm2022/lib/edu-sharing-ui.module.mjs +78 -0
- package/esm2022/lib/list-items/available-widgets.mjs +27 -0
- package/esm2022/lib/list-items/format-duration.pipe.mjs +20 -0
- package/esm2022/lib/list-items/list-base/list-base.component.mjs +46 -0
- package/esm2022/lib/list-items/list-collection-info/list-collection-info.component.mjs +29 -0
- package/esm2022/lib/list-items/list-counts/list-counts.component.mjs +54 -0
- package/esm2022/lib/list-items/list-items.module.mjs +50 -0
- package/esm2022/lib/list-items/list-node-license/list-node-license.component.mjs +41 -0
- package/esm2022/lib/list-items/list-node-replication-source/list-node-replication-source.component.mjs +47 -0
- package/esm2022/lib/list-items/list-node-workflow/list-node-workflow.component.mjs +24 -0
- package/esm2022/lib/list-items/list-text/list-text.component.mjs +106 -0
- package/esm2022/lib/list-items/list-widget.mjs +49 -0
- package/esm2022/lib/list-items/node-row/node-row.component.mjs +24 -0
- package/esm2022/lib/list-items/node-source.pipe.mjs +49 -0
- package/esm2022/lib/node-entries/combined-data-source.mjs +41 -0
- package/esm2022/lib/node-entries/custom-templates-data-source.mjs +7 -0
- package/esm2022/lib/node-entries/drag-preview/drag-preview.component.mjs +21 -0
- package/esm2022/lib/node-entries/entries-model.mjs +23 -0
- package/esm2022/lib/node-entries/items-cap.mjs +47 -0
- package/esm2022/lib/node-entries/list-item-label.pipe.mjs +34 -0
- package/esm2022/lib/node-entries/node-cache.mjs +65 -0
- package/esm2022/lib/node-entries/node-data-source-remote.mjs +4 -0
- package/esm2022/lib/node-entries/node-data-source.mjs +115 -0
- package/esm2022/lib/node-entries/node-entries-card/node-entries-card.component.mjs +131 -0
- package/esm2022/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.mjs +307 -0
- package/esm2022/lib/node-entries/node-entries-card-small/node-entries-card-small.component.mjs +45 -0
- package/esm2022/lib/node-entries/node-entries-global-options/node-entries-global-options.component.mjs +23 -0
- package/esm2022/lib/node-entries/node-entries-global.service.mjs +58 -0
- package/esm2022/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.mjs +42 -0
- package/esm2022/lib/node-entries/node-entries-table/node-entries-table.component.mjs +290 -0
- package/esm2022/lib/node-entries/node-entries-templates.service.mjs +11 -0
- package/esm2022/lib/node-entries/node-entries-wrapper.component.mjs +324 -0
- package/esm2022/lib/node-entries/node-entries.component.mjs +131 -0
- package/esm2022/lib/node-entries/node-entries.module.mjs +161 -0
- package/esm2022/lib/node-entries/node-rating/node-rating.component.mjs +102 -0
- package/esm2022/lib/node-entries/node-stats-badges/node-stats-badges.component.mjs +48 -0
- package/esm2022/lib/node-entries/node-type-badge/node-type-badge.component.mjs +36 -0
- package/esm2022/lib/node-entries/option-button/option-button.component.mjs +62 -0
- package/esm2022/lib/node-entries/preview-image/preview-image.component.mjs +53 -0
- package/esm2022/lib/node-entries/sort-select-panel/sort-select-panel.component.mjs +41 -0
- package/esm2022/lib/node-url/node-url.component.mjs +128 -0
- package/esm2022/lib/pipes/file-size.pipe.mjs +31 -0
- package/esm2022/lib/pipes/format-date.pipe.mjs +38 -0
- package/esm2022/lib/pipes/node-icon.pipe.mjs +18 -0
- package/esm2022/lib/pipes/node-image-size.pipe.mjs +24 -0
- package/esm2022/lib/pipes/node-image.pipe.mjs +55 -0
- package/esm2022/lib/pipes/node-person-name.pipe.mjs +50 -0
- package/esm2022/lib/pipes/node-title.pipe.mjs +19 -0
- package/esm2022/lib/pipes/option-tooltip.pipe.mjs +33 -0
- package/esm2022/lib/pipes/replace-chars.pipe.mjs +29 -0
- package/esm2022/lib/pipes/vcard-name.pipe.mjs +19 -0
- package/esm2022/lib/services/abstract/app.service.mjs +3 -0
- package/esm2022/lib/services/abstract/keyboard-shortcuts.service.mjs +10 -0
- package/esm2022/lib/services/abstract/options-helper.service.mjs +3 -0
- package/esm2022/lib/services/abstract/toast.service.mjs +3 -0
- package/esm2022/lib/services/accessibility.service.mjs +73 -0
- package/esm2022/lib/services/local-events.service.mjs +36 -0
- package/esm2022/lib/services/node-entries.service.mjs +137 -0
- package/esm2022/lib/services/node-helper.service.mjs +234 -0
- package/esm2022/lib/services/nodes-drag-drop.service.mjs +155 -0
- package/esm2022/lib/services/options-helper-data.service.mjs +134 -0
- package/esm2022/lib/services/repo-url.service.mjs +49 -0
- package/esm2022/lib/services/temporary-storage.service.mjs +48 -0
- package/esm2022/lib/services/ui.service.mjs +162 -0
- package/esm2022/lib/sort-dropdown/sort-dropdown.component.mjs +50 -0
- package/esm2022/lib/spinner/spinner.component.mjs +18 -0
- package/esm2022/lib/translations/fallback-translation-handler.mjs +6 -0
- package/esm2022/lib/translations/languages.mjs +5 -0
- package/esm2022/lib/translations/translation-loader.mjs +149 -0
- package/esm2022/lib/translations/translation-source.mjs +11 -0
- package/esm2022/lib/translations/translations.module.mjs +67 -0
- package/esm2022/lib/translations/translations.service.mjs +171 -0
- package/esm2022/lib/types/accessibillity.mjs +19 -0
- package/esm2022/lib/types/api-models.mjs +2 -0
- package/esm2022/lib/types/drag-drop.mjs +2 -0
- package/esm2022/lib/types/keyboard-shortcuts.mjs +11 -0
- package/esm2022/lib/types/list-item.mjs +41 -0
- package/esm2022/lib/types/option-item.mjs +174 -0
- package/esm2022/lib/types/workflow.mjs +25 -0
- package/esm2022/lib/util/DateHelper.mjs +200 -0
- package/esm2022/lib/util/VCard.mjs +278 -0
- package/esm2022/lib/util/color-helper.mjs +124 -0
- package/esm2022/lib/util/duration-helper.mjs +102 -0
- package/esm2022/lib/util/functions.mjs +13 -0
- package/esm2022/lib/util/helper.mjs +64 -0
- package/esm2022/lib/util/isNumeric.mjs +11 -0
- package/esm2022/lib/util/rest-helper.mjs +33 -0
- package/esm2022/lib/util/ui-animation.mjs +146 -0
- package/esm2022/lib/util/ui-constants.mjs +21 -0
- package/esm2022/module.mjs +76 -0
- package/esm2022/ngx-edu-sharing-ui.mjs +5 -0
- package/fesm2022/ngx-edu-sharing-ui.mjs +6509 -0
- package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/actionbar/actionbar.component.d.ts +74 -0
- package/lib/common/edu-sharing-ui-common.module.d.ts +32 -0
- package/lib/directives/border-box-observer.directive.d.ts +31 -0
- package/lib/directives/check-text-overflow.directive.d.ts +20 -0
- package/lib/directives/drag-nodes/drag-nodes.d.ts +16 -0
- package/lib/directives/drag-nodes/nodes-drag-source.directive.d.ts +37 -0
- package/lib/directives/drag-nodes/nodes-drag.directive.d.ts +17 -0
- package/lib/directives/drag-nodes/nodes-drop-target.directive.d.ts +22 -0
- package/lib/directives/focus-state.directive.d.ts +14 -0
- package/lib/directives/icon.directive.d.ts +46 -0
- package/lib/dropdown/dropdown.component.d.ts +40 -0
- package/lib/edu-sharing-ui-configuration.d.ts +11 -0
- package/lib/edu-sharing-ui.module.d.ts +19 -0
- package/lib/list-items/available-widgets.d.ts +13 -0
- package/lib/list-items/format-duration.pipe.d.ts +10 -0
- package/lib/list-items/list-base/list-base.component.d.ts +18 -0
- package/lib/list-items/list-collection-info/list-collection-info.component.d.ts +14 -0
- package/lib/list-items/list-counts/list-counts.component.d.ts +13 -0
- package/lib/list-items/list-items.module.d.ts +20 -0
- package/lib/list-items/list-node-license/list-node-license.component.d.ts +20 -0
- package/lib/list-items/list-node-replication-source/list-node-replication-source.component.d.ts +22 -0
- package/lib/list-items/list-node-workflow/list-node-workflow.component.d.ts +12 -0
- package/lib/list-items/list-text/list-text.component.d.ts +28 -0
- package/lib/list-items/list-widget.d.ts +32 -0
- package/lib/list-items/node-row/node-row.component.d.ts +12 -0
- package/lib/list-items/node-source.pipe.d.ts +16 -0
- package/lib/node-entries/combined-data-source.d.ts +19 -0
- package/{src/lib/node-entries/custom-templates-data-source.ts → lib/node-entries/custom-templates-data-source.d.ts} +2 -2
- package/lib/node-entries/drag-preview/drag-preview.component.d.ts +11 -0
- package/{src/lib/node-entries/entries-model.ts → lib/node-entries/entries-model.d.ts} +19 -47
- package/lib/node-entries/items-cap.d.ts +17 -0
- package/lib/node-entries/list-item-label.pipe.d.ts +14 -0
- package/lib/node-entries/node-cache.d.ts +17 -0
- package/{src/lib/node-entries/node-data-source-remote.ts → lib/node-entries/node-data-source-remote.d.ts} +2 -12
- package/lib/node-entries/node-data-source.d.ts +42 -0
- package/lib/node-entries/node-entries-card/node-entries-card.component.d.ts +45 -0
- package/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.d.ts +92 -0
- package/lib/node-entries/node-entries-card-small/node-entries-card-small.component.d.ts +23 -0
- package/lib/node-entries/node-entries-global-options/node-entries-global-options.component.d.ts +12 -0
- package/lib/node-entries/node-entries-global.service.d.ts +50 -0
- package/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.d.ts +17 -0
- package/lib/node-entries/node-entries-table/node-entries-table.component.d.ts +76 -0
- package/{src/lib/node-entries/node-entries-templates.service.ts → lib/node-entries/node-entries-templates.service.d.ts} +6 -9
- package/lib/node-entries/node-entries-wrapper.component.d.ts +129 -0
- package/lib/node-entries/node-entries.component.d.ts +32 -0
- package/lib/node-entries/node-entries.module.d.ts +43 -0
- package/lib/node-entries/node-rating/node-rating.component.d.ts +26 -0
- package/lib/node-entries/node-stats-badges/node-stats-badges.component.d.ts +17 -0
- package/lib/node-entries/node-type-badge/node-type-badge.component.d.ts +21 -0
- package/lib/node-entries/option-button/option-button.component.d.ts +11 -0
- package/lib/node-entries/preview-image/preview-image.component.d.ts +22 -0
- package/lib/node-entries/sort-select-panel/sort-select-panel.component.d.ts +16 -0
- package/lib/node-url/node-url.component.d.ts +51 -0
- package/lib/pipes/file-size.pipe.d.ts +10 -0
- package/lib/pipes/format-date.pipe.d.ts +21 -0
- package/lib/pipes/node-icon.pipe.d.ts +11 -0
- package/lib/pipes/node-image-size.pipe.d.ts +8 -0
- package/lib/pipes/node-image.pipe.d.ts +28 -0
- package/lib/pipes/node-person-name.pipe.d.ts +10 -0
- package/lib/pipes/node-title.pipe.d.ts +11 -0
- package/lib/pipes/option-tooltip.pipe.d.ts +12 -0
- package/lib/pipes/replace-chars.pipe.d.ts +10 -0
- package/lib/pipes/vcard-name.pipe.d.ts +10 -0
- package/{src/lib/services/abstract/app.service.ts → lib/services/abstract/app.service.d.ts} +1 -1
- package/lib/services/abstract/keyboard-shortcuts.service.d.ts +11 -0
- package/lib/services/abstract/options-helper.service.d.ts +10 -0
- package/{src/lib/services/abstract/toast.service.ts → lib/services/abstract/toast.service.d.ts} +1 -2
- package/lib/services/accessibility.service.d.ts +18 -0
- package/{src/lib/services/local-events.service.ts → lib/services/local-events.service.d.ts} +7 -10
- package/lib/services/node-entries.service.d.ts +69 -0
- package/lib/services/node-helper.service.d.ts +56 -0
- package/lib/services/nodes-drag-drop.service.d.ts +41 -0
- package/lib/services/options-helper-data.service.d.ts +75 -0
- package/lib/services/repo-url.service.d.ts +25 -0
- package/lib/services/temporary-storage.service.d.ts +35 -0
- package/lib/services/ui.service.d.ts +41 -0
- package/lib/sort-dropdown/sort-dropdown.component.d.ts +15 -0
- package/lib/spinner/spinner.component.d.ts +7 -0
- package/lib/translations/fallback-translation-handler.d.ts +4 -0
- package/lib/translations/languages.d.ts +4 -0
- package/lib/translations/translation-loader.d.ts +51 -0
- package/{src/lib/translations/translation-source.ts → lib/translations/translation-source.d.ts} +4 -4
- package/lib/translations/translations.module.d.ts +15 -0
- package/lib/translations/translations.service.d.ts +30 -0
- package/lib/types/accessibillity.d.ts +15 -0
- package/{src/lib/types/drag-drop.ts → lib/types/drag-drop.d.ts} +0 -3
- package/lib/types/keyboard-shortcuts.d.ts +10 -0
- package/lib/types/list-item.d.ts +55 -0
- package/lib/types/option-item.d.ts +236 -0
- package/lib/types/workflow.d.ts +14 -0
- package/lib/util/DateHelper.d.ts +44 -0
- package/lib/util/VCard.d.ts +66 -0
- package/lib/util/color-helper.d.ts +25 -0
- package/lib/util/duration-helper.d.ts +14 -0
- package/lib/util/functions.d.ts +4 -0
- package/lib/util/helper.d.ts +20 -0
- package/lib/util/isNumeric.d.ts +5 -0
- package/lib/util/rest-helper.d.ts +10 -0
- package/lib/util/ui-animation.d.ts +39 -0
- package/lib/util/ui-constants.d.ts +18 -0
- package/{src/module.ts → module.d.ts} +0 -4
- package/package.json +23 -9
- package/.browserslistrc +0 -16
- package/.eslintrc.json +0 -44
- package/karma.conf.js +0 -42
- package/ng-package.json +0 -10
- package/src/lib/actionbar/actionbar.component.html +0 -59
- package/src/lib/actionbar/actionbar.component.scss +0 -123
- package/src/lib/actionbar/actionbar.component.ts +0 -174
- package/src/lib/common/edu-sharing-ui-common.module.ts +0 -80
- package/src/lib/directives/border-box-observer.directive.ts +0 -75
- package/src/lib/directives/check-text-overflow.directive.ts +0 -61
- package/src/lib/directives/drag-nodes/drag-nodes.ts +0 -32
- package/src/lib/directives/drag-nodes/nodes-drag-source.directive.ts +0 -79
- package/src/lib/directives/drag-nodes/nodes-drag.directive.ts +0 -43
- package/src/lib/directives/drag-nodes/nodes-drop-target.directive.ts +0 -116
- package/src/lib/directives/focus-state.directive.ts +0 -34
- package/src/lib/directives/icon.directive.ts +0 -142
- package/src/lib/directives/nodes-drop-target-legacy.directive.ts +0 -155
- package/src/lib/dropdown/dropdown.component.html +0 -32
- package/src/lib/dropdown/dropdown.component.scss +0 -67
- package/src/lib/dropdown/dropdown.component.ts +0 -71
- package/src/lib/edu-sharing-ui-configuration.ts +0 -47
- package/src/lib/edu-sharing-ui.module.ts +0 -49
- package/src/lib/list-items/available-widgets.ts +0 -30
- package/src/lib/list-items/format-duration.pipe.ts +0 -17
- package/src/lib/list-items/list-base/list-base.component.html +0 -52
- package/src/lib/list-items/list-base/list-base.component.ts +0 -44
- package/src/lib/list-items/list-collection-info/list-collection-info.component.html +0 -48
- package/src/lib/list-items/list-collection-info/list-collection-info.component.scss +0 -8
- package/src/lib/list-items/list-collection-info/list-collection-info.component.ts +0 -24
- package/src/lib/list-items/list-counts/list-counts.component.html +0 -1
- package/src/lib/list-items/list-counts/list-counts.component.scss +0 -3
- package/src/lib/list-items/list-counts/list-counts.component.ts +0 -59
- package/src/lib/list-items/list-items.module.ts +0 -33
- package/src/lib/list-items/list-node-license/list-node-license.component.html +0 -8
- package/src/lib/list-items/list-node-license/list-node-license.component.ts +0 -47
- package/src/lib/list-items/list-node-replication-source/list-node-replication-source.component.html +0 -11
- package/src/lib/list-items/list-node-replication-source/list-node-replication-source.component.ts +0 -60
- package/src/lib/list-items/list-node-workflow/list-node-workflow.component.html +0 -3
- package/src/lib/list-items/list-node-workflow/list-node-workflow.component.ts +0 -21
- package/src/lib/list-items/list-text/list-text.component.html +0 -176
- package/src/lib/list-items/list-text/list-text.component.scss +0 -3
- package/src/lib/list-items/list-text/list-text.component.ts +0 -107
- package/src/lib/list-items/list-widget.ts +0 -52
- package/src/lib/list-items/node-row/node-row.component.html +0 -31
- package/src/lib/list-items/node-row/node-row.component.scss +0 -50
- package/src/lib/list-items/node-row/node-row.component.ts +0 -16
- package/src/lib/list-items/node-source.pipe.ts +0 -48
- package/src/lib/node-entries/combined-data-source.ts +0 -51
- package/src/lib/node-entries/drag-preview/drag-preview.component.html +0 -6
- package/src/lib/node-entries/drag-preview/drag-preview.component.scss +0 -35
- package/src/lib/node-entries/drag-preview/drag-preview.component.ts +0 -15
- package/src/lib/node-entries/items-cap.ts +0 -54
- package/src/lib/node-entries/list-item-label.pipe.ts +0 -28
- package/src/lib/node-entries/mixins.scss +0 -23
- package/src/lib/node-entries/node-cache.spec.ts +0 -199
- package/src/lib/node-entries/node-cache.ts +0 -81
- package/src/lib/node-entries/node-data-source.ts +0 -148
- package/src/lib/node-entries/node-entries-card/node-entries-card.component.html +0 -167
- package/src/lib/node-entries/node-entries-card/node-entries-card.component.scss +0 -28
- package/src/lib/node-entries/node-entries-card/node-entries-card.component.ts +0 -132
- package/src/lib/node-entries/node-entries-card/node-entries-card.main.scss +0 -261
- package/src/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.html +0 -205
- package/src/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.scss +0 -181
- package/src/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.ts +0 -361
- package/src/lib/node-entries/node-entries-card-small/node-entries-card-small.component.html +0 -100
- package/src/lib/node-entries/node-entries-card-small/node-entries-card-small.component.scss +0 -46
- package/src/lib/node-entries/node-entries-card-small/node-entries-card-small.component.ts +0 -40
- package/src/lib/node-entries/node-entries-global-options/node-entries-global-options.component.html +0 -23
- package/src/lib/node-entries/node-entries-global-options/node-entries-global-options.component.scss +0 -58
- package/src/lib/node-entries/node-entries-global-options/node-entries-global-options.component.ts +0 -16
- package/src/lib/node-entries/node-entries-global.service.ts +0 -79
- package/src/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.html +0 -25
- package/src/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.scss +0 -32
- package/src/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.ts +0 -31
- package/src/lib/node-entries/node-entries-table/node-entries-table.component.html +0 -270
- package/src/lib/node-entries/node-entries-table/node-entries-table.component.scss +0 -169
- package/src/lib/node-entries/node-entries-table/node-entries-table.component.ts +0 -333
- package/src/lib/node-entries/node-entries-wrapper.component.ts +0 -363
- package/src/lib/node-entries/node-entries.component.html +0 -33
- package/src/lib/node-entries/node-entries.component.scss +0 -13
- package/src/lib/node-entries/node-entries.component.ts +0 -151
- package/src/lib/node-entries/node-entries.module.ts +0 -93
- package/src/lib/node-entries/node-rating/node-rating.component.html +0 -53
- package/src/lib/node-entries/node-rating/node-rating.component.scss +0 -31
- package/src/lib/node-entries/node-rating/node-rating.component.ts +0 -105
- package/src/lib/node-entries/node-stats-badges/node-stats-badges.component.html +0 -39
- package/src/lib/node-entries/node-stats-badges/node-stats-badges.component.scss +0 -44
- package/src/lib/node-entries/node-stats-badges/node-stats-badges.component.ts +0 -43
- package/src/lib/node-entries/node-type-badge/node-type-badge.component.html +0 -31
- package/src/lib/node-entries/node-type-badge/node-type-badge.component.scss +0 -5
- package/src/lib/node-entries/node-type-badge/node-type-badge.component.ts +0 -36
- package/src/lib/node-entries/option-button/option-button.component.ts +0 -42
- package/src/lib/node-entries/preview-image/preview-image.component.html +0 -19
- package/src/lib/node-entries/preview-image/preview-image.component.scss +0 -31
- package/src/lib/node-entries/preview-image/preview-image.component.ts +0 -47
- package/src/lib/node-entries/sort-select-panel/sort-select-panel.component.html +0 -27
- package/src/lib/node-entries/sort-select-panel/sort-select-panel.component.scss +0 -9
- package/src/lib/node-entries/sort-select-panel/sort-select-panel.component.ts +0 -26
- package/src/lib/node-url/node-url.component.html +0 -66
- package/src/lib/node-url/node-url.component.scss +0 -32
- package/src/lib/node-url/node-url.component.ts +0 -136
- package/src/lib/pipes/file-size.pipe.ts +0 -24
- package/src/lib/pipes/format-date.pipe.ts +0 -39
- package/src/lib/pipes/node-icon.pipe.ts +0 -11
- package/src/lib/pipes/node-image-size.pipe.ts +0 -18
- package/src/lib/pipes/node-image.pipe.ts +0 -71
- package/src/lib/pipes/node-person-name.pipe.ts +0 -41
- package/src/lib/pipes/node-title.pipe.ts +0 -12
- package/src/lib/pipes/option-tooltip.pipe.ts +0 -32
- package/src/lib/pipes/replace-chars.pipe.ts +0 -21
- package/src/lib/pipes/vcard-name.pipe.ts +0 -11
- package/src/lib/services/abstract/keyboard-shortcuts.service.ts +0 -10
- package/src/lib/services/abstract/options-helper.service.ts +0 -29
- package/src/lib/services/accessibility.service.ts +0 -101
- package/src/lib/services/node-entries.service.ts +0 -172
- package/src/lib/services/node-helper.service.ts +0 -239
- package/src/lib/services/nodes-drag-drop.service.ts +0 -165
- package/src/lib/services/options-helper-data.service.ts +0 -186
- package/src/lib/services/repo-url.service.ts +0 -46
- package/src/lib/services/temporary-storage.service.ts +0 -58
- package/src/lib/services/ui.service.ts +0 -182
- package/src/lib/sort-dropdown/sort-dropdown.component.html +0 -22
- package/src/lib/sort-dropdown/sort-dropdown.component.scss +0 -47
- package/src/lib/sort-dropdown/sort-dropdown.component.ts +0 -42
- package/src/lib/spinner/spinner.component.html +0 -14
- package/src/lib/spinner/spinner.component.scss +0 -141
- package/src/lib/spinner/spinner.component.ts +0 -12
- package/src/lib/translations/README.md +0 -44
- package/src/lib/translations/fallback-translation-handler.ts +0 -7
- package/src/lib/translations/languages.ts +0 -6
- package/src/lib/translations/translation-loader.spec.ts +0 -352
- package/src/lib/translations/translation-loader.ts +0 -189
- package/src/lib/translations/translations.module.ts +0 -49
- package/src/lib/translations/translations.service.spec.ts +0 -152
- package/src/lib/translations/translations.service.ts +0 -188
- package/src/lib/types/accessibillity.ts +0 -15
- package/src/lib/types/keyboard-shortcuts.ts +0 -29
- package/src/lib/types/list-item.ts +0 -67
- package/src/lib/types/option-item.ts +0 -247
- package/src/lib/types/workflow.ts +0 -35
- package/src/lib/util/DateHelper.spec.ts +0 -112
- package/src/lib/util/DateHelper.ts +0 -197
- package/src/lib/util/VCard.ts +0 -277
- package/src/lib/util/color-helper.ts +0 -125
- package/src/lib/util/duration-helper.spec.ts +0 -35
- package/src/lib/util/duration-helper.ts +0 -98
- package/src/lib/util/functions.ts +0 -15
- package/src/lib/util/helper.ts +0 -60
- package/src/lib/util/isNumeric.ts +0 -13
- package/src/lib/util/rest-helper.ts +0 -28
- package/src/lib/util/ui-animation.ts +0 -154
- package/src/lib/util/ui-constants.ts +0 -20
- package/src/test.ts +0 -28
- package/tsconfig.lib.json +0 -15
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
- /package/{src/lib/types/api-models.ts → lib/types/api-models.d.ts} +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class KeyboardShortcutsService {
|
|
4
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: KeyboardShortcutsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: KeyboardShortcutsService }); }
|
|
6
|
+
}
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: KeyboardShortcutsService, decorators: [{
|
|
8
|
+
type: Injectable
|
|
9
|
+
}] });
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtc2hvcnRjdXRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3NlcnZpY2VzL2Fic3RyYWN0L2tleWJvYXJkLXNob3J0Y3V0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBZ0Isd0JBQXdCOzhHQUF4Qix3QkFBd0I7a0hBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEN0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtleWJvYXJkU2hvcnRjdXQgfSBmcm9tICcuLi8uLi90eXBlcy9rZXlib2FyZC1zaG9ydGN1dHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgS2V5Ym9hcmRTaG9ydGN1dHNTZXJ2aWNlIHtcbiAgICBhYnN0cmFjdCByZWdpc3RlcihzaG9ydGN1dHM6IEtleWJvYXJkU2hvcnRjdXRbXSwgeyB1bnRpbCB9OiB7IHVudGlsOiBPYnNlcnZhYmxlPHZvaWQ+IH0pOiB2b2lkO1xuXG4gICAgYWJzdHJhY3Qgc2hvdWxkSWdub3JlU2hvcnRjdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class OptionsHelperService {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvc2VydmljZXMvYWJzdHJhY3Qvb3B0aW9ucy1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQWdCLG9CQUFvQjtDQXdCekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb25EYXRhLCBPcHRpb25zSGVscGVyQ29tcG9uZW50cyB9IGZyb20gJy4uL29wdGlvbnMtaGVscGVyLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBPcHRpb25JdGVtLCBUYXJnZXQgfSBmcm9tICcuLi8uLi90eXBlcy9vcHRpb24taXRlbSc7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPcHRpb25zSGVscGVyU2VydmljZSB7XG4gICAgYWJzdHJhY3Qgd3JhcE9wdGlvbkNhbGxiYWNrcyhkYXRhOiBPcHRpb25EYXRhKTogT3B0aW9uRGF0YTtcblxuICAgIGFic3RyYWN0IHJlZnJlc2hDb21wb25lbnRzKFxuICAgICAgICBjb21wb25lbnRzOiBPcHRpb25zSGVscGVyQ29tcG9uZW50cyxcbiAgICAgICAgZGF0YTogT3B0aW9uRGF0YSxcbiAgICAgICAgcmVmcmVzaExpc3RPcHRpb25zOiBib29sZWFuLFxuICAgICk6IHZvaWQ7XG5cbiAgICBhYnN0cmFjdCBnZXRBdmFpbGFibGVPcHRpb25zKFxuICAgICAgICB0YXJnZXQ6IFRhcmdldCxcbiAgICAgICAgb2JqZWN0czogTm9kZVtdLFxuICAgICAgICBjb21wb25lbnRzOiBPcHRpb25zSGVscGVyQ29tcG9uZW50cyxcbiAgICAgICAgZGF0YTogT3B0aW9uRGF0YSxcbiAgICApOiBPcHRpb25JdGVtW107XG5cbiAgICBhYnN0cmFjdCBwYXN0ZU5vZGUoY29tcG9uZW50czogT3B0aW9uc0hlbHBlckNvbXBvbmVudHMsIGRhdGE6IE9wdGlvbkRhdGEsIG5vZGVzOiBOb2RlW10pOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgZmlsdGVyT3B0aW9ucyhcbiAgICAgICAgb3B0aW9uczogT3B0aW9uSXRlbVtdLFxuICAgICAgICB0YXJnZXQ6IFRhcmdldCxcbiAgICAgICAgZGF0YTogT3B0aW9uRGF0YSxcbiAgICAgICAgb2JqZWN0czogTm9kZVtdIHwgYW55LFxuICAgICk6IE9wdGlvbkl0ZW1bXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class Toast {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvc2VydmljZXMvYWJzdHJhY3QvdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQWdCLEtBQUs7Q0FJMUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgYWJzdHJhY3QgY2xhc3MgVG9hc3Qge1xuICAgIGFic3RyYWN0IHRvYXN0KG1lc3NhZ2U6IHN0cmluZywgdHJhbnNsYXRpb25QYXJhbWV0ZXJzPzogYW55KTogdm9pZDtcblxuICAgIGFic3RyYWN0IGVycm9yKGVycm9yT2JqZWN0OiBhbnksIG1lc3NhZ2U/OiBzdHJpbmcpOiB2b2lkO1xufVxuIl19
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as rxjs from 'rxjs';
|
|
3
|
+
import { first, map } from 'rxjs/operators';
|
|
4
|
+
import { AccessibilitySettings } from '../types/accessibillity';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "ngx-edu-sharing-api";
|
|
7
|
+
export class AccessibilityService {
|
|
8
|
+
static { this.STORAGE_PREFIX = 'accessibility_'; }
|
|
9
|
+
constructor(storage) {
|
|
10
|
+
this.storage = storage;
|
|
11
|
+
}
|
|
12
|
+
async set(accessibilitySettings) {
|
|
13
|
+
const currentValues = await this.observeAll().pipe(first()).toPromise();
|
|
14
|
+
const values = Object.entries(accessibilitySettings)
|
|
15
|
+
.filter(([key, value]) =>
|
|
16
|
+
// check if value has been modified
|
|
17
|
+
currentValues[key] !== value)
|
|
18
|
+
.reduce((acc, [key, value]) => {
|
|
19
|
+
acc[AccessibilityService.STORAGE_PREFIX + key] = value;
|
|
20
|
+
return acc;
|
|
21
|
+
}, {});
|
|
22
|
+
if (Object.keys(values).length > 0) {
|
|
23
|
+
return this.storage.setValues(values);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
observe(keyOrKeys) {
|
|
27
|
+
if (typeof keyOrKeys === 'string') {
|
|
28
|
+
return this.observeSingle(keyOrKeys);
|
|
29
|
+
}
|
|
30
|
+
else if (Array.isArray(keyOrKeys)) {
|
|
31
|
+
return this.observeMultiple(keyOrKeys);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return this.observeAll();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
observeSingle(key) {
|
|
38
|
+
const defaultValues = new AccessibilitySettings();
|
|
39
|
+
return this.storage.observe(AccessibilityService.STORAGE_PREFIX + key, defaultValues[key]);
|
|
40
|
+
}
|
|
41
|
+
observeMultiple(keys) {
|
|
42
|
+
const defaultValues = new AccessibilitySettings();
|
|
43
|
+
return combineLatest(keys.reduce((acc, key) => {
|
|
44
|
+
acc[key] = this.storage.observe(AccessibilityService.STORAGE_PREFIX + key, defaultValues[key]);
|
|
45
|
+
return acc;
|
|
46
|
+
}, {}));
|
|
47
|
+
}
|
|
48
|
+
observeAll() {
|
|
49
|
+
return this.observeMultiple(Object.keys(new AccessibilitySettings()));
|
|
50
|
+
}
|
|
51
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AccessibilityService, deps: [{ token: i1.SessionStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
52
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AccessibilityService, providedIn: 'root' }); }
|
|
53
|
+
}
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: AccessibilityService, decorators: [{
|
|
55
|
+
type: Injectable,
|
|
56
|
+
args: [{
|
|
57
|
+
providedIn: 'root',
|
|
58
|
+
}]
|
|
59
|
+
}], ctorParameters: function () { return [{ type: i1.SessionStorageService }]; } });
|
|
60
|
+
/**
|
|
61
|
+
* Rxjs.combineLatest on objects instead of arrays.
|
|
62
|
+
*
|
|
63
|
+
* This is a standard function in Rxjs 7, but we wrap it here for Rxjs 6.
|
|
64
|
+
*/
|
|
65
|
+
function combineLatest(sources) {
|
|
66
|
+
return rxjs
|
|
67
|
+
.combineLatest(Object.entries(sources).map(([key, source]) => source.pipe(map((result) => ({ key, result })))))
|
|
68
|
+
.pipe(map((results) => results.reduce((acc, { key, result }) => {
|
|
69
|
+
acc[key] = result;
|
|
70
|
+
return acc;
|
|
71
|
+
}, {})));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzaWJpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9zZXJ2aWNlcy9hY2Nlc3NpYmlsaXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFNaEUsTUFBTSxPQUFPLG9CQUFvQjthQUNMLG1CQUFjLEdBQUcsZ0JBQWdCLENBQUM7SUFFMUQsWUFBb0IsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFBRyxDQUFDO0lBRXRELEtBQUssQ0FBQyxHQUFHLENBQUMscUJBQXFEO1FBQzNELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUM7YUFDL0MsTUFBTSxDQUNILENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUNiLG1DQUFtQztRQUNsQyxhQUFxQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FDNUM7YUFDQSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUMxQixHQUFHLENBQUMsb0JBQW9CLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN2RCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUMsRUFBRSxFQUE0QixDQUFDLENBQUM7UUFDckMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6QztJQUNMLENBQUM7SUFPRCxPQUFPLENBQ0gsU0FBbUI7UUFFbkIsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3hDO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUNqQixHQUFNO1FBRU4sTUFBTSxhQUFhLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsY0FBYyxHQUFHLEdBQUcsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRU8sZUFBZSxDQUNuQixJQUFTO1FBRVQsTUFBTSxhQUFhLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ2xELE9BQU8sYUFBYSxDQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3JCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDM0Isb0JBQW9CLENBQUMsY0FBYyxHQUFHLEdBQUcsRUFDekMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUNyQixDQUFDO1lBQ0YsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDLEVBQUUsRUFBc0YsQ0FBQyxDQUM3RixDQUFDO0lBQ04sQ0FBQztJQUVPLFVBQVU7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxxQkFBcUIsRUFBRSxDQUF1QyxDQUNqRixDQUFDO0lBQ04sQ0FBQzs4R0FqRVEsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FGakIsTUFBTTs7MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7QUFxRUQ7Ozs7R0FJRztBQUNILFNBQVMsYUFBYSxDQUF1QixPQUU1QztJQUNHLE9BQU8sSUFBSTtTQUNOLGFBQWEsQ0FDVixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FDekMsTUFBMkIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN4RSxDQUNKO1NBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1FBQ3BDLEdBQUcsQ0FBQyxHQUFRLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDdkIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDLEVBQUUsRUFBTyxDQUFDLENBQ2QsQ0FDSixDQUFDO0FBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIHJ4anMgZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eVNldHRpbmdzIH0gZnJvbSAnLi4vdHlwZXMvYWNjZXNzaWJpbGxpdHknO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFjY2Vzc2liaWxpdHlTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTVE9SQUdFX1BSRUZJWCA9ICdhY2Nlc3NpYmlsaXR5Xyc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JhZ2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSkge31cblxuICAgIGFzeW5jIHNldChhY2Nlc3NpYmlsaXR5U2V0dGluZ3M6IFBhcnRpYWw8QWNjZXNzaWJpbGl0eVNldHRpbmdzPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWVzID0gYXdhaXQgdGhpcy5vYnNlcnZlQWxsKCkucGlwZShmaXJzdCgpKS50b1Byb21pc2UoKTtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LmVudHJpZXMoYWNjZXNzaWJpbGl0eVNldHRpbmdzKVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoW2tleSwgdmFsdWVdKSA9PlxuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiB2YWx1ZSBoYXMgYmVlbiBtb2RpZmllZFxuICAgICAgICAgICAgICAgICAgICAoY3VycmVudFZhbHVlcyBhcyBhbnkpW2tleV0gIT09IHZhbHVlLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICBhY2NbQWNjZXNzaWJpbGl0eVNlcnZpY2UuU1RPUkFHRV9QUkVGSVggKyBrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogYW55IH0pO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXModmFsdWVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnNldFZhbHVlcyh2YWx1ZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb2JzZXJ2ZTxLIGV4dGVuZHMga2V5b2YgQWNjZXNzaWJpbGl0eVNldHRpbmdzPihrZXk6IEspOiBPYnNlcnZhYmxlPEFjY2Vzc2liaWxpdHlTZXR0aW5nc1tLXT47XG4gICAgb2JzZXJ2ZTxLIGV4dGVuZHMga2V5b2YgQWNjZXNzaWJpbGl0eVNldHRpbmdzPihcbiAgICAgICAga2V5czogS1tdLFxuICAgICk6IE9ic2VydmFibGU8UGljazxBY2Nlc3NpYmlsaXR5U2V0dGluZ3MsIEs+PjtcbiAgICBvYnNlcnZlKCk6IE9ic2VydmFibGU8QWNjZXNzaWJpbGl0eVNldHRpbmdzPjtcbiAgICBvYnNlcnZlPEsgZXh0ZW5kcyBrZXlvZiBBY2Nlc3NpYmlsaXR5U2V0dGluZ3M+KFxuICAgICAgICBrZXlPcktleXM/OiBLIHwgS1tdLFxuICAgICk6IE9ic2VydmFibGU8QWNjZXNzaWJpbGl0eVNldHRpbmdzW0tdIHwgUGljazxBY2Nlc3NpYmlsaXR5U2V0dGluZ3MsIEs+PiB7XG4gICAgICAgIGlmICh0eXBlb2Yga2V5T3JLZXlzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JzZXJ2ZVNpbmdsZShrZXlPcktleXMpO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoa2V5T3JLZXlzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JzZXJ2ZU11bHRpcGxlKGtleU9yS2V5cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vYnNlcnZlQWxsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVTaW5nbGU8SyBleHRlbmRzIGtleW9mIEFjY2Vzc2liaWxpdHlTZXR0aW5ncz4oXG4gICAgICAgIGtleTogSyxcbiAgICApOiBPYnNlcnZhYmxlPEFjY2Vzc2liaWxpdHlTZXR0aW5nc1tLXT4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWVzID0gbmV3IEFjY2Vzc2liaWxpdHlTZXR0aW5ncygpO1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLm9ic2VydmUoQWNjZXNzaWJpbGl0eVNlcnZpY2UuU1RPUkFHRV9QUkVGSVggKyBrZXksIGRlZmF1bHRWYWx1ZXNba2V5XSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlTXVsdGlwbGU8SyBleHRlbmRzIGtleW9mIEFjY2Vzc2liaWxpdHlTZXR0aW5ncz4oXG4gICAgICAgIGtleXM6IEtbXSxcbiAgICApOiBPYnNlcnZhYmxlPFBpY2s8QWNjZXNzaWJpbGl0eVNldHRpbmdzLCBLPj4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWVzID0gbmV3IEFjY2Vzc2liaWxpdHlTZXR0aW5ncygpO1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChcbiAgICAgICAgICAgIGtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGFjY1trZXldID0gdGhpcy5zdG9yYWdlLm9ic2VydmUoXG4gICAgICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlTZXJ2aWNlLlNUT1JBR0VfUFJFRklYICsga2V5LFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzW2tleV0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30gYXMgeyBba2V5IGluIGtleW9mIEFjY2Vzc2liaWxpdHlTZXR0aW5nc106IE9ic2VydmFibGU8QWNjZXNzaWJpbGl0eVNldHRpbmdzW2tleV0+IH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUFsbCgpOiBPYnNlcnZhYmxlPEFjY2Vzc2liaWxpdHlTZXR0aW5ncz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vYnNlcnZlTXVsdGlwbGUoXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhuZXcgQWNjZXNzaWJpbGl0eVNldHRpbmdzKCkpIGFzIEFycmF5PGtleW9mIEFjY2Vzc2liaWxpdHlTZXR0aW5ncz4sXG4gICAgICAgICk7XG4gICAgfVxufVxuXG4vKipcbiAqIFJ4anMuY29tYmluZUxhdGVzdCBvbiBvYmplY3RzIGluc3RlYWQgb2YgYXJyYXlzLlxuICpcbiAqIFRoaXMgaXMgYSBzdGFuZGFyZCBmdW5jdGlvbiBpbiBSeGpzIDcsIGJ1dCB3ZSB3cmFwIGl0IGhlcmUgZm9yIFJ4anMgNi5cbiAqL1xuZnVuY3Rpb24gY29tYmluZUxhdGVzdDxULCBLIGV4dGVuZHMga2V5b2YgVD4oc291cmNlczoge1xuICAgIFtrZXkgaW4gS106IE9ic2VydmFibGU8VFtrZXldPjtcbn0pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gcnhqc1xuICAgICAgICAuY29tYmluZUxhdGVzdChcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHNvdXJjZXMpLm1hcCgoW2tleSwgc291cmNlXSkgPT5cbiAgICAgICAgICAgICAgICAoc291cmNlIGFzIE9ic2VydmFibGU8VFtLXT4pLnBpcGUobWFwKChyZXN1bHQpID0+ICh7IGtleSwgcmVzdWx0IH0pKSksXG4gICAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXN1bHRzKSA9PlxuICAgICAgICAgICAgICAgIHJlc3VsdHMucmVkdWNlKChhY2MsIHsga2V5LCByZXN1bHQgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhY2Nba2V5IGFzIEtdID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH0sIHt9IGFzIFQpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* An application-wide event broker.
|
|
5
|
+
*/
|
|
6
|
+
export class LocalEventsService {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* The metadata of one or more nodes have been updated.
|
|
10
|
+
*
|
|
11
|
+
* The emitted value is the array of updated nodes.
|
|
12
|
+
*
|
|
13
|
+
* The emitter should not be triggered with an empty array or null.
|
|
14
|
+
*/
|
|
15
|
+
this.nodesChanged = new EventEmitter();
|
|
16
|
+
/**
|
|
17
|
+
* One or more nodes have been moved to the recycle bin.
|
|
18
|
+
*
|
|
19
|
+
* The emitted value is the array of former nodes.
|
|
20
|
+
*
|
|
21
|
+
* The emitter should not be triggered with an empty array or null.
|
|
22
|
+
*/
|
|
23
|
+
// FIXME: Maybe a `nodesMoved` emitter would make for sense for updating lists that used to
|
|
24
|
+
// include a node and lists that the node was moved to.
|
|
25
|
+
this.nodesDeleted = new EventEmitter();
|
|
26
|
+
}
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: LocalEventsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
28
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: LocalEventsService, providedIn: 'root' }); }
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: LocalEventsService, decorators: [{
|
|
31
|
+
type: Injectable,
|
|
32
|
+
args: [{
|
|
33
|
+
providedIn: 'root',
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZXZlbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3NlcnZpY2VzL2xvY2FsLWV2ZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd6RDs7R0FFRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFIL0I7UUFJSTs7Ozs7O1dBTUc7UUFDTSxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkQ7Ozs7OztXQU1HO1FBQ0gsMkZBQTJGO1FBQzNGLHVEQUF1RDtRQUM5QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FDdEQ7OEdBbkJZLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmYsTUFBTTs7MkZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuXG4vKipcbiAqIEFuIGFwcGxpY2F0aW9uLXdpZGUgZXZlbnQgYnJva2VyLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbEV2ZW50c1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIFRoZSBtZXRhZGF0YSBvZiBvbmUgb3IgbW9yZSBub2RlcyBoYXZlIGJlZW4gdXBkYXRlZC5cbiAgICAgKlxuICAgICAqIFRoZSBlbWl0dGVkIHZhbHVlIGlzIHRoZSBhcnJheSBvZiB1cGRhdGVkIG5vZGVzLlxuICAgICAqXG4gICAgICogVGhlIGVtaXR0ZXIgc2hvdWxkIG5vdCBiZSB0cmlnZ2VyZWQgd2l0aCBhbiBlbXB0eSBhcnJheSBvciBudWxsLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG5vZGVzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Tm9kZVtdPigpO1xuICAgIC8qKlxuICAgICAqIE9uZSBvciBtb3JlIG5vZGVzIGhhdmUgYmVlbiBtb3ZlZCB0byB0aGUgcmVjeWNsZSBiaW4uXG4gICAgICpcbiAgICAgKiBUaGUgZW1pdHRlZCB2YWx1ZSBpcyB0aGUgYXJyYXkgb2YgZm9ybWVyIG5vZGVzLlxuICAgICAqXG4gICAgICogVGhlIGVtaXR0ZXIgc2hvdWxkIG5vdCBiZSB0cmlnZ2VyZWQgd2l0aCBhbiBlbXB0eSBhcnJheSBvciBudWxsLlxuICAgICAqL1xuICAgIC8vIEZJWE1FOiBNYXliZSBhIGBub2Rlc01vdmVkYCBlbWl0dGVyIHdvdWxkIG1ha2UgZm9yIHNlbnNlIGZvciB1cGRhdGluZyBsaXN0cyB0aGF0IHVzZWQgdG9cbiAgICAvLyBpbmNsdWRlIGEgbm9kZSBhbmQgbGlzdHMgdGhhdCB0aGUgbm9kZSB3YXMgbW92ZWQgdG8uXG4gICAgcmVhZG9ubHkgbm9kZXNEZWxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOb2RlW10+KCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { NodeDataSourceRemote } from '../node-entries/node-data-source-remote';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./ui.service";
|
|
7
|
+
import * as i2 from "../node-entries/node-entries-global.service";
|
|
8
|
+
export class NodeEntriesService {
|
|
9
|
+
get dataSource() {
|
|
10
|
+
return this.dataSource$.value;
|
|
11
|
+
}
|
|
12
|
+
set dataSource(value) {
|
|
13
|
+
this.dataSource$.next(value);
|
|
14
|
+
}
|
|
15
|
+
get paginationStrategy() {
|
|
16
|
+
return this.entriesGlobal.getPaginationStrategy(this.scope);
|
|
17
|
+
}
|
|
18
|
+
get columns() {
|
|
19
|
+
return this.columnsSubject.value;
|
|
20
|
+
}
|
|
21
|
+
set columns(value) {
|
|
22
|
+
this.columnsSubject.next(value);
|
|
23
|
+
}
|
|
24
|
+
get options() {
|
|
25
|
+
return this.options$.value;
|
|
26
|
+
}
|
|
27
|
+
set options(options) {
|
|
28
|
+
this.options$.next(options);
|
|
29
|
+
}
|
|
30
|
+
get sort() {
|
|
31
|
+
return this.sortSubject.value;
|
|
32
|
+
}
|
|
33
|
+
set sort(value) {
|
|
34
|
+
this.sortSubject.next(value);
|
|
35
|
+
}
|
|
36
|
+
get gridConfig() {
|
|
37
|
+
return this.gridConfig$.value;
|
|
38
|
+
}
|
|
39
|
+
set gridConfig(value) {
|
|
40
|
+
this.gridConfig$.next(value);
|
|
41
|
+
}
|
|
42
|
+
constructor(uiService, entriesGlobal) {
|
|
43
|
+
this.uiService = uiService;
|
|
44
|
+
this.entriesGlobal = entriesGlobal;
|
|
45
|
+
this.dataSource$ = new BehaviorSubject(null);
|
|
46
|
+
/**
|
|
47
|
+
* Subject that reflects the current columns configuration.
|
|
48
|
+
*
|
|
49
|
+
* Updated when loading configuration and through user interaction.
|
|
50
|
+
*/
|
|
51
|
+
this.columnsSubject = new BehaviorSubject(null);
|
|
52
|
+
this.selection = new SelectionModel(true, []);
|
|
53
|
+
this.options$ = new BehaviorSubject(null);
|
|
54
|
+
this.sortSubject = new BehaviorSubject(void 0);
|
|
55
|
+
this.gridConfig$ = new BehaviorSubject(null);
|
|
56
|
+
}
|
|
57
|
+
onClicked({ event, ...data }) {
|
|
58
|
+
if (event.ctrlKey || event.metaKey) {
|
|
59
|
+
this.selection.toggle(data.element);
|
|
60
|
+
}
|
|
61
|
+
else if (event.shiftKey) {
|
|
62
|
+
this.expandSelectionTo(data.element);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.clickItem.emit(data);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
onCheckboxChanged(node, checked) {
|
|
69
|
+
console.log(node, checked, this.uiService.shiftKeyPressed);
|
|
70
|
+
if (this.uiService.shiftKeyPressed) {
|
|
71
|
+
this.expandSelectionTo(node);
|
|
72
|
+
}
|
|
73
|
+
if (checked !== this.selection.isSelected(node)) {
|
|
74
|
+
this.selection.toggle(node);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
toggleSelectAll() {
|
|
78
|
+
if (this.isAllSelected()) {
|
|
79
|
+
this.selection.clear();
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.selectAll();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
loadMore(source) {
|
|
86
|
+
if (this.paginationStrategy !== 'infinite-scroll') {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
if (source === 'scroll' && this.disableInfiniteScroll) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
// TODO: focus next item when triggered via button.
|
|
93
|
+
if (this.dataSource instanceof NodeDataSourceRemote) {
|
|
94
|
+
return this.dataSource.loadMore();
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
if (this.dataSource.hasMore()) {
|
|
98
|
+
this.fetchData.emit({
|
|
99
|
+
offset: this.dataSource.getData().length,
|
|
100
|
+
reset: false,
|
|
101
|
+
});
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
selectAll() {
|
|
110
|
+
this.selection.select(...this.dataSource.getData());
|
|
111
|
+
}
|
|
112
|
+
isAllSelected() {
|
|
113
|
+
return this.dataSource.getData().every((node) => this.selection.isSelected(node));
|
|
114
|
+
}
|
|
115
|
+
expandSelectionTo(node) {
|
|
116
|
+
const nodeIndex = this.dataSource.getData().indexOf(node);
|
|
117
|
+
const selectionIndexes = this.selection.selected
|
|
118
|
+
.map((node) => this.dataSource.getData().indexOf(node))
|
|
119
|
+
.filter((index) => index >= 0);
|
|
120
|
+
if (Math.min(...selectionIndexes) < nodeIndex) {
|
|
121
|
+
for (let i = Math.min(...selectionIndexes) + 1; i <= nodeIndex; i++) {
|
|
122
|
+
this.selection.select(this.dataSource.getData()[i]);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else if (Math.max(...selectionIndexes) > nodeIndex) {
|
|
126
|
+
for (let i = nodeIndex; i < Math.max(...selectionIndexes); i++) {
|
|
127
|
+
this.selection.select(this.dataSource.getData()[i]);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodeEntriesService, deps: [{ token: i1.UIService }, { token: i2.NodeEntriesGlobalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
132
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodeEntriesService }); }
|
|
133
|
+
}
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodeEntriesService, decorators: [{
|
|
135
|
+
type: Injectable
|
|
136
|
+
}], ctorParameters: function () { return [{ type: i1.UIService }, { type: i2.NodeEntriesGlobalService }]; } });
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1lbnRyaWVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3NlcnZpY2VzL25vZGUtZW50cmllcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQWdCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBc0J2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7OztBQUcvRSxNQUFNLE9BQU8sa0JBQWtCO0lBUTNCLElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQXdCO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFPRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFpQjtRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBUUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsT0FBb0I7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJ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LENBQUMsR0FBRyxTQUFTLEVBQUU7WUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0o7YUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLFNBQVMsRUFBRTtZQUNsRCxLQUFLLElBQUksQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2RDtTQUNKO0lBQ0wsQ0FBQzs4R0EvSVEsa0JBQWtCO2tIQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBGZXRjaEV2ZW50LFxuICAgIEdyaWRDb25maWcsXG4gICAgSW50ZXJhY3Rpb25UeXBlLFxuICAgIExpc3REcmFnR3JvcENvbmZpZyxcbiAgICBMaXN0RXZlbnRJbnRlcmZhY2UsXG4gICAgTGlzdE9wdGlvbnMsXG4gICAgTGlzdFNvcnRDb25maWcsXG4gICAgTm9kZUNsaWNrRXZlbnQsXG4gICAgTm9kZUVudHJpZXNEYXRhVHlwZSxcbiAgICBOb2RlRW50cmllc0Rpc3BsYXlUeXBlLFxufSBmcm9tICcuLi9ub2RlLWVudHJpZXMvZW50cmllcy1tb2RlbCc7XG5pbXBvcnQgeyBOb2RlRGF0YVNvdXJjZSB9IGZyb20gJy4uL25vZGUtZW50cmllcy9ub2RlLWRhdGEtc291cmNlJztcbmltcG9ydCB7XG4gICAgTm9kZUVudHJpZXNHbG9iYWxTZXJ2aWNlLFxuICAgIFBhZ2luYXRpb25TdHJhdGVneSxcbn0gZnJvbSAnLi4vbm9kZS1lbnRyaWVzL25vZGUtZW50cmllcy1nbG9iYWwuc2VydmljZSc7XG5cbmltcG9ydCB7IE9wdGlvbkl0ZW0sIFNjb3BlIH0gZnJvbSAnLi4vdHlwZXMvb3B0aW9uLWl0ZW0nO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuLi90eXBlcy9saXN0LWl0ZW0nO1xuaW1wb3J0IHsgVUlTZXJ2aWNlIH0gZnJvbSAnLi91aS5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVEYXRhU291cmNlUmVtb3RlIH0gZnJvbSAnLi4vbm9kZS1lbnRyaWVzL25vZGUtZGF0YS1zb3VyY2UtcmVtb3RlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5vZGVFbnRyaWVzU2VydmljZTxUIGV4dGVuZHMgTm9kZUVudHJpZXNEYXRhVHlwZT4ge1xuICAgIGxpc3Q6IExpc3RFdmVudEludGVyZmFjZTxUPjtcbiAgICByZWFkb25seSBkYXRhU291cmNlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Tm9kZURhdGFTb3VyY2U8VD4gfCBudWxsPihudWxsKTtcbiAgICAvKipcbiAgICAgKiBzY29wZSB0aGUgY3VycmVudCBsaXN0IGlzIGluLCBlLmcuIHdvcmtzcGFjZVxuICAgICAqIFRoaXMgaXMgdXNlZCBmb3IgYWRkaXRpb25hbCBjb25maWcgaW5qZWN0aW9uIGJhc2VkIG9uIHRoZSBzY29wZVxuICAgICAqL1xuICAgIHNjb3BlOiBTY29wZTtcbiAgICBnZXQgZGF0YVNvdXJjZSgpOiBOb2RlRGF0YVNvdXJjZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UkLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgZGF0YVNvdXJjZSh2YWx1ZTogTm9kZURhdGFTb3VyY2U8VD4pIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlJC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IHBhZ2luYXRpb25TdHJhdGVneSgpOiBQYWdpbmF0aW9uU3RyYXRlZ3kge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRyaWVzR2xvYmFsLmdldFBhZ2luYXRpb25TdHJhdGVneSh0aGlzLnNjb3BlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU3ViamVjdCB0aGF0IHJlZmxlY3RzIHRoZSBjdXJyZW50IGNvbHVtbnMgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIFVwZGF0ZWQgd2hlbiBsb2FkaW5nIGNvbmZpZ3VyYXRpb24gYW5kIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi5cbiAgICAgKi9cbiAgICBjb2x1bW5zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGlzdEl0ZW1bXT4obnVsbCk7XG4gICAgZ2V0IGNvbHVtbnMoKTogTGlzdEl0ZW1bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbnNTdWJqZWN0LnZhbHVlO1xuICAgIH1cbiAgICBzZXQgY29sdW1ucyh2YWx1ZTogTGlzdEl0ZW1bXSkge1xuICAgICAgICB0aGlzLmNvbHVtbnNTdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgIH1cbiAgICBjb25maWd1cmVDb2x1bW5zOiBib29sZWFuO1xuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSBjb2x1bW5zIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uICovXG4gICAgY29sdW1uc0NoYW5nZTogRXZlbnRFbWl0dGVyPExpc3RJdGVtW10+O1xuICAgIGRpc3BsYXlUeXBlOiBOb2RlRW50cmllc0Rpc3BsYXlUeXBlO1xuICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUPih0cnVlLCBbXSk7XG4gICAgZWxlbWVudEludGVyYWN0aW9uVHlwZTogSW50ZXJhY3Rpb25UeXBlO1xuICAgIG9wdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMaXN0T3B0aW9ucz4obnVsbCk7XG4gICAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMkLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgb3B0aW9ucyhvcHRpb25zOiBMaXN0T3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMkLm5leHQob3B0aW9ucyk7XG4gICAgfVxuICAgIGNoZWNrYm94OiBib29sZWFuO1xuICAgIGdsb2JhbE9wdGlvbnM6IE9wdGlvbkl0ZW1bXTtcbiAgICBzb3J0U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGlzdFNvcnRDb25maWc+KHZvaWQgMCk7XG4gICAgZ2V0IHNvcnQoKTogTGlzdFNvcnRDb25maWcge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3J0U3ViamVjdC52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHNvcnQodmFsdWU6IExpc3RTb3J0Q29uZmlnKSB7XG4gICAgICAgIHRoaXMuc29ydFN1YmplY3QubmV4dCh2YWx1ZSk7XG4gICAgfVxuICAgIHNvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxMaXN0U29ydENvbmZpZz47XG4gICAgZHJhZ0Ryb3A6IExpc3REcmFnR3JvcENvbmZpZzxUPjtcbiAgICBjbGlja0l0ZW06IEV2ZW50RW1pdHRlcjxOb2RlQ2xpY2tFdmVudDxUPj47XG4gICAgZGJsQ2xpY2tJdGVtOiBFdmVudEVtaXR0ZXI8Tm9kZUNsaWNrRXZlbnQ8VD4+O1xuICAgIGZldGNoRGF0YTogRXZlbnRFbWl0dGVyPEZldGNoRXZlbnQ+O1xuICAgIHJlYWRvbmx5IGdyaWRDb25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHcmlkQ29uZmlnIHwgbnVsbD4obnVsbCk7XG4gICAgZ2V0IGdyaWRDb25maWcoKTogR3JpZENvbmZpZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWRDb25maWckLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgZ3JpZENvbmZpZyh2YWx1ZTogR3JpZENvbmZpZykge1xuICAgICAgICB0aGlzLmdyaWRDb25maWckLm5leHQodmFsdWUpO1xuICAgIH1cbiAgICBwcmltYXJ5SW5zdGFuY2U6IGJvb2xlYW47XG4gICAgc2luZ2xlQ2xpY2tIaW50OiAnZHluYW1pYycgfCAnc3RhdGljJztcbiAgICBkaXNhYmxlSW5maW5pdGVTY3JvbGw6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVpU2VydmljZTogVUlTZXJ2aWNlLCBwcml2YXRlIGVudHJpZXNHbG9iYWw6IE5vZGVFbnRyaWVzR2xvYmFsU2VydmljZSkge31cblxuICAgIG9uQ2xpY2tlZCh7IGV2ZW50LCAuLi5kYXRhIH06IE5vZGVDbGlja0V2ZW50PFQ+ICYgeyBldmVudDogTW91c2VFdmVudCB9KSB7XG4gICAgICAgIGlmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnRvZ2dsZShkYXRhLmVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZFNlbGVjdGlvblRvKGRhdGEuZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrSXRlbS5lbWl0KGRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DaGVja2JveENoYW5nZWQobm9kZTogVCwgY2hlY2tlZDogYm9vbGVhbikge1xuICAgICAgICBjb25zb2xlLmxvZyhub2RlLCBjaGVja2VkLCB0aGlzLnVpU2VydmljZS5zaGlmdEtleVByZXNzZWQpO1xuICAgICAgICBpZiAodGhpcy51aVNlcnZpY2Uuc2hpZnRLZXlQcmVzc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZFNlbGVjdGlvblRvKG5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoZWNrZWQgIT09IHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnRvZ2dsZShub2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZVNlbGVjdEFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxvYWRNb3JlKHNvdXJjZTogJ2J1dHRvbicgfCAnc2Nyb2xsJyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uU3RyYXRlZ3kgIT09ICdpbmZpbml0ZS1zY3JvbGwnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gJ3Njcm9sbCcgJiYgdGhpcy5kaXNhYmxlSW5maW5pdGVTY3JvbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPOiBmb2N1cyBuZXh0IGl0ZW0gd2hlbiB0cmlnZ2VyZWQgdmlhIGJ1dHRvbi5cbiAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZSBpbnN0YW5jZW9mIE5vZGVEYXRhU291cmNlUmVtb3RlKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuZGF0YVNvdXJjZSBhcyBOb2RlRGF0YVNvdXJjZVJlbW90ZSkubG9hZE1vcmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UuaGFzTW9yZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaERhdGEuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5kYXRhU291cmNlLmdldERhdGEoKS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHJlc2V0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RBbGwoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdCguLi50aGlzLmRhdGFTb3VyY2UuZ2V0RGF0YSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UuZ2V0RGF0YSgpLmV2ZXJ5KChub2RlKSA9PiB0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4cGFuZFNlbGVjdGlvblRvKG5vZGU6IFQpIHtcbiAgICAgICAgY29uc3Qgbm9kZUluZGV4ID0gdGhpcy5kYXRhU291cmNlLmdldERhdGEoKS5pbmRleE9mKG5vZGUpO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25JbmRleGVzID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRcbiAgICAgICAgICAgIC5tYXAoKG5vZGUpID0+IHRoaXMuZGF0YVNvdXJjZS5nZXREYXRhKCkuaW5kZXhPZihub2RlKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGluZGV4KSA9PiBpbmRleCA+PSAwKTtcbiAgICAgICAgaWYgKE1hdGgubWluKC4uLnNlbGVjdGlvbkluZGV4ZXMpIDwgbm9kZUluZGV4KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gTWF0aC5taW4oLi4uc2VsZWN0aW9uSW5kZXhlcykgKyAxOyBpIDw9IG5vZGVJbmRleDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHRoaXMuZGF0YVNvdXJjZS5nZXREYXRhKClbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKE1hdGgubWF4KC4uLnNlbGVjdGlvbkluZGV4ZXMpID4gbm9kZUluZGV4KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gbm9kZUluZGV4OyBpIDwgTWF0aC5tYXgoLi4uc2VsZWN0aW9uSW5kZXhlcyk7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdCh0aGlzLmRhdGFTb3VyY2UuZ2V0RGF0YSgpW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { RestConstants, } from 'ngx-edu-sharing-api';
|
|
3
|
+
import * as Workflow from '../types/workflow';
|
|
4
|
+
import { UIConstants } from '../util/ui-constants';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ngx-translate/core";
|
|
7
|
+
import * as i2 from "ngx-edu-sharing-api";
|
|
8
|
+
import * as i3 from "./repo-url.service";
|
|
9
|
+
export class NodeHelperService {
|
|
10
|
+
constructor(translate, apiHelpersService, networkService, configService, repoUrlService) {
|
|
11
|
+
this.translate = translate;
|
|
12
|
+
this.apiHelpersService = apiHelpersService;
|
|
13
|
+
this.networkService = networkService;
|
|
14
|
+
this.configService = configService;
|
|
15
|
+
this.repoUrlService = repoUrlService;
|
|
16
|
+
}
|
|
17
|
+
getCollectionScopeInfo(node) {
|
|
18
|
+
const scope = node.collection ? node.collection.scope : null;
|
|
19
|
+
let icon = 'help';
|
|
20
|
+
let scopeName = 'UNKNOWN';
|
|
21
|
+
if (scope === RestConstants.COLLECTIONSCOPE_MY) {
|
|
22
|
+
icon = 'lock';
|
|
23
|
+
scopeName = 'MY';
|
|
24
|
+
}
|
|
25
|
+
if (scope === RestConstants.COLLECTIONSCOPE_ORGA ||
|
|
26
|
+
scope === RestConstants.COLLECTIONSCOPE_CUSTOM) {
|
|
27
|
+
icon = 'group';
|
|
28
|
+
scopeName = 'SHARED';
|
|
29
|
+
}
|
|
30
|
+
if (scope === RestConstants.COLLECTIONSCOPE_ALL ||
|
|
31
|
+
scope === RestConstants.COLLECTIONSCOPE_CUSTOM_PUBLIC) {
|
|
32
|
+
icon = 'language';
|
|
33
|
+
scopeName = 'PUBLIC';
|
|
34
|
+
}
|
|
35
|
+
if (node.collection?.type === RestConstants.COLLECTIONTYPE_EDITORIAL) {
|
|
36
|
+
icon = 'star';
|
|
37
|
+
scopeName = 'TYPE_EDITORIAL';
|
|
38
|
+
}
|
|
39
|
+
if (node.collection?.type === RestConstants.COLLECTIONTYPE_MEDIA_CENTER) {
|
|
40
|
+
icon = 'business';
|
|
41
|
+
scopeName = 'TYPE_MEDIA_CENTER';
|
|
42
|
+
}
|
|
43
|
+
return { icon, scopeName };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Return the license icon of a node
|
|
47
|
+
*/
|
|
48
|
+
async getLicenseIcon(node) {
|
|
49
|
+
// prefer manual mapping instead of backend data to support custom states from local edits
|
|
50
|
+
const license = node.properties?.[RestConstants.CCM_PROP_LICENSE]?.[0];
|
|
51
|
+
if (license) {
|
|
52
|
+
return this.getLicenseIconByString(license);
|
|
53
|
+
}
|
|
54
|
+
return node.license ? this.repoUrlService.getRepoUrl(node.license.icon, node) : null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get a license icon by using the property value string
|
|
58
|
+
*/
|
|
59
|
+
getLicenseIconByString(string, useNoneAsFallback = true) {
|
|
60
|
+
let icon = string.replace(/_/g, '-').toLowerCase();
|
|
61
|
+
if (icon == '')
|
|
62
|
+
icon = 'none';
|
|
63
|
+
const LICENSE_ICONS = [
|
|
64
|
+
'cc-0',
|
|
65
|
+
'cc-by-nc',
|
|
66
|
+
'cc-by-nc-nd',
|
|
67
|
+
'cc-by-nc-sa',
|
|
68
|
+
'cc-by-nd',
|
|
69
|
+
'cc-by-sa',
|
|
70
|
+
'cc-by',
|
|
71
|
+
'copyright-free',
|
|
72
|
+
'copyright-license',
|
|
73
|
+
'custom',
|
|
74
|
+
'edu-nc-nd-noDo',
|
|
75
|
+
'edu-nc-nd',
|
|
76
|
+
'edu-p-nr-nd-noDo',
|
|
77
|
+
'edu-p-nr-nd',
|
|
78
|
+
'none',
|
|
79
|
+
'pdm',
|
|
80
|
+
'schulfunk',
|
|
81
|
+
'unterrichts-und-lehrmedien',
|
|
82
|
+
];
|
|
83
|
+
if (LICENSE_ICONS.indexOf(icon) == -1 && !useNoneAsFallback)
|
|
84
|
+
return null; // icon='none';
|
|
85
|
+
if (icon == 'none' && !useNoneAsFallback)
|
|
86
|
+
return null;
|
|
87
|
+
const result = this.apiHelpersService.getServerUrl() + '/../ccimages/licenses/' + icon + '.svg';
|
|
88
|
+
return this.repoUrlService.withCurrentOrigin(result);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Return a translated name of a license name for a node
|
|
92
|
+
* @param node
|
|
93
|
+
* @param translate
|
|
94
|
+
* @returns {string|any|string|any|string|any|string|any|string|any|string}
|
|
95
|
+
*/
|
|
96
|
+
getLicenseName(node) {
|
|
97
|
+
let prop = node.properties[RestConstants.CCM_PROP_LICENSE]?.[0];
|
|
98
|
+
if (!prop)
|
|
99
|
+
prop = '';
|
|
100
|
+
return this.getLicenseNameByString(prop);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Return a translated name for a license string
|
|
104
|
+
* @param string
|
|
105
|
+
* @param translate
|
|
106
|
+
* @returns {any}
|
|
107
|
+
*/
|
|
108
|
+
getLicenseNameByString(name) {
|
|
109
|
+
if (name == '') {
|
|
110
|
+
name = 'NONE';
|
|
111
|
+
}
|
|
112
|
+
return this.translate.instant('LICENSE.NAMES.' + name);
|
|
113
|
+
// return name.replace(/_/g,"-");
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* return the License URL (e.g. for CC_BY licenses) for a license string and version
|
|
117
|
+
* @param licenseProperty
|
|
118
|
+
* @param licenseVersion
|
|
119
|
+
*/
|
|
120
|
+
getLicenseUrlByString(licenseProperty, licenseVersion) {
|
|
121
|
+
const url = RestConstants.LICENSE_URLS[licenseProperty];
|
|
122
|
+
if (!url)
|
|
123
|
+
return null;
|
|
124
|
+
return url.replace('#version', licenseVersion);
|
|
125
|
+
}
|
|
126
|
+
getWorkflowStatusById(id) {
|
|
127
|
+
const workflows = this.getWorkflows();
|
|
128
|
+
return workflows.filter((w) => w.id === id)?.[0];
|
|
129
|
+
}
|
|
130
|
+
getWorkflowStatus(node, useFromConfig = false) {
|
|
131
|
+
let value = node.properties[RestConstants.CCM_PROP_WF_STATUS]?.[0];
|
|
132
|
+
if (!value) {
|
|
133
|
+
return this.getDefaultWorkflowStatus(useFromConfig);
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
current: this.getWorkflowStatusById(value),
|
|
137
|
+
initial: this.getWorkflowStatusById(value),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
getDefaultWorkflowStatus(useFromConfig = false) {
|
|
141
|
+
const result = {
|
|
142
|
+
current: null,
|
|
143
|
+
initial: null,
|
|
144
|
+
};
|
|
145
|
+
result.initial = this.getWorkflows()[0];
|
|
146
|
+
let defaultStatus = null;
|
|
147
|
+
if (useFromConfig) {
|
|
148
|
+
defaultStatus = this.configService.instant('workflow.defaultStatus');
|
|
149
|
+
}
|
|
150
|
+
if (defaultStatus) {
|
|
151
|
+
result.current = this.getWorkflows().find((w) => w.id === defaultStatus);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
result.current = result.initial;
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
getWorkflows() {
|
|
159
|
+
return this.configService.instant('workflow.workflows', [
|
|
160
|
+
Workflow.WORKFLOW_STATUS_UNCHECKED,
|
|
161
|
+
Workflow.WORKFLOW_STATUS_TO_CHECK,
|
|
162
|
+
Workflow.WORKFLOW_STATUS_HASFLAWS,
|
|
163
|
+
Workflow.WORKFLOW_STATUS_CHECKED,
|
|
164
|
+
]);
|
|
165
|
+
}
|
|
166
|
+
copyDataToNode(target, source) {
|
|
167
|
+
target.properties = source.properties;
|
|
168
|
+
target.name = source.name;
|
|
169
|
+
target.title = source.title;
|
|
170
|
+
}
|
|
171
|
+
isNodeCollection(node) {
|
|
172
|
+
return node.aspects?.includes(RestConstants.CCM_ASPECT_COLLECTION) || !!node.collection;
|
|
173
|
+
}
|
|
174
|
+
getSourceIconPath(src) {
|
|
175
|
+
return 'assets/images/sources/' + src.toLowerCase() + '.png';
|
|
176
|
+
}
|
|
177
|
+
getNodeLink(mode, node) {
|
|
178
|
+
if (!node?.ref) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
let data = null;
|
|
182
|
+
if (this.isNodeCollection(node)) {
|
|
183
|
+
data = {
|
|
184
|
+
routerLink: UIConstants.ROUTER_PREFIX + 'collections',
|
|
185
|
+
queryParams: { id: node.ref.id },
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
if (node.isDirectory) {
|
|
190
|
+
let path;
|
|
191
|
+
if (node.properties?.[RestConstants.CCM_PROP_EDUSCOPENAME]?.[0] ===
|
|
192
|
+
RestConstants.SAFE_SCOPE) {
|
|
193
|
+
path = UIConstants.ROUTER_PREFIX + 'workspace/safe';
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
path = UIConstants.ROUTER_PREFIX + 'workspace';
|
|
197
|
+
}
|
|
198
|
+
data = {
|
|
199
|
+
routerLink: path,
|
|
200
|
+
queryParams: { id: node.ref.id },
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
else if (node.ref) {
|
|
204
|
+
const fromHome = this.networkService.isFromHomeRepository(node);
|
|
205
|
+
data = {
|
|
206
|
+
routerLink: UIConstants.ROUTER_PREFIX + 'render/' + node.ref.id,
|
|
207
|
+
queryParams: {
|
|
208
|
+
repository: fromHome ? null : node.ref.repo,
|
|
209
|
+
proposal: node.proposal?.ref.id,
|
|
210
|
+
proposalCollection: node.proposalCollection?.ref.id,
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
if (data === null) {
|
|
216
|
+
return '';
|
|
217
|
+
}
|
|
218
|
+
if (mode === 'routerLink') {
|
|
219
|
+
return '/' + data.routerLink;
|
|
220
|
+
}
|
|
221
|
+
// enforce clearing of parameters which should only be consumed once
|
|
222
|
+
data.queryParams.redirectFromSSO = null;
|
|
223
|
+
return data.queryParams;
|
|
224
|
+
}
|
|
225
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodeHelperService, deps: [{ token: i1.TranslateService }, { token: i2.ApiHelpersService }, { token: i2.NetworkService }, { token: i2.ConfigService }, { token: i3.RepoUrlService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
226
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodeHelperService, providedIn: 'root' }); }
|
|
227
|
+
}
|
|
228
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: NodeHelperService, decorators: [{
|
|
229
|
+
type: Injectable,
|
|
230
|
+
args: [{
|
|
231
|
+
providedIn: 'root',
|
|
232
|
+
}]
|
|
233
|
+
}], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.ApiHelpersService }, { type: i2.NetworkService }, { type: i2.ConfigService }, { type: i3.RepoUrlService }]; } });
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvc2VydmljZXMvbm9kZS1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFNSCxhQUFhLEdBQ2hCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBSW5ELE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsWUFDYyxTQUEyQixFQUMzQixpQkFBb0MsRUFDcEMsY0FBOEIsRUFDOUIsYUFBNEIsRUFDNUIsY0FBOEI7UUFKOUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQ3pDLENBQUM7SUFFRyxzQkFBc0IsQ0FBQyxJQUFVO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDN0QsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ2xCLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLEtBQUssS0FBSyxhQUFhLENBQUMsa0JBQWtCLEVBQUU7WUFDNUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztZQUNkLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDcEI7UUFDRCxJQUNJLEtBQUssS0FBSyxhQUFhLENB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bmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBcGlIZWxwZXJzU2VydmljZSxcbiAgICBDb25maWdTZXJ2aWNlLFxuICAgIE5ldHdvcmtTZXJ2aWNlLFxuICAgIE5vZGUsXG4gICAgUHJvcG9zYWxOb2RlLFxuICAgIFJlc3RDb25zdGFudHMsXG59IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0ICogYXMgV29ya2Zsb3cgZnJvbSAnLi4vdHlwZXMvd29ya2Zsb3cnO1xuaW1wb3J0IHsgUmVwb1VybFNlcnZpY2UgfSBmcm9tICcuL3JlcG8tdXJsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFVJQ29uc3RhbnRzIH0gZnJvbSAnLi4vdXRpbC91aS1jb25zdGFudHMnO1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTm9kZUhlbHBlclNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgYXBpSGVscGVyc1NlcnZpY2U6IEFwaUhlbHBlcnNTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgbmV0d29ya1NlcnZpY2U6IE5ldHdvcmtTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHJlcG9VcmxTZXJ2aWNlOiBSZXBvVXJsU2VydmljZSxcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgZ2V0Q29sbGVjdGlvblNjb3BlSW5mbyhub2RlOiBOb2RlKTogeyBpY29uOiBzdHJpbmc7IHNjb3BlTmFtZTogc3RyaW5nIH0ge1xuICAgICAgICBjb25zdCBzY29wZSA9IG5vZGUuY29sbGVjdGlvbiA/IG5vZGUuY29sbGVjdGlvbi5zY29wZSA6IG51bGw7XG4gICAgICAgIGxldCBpY29uID0gJ2hlbHAnO1xuICAgICAgICBsZXQgc2NvcGVOYW1lID0gJ1VOS05PV04nO1xuICAgICAgICBpZiAoc2NvcGUgPT09IFJlc3RDb25zdGFudHMuQ09MTEVDVElPTlNDT1BFX01ZKSB7XG4gICAgICAgICAgICBpY29uID0gJ2xvY2snO1xuICAgICAgICAgICAgc2NvcGVOYW1lID0gJ01ZJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBzY29wZSA9PT0gUmVzdENvbnN0YW50cy5DT0xMRUNUSU9OU0NPUEVfT1JHQSB8fFxuICAgICAgICAgICAgc2NvcGUgPT09IFJlc3RDb25zdGFudHMuQ09MTEVDVElPTlNDT1BFX0NVU1RPTVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGljb24gPSAnZ3JvdXAnO1xuICAgICAgICAgICAgc2NvcGVOYW1lID0gJ1NIQVJFRCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgc2NvcGUgPT09IFJlc3RDb25zdGFudHMuQ09MTEVDVElPTlNDT1BFX0FMTCB8fFxuICAgICAgICAgICAgc2NvcGUgPT09IFJlc3RDb25zdGFudHMuQ09MTEVDVElPTlNDT1BFX0NVU1RPTV9QVUJMSUNcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpY29uID0gJ2xhbmd1YWdlJztcbiAgICAgICAgICAgIHNjb3BlTmFtZSA9ICdQVUJMSUMnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmNvbGxlY3Rpb24/LnR5cGUgPT09IFJlc3RDb25zdGFudHMuQ09MTEVDVElPTlRZUEVfRURJVE9SSUFMKSB7XG4gICAgICAgICAgICBpY29uID0gJ3N0YXInO1xuICAgICAgICAgICAgc2NvcGVOYW1lID0gJ1RZUEVfRURJVE9SSUFMJztcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5jb2xsZWN0aW9uPy50eXBlID09PSBSZXN0Q29uc3RhbnRzLkNPTExFQ1RJT05UWVBFX01FRElBX0NFTlRFUikge1xuICAgICAgICAgICAgaWNvbiA9ICdidXNpbmVzcyc7XG4gICAgICAgICAgICBzY29wZU5hbWUgPSAnVFlQRV9NRURJQV9DRU5URVInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGljb24sIHNjb3BlTmFtZSB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIGxpY2Vuc2UgaWNvbiBvZiBhIG5vZGVcbiAgICAgKi9cbiAgICBhc3luYyBnZXRMaWNlbnNlSWNvbihub2RlOiBOb2RlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgLy8gcHJlZmVyIG1hbnVhbCBtYXBwaW5nIGluc3RlYWQgb2YgYmFja2VuZCBkYXRhIHRvIHN1cHBvcnQgY3VzdG9tIHN0YXRlcyBmcm9tIGxvY2FsIGVkaXRzXG4gICAgICAgIGNvbnN0IGxpY2Vuc2UgPSBub2RlLnByb3BlcnRpZXM/LltSZXN0Q29uc3RhbnRzLkNDTV9QUk9QX0xJQ0VOU0VdPy5bMF07XG4gICAgICAgIGlmIChsaWNlbnNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMaWNlbnNlSWNvbkJ5U3RyaW5nKGxpY2Vuc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlLmxpY2Vuc2UgPyB0aGlzLnJlcG9VcmxTZXJ2aWNlLmdldFJlcG9Vcmwobm9kZS5saWNlbnNlLmljb24sIG5vZGUpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYSBsaWNlbnNlIGljb24gYnkgdXNpbmcgdGhlIHByb3BlcnR5IHZhbHVlIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRMaWNlbnNlSWNvbkJ5U3RyaW5nKHN0cmluZzogU3RyaW5nLCB1c2VOb25lQXNGYWxsYmFjayA9IHRydWUpOiBzdHJpbmcge1xuICAgICAgICBsZXQgaWNvbiA9IHN0cmluZy5yZXBsYWNlKC9fL2csICctJykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKGljb24gPT0gJycpIGljb24gPSAnbm9uZSc7XG5cbiAgICAgICAgY29uc3QgTElDRU5TRV9JQ09OUyA9IFtcbiAgICAgICAgICAgICdjYy0wJyxcbiAgICAgICAgICAgICdjYy1ieS1uYycsXG4gICAgICAgICAgICAnY2MtYnktbmMtbmQnLFxuICAgICAgICAgICAgJ2NjLWJ5LW5jLXNhJyxcbiAgICAgICAgICAgICdjYy1ieS1uZCcsXG4gICAgICAgICAgICAnY2MtYnktc2EnLFxuICAgICAgICAgICAgJ2NjLWJ5JyxcbiAgICAgICAgICAgICdjb3B5cmlnaHQtZnJlZScsXG4gICAgICAgICAgICAnY29weXJpZ2h0LWxpY2Vuc2UnLFxuICAgICAgICAgICAgJ2N1c3RvbScsXG4gICAgICAgICAgICAnZWR1LW5jLW5kLW5vRG8nLFxuICAgICAgICAgICAgJ2VkdS1uYy1uZCcsXG4gICAgICAgICAgICAnZWR1LXAtbnItbmQtbm9EbycsXG4gICAgICAgICAgICAnZWR1LXAtbnItbmQnLFxuICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgJ3BkbScsXG4gICAgICAgICAgICAnc2NodWxmdW5rJyxcbiAgICAgICAgICAgICd1bnRlcnJpY2h0cy11bmQtbGVocm1lZGllbicsXG4gICAgICAgIF07XG4gICAgICAgIGlmIChMSUNFTlNFX0lDT05TLmluZGV4T2YoaWNvbikgPT0gLTEgJiYgIXVzZU5vbmVBc0ZhbGxiYWNrKSByZXR1cm4gbnVsbDsgLy8gaWNvbj0nbm9uZSc7XG4gICAgICAgIGlmIChpY29uID09ICdub25lJyAmJiAhdXNlTm9uZUFzRmFsbGJhY2spIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICAgICAgdGhpcy5hcGlIZWxwZXJzU2VydmljZS5nZXRTZXJ2ZXJVcmwoKSArICcvLi4vY2NpbWFnZXMvbGljZW5zZXMvJyArIGljb24gKyAnLnN2Zyc7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcG9VcmxTZXJ2aWNlLndpdGhDdXJyZW50T3JpZ2luKHJlc3VsdCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIHRyYW5zbGF0ZWQgbmFtZSBvZiBhIGxpY2Vuc2UgbmFtZSBmb3IgYSBub2RlXG4gICAgICogQHBhcmFtIG5vZGVcbiAgICAgKiBAcGFyYW0gdHJhbnNsYXRlXG4gICAgICogQHJldHVybnMge3N0cmluZ3xhbnl8c3RyaW5nfGFueXxzdHJpbmd8YW55fHN0cmluZ3xhbnl8c3RyaW5nfGFueXxzdHJpbmd9XG4gICAgICovXG4gICAgcHVibGljIGdldExpY2Vuc2VOYW1lKG5vZGU6IE5vZGUpIHtcbiAgICAgICAgbGV0IHByb3AgPSBub2RlLnByb3BlcnRpZXNbUmVzdENvbnN0YW50cy5DQ01fUFJPUF9MSUNFTlNFXT8uWzBdO1xuICAgICAgICBpZiAoIXByb3ApIHByb3AgPSAnJztcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGljZW5zZU5hbWVCeVN0cmluZyhwcm9wKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSB0cmFuc2xhdGVkIG5hbWUgZm9yIGEgbGljZW5zZSBzdHJpbmdcbiAgICAgKiBAcGFyYW0gc3RyaW5nXG4gICAgICogQHBhcmFtIHRyYW5zbGF0ZVxuICAgICAqIEByZXR1cm5zIHthbnl9XG4gICAgICovXG4gICAgcHVibGljIGdldExpY2Vuc2VOYW1lQnlTdHJpbmcobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChuYW1lID09ICcnKSB7XG4gICAgICAgICAgICBuYW1lID0gJ05PTkUnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdMSUNFTlNFLk5BTUVTLicgKyBuYW1lKTtcbiAgICAgICAgLy8gcmV0dXJuIG5hbWUucmVwbGFjZSgvXy9nLFwiLVwiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm4gdGhlIExpY2Vuc2UgVVJMIChlLmcuIGZvciBDQ19CWSBsaWNlbnNlcykgZm9yIGEgbGljZW5zZSBzdHJpbmcgYW5kIHZlcnNpb25cbiAgICAgKiBAcGFyYW0gbGljZW5zZVByb3BlcnR5XG4gICAgICogQHBhcmFtIGxpY2Vuc2VWZXJzaW9uXG4gICAgICovXG4gICAgcHVibGljIGdldExpY2Vuc2VVcmxCeVN0cmluZyhsaWNlbnNlUHJvcGVydHk6IHN0cmluZywgbGljZW5zZVZlcnNpb246IHN0cmluZykge1xuICAgICAgICBjb25zdCB1cmwgPSAoUmVzdENvbnN0YW50cy5MSUNFTlNFX1VSTFMgYXMgYW55KVtsaWNlbnNlUHJvcGVydHldO1xuICAgICAgICBpZiAoIXVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB1cmwucmVwbGFjZSgnI3ZlcnNpb24nLCBsaWNlbnNlVmVyc2lvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFdvcmtmbG93U3RhdHVzQnlJZChpZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHdvcmtmbG93cyA9IHRoaXMuZ2V0V29ya2Zsb3dzKCk7XG4gICAgICAgIHJldHVybiB3b3JrZmxvd3MuZmlsdGVyKCh3KSA9PiB3LmlkID09PSBpZCk/LlswXTtcbiAgICB9XG4gICAgcHVibGljIGdldFdvcmtmbG93U3RhdHVzKG5vZGU6IE5vZGUsIHVzZUZyb21Db25maWcgPSBmYWxzZSk6IFdvcmtmbG93LldvcmtmbG93RGVmaW5pdGlvblN0YXR1cyB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGUucHJvcGVydGllc1tSZXN0Q29uc3RhbnRzLkNDTV9QUk9QX1dGX1NUQVRVU10/LlswXTtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdFdvcmtmbG93U3RhdHVzKHVzZUZyb21Db25maWcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJyZW50OiB0aGlzLmdldFdvcmtmbG93U3RhdHVzQnlJZCh2YWx1ZSksXG4gICAgICAgICAgICBpbml0aWFsOiB0aGlzLmdldFdvcmtmbG93U3RhdHVzQnlJZCh2YWx1ZSksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldERlZmF1bHRXb3JrZmxvd1N0YXR1cyh1c2VGcm9tQ29uZmlnID0gZmFsc2UpOiBXb3JrZmxvdy5Xb3JrZmxvd0RlZmluaXRpb25TdGF0dXMge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgICAgICBjdXJyZW50OiBudWxsIGFzIFdvcmtmbG93LldvcmtmbG93RGVmaW5pdGlvbixcbiAgICAgICAgICAgIGluaXRpYWw6IG51bGwgYXMgV29ya2Zsb3cuV29ya2Zsb3dEZWZpbml0aW9uLFxuICAgICAgICB9O1xuICAgICAgICByZXN1bHQuaW5pdGlhbCA9IHRoaXMuZ2V0V29ya2Zsb3dzKClbMF07XG4gICAgICAgIGxldCBkZWZhdWx0U3RhdHVzOiBzdHJpbmcgPSBudWxsO1xuICAgICAgICBpZiAodXNlRnJvbUNvbmZpZykge1xuICAgICAgICAgICAgZGVmYXVsdFN0YXR1cyA9IHRoaXMuY29uZmlnU2VydmljZS5pbnN0YW50KCd3b3JrZmxvdy5kZWZhdWx0U3RhdHVzJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZmF1bHRTdGF0dXMpIHtcbiAgICAgICAgICAgIHJlc3VsdC5jdXJyZW50ID0gdGhpcy5nZXRXb3JrZmxvd3MoKS5maW5kKCh3KSA9PiB3LmlkID09PSBkZWZhdWx0U3RhdHVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5jdXJyZW50ID0gcmVzdWx0LmluaXRpYWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0V29ya2Zsb3dzKCk6IFdvcmtmbG93LldvcmtmbG93RGVmaW5pdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS5pbnN0YW50KCd3b3JrZmxvdy53b3JrZmxvd3MnLCBbXG4gICAgICAgICAgICBXb3JrZmxvdy5XT1JLRkxPV19TVEFUVVNfVU5DSEVDS0VELFxuICAgICAgICAgICAgV29ya2Zsb3cuV09SS0ZMT1dfU1RBVFVTX1RPX0NIRUNLLFxuICAgICAgICAgICAgV29ya2Zsb3cuV09SS0ZMT1dfU1RBVFVTX0hBU0ZMQVdTLFxuICAgICAgICAgICAgV29ya2Zsb3cuV09SS0ZMT1dfU1RBVFVTX0NIRUNLRUQsXG4gICAgICAgIF0pO1xuICAgIH1cbiAgICBjb3B5RGF0YVRvTm9kZTxUIGV4dGVuZHMgTm9kZT4odGFyZ2V0OiBULCBzb3VyY2U6IFQpIHtcbiAgICAgICAgdGFyZ2V0LnByb3BlcnRpZXMgPSBzb3VyY2UucHJvcGVydGllcztcbiAgICAgICAgdGFyZ2V0Lm5hbWUgPSBzb3VyY2UubmFtZTtcbiAgICAgICAgdGFyZ2V0LnRpdGxlID0gc291cmNlLnRpdGxlO1xuICAgIH1cbiAgICBpc05vZGVDb2xsZWN0aW9uKG5vZGU6IE5vZGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuYXNwZWN0cz8uaW5jbHVkZXMoUmVzdENvbnN0YW50cy5DQ01fQVNQRUNUX0NPTExFQ1RJT04pIHx8ICEhbm9kZS5jb2xsZWN0aW9uO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0U291cmNlSWNvblBhdGgoc3JjOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuICdhc3NldHMvaW1hZ2VzL3NvdXJjZXMvJyArIHNyYy50b0xvd2VyQ2FzZSgpICsgJy5wbmcnO1xuICAgIH1cblxuICAgIGdldE5vZGVMaW5rKG1vZGU6ICdyb3V0ZXJMaW5rJyB8ICdxdWVyeVBhcmFtcycsIG5vZGU6IE5vZGUpIHtcbiAgICAgICAgaWYgKCFub2RlPy5yZWYpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkYXRhOiB7IHJvdXRlckxpbms6IHN0cmluZzsgcXVlcnlQYXJhbXM6IFBhcmFtcyB9ID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuaXNOb2RlQ29sbGVjdGlvbihub2RlKSkge1xuICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiBVSUNvbnN0YW50cy5ST1VURVJfUFJFRklYICsgJ2NvbGxlY3Rpb25zJyxcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogeyBpZDogbm9kZS5yZWYuaWQgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobm9kZS5pc0RpcmVjdG9yeSkge1xuICAgICAgICAgICAgICAgIGxldCBwYXRoO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5wcm9wZXJ0aWVzPy5bUmVzdENvbnN0YW50cy5DQ01fUFJPUF9FRFVTQ09QRU5BTUVdPy5bMF0gPT09XG4gICAgICAgICAgICAgICAgICAgIFJlc3RDb25zdGFudHMuU0FGRV9TQ09QRVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBwYXRoID0gVUlDb25zdGFudHMuUk9VVEVSX1BSRUZJWCArICd3b3Jrc3BhY2Uvc2FmZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IFVJQ29uc3RhbnRzLlJPVVRFUl9QUkVGSVggKyAnd29ya3NwYWNlJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyTGluazogcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgaWQ6IG5vZGUucmVmLmlkIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5yZWYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmcm9tSG9tZSA9IHRoaXMubmV0d29ya1NlcnZpY2UuaXNGcm9tSG9tZVJlcG9zaXRvcnkobm9kZSk7XG4gICAgICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyTGluazogVUlDb25zdGFudHMuUk9VVEVSX1BSRUZJWCArICdyZW5kZXIvJyArIG5vZGUucmVmLmlkLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeTogZnJvbUhvbWUgPyBudWxsIDogbm9kZS5yZWYucmVwbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3Bvc2FsOiAobm9kZSBhcyBQcm9wb3NhbE5vZGUpLnByb3Bvc2FsPy5yZWYuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wb3NhbENvbGxlY3Rpb246IChub2RlIGFzIFByb3Bvc2FsTm9kZSkucHJvcG9zYWxDb2xsZWN0aW9uPy5yZWYuaWQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb2RlID09PSAncm91dGVyTGluaycpIHtcbiAgICAgICAgICAgIHJldHVybiAnLycgKyBkYXRhLnJvdXRlckxpbms7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZW5mb3JjZSBjbGVhcmluZyBvZiBwYXJhbWV0ZXJzIHdoaWNoIHNob3VsZCBvbmx5IGJlIGNvbnN1bWVkIG9uY2VcbiAgICAgICAgZGF0YS5xdWVyeVBhcmFtcy5yZWRpcmVjdEZyb21TU08gPSBudWxsO1xuICAgICAgICByZXR1cm4gZGF0YS5xdWVyeVBhcmFtcztcbiAgICB9XG59XG4iXX0=
|