@alfresco/aca-content 4.0.0 → 4.1.0
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/{lib/components/create-menu/create-menu.component.d.ts → about/about.component.d.ts} +15 -16
- package/about/aca-about.module.d.ts +9 -0
- package/about/assets/about.plugin.json +47 -0
- package/about/dev-mode.tokens.d.ts +25 -0
- package/about/index.d.ts +5 -0
- package/about/package-json.token.d.ts +25 -0
- package/about/public-api.d.ts +27 -0
- package/assets/app.extensions.json +158 -131
- package/assets/i18n/ar.json +10 -26
- package/assets/i18n/cs.json +10 -26
- package/assets/i18n/da.json +9 -25
- package/assets/i18n/de.json +8 -24
- package/assets/i18n/en.json +9 -25
- package/assets/i18n/es.json +8 -24
- package/assets/i18n/fi.json +9 -25
- package/assets/i18n/fr.json +9 -25
- package/assets/i18n/it.json +9 -25
- package/assets/i18n/ja.json +9 -25
- package/assets/i18n/nb.json +9 -25
- package/assets/i18n/nl.json +8 -24
- package/assets/i18n/pl.json +10 -26
- package/assets/i18n/pt-BR.json +9 -25
- package/assets/i18n/ru.json +10 -26
- package/assets/i18n/sv.json +9 -25
- package/assets/i18n/zh-CN.json +8 -24
- package/esm2020/about/about.component.mjs +73 -0
- package/esm2020/about/aca-about.module.mjs +46 -0
- package/esm2020/about/alfresco-aca-content-about.mjs +5 -0
- package/esm2020/about/dev-mode.tokens.mjs +26 -0
- package/esm2020/about/package-json.token.mjs +26 -0
- package/esm2020/about/public-api.mjs +28 -0
- package/esm2020/folder-rules/alfresco-aca-content-folder-rules.mjs +5 -0
- package/esm2020/folder-rules/folder-rules.module.mjs +123 -0
- package/esm2020/folder-rules/folder-rules.rules.mjs +28 -0
- package/esm2020/folder-rules/manage-rules/manage-rules.smart-component.mjs +240 -0
- package/esm2020/folder-rules/model/action-parameter-constraint.model.mjs +25 -0
- package/esm2020/folder-rules/model/rule-action.model.mjs +26 -0
- package/esm2020/folder-rules/model/rule-composite-condition.model.mjs +25 -0
- package/esm2020/folder-rules/model/rule-grouping-item.model.mjs +25 -0
- package/esm2020/folder-rules/model/rule-set.model.mjs +25 -0
- package/esm2020/folder-rules/model/rule-simple-condition.model.mjs +25 -0
- package/esm2020/folder-rules/model/rule.model.mjs +25 -0
- package/esm2020/folder-rules/public-api.mjs +26 -0
- package/esm2020/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +112 -0
- package/esm2020/folder-rules/rule-details/actions/rule-action.ui-component.mjs +277 -0
- package/esm2020/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +159 -0
- package/esm2020/folder-rules/rule-details/conditions/rule-condition-comparators.mjs +87 -0
- package/esm2020/folder-rules/rule-details/conditions/rule-condition-fields.mjs +62 -0
- package/esm2020/folder-rules/rule-details/conditions/rule-mime-types.mjs +25 -0
- package/esm2020/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +144 -0
- package/esm2020/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +70 -0
- package/esm2020/folder-rules/rule-details/options/rule-options.ui-component.mjs +134 -0
- package/esm2020/folder-rules/rule-details/rule-details.ui-component.mjs +166 -0
- package/esm2020/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +85 -0
- package/esm2020/folder-rules/rule-details/validators/rule-actions.validator.mjs +37 -0
- package/esm2020/folder-rules/rule-details/validators/rule-composite-condition.validator.mjs +31 -0
- package/esm2020/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +142 -0
- package/esm2020/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +77 -0
- package/esm2020/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +56 -0
- package/esm2020/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +104 -0
- package/esm2020/folder-rules/services/actions.service.mjs +114 -0
- package/esm2020/folder-rules/services/folder-rule-sets.service.mjs +221 -0
- package/esm2020/folder-rules/services/folder-rules.service.mjs +193 -0
- package/esm2020/lib/aca-content.module.mjs +55 -90
- package/esm2020/lib/aca-content.routes.mjs +2 -2
- package/esm2020/lib/components/common/common.module.mjs +8 -39
- package/esm2020/lib/components/common/language-picker/language-picker.component.mjs +18 -11
- package/esm2020/lib/components/common/location-link/location-link.component.mjs +17 -16
- package/esm2020/lib/components/common/logout/logout.component.mjs +16 -9
- package/esm2020/lib/components/common/toggle-shared/toggle-shared.component.mjs +29 -18
- package/esm2020/lib/components/common/user-info/user-info.component.mjs +24 -13
- package/esm2020/lib/components/context-menu/context-menu-item.component.mjs +16 -10
- package/esm2020/lib/components/context-menu/context-menu-outside-event.directive.mjs +5 -4
- package/esm2020/lib/components/context-menu/context-menu.component.mjs +29 -15
- package/esm2020/lib/components/context-menu/context-menu.service.mjs +5 -6
- package/esm2020/lib/components/details/details.component.mjs +41 -23
- package/esm2020/lib/components/dl-custom-components/document-list-custom-components.module.mjs +7 -15
- package/esm2020/lib/components/dl-custom-components/name-column/name-column.component.mjs +16 -16
- package/esm2020/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +34 -12
- package/esm2020/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +32 -15
- package/esm2020/lib/components/favorite-libraries/favorite-libraries.component.mjs +17 -28
- package/esm2020/lib/components/favorites/favorites.component.mjs +18 -34
- package/esm2020/lib/components/files/files.component.mjs +28 -43
- package/esm2020/lib/components/home/home.component.mjs +7 -6
- package/esm2020/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +15 -10
- package/esm2020/lib/components/info-drawer/info.drawer.module.mjs +28 -47
- package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +39 -17
- package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +10 -7
- package/esm2020/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +13 -12
- package/esm2020/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +18 -10
- package/esm2020/lib/components/libraries/libraries.component.mjs +17 -27
- package/esm2020/lib/components/recent-files/recent-files.component.mjs +18 -37
- package/esm2020/lib/components/search/search-action-menu/search-action-menu.component.mjs +3 -3
- package/esm2020/lib/components/search/search-input/search-input.component.mjs +11 -6
- package/esm2020/lib/components/search/search-input-control/search-input-control.component.mjs +5 -5
- package/esm2020/lib/components/search/search-input.module.mjs +4 -4
- package/esm2020/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +5 -6
- package/esm2020/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +21 -30
- package/esm2020/lib/components/search/search-navigation.service.mjs +3 -3
- package/esm2020/lib/components/search/search-results/search-results.component.mjs +33 -41
- package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +6 -7
- package/esm2020/lib/components/search/search-results.module.mjs +31 -23
- package/esm2020/lib/components/shared-files/shared-files.component.mjs +18 -34
- package/esm2020/lib/components/shared-link-view/shared-link-view.component.mjs +9 -7
- package/esm2020/lib/components/shared-link-view/shared-link-view.module.mjs +5 -9
- package/esm2020/lib/components/sidenav/components/button-menu.component.mjs +5 -5
- package/esm2020/lib/components/sidenav/components/expand-menu.component.mjs +5 -5
- package/esm2020/lib/components/sidenav/components/sidenav-header.component.mjs +5 -5
- package/esm2020/lib/components/sidenav/directives/action.directive.mjs +3 -3
- package/esm2020/lib/components/sidenav/directives/active-link.directive.mjs +3 -3
- package/esm2020/lib/components/sidenav/directives/expansion-panel.directive.mjs +3 -3
- package/esm2020/lib/components/sidenav/directives/menu-panel.directive.mjs +3 -3
- package/esm2020/lib/components/sidenav/sidenav.component.mjs +3 -3
- package/esm2020/lib/components/sidenav/sidenav.module.mjs +11 -9
- package/esm2020/lib/components/sidenav/user-menu/user-menu.component.mjs +96 -0
- package/esm2020/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +10 -17
- package/esm2020/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +3 -3
- package/esm2020/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +3 -3
- package/esm2020/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +3 -3
- package/esm2020/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +3 -3
- package/esm2020/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.mjs +3 -3
- package/esm2020/lib/components/toolbar/toolbar.module.mjs +7 -13
- package/esm2020/lib/components/toolbar/view-node/view-node.component.mjs +3 -3
- package/esm2020/lib/components/trashcan/trashcan.component.mjs +37 -29
- package/esm2020/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +3 -3
- package/esm2020/lib/components/view-profile/view-profile.component.mjs +35 -16
- package/esm2020/lib/components/view-profile/view-profile.guard.mjs +5 -5
- package/esm2020/lib/dialogs/node-template/create-from-template.dialog.mjs +16 -15
- package/esm2020/lib/directives/directives.module.mjs +4 -4
- package/esm2020/lib/directives/document-list.directive.mjs +3 -3
- package/esm2020/lib/extensions/core.extensions.module.mjs +4 -4
- package/esm2020/lib/material.module.mjs +4 -4
- package/esm2020/lib/services/content-management.service.mjs +3 -3
- package/esm2020/lib/services/content-service-extension.service.mjs +3 -3
- package/esm2020/lib/services/content-url.service.mjs +3 -3
- package/esm2020/lib/services/node-actions.service.mjs +5 -5
- package/esm2020/lib/services/node-template.service.mjs +3 -3
- package/esm2020/lib/store/app-store.module.mjs +4 -4
- package/esm2020/lib/store/effects/app.effects.mjs +3 -3
- package/esm2020/lib/store/effects/contextmenu.effects.mjs +3 -3
- package/esm2020/lib/store/effects/download.effects.mjs +3 -3
- package/esm2020/lib/store/effects/favorite.effects.mjs +3 -3
- package/esm2020/lib/store/effects/library.effects.mjs +3 -3
- package/esm2020/lib/store/effects/node.effects.mjs +3 -3
- package/esm2020/lib/store/effects/search.effects.mjs +3 -3
- package/esm2020/lib/store/effects/template.effects.mjs +3 -3
- package/esm2020/lib/store/effects/upload.effects.mjs +5 -5
- package/esm2020/lib/store/effects/viewer.effects.mjs +5 -5
- package/esm2020/ms-office/actions/aos.actions.mjs +31 -0
- package/esm2020/ms-office/alfresco-aca-content-ms-office.mjs +5 -0
- package/esm2020/ms-office/aos-extension.module.mjs +54 -0
- package/esm2020/ms-office/aos-extension.service.mjs +134 -0
- package/esm2020/ms-office/effects/aos.effects.mjs +48 -0
- package/esm2020/ms-office/public-api.mjs +28 -0
- package/fesm2015/alfresco-aca-content-about.mjs +194 -0
- package/fesm2015/alfresco-aca-content-about.mjs.map +1 -0
- package/fesm2015/alfresco-aca-content-folder-rules.mjs +2479 -0
- package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +1 -0
- package/fesm2015/alfresco-aca-content-ms-office.mjs +260 -0
- package/fesm2015/alfresco-aca-content-ms-office.mjs.map +1 -0
- package/fesm2015/alfresco-aca-content.mjs +3457 -3847
- package/fesm2015/alfresco-aca-content.mjs.map +1 -1
- package/fesm2020/alfresco-aca-content-about.mjs +194 -0
- package/fesm2020/alfresco-aca-content-about.mjs.map +1 -0
- package/fesm2020/alfresco-aca-content-folder-rules.mjs +2538 -0
- package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +1 -0
- package/fesm2020/alfresco-aca-content-ms-office.mjs +282 -0
- package/fesm2020/alfresco-aca-content-ms-office.mjs.map +1 -0
- package/fesm2020/alfresco-aca-content.mjs +4622 -4995
- package/fesm2020/alfresco-aca-content.mjs.map +1 -1
- package/folder-rules/assets/folder-rules.plugin.json +71 -0
- package/folder-rules/assets/i18n/ar.json +144 -0
- package/folder-rules/assets/i18n/cs.json +144 -0
- package/folder-rules/assets/i18n/da.json +144 -0
- package/folder-rules/assets/i18n/de.json +144 -0
- package/folder-rules/assets/i18n/en.json +144 -0
- package/folder-rules/assets/i18n/es.json +144 -0
- package/folder-rules/assets/i18n/fi.json +144 -0
- package/folder-rules/assets/i18n/fr.json +144 -0
- package/folder-rules/assets/i18n/it.json +144 -0
- package/folder-rules/assets/i18n/ja.json +144 -0
- package/folder-rules/assets/i18n/nb.json +144 -0
- package/folder-rules/assets/i18n/nl.json +144 -0
- package/folder-rules/assets/i18n/pl.json +144 -0
- package/folder-rules/assets/i18n/pt-BR.json +144 -0
- package/folder-rules/assets/i18n/ru.json +144 -0
- package/folder-rules/assets/i18n/sv.json +144 -0
- package/folder-rules/assets/i18n/zh-CN.json +144 -0
- package/folder-rules/folder-rules.module.d.ts +51 -0
- package/folder-rules/folder-rules.rules.d.ts +27 -0
- package/folder-rules/index.d.ts +5 -0
- package/folder-rules/manage-rules/manage-rules.smart-component.d.ts +87 -0
- package/folder-rules/model/action-parameter-constraint.model.d.ts +31 -0
- package/folder-rules/model/rule-action.model.d.ts +48 -0
- package/folder-rules/model/rule-composite-condition.model.d.ts +30 -0
- package/folder-rules/model/rule-grouping-item.model.d.ts +34 -0
- package/folder-rules/model/rule-set.model.d.ts +34 -0
- package/folder-rules/model/rule-simple-condition.model.d.ts +28 -0
- package/folder-rules/model/rule.model.d.ts +58 -0
- package/folder-rules/public-api.d.ts +25 -0
- package/folder-rules/rule-details/actions/rule-action-list.ui-component.d.ts +47 -0
- package/folder-rules/rule-details/actions/rule-action.ui-component.d.ts +75 -0
- package/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.d.ts +60 -0
- package/folder-rules/rule-details/conditions/rule-condition-comparators.d.ts +30 -0
- package/folder-rules/rule-details/conditions/rule-condition-fields.d.ts +31 -0
- package/folder-rules/rule-details/conditions/rule-mime-types.d.ts +27 -0
- package/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.d.ts +62 -0
- package/folder-rules/rule-details/edit-rule-dialog.ui-component.d.ts +53 -0
- package/folder-rules/rule-details/options/rule-options.ui-component.d.ts +55 -0
- package/folder-rules/rule-details/rule-details.ui-component.d.ts +54 -0
- package/folder-rules/rule-details/triggers/rule-triggers.ui-component.d.ts +43 -0
- package/folder-rules/rule-details/validators/rule-actions.validator.d.ts +27 -0
- package/folder-rules/rule-details/validators/rule-composite-condition.validator.d.ts +25 -0
- package/folder-rules/rule-list/rule-list/rule-list.ui-component.d.ts +57 -0
- package/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.d.ts +44 -0
- package/{lib/components/node-version/node-version-form.component.d.ts → folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.d.ts} +10 -21
- package/folder-rules/rule-set-picker/rule-set-picker.smart-component.d.ts +61 -0
- package/folder-rules/services/actions.service.d.ts +28 -0
- package/folder-rules/services/folder-rule-sets.service.d.ts +49 -0
- package/folder-rules/services/folder-rules.service.d.ts +41 -0
- package/lib/aca-content.module.d.ts +37 -37
- package/lib/components/common/common.module.d.ts +29 -17
- package/lib/components/common/language-picker/language-picker.component.d.ts +1 -1
- package/lib/components/common/location-link/location-link.component.d.ts +1 -6
- package/lib/components/common/logout/logout.component.d.ts +2 -3
- package/lib/components/common/toggle-shared/toggle-shared.component.d.ts +9 -6
- package/lib/components/common/user-info/user-info.component.d.ts +15 -3
- package/lib/components/context-menu/context-menu-item.component.d.ts +1 -1
- package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +1 -1
- package/lib/components/context-menu/context-menu.component.d.ts +1 -1
- package/lib/components/details/details.component.d.ts +3 -6
- package/lib/components/dl-custom-components/document-list-custom-components.module.d.ts +4 -8
- package/lib/components/dl-custom-components/name-column/name-column.component.d.ts +3 -3
- package/lib/components/dl-custom-components/tags-column/tags-column.component.d.ts +5 -28
- package/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.d.ts +32 -12
- package/lib/components/favorite-libraries/favorite-libraries.component.d.ts +3 -8
- package/lib/components/favorites/favorites.component.d.ts +2 -12
- package/lib/components/files/files.component.d.ts +6 -15
- package/lib/components/info-drawer/comments-tab/comments-tab.component.d.ts +28 -3
- package/lib/components/info-drawer/info.drawer.module.d.ts +5 -12
- package/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.d.ts +5 -4
- package/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.d.ts +1 -1
- package/lib/components/info-drawer/metadata-tab/metadata-tab.component.d.ts +2 -2
- package/lib/components/info-drawer/versions-tab/versions-tab.component.d.ts +1 -1
- package/lib/components/libraries/libraries.component.d.ts +2 -31
- package/lib/components/recent-files/recent-files.component.d.ts +2 -13
- package/lib/components/search/search-input/search-input.component.d.ts +2 -1
- package/lib/components/search/search-libraries-results/search-libraries-results.component.d.ts +2 -31
- package/lib/components/search/search-results/search-results.component.d.ts +7 -13
- package/lib/components/search/search-results-row/search-results-row.component.d.ts +1 -1
- package/lib/components/search/search-results.module.d.ts +7 -5
- package/lib/components/shared-files/shared-files.component.d.ts +2 -11
- package/lib/components/shared-link-view/shared-link-view.component.d.ts +3 -2
- package/lib/components/shared-link-view/shared-link-view.module.d.ts +5 -6
- package/lib/components/sidenav/sidenav.module.d.ts +5 -5
- package/lib/components/sidenav/user-menu/user-menu.component.d.ts +58 -0
- package/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.d.ts +2 -1
- package/lib/components/toolbar/toolbar.module.d.ts +13 -15
- package/lib/components/trashcan/trashcan.component.d.ts +4 -35
- package/lib/components/view-profile/view-profile.component.d.ts +11 -4
- package/lib/components/view-profile/view-profile.guard.d.ts +2 -2
- package/lib/dialogs/node-template/create-from-template.dialog.d.ts +2 -2
- package/lib/store/effects/upload.effects.d.ts +3 -3
- package/ms-office/actions/aos.actions.d.ts +31 -0
- package/ms-office/aos-extension.module.d.ts +34 -0
- package/ms-office/aos-extension.service.d.ts +48 -0
- package/ms-office/assets/aos.plugin.json +74 -0
- package/ms-office/assets/i18n/ar.json +10 -0
- package/ms-office/assets/i18n/cs.json +10 -0
- package/ms-office/assets/i18n/da.json +10 -0
- package/ms-office/assets/i18n/de.json +10 -0
- package/ms-office/assets/i18n/en.json +10 -0
- package/ms-office/assets/i18n/es.json +10 -0
- package/ms-office/assets/i18n/fi.json +10 -0
- package/ms-office/assets/i18n/fr.json +10 -0
- package/ms-office/assets/i18n/it.json +10 -0
- package/ms-office/assets/i18n/ja.json +10 -0
- package/ms-office/assets/i18n/nb.json +10 -0
- package/ms-office/assets/i18n/nl.json +10 -0
- package/ms-office/assets/i18n/pl.json +10 -0
- package/ms-office/assets/i18n/pt-BR.json +10 -0
- package/ms-office/assets/i18n/ru.json +10 -0
- package/ms-office/assets/i18n/sv.json +10 -0
- package/ms-office/assets/i18n/zh-CN.json +10 -0
- package/ms-office/effects/aos.effects.d.ts +11 -0
- package/ms-office/index.d.ts +5 -0
- package/ms-office/public-api.d.ts +27 -0
- package/package.json +37 -2
- package/ui/application.scss +8 -0
- package/ui/overrides/adf-about.theme.scss +0 -5
- package/ui/overrides/adf-pagination.theme.scss +0 -1
- package/ui/overrides/ay11.scss +1 -1
- package/ui/variables/variables.scss +6 -13
- package/esm2020/lib/components/context-menu/context-menu.module.mjs +0 -76
- package/esm2020/lib/components/create-menu/create-menu.component.mjs +0 -73
- package/esm2020/lib/components/create-menu/create-menu.module.mjs +0 -44
- package/esm2020/lib/components/node-version/node-version-form.component.mjs +0 -70
- package/esm2020/lib/components/node-version/node-version.module.mjs +0 -78
- package/esm2020/lib/components/toolbar/document-display-mode/document-display-mode.component.mjs +0 -84
- package/esm2020/lib/components/trashcan/trashcan.module.mjs +0 -74
- package/esm2020/lib/components/view-profile/view-profile.module.mjs +0 -42
- package/lib/components/context-menu/context-menu.module.d.ts +0 -18
- package/lib/components/create-menu/create-menu.module.d.ts +0 -10
- package/lib/components/node-version/node-version.module.d.ts +0 -16
- package/lib/components/toolbar/document-display-mode/document-display-mode.component.d.ts +0 -13
- package/lib/components/trashcan/trashcan.module.d.ts +0 -16
- package/lib/components/view-profile/view-profile.module.d.ts +0 -9
package/esm2020/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Alfresco Example Content Application
|
|
5
|
+
*
|
|
6
|
+
* This file is part of the Alfresco Example Content Application.
|
|
7
|
+
* If the software was purchased under a paid Alfresco license, the terms of
|
|
8
|
+
* the paid license agreement will prevail. Otherwise, the software is
|
|
9
|
+
* provided under the following open source license terms:
|
|
10
|
+
*
|
|
11
|
+
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
import { Component, forwardRef, HostBinding, Input, ViewEncapsulation } from '@angular/core';
|
|
25
|
+
import { FormArray, FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
26
|
+
import * as i0 from "@angular/core";
|
|
27
|
+
import * as i1 from "@angular/common";
|
|
28
|
+
import * as i2 from "@angular/forms";
|
|
29
|
+
import * as i3 from "@angular/material/core";
|
|
30
|
+
import * as i4 from "@angular/material/button";
|
|
31
|
+
import * as i5 from "@angular/material/icon";
|
|
32
|
+
import * as i6 from "@angular/material/form-field";
|
|
33
|
+
import * as i7 from "@angular/material/select";
|
|
34
|
+
import * as i8 from "@angular/material/menu";
|
|
35
|
+
import * as i9 from "./rule-simple-condition.ui-component";
|
|
36
|
+
import * as i10 from "@ngx-translate/core";
|
|
37
|
+
export class RuleCompositeConditionUiComponent {
|
|
38
|
+
constructor() {
|
|
39
|
+
this.secondaryBackground = false;
|
|
40
|
+
this.childCondition = false;
|
|
41
|
+
this.form = new FormGroup({
|
|
42
|
+
inverted: new FormControl(),
|
|
43
|
+
booleanMode: new FormControl(),
|
|
44
|
+
compositeConditions: new FormArray([]),
|
|
45
|
+
simpleConditions: new FormArray([])
|
|
46
|
+
});
|
|
47
|
+
this.isOrImplemented = false;
|
|
48
|
+
this.readOnly = false;
|
|
49
|
+
this.formSubscription = this.form.valueChanges.subscribe((value) => {
|
|
50
|
+
this.onChange(value);
|
|
51
|
+
this.onTouch();
|
|
52
|
+
});
|
|
53
|
+
this.invertedControl = this.form.get('inverted');
|
|
54
|
+
this.booleanModeControl = this.form.get('booleanMode');
|
|
55
|
+
this.onChange = () => undefined;
|
|
56
|
+
this.onTouch = () => undefined;
|
|
57
|
+
}
|
|
58
|
+
get compositeConditionsFormArray() {
|
|
59
|
+
return this.form.get('compositeConditions');
|
|
60
|
+
}
|
|
61
|
+
get simpleConditionsFormArray() {
|
|
62
|
+
return this.form.get('simpleConditions');
|
|
63
|
+
}
|
|
64
|
+
get conditionFormControls() {
|
|
65
|
+
return [...this.compositeConditionsFormArray.controls, ...this.simpleConditionsFormArray.controls];
|
|
66
|
+
}
|
|
67
|
+
get hasNoConditions() {
|
|
68
|
+
return this.conditionFormControls.length === 0;
|
|
69
|
+
}
|
|
70
|
+
writeValue(value) {
|
|
71
|
+
this.form.get('inverted').setValue(value.inverted);
|
|
72
|
+
this.form.get('booleanMode').setValue(value.booleanMode);
|
|
73
|
+
this.form.setControl('compositeConditions', new FormArray(value.compositeConditions.map((condition) => new FormControl(condition))));
|
|
74
|
+
this.form.setControl('simpleConditions', new FormArray(value.simpleConditions.map((condition) => new FormControl(condition))));
|
|
75
|
+
}
|
|
76
|
+
registerOnChange(fn) {
|
|
77
|
+
this.onChange = fn;
|
|
78
|
+
}
|
|
79
|
+
registerOnTouched(fn) {
|
|
80
|
+
this.onTouch = fn;
|
|
81
|
+
}
|
|
82
|
+
setDisabledState(isDisabled) {
|
|
83
|
+
if (isDisabled) {
|
|
84
|
+
this.readOnly = true;
|
|
85
|
+
this.form.disable();
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.readOnly = false;
|
|
89
|
+
this.form.enable();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
isFormControlSimpleCondition(control) {
|
|
93
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
94
|
+
return control.value.hasOwnProperty('field');
|
|
95
|
+
}
|
|
96
|
+
removeCondition(control) {
|
|
97
|
+
const formArray = this.isFormControlSimpleCondition(control) ? this.simpleConditionsFormArray : this.compositeConditionsFormArray;
|
|
98
|
+
const index = formArray.value.indexOf(control.value);
|
|
99
|
+
formArray.removeAt(index);
|
|
100
|
+
}
|
|
101
|
+
addSimpleCondition() {
|
|
102
|
+
const newCondition = {
|
|
103
|
+
field: 'cm:name',
|
|
104
|
+
comparator: 'equals',
|
|
105
|
+
parameter: ''
|
|
106
|
+
};
|
|
107
|
+
this.simpleConditionsFormArray.push(new FormControl(newCondition));
|
|
108
|
+
}
|
|
109
|
+
addCompositeCondition() {
|
|
110
|
+
const newCondition = {
|
|
111
|
+
inverted: false,
|
|
112
|
+
booleanMode: 'and',
|
|
113
|
+
compositeConditions: [],
|
|
114
|
+
simpleConditions: []
|
|
115
|
+
};
|
|
116
|
+
this.compositeConditionsFormArray.push(new FormControl(newCondition));
|
|
117
|
+
}
|
|
118
|
+
ngOnDestroy() {
|
|
119
|
+
this.formSubscription.unsubscribe();
|
|
120
|
+
}
|
|
121
|
+
ngOnChanges(changes) {
|
|
122
|
+
const readOnly = changes['readOnly'].currentValue;
|
|
123
|
+
if (readOnly !== undefined && readOnly !== null) {
|
|
124
|
+
this.readOnly = readOnly;
|
|
125
|
+
this.setDisabledState(readOnly);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
RuleCompositeConditionUiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: RuleCompositeConditionUiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
130
|
+
RuleCompositeConditionUiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: RuleCompositeConditionUiComponent, selector: "aca-rule-composite-condition", inputs: { secondaryBackground: "secondaryBackground", childCondition: "childCondition", readOnly: "readOnly" }, host: { properties: { "class.secondaryBackground": "this.secondaryBackground", "class.childCompositeCondition": "this.childCondition" }, classAttribute: "aca-rule-composite-condition" }, providers: [
|
|
131
|
+
{
|
|
132
|
+
provide: NG_VALUE_ACCESSOR,
|
|
133
|
+
multi: true,
|
|
134
|
+
useExisting: forwardRef(() => RuleCompositeConditionUiComponent)
|
|
135
|
+
}
|
|
136
|
+
], usesOnChanges: true, ngImport: i0, template: "<form class=\"aca-rule-composite-condition__form\" [formGroup]=\"form\">\n <div *ngIf=\"hasNoConditions\" class=\"aca-rule-composite-condition__form__no-conditions\" data-automation-id=\"no-conditions\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.' + (childCondition ? 'NO_CONDITIONS_IN_GROUP' : 'NO_CONDITIONS') | translate }}\n </div>\n\n <div\n class=\"aca-rule-composite-condition__form__row\"\n *ngFor=\"let control of conditionFormControls; let i = index\">\n\n <mat-form-field *ngIf=\"i === 0\">\n <mat-select\n [formControl]=\"invertedControl\"\n [disabled]=\"readOnly\">\n <mat-option [value]=\"false\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.IF' | translate }}</mat-option>\n <mat-option [value]=\"true\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.NOT_IF' | translate }}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"i > 0\">\n <mat-select\n [disabled]=\"!isOrImplemented || i > 1 || readOnly\"\n [formControl]=\"booleanModeControl\">\n <mat-option value=\"and\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.AND' | translate }}</mat-option>\n <mat-option value=\"or\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.OR' | translate }}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <aca-rule-composite-condition\n *ngIf=\"!isFormControlSimpleCondition(control)\"\n [secondaryBackground]=\"!secondaryBackground\"\n [childCondition]=\"true\"\n [formControl]=\"control\"\n [readOnly]=\"readOnly\">\n </aca-rule-composite-condition>\n\n <aca-rule-simple-condition\n *ngIf=\"isFormControlSimpleCondition(control)\"\n [formControl]=\"control\"\n [readOnly]=\"readOnly\">\n </aca-rule-simple-condition>\n\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" *ngIf=\"!readOnly\" data-automation-id=\"condition-actions-button\">\n <mat-icon>more_vert</mat-icon>\n </button>\n\n <mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n [title]=\"'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.REMOVE' | translate\"\n (click)=\"removeCondition(control)\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.REMOVE' | translate }}</span>\n </button>\n </mat-menu>\n\n </div>\n\n <div class=\"aca-rule-composite-condition__form__actions\" *ngIf=\"!readOnly\" data-automation-id=\"add-actions\">\n <button mat-button (click)=\"addSimpleCondition()\" data-automation-id=\"add-condition-button\">\n <mat-icon>add</mat-icon>\n <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.ADD_CONDITION' | translate }}</span>\n </button>\n <button mat-button (click)=\"addCompositeCondition()\" data-automation-id=\"add-group-button\">\n <mat-icon>add</mat-icon>\n <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.ADD_GROUP' | translate }}</span>\n </button>\n </div>\n</form>\n", styles: [".aca-rule-composite-condition{display:block;border-radius:8px}.aca-rule-composite-condition.childCompositeCondition{padding:8px 16px;background-color:#fff}.aca-rule-composite-condition.childCompositeCondition.secondaryBackground{background-color:#f2f2f2}.aca-rule-composite-condition__form{display:flex;flex-direction:column;gap:8px}.aca-rule-composite-condition__form__no-conditions{color:var(--theme-disabled-text-color);margin:.5em 0}.aca-rule-composite-condition__form__row{display:flex;gap:8px}.aca-rule-composite-condition__form__row>:nth-child(1){width:5em;font-size:inherit}.aca-rule-composite-condition__form__row>:nth-child(2){flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: RuleCompositeConditionUiComponent, selector: "aca-rule-composite-condition", inputs: ["secondaryBackground", "childCondition", "readOnly"] }, { kind: "component", type: i9.RuleSimpleConditionUiComponent, selector: "aca-rule-simple-condition", inputs: ["readOnly"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: RuleCompositeConditionUiComponent, decorators: [{
|
|
138
|
+
type: Component,
|
|
139
|
+
args: [{ selector: 'aca-rule-composite-condition', encapsulation: ViewEncapsulation.None, host: { class: 'aca-rule-composite-condition' }, providers: [
|
|
140
|
+
{
|
|
141
|
+
provide: NG_VALUE_ACCESSOR,
|
|
142
|
+
multi: true,
|
|
143
|
+
useExisting: forwardRef(() => RuleCompositeConditionUiComponent)
|
|
144
|
+
}
|
|
145
|
+
], template: "<form class=\"aca-rule-composite-condition__form\" [formGroup]=\"form\">\n <div *ngIf=\"hasNoConditions\" class=\"aca-rule-composite-condition__form__no-conditions\" data-automation-id=\"no-conditions\">\n {{ 'ACA_FOLDER_RULES.RULE_DETAILS.' + (childCondition ? 'NO_CONDITIONS_IN_GROUP' : 'NO_CONDITIONS') | translate }}\n </div>\n\n <div\n class=\"aca-rule-composite-condition__form__row\"\n *ngFor=\"let control of conditionFormControls; let i = index\">\n\n <mat-form-field *ngIf=\"i === 0\">\n <mat-select\n [formControl]=\"invertedControl\"\n [disabled]=\"readOnly\">\n <mat-option [value]=\"false\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.IF' | translate }}</mat-option>\n <mat-option [value]=\"true\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.NOT_IF' | translate }}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"i > 0\">\n <mat-select\n [disabled]=\"!isOrImplemented || i > 1 || readOnly\"\n [formControl]=\"booleanModeControl\">\n <mat-option value=\"and\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.AND' | translate }}</mat-option>\n <mat-option value=\"or\">{{ 'ACA_FOLDER_RULES.RULE_DETAILS.LOGIC_OPERATORS.OR' | translate }}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <aca-rule-composite-condition\n *ngIf=\"!isFormControlSimpleCondition(control)\"\n [secondaryBackground]=\"!secondaryBackground\"\n [childCondition]=\"true\"\n [formControl]=\"control\"\n [readOnly]=\"readOnly\">\n </aca-rule-composite-condition>\n\n <aca-rule-simple-condition\n *ngIf=\"isFormControlSimpleCondition(control)\"\n [formControl]=\"control\"\n [readOnly]=\"readOnly\">\n </aca-rule-simple-condition>\n\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" *ngIf=\"!readOnly\" data-automation-id=\"condition-actions-button\">\n <mat-icon>more_vert</mat-icon>\n </button>\n\n <mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n [title]=\"'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.REMOVE' | translate\"\n (click)=\"removeCondition(control)\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.REMOVE' | translate }}</span>\n </button>\n </mat-menu>\n\n </div>\n\n <div class=\"aca-rule-composite-condition__form__actions\" *ngIf=\"!readOnly\" data-automation-id=\"add-actions\">\n <button mat-button (click)=\"addSimpleCondition()\" data-automation-id=\"add-condition-button\">\n <mat-icon>add</mat-icon>\n <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.ADD_CONDITION' | translate }}</span>\n </button>\n <button mat-button (click)=\"addCompositeCondition()\" data-automation-id=\"add-group-button\">\n <mat-icon>add</mat-icon>\n <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.CONDITION_BUTTONS.ADD_GROUP' | translate }}</span>\n </button>\n </div>\n</form>\n", styles: [".aca-rule-composite-condition{display:block;border-radius:8px}.aca-rule-composite-condition.childCompositeCondition{padding:8px 16px;background-color:#fff}.aca-rule-composite-condition.childCompositeCondition.secondaryBackground{background-color:#f2f2f2}.aca-rule-composite-condition__form{display:flex;flex-direction:column;gap:8px}.aca-rule-composite-condition__form__no-conditions{color:var(--theme-disabled-text-color);margin:.5em 0}.aca-rule-composite-condition__form__row{display:flex;gap:8px}.aca-rule-composite-condition__form__row>:nth-child(1){width:5em;font-size:inherit}.aca-rule-composite-condition__form__row>:nth-child(2){flex:1}\n"] }]
|
|
146
|
+
}], propDecorators: { secondaryBackground: [{
|
|
147
|
+
type: HostBinding,
|
|
148
|
+
args: ['class.secondaryBackground']
|
|
149
|
+
}, {
|
|
150
|
+
type: Input
|
|
151
|
+
}], childCondition: [{
|
|
152
|
+
type: HostBinding,
|
|
153
|
+
args: ['class.childCompositeCondition']
|
|
154
|
+
}, {
|
|
155
|
+
type: Input
|
|
156
|
+
}], readOnly: [{
|
|
157
|
+
type: Input
|
|
158
|
+
}] } });
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1jb21wb3NpdGUtY29uZGl0aW9uLnVpLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvcnVsZS1kZXRhaWxzL2NvbmRpdGlvbnMvcnVsZS1jb21wb3NpdGUtY29uZGl0aW9uLnVpLWNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvcnVsZS1kZXRhaWxzL2NvbmRpdGlvbnMvcnVsZS1jb21wb3NpdGUtY29uZGl0aW9uLnVpLWNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBdUMsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEksT0FBTyxFQUF3QixTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFpQjVHLE1BQU0sT0FBTyxpQ0FBaUM7SUFkOUM7UUFpQkUsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRzVCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUNuQixRQUFRLEVBQUUsSUFBSSxXQUFXLEVBQUU7WUFDM0IsV0FBVyxFQUFFLElBQUksV0FBVyxFQUFFO1lBQzlCLG1CQUFtQixFQUFFLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxnQkFBZ0IsRUFBRSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDcEMsQ0FBQyxDQUFDO1FBRU0sb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFHMUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixxQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUN6RSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUVJLG9CQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFnQixDQUFDO1FBQzNELHVCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBZ0IsQ0FBQztRQWV4RSxhQUFRLEdBQWdELEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN4RSxZQUFPLEdBQWUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO0tBb0V2QztJQWxGQyxJQUFJLDRCQUE0QjtRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFjLENBQUM7SUFDM0QsQ0FBQztJQUNELElBQUkseUJBQXlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQWMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxDQUFDLEdBQUksSUFBSSxDQUFDLDRCQUE0QixDQUFDLFFBQTBCLEVBQUUsR0FBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBMEIsQ0FBQyxDQUFDO0lBQzNJLENBQUM7SUFDRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBS0QsVUFBVSxDQUFDLEtBQTZCO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNySSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqSSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBYztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3JCO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELDRCQUE0QixDQUFDLE9BQW9CO1FBQy9DLGlEQUFpRDtRQUNqRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBb0I7UUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztRQUNsSSxNQUFNLEtBQUssR0FBSSxTQUFTLENBQUMsS0FBdUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixNQUFNLFlBQVksR0FBd0I7WUFDeEMsS0FBSyxFQUFFLFNBQVM7WUFDaEIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFDO1FBQ0YsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxZQUFZLEdBQTJCO1lBQzNDLFFBQVEsRUFBRSxLQUFLO1lBQ2YsV0FBVyxFQUFFLEtBQUs7WUFDbEIsbUJBQW1CLEVBQUUsRUFBRTtZQUN2QixnQkFBZ0IsRUFBRSxFQUFFO1NBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ2xELElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7OzhIQTdHVSxpQ0FBaUM7a0hBQWpDLGlDQUFpQyxrV0FSakM7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO1NBQ2pFO0tBQ0YsK0NDekNILGc5RkFvRUEsdXpGRHpCYSxpQ0FBaUM7MkZBQWpDLGlDQUFpQztrQkFkN0MsU0FBUzsrQkFDRSw4QkFBOEIsaUJBR3pCLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsOEJBQThCLEVBQUUsYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0NBQWtDLENBQUM7eUJBQ2pFO3FCQUNGOzhCQUtELG1CQUFtQjtzQkFGbEIsV0FBVzt1QkFBQywyQkFBMkI7O3NCQUN2QyxLQUFLO2dCQUlOLGNBQWM7c0JBRmIsV0FBVzt1QkFBQywrQkFBK0I7O3NCQUMzQyxLQUFLO2dCQWFDLFFBQVE7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSdWxlQ29tcG9zaXRlQ29uZGl0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvcnVsZS1jb21wb3NpdGUtY29uZGl0aW9uLm1vZGVsJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUnVsZVNpbXBsZUNvbmRpdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL3J1bGUtc2ltcGxlLWNvbmRpdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjYS1ydWxlLWNvbXBvc2l0ZS1jb25kaXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcnVsZS1jb21wb3NpdGUtY29uZGl0aW9uLnVpLWNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcnVsZS1jb21wb3NpdGUtY29uZGl0aW9uLnVpLWNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2EtcnVsZS1jb21wb3NpdGUtY29uZGl0aW9uJyB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUnVsZUNvbXBvc2l0ZUNvbmRpdGlvblVpQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSdWxlQ29tcG9zaXRlQ29uZGl0aW9uVWlDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlY29uZGFyeUJhY2tncm91bmQnKVxuICBASW5wdXQoKVxuICBzZWNvbmRhcnlCYWNrZ3JvdW5kID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuY2hpbGRDb21wb3NpdGVDb25kaXRpb24nKVxuICBASW5wdXQoKVxuICBjaGlsZENvbmRpdGlvbiA9IGZhbHNlO1xuXG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBpbnZlcnRlZDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgYm9vbGVhbk1vZGU6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgIGNvbXBvc2l0ZUNvbmRpdGlvbnM6IG5ldyBGb3JtQXJyYXkoW10pLFxuICAgIHNpbXBsZUNvbmRpdGlvbnM6IG5ldyBGb3JtQXJyYXkoW10pXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGlzT3JJbXBsZW1lbnRlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZm9ybVN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gIH0pO1xuXG4gIHB1YmxpYyBpbnZlcnRlZENvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdpbnZlcnRlZCcpIGFzIEZvcm1Db250cm9sO1xuICBwdWJsaWMgYm9vbGVhbk1vZGVDb250cm9sID0gdGhpcy5mb3JtLmdldCgnYm9vbGVhbk1vZGUnKSBhcyBGb3JtQ29udHJvbDtcblxuICBnZXQgY29tcG9zaXRlQ29uZGl0aW9uc0Zvcm1BcnJheSgpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdjb21wb3NpdGVDb25kaXRpb25zJykgYXMgRm9ybUFycmF5O1xuICB9XG4gIGdldCBzaW1wbGVDb25kaXRpb25zRm9ybUFycmF5KCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3NpbXBsZUNvbmRpdGlvbnMnKSBhcyBGb3JtQXJyYXk7XG4gIH1cbiAgZ2V0IGNvbmRpdGlvbkZvcm1Db250cm9scygpOiBGb3JtQ29udHJvbFtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmNvbXBvc2l0ZUNvbmRpdGlvbnNGb3JtQXJyYXkuY29udHJvbHMgYXMgRm9ybUNvbnRyb2xbXSksIC4uLih0aGlzLnNpbXBsZUNvbmRpdGlvbnNGb3JtQXJyYXkuY29udHJvbHMgYXMgRm9ybUNvbnRyb2xbXSldO1xuICB9XG4gIGdldCBoYXNOb0NvbmRpdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uRm9ybUNvbnRyb2xzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIG9uQ2hhbmdlOiAoY29uZGl0aW9uOiBSdWxlQ29tcG9zaXRlQ29uZGl0aW9uKSA9PiB2b2lkID0gKCkgPT4gdW5kZWZpbmVkO1xuICBvblRvdWNoOiAoKSA9PiB2b2lkID0gKCkgPT4gdW5kZWZpbmVkO1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IFJ1bGVDb21wb3NpdGVDb25kaXRpb24pIHtcbiAgICB0aGlzLmZvcm0uZ2V0KCdpbnZlcnRlZCcpLnNldFZhbHVlKHZhbHVlLmludmVydGVkKTtcbiAgICB0aGlzLmZvcm0uZ2V0KCdib29sZWFuTW9kZScpLnNldFZhbHVlKHZhbHVlLmJvb2xlYW5Nb2RlKTtcbiAgICB0aGlzLmZvcm0uc2V0Q29udHJvbCgnY29tcG9zaXRlQ29uZGl0aW9ucycsIG5ldyBGb3JtQXJyYXkodmFsdWUuY29tcG9zaXRlQ29uZGl0aW9ucy5tYXAoKGNvbmRpdGlvbikgPT4gbmV3IEZvcm1Db250cm9sKGNvbmRpdGlvbikpKSk7XG4gICAgdGhpcy5mb3JtLnNldENvbnRyb2woJ3NpbXBsZUNvbmRpdGlvbnMnLCBuZXcgRm9ybUFycmF5KHZhbHVlLnNpbXBsZUNvbmRpdGlvbnMubWFwKChjb25kaXRpb24pID0+IG5ldyBGb3JtQ29udHJvbChjb25kaXRpb24pKSkpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5yZWFkT25seSA9IHRydWU7XG4gICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgaXNGb3JtQ29udHJvbFNpbXBsZUNvbmRpdGlvbihjb250cm9sOiBGb3JtQ29udHJvbCk6IGJvb2xlYW4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICByZXR1cm4gY29udHJvbC52YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnZmllbGQnKTtcbiAgfVxuXG4gIHJlbW92ZUNvbmRpdGlvbihjb250cm9sOiBGb3JtQ29udHJvbCkge1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuaXNGb3JtQ29udHJvbFNpbXBsZUNvbmRpdGlvbihjb250cm9sKSA/IHRoaXMuc2ltcGxlQ29uZGl0aW9uc0Zvcm1BcnJheSA6IHRoaXMuY29tcG9zaXRlQ29uZGl0aW9uc0Zvcm1BcnJheTtcbiAgICBjb25zdCBpbmRleCA9IChmb3JtQXJyYXkudmFsdWUgYXMgRm9ybUNvbnRyb2xbXSkuaW5kZXhPZihjb250cm9sLnZhbHVlKTtcbiAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICB9XG5cbiAgYWRkU2ltcGxlQ29uZGl0aW9uKCkge1xuICAgIGNvbnN0IG5ld0NvbmRpdGlvbjogUnVsZVNpbXBsZUNvbmRpdGlvbiA9IHtcbiAgICAgIGZpZWxkOiAnY206bmFtZScsXG4gICAgICBjb21wYXJhdG9yOiAnZXF1YWxzJyxcbiAgICAgIHBhcmFtZXRlcjogJydcbiAgICB9O1xuICAgIHRoaXMuc2ltcGxlQ29uZGl0aW9uc0Zvcm1BcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbChuZXdDb25kaXRpb24pKTtcbiAgfVxuXG4gIGFkZENvbXBvc2l0ZUNvbmRpdGlvbigpIHtcbiAgICBjb25zdCBuZXdDb25kaXRpb246IFJ1bGVDb21wb3NpdGVDb25kaXRpb24gPSB7XG4gICAgICBpbnZlcnRlZDogZmFsc2UsXG4gICAgICBib29sZWFuTW9kZTogJ2FuZCcsXG4gICAgICBjb21wb3NpdGVDb25kaXRpb25zOiBbXSxcbiAgICAgIHNpbXBsZUNvbmRpdGlvbnM6IFtdXG4gICAgfTtcbiAgICB0aGlzLmNvbXBvc2l0ZUNvbmRpdGlvbnNGb3JtQXJyYXkucHVzaChuZXcgRm9ybUNvbnRyb2wobmV3Q29uZGl0aW9uKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZvcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCByZWFkT25seSA9IGNoYW5nZXNbJ3JlYWRPbmx5J10uY3VycmVudFZhbHVlO1xuICAgIGlmIChyZWFkT25seSAhPT0gdW5kZWZpbmVkICYmIHJlYWRPbmx5ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnJlYWRPbmx5ID0gcmVhZE9ubHk7XG4gICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUocmVhZE9ubHkpO1xuICAgIH1cbiAgfVxufVxuIiwiPGZvcm0gY2xhc3M9XCJhY2EtcnVsZS1jb21wb3NpdGUtY29uZGl0aW9uX19mb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxkaXYgKm5nSWY9XCJoYXNOb0NvbmRpdGlvbnNcIiBjbGFzcz1cImFjYS1ydWxlLWNvbXBvc2l0ZS1jb25kaXRpb25fX2Zvcm1fX25vLWNvbmRpdGlvbnNcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJuby1jb25kaXRpb25zXCI+XG4gICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLicgKyAoY2hpbGRDb25kaXRpb24gPyAnTk9fQ09ORElUSU9OU19JTl9HUk9VUCcgOiAnTk9fQ09ORElUSU9OUycpIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImFjYS1ydWxlLWNvbXBvc2l0ZS1jb25kaXRpb25fX2Zvcm1fX3Jvd1wiXG4gICAgKm5nRm9yPVwibGV0IGNvbnRyb2wgb2YgY29uZGl0aW9uRm9ybUNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCI+XG5cbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJpID09PSAwXCI+XG4gICAgICA8bWF0LXNlbGVjdFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW52ZXJ0ZWRDb250cm9sXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRPbmx5XCI+XG4gICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJmYWxzZVwiPnt7ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5MT0dJQ19PUEVSQVRPUlMuSUYnIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwidHJ1ZVwiPnt7ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5MT0dJQ19PUEVSQVRPUlMuTk9UX0lGJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiaSA+IDBcIj5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIFtkaXNhYmxlZF09XCIhaXNPckltcGxlbWVudGVkIHx8IGkgPiAxIHx8IHJlYWRPbmx5XCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImJvb2xlYW5Nb2RlQ29udHJvbFwiPlxuICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImFuZFwiPnt7ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5MT0dJQ19PUEVSQVRPUlMuQU5EJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJvclwiPnt7ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5MT0dJQ19PUEVSQVRPUlMuT1InIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8YWNhLXJ1bGUtY29tcG9zaXRlLWNvbmRpdGlvblxuICAgICAgKm5nSWY9XCIhaXNGb3JtQ29udHJvbFNpbXBsZUNvbmRpdGlvbihjb250cm9sKVwiXG4gICAgICBbc2Vjb25kYXJ5QmFja2dyb3VuZF09XCIhc2Vjb25kYXJ5QmFja2dyb3VuZFwiXG4gICAgICBbY2hpbGRDb25kaXRpb25dPVwidHJ1ZVwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIj5cbiAgICA8L2FjYS1ydWxlLWNvbXBvc2l0ZS1jb25kaXRpb24+XG5cbiAgICA8YWNhLXJ1bGUtc2ltcGxlLWNvbmRpdGlvblxuICAgICAgKm5nSWY9XCJpc0Zvcm1Db250cm9sU2ltcGxlQ29uZGl0aW9uKGNvbnRyb2wpXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiPlxuICAgIDwvYWNhLXJ1bGUtc2ltcGxlLWNvbmRpdGlvbj5cblxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgKm5nSWY9XCIhcmVhZE9ubHlcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJjb25kaXRpb24tYWN0aW9ucy1idXR0b25cIj5cbiAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgIFt0aXRsZV09XCInQUNBX0ZPTERFUl9SVUxFUy5SVUxFX0RFVEFJTFMuQ09ORElUSU9OX0JVVFRPTlMuUkVNT1ZFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIChjbGljayk9XCJyZW1vdmVDb25kaXRpb24oY29udHJvbClcIj5cbiAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICAgIDxzcGFuPnt7ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5DT05ESVRJT05fQlVUVE9OUy5SRU1PVkUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtbWVudT5cblxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWNhLXJ1bGUtY29tcG9zaXRlLWNvbmRpdGlvbl9fZm9ybV9fYWN0aW9uc1wiICpuZ0lmPVwiIXJlYWRPbmx5XCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRkLWFjdGlvbnNcIj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImFkZFNpbXBsZUNvbmRpdGlvbigpXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRkLWNvbmRpdGlvbi1idXR0b25cIj5cbiAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxuICAgICAgPHNwYW4+e3sgJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkNPTkRJVElPTl9CVVRUT05TLkFERF9DT05ESVRJT04nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiYWRkQ29tcG9zaXRlQ29uZGl0aW9uKClcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGQtZ3JvdXAtYnV0dG9uXCI+XG4gICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuPnt7ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5DT05ESVRJT05fQlVUVE9OUy5BRERfR1JPVVAnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Alfresco Example Content Application
|
|
5
|
+
*
|
|
6
|
+
* This file is part of the Alfresco Example Content Application.
|
|
7
|
+
* If the software was purchased under a paid Alfresco license, the terms of
|
|
8
|
+
* the paid license agreement will prevail. Otherwise, the software is
|
|
9
|
+
* provided under the following open source license terms:
|
|
10
|
+
*
|
|
11
|
+
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
export const ruleConditionComparators = [
|
|
25
|
+
{
|
|
26
|
+
name: 'equals',
|
|
27
|
+
labels: {
|
|
28
|
+
string: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.EQUALS',
|
|
29
|
+
number: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.EQUALS',
|
|
30
|
+
date: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.ON',
|
|
31
|
+
special: ''
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'contains',
|
|
36
|
+
labels: {
|
|
37
|
+
string: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.CONTAINS'
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'begins',
|
|
42
|
+
labels: {
|
|
43
|
+
string: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.STARTS_WITH'
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'ends',
|
|
48
|
+
labels: {
|
|
49
|
+
string: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.ENDS_WITH'
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'greater_than',
|
|
54
|
+
labels: {
|
|
55
|
+
number: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.GREATER_THAN',
|
|
56
|
+
date: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.AFTER'
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'less_than',
|
|
61
|
+
labels: {
|
|
62
|
+
number: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.LESS_THAN',
|
|
63
|
+
date: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.BEFORE'
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'greater_than_equal',
|
|
68
|
+
labels: {
|
|
69
|
+
number: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.GREATER_THAN_OR_EQUAL',
|
|
70
|
+
date: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.ON_OR_AFTER'
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'less_than_equal',
|
|
75
|
+
labels: {
|
|
76
|
+
number: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.LESS_THAN_OR_EQUAL',
|
|
77
|
+
date: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.ON_OR_BEFORE'
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'instance_of',
|
|
82
|
+
labels: {
|
|
83
|
+
type: 'ACA_FOLDER_RULES.RULE_DETAILS.COMPARATORS.INSTANCE_OF'
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
];
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1jb25kaXRpb24tY29tcGFyYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9mb2xkZXItcnVsZXMvc3JjL3J1bGUtZGV0YWlscy9jb25kaXRpb25zL3J1bGUtY29uZGl0aW9uLWNvbXBhcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBU0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQThCO0lBQ2pFO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsa0RBQWtEO1lBQzFELE1BQU0sRUFBRSxrREFBa0Q7WUFDMUQsSUFBSSxFQUFFLDhDQUE4QztZQUNwRCxPQUFPLEVBQUUsRUFBRTtTQUNaO0tBQ0Y7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxvREFBb0Q7U0FDN0Q7S0FDRjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsdURBQXVEO1NBQ2hFO0tBQ0Y7SUFDRDtRQUNFLElBQUksRUFBRSxNQUFNO1FBQ1osTUFBTSxFQUFFO1lBQ04sTUFBTSxFQUFFLHFEQUFxRDtTQUM5RDtLQUNGO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsY0FBYztRQUNwQixNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsd0RBQXdEO1lBQ2hFLElBQUksRUFBRSxpREFBaUQ7U0FDeEQ7S0FDRjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFdBQVc7UUFDakIsTUFBTSxFQUFFO1lBQ04sTUFBTSxFQUFFLHFEQUFxRDtZQUM3RCxJQUFJLEVBQUUsa0RBQWtEO1NBQ3pEO0tBQ0Y7SUFDRDtRQUNFLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsTUFBTSxFQUFFO1lBQ04sTUFBTSxFQUFFLGlFQUFpRTtZQUN6RSxJQUFJLEVBQUUsdURBQXVEO1NBQzlEO0tBQ0Y7SUFDRDtRQUNFLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsTUFBTSxFQUFFO1lBQ04sTUFBTSxFQUFFLDhEQUE4RDtZQUN0RSxJQUFJLEVBQUUsd0RBQXdEO1NBQy9EO0tBQ0Y7SUFDRDtRQUNFLElBQUksRUFBRSxhQUFhO1FBQ25CLE1BQU0sRUFBRTtZQUNOLElBQUksRUFBRSx1REFBdUQ7U0FDOUQ7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlQ29uZGl0aW9uQ29tcGFyYXRvciB7XG4gIG5hbWU6IHN0cmluZztcbiAgbGFiZWxzOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgcnVsZUNvbmRpdGlvbkNvbXBhcmF0b3JzOiBSdWxlQ29uZGl0aW9uQ29tcGFyYXRvcltdID0gW1xuICB7XG4gICAgbmFtZTogJ2VxdWFscycsXG4gICAgbGFiZWxzOiB7XG4gICAgICBzdHJpbmc6ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5DT01QQVJBVE9SUy5FUVVBTFMnLFxuICAgICAgbnVtYmVyOiAnQUNBX0ZPTERFUl9SVUxFUy5SVUxFX0RFVEFJTFMuQ09NUEFSQVRPUlMuRVFVQUxTJyxcbiAgICAgIGRhdGU6ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5DT01QQVJBVE9SUy5PTicsXG4gICAgICBzcGVjaWFsOiAnJ1xuICAgIH1cbiAgfSxcbiAge1xuICAgIG5hbWU6ICdjb250YWlucycsXG4gICAgbGFiZWxzOiB7XG4gICAgICBzdHJpbmc6ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5DT01QQVJBVE9SUy5DT05UQUlOUydcbiAgICB9XG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnYmVnaW5zJyxcbiAgICBsYWJlbHM6IHtcbiAgICAgIHN0cmluZzogJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkNPTVBBUkFUT1JTLlNUQVJUU19XSVRIJ1xuICAgIH1cbiAgfSxcbiAge1xuICAgIG5hbWU6ICdlbmRzJyxcbiAgICBsYWJlbHM6IHtcbiAgICAgIHN0cmluZzogJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkNPTVBBUkFUT1JTLkVORFNfV0lUSCdcbiAgICB9XG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnZ3JlYXRlcl90aGFuJyxcbiAgICBsYWJlbHM6IHtcbiAgICAgIG51bWJlcjogJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkNPTVBBUkFUT1JTLkdSRUFURVJfVEhBTicsXG4gICAgICBkYXRlOiAnQUNBX0ZPTERFUl9SVUxFUy5SVUxFX0RFVEFJTFMuQ09NUEFSQVRPUlMuQUZURVInXG4gICAgfVxuICB9LFxuICB7XG4gICAgbmFtZTogJ2xlc3NfdGhhbicsXG4gICAgbGFiZWxzOiB7XG4gICAgICBudW1iZXI6ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5DT01QQVJBVE9SUy5MRVNTX1RIQU4nLFxuICAgICAgZGF0ZTogJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkNPTVBBUkFUT1JTLkJFRk9SRSdcbiAgICB9XG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnZ3JlYXRlcl90aGFuX2VxdWFsJyxcbiAgICBsYWJlbHM6IHtcbiAgICAgIG51bWJlcjogJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkNPTVBBUkFUT1JTLkdSRUFURVJfVEhBTl9PUl9FUVVBTCcsXG4gICAgICBkYXRlOiAnQUNBX0ZPTERFUl9SVUxFUy5SVUxFX0RFVEFJTFMuQ09NUEFSQVRPUlMuT05fT1JfQUZURVInXG4gICAgfVxuICB9LFxuICB7XG4gICAgbmFtZTogJ2xlc3NfdGhhbl9lcXVhbCcsXG4gICAgbGFiZWxzOiB7XG4gICAgICBudW1iZXI6ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5DT01QQVJBVE9SUy5MRVNTX1RIQU5fT1JfRVFVQUwnLFxuICAgICAgZGF0ZTogJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkNPTVBBUkFUT1JTLk9OX09SX0JFRk9SRSdcbiAgICB9XG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnaW5zdGFuY2Vfb2YnLFxuICAgIGxhYmVsczoge1xuICAgICAgdHlwZTogJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkNPTVBBUkFUT1JTLklOU1RBTkNFX09GJ1xuICAgIH1cbiAgfVxuXTtcbiJdfQ==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Alfresco Example Content Application
|
|
5
|
+
*
|
|
6
|
+
* This file is part of the Alfresco Example Content Application.
|
|
7
|
+
* If the software was purchased under a paid Alfresco license, the terms of
|
|
8
|
+
* the paid license agreement will prevail. Otherwise, the software is
|
|
9
|
+
* provided under the following open source license terms:
|
|
10
|
+
*
|
|
11
|
+
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
export const comparatorHiddenForConditionFieldType = ['special', 'mimeType'];
|
|
25
|
+
export const ruleConditionFields = [
|
|
26
|
+
{
|
|
27
|
+
name: 'cm:name',
|
|
28
|
+
label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.NAME',
|
|
29
|
+
type: 'string'
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'size',
|
|
33
|
+
label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.SIZE',
|
|
34
|
+
type: 'number'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'mimetype',
|
|
38
|
+
label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.MIMETYPE',
|
|
39
|
+
type: 'mimeType'
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'encoding',
|
|
43
|
+
label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.ENCODING',
|
|
44
|
+
type: 'special'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'category',
|
|
48
|
+
label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.HAS_CATEGORY',
|
|
49
|
+
type: 'special'
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'tag',
|
|
53
|
+
label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.HAS_TAG',
|
|
54
|
+
type: 'special'
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'aspect',
|
|
58
|
+
label: 'ACA_FOLDER_RULES.RULE_DETAILS.FIELDS.HAS_ASPECT',
|
|
59
|
+
type: 'special'
|
|
60
|
+
}
|
|
61
|
+
];
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1jb25kaXRpb24tZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvZm9sZGVyLXJ1bGVzL3NyYy9ydWxlLWRldGFpbHMvY29uZGl0aW9ucy9ydWxlLWNvbmRpdGlvbi1maWVsZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFVSCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUV2RixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBeUI7SUFDdkQ7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSwyQ0FBMkM7UUFDbEQsSUFBSSxFQUFFLFFBQVE7S0FDZjtJQUNEO1FBQ0UsSUFBSSxFQUFFLE1BQU07UUFDWixLQUFLLEVBQUUsMkNBQTJDO1FBQ2xELElBQUksRUFBRSxRQUFRO0tBQ2Y7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSwrQ0FBK0M7UUFDdEQsSUFBSSxFQUFFLFVBQVU7S0FDakI7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSwrQ0FBK0M7UUFDdEQsSUFBSSxFQUFFLFNBQVM7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxtREFBbUQ7UUFDMUQsSUFBSSxFQUFFLFNBQVM7S0FDaEI7SUFDRDtRQUNFLElBQUksRUFBRSxLQUFLO1FBQ1gsS0FBSyxFQUFFLDhDQUE4QztRQUNyRCxJQUFJLEVBQUUsU0FBUztLQUNoQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxLQUFLLEVBQUUsaURBQWlEO1FBQ3hELElBQUksRUFBRSxTQUFTO0tBQ2hCO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5leHBvcnQgdHlwZSBSdWxlQ29uZGl0aW9uRmllbGRUeXBlID0gJ3N0cmluZycgfCAnbnVtYmVyJyB8ICdkYXRlJyB8ICd0eXBlJyB8ICdzcGVjaWFsJyB8ICdtaW1lVHlwZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZUNvbmRpdGlvbkZpZWxkIHtcbiAgbmFtZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiBSdWxlQ29uZGl0aW9uRmllbGRUeXBlO1xufVxuXG5leHBvcnQgY29uc3QgY29tcGFyYXRvckhpZGRlbkZvckNvbmRpdGlvbkZpZWxkVHlwZTogc3RyaW5nW10gPSBbJ3NwZWNpYWwnLCAnbWltZVR5cGUnXTtcblxuZXhwb3J0IGNvbnN0IHJ1bGVDb25kaXRpb25GaWVsZHM6IFJ1bGVDb25kaXRpb25GaWVsZFtdID0gW1xuICB7XG4gICAgbmFtZTogJ2NtOm5hbWUnLFxuICAgIGxhYmVsOiAnQUNBX0ZPTERFUl9SVUxFUy5SVUxFX0RFVEFJTFMuRklFTERTLk5BTUUnLFxuICAgIHR5cGU6ICdzdHJpbmcnXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnc2l6ZScsXG4gICAgbGFiZWw6ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5GSUVMRFMuU0laRScsXG4gICAgdHlwZTogJ251bWJlcidcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdtaW1ldHlwZScsXG4gICAgbGFiZWw6ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5GSUVMRFMuTUlNRVRZUEUnLFxuICAgIHR5cGU6ICdtaW1lVHlwZSdcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdlbmNvZGluZycsXG4gICAgbGFiZWw6ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5GSUVMRFMuRU5DT0RJTkcnLFxuICAgIHR5cGU6ICdzcGVjaWFsJ1xuICB9LFxuICB7XG4gICAgbmFtZTogJ2NhdGVnb3J5JyxcbiAgICBsYWJlbDogJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkZJRUxEUy5IQVNfQ0FURUdPUlknLFxuICAgIHR5cGU6ICdzcGVjaWFsJ1xuICB9LFxuICB7XG4gICAgbmFtZTogJ3RhZycsXG4gICAgbGFiZWw6ICdBQ0FfRk9MREVSX1JVTEVTLlJVTEVfREVUQUlMUy5GSUVMRFMuSEFTX1RBRycsXG4gICAgdHlwZTogJ3NwZWNpYWwnXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnYXNwZWN0JyxcbiAgICBsYWJlbDogJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkZJRUxEUy5IQVNfQVNQRUNUJyxcbiAgICB0eXBlOiAnc3BlY2lhbCdcbiAgfVxuXTtcbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Alfresco Example Content Application
|
|
5
|
+
*
|
|
6
|
+
* This file is part of the Alfresco Example Content Application.
|
|
7
|
+
* If the software was purchased under a paid Alfresco license, the terms of
|
|
8
|
+
* the paid license agreement will prevail. Otherwise, the software is
|
|
9
|
+
* provided under the following open source license terms:
|
|
10
|
+
*
|
|
11
|
+
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1taW1lLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvZm9sZGVyLXJ1bGVzL3NyYy9ydWxlLWRldGFpbHMvY29uZGl0aW9ucy9ydWxlLW1pbWUtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkciLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBNaW1lVHlwZSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Alfresco Example Content Application
|
|
5
|
+
*
|
|
6
|
+
* This file is part of the Alfresco Example Content Application.
|
|
7
|
+
* If the software was purchased under a paid Alfresco license, the terms of
|
|
8
|
+
* the paid license agreement will prevail. Otherwise, the software is
|
|
9
|
+
* provided under the following open source license terms:
|
|
10
|
+
*
|
|
11
|
+
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
12
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
13
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
* (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
|
23
|
+
*/
|
|
24
|
+
import { Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';
|
|
25
|
+
import { FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
26
|
+
import { comparatorHiddenForConditionFieldType, ruleConditionFields } from './rule-condition-fields';
|
|
27
|
+
import { ruleConditionComparators } from './rule-condition-comparators';
|
|
28
|
+
import { AppConfigService } from '@alfresco/adf-core';
|
|
29
|
+
import * as i0 from "@angular/core";
|
|
30
|
+
import * as i1 from "@alfresco/adf-core";
|
|
31
|
+
import * as i2 from "@angular/common";
|
|
32
|
+
import * as i3 from "@angular/forms";
|
|
33
|
+
import * as i4 from "@angular/material/core";
|
|
34
|
+
import * as i5 from "@angular/material/form-field";
|
|
35
|
+
import * as i6 from "@angular/material/input";
|
|
36
|
+
import * as i7 from "@angular/material/select";
|
|
37
|
+
import * as i8 from "@ngx-translate/core";
|
|
38
|
+
export class RuleSimpleConditionUiComponent {
|
|
39
|
+
constructor(config) {
|
|
40
|
+
this.config = config;
|
|
41
|
+
this.fields = ruleConditionFields;
|
|
42
|
+
this.form = new FormGroup({
|
|
43
|
+
field: new FormControl('cm:name'),
|
|
44
|
+
comparator: new FormControl('equals'),
|
|
45
|
+
parameter: new FormControl()
|
|
46
|
+
});
|
|
47
|
+
this.mimeTypes = [];
|
|
48
|
+
this._readOnly = false;
|
|
49
|
+
this.formSubscription = this.form.valueChanges.subscribe((value) => {
|
|
50
|
+
this.onChange(value);
|
|
51
|
+
this.onTouch();
|
|
52
|
+
});
|
|
53
|
+
this.onChange = () => undefined;
|
|
54
|
+
this.onTouch = () => undefined;
|
|
55
|
+
this.mimeTypes = this.config.get('mimeTypes');
|
|
56
|
+
}
|
|
57
|
+
get readOnly() {
|
|
58
|
+
return this._readOnly;
|
|
59
|
+
}
|
|
60
|
+
set readOnly(isReadOnly) {
|
|
61
|
+
this.setDisabledState(isReadOnly);
|
|
62
|
+
}
|
|
63
|
+
get isSelectedFieldKnown() {
|
|
64
|
+
const selectedFieldName = this.form.get('field').value;
|
|
65
|
+
return this.fields.findIndex((field) => selectedFieldName === field.name) > -1;
|
|
66
|
+
}
|
|
67
|
+
get selectedField() {
|
|
68
|
+
const selectedFieldName = this.form.get('field').value;
|
|
69
|
+
if (!this.isSelectedFieldKnown) {
|
|
70
|
+
return {
|
|
71
|
+
name: selectedFieldName,
|
|
72
|
+
label: selectedFieldName,
|
|
73
|
+
type: 'special'
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return this.fields.find((field) => field.name === selectedFieldName);
|
|
77
|
+
}
|
|
78
|
+
get selectedFieldComparators() {
|
|
79
|
+
return ruleConditionComparators.filter((comparator) => Object.keys(comparator.labels).includes(this.selectedField.type));
|
|
80
|
+
}
|
|
81
|
+
get isComparatorHidden() {
|
|
82
|
+
return comparatorHiddenForConditionFieldType.includes(this.selectedField?.type);
|
|
83
|
+
}
|
|
84
|
+
get comparatorControl() {
|
|
85
|
+
return this.form.get('comparator');
|
|
86
|
+
}
|
|
87
|
+
get parameterControl() {
|
|
88
|
+
return this.form.get('parameter');
|
|
89
|
+
}
|
|
90
|
+
writeValue(value) {
|
|
91
|
+
this.form.setValue(value);
|
|
92
|
+
}
|
|
93
|
+
registerOnChange(fn) {
|
|
94
|
+
this.onChange = fn;
|
|
95
|
+
}
|
|
96
|
+
registerOnTouched(fn) {
|
|
97
|
+
this.onTouch = fn;
|
|
98
|
+
}
|
|
99
|
+
setDisabledState(isDisabled) {
|
|
100
|
+
if (isDisabled) {
|
|
101
|
+
this._readOnly = true;
|
|
102
|
+
this.form.disable();
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this._readOnly = false;
|
|
106
|
+
this.form.enable();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
onChangeField() {
|
|
110
|
+
if (!this.selectedFieldComparators.find((comparator) => comparator.name === this.comparatorControl.value)) {
|
|
111
|
+
this.comparatorControl.setValue('equals');
|
|
112
|
+
}
|
|
113
|
+
if (!this.parameterControl.value && this.selectedField?.type === 'mimeType') {
|
|
114
|
+
this.parameterControl.setValue(this.mimeTypes[0]?.value);
|
|
115
|
+
}
|
|
116
|
+
else if (this.parameterControl.value) {
|
|
117
|
+
this.parameterControl.setValue('');
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
ngOnDestroy() {
|
|
121
|
+
this.formSubscription.unsubscribe();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
RuleSimpleConditionUiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: RuleSimpleConditionUiComponent, deps: [{ token: i1.AppConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
125
|
+
RuleSimpleConditionUiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: RuleSimpleConditionUiComponent, selector: "aca-rule-simple-condition", inputs: { readOnly: "readOnly" }, host: { classAttribute: "aca-rule-simple-condition" }, providers: [
|
|
126
|
+
{
|
|
127
|
+
provide: NG_VALUE_ACCESSOR,
|
|
128
|
+
multi: true,
|
|
129
|
+
useExisting: forwardRef(() => RuleSimpleConditionUiComponent)
|
|
130
|
+
}
|
|
131
|
+
], ngImport: i0, template: "<form class=\"aca-rule-simple-condition__form\" [formGroup]=\"form\">\n <mat-form-field class=\"aca-rule-simple-condition__form__field-input\">\n <mat-select formControlName=\"field\" data-automation-id=\"field-select\"\n (selectionChange)=\"onChangeField()\">\n <mat-option *ngIf=\"!isSelectedFieldKnown\" [value]=\"selectedField.name\" data-automation-id=\"unknown-field-option\">\n {{ selectedField.label }}\n </mat-option>\n <mat-option *ngFor=\"let field of fields\" [value]=\"field.name\">\n {{ field.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"aca-rule-simple-condition__form__comparator-input\" [class]=\"{ hidden: isComparatorHidden }\" data-automation-id=\"comparator-form-field\">\n <mat-select formControlName=\"comparator\" data-automation-id=\"comparator-select\">\n <mat-option\n *ngFor=\"let comparator of selectedFieldComparators\"\n [value]=\"comparator.name\">\n {{ comparator.labels[this.selectedField?.type || 'equals'] | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"aca-rule-simple-condition__form__parameter-input\">\n <mat-select formControlName=\"parameter\" data-automation-id=\"simple-condition-value-select\" *ngIf=\"selectedField?.type === 'mimeType'; else valueInput\">\n <mat-option *ngFor=\"let mimeType of mimeTypes\"\n [value]=\"mimeType.value\">\n {{ mimeType.label }}\n </mat-option>\n </mat-select>\n <ng-template #valueInput>\n <input matInput placeholder=\"{{ 'ACA_FOLDER_RULES.RULE_DETAILS.PLACEHOLDER.VALUE' | translate }}\" type=\"text\" formControlName=\"parameter\" data-automation-id=\"value-input\">\n </ng-template>\n </mat-form-field>\n</form>\n", styles: [".aca-rule-simple-condition__form{display:flex;flex-direction:row;gap:8px}.aca-rule-simple-condition__form mat-form-field{flex:2;font-size:inherit}.aca-rule-simple-condition__form__comparator-input.hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: RuleSimpleConditionUiComponent, decorators: [{
|
|
133
|
+
type: Component,
|
|
134
|
+
args: [{ selector: 'aca-rule-simple-condition', encapsulation: ViewEncapsulation.None, host: { class: 'aca-rule-simple-condition' }, providers: [
|
|
135
|
+
{
|
|
136
|
+
provide: NG_VALUE_ACCESSOR,
|
|
137
|
+
multi: true,
|
|
138
|
+
useExisting: forwardRef(() => RuleSimpleConditionUiComponent)
|
|
139
|
+
}
|
|
140
|
+
], template: "<form class=\"aca-rule-simple-condition__form\" [formGroup]=\"form\">\n <mat-form-field class=\"aca-rule-simple-condition__form__field-input\">\n <mat-select formControlName=\"field\" data-automation-id=\"field-select\"\n (selectionChange)=\"onChangeField()\">\n <mat-option *ngIf=\"!isSelectedFieldKnown\" [value]=\"selectedField.name\" data-automation-id=\"unknown-field-option\">\n {{ selectedField.label }}\n </mat-option>\n <mat-option *ngFor=\"let field of fields\" [value]=\"field.name\">\n {{ field.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"aca-rule-simple-condition__form__comparator-input\" [class]=\"{ hidden: isComparatorHidden }\" data-automation-id=\"comparator-form-field\">\n <mat-select formControlName=\"comparator\" data-automation-id=\"comparator-select\">\n <mat-option\n *ngFor=\"let comparator of selectedFieldComparators\"\n [value]=\"comparator.name\">\n {{ comparator.labels[this.selectedField?.type || 'equals'] | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"aca-rule-simple-condition__form__parameter-input\">\n <mat-select formControlName=\"parameter\" data-automation-id=\"simple-condition-value-select\" *ngIf=\"selectedField?.type === 'mimeType'; else valueInput\">\n <mat-option *ngFor=\"let mimeType of mimeTypes\"\n [value]=\"mimeType.value\">\n {{ mimeType.label }}\n </mat-option>\n </mat-select>\n <ng-template #valueInput>\n <input matInput placeholder=\"{{ 'ACA_FOLDER_RULES.RULE_DETAILS.PLACEHOLDER.VALUE' | translate }}\" type=\"text\" formControlName=\"parameter\" data-automation-id=\"value-input\">\n </ng-template>\n </mat-form-field>\n</form>\n", styles: [".aca-rule-simple-condition__form{display:flex;flex-direction:row;gap:8px}.aca-rule-simple-condition__form mat-form-field{flex:2;font-size:inherit}.aca-rule-simple-condition__form__comparator-input.hidden{display:none}\n"] }]
|
|
141
|
+
}], ctorParameters: function () { return [{ type: i1.AppConfigService }]; }, propDecorators: { readOnly: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}] } });
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1zaW1wbGUtY29uZGl0aW9uLnVpLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvcnVsZS1kZXRhaWxzL2NvbmRpdGlvbnMvcnVsZS1zaW1wbGUtY29uZGl0aW9uLnVpLWNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvcnVsZS1kZXRhaWxzL2NvbmRpdGlvbnMvcnVsZS1zaW1wbGUtY29uZGl0aW9uLnVpLWNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFhLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBeUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxILE9BQU8sRUFBRSxxQ0FBcUMsRUFBc0IsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6SCxPQUFPLEVBQTJCLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7QUFpQnRELE1BQU0sT0FBTyw4QkFBOEI7SUFvQnpDLFlBQW9CLE1BQXdCO1FBQXhCLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBbkJuQyxXQUFNLEdBQUcsbUJBQW1CLENBQUM7UUFFdEMsU0FBSSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ25CLEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUM7WUFDakMsVUFBVSxFQUFFLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQztZ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LDhCQUE4QixDQUFDO1NBQzlEO0tBQ0YsMEJDNUNILHF5REFtQ0E7MkZEV2EsOEJBQThCO2tCQWQxQyxTQUFTOytCQUNFLDJCQUEyQixpQkFHdEIsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxhQUNqQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwrQkFBK0IsQ0FBQzt5QkFDOUQ7cUJBQ0Y7dUdBZUcsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUnVsZVNpbXBsZUNvbmRpdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL3J1bGUtc2ltcGxlLWNvbmRpdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBjb21wYXJhdG9ySGlkZGVuRm9yQ29uZGl0aW9uRmllbGRUeXBlLCBSdWxlQ29uZGl0aW9uRmllbGQsIHJ1bGVDb25kaXRpb25GaWVsZHMgfSBmcm9tICcuL3J1bGUtY29uZGl0aW9uLWZpZWxkcyc7XG5pbXBvcnQgeyBSdWxlQ29uZGl0aW9uQ29tcGFyYXRvciwgcnVsZUNvbmRpdGlvbkNvbXBhcmF0b3JzIH0gZnJvbSAnLi9ydWxlLWNvbmRpdGlvbi1jb21wYXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IE1pbWVUeXBlIH0gZnJvbSAnLi9ydWxlLW1pbWUtdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2EtcnVsZS1zaW1wbGUtY29uZGl0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3J1bGUtc2ltcGxlLWNvbmRpdGlvbi51aS1jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3J1bGUtc2ltcGxlLWNvbmRpdGlvbi51aS1jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYWNhLXJ1bGUtc2ltcGxlLWNvbmRpdGlvbicgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJ1bGVTaW1wbGVDb25kaXRpb25VaUNvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUnVsZVNpbXBsZUNvbmRpdGlvblVpQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGZpZWxkcyA9IHJ1bGVDb25kaXRpb25GaWVsZHM7XG5cbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIGZpZWxkOiBuZXcgRm9ybUNvbnRyb2woJ2NtOm5hbWUnKSxcbiAgICBjb21wYXJhdG9yOiBuZXcgRm9ybUNvbnRyb2woJ2VxdWFscycpLFxuICAgIHBhcmFtZXRlcjogbmV3IEZvcm1Db250cm9sKClcbiAgfSk7XG5cbiAgbWltZVR5cGVzOiBNaW1lVHlwZVtdID0gW107XG5cbiAgcHJpdmF0ZSBfcmVhZE9ubHkgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZ2V0IHJlYWRPbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seTtcbiAgfVxuICBzZXQgcmVhZE9ubHkoaXNSZWFkT25seTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZShpc1JlYWRPbmx5KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBBcHBDb25maWdTZXJ2aWNlKSB7XG4gICAgdGhpcy5taW1lVHlwZXMgPSB0aGlzLmNvbmZpZy5nZXQ8QXJyYXk8TWltZVR5cGU+PignbWltZVR5cGVzJyk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1TdWJzY3JpcHRpb24gPSB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMub25Ub3VjaCgpO1xuICB9KTtcblxuICBnZXQgaXNTZWxlY3RlZEZpZWxkS25vd24oKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRGaWVsZE5hbWUgPSB0aGlzLmZvcm0uZ2V0KCdmaWVsZCcpLnZhbHVlO1xuICAgIHJldHVybiB0aGlzLmZpZWxkcy5maW5kSW5kZXgoKGZpZWxkOiBSdWxlQ29uZGl0aW9uRmllbGQpID0+IHNlbGVjdGVkRmllbGROYW1lID09PSBmaWVsZC5uYW1lKSA+IC0xO1xuICB9XG4gIGdldCBzZWxlY3RlZEZpZWxkKCk6IFJ1bGVDb25kaXRpb25GaWVsZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRGaWVsZE5hbWUgPSB0aGlzLmZvcm0uZ2V0KCdmaWVsZCcpLnZhbHVlO1xuICAgIGlmICghdGhpcy5pc1NlbGVjdGVkRmllbGRLbm93bikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogc2VsZWN0ZWRGaWVsZE5hbWUsXG4gICAgICAgIGxhYmVsOiBzZWxlY3RlZEZpZWxkTmFtZSxcbiAgICAgICAgdHlwZTogJ3NwZWNpYWwnXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IHNlbGVjdGVkRmllbGROYW1lKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZEZpZWxkQ29tcGFyYXRvcnMoKTogUnVsZUNvbmRpdGlvbkNvbXBhcmF0b3JbXSB7XG4gICAgcmV0dXJuIHJ1bGVDb25kaXRpb25Db21wYXJhdG9ycy5maWx0ZXIoKGNvbXBhcmF0b3IpID0+IE9iamVjdC5rZXlzKGNvbXBhcmF0b3IubGFiZWxzKS5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkRmllbGQudHlwZSkpO1xuICB9XG4gIGdldCBpc0NvbXBhcmF0b3JIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNvbXBhcmF0b3JIaWRkZW5Gb3JDb25kaXRpb25GaWVsZFR5cGUuaW5jbHVkZXModGhpcy5zZWxlY3RlZEZpZWxkPy50eXBlKTtcbiAgfVxuICBnZXQgY29tcGFyYXRvckNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnY29tcGFyYXRvcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcGFyYW1ldGVyQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3BhcmFtZXRlcicpO1xuICB9XG5cbiAgb25DaGFuZ2U6IChjb25kaXRpb246IFJ1bGVTaW1wbGVDb25kaXRpb24pID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIG9uVG91Y2g6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogUnVsZVNpbXBsZUNvbmRpdGlvbikge1xuICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLl9yZWFkT25seSA9IHRydWU7XG4gICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZWFkT25seSA9IGZhbHNlO1xuICAgICAgdGhpcy5mb3JtLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlRmllbGQoKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRmllbGRDb21wYXJhdG9ycy5maW5kKChjb21wYXJhdG9yKSA9PiBjb21wYXJhdG9yLm5hbWUgPT09IHRoaXMuY29tcGFyYXRvckNvbnRyb2wudmFsdWUpKSB7XG4gICAgICB0aGlzLmNvbXBhcmF0b3JDb250cm9sLnNldFZhbHVlKCdlcXVhbHMnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnBhcmFtZXRlckNvbnRyb2wudmFsdWUgJiYgdGhpcy5zZWxlY3RlZEZpZWxkPy50eXBlID09PSAnbWltZVR5cGUnKSB7XG4gICAgICB0aGlzLnBhcmFtZXRlckNvbnRyb2wuc2V0VmFsdWUodGhpcy5taW1lVHlwZXNbMF0/LnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGFyYW1ldGVyQ29udHJvbC52YWx1ZSkge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZvcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGZvcm0gY2xhc3M9XCJhY2EtcnVsZS1zaW1wbGUtY29uZGl0aW9uX19mb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFjYS1ydWxlLXNpbXBsZS1jb25kaXRpb25fX2Zvcm1fX2ZpZWxkLWlucHV0XCI+XG4gICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZmllbGRcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJmaWVsZC1zZWxlY3RcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkNoYW5nZUZpZWxkKClcIj5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiIWlzU2VsZWN0ZWRGaWVsZEtub3duXCIgW3ZhbHVlXT1cInNlbGVjdGVkRmllbGQubmFtZVwiIGRhdGEtYXV0b21hdGlvbi1pZD1cInVua25vd24tZmllbGQtb3B0aW9uXCI+XG4gICAgICAgIHt7IHNlbGVjdGVkRmllbGQubGFiZWwgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZHNcIiBbdmFsdWVdPVwiZmllbGQubmFtZVwiPlxuICAgICAgICB7eyBmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhY2EtcnVsZS1zaW1wbGUtY29uZGl0aW9uX19mb3JtX19jb21wYXJhdG9yLWlucHV0XCIgW2NsYXNzXT1cInsgaGlkZGVuOiBpc0NvbXBhcmF0b3JIaWRkZW4gfVwiIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbXBhcmF0b3ItZm9ybS1maWVsZFwiPlxuICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNvbXBhcmF0b3JcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJjb21wYXJhdG9yLXNlbGVjdFwiPlxuICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbXBhcmF0b3Igb2Ygc2VsZWN0ZWRGaWVsZENvbXBhcmF0b3JzXCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbXBhcmF0b3IubmFtZVwiPlxuICAgICAgICB7eyBjb21wYXJhdG9yLmxhYmVsc1t0aGlzLnNlbGVjdGVkRmllbGQ/LnR5cGUgfHwgJ2VxdWFscyddIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgPC9tYXQtc2VsZWN0PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFjYS1ydWxlLXNpbXBsZS1jb25kaXRpb25fX2Zvcm1fX3BhcmFtZXRlci1pbnB1dFwiPlxuICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInBhcmFtZXRlclwiIGRhdGEtYXV0b21hdGlvbi1pZD1cInNpbXBsZS1jb25kaXRpb24tdmFsdWUtc2VsZWN0XCIgKm5nSWY9XCJzZWxlY3RlZEZpZWxkPy50eXBlID09PSAnbWltZVR5cGUnOyBlbHNlIHZhbHVlSW5wdXRcIj5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtaW1lVHlwZSBvZiBtaW1lVHlwZXNcIlxuICAgICAgICBbdmFsdWVdPVwibWltZVR5cGUudmFsdWVcIj5cbiAgICAgICAge3sgbWltZVR5cGUubGFiZWwgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gICAgPG5nLXRlbXBsYXRlICN2YWx1ZUlucHV0PlxuICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwie3sgJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLlBMQUNFSE9MREVSLlZBTFVFJyB8IHRyYW5zbGF0ZSB9fVwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwicGFyYW1ldGVyXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwidmFsdWUtaW5wdXRcIj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9mb3JtPlxuIl19
|