@acorex/modules 20.6.0-next.13 → 20.6.0-next.14
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/dashboard-management/index.d.ts +2 -15
- package/fesm2022/acorex-modules-conversation.mjs +1 -1
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-D2sEG8P9.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-DxvJ5FUP.mjs} +22 -17
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-DxvJ5FUP.mjs.map +1 -0
- package/fesm2022/{acorex-modules-dashboard-management-permission-definition.provider-CDof9JW9.mjs → acorex-modules-dashboard-management-permission-definition.provider-tvIEsms4.mjs} +2 -2
- package/fesm2022/{acorex-modules-dashboard-management-permission-definition.provider-CDof9JW9.mjs.map → acorex-modules-dashboard-management-permission-definition.provider-tvIEsms4.mjs.map} +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BQg63TCL.mjs → acorex-modules-document-management-acorex-modules-document-management-B3AbD1tJ.mjs} +16 -16
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BQg63TCL.mjs.map → acorex-modules-document-management-acorex-modules-document-management-B3AbD1tJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DsVm2GMs.mjs → acorex-modules-document-management-attachment-widget.component-CzDOiRIY.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DsVm2GMs.mjs.map → acorex-modules-document-management-attachment-widget.component-CzDOiRIY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-CPS-Hi0y.mjs → acorex-modules-document-management-details-view.component-DKTHo8ne.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-CPS-Hi0y.mjs.map → acorex-modules-document-management-details-view.component-DKTHo8ne.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-BdG1o9DR.mjs → acorex-modules-document-management-document-signature-popup.component-DGzzdmDb.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-BdG1o9DR.mjs.map → acorex-modules-document-management-document-signature-popup.component-DGzzdmDb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-9GYqFNTa.mjs → acorex-modules-document-management-drive-choose.component-D5aiNVzj.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-9GYqFNTa.mjs.map → acorex-modules-document-management-drive-choose.component-D5aiNVzj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-GEe-dEOj.mjs → acorex-modules-document-management-drive.component-CeBlGsLR.mjs} +6 -5
- package/fesm2022/acorex-modules-document-management-drive.component-CeBlGsLR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-nbzNqi8U.mjs → acorex-modules-document-management-large-icons-view.component-CAHXm46u.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-nbzNqi8U.mjs.map → acorex-modules-document-management-large-icons-view.component-CAHXm46u.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-UaLWEWFL.mjs → acorex-modules-document-management-large-tiles-view.component-or2Wyl76.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-UaLWEWFL.mjs.map → acorex-modules-document-management-large-tiles-view.component-or2Wyl76.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-DrrI8IQy.mjs → acorex-modules-document-management-list-view.component-gmOyQGvk.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-DrrI8IQy.mjs.map → acorex-modules-document-management-list-view.component-gmOyQGvk.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CceGO8sF.mjs → acorex-modules-document-management-permission-definition.provider-CcZ1NTWk.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CceGO8sF.mjs.map → acorex-modules-document-management-permission-definition.provider-CcZ1NTWk.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D8ndB-9C.mjs → acorex-modules-document-management-small-icons-view.component-VD2PaT-1.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D8ndB-9C.mjs.map → acorex-modules-document-management-small-icons-view.component-VD2PaT-1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BYIgOhLJ.mjs → acorex-modules-document-management-small-tiles-view.component-fGLTqZyQ.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BYIgOhLJ.mjs.map → acorex-modules-document-management-small-tiles-view.component-fGLTqZyQ.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-notification-management-notification-page.component-Lz8J7q4k.mjs → acorex-modules-notification-management-notification-page.component-XCr4A447.mjs} +35 -23
- package/fesm2022/acorex-modules-notification-management-notification-page.component-XCr4A447.mjs.map +1 -0
- package/fesm2022/acorex-modules-notification-management.mjs +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-TfQFYkDv.mjs → acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs} +8 -7
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +16 -15
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-DTjfgbLU.mjs → acorex-modules-settings-management-acorex-modules-settings-management-DiK4w5LW.mjs} +18 -19
- package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-DiK4w5LW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DNgLTnFb.mjs → acorex-modules-settings-management-permission-definition.provider-Ddk4v4RY.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DNgLTnFb.mjs.map → acorex-modules-settings-management-permission-definition.provider-Ddk4v4RY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-CXXHizT0.mjs → acorex-modules-settings-management-setting-page.component-XfmsDcZt.mjs} +20 -17
- package/fesm2022/acorex-modules-settings-management-setting-page.component-XfmsDcZt.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CGolAf-a.mjs → acorex-modules-settings-management-setting-view.component-BZzDT3gG.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CGolAf-a.mjs.map → acorex-modules-settings-management-setting-view.component-BZzDT3gG.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/{acorex-modules-task-management-task-board.page-9rGlt3Fd.mjs → acorex-modules-task-management-task-board.page-Bceu03Yj.mjs} +5 -4
- package/fesm2022/{acorex-modules-task-management-task-board.page-9rGlt3Fd.mjs.map → acorex-modules-task-management-task-board.page-Bceu03Yj.mjs.map} +1 -1
- package/fesm2022/acorex-modules-task-management.mjs +1 -1
- package/package.json +6 -6
- package/report-management/index.d.ts +2 -15
- package/settings-management/index.d.ts +2 -2
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-D2sEG8P9.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-GEe-dEOj.mjs.map +0 -1
- package/fesm2022/acorex-modules-notification-management-notification-page.component-Lz8J7q4k.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-TfQFYkDv.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-DTjfgbLU.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-CXXHizT0.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-task-management-task-board.page-9rGlt3Fd.mjs","sources":["../tmp-esm2022/task-management/lib/features/task-board/settings.keys.js","../tmp-esm2022/task-management/lib/features/task-board/task-board.viewmodel.js","../tmp-esm2022/task-management/lib/features/task-board/task-board-detail-panel/task-board-detail-panel.component.js","../tmp-esm2022/task-management/lib/features/task-board/task-board-filters/task-board-filters.component.js","../tmp-esm2022/task-management/lib/features/task-board/views/task-board-calendar-view/task-board-calendar-view.component.js","../tmp-esm2022/task-management/lib/features/task-board/views/task-board-grid-view/task-board-grid-view.component.js","../tmp-esm2022/task-management/lib/features/task-board/views/task-board-kanban-view/task-board-kanban-view.component.js","../tmp-esm2022/task-management/lib/features/task-board/views/task-board-status-grouped-grid-view/task-board-status-grouped-grid-view.component.js","../tmp-esm2022/task-management/lib/features/task-board/task-board.page.js"],"sourcesContent":["export var AXMTaskBoardSettings;\n(function (AXMTaskBoardSettings) {\n AXMTaskBoardSettings[\"ViewMode\"] = \"taskboard.viewMode\";\n AXMTaskBoardSettings[\"DetailPanel\"] = \"taskboard.DetailPanel\";\n AXMTaskBoardSettings[\"DaysCount\"] = \"taskboard.calendar.daysCount\";\n AXMTaskBoardSettings[\"CurrentDate\"] = \"taskboard.calendar.currentDate\";\n AXMTaskBoardSettings[\"SelectedPriorities\"] = \"taskboard.filter.selectedPriorities\";\n AXMTaskBoardSettings[\"SelectedAssigneeIds\"] = \"taskboard.filter.selectedAssigneeIds\";\n AXMTaskBoardSettings[\"SelectedReporterIds\"] = \"taskboard.filter.selectedReporterIds\";\n AXMTaskBoardSettings[\"SelectedTaskTypeNames\"] = \"taskboard.filter.selectedTaskTypeNames\";\n})(AXMTaskBoardSettings || (AXMTaskBoardSettings = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Mua2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy90YXNrLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy90YXNrLWJvYXJkL3NldHRpbmdzLmtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksb0JBU1g7QUFURCxXQUFZLG9CQUFvQjtJQUM5Qix1REFBK0IsQ0FBQTtJQUMvQiw2REFBcUMsQ0FBQTtJQUNyQyxrRUFBMEMsQ0FBQTtJQUMxQyxzRUFBOEMsQ0FBQTtJQUM5QyxrRkFBMEQsQ0FBQTtJQUMxRCxvRkFBNEQsQ0FBQTtJQUM1RCxvRkFBNEQsQ0FBQTtJQUM1RCx3RkFBZ0UsQ0FBQTtBQUNsRSxDQUFDLEVBVFcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQVMvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEFYTVRhc2tCb2FyZFNldHRpbmdzIHtcbiAgVmlld01vZGUgPSAndGFza2JvYXJkLnZpZXdNb2RlJyxcbiAgRGV0YWlsUGFuZWwgPSAndGFza2JvYXJkLkRldGFpbFBhbmVsJyxcbiAgRGF5c0NvdW50ID0gJ3Rhc2tib2FyZC5jYWxlbmRhci5kYXlzQ291bnQnLFxuICBDdXJyZW50RGF0ZSA9ICd0YXNrYm9hcmQuY2FsZW5kYXIuY3VycmVudERhdGUnLFxuICBTZWxlY3RlZFByaW9yaXRpZXMgPSAndGFza2JvYXJkLmZpbHRlci5zZWxlY3RlZFByaW9yaXRpZXMnLFxuICBTZWxlY3RlZEFzc2lnbmVlSWRzID0gJ3Rhc2tib2FyZC5maWx0ZXIuc2VsZWN0ZWRBc3NpZ25lZUlkcycsXG4gIFNlbGVjdGVkUmVwb3J0ZXJJZHMgPSAndGFza2JvYXJkLmZpbHRlci5zZWxlY3RlZFJlcG9ydGVySWRzJyxcbiAgU2VsZWN0ZWRUYXNrVHlwZU5hbWVzID0gJ3Rhc2tib2FyZC5maWx0ZXIuc2VsZWN0ZWRUYXNrVHlwZU5hbWVzJyxcbn1cbiJdfQ==","import { AXPSettingService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withMethods, withState } from '@ngrx/signals';\nimport { AXMTaskBoardSettings } from './settings.keys';\nimport { AXPTaskBoardService } from './task-board.service';\nexport const AXMTaskBoardViewModel = signalStore({ providedIn: 'root' }, withState(() => ({\n daysCount: 7,\n taskTypes: [],\n isLoading: true,\n detailPanel: false,\n selectedTask: null,\n rangeStartDate: null,\n currentDate: new Date(),\n currentViewMode: 'month',\n selectedTaskTypeNames: [],\n selectedAssigneeIds: [],\n selectedPriorities: [],\n selectedReporterIds: [],\n})), withComputed((store) => ({\n selectedTaskTypes: computed(() => {\n const names = store.selectedTaskTypeNames();\n if (!names || names.length === 0) {\n return [];\n }\n return store.taskTypes().filter((tt) => names.includes(tt.name));\n }),\n isTaskSelected: computed(() => store.selectedTask() !== null),\n isDetailPanelOpen: computed(() => store.detailPanel()),\n endDate: computed(() => {\n const currentDate = store.currentDate();\n const daysCount = store.daysCount();\n return new Date(currentDate.getTime() + daysCount * 24 * 60 * 60 * 1000);\n }),\n activeFilterCount: computed(() => {\n let count = 0;\n if (store.currentViewMode() !== 'kanban' &&\n store.currentViewMode() !== 'status-grouped-grid' &&\n store.selectedTaskTypeNames().length > 0) {\n count++;\n }\n if (store.selectedAssigneeIds().length > 0) {\n count++;\n }\n if (store.selectedReporterIds().length > 0) {\n count++;\n }\n if (store.selectedPriorities().length > 0) {\n count++;\n }\n return count;\n }),\n})), withMethods((store, settingService = inject(AXPSettingService), taskBoardService = inject(AXPTaskBoardService)) => {\n const userScopedSettings = () => settingService.scope(AXPPlatformScope.User);\n return {\n async initialize() {\n patchState(store, { isLoading: true });\n try {\n const taskTypes = await taskBoardService.getTaskTypes();\n patchState(store, { taskTypes });\n const [savedDaysCount, savedDateString, savedDetailPanel, savedViewMode, savedTaskTypeNames, savedAssigneeIds, savedReporterIds, savedPriorities,] = await Promise.all([\n userScopedSettings().get(AXMTaskBoardSettings.DaysCount),\n userScopedSettings().get(AXMTaskBoardSettings.CurrentDate),\n userScopedSettings().get(AXMTaskBoardSettings.DetailPanel),\n userScopedSettings().get(AXMTaskBoardSettings.ViewMode),\n userScopedSettings().get(AXMTaskBoardSettings.SelectedTaskTypeNames),\n userScopedSettings().get(AXMTaskBoardSettings.SelectedAssigneeIds),\n userScopedSettings().get(AXMTaskBoardSettings.SelectedReporterIds),\n userScopedSettings().get(AXMTaskBoardSettings.SelectedPriorities),\n ]);\n patchState(store, {\n daysCount: savedDaysCount || 7,\n detailPanel: savedDetailPanel || false,\n currentViewMode: savedViewMode || 'month',\n currentDate: savedDateString ? new Date(savedDateString) : new Date(),\n selectedTaskTypeNames: savedTaskTypeNames || [],\n selectedAssigneeIds: savedAssigneeIds || [],\n selectedReporterIds: savedReporterIds || [],\n selectedPriorities: savedPriorities || [],\n isLoading: false,\n });\n }\n catch (error) {\n console.error('Error initializing TaskBoard ViewModel:', error);\n patchState(store, {\n detailPanel: false,\n currentViewMode: 'month',\n currentDate: new Date(),\n selectedTaskTypeNames: [],\n selectedAssigneeIds: [],\n selectedPriorities: [],\n selectedReporterIds: [],\n taskTypes: store.taskTypes(),\n isLoading: false,\n });\n }\n },\n setViewMode(mode) {\n if ((mode === 'kanban' || mode === 'status-grouped-grid') && store.selectedTaskTypeNames().length === 0) {\n const firstTaskType = store.taskTypes()[0];\n if (firstTaskType) {\n this.setSelectedTaskTypeNames([firstTaskType.name]);\n }\n }\n if ((mode === 'kanban' || mode === 'status-grouped-grid') && store.selectedTaskTypeNames().length > 1) {\n this.setSelectedTaskTypeNames([store.selectedTaskTypeNames()[0]]);\n }\n patchState(store, { currentViewMode: mode });\n userScopedSettings()\n .set(AXMTaskBoardSettings.ViewMode, mode)\n .catch((error) => console.error('Error saving calendar view mode:', error));\n },\n setCurrentDate(date) {\n patchState(store, { currentDate: new Date(date) });\n userScopedSettings()\n .set(AXMTaskBoardSettings.CurrentDate, date.toISOString())\n .catch((error) => console.error('Error saving current date:', error));\n },\n setSelectedTaskTypeNames(taskTypeNames, isQueryParam = false) {\n patchState(store, { selectedTaskTypeNames: taskTypeNames });\n if (isQueryParam)\n return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedTaskTypeNames, taskTypeNames)\n .catch((error) => console.error('Error saving selected task type filter:', error));\n },\n setSelectedAssigneeIds(assigneeIds, isQueryParam = false) {\n patchState(store, { selectedAssigneeIds: assigneeIds });\n if (isQueryParam)\n return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedAssigneeIds, assigneeIds)\n .catch((error) => console.error('Error saving selected assignee filter:', error));\n },\n setSelectedReporterIds(reporterIds, isQueryParam = false) {\n patchState(store, { selectedReporterIds: reporterIds });\n if (isQueryParam)\n return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedReporterIds, reporterIds)\n .catch((error) => console.error('Error saving selected reporter filter:', error));\n },\n setSelectedPriorities(priorities, isQueryParam = false) {\n patchState(store, { selectedPriorities: priorities });\n if (isQueryParam)\n return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedPriorities, priorities)\n .catch((error) => console.error('Error saving selected priority filter:', error));\n },\n /**\n * Sets the currently selected task. Pass `null` to clear the selection.\n * @param task The task to select, or null.\n */\n selectTask(task) {\n patchState(store, { selectedTask: task });\n },\n /**\n * A convenience method to clear the currently selected task.\n */\n clearSelectedTask() {\n patchState(store, { selectedTask: null });\n },\n openDetailPanel() {\n patchState(store, { detailPanel: true });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DetailPanel, true)\n .catch((error) => console.error('Error saving detail panel:', error));\n },\n closeDetailPanel() {\n patchState(store, { detailPanel: false });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DetailPanel, false)\n .catch((error) => console.error('Error saving detail panel:', error));\n },\n toggleDetailPanel() {\n const detailPanel = !store.detailPanel();\n patchState(store, { detailPanel: detailPanel });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DetailPanel, detailPanel)\n .catch((error) => console.error('Error saving detail panel:', error));\n },\n async getStatusName(key, provider) {\n return taskBoardService.getStatusName(key, provider);\n },\n /**\n * Sets the start date for a new range selection.\n * Pass `null` to clear the selection.\n * @param date The start date of the range.\n */\n setRangeStartDate(date) {\n patchState(store, { rangeStartDate: date });\n },\n setDaysCount(days) {\n const count = Math.max(1, days);\n patchState(store, { daysCount: count });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DaysCount, count)\n .catch((error) => console.error('Error saving days count:', error));\n },\n };\n}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC52aWV3bW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvdGFzay1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC90YXNrLWJvYXJkLnZpZXdtb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQXNCM0QsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUM5QyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFDdEIsU0FBUyxDQUFvQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFNBQVMsRUFBRSxDQUFDO0lBQ1osU0FBUyxFQUFFLEVBQUU7SUFDYixTQUFTLEVBQUUsSUFBSTtJQUNmLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLFlBQVksRUFBRSxJQUFJO0lBQ2xCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRTtJQUN2QixlQUFlLEVBQUUsT0FBTztJQUN4QixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLG1CQUFtQixFQUFFLEVBQUU7SUFDdkIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QixtQkFBbUIsRUFBRSxFQUFFO0NBQ3hCLENBQUMs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LE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFRLEVBQUUsUUFBZ0I7WUFDNUMsT0FBTyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRDs7OztXQUlHO1FBQ0gsaUJBQWlCLENBQUMsSUFBaUI7WUFDakMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxZQUFZLENBQUMsSUFBWTtZQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEMsa0JBQWtCLEVBQUU7aUJBQ2pCLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2lCQUMxQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFNjaGVkdWxlclZpZXcgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2NoZWR1bGVyJztcbmltcG9ydCB7IEFYUFNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQUGxhdGZvcm1TY29wZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwYXRjaFN0YXRlLCBzaWduYWxTdG9yZSwgd2l0aENvbXB1dGVkLCB3aXRoTWV0aG9kcywgd2l0aFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRTZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3Mua2V5cyc7XG5pbXBvcnQgeyBBWFBUYXNrQm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi90YXNrLWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQVGFzaywgQVhQV29ya2Zsb3dUYXNrUHJvdmlkZXIgfSBmcm9tICcuL3Rhc2stYm9hcmQudHlwZXMnO1xuXG50eXBlIEFYUFRhc2tQcmlvcml0eSA9IE5vbk51bGxhYmxlPEFYUFRhc2tbJ3ByaW9yaXR5J10+O1xuZXhwb3J0IHR5cGUgQVhQUHJpb3JpdHlGaWx0ZXJLZXkgPSBBWFBUYXNrUHJpb3JpdHkgfCAnbm9fcHJpb3JpdHknO1xuZXhwb3J0IHR5cGUgQVhQVGFza0JvYXJkVmlld01vZGUgPSBBWFNjaGVkdWxlclZpZXcgfCAna2FuYmFuJyB8ICdncmlkJyB8ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJztcblxudHlwZSBBWFBUYXNrQm9hcmRTdGF0ZSA9IHtcbiAgZGF5c0NvdW50OiBudW1iZXI7XG4gIGN1cnJlbnREYXRlOiBEYXRlO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGRldGFpbFBhbmVsOiBib29sZWFuO1xuICByYW5nZVN0YXJ0RGF0ZTogRGF0ZSB8IG51bGw7XG4gIHNlbGVjdGVkVGFzazogQVhQVGFzayB8IG51bGw7XG4gIHNlbGVjdGVkVGFza1R5cGVOYW1lczogc3RyaW5nW107XG4gIHRhc2tUeXBlczogQVhQV29ya2Zsb3dUYXNrUHJvdmlkZXJbXTtcbiAgY3VycmVudFZpZXdNb2RlOiBBWFBUYXNrQm9hcmRWaWV3TW9kZTtcbiAgc2VsZWN0ZWRQcmlvcml0aWVzOiBBWFBQcmlvcml0eUZpbHRlcktleVtdO1xuICBzZWxlY3RlZEFzc2lnbmVlSWRzOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICBzZWxlY3RlZFJlcG9ydGVySWRzOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xufTtcblxuZXhwb3J0IGNvbnN0IEFYTVRhc2tCb2FyZFZpZXdNb2RlbCA9IHNpZ25hbFN0b3JlKFxuICB7IHByb3ZpZGVkSW46ICdyb290JyB9LFxuICB3aXRoU3RhdGU8QVhQVGFza0JvYXJkU3RhdGU+KCgpID0+ICh7XG4gICAgZGF5c0NvdW50OiA3LFxuICAgIHRhc2tUeXBlczogW10sXG4gICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgIGRldGFpbFBhbmVsOiBmYWxzZSxcbiAgICBzZWxlY3RlZFRhc2s6IG51bGwsXG4gICAgcmFuZ2VTdGFydERhdGU6IG51bGwsXG4gICAgY3VycmVudERhdGU6IG5ldyBEYXRlKCksXG4gICAgY3VycmVudFZpZXdNb2RlOiAnbW9udGgnLFxuICAgIHNlbGVjdGVkVGFza1R5cGVOYW1lczogW10sXG4gICAgc2VsZWN0ZWRBc3NpZ25lZUlkczogW10sXG4gICAgc2VsZWN0ZWRQcmlvcml0aWVzOiBbXSxcbiAgICBzZWxlY3RlZFJlcG9ydGVySWRzOiBbXSxcbiAgfSkpLFxuXG4gIHdpdGhDb21wdXRlZCgoc3RvcmUpID0+ICh7XG4gICAgc2VsZWN0ZWRUYXNrVHlwZXM6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWVzID0gc3RvcmUuc2VsZWN0ZWRUYXNrVHlwZU5hbWVzKCk7XG4gICAgICBpZiAoIW5hbWVzIHx8IG5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RvcmUudGFza1R5cGVzKCkuZmlsdGVyKCh0dCkgPT4gbmFtZXMuaW5jbHVkZXModHQubmFtZSkpO1xuICAgIH0pLFxuICAgIGlzVGFza1NlbGVjdGVkOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5zZWxlY3RlZFRhc2soKSAhPT0gbnVsbCksXG4gICAgaXNEZXRhaWxQYW5lbE9wZW46IGNvbXB1dGVkKCgpID0+IHN0b3JlLmRldGFpbFBhbmVsKCkpLFxuICAgIGVuZERhdGU6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gc3RvcmUuY3VycmVudERhdGUoKTtcbiAgICAgIGNvbnN0IGRheXNDb3VudCA9IHN0b3JlLmRheXNDb3VudCgpO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGN1cnJlbnREYXRlLmdldFRpbWUoKSArIGRheXNDb3VudCAqIDI0ICogNjAgKiA2MCAqIDEwMDApO1xuICAgIH0pLFxuICAgIGFjdGl2ZUZpbHRlckNvdW50OiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgaWYgKFxuICAgICAgICBzdG9yZS5jdXJyZW50Vmlld01vZGUoKSAhPT0gJ2thbmJhbicgJiZcbiAgICAgICAgc3RvcmUuY3VycmVudFZpZXdNb2RlKCkgIT09ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJyAmJlxuICAgICAgICBzdG9yZS5zZWxlY3RlZFRhc2tUeXBlTmFtZXMoKS5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICAgIGlmIChzdG9yZS5zZWxlY3RlZEFzc2lnbmVlSWRzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgICAgaWYgKHN0b3JlLnNlbGVjdGVkUmVwb3J0ZXJJZHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgICBpZiAoc3RvcmUuc2VsZWN0ZWRQcmlvcml0aWVzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH0pLFxuICB9KSksXG5cbiAgd2l0aE1ldGhvZHMoKHN0b3JlLCBzZXR0aW5nU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSksIHRhc2tCb2FyZFNlcnZpY2UgPSBpbmplY3QoQVhQVGFza0JvYXJkU2VydmljZSkpID0+IHtcbiAgICBjb25zdCB1c2VyU2NvcGVkU2V0dGluZ3MgPSAoKSA9PiBzZXR0aW5nU2VydmljZS5zY29wZShBWFBQbGF0Zm9ybVNjb3BlLlVzZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgaXNMb2FkaW5nOiB0cnVlIH0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHRhc2tUeXBlcyA9IGF3YWl0IHRhc2tCb2FyZFNlcnZpY2UuZ2V0VGFza1R5cGVzKCk7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyB0YXNrVHlwZXMgfSk7XG5cbiAgICAgICAgICBjb25zdCBbXG4gICAgICAgICAgICBzYXZlZERheXNDb3VudCxcbiAgICAgICAgICAgIHNhdmVkRGF0ZVN0cmluZyxcbiAgICAgICAgICAgIHNhdmVkRGV0YWlsUGFuZWwsXG4gICAgICAgICAgICBzYXZlZFZpZXdNb2RlLFxuICAgICAgICAgICAgc2F2ZWRUYXNrVHlwZU5hbWVzLFxuICAgICAgICAgICAgc2F2ZWRBc3NpZ25lZUlkcyxcbiAgICAgICAgICAgIHNhdmVkUmVwb3J0ZXJJZHMsXG4gICAgICAgICAgICBzYXZlZFByaW9yaXRpZXMsXG4gICAgICAgICAgXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIHVzZXJTY29wZWRTZXR0aW5ncygpLmdldDxudW1iZXIgfCB1bmRlZmluZWQ+KEFYTVRhc2tCb2FyZFNldHRpbmdzLkRheXNDb3VudCksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8c3RyaW5nIHwgdW5kZWZpbmVkPihBWE1UYXNrQm9hcmRTZXR0aW5ncy5DdXJyZW50RGF0ZSksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oQVhNVGFza0JvYXJkU2V0dGluZ3MuRGV0YWlsUGFuZWwpLFxuICAgICAgICAgICAgdXNlclNjb3BlZFNldHRpbmdzKCkuZ2V0PEFYUFRhc2tCb2FyZFZpZXdNb2RlIHwgdW5kZWZpbmVkPihBWE1UYXNrQm9hcmRTZXR0aW5ncy5WaWV3TW9kZSksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8c3RyaW5nW10gfCB1bmRlZmluZWQ+KEFYTVRhc2tCb2FyZFNldHRpbmdzLlNlbGVjdGVkVGFza1R5cGVOYW1lcyksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8KHN0cmluZyB8IG51bWJlcilbXSB8IHVuZGVmaW5lZD4oQVhNVGFza0JvYXJkU2V0dGluZ3MuU2VsZWN0ZWRBc3NpZ25lZUlkcyksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8KHN0cmluZyB8IG51bWJlcilbXSB8IHVuZGVmaW5lZD4oQVhNVGFza0JvYXJkU2V0dGluZ3MuU2VsZWN0ZWRSZXBvcnRlcklkcyksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8QVhQUHJpb3JpdHlGaWx0ZXJLZXlbXSB8IHVuZGVmaW5lZD4oQVhNVGFza0JvYXJkU2V0dGluZ3MuU2VsZWN0ZWRQcmlvcml0aWVzKSxcbiAgICAgICAgICBdKTtcblxuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIGRheXNDb3VudDogc2F2ZWREYXlzQ291bnQgfHwgNyxcbiAgICAgICAgICAgIGRldGFpbFBhbmVsOiBzYXZlZERldGFpbFBhbmVsIHx8IGZhbHNlLFxuICAgICAgICAgICAgY3VycmVudFZpZXdNb2RlOiBzYXZlZFZpZXdNb2RlIHx8ICdtb250aCcsXG4gICAgICAgICAgICBjdXJyZW50RGF0ZTogc2F2ZWREYXRlU3RyaW5nID8gbmV3IERhdGUoc2F2ZWREYXRlU3RyaW5nKSA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBzZWxlY3RlZFRhc2tUeXBlTmFtZXM6IHNhdmVkVGFza1R5cGVOYW1lcyB8fCBbXSxcbiAgICAgICAgICAgIHNlbGVjdGVkQXNzaWduZWVJZHM6IHNhdmVkQXNzaWduZWVJZHMgfHwgW10sXG4gICAgICAgICAgICBzZWxlY3RlZFJlcG9ydGVySWRzOiBzYXZlZFJlcG9ydGVySWRzIHx8IFtdLFxuICAgICAgICAgICAgc2VsZWN0ZWRQcmlvcml0aWVzOiBzYXZlZFByaW9yaXRpZXMgfHwgW10sXG4gICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluaXRpYWxpemluZyBUYXNrQm9hcmQgVmlld01vZGVsOicsIGVycm9yKTtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBkZXRhaWxQYW5lbDogZmFsc2UsXG4gICAgICAgICAgICBjdXJyZW50Vmlld01vZGU6ICdtb250aCcsXG4gICAgICAgICAgICBjdXJyZW50RGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHNlbGVjdGVkVGFza1R5cGVOYW1lczogW10sXG4gICAgICAgICAgICBzZWxlY3RlZEFzc2lnbmVlSWRzOiBbXSxcbiAgICAgICAgICAgIHNlbGVjdGVkUHJpb3JpdGllczogW10sXG4gICAgICAgICAgICBzZWxlY3RlZFJlcG9ydGVySWRzOiBbXSxcbiAgICAgICAgICAgIHRhc2tUeXBlczogc3RvcmUudGFza1R5cGVzKCksXG4gICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICBzZXRWaWV3TW9kZShtb2RlOiBBWFBUYXNrQm9hcmRWaWV3TW9kZSkge1xuICAgICAgICBpZiAoKG1vZGUgPT09ICdrYW5iYW4nIHx8IG1vZGUgPT09ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJykgJiYgc3RvcmUuc2VsZWN0ZWRUYXNrVHlwZU5hbWVzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgZmlyc3RUYXNrVHlwZSA9IHN0b3JlLnRhc2tUeXBlcygpWzBdO1xuICAgICAgICAgIGlmIChmaXJzdFRhc2tUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVGFza1R5cGVOYW1lcyhbZmlyc3RUYXNrVHlwZS5uYW1lXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgobW9kZSA9PT0gJ2thbmJhbicgfHwgbW9kZSA9PT0gJ3N0YXR1cy1ncm91cGVkLWdyaWQnKSAmJiBzdG9yZS5zZWxlY3RlZFRhc2tUeXBlTmFtZXMoKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFRhc2tUeXBlTmFtZXMoW3N0b3JlLnNlbGVjdGVkVGFza1R5cGVOYW1lcygpWzBdXSk7XG4gICAgICAgIH1cbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBjdXJyZW50Vmlld01vZGU6IG1vZGUgfSk7XG4gICAgICAgIHVzZXJTY29wZWRTZXR0aW5ncygpXG4gICAgICAgICAgLnNldChBWE1UYXNrQm9hcmRTZXR0aW5ncy5WaWV3TW9kZSwgbW9kZSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgY2FsZW5kYXIgdmlldyBtb2RlOicsIGVycm9yKSk7XG4gICAgICB9LFxuXG4gICAgICBzZXRDdXJyZW50RGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgY3VycmVudERhdGU6IG5ldyBEYXRlKGRhdGUpIH0pO1xuICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgIC5zZXQoQVhNVGFza0JvYXJkU2V0dGluZ3MuQ3VycmVudERhdGUsIGRhdGUudG9JU09TdHJpbmcoKSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgY3VycmVudCBkYXRlOicsIGVycm9yKSk7XG4gICAgICB9LFxuXG4gICAgICBzZXRTZWxlY3RlZFRhc2tUeXBlTmFtZXModGFza1R5cGVOYW1lczogc3RyaW5nW10sIGlzUXVlcnlQYXJhbTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgc2VsZWN0ZWRUYXNrVHlwZU5hbWVzOiB0YXNrVHlwZU5hbWVzIH0pO1xuICAgICAgICBpZiAoaXNRdWVyeVBhcmFtKSByZXR1cm47XG4gICAgICAgIHVzZXJTY29wZWRTZXR0aW5ncygpXG4gICAgICAgICAgLnNldChBWE1UYXNrQm9hcmRTZXR0aW5ncy5TZWxlY3RlZFRhc2tUeXBlTmFtZXMsIHRhc2tUeXBlTmFtZXMpXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIHNlbGVjdGVkIHRhc2sgdHlwZSBmaWx0ZXI6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIHNldFNlbGVjdGVkQXNzaWduZWVJZHMoYXNzaWduZWVJZHM6IChzdHJpbmcgfCBudW1iZXIpW10sIGlzUXVlcnlQYXJhbTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgc2VsZWN0ZWRBc3NpZ25lZUlkczogYXNzaWduZWVJZHMgfSk7XG4gICAgICAgIGlmIChpc1F1ZXJ5UGFyYW0pIHJldHVybjtcbiAgICAgICAgdXNlclNjb3BlZFNldHRpbmdzKClcbiAgICAgICAgICAuc2V0KEFYTVRhc2tCb2FyZFNldHRpbmdzLlNlbGVjdGVkQXNzaWduZWVJZHMsIGFzc2lnbmVlSWRzKVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBzZWxlY3RlZCBhc3NpZ25lZSBmaWx0ZXI6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIHNldFNlbGVjdGVkUmVwb3J0ZXJJZHMocmVwb3J0ZXJJZHM6IChzdHJpbmcgfCBudW1iZXIpW10sIGlzUXVlcnlQYXJhbTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgc2VsZWN0ZWRSZXBvcnRlcklkczogcmVwb3J0ZXJJZHMgfSk7XG4gICAgICAgIGlmIChpc1F1ZXJ5UGFyYW0pIHJldHVybjtcbiAgICAgICAgdXNlclNjb3BlZFNldHRpbmdzKClcbiAgICAgICAgICAuc2V0KEFYTVRhc2tCb2FyZFNldHRpbmdzLlNlbGVjdGVkUmVwb3J0ZXJJZHMsIHJlcG9ydGVySWRzKVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBzZWxlY3RlZCByZXBvcnRlciBmaWx0ZXI6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIHNldFNlbGVjdGVkUHJpb3JpdGllcyhwcmlvcml0aWVzOiBBWFBQcmlvcml0eUZpbHRlcktleVtdLCBpc1F1ZXJ5UGFyYW06IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IHNlbGVjdGVkUHJpb3JpdGllczogcHJpb3JpdGllcyB9KTtcbiAgICAgICAgaWYgKGlzUXVlcnlQYXJhbSkgcmV0dXJuO1xuICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgIC5zZXQoQVhNVGFza0JvYXJkU2V0dGluZ3MuU2VsZWN0ZWRQcmlvcml0aWVzLCBwcmlvcml0aWVzKVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBzZWxlY3RlZCBwcmlvcml0eSBmaWx0ZXI6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogU2V0cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHRhc2suIFBhc3MgYG51bGxgIHRvIGNsZWFyIHRoZSBzZWxlY3Rpb24uXG4gICAgICAgKiBAcGFyYW0gdGFzayBUaGUgdGFzayB0byBzZWxlY3QsIG9yIG51bGwuXG4gICAgICAgKi9cbiAgICAgIHNlbGVjdFRhc2sodGFzazogQVhQVGFzayB8IG51bGwpIHtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBzZWxlY3RlZFRhc2s6IHRhc2sgfSk7XG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIEEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNsZWFyIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFzay5cbiAgICAgICAqL1xuICAgICAgY2xlYXJTZWxlY3RlZFRhc2soKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgc2VsZWN0ZWRUYXNrOiBudWxsIH0pO1xuICAgICAgfSxcblxuICAgICAgb3BlbkRldGFpbFBhbmVsKCkge1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGRldGFpbFBhbmVsOiB0cnVlIH0pO1xuICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgIC5zZXQoQVhNVGFza0JvYXJkU2V0dGluZ3MuRGV0YWlsUGFuZWwsIHRydWUpXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGRldGFpbCBwYW5lbDonLCBlcnJvcikpO1xuICAgICAgfSxcblxuICAgICAgY2xvc2VEZXRhaWxQYW5lbCgpIHtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBkZXRhaWxQYW5lbDogZmFsc2UgfSk7XG4gICAgICAgIHVzZXJTY29wZWRTZXR0aW5ncygpXG4gICAgICAgICAgLnNldChBWE1UYXNrQm9hcmRTZXR0aW5ncy5EZXRhaWxQYW5lbCwgZmFsc2UpXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGRldGFpbCBwYW5lbDonLCBlcnJvcikpO1xuICAgICAgfSxcblxuICAgICAgdG9nZ2xlRGV0YWlsUGFuZWwoKSB7XG4gICAgICAgIGNvbnN0IGRldGFpbFBhbmVsID0gIXN0b3JlLmRldGFpbFBhbmVsKCk7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgZGV0YWlsUGFuZWw6IGRldGFpbFBhbmVsIH0pO1xuICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgIC5zZXQoQVhNVGFza0JvYXJkU2V0dGluZ3MuRGV0YWlsUGFuZWwsIGRldGFpbFBhbmVsKVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBkZXRhaWwgcGFuZWw6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIGFzeW5jIGdldFN0YXR1c05hbWUoa2V5OiBhbnksIHByb3ZpZGVyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRhc2tCb2FyZFNlcnZpY2UuZ2V0U3RhdHVzTmFtZShrZXksIHByb3ZpZGVyKTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogU2V0cyB0aGUgc3RhcnQgZGF0ZSBmb3IgYSBuZXcgcmFuZ2Ugc2VsZWN0aW9uLlxuICAgICAgICogUGFzcyBgbnVsbGAgdG8gY2xlYXIgdGhlIHNlbGVjdGlvbi5cbiAgICAgICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydCBkYXRlIG9mIHRoZSByYW5nZS5cbiAgICAgICAqL1xuICAgICAgc2V0UmFuZ2VTdGFydERhdGUoZGF0ZTogRGF0ZSB8IG51bGwpIHtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyByYW5nZVN0YXJ0RGF0ZTogZGF0ZSB9KTtcbiAgICAgIH0sXG5cbiAgICAgIHNldERheXNDb3VudChkYXlzOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgY291bnQgPSBNYXRoLm1heCgxLCBkYXlzKTtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBkYXlzQ291bnQ6IGNvdW50IH0pO1xuICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgIC5zZXQoQVhNVGFza0JvYXJkU2V0dGluZ3MuRGF5c0NvdW50LCBjb3VudClcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZGF5cyBjb3VudDonLCBlcnJvcikpO1xuICAgICAgfSxcbiAgICB9O1xuICB9KSxcbik7XG4iXX0=","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { RootConfig } from '../../../const';\nimport { AXPTaskBoardService } from '../task-board.service';\nimport { AXMTaskBoardViewModel } from '../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/widget-core\";\nexport class AXMTaskBoardDetailPanel {\n constructor() {\n this.rootConfig = RootConfig;\n this.vm = inject(AXMTaskBoardViewModel);\n this.localeService = inject(AXLocaleService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.statusName = signal('', ...(ngDevMode ? [{ debugName: \"statusName\" }] : []));\n this.extraFields = signal([], ...(ngDevMode ? [{ debugName: \"extraFields\" }] : []));\n this.#selectedTaskChanged = effect(async () => {\n const selectedTask = this.vm.selectedTask();\n const key = selectedTask?.status.id;\n const provider = selectedTask?.provider;\n if (!provider)\n return;\n const name = await this.vm.getStatusName(key, provider);\n if (name)\n this.statusName.set(name);\n }, ...(ngDevMode ? [{ debugName: \"#selectedTaskChanged\" }] : []));\n this.#selectedTaskTypeChanged = effect(async () => {\n const selectedTask = this.vm.selectedTask();\n const selectedTaskType = this.taskBoardService.getProvider(selectedTask?.provider);\n const extraFields = await selectedTaskType?.getExtraFields();\n if (!extraFields) {\n this.extraFields.set([]);\n return;\n }\n this.extraFields.set(extraFields);\n }, ...(ngDevMode ? [{ debugName: \"#selectedTaskTypeChanged\" }] : []));\n }\n #selectedTaskChanged;\n #selectedTaskTypeChanged;\n capitalizeFirstLetter(text) {\n return String(text).charAt(0).toUpperCase() + String(text).slice(1);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardDetailPanel, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMTaskBoardDetailPanel, isStandalone: true, selector: \"axm-task-board-detail-panel\", ngImport: i0, template: \"@if (vm.isTaskSelected()) {\\n @let nodeInfo = vm.selectedTask();\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ nodeInfo?.title }}</span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <div class=\\\"__section\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.title' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @if (nodeInfo?.description) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.description' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.description }}</div>\\n </div>\\n }\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.start-date' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.startDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.end-date' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.endDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.reporter' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{ nodeInfo?.reporter?.fullName }}\\n </div>\\n </div>\\n @if (nodeInfo?.assignee) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.assignee' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.assignee?.fullName }}</div>\\n </div>\\n }\\n @if (statusName()) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.status' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ statusName() }}</div>\\n </div>\\n }\\n @if (nodeInfo?.priority) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.priority' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ capitalizeFirstLetter(nodeInfo?.priority ?? '') }}</div>\\n </div>\\n }\\n @if (extraFields() && extraFields().length) {\\n <div class=\\\"__row\\\">\\n <axp-widgets-container [context]=\\\"nodeInfo\\\">\\n @for (extraField of extraFields(); track extraField) {\\n <div class=\\\"__title\\\">\\n <span>\\n {{ extraField.title | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n <ng-container axp-widget-renderer [node]=\\\"extraField.widget\\\" [mode]=\\\"'view'\\\"> </ng-container>\\n </div>\\n }\\n </axp-widgets-container>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n} @else {\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.title' | translate | async }}\\n </span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n\\n <div class=\\\"__content ax-flex ax-items-center ax-justify-center\\\">\\n <axp-state-message\\n icon=\\\"fa-light fa-clipboard-list-check\\\"\\n [title]=\\\"'@task-management:task-board.detail-panel.no-task-selected.title'\\\"\\n [description]=\\\"'@task-management:task-board.detail-panel.no-task-selected.description'\\\"\\n >\\n </axp-state-message>\\n </div>\\n}\\n\", styles: [\"axm-task-board-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-task-board-detail-panel{width:24rem}}axm-task-board-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}@media (min-width: 1024px){axm-task-board-detail-panel>.__header{width:20rem}}axm-task-board-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-task-board-detail-panel>.__content{display:flex;flex-direction:column}axm-task-board-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-task-board-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-task-board-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-task-board-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\\n\"], dependencies: [{ kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i1.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i1.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardDetailPanel, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-detail-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [\n AsyncPipe,\n AXFormatPipe,\n AXTranslatorPipe,\n AXButtonComponent,\n AXPStateMessageComponent,\n AXPWidgetCoreModule,\n AXDecoratorIconComponent,\n ], template: \"@if (vm.isTaskSelected()) {\\n @let nodeInfo = vm.selectedTask();\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ nodeInfo?.title }}</span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <div class=\\\"__section\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.title' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @if (nodeInfo?.description) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.description' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.description }}</div>\\n </div>\\n }\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.start-date' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.startDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.end-date' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.endDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.reporter' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{ nodeInfo?.reporter?.fullName }}\\n </div>\\n </div>\\n @if (nodeInfo?.assignee) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.assignee' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.assignee?.fullName }}</div>\\n </div>\\n }\\n @if (statusName()) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.status' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ statusName() }}</div>\\n </div>\\n }\\n @if (nodeInfo?.priority) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.priority' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ capitalizeFirstLetter(nodeInfo?.priority ?? '') }}</div>\\n </div>\\n }\\n @if (extraFields() && extraFields().length) {\\n <div class=\\\"__row\\\">\\n <axp-widgets-container [context]=\\\"nodeInfo\\\">\\n @for (extraField of extraFields(); track extraField) {\\n <div class=\\\"__title\\\">\\n <span>\\n {{ extraField.title | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n <ng-container axp-widget-renderer [node]=\\\"extraField.widget\\\" [mode]=\\\"'view'\\\"> </ng-container>\\n </div>\\n }\\n </axp-widgets-container>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n} @else {\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.title' | translate | async }}\\n </span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n\\n <div class=\\\"__content ax-flex ax-items-center ax-justify-center\\\">\\n <axp-state-message\\n icon=\\\"fa-light fa-clipboard-list-check\\\"\\n [title]=\\\"'@task-management:task-board.detail-panel.no-task-selected.title'\\\"\\n [description]=\\\"'@task-management:task-board.detail-panel.no-task-selected.description'\\\"\\n >\\n </axp-state-message>\\n </div>\\n}\\n\", styles: [\"axm-task-board-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-task-board-detail-panel{width:24rem}}axm-task-board-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}@media (min-width: 1024px){axm-task-board-detail-panel>.__header{width:20rem}}axm-task-board-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-task-board-detail-panel>.__content{display:flex;flex-direction:column}axm-task-board-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-task-board-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-task-board-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-task-board-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1kZXRhaWwtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwvdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwvdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQWtCaEUsTUFBTSxPQUFPLHVCQUF1QjtJQWhCcEM7UUFpQnFCLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXhELGVBQVUsR0FBRyxNQUFNLENBQVMsRUFBRSxzREFBQyxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsTUFBTSxDQUFrQixFQUFFLHVEQUFDLENBQUM7UUFFcEQseUJBQW9CLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUMsTUFBTSxHQUFHLEdBQUcsWUFBWSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxRQUFRLEdBQUcsWUFBWSxFQUFFLFFBQVEsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPO1lBQ3RCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hELElBQUksSUFBSTtnQkFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLGdFQUFDLENBQUM7UUFFSCw2QkFBd0IsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDM0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ25GLE1BQU0sV0FBVyxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekIsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQyxDQUFDLG9FQUFDLENBQUM7S0FLSjtJQXZCQyxvQkFBb0IsQ0FPakI7SUFFSCx3QkFBd0IsQ0FTckI7SUFFTyxxQkFBcUIsQ0FBQyxJQUFZO1FBQzFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7K0dBL0JVLHVCQUF1QjttR0FBdkIsdUJBQXVCLHVGQzlCcEMsbXBKQStIQSxvc0VEdkdJLGlCQUFpQiwyVUFDakIsd0JBQXdCLDBIQUN4QixtQkFBbUIsK1pBQ25CLHdCQUF3QixpRUFOeEIsU0FBUyx5Q0FDVCxZQUFZLDBDQUNaLGdCQUFnQjs7NEZBT1AsdUJBQXVCO2tCQWhCbkMsU0FBUzsrQkFDRSw2QkFBNkIsbUJBR3RCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksV0FDNUI7d0JBQ1AsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3FCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvckljb25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWEZvcm1hdFBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb3JlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWFBUYXNrQm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi4vdGFzay1ib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUEV4dHJhRmllbGQgfSBmcm9tICcuLi90YXNrLWJvYXJkLnR5cGVzJztcbmltcG9ydCB7IEFYTVRhc2tCb2FyZFZpZXdNb2RlbCB9IGZyb20gJy4uL3Rhc2stYm9hcmQudmlld21vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLXRhc2stYm9hcmQtZGV0YWlsLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYm9hcmQtZGV0YWlsLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgQVhGb3JtYXRQaXBlLFxuICAgIEFYVHJhbnNsYXRvclBpcGUsXG4gICAgQVhCdXR0b25Db21wb25lbnQsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1UYXNrQm9hcmREZXRhaWxQYW5lbCB7XG4gIHByb3RlY3RlZCByZWFkb25seSByb290Q29uZmlnID0gUm9vdENvbmZpZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYTVRhc2tCb2FyZFZpZXdNb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0YXNrQm9hcmRTZXJ2aWNlID0gaW5qZWN0KEFYUFRhc2tCb2FyZFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBzdGF0dXNOYW1lID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgZXh0cmFGaWVsZHMgPSBzaWduYWw8QVhQRXh0cmFGaWVsZFtdPihbXSk7XG5cbiAgI3NlbGVjdGVkVGFza0NoYW5nZWQgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkVGFzayA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrKCk7XG4gICAgY29uc3Qga2V5ID0gc2VsZWN0ZWRUYXNrPy5zdGF0dXMuaWQ7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBzZWxlY3RlZFRhc2s/LnByb3ZpZGVyO1xuICAgIGlmICghcHJvdmlkZXIpIHJldHVybjtcbiAgICBjb25zdCBuYW1lID0gYXdhaXQgdGhpcy52bS5nZXRTdGF0dXNOYW1lKGtleSwgcHJvdmlkZXIpO1xuICAgIGlmIChuYW1lKSB0aGlzLnN0YXR1c05hbWUuc2V0KG5hbWUpO1xuICB9KTtcblxuICAjc2VsZWN0ZWRUYXNrVHlwZUNoYW5nZWQgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkVGFzayA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRUYXNrVHlwZSA9IHRoaXMudGFza0JvYXJkU2VydmljZS5nZXRQcm92aWRlcihzZWxlY3RlZFRhc2s/LnByb3ZpZGVyKTtcbiAgICBjb25zdCBleHRyYUZpZWxkcyA9IGF3YWl0IHNlbGVjdGVkVGFza1R5cGU/LmdldEV4dHJhRmllbGRzKCk7XG4gICAgaWYgKCFleHRyYUZpZWxkcykge1xuICAgICAgdGhpcy5leHRyYUZpZWxkcy5zZXQoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmV4dHJhRmllbGRzLnNldChleHRyYUZpZWxkcyk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBjYXBpdGFsaXplRmlyc3RMZXR0ZXIodGV4dDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0ZXh0KS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIFN0cmluZyh0ZXh0KS5zbGljZSgxKTtcbiAgfVxufVxuIiwiQGlmICh2bS5pc1Rhc2tTZWxlY3RlZCgpKSB7XG4gIEBsZXQgbm9kZUluZm8gPSB2bS5zZWxlY3RlZFRhc2soKTtcbiAgPGRpdiBjbGFzcz1cIl9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIl9fdGl0bGVcIj5cbiAgICAgIDxzcGFuPnt7IG5vZGVJbmZvPy50aXRsZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8YXgtYnV0dG9uIFtsb29rXT1cIidibGFuaydcIiBjbGFzcz1cImF4LXNtIGF4LXJvdW5kZWQtZnVsbFwiIChvbkNsaWNrKT1cInZtLmNsb3NlRGV0YWlsUGFuZWwoKVwiPlxuICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLXhtYXJrXCI+PC9heC1pY29uPlxuICAgIDwvYXgtYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cIl9fc2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cIl9fdGl0bGVcIj5cbiAgICAgICAgPHNwYW4+e3sgJ0B0YXNrLW1hbmFnZW1lbnQ6dGFzay1ib2FyZC5kZXRhaWwtcGFuZWwudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj5cbiAgICAgICAgQGlmIChub2RlSW5mbz8uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19yb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHt7ICdAdGFzay1tYW5hZ2VtZW50OnRhc2stYm9hcmQuZGV0YWlsLXBhbmVsLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPnt7IG5vZGVJbmZvPy5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3Jvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAge3sgJ0B0YXNrLW1hbmFnZW1lbnQ6dGFzay1ib2FyZC5kZXRhaWwtcGFuZWwuc3RhcnQtZGF0ZScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIG5vZGVJbmZvPy5zdGFydERhdGVcbiAgICAgICAgICAgICAgICB8IGZvcm1hdDogJ2RhdGV0aW1lJyA6IHsgZm9ybWF0OiAnc2hvcnQnLCBjYWxlbmRhcjogbG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtIH1cbiAgICAgICAgICAgICAgICB8IGFzeW5jXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIl9fcm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIl9fdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdAdGFzay1tYW5hZ2VtZW50OnRhc2stYm9hcmQuZGV0YWlsLXBhbmVsLmVuZC1kYXRlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIG5vZGVJbmZvPy5lbmREYXRlXG4gICAgICAgICAgICAgICAgfCBmb3JtYXQ6ICdkYXRldGltZScgOiB7IGZvcm1hdDogJ3Nob3J0JywgY2FsZW5kYXI6IGxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSB9XG4gICAgICAgICAgICAgICAgfCBhc3luY1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3Jvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyAnQHRhc2stbWFuYWdlbWVudDp0YXNrLWJvYXJkLmRldGFpbC1wYW5lbC5yZXBvcnRlcicgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgICAgICAgICB7eyBub2RlSW5mbz8ucmVwb3J0ZXI/LmZ1bGxOYW1lIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKG5vZGVJbmZvPy5hc3NpZ25lZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3Jvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0B0YXNrLW1hbmFnZW1lbnQ6dGFzay1ib2FyZC5kZXRhaWwtcGFuZWwuYXNzaWduZWUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj57eyBub2RlSW5mbz8uYXNzaWduZWU/LmZ1bGxOYW1lIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzdGF0dXNOYW1lKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19yb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdAdGFzay1tYW5hZ2VtZW50OnRhc2stYm9hcmQuZGV0YWlsLXBhbmVsLnN0YXR1cycgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPnt7IHN0YXR1c05hbWUoKSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAobm9kZUluZm8/LnByaW9yaXR5KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIl9fcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7eyAnQHRhc2stbWFuYWdlbWVudDp0YXNrLWJvYXJkLmRldGFpbC1wYW5lbC5wcmlvcml0eScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj57eyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIobm9kZUluZm8/LnByaW9yaXR5ID8/ICcnKSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoZXh0cmFGaWVsZHMoKSAmJiBleHRyYUZpZWxkcygpLmxlbmd0aCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3Jvd1wiPlxuICAgICAgICAgICAgPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbY29udGV4dF09XCJub2RlSW5mb1wiPlxuICAgICAgICAgICAgICBAZm9yIChleHRyYUZpZWxkIG9mIGV4dHJhRmllbGRzKCk7IHRyYWNrIGV4dHJhRmllbGQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dHJhRmllbGQudGl0bGUgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgYXhwLXdpZGdldC1yZW5kZXJlciBbbm9kZV09XCJleHRyYUZpZWxkLndpZGdldFwiIFttb2RlXT1cIid2aWV3J1wiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heHAtd2lkZ2V0cy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn0gQGVsc2Uge1xuICA8ZGl2IGNsYXNzPVwiX19oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgPHNwYW4+XG4gICAgICAgIHt7ICdAdGFzay1tYW5hZ2VtZW50OnRhc2stYm9hcmQuZGV0YWlsLXBhbmVsLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGF4LWJ1dHRvbiBbbG9va109XCInYmxhbmsnXCIgY2xhc3M9XCJheC1zbSBheC1yb3VuZGVkLWZ1bGxcIiAob25DbGljayk9XCJ2bS5jbG9zZURldGFpbFBhbmVsKClcIj5cbiAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS14bWFya1wiPjwvYXgtaWNvbj5cbiAgICA8L2F4LWJ1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIl9fY29udGVudCBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgIDxheHAtc3RhdGUtbWVzc2FnZVxuICAgICAgaWNvbj1cImZhLWxpZ2h0IGZhLWNsaXBib2FyZC1saXN0LWNoZWNrXCJcbiAgICAgIFt0aXRsZV09XCInQHRhc2stbWFuYWdlbWVudDp0YXNrLWJvYXJkLmRldGFpbC1wYW5lbC5uby10YXNrLXNlbGVjdGVkLnRpdGxlJ1wiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ0B0YXNrLW1hbmFnZW1lbnQ6dGFzay1ib2FyZC5kZXRhaWwtcGFuZWwubm8tdGFzay1zZWxlY3RlZC5kZXNjcmlwdGlvbidcIlxuICAgID5cbiAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICA8L2Rpdj5cbn1cbiJdfQ==","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule, AXPWidgetsCatalog, } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, ViewEncapsulation, } from '@angular/core';\nimport { isEqual, sortBy } from 'lodash-es';\nimport { RootConfig } from '../../../const';\nimport { AXMTaskBoardViewModel } from '../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/widget-core\";\nimport * as i2 from \"@angular/common\";\nexport class AXMTaskBoardFiltersComponent {\n constructor() {\n this.rootConfig = RootConfig;\n this.vm = inject(AXMTaskBoardViewModel);\n this.isQueryParam = input(false, ...(ngDevMode ? [{ debugName: \"isQueryParam\" }] : []));\n this.applyClicked = output();\n this.context = signal({}, ...(ngDevMode ? [{ debugName: \"context\" }] : []));\n this.isInitialized = false;\n this.#init = effect(() => {\n const isLoading = this.vm.isLoading();\n if (!isLoading && !this.isInitialized) {\n this.resetContextToViewModel();\n this.isInitialized = true;\n }\n }, ...(ngDevMode ? [{ debugName: \"#init\" }] : []));\n this.VALID_PRIORITIES = [\n { title: 'Highest', name: 'highest' },\n { title: 'High', name: 'high' },\n { title: 'Medium', name: 'medium' },\n { title: 'Low', name: 'low' },\n { title: 'Lowest', name: 'lowest' },\n { title: 'No Priority', name: 'no_priority' },\n ];\n this.isMultiSelectEnabled = computed(() => {\n const viewMode = this.vm.currentViewMode();\n return viewMode !== 'kanban' && viewMode !== 'status-grouped-grid';\n }, ...(ngDevMode ? [{ debugName: \"isMultiSelectEnabled\" }] : []));\n this.nodes = computed(() => [\n {\n name: 'taskType',\n path: 'options.taskType',\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: 'task-types',\n placeholder: 'Select Task Type',\n multiple: this.isMultiSelectEnabled(),\n allowClear: this.isMultiSelectEnabled(),\n },\n meta: {\n title: 'task-board.filter.task-type',\n },\n },\n {\n name: 'assignee',\n path: 'options.assignee',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n valueField: 'id',\n allowSearch: true,\n dataSource: 'users',\n textField: 'displayName',\n placeholder: 'Select Assignee',\n },\n meta: {\n title: 'task-board.filter.assignee',\n },\n },\n {\n name: 'reporter',\n path: 'options.reporter',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n valueField: 'id',\n allowSearch: true,\n dataSource: 'users',\n textField: 'displayName',\n placeholder: 'Select Reporter',\n },\n meta: {\n title: 'task-board.filter.reporter',\n },\n },\n {\n name: 'priority',\n path: 'options.priority',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n valueField: 'name',\n textField: 'title',\n direction: 'horizontal',\n placeholder: 'Select Priority',\n dataSource: this.VALID_PRIORITIES,\n },\n meta: {\n title: 'task-board.filter.priority',\n },\n },\n ], ...(ngDevMode ? [{ debugName: \"nodes\" }] : []));\n }\n #init;\n resetContextToViewModel() {\n const vmTaskTypeNames = this.vm.selectedTaskTypeNames();\n const vmAssigneeIds = this.vm.selectedAssigneeIds();\n const vmReporterIds = this.vm.selectedReporterIds();\n const vmPriorities = this.vm.selectedPriorities();\n const currentViewIsMulti = this.isMultiSelectEnabled();\n const taskTypeContextValue = currentViewIsMulti\n ? vmTaskTypeNames\n : vmTaskTypeNames.length > 0\n ? vmTaskTypeNames[0]\n : null;\n this.context.set({\n options: {\n priority: vmPriorities,\n assignee: vmAssigneeIds,\n reporter: vmReporterIds,\n taskType: taskTypeContextValue,\n },\n });\n }\n handleContextChanged(e) {\n this.context.set(e.data);\n }\n handleApply() {\n this.syncTaskTypesToViewModel(this.context()?.options?.taskType);\n this.syncAssigneesToViewModel(this.context()?.options?.assignee);\n this.syncReportersToViewModel(this.context()?.options?.reporter);\n this.syncPrioritiesToViewModel(this.context()?.options?.priority);\n this.applyClicked.emit();\n }\n syncTaskTypesToViewModel(selectedValue) {\n let newNames = [];\n if (Array.isArray(selectedValue)) {\n newNames = selectedValue.filter((v) => v != null).map((t) => (typeof t === 'string' ? t : t.name));\n }\n else if (selectedValue) {\n newNames = [typeof selectedValue === 'string' ? selectedValue : selectedValue.name];\n }\n const currentNames = this.vm.selectedTaskTypeNames();\n if (!isEqual(sortBy(currentNames), sortBy(newNames))) {\n this.vm.setSelectedTaskTypeNames(newNames, this.isQueryParam());\n }\n }\n syncAssigneesToViewModel(selectedAssignees) {\n let newIds = [];\n if (Array.isArray(selectedAssignees)) {\n newIds = selectedAssignees\n .filter((v) => v != null)\n .map((t) => (typeof t === 'string' || typeof t === 'number' ? t : t.id));\n }\n const currentIds = this.vm.selectedAssigneeIds();\n if (!isEqual(sortBy(currentIds), sortBy(newIds))) {\n this.vm.setSelectedAssigneeIds(newIds, this.isQueryParam());\n }\n }\n syncReportersToViewModel(selectedReporters) {\n let newIds = [];\n if (Array.isArray(selectedReporters)) {\n newIds = selectedReporters\n .filter((v) => v != null)\n .map((t) => (typeof t === 'string' || typeof t === 'number' ? t : t.id));\n }\n const currentIds = this.vm.selectedReporterIds();\n if (!isEqual(sortBy(currentIds), sortBy(newIds))) {\n this.vm.setSelectedReporterIds(newIds, this.isQueryParam());\n }\n }\n syncPrioritiesToViewModel(selectedPriorities) {\n let newNames = [];\n if (Array.isArray(selectedPriorities)) {\n newNames = selectedPriorities\n .filter((v) => v != null)\n .map((t) => (typeof t === 'string' ? t : t.name));\n }\n const currentNames = this.vm.selectedPriorities();\n if (!isEqual(sortBy(currentNames), sortBy(newNames))) {\n this.vm.setSelectedPriorities(newNames, this.isQueryParam());\n }\n }\n handleReset() {\n if (this.vm.currentViewMode() === 'kanban' || this.vm.currentViewMode() === 'status-grouped-grid') {\n const currentOptions = this.context();\n this.context.set({\n options: {\n taskType: currentOptions?.options?.taskType,\n },\n });\n return;\n }\n this.context.set({});\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMTaskBoardFiltersComponent, isStandalone: true, selector: \"axm-task-board-filters\", inputs: { isQueryParam: { classPropertyName: \"isQueryParam\", publicName: \"isQueryParam\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { applyClicked: \"applyClicked\" }, ngImport: i0, template: \"<div class=\\\"ax-px-4 ax-py-3 ax-flex ax-flex-col ax-gap-2 ax-sm ax-w-[20rem]\\\">\\n <axp-widgets-container [context]=\\\"context()\\\" (onContextChanged)=\\\"handleContextChanged($event)\\\">\\n <ax-form>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4\\\">\\n @for (node of nodes(); track $index) {\\n <ax-form-field>\\n @if (node.meta?.['title']) {\\n <ax-label>\\n {{ node.meta?.['title'] | translate: { scope: rootConfig.config.i18n } | async }}\\n </ax-label>\\n }\\n <ng-container axp-widget-renderer [node]=\\\"node\\\" [mode]=\\\"'edit'\\\"></ng-container>\\n </ax-form-field>\\n }\\n </div>\\n <div class=\\\"ax-flex ax-gap-2 ax-mt-6 ax-mb-1\\\">\\n <ax-button\\n (onClick)=\\\"handleReset()\\\"\\n class=\\\"ax-w-full\\\"\\n [text]=\\\"'@general:actions.clear.title' | translate | async\\\"\\n ></ax-button>\\n <ax-button\\n color=\\\"primary\\\"\\n [type]=\\\"'submit'\\\"\\n (onClick)=\\\"handleApply()\\\"\\n class=\\\"ax-w-full\\\"\\n [text]=\\\"'@general:actions.apply.title' | translate | async\\\"\\n ></ax-button>\\n </div>\\n </ax-form>\\n </axp-widgets-container>\\n</div>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i1.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i1.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"component\", type: AXFormComponent, selector: \"ax-form\", inputs: [\"disabled\", \"readonly\", \"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"component\", type: AXLabelComponent, selector: \"ax-label\", inputs: [\"required\", \"for\"], outputs: [\"requiredChange\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardFiltersComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-filters', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [\n CommonModule,\n AXFormFieldComponent,\n AXPWidgetCoreModule,\n AXFormComponent,\n AXLabelComponent,\n AXButtonComponent,\n AXTranslatorPipe,\n AsyncPipe,\n ], template: \"<div class=\\\"ax-px-4 ax-py-3 ax-flex ax-flex-col ax-gap-2 ax-sm ax-w-[20rem]\\\">\\n <axp-widgets-container [context]=\\\"context()\\\" (onContextChanged)=\\\"handleContextChanged($event)\\\">\\n <ax-form>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4\\\">\\n @for (node of nodes(); track $index) {\\n <ax-form-field>\\n @if (node.meta?.['title']) {\\n <ax-label>\\n {{ node.meta?.['title'] | translate: { scope: rootConfig.config.i18n } | async }}\\n </ax-label>\\n }\\n <ng-container axp-widget-renderer [node]=\\\"node\\\" [mode]=\\\"'edit'\\\"></ng-container>\\n </ax-form-field>\\n }\\n </div>\\n <div class=\\\"ax-flex ax-gap-2 ax-mt-6 ax-mb-1\\\">\\n <ax-button\\n (onClick)=\\\"handleReset()\\\"\\n class=\\\"ax-w-full\\\"\\n [text]=\\\"'@general:actions.clear.title' | translate | async\\\"\\n ></ax-button>\\n <ax-button\\n color=\\\"primary\\\"\\n [type]=\\\"'submit'\\\"\\n (onClick)=\\\"handleApply()\\\"\\n class=\\\"ax-w-full\\\"\\n [text]=\\\"'@general:actions.apply.title' | translate | async\\\"\\n ></ax-button>\\n </div>\\n </ax-form>\\n </axp-widgets-container>\\n</div>\\n\" }]\n }], propDecorators: { isQueryParam: [{ type: i0.Input, args: [{ isSignal: true, alias: \"isQueryParam\", required: false }] }], applyClicked: [{ type: i0.Output, args: [\"applyClicked\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy90YXNrLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy90YXNrLWJvYXJkL3Rhc2stYm9hcmQtZmlsdGVycy90YXNrLWJvYXJkLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdGFzay1ib2FyZC1maWx0ZXJzL3Rhc2stYm9hcmQtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUVMLG1CQUFtQixFQUVuQixpQkFBaUIsR0FDbEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENB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QjttR0FBNUIsNEJBQTRCLHNSQy9DekMseXRDQWdDQSwyQ0RLSSxZQUFZLCtCQUNaLG9CQUFvQixnRkFDcEIsbUJBQW1CLCtaQUNuQixlQUFlLGtMQUNmLGdCQUFnQiwrR0FDaEIsaUJBQWlCLDJYQUNqQixnQkFBZ0I7OzRGQUlQLDRCQUE0QjtrQkFoQnhDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUVqQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsU0FBUztxQkFDViIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWEZvcm1Db21wb25lbnQsIEFYRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhMYWJlbENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7XG4gIEFYUFdpZGdldENvcmVDb250ZXh0Q2hhbmdlRXZlbnQsXG4gIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gIEFYUFdpZGdldE5vZGUsXG4gIEFYUFdpZGdldHNDYXRhbG9nLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFcXVhbCwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRWaWV3TW9kZWwsIEFYUFByaW9yaXR5RmlsdGVyS2V5IH0gZnJvbSAnLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG50eXBlIFRhc2tUeXBlID0geyBuYW1lOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfTtcbnR5cGUgQXNzaWduZWUgPSB7IGlkOiBzdHJpbmcgfCBudW1iZXI7IFtrZXk6IHN0cmluZ106IGFueSB9O1xudHlwZSBSZXBvcnRlciA9IHsgaWQ6IHN0cmluZyB8IG51bWJlcjsgW2tleTogc3RyaW5nXTogYW55IH07XG50eXBlIFByaW9yaXR5ID0geyBuYW1lOiBBWFBQcmlvcml0eUZpbHRlcktleTsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS10YXNrLWJvYXJkLWZpbHRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1ib2FyZC1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhGb3JtRmllbGRDb21wb25lbnQsXG4gICAgQVhQV2lkZ2V0Q29yZU1vZHVsZSxcbiAgICBBWEZvcm1Db21wb25lbnQsXG4gICAgQVhMYWJlbENvbXBvbmVudCxcbiAgICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgICBBWFRyYW5zbGF0b3JQaXBlLFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVGFza0JvYXJkRmlsdGVyc0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSByb290Q29uZmlnID0gUm9vdENvbmZpZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYTVRhc2tCb2FyZFZpZXdNb2RlbCk7XG5cbiAgaXNRdWVyeVBhcmFtID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGFwcGx5Q2xpY2tlZCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHByb3RlY3RlZCBjb250ZXh0ID0gc2lnbmFsPHsgb3B0aW9ucz86IGFueSB9Pih7fSk7XG4gIHByaXZhdGUgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICNpbml0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpc0xvYWRpbmcgPSB0aGlzLnZtLmlzTG9hZGluZygpO1xuICAgIGlmICghaXNMb2FkaW5nICYmICF0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMucmVzZXRDb250ZXh0VG9WaWV3TW9kZWwoKTtcbiAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFZBTElEX1BSSU9SSVRJRVM6IHsgdGl0bGU6IHN0cmluZzsgbmFtZTogQVhQUHJpb3JpdHlGaWx0ZXJLZXkgfVtdID0gW1xuICAgIHsgdGl0bGU6ICdIaWdoZXN0JywgbmFtZTogJ2hpZ2hlc3QnIH0sXG4gICAgeyB0aXRsZTogJ0hpZ2gnLCBuYW1lOiAnaGlnaCcgfSxcbiAgICB7IHRpdGxlOiAnTWVkaXVtJywgbmFtZTogJ21lZGl1bScgfSxcbiAgICB7IHRpdGxlOiAnTG93JywgbmFtZTogJ2xvdycgfSxcbiAgICB7IHRpdGxlOiAnTG93ZXN0JywgbmFtZTogJ2xvd2VzdCcgfSxcbiAgICB7IHRpdGxlOiAnTm8gUHJpb3JpdHknLCBuYW1lOiAnbm9fcHJpb3JpdHknIH0sXG4gIF07XG5cbiAgcHVibGljIHJlc2V0Q29udGV4dFRvVmlld01vZGVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHZtVGFza1R5cGVOYW1lcyA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrVHlwZU5hbWVzKCk7XG4gICAgY29uc3Qgdm1Bc3NpZ25lZUlkcyA9IHRoaXMudm0uc2VsZWN0ZWRBc3NpZ25lZUlkcygpO1xuICAgIGNvbnN0IHZtUmVwb3J0ZXJJZHMgPSB0aGlzLnZtLnNlbGVjdGVkUmVwb3J0ZXJJZHMoKTtcbiAgICBjb25zdCB2bVByaW9yaXRpZXMgPSB0aGlzLnZtLnNlbGVjdGVkUHJpb3JpdGllcygpO1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3SXNNdWx0aSA9IHRoaXMuaXNNdWx0aVNlbGVjdEVuYWJsZWQoKTtcblxuICAgIGNvbnN0IHRhc2tUeXBlQ29udGV4dFZhbHVlID0gY3VycmVudFZpZXdJc011bHRpXG4gICAgICA/IHZtVGFza1R5cGVOYW1lc1xuICAgICAgOiB2bVRhc2tUeXBlTmFtZXMubGVuZ3RoID4gMFxuICAgICAgICA/IHZtVGFza1R5cGVOYW1lc1swXVxuICAgICAgICA6IG51bGw7XG5cbiAgICB0aGlzLmNvbnRleHQuc2V0KHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgcHJpb3JpdHk6IHZtUHJpb3JpdGllcyxcbiAgICAgICAgYXNzaWduZWU6IHZtQXNzaWduZWVJZHMsXG4gICAgICAgIHJlcG9ydGVyOiB2bVJlcG9ydGVySWRzLFxuICAgICAgICB0YXNrVHlwZTogdGFza1R5cGVDb250ZXh0VmFsdWUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc011bHRpU2VsZWN0RW5hYmxlZCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICBjb25zdCB2aWV3TW9kZSA9IHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCk7XG4gICAgcmV0dXJuIHZpZXdNb2RlICE9PSAna2FuYmFuJyAmJiB2aWV3TW9kZSAhPT0gJ3N0YXR1cy1ncm91cGVkLWdyaWQnO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgbm9kZXMgPSBjb21wdXRlZDxBWFBXaWRnZXROb2RlW10+KCgpID0+IFtcbiAgICB7XG4gICAgICBuYW1lOiAndGFza1R5cGUnLFxuICAgICAgcGF0aDogJ29wdGlvbnMudGFza1R5cGUnLFxuICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICB2YWx1ZUZpZWxkOiAnbmFtZScsXG4gICAgICAgIHRleHRGaWVsZDogJ3RpdGxlJyxcbiAgICAgICAgZGF0YVNvdXJjZTogJ3Rhc2stdHlwZXMnLFxuICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBUYXNrIFR5cGUnLFxuICAgICAgICBtdWx0aXBsZTogdGhpcy5pc011bHRpU2VsZWN0RW5hYmxlZCgpLFxuICAgICAgICBhbGxvd0NsZWFyOiB0aGlzLmlzTXVsdGlTZWxlY3RFbmFibGVkKCksXG4gICAgICB9LFxuICAgICAgbWV0YToge1xuICAgICAgICB0aXRsZTogJ3Rhc2stYm9hcmQuZmlsdGVyLnRhc2stdHlwZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Fzc2lnbmVlJyxcbiAgICAgIHBhdGg6ICdvcHRpb25zLmFzc2lnbmVlJyxcbiAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgIHZhbHVlRmllbGQ6ICdpZCcsXG4gICAgICAgIGFsbG93U2VhcmNoOiB0cnVlLFxuICAgICAgICBkYXRhU291cmNlOiAndXNlcnMnLFxuICAgICAgICB0ZXh0RmllbGQ6ICdkaXNwbGF5TmFtZScsXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IEFzc2lnbmVlJyxcbiAgICAgIH0sXG4gICAgICBtZXRhOiB7XG4gICAgICAgIHRpdGxlOiAndGFzay1ib2FyZC5maWx0ZXIuYXNzaWduZWUnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdyZXBvcnRlcicsXG4gICAgICBwYXRoOiAnb3B0aW9ucy5yZXBvcnRlcicsXG4gICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5zZWxlY3QsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICB2YWx1ZUZpZWxkOiAnaWQnLFxuICAgICAgICBhbGxvd1NlYXJjaDogdHJ1ZSxcbiAgICAgICAgZGF0YVNvdXJjZTogJ3VzZXJzJyxcbiAgICAgICAgdGV4dEZpZWxkOiAnZGlzcGxheU5hbWUnLFxuICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBSZXBvcnRlcicsXG4gICAgICB9LFxuICAgICAgbWV0YToge1xuICAgICAgICB0aXRsZTogJ3Rhc2stYm9hcmQuZmlsdGVyLnJlcG9ydGVyJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAncHJpb3JpdHknLFxuICAgICAgcGF0aDogJ29wdGlvbnMucHJpb3JpdHknLFxuICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWVGaWVsZDogJ25hbWUnLFxuICAgICAgICB0ZXh0RmllbGQ6ICd0aXRsZScsXG4gICAgICAgIGRpcmVjdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBQcmlvcml0eScsXG4gICAgICAgIGRhdGFTb3VyY2U6IHRoaXMuVkFMSURfUFJJT1JJVElFUyxcbiAgICAgIH0sXG4gICAgICBtZXRhOiB7XG4gICAgICAgIHRpdGxlOiAndGFzay1ib2FyZC5maWx0ZXIucHJpb3JpdHknLFxuICAgICAgfSxcbiAgICB9LFxuICBdKTtcblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29udGV4dENoYW5nZWQoZTogQVhQV2lkZ2V0Q29yZUNvbnRleHRDaGFuZ2VFdmVudCkge1xuICAgIHRoaXMuY29udGV4dC5zZXQoZS5kYXRhKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVBcHBseSgpIHtcbiAgICB0aGlzLnN5bmNUYXNrVHlwZXNUb1ZpZXdNb2RlbCh0aGlzLmNvbnRleHQoKT8ub3B0aW9ucz8udGFza1R5cGUpO1xuICAgIHRoaXMuc3luY0Fzc2lnbmVlc1RvVmlld01vZGVsKHRoaXMuY29udGV4dCgpPy5vcHRpb25zPy5hc3NpZ25lZSk7XG4gICAgdGhpcy5zeW5jUmVwb3J0ZXJzVG9WaWV3TW9kZWwodGhpcy5jb250ZXh0KCk/Lm9wdGlvbnM/LnJlcG9ydGVyKTtcbiAgICB0aGlzLnN5bmNQcmlvcml0aWVzVG9WaWV3TW9kZWwodGhpcy5jb250ZXh0KCk/Lm9wdGlvbnM/LnByaW9yaXR5KTtcbiAgICB0aGlzLmFwcGx5Q2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNUYXNrVHlwZXNUb1ZpZXdNb2RlbChzZWxlY3RlZFZhbHVlOiBUYXNrVHlwZSB8IFRhc2tUeXBlW10gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBsZXQgbmV3TmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRWYWx1ZSkpIHtcbiAgICAgIG5ld05hbWVzID0gc2VsZWN0ZWRWYWx1ZS5maWx0ZXIoKHYpID0+IHYgIT0gbnVsbCkubWFwKCh0KSA9PiAodHlwZW9mIHQgPT09ICdzdHJpbmcnID8gdCA6IHQubmFtZSkpO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgbmV3TmFtZXMgPSBbdHlwZW9mIHNlbGVjdGVkVmFsdWUgPT09ICdzdHJpbmcnID8gc2VsZWN0ZWRWYWx1ZSA6IHNlbGVjdGVkVmFsdWUubmFtZV07XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnROYW1lcyA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrVHlwZU5hbWVzKCk7XG4gICAgaWYgKCFpc0VxdWFsKHNvcnRCeShjdXJyZW50TmFtZXMpLCBzb3J0QnkobmV3TmFtZXMpKSkge1xuICAgICAgdGhpcy52bS5zZXRTZWxlY3RlZFRhc2tUeXBlTmFtZXMobmV3TmFtZXMsIHRoaXMuaXNRdWVyeVBhcmFtKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3luY0Fzc2lnbmVlc1RvVmlld01vZGVsKHNlbGVjdGVkQXNzaWduZWVzOiBBc3NpZ25lZVtdIHwgKHN0cmluZyB8IG51bWJlcilbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBsZXQgbmV3SWRzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRBc3NpZ25lZXMpKSB7XG4gICAgICBuZXdJZHMgPSBzZWxlY3RlZEFzc2lnbmVlc1xuICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ICE9IG51bGwpXG4gICAgICAgIC5tYXAoKHQpID0+ICh0eXBlb2YgdCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHQgPT09ICdudW1iZXInID8gdCA6IHQuaWQpKTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudElkcyA9IHRoaXMudm0uc2VsZWN0ZWRBc3NpZ25lZUlkcygpO1xuICAgIGlmICghaXNFcXVhbChzb3J0QnkoY3VycmVudElkcyksIHNvcnRCeShuZXdJZHMpKSkge1xuICAgICAgdGhpcy52bS5zZXRTZWxlY3RlZEFzc2lnbmVlSWRzKG5ld0lkcywgdGhpcy5pc1F1ZXJ5UGFyYW0oKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzeW5jUmVwb3J0ZXJzVG9WaWV3TW9kZWwoc2VsZWN0ZWRSZXBvcnRlcnM6IFJlcG9ydGVyW10gfCAoc3RyaW5nIHwgbnVtYmVyKVtdIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGxldCBuZXdJZHM6IChzdHJpbmcgfCBudW1iZXIpW10gPSBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZFJlcG9ydGVycykpIHtcbiAgICAgIG5ld0lkcyA9IHNlbGVjdGVkUmVwb3J0ZXJzXG4gICAgICAgIC5maWx0ZXIoKHYpID0+IHYgIT0gbnVsbClcbiAgICAgICAgLm1hcCgodCkgPT4gKHR5cGVvZiB0ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdCA9PT0gJ251bWJlcicgPyB0IDogdC5pZCkpO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SWRzID0gdGhpcy52bS5zZWxlY3RlZFJlcG9ydGVySWRzKCk7XG4gICAgaWYgKCFpc0VxdWFsKHNvcnRCeShjdXJyZW50SWRzKSwgc29ydEJ5KG5ld0lkcykpKSB7XG4gICAgICB0aGlzLnZtLnNldFNlbGVjdGVkUmVwb3J0ZXJJZHMobmV3SWRzLCB0aGlzLmlzUXVlcnlQYXJhbSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN5bmNQcmlvcml0aWVzVG9WaWV3TW9kZWwoc2VsZWN0ZWRQcmlvcml0aWVzOiBQcmlvcml0eVtdIHwgc3RyaW5nW10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgbGV0IG5ld05hbWVzOiBBWFBQcmlvcml0eUZpbHRlcktleVtdID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRQcmlvcml0aWVzKSkge1xuICAgICAgbmV3TmFtZXMgPSBzZWxlY3RlZFByaW9yaXRpZXNcbiAgICAgICAgLmZpbHRlcigodikgPT4gdiAhPSBudWxsKVxuICAgICAgICAubWFwKCh0KSA9PiAodHlwZW9mIHQgPT09ICdzdHJpbmcnID8gKHQgYXMgQVhQUHJpb3JpdHlGaWx0ZXJLZXkpIDogdC5uYW1lKSk7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnROYW1lcyA9IHRoaXMudm0uc2VsZWN0ZWRQcmlvcml0aWVzKCk7XG4gICAgaWYgKCFpc0VxdWFsKHNvcnRCeShjdXJyZW50TmFtZXMpLCBzb3J0QnkobmV3TmFtZXMpKSkge1xuICAgICAgdGhpcy52bS5zZXRTZWxlY3RlZFByaW9yaXRpZXMobmV3TmFtZXMsIHRoaXMuaXNRdWVyeVBhcmFtKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSZXNldCgpIHtcbiAgICBpZiAodGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSA9PT0gJ2thbmJhbicgfHwgdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSA9PT0gJ3N0YXR1cy1ncm91cGVkLWdyaWQnKSB7XG4gICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuY29udGV4dCgpO1xuICAgICAgdGhpcy5jb250ZXh0LnNldCh7XG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0YXNrVHlwZTogY3VycmVudE9wdGlvbnM/Lm9wdGlvbnM/LnRhc2tUeXBlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29udGV4dC5zZXQoe30pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtcHgtNCBheC1weS0zIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtc20gYXgtdy1bMjByZW1dXCI+XG4gIDxheHAtd2lkZ2V0cy1jb250YWluZXIgW2NvbnRleHRdPVwiY29udGV4dCgpXCIgKG9uQ29udGV4dENoYW5nZWQpPVwiaGFuZGxlQ29udGV4dENoYW5nZWQoJGV2ZW50KVwiPlxuICAgIDxheC1mb3JtPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTRcIj5cbiAgICAgICAgQGZvciAobm9kZSBvZiBub2RlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIEBpZiAobm9kZS5tZXRhPy5bJ3RpdGxlJ10pIHtcbiAgICAgICAgICAgICAgPGF4LWxhYmVsPlxuICAgICAgICAgICAgICAgIHt7IG5vZGUubWV0YT8uWyd0aXRsZSddIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L2F4LWxhYmVsPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cIm5vZGVcIiBbbW9kZV09XCInZWRpdCdcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTIgYXgtbXQtNiBheC1tYi0xXCI+XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVSZXNldCgpXCJcbiAgICAgICAgICBjbGFzcz1cImF4LXctZnVsbFwiXG4gICAgICAgICAgW3RleHRdPVwiJ0BnZW5lcmFsOmFjdGlvbnMuY2xlYXIudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIFt0eXBlXT1cIidzdWJtaXQnXCJcbiAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVBcHBseSgpXCJcbiAgICAgICAgICBjbGFzcz1cImF4LXctZnVsbFwiXG4gICAgICAgICAgW3RleHRdPVwiJ0BnZW5lcmFsOmFjdGlvbnMuYXBwbHkudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4LWZvcm0+XG4gIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=","import { AXSchedulerComponent, } from '@acorex/components/scheduler';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nexport class AXMTaskBoardCalendarViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.calendarService = inject(AXCalendarService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.settingService = inject(AXPSettingService);\n this.schedulerComponent = viewChild(AXSchedulerComponent, ...(ngDevMode ? [{ debugName: \"schedulerComponent\" }] : []));\n this.resources = input([], ...(ngDevMode ? [{ debugName: \"resources\" }] : []));\n this.startingDate = input(new Date(), ...(ngDevMode ? [{ debugName: \"startingDate\" }] : []));\n this.selectedView = input('month', ...(ngDevMode ? [{ debugName: \"selectedView\" }] : []));\n this.dataSource = input.required(...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.firstDayOfWeek = signal('monday', ...(ngDevMode ? [{ debugName: \"firstDayOfWeek\" }] : []));\n this.weekendDays = signal([0, 6], ...(ngDevMode ? [{ debugName: \"weekendDays\" }] : []));\n this.holidays = (range) => {\n return this.taskBoardService.getEvents(range);\n };\n this.currentSchedulerView = computed(() => this.selectedView() === 'kanban' || this.selectedView() === 'grid'\n ? 'month'\n : this.selectedView(), ...(ngDevMode ? [{ debugName: \"currentSchedulerView\" }] : []));\n this.onTaskClick = output();\n this.onTaskChanged = output();\n this.onMonthSlotDblClicked = output();\n this.onActionClick = output();\n this.component = output();\n this.onTaskRightClick = output();\n this.onRangeChanged = output();\n }\n // async ngOnInit(): Promise<void> {\n // const firstDayOfWeek = await this.settingService.get(AXPRegionalSetting.FirstDayOfWeek) as unknown as number;\n // const weekDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n // this.firstDayOfWeek.set(weekDays[firstDayOfWeek] as unknown as AXDayOfWeekName);\n // this.weekendDays.set((await this.settingService.get(AXPRegionalSetting.WeekendDays)) as unknown as number[]);\n // }\n async ngAfterViewInit() {\n if (this.schedulerComponent()) {\n this.component.emit(this.schedulerComponent());\n }\n }\n onTaskDrop(event) {\n if (event.isSameSlotDrop)\n return;\n let from;\n let end;\n const apptStartDate = this.calendarService.create(event.appointment.startDate);\n const apptEndDate = event.appointment.endDate;\n const apptDiffTime = Math.abs(apptStartDate.date.getTime() - apptEndDate.getTime());\n switch (event.slot.view) {\n case 'month':\n case 'agenda':\n from = this.calendarService\n .create(event.slot.startDate.date)\n .set('hour', apptStartDate.hour)\n .set('minute', apptStartDate.minute)\n .set('second', apptStartDate.second).date;\n end = new Date(from.getTime() + apptDiffTime);\n break;\n default:\n from = event.slot.startDate.date;\n end = event.slot.endDate.date;\n const isAllDay = Math.abs(from.getTime() - end.getTime()) >= 24 * 60 * 60 * 1000 - 1;\n const wasAllDay = apptDiffTime >= 24 * 60 * 60 * 1000 - 1;\n if ((wasAllDay && isAllDay) || (!wasAllDay && !isAllDay)) {\n end = new Date(from.getTime() + apptDiffTime);\n }\n break;\n }\n this.taskBoardService.updateTaskDateRange(event.appointment, { from, end }).then((task) => {\n this.onTaskChanged.emit(task);\n this.schedulerComponent()?.refresh([task]);\n });\n }\n onTaskRightClickHandler(event) {\n this.onTaskRightClick.emit({ nativeEvent: event.nativeEvent, task: event.appointment });\n }\n onSlotDblClicked(event) {\n if (event.sender.selectedView() === 'month') {\n this.onMonthSlotDblClicked.emit(event.slot.startDate.date);\n }\n }\n async handleRangeChanged(event) {\n this.onRangeChanged.emit(event);\n }\n handleActionClick(event) {\n this.onActionClick.emit({ nativeEvent: event.nativeEvent, task: event.appointment });\n }\n onTaskClickHandler(event) {\n this.onTaskClick.emit(event.appointment);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardCalendarViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.3.12\", type: AXMTaskBoardCalendarViewComponent, isStandalone: true, selector: \"axm-task-board-calendar-view\", inputs: { resources: { classPropertyName: \"resources\", publicName: \"resources\", isSignal: true, isRequired: false, transformFunction: null }, startingDate: { classPropertyName: \"startingDate\", publicName: \"startingDate\", isSignal: true, isRequired: false, transformFunction: null }, selectedView: { classPropertyName: \"selectedView\", publicName: \"selectedView\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onTaskClick: \"onTaskClick\", onTaskChanged: \"onTaskChanged\", onMonthSlotDblClicked: \"onMonthSlotDblClicked\", onActionClick: \"onActionClick\", component: \"component\", onTaskRightClick: \"onTaskRightClick\", onRangeChanged: \"onRangeChanged\" }, viewQueries: [{ propertyName: \"schedulerComponent\", first: true, predicate: AXSchedulerComponent, descendants: true, isSignal: true }], ngImport: i0, template: \"<ax-scheduler\\n [hasHeader]=\\\"false\\\"\\n [hasActions]=\\\"true\\\"\\n [holidays]=\\\"holidays\\\"\\n [resources]=\\\"resources()\\\"\\n [dataSource]=\\\"dataSource()\\\"\\n [startingDate]=\\\"startingDate()\\\"\\n [selectedView]=\\\"currentSchedulerView()\\\"\\n [multiDayViewDaysCount]=\\\"vm.daysCount()\\\"\\n (onAppointmentDrop)=\\\"onTaskDrop($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n (onRangeChanged)=\\\"handleRangeChanged($event)\\\"\\n (onSlotDblClicked)=\\\"onSlotDblClicked($event)\\\"\\n (onAppointmentClicked)=\\\"onTaskClickHandler($event)\\\"\\n (onAppointmentRightClick)=\\\"onTaskRightClickHandler($event)\\\"\\n [weekend]=\\\"weekendDays()\\\"\\n [firstDayOfWeek]=\\\"firstDayOfWeek()\\\"\\n></ax-scheduler>\\n\", styles: [\"ax-scheduler{line-height:1.5;background-color:rgba(var(--ax-sys-color-lightest-surface))!important}\\n\"], dependencies: [{ kind: \"component\", type: AXSchedulerComponent, selector: \"ax-scheduler\", inputs: [\"calendar\", \"startingDate\", \"endDayHour\", \"startDayHour\", \"hasHeader\", \"readonly\", \"draggable\", \"hasActions\", \"dragStartDelay\", \"weekend\", \"allowFullScreen\", \"multiDayViewDaysCount\", \"showResourceHeaders\", \"showCurrentTimeIndicator\", \"showUnassignedAppointments\", \"resources\", \"resourceTemplate\", \"firstDayOfWeek\", \"tooltipTemplate\", \"dataSource\", \"holidays\", \"views\", \"selectedView\"], outputs: [\"selectedViewChange\", \"onDataLoaded\", \"onRangeChanged\", \"onSlotClicked\", \"onSlotDblClicked\", \"onSlotRightClick\", \"onAppointmentDrop\", \"onActionClick\", \"onAppointmentClicked\", \"onAppointmentDblClicked\", \"onAppointmentRightClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardCalendarViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-calendar-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXSchedulerComponent], template: \"<ax-scheduler\\n [hasHeader]=\\\"false\\\"\\n [hasActions]=\\\"true\\\"\\n [holidays]=\\\"holidays\\\"\\n [resources]=\\\"resources()\\\"\\n [dataSource]=\\\"dataSource()\\\"\\n [startingDate]=\\\"startingDate()\\\"\\n [selectedView]=\\\"currentSchedulerView()\\\"\\n [multiDayViewDaysCount]=\\\"vm.daysCount()\\\"\\n (onAppointmentDrop)=\\\"onTaskDrop($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n (onRangeChanged)=\\\"handleRangeChanged($event)\\\"\\n (onSlotDblClicked)=\\\"onSlotDblClicked($event)\\\"\\n (onAppointmentClicked)=\\\"onTaskClickHandler($event)\\\"\\n (onAppointmentRightClick)=\\\"onTaskRightClickHandler($event)\\\"\\n [weekend]=\\\"weekendDays()\\\"\\n [firstDayOfWeek]=\\\"firstDayOfWeek()\\\"\\n></ax-scheduler>\\n\", styles: [\"ax-scheduler{line-height:1.5;background-color:rgba(var(--ax-sys-color-lightest-surface))!important}\\n\"] }]\n }], propDecorators: { schedulerComponent: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXSchedulerComponent), { isSignal: true }] }], resources: [{ type: i0.Input, args: [{ isSignal: true, alias: \"resources\", required: false }] }], startingDate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"startingDate\", required: false }] }], selectedView: [{ type: i0.Input, args: [{ isSignal: true, alias: \"selectedView\", required: false }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dataSource\", required: true }] }], onTaskClick: [{ type: i0.Output, args: [\"onTaskClick\"] }], onTaskChanged: [{ type: i0.Output, args: [\"onTaskChanged\"] }], onMonthSlotDblClicked: [{ type: i0.Output, args: [\"onMonthSlotDblClicked\"] }], onActionClick: [{ type: i0.Output, args: [\"onActionClick\"] }], component: [{ type: i0.Output, args: [\"component\"] }], onTaskRightClick: [{ type: i0.Output, args: [\"onTaskRightClick\"] }], onRangeChanged: [{ type: i0.Output, args: [\"onRangeChanged\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1jYWxlbmRhci12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy90YXNrLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy90YXNrLWJvYXJkL3ZpZXdzL3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy90YXNrLWJvYXJkLWNhbGVuZGFyLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1jYWxlbmRhci12aWV3L3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsb0JBQW9CLEdBS3JCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLHdCQUF3QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUscUJBQXFCLEVBQXdCLE1BQU0sNEJBQTRCLENBQUM7O0FBVXpGLE1BQU0sT0FBTyxpQ0FBaUM7SUFSOUM7UUFTcUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25DLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7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QVFBLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYRGF5T2ZXZWVrTmFtZSxcbiAgQVhTY2hlZHVsZXJBcHBvaW50bWVudERhdGFTb3VyY2UsXG4gIEFYU2NoZWR1bGVyQXBwb2ludG1lbnRNb3VzZUV2ZW50LFxuICBBWFNjaGVkdWxlckNvbXBvbmVudCxcbiAgQVhTY2hlZHVsZXJEYXRlUmFuZ2UsXG4gIEFYU2NoZWR1bGVyU2xvdERyb3BFdmVudCxcbiAgQVhTY2hlZHVsZXJTbG90TW91c2VFdmVudCxcbiAgQVhTY2hlZHVsZXJWaWV3LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2NoZWR1bGVyJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJTZXJ2aWNlLCBBWEhvbGlkYXlEYXRlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBBWFBTZXR0aW5nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBUYXNrQm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFJlc291cmNlLCBBWFBUYXNrLCBBWFBUYXNrQWN0aW9uIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC50eXBlcyc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRWaWV3TW9kZWwsIEFYUFRhc2tCb2FyZFZpZXdNb2RlIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tdGFzay1ib2FyZC1jYWxlbmRhci12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW0FYU2NoZWR1bGVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVGFza0JvYXJkQ2FsZW5kYXJWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IGluamVjdChBWE1UYXNrQm9hcmRWaWV3TW9kZWwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRhc2tCb2FyZFNlcnZpY2UgPSBpbmplY3QoQVhQVGFza0JvYXJkU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZXR0aW5nU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSk7XG5cbiAgc2NoZWR1bGVyQ29tcG9uZW50ID0gdmlld0NoaWxkKEFYU2NoZWR1bGVyQ29tcG9uZW50KTtcblxuICByZXNvdXJjZXMgPSBpbnB1dDxBWFBSZXNvdXJjZVtdPihbXSk7XG4gIHN0YXJ0aW5nRGF0ZSA9IGlucHV0PERhdGU+KG5ldyBEYXRlKCkpO1xuICBzZWxlY3RlZFZpZXcgPSBpbnB1dDxBWFBUYXNrQm9hcmRWaWV3TW9kZT4oJ21vbnRoJyk7XG4gIGRhdGFTb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDxBWFNjaGVkdWxlckFwcG9pbnRtZW50RGF0YVNvdXJjZT4oKTtcbiAgcHJvdGVjdGVkIGZpcnN0RGF5T2ZXZWVrID0gc2lnbmFsPEFYRGF5T2ZXZWVrTmFtZT4oJ21vbmRheScpO1xuICBwcm90ZWN0ZWQgd2Vla2VuZERheXMgPSBzaWduYWw8bnVtYmVyW10+KFswLCA2XSk7XG5cbiAgcHJvdGVjdGVkIGhvbGlkYXlzID0gKHJhbmdlOiBBWFNjaGVkdWxlckRhdGVSYW5nZSk6IFByb21pc2U8QVhIb2xpZGF5RGF0ZVtdPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMudGFza0JvYXJkU2VydmljZS5nZXRFdmVudHMocmFuZ2UpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBjdXJyZW50U2NoZWR1bGVyVmlldyA9IGNvbXB1dGVkPEFYU2NoZWR1bGVyVmlldz4oKCkgPT5cbiAgICB0aGlzLnNlbGVjdGVkVmlldygpID09PSAna2FuYmFuJyB8fCB0aGlzLnNlbGVjdGVkVmlldygpID09PSAnZ3JpZCdcbiAgICAgID8gJ21vbnRoJ1xuICAgICAgOiAodGhpcy5zZWxlY3RlZFZpZXcoKSBhcyBBWFNjaGVkdWxlclZpZXcpLFxuICApO1xuXG4gIG9uVGFza0NsaWNrID0gb3V0cHV0PEFYUFRhc2s+KCk7XG4gIG9uVGFza0NoYW5nZWQgPSBvdXRwdXQ8QVhQVGFzaz4oKTtcbiAgb25Nb250aFNsb3REYmxDbGlja2VkID0gb3V0cHV0PERhdGU+KCk7XG4gIG9uQWN0aW9uQ2xpY2sgPSBvdXRwdXQ8QVhQVGFza0FjdGlvbj4oKTtcbiAgY29tcG9uZW50ID0gb3V0cHV0PEFYU2NoZWR1bGVyQ29tcG9uZW50PigpO1xuICBvblRhc2tSaWdodENsaWNrID0gb3V0cHV0PEFYUFRhc2tBY3Rpb24+KCk7XG4gIG9uUmFuZ2VDaGFuZ2VkID0gb3V0cHV0PEFYU2NoZWR1bGVyRGF0ZVJhbmdlPigpO1xuXG4gIC8vIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAvLyAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gYXdhaXQgdGhpcy5zZXR0aW5nU2VydmljZS5nZXQoQVhQUmVnaW9uYWxTZXR0aW5nLkZpcnN0RGF5T2ZXZWVrKSBhcyB1bmtub3duIGFzIG51bWJlcjtcbiAgLy8gICBjb25zdCB3ZWVrRGF5cyA9IFsnc3VuZGF5JywgJ21vbmRheScsICd0dWVzZGF5JywgJ3dlZG5lc2RheScsICd0aHVyc2RheScsICdmcmlkYXknLCAnc2F0dXJkYXknXTtcbiAgLy8gICB0aGlzLmZpcnN0RGF5T2ZXZWVrLnNldCh3ZWVrRGF5c1tmaXJzdERheU9mV2Vla10gYXMgdW5rbm93biBhcyBBWERheU9mV2Vla05hbWUpO1xuICAvLyAgIHRoaXMud2Vla2VuZERheXMuc2V0KChhd2FpdCB0aGlzLnNldHRpbmdTZXJ2aWNlLmdldChBWFBSZWdpb25hbFNldHRpbmcuV2Vla2VuZERheXMpKSBhcyB1bmtub3duIGFzIG51bWJlcltdKTtcbiAgLy8gfVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5zY2hlZHVsZXJDb21wb25lbnQoKSkge1xuICAgICAgdGhpcy5jb21wb25lbnQuZW1pdCh0aGlzLnNjaGVkdWxlckNvbXBvbmVudCgpISk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uVGFza0Ryb3AoZXZlbnQ6IEFYU2NoZWR1bGVyU2xvdERyb3BFdmVudCkge1xuICAgIGlmIChldmVudC5pc1NhbWVTbG90RHJvcCkgcmV0dXJuO1xuICAgIGxldCBmcm9tOiBEYXRlO1xuICAgIGxldCBlbmQ6IERhdGU7XG4gICAgY29uc3QgYXBwdFN0YXJ0RGF0ZSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShldmVudC5hcHBvaW50bWVudC5zdGFydERhdGUpO1xuICAgIGNvbnN0IGFwcHRFbmREYXRlID0gZXZlbnQuYXBwb2ludG1lbnQuZW5kRGF0ZTtcblxuICAgIGNvbnN0IGFwcHREaWZmVGltZSA9IE1hdGguYWJzKGFwcHRTdGFydERhdGUuZGF0ZS5nZXRUaW1lKCkgLSBhcHB0RW5kRGF0ZS5nZXRUaW1lKCkpO1xuICAgIHN3aXRjaCAoZXZlbnQuc2xvdC52aWV3KSB7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICBjYXNlICdhZ2VuZGEnOlxuICAgICAgICBmcm9tID0gdGhpcy5jYWxlbmRhclNlcnZpY2VcbiAgICAgICAgICAuY3JlYXRlKGV2ZW50LnNsb3Quc3RhcnREYXRlLmRhdGUpXG4gICAgICAgICAgLnNldCgnaG91cicsIGFwcHRTdGFydERhdGUuaG91cilcbiAgICAgICAgICAuc2V0KCdtaW51dGUnLCBhcHB0U3RhcnREYXRlLm1pbnV0ZSlcbiAgICAgICAgICAuc2V0KCdzZWNvbmQnLCBhcHB0U3RhcnREYXRlLnNlY29uZCkuZGF0ZTtcbiAgICAgICAgZW5kID0gbmV3IERhdGUoZnJvbS5nZXRUaW1lKCkgKyBhcHB0RGlmZlRpbWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZnJvbSA9IGV2ZW50LnNsb3Quc3RhcnREYXRlLmRhdGU7XG4gICAgICAgIGVuZCA9IGV2ZW50LnNsb3QuZW5kRGF0ZS5kYXRlO1xuXG4gICAgICAgIGNvbnN0IGlzQWxsRGF5ID0gTWF0aC5hYnMoZnJvbS5nZXRUaW1lKCkgLSBlbmQuZ2V0VGltZSgpKSA+PSAyNCAqIDYwICogNjAgKiAxMDAwIC0gMTtcbiAgICAgICAgY29uc3Qgd2FzQWxsRGF5ID0gYXBwdERpZmZUaW1lID49IDI0ICogNjAgKiA2MCAqIDEwMDAgLSAxO1xuXG4gICAgICAgIGlmICgod2FzQWxsRGF5ICYmIGlzQWxsRGF5KSB8fCAoIXdhc0FsbERheSAmJiAhaXNBbGxEYXkpKSB7XG4gICAgICAgICAgZW5kID0gbmV3IERhdGUoZnJvbS5nZXRUaW1lKCkgKyBhcHB0RGlmZlRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMudGFza0JvYXJkU2VydmljZS51cGRhdGVUYXNrRGF0ZVJhbmdlKGV2ZW50LmFwcG9pbnRtZW50IGFzIEFYUFRhc2ssIHsgZnJvbSwgZW5kIH0pLnRoZW4oKHRhc2spID0+IHtcbiAgICAgIHRoaXMub25UYXNrQ2hhbmdlZC5lbWl0KHRhc2spO1xuICAgICAgdGhpcy5zY2hlZHVsZXJDb21wb25lbnQoKT8ucmVmcmVzaChbdGFza10pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uVGFza1JpZ2h0Q2xpY2tIYW5kbGVyKGV2ZW50OiBBWFNjaGVkdWxlckFwcG9pbnRtZW50TW91c2VFdmVudCkge1xuICAgIHRoaXMub25UYXNrUmlnaHRDbGljay5lbWl0KHsgbmF0aXZlRXZlbnQ6IGV2ZW50Lm5hdGl2ZUV2ZW50LCB0YXNrOiBldmVudC5hcHBvaW50bWVudCBhcyBBWFBUYXNrIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU2xvdERibENsaWNrZWQoZXZlbnQ6IEFYU2NoZWR1bGVyU2xvdE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuc2VuZGVyLnNlbGVjdGVkVmlldygpID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLm9uTW9udGhTbG90RGJsQ2xpY2tlZC5lbWl0KGV2ZW50LnNsb3Quc3RhcnREYXRlLmRhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVSYW5nZUNoYW5nZWQoZXZlbnQ6IEFYU2NoZWR1bGVyRGF0ZVJhbmdlKSB7XG4gICAgdGhpcy5vblJhbmdlQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVBY3Rpb25DbGljayhldmVudDogQVhTY2hlZHVsZXJBcHBvaW50bWVudE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2suZW1pdCh7IG5hdGl2ZUV2ZW50OiBldmVudC5uYXRpdmVFdmVudCwgdGFzazogZXZlbnQuYXBwb2ludG1lbnQgYXMgQVhQVGFzayB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblRhc2tDbGlja0hhbmRsZXIoZXZlbnQ6IEFYU2NoZWR1bGVyQXBwb2ludG1lbnRNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5vblRhc2tDbGljay5lbWl0KGV2ZW50LmFwcG9pbnRtZW50IGFzIEFYUFRhc2spO1xuICB9XG59XG4iLCI8YXgtc2NoZWR1bGVyXG4gIFtoYXNIZWFkZXJdPVwiZmFsc2VcIlxuICBbaGFzQWN0aW9uc109XCJ0cnVlXCJcbiAgW2hvbGlkYXlzXT1cImhvbGlkYXlzXCJcbiAgW3Jlc291cmNlc109XCJyZXNvdXJjZXMoKVwiXG4gIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2UoKVwiXG4gIFtzdGFydGluZ0RhdGVdPVwic3RhcnRpbmdEYXRlKClcIlxuICBbc2VsZWN0ZWRWaWV3XT1cImN1cnJlbnRTY2hlZHVsZXJWaWV3KClcIlxuICBbbXVsdGlEYXlWaWV3RGF5c0NvdW50XT1cInZtLmRheXNDb3VudCgpXCJcbiAgKG9uQXBwb2ludG1lbnREcm9wKT1cIm9uVGFza0Ryb3AoJGV2ZW50KVwiXG4gIChvbkFjdGlvbkNsaWNrKT1cImhhbmRsZUFjdGlvbkNsaWNrKCRldmVudClcIlxuICAob25SYW5nZUNoYW5nZWQpPVwiaGFuZGxlUmFuZ2VDaGFuZ2VkKCRldmVudClcIlxuICAob25TbG90RGJsQ2xpY2tlZCk9XCJvblNsb3REYmxDbGlja2VkKCRldmVudClcIlxuICAob25BcHBvaW50bWVudENsaWNrZWQpPVwib25UYXNrQ2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAob25BcHBvaW50bWVudFJpZ2h0Q2xpY2spPVwib25UYXNrUmlnaHRDbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gIFt3ZWVrZW5kXT1cIndlZWtlbmREYXlzKClcIlxuICBbZmlyc3REYXlPZldlZWtdPVwiZmlyc3REYXlPZldlZWsoKVwiXG4+PC9heC1zY2hlZHVsZXI+XG4iXX0=","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, ViewEncapsulation, } from '@angular/core';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/data-table\";\nimport * as i2 from \"@acorex/platform/layout/widget-core\";\nexport class AXMTaskBoardGridViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.dataSource = input.required(...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.onTaskClick = output();\n this.onActionClick = output();\n this.fetchedTasks = signal([], ...(ngDevMode ? [{ debugName: \"fetchedTasks\" }] : []));\n this.columns = signal([], ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n this.tasksDataSource = computed(() => {\n const parentDataSource = this.dataSource();\n return new AXDataSource({\n load: async (e) => {\n const result = await parentDataSource({ skip: e.skip, take: e.take });\n this.fetchedTasks.set(result.items);\n const mappedItems = result.items.map((task) => ({\n id: task.id,\n data: task.data,\n title: task.title,\n priority: task.priority,\n description: task.description,\n statusTitle: task.status.title,\n reporter: task.reporter.fullName ?? '-',\n assignee: task.assignee?.fullName ?? 'unassigned',\n type: this.taskBoardService.getProvider(task.provider)?.title,\n endDate: this.calendarService.format(task.endDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n startDate: this.calendarService.format(task.startDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n }));\n return { items: mappedItems, total: result.total };\n },\n pageSize: 10,\n key: 'id',\n byKey: async (key) => {\n return this.fetchedTasks().find((task) => task.id === key);\n },\n });\n }, ...(ngDevMode ? [{ debugName: \"tasksDataSource\" }] : []));\n this.#dataSourceChanged = effect(() => {\n this.tasksDataSource().refresh();\n }, ...(ngDevMode ? [{ debugName: \"#dataSourceChanged\" }] : []));\n this.#providerChanged = effect(async () => {\n const taskType = this.vm.selectedTaskTypes()[0];\n if (!taskType) {\n this.columns.set([]);\n return;\n }\n taskType.getExtraFields().then((extraFields) => {\n if (extraFields) {\n this.columns.set(extraFields);\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"#providerChanged\" }] : []));\n }\n #dataSourceChanged;\n #providerChanged;\n handleRowClick(event) {\n if (event.data) {\n this.onTaskClick.emit(event.data);\n }\n }\n onActionClickHandler(e) {\n const task = this.fetchedTasks().find((task) => task.id === e.data.id);\n if (!task)\n return;\n this.onActionClick.emit({ nativeEvent: e.nativeEvent, task });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardGridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMTaskBoardGridViewComponent, isStandalone: true, selector: \"axm-task-board-grid-view\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onTaskClick: \"onTaskClick\", onActionClick: \"onActionClick\" }, ngImport: i0, template: \"<ax-data-table\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"tasksDataSource()\\\"\\n (onRowClick)=\\\"handleRowClick($event)\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n>\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"statusTitle\\\" caption=\\\"status\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"type\\\" caption=\\\"type\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n\\n @if (columns().length) {\\n <ng-container>\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n </ng-container>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n</ax-data-table>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXDataTableModule }, { kind: \"component\", type: i1.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"rowTemplate\", \"emptyTemplate\", \"noDataTemplate\", \"alternative\", \"showHeader\", \"fixedHeader\", \"showFooter\", \"fixedFooter\", \"itemHeight\", \"allowReordering\", \"paging\", \"fetchDataMode\", \"loading\", \"focusedRow\"], outputs: [\"selectedRowsChange\", \"focusedRowChange\", \"onRowClick\", \"onRowDbClick\", \"onColumnsOrderChanged\", \"onColumnSizeChanged\", \"onPageChanged\"] }, { kind: \"component\", type: i1.AXDataTableTextColumnComponent, selector: \"ax-text-column\", inputs: [\"width\", \"caption\", \"allowSorting\", \"allowResizing\", \"fixed\", \"customExpandIcon\", \"customCollapseIcon\", \"dataField\", \"expandHandler\", \"wrapText\", \"cellTemplate\", \"footerTemplate\", \"headerTemplate\", \"format\", \"formatOptions\"] }, { kind: \"component\", type: i1.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i2.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardGridViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-grid-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXDataTableModule, AXTranslatorPipe, AsyncPipe, AXPWidgetCoreModule], template: \"<ax-data-table\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"tasksDataSource()\\\"\\n (onRowClick)=\\\"handleRowClick($event)\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n>\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"statusTitle\\\" caption=\\\"status\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"type\\\" caption=\\\"type\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n\\n @if (columns().length) {\\n <ng-container>\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n </ng-container>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n</ax-data-table>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"] }]\n }], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dataSource\", required: true }] }], onTaskClick: [{ type: i0.Output, args: [\"onTaskClick\"] }], onActionClick: [{ type: i0.Output, args: [\"onActionClick\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1ncmlkLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1ncmlkLXZpZXcvdGFzay1ib2FyZC1ncmlkLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1ncmlkLXZpZXcvdGFzay1ib2FyZC1ncmlkLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXVCLE1BQU0sK0JBQStCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FB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S0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQzsrR0EzRVUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsK1NDOUIxQyxvbkRBa0NBLDBJRE5ZLGlCQUFpQix5Z0NBQStCLG1CQUFtQiwrUkFBaEQsZ0JBQWdCLDZDQUFFLFNBQVM7OzRGQUU3Qyw2QkFBNkI7a0JBUnpDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25DbGlja0V2ZW50LCBBWERhdGFTb3VyY2UgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVNb2R1bGUsIEFYRGF0YVRhYmxlUm93Q2xpY2sgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFRhc2tCb2FyZFNlcnZpY2UgfSBmcm9tICcuLi8uLi90YXNrLWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQRXh0cmFGaWVsZCwgQVhQVGFzaywgQVhQVGFza0FjdGlvbiwgQVhQVGFza0ZpbHRlciB9IGZyb20gJy4uLy4uL3Rhc2stYm9hcmQudHlwZXMnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkVmlld01vZGVsIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tdGFzay1ib2FyZC1ncmlkLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1ib2FyZC1ncmlkLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YXNrLWJvYXJkLWdyaWQtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW0FYRGF0YVRhYmxlTW9kdWxlLCBBWFRyYW5zbGF0b3JQaXBlLCBBc3luY1BpcGUsIEFYUFdpZGdldENvcmVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1UYXNrQm9hcmRHcmlkVmlld0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IGluamVjdChBWE1UYXNrQm9hcmRWaWV3TW9kZWwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9jYWxlU2VydmljZSA9IGluamVjdChBWExvY2FsZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRhc2tCb2FyZFNlcnZpY2UgPSBpbmplY3QoQVhQVGFza0JvYXJkU2VydmljZSk7XG5cbiAgZGF0YVNvdXJjZSA9IGlucHV0LnJlcXVpcmVkPChmaWx0ZXI/OiBBWFBUYXNrRmlsdGVyKSA9PiBQcm9taXNlPHsgaXRlbXM6IEFYUFRhc2tbXTsgdG90YWw6IG51bWJlciB9Pj4oKTtcblxuICBvblRhc2tDbGljayA9IG91dHB1dDxBWFBUYXNrPigpO1xuICBvbkFjdGlvbkNsaWNrID0gb3V0cHV0PEFYUFRhc2tBY3Rpb24+KCk7XG5cbiAgcHJpdmF0ZSBmZXRjaGVkVGFza3MgPSBzaWduYWw8QVhQVGFza1tdPihbXSk7XG4gIHByb3RlY3RlZCBjb2x1bW5zID0gc2lnbmFsPEFYUEV4dHJhRmllbGRbXT4oW10pO1xuXG4gIHByb3RlY3RlZCB0YXNrc0RhdGFTb3VyY2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGFyZW50RGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZSgpO1xuICAgIHJldHVybiBuZXcgQVhEYXRhU291cmNlPGFueT4oe1xuICAgICAgbG9hZDogYXN5bmMgKGUpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGFyZW50RGF0YVNvdXJjZSh7IHNraXA6IGUuc2tpcCwgdGFrZTogZS50YWtlIH0pO1xuICAgICAgICB0aGlzLmZldGNoZWRUYXNrcy5zZXQocmVzdWx0Lml0ZW1zKTtcbiAgICAgICAgY29uc3QgbWFwcGVkSXRlbXMgPSByZXN1bHQuaXRlbXMubWFwKCh0YXNrKSA9PiAoe1xuICAgICAgICAgIGlkOiB0YXNrLmlkLFxuICAgICAgICAgIGRhdGE6IHRhc2suZGF0YSxcbiAgICAgICAgICB0aXRsZTogdGFzay50aXRsZSxcbiAgICAgICAgICBwcmlvcml0eTogdGFzay5wcmlvcml0eSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgICBzdGF0dXNUaXRsZTogdGFzay5zdGF0dXMudGl0bGUsXG4gICAgICAgICAgcmVwb3J0ZXI6IHRhc2sucmVwb3J0ZXIuZnVsbE5hbWUgPz8gJy0nLFxuICAgICAgICAgIGFzc2lnbmVlOiB0YXNrLmFzc2lnbmVlPy5mdWxsTmFtZSA/PyAndW5hc3NpZ25lZCcsXG4gICAgICAgICAgdHlwZTogdGhpcy50YXNrQm9hcmRTZXJ2aWNlLmdldFByb3ZpZGVyKHRhc2sucHJvdmlkZXIpPy50aXRsZSxcbiAgICAgICAgICBlbmREYXRlOiB0aGlzLmNhbGVuZGFyU2VydmljZS5mb3JtYXQodGFzay5lbmREYXRlLCAnREQvTU0vWVlZWSBISDptbScsIHtcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3RhcnREYXRlOiB0aGlzLmNhbGVuZGFyU2VydmljZS5mb3JtYXQodGFzay5zdGFydERhdGUsICdERC9NTS9ZWVlZIEhIOm1tJywge1xuICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4geyBpdGVtczogbWFwcGVkSXRlbXMsIHRvdGFsOiByZXN1bHQudG90YWwgfTtcbiAgICAgIH0sXG4gICAgICBwYWdlU2l6ZTogMTAsXG4gICAgICBrZXk6ICdpZCcsXG4gICAgICBieUtleTogYXN5bmMgKGtleTogdW5rbm93bikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaGVkVGFza3MoKS5maW5kKCh0YXNrKSA9PiB0YXNrLmlkID09PSBrZXkpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgI2RhdGFTb3VyY2VDaGFuZ2VkID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLnRhc2tzRGF0YVNvdXJjZSgpLnJlZnJlc2goKTtcbiAgfSk7XG5cbiAgI3Byb3ZpZGVyQ2hhbmdlZCA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGFza1R5cGUgPSB0aGlzLnZtLnNlbGVjdGVkVGFza1R5cGVzKClbMF07XG4gICAgaWYgKCF0YXNrVHlwZSkge1xuICAgICAgdGhpcy5jb2x1bW5zLnNldChbXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGFza1R5cGUuZ2V0RXh0cmFGaWVsZHMoKS50aGVuKChleHRyYUZpZWxkcykgPT4ge1xuICAgICAgaWYgKGV4dHJhRmllbGRzKSB7XG4gICAgICAgIHRoaXMuY29sdW1ucy5zZXQoZXh0cmFGaWVsZHMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgaGFuZGxlUm93Q2xpY2soZXZlbnQ6IEFYRGF0YVRhYmxlUm93Q2xpY2spIHtcbiAgICBpZiAoZXZlbnQuZGF0YSkge1xuICAgICAgdGhpcy5vblRhc2tDbGljay5lbWl0KGV2ZW50LmRhdGEgYXMgQVhQVGFzayk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQWN0aW9uQ2xpY2tIYW5kbGVyKGU6IEFYQnV0dG9uQ2xpY2tFdmVudCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLmZldGNoZWRUYXNrcygpLmZpbmQoKHRhc2spID0+IHRhc2suaWQgPT09IGUuZGF0YS5pZCk7XG4gICAgaWYgKCF0YXNrKSByZXR1cm47XG4gICAgdGhpcy5vbkFjdGlvbkNsaWNrLmVtaXQoeyBuYXRpdmVFdmVudDogZS5uYXRpdmVFdmVudCwgdGFzayB9KTtcbiAgfVxufVxuIiwiPGF4LWRhdGEtdGFibGVcbiAgW2ZldGNoRGF0YU1vZGVdPVwiJ21hbnVhbCdcIlxuICBbZGF0YVNvdXJjZV09XCJ0YXNrc0RhdGFTb3VyY2UoKVwiXG4gIChvblJvd0NsaWNrKT1cImhhbmRsZVJvd0NsaWNrKCRldmVudClcIlxuICBbbG9hZGluZ109XCJ7IGVuYWJsZWQ6IHRydWUsIGFuaW1hdGlvbjogdHJ1ZSB9XCJcbj5cbiAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cInRpdGxlXCIgY2FwdGlvbj1cInRpdGxlXCIgW3dpZHRoXT1cIiczNTBweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwiZGVzY3JpcHRpb25cIiBjYXB0aW9uPVwiZGVzY3JpcHRpb25cIiBbd2lkdGhdPVwiJzUwMHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJzdGFydERhdGVcIiBjYXB0aW9uPVwiU3RhcnQgRGF0ZVwiIFt3aWR0aF09XCInMTUwcHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cImVuZERhdGVcIiBjYXB0aW9uPVwiRHVlIERhdGVcIiBbd2lkdGhdPVwiJzE1MHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJwcmlvcml0eVwiIGNhcHRpb249XCJwcmlvcml0eVwiIFt3aWR0aF09XCInMTI1cHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cInJlcG9ydGVyXCIgY2FwdGlvbj1cIlJlcG9ydGVyXCIgW3dpZHRoXT1cIicxMjVweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwiYXNzaWduZWVcIiBjYXB0aW9uPVwiQXNzaWduZWVcIiBbd2lkdGhdPVwiJzEyNXB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJzdGF0dXNUaXRsZVwiIGNhcHRpb249XCJzdGF0dXNcIiBbd2lkdGhdPVwiJzEyNXB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJ0eXBlXCIgY2FwdGlvbj1cInR5cGVcIiBbd2lkdGhdPVwiJzE1MHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG5cbiAgQGlmIChjb2x1bW5zKCkubGVuZ3RoKSB7XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zKCk7IHRyYWNrIGNvbHVtbikge1xuICAgICAgICA8YXhwLXdpZGdldC1jb2x1bW4tcmVuZGVyZXJcbiAgICAgICAgICBbbm9kZV09XCJjb2x1bW4ud2lkZ2V0XCJcbiAgICAgICAgICBbY2FwdGlvbl09XCIoY29sdW1uLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgID48L2F4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyPlxuICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuICB9XG5cbiAgPGF4LWNvbW1hbmQtY29sdW1uXG4gICAgZml4ZWQ9XCJlbmRcIlxuICAgIFt3aWR0aF09XCInNjBweCdcIlxuICAgIChvbkl0ZW1DbGljayk9XCJvbkFjdGlvbkNsaWNrSGFuZGxlcigkZXZlbnQpXCJcbiAgICBbaXRlbXNdPVwiW3sgbmFtZTogJ3ZpZXcnLCB0ZXh0OiAnVmlldycsIGljb246ICdheC1pY29uIGF4LWljb24tbW9yZS1ob3Jpem9udGFsJyB9XVwiXG4gID48L2F4LWNvbW1hbmQtY29sdW1uPlxuPC9heC1kYXRhLXRhYmxlPlxuIl19","import { AXKanbanComponent, } from '@acorex/components/kanban';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, model, output, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nexport class AXMTaskBoardKanbanViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.kanbanComponent = viewChild(AXKanbanComponent, ...(ngDevMode ? [{ debugName: \"kanbanComponent\" }] : []));\n this.tasks = model.required(...(ngDevMode ? [{ debugName: \"tasks\" }] : []));\n this.onTaskClick = output();\n this.onTaskChanged = output();\n this.component = output();\n this.onActionClick = output();\n this.statuses = signal([], ...(ngDevMode ? [{ debugName: \"statuses\" }] : []));\n this.stableTasks = computed(() => this.tasks(), ...(ngDevMode ? [{ debugName: \"stableTasks\", equal: isEqual }] : [{ equal: isEqual }]));\n this.kanbanTasks = computed(() => {\n return this.stableTasks().map((task) => ({\n id: task.id,\n title: task.title,\n index: task.index,\n cssClass: task.cssClass,\n priority: task.priority,\n statusKey: task.status.id,\n description: task.description,\n }));\n }, ...(ngDevMode ? [{ debugName: \"kanbanTasks\" }] : []));\n this.#providerChanged = effect(async () => {\n const taskType = this.vm.selectedTaskTypes()[0];\n if (!taskType) {\n this.statuses.set([]);\n return;\n }\n taskType.getStatuses().then((statuses) => {\n if (statuses) {\n this.statuses.set(statuses);\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"#providerChanged\" }] : []));\n }\n ngAfterViewInit() {\n if (this.kanbanComponent()) {\n this.component.emit(this.kanbanComponent());\n }\n }\n #providerChanged;\n onSortChanged(event) {\n const tasks = this.tasks().map((item) => {\n const task = event.allItems.find((t) => t.id === item.id);\n if (task) {\n const status = this.statuses().find((s) => s.key === task.statusKey);\n return { ...item, index: task.index, status: { id: status.key, title: status.title } };\n }\n return item;\n });\n this.taskBoardService.updateTasks(tasks).then((tasks) => {\n this.tasks.set(tasks);\n });\n }\n handleItemClick(event) {\n const task = this.stableTasks().find((task) => task.id === event.item.id);\n if (task) {\n this.onTaskClick.emit(task);\n }\n }\n handleActionClick(event) {\n const task = this.stableTasks().find((task) => task.id === event.item.id);\n if (task) {\n this.onActionClick.emit({ nativeEvent: event.nativeEvent, task: task });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardKanbanViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.3.12\", type: AXMTaskBoardKanbanViewComponent, isStandalone: true, selector: \"axm-task-board-kanban-view\", inputs: { tasks: { classPropertyName: \"tasks\", publicName: \"tasks\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { tasks: \"tasksChange\", onTaskClick: \"onTaskClick\", onTaskChanged: \"onTaskChanged\", component: \"component\", onActionClick: \"onActionClick\" }, viewQueries: [{ propertyName: \"kanbanComponent\", first: true, predicate: AXKanbanComponent, descendants: true, isSignal: true }], ngImport: i0, template: \"<ax-kanban\\n [hasActions]=\\\"true\\\"\\n [statuses]=\\\"statuses()\\\"\\n [dataSource]=\\\"kanbanTasks()\\\"\\n (onItemClick)=\\\"handleItemClick($event)\\\"\\n (onSortChanged)=\\\"onSortChanged($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n></ax-kanban>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-height: 100%;--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"], dependencies: [{ kind: \"component\", type: AXKanbanComponent, selector: \"ax-kanban\", inputs: [\"hasActions\", \"dragStartDelay\", \"statuses\", \"itemTemplate\", \"dataSource\", \"keyField\", \"indexField\", \"titleField\", \"cssClassField\", \"priorityField\", \"statusKeyField\", \"descriptionField\", \"emptyTemplate\", \"headerTemplate\", \"footerTemplate\", \"contentFooterTemplate\", \"tooltipTemplate\"], outputs: [\"onSortChanged\", \"onItemClick\", \"onActionClick\", \"onItemDblClick\", \"onItemRightClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardKanbanViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-kanban-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXKanbanComponent], template: \"<ax-kanban\\n [hasActions]=\\\"true\\\"\\n [statuses]=\\\"statuses()\\\"\\n [dataSource]=\\\"kanbanTasks()\\\"\\n (onItemClick)=\\\"handleItemClick($event)\\\"\\n (onSortChanged)=\\\"onSortChanged($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n></ax-kanban>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-height: 100%;--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"] }]\n }], propDecorators: { kanbanComponent: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXKanbanComponent), { isSignal: true }] }], tasks: [{ type: i0.Input, args: [{ isSignal: true, alias: \"tasks\", required: true }] }, { type: i0.Output, args: [\"tasksChange\"] }], onTaskClick: [{ type: i0.Output, args: [\"onTaskClick\"] }], onTaskChanged: [{ type: i0.Output, args: [\"onTaskChanged\"] }], component: [{ type: i0.Output, args: [\"component\"] }], onActionClick: [{ type: i0.Output, args: [\"onActionClick\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1rYW5iYW4tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvdGFzay1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC92aWV3cy90YXNrLWJvYXJkLWthbmJhbi12aWV3L3Rhc2stYm9hcmQta2FuYmFuLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1rYW5iYW4tdmlldy90YXNrLWJvYXJkLWthbmJhbi12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsR0FLbEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBVW5FLE1BQU0sT0FBTywrQkFBK0I7SUFSNUM7UUFTcUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25DLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWxFLG9CQUFlLEdBQUcsU0FBUyxDQUFDLGlCQUFpQiwyREFBQyxDQUFDO1FBRS9D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Qix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsaUJBQWlCLENBQUM7aUdBTUEsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhLYW5iYW5Db21wb25lbnQsXG4gIEFYS2FuYmFuSXRlbSxcbiAgQVhLYW5iYW5Nb3VzZUV2ZW50LFxuICBBWEthbmJhblNvcnRFdmVudCxcbiAgQVhLYW5iYW5TdGF0dXMsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9rYW5iYW4nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBUYXNrQm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFRhc2ssIEFYUFRhc2tBY3Rpb24gfSBmcm9tICcuLi8uLi90YXNrLWJvYXJkLnR5cGVzJztcbmltcG9ydCB7IEFYTVRhc2tCb2FyZFZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3Rhc2stYm9hcmQudmlld21vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLXRhc2stYm9hcmQta2FuYmFuLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1ib2FyZC1rYW5iYW4tdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhc2stYm9hcmQta2FuYmFuLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtBWEthbmJhbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVRhc2tCb2FyZEthbmJhblZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYTVRhc2tCb2FyZFZpZXdNb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0YXNrQm9hcmRTZXJ2aWNlID0gaW5qZWN0KEFYUFRhc2tCb2FyZFNlcnZpY2UpO1xuXG4gIGthbmJhbkNvbXBvbmVudCA9IHZpZXdDaGlsZChBWEthbmJhbkNvbXBvbmVudCk7XG5cbiAgdGFza3MgPSBtb2RlbC5yZXF1aXJlZDxBWFBUYXNrW10+KCk7XG5cbiAgb25UYXNrQ2xpY2sgPSBvdXRwdXQ8QVhQVGFzaz4oKTtcbiAgb25UYXNrQ2hhbmdlZCA9IG91dHB1dDxBWFBUYXNrPigpO1xuICBjb21wb25lbnQgPSBvdXRwdXQ8QVhLYW5iYW5Db21wb25lbnQ+KCk7XG4gIG9uQWN0aW9uQ2xpY2sgPSBvdXRwdXQ8QVhQVGFza0FjdGlvbj4oKTtcblxuICBzdGF0dXNlcyA9IHNpZ25hbDxBWEthbmJhblN0YXR1c1tdPihbXSk7XG5cbiAgc3RhYmxlVGFza3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRhc2tzKCksIHsgZXF1YWw6IGlzRXF1YWwgfSk7XG4gIHByb3RlY3RlZCBrYW5iYW5UYXNrcyA9IGNvbXB1dGVkPEFYS2FuYmFuSXRlbVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhYmxlVGFza3MoKS5tYXAoKHRhc2spID0+ICh7XG4gICAgICBpZDogdGFzay5pZCxcbiAgICAgIHRpdGxlOiB0YXNrLnRpdGxlLFxuICAgICAgaW5kZXg6IHRhc2suaW5kZXgsXG4gICAgICBjc3NDbGFzczogdGFzay5jc3NDbGFzcyxcbiAgICAgIHByaW9yaXR5OiB0YXNrLnByaW9yaXR5LFxuICAgICAgc3RhdHVzS2V5OiB0YXNrLnN0YXR1cy5pZCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0YXNrLmRlc2NyaXB0aW9uLFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmthbmJhbkNvbXBvbmVudCgpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudC5lbWl0KHRoaXMua2FuYmFuQ29tcG9uZW50KCkhKTtcbiAgICB9XG4gIH1cblxuICAjcHJvdmlkZXJDaGFuZ2VkID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0YXNrVHlwZSA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrVHlwZXMoKVswXTtcbiAgICBpZiAoIXRhc2tUeXBlKSB7XG4gICAgICB0aGlzLnN0YXR1c2VzLnNldChbXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRhc2tUeXBlLmdldFN0YXR1c2VzKCkudGhlbigoc3RhdHVzZXMpID0+IHtcbiAgICAgIGlmIChzdGF0dXNlcykge1xuICAgICAgICB0aGlzLnN0YXR1c2VzLnNldChzdGF0dXNlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBvblNvcnRDaGFuZ2VkKGV2ZW50OiBBWEthbmJhblNvcnRFdmVudCkge1xuICAgIGNvbnN0IHRhc2tzID0gdGhpcy50YXNrcygpLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgdGFzazogQVhLYW5iYW5JdGVtID0gZXZlbnQuYWxsSXRlbXMuZmluZCgodCkgPT4gdC5pZCA9PT0gaXRlbS5pZCk7XG4gICAgICBpZiAodGFzaykge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnN0YXR1c2VzKCkuZmluZCgocykgPT4gcy5rZXkgPT09IHRhc2suc3RhdHVzS2V5KSE7XG4gICAgICAgIHJldHVybiB7IC4uLml0ZW0sIGluZGV4OiB0YXNrLmluZGV4ISwgc3RhdHVzOiB7IGlkOiBzdGF0dXMua2V5LCB0aXRsZTogc3RhdHVzLnRpdGxlIH0gfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICAgIHRoaXMudGFza0JvYXJkU2VydmljZS51cGRhdGVUYXNrcyh0YXNrcykudGhlbigodGFza3MpID0+IHtcbiAgICAgIHRoaXMudGFza3Muc2V0KHRhc2tzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVJdGVtQ2xpY2soZXZlbnQ6IEFYS2FuYmFuTW91c2VFdmVudCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLnN0YWJsZVRhc2tzKCkuZmluZCgodGFzaykgPT4gdGFzay5pZCA9PT0gZXZlbnQuaXRlbS5pZCk7XG4gICAgaWYgKHRhc2spIHtcbiAgICAgIHRoaXMub25UYXNrQ2xpY2suZW1pdCh0YXNrKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQWN0aW9uQ2xpY2soZXZlbnQ6IEFYS2FuYmFuTW91c2VFdmVudCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLnN0YWJsZVRhc2tzKCkuZmluZCgodGFzaykgPT4gdGFzay5pZCA9PT0gZXZlbnQuaXRlbS5pZCk7XG4gICAgaWYgKHRhc2spIHtcbiAgICAgIHRoaXMub25BY3Rpb25DbGljay5lbWl0KHsgbmF0aXZlRXZlbnQ6IGV2ZW50Lm5hdGl2ZUV2ZW50LCB0YXNrOiB0YXNrIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGF4LWthbmJhblxuICBbaGFzQWN0aW9uc109XCJ0cnVlXCJcbiAgW3N0YXR1c2VzXT1cInN0YXR1c2VzKClcIlxuICBbZGF0YVNvdXJjZV09XCJrYW5iYW5UYXNrcygpXCJcbiAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZUl0ZW1DbGljaygkZXZlbnQpXCJcbiAgKG9uU29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgKG9uQWN0aW9uQ2xpY2spPVwiaGFuZGxlQWN0aW9uQ2xpY2soJGV2ZW50KVwiXG4+PC9heC1rYW5iYW4+XG4iXX0=","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, output, signal, untracked, ViewEncapsulation, } from '@angular/core';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/data-table\";\nimport * as i2 from \"@acorex/platform/layout/widget-core\";\nexport class AXMTaskBoardStatusGroupedGridViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n this.provider = input(...(ngDevMode ? [undefined, { debugName: \"provider\" }] : []));\n this.dataSource = input.required(...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.onActionClick = output();\n this.groupedTasks = signal([], ...(ngDevMode ? [{ debugName: \"groupedTasks\" }] : []));\n this.allFetchedTasks = signal([], ...(ngDevMode ? [{ debugName: \"allFetchedTasks\" }] : []));\n this.columns = signal([], ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n this.statuses = signal([], ...(ngDevMode ? [{ debugName: \"statuses\" }] : []));\n this.#dataChanged = effect(async () => {\n const parentDataSource = this.dataSource();\n const allStatuses = this.statuses();\n if (!parentDataSource || allStatuses.length === 0) {\n this.groupedTasks.set([]);\n this.allFetchedTasks.set([]);\n return;\n }\n const result = await parentDataSource();\n this.allFetchedTasks.set(result.items);\n const allTasks = result.items;\n const statusGroups = allStatuses.map((status) => {\n const tasksForStatus = allTasks.filter((task) => task.status.id === status.key);\n return {\n statusInfo: status,\n tasks: this.createTaskDataSourceForGroup(tasksForStatus),\n };\n });\n this.groupedTasks.set(statusGroups);\n untracked(() => {\n setTimeout(() => {\n this.groupedTasks()?.forEach((group) => {\n group.tasks.refresh();\n });\n });\n });\n }, ...(ngDevMode ? [{ debugName: \"#dataChanged\" }] : []));\n this.#providerChanged = effect(async () => {\n const provider = this.vm.selectedTaskTypes()[0];\n provider?.getExtraFields().then((extraFields) => {\n if (extraFields) {\n this.columns.set(extraFields);\n }\n });\n provider?.getStatuses().then((statuses) => {\n if (statuses) {\n this.statuses.set(statuses);\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"#providerChanged\" }] : []));\n }\n #dataChanged;\n #providerChanged;\n createTaskDataSourceForGroup(tasks) {\n return new AXDataSource({\n load: async (e) => {\n const items = tasks.map((task) => ({\n id: task.id,\n data: task.data,\n title: task.title,\n priority: task.priority,\n description: task.description,\n reporter: task.reporter.fullName ?? '-',\n assignee: task.assignee?.fullName ?? 'unassigned',\n endDate: this.calendarService.format(task.endDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n startDate: this.calendarService.format(task.startDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n }));\n return {\n items: items.slice(e.skip, e.skip + e.take),\n total: items.length,\n };\n },\n pageSize: 5,\n key: 'id',\n byKey: async (key) => {\n return tasks.find((task) => task.id === key);\n },\n });\n }\n onActionClickHandler(e) {\n const task = this.allFetchedTasks().find((task) => task.id === e.data.id);\n if (!task)\n return;\n this.onActionClick.emit({ nativeEvent: e.nativeEvent, task });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardStatusGroupedGridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMTaskBoardStatusGroupedGridViewComponent, isStandalone: true, selector: \"axm-task-board-status-grouped-grid-view\", inputs: { provider: { classPropertyName: \"provider\", publicName: \"provider\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onActionClick: \"onActionClick\" }, ngImport: i0, template: \"@for (group of groupedTasks(); track group) {\\n <h1 class=\\\"ax-text-xl ax-font-bold\\\">{{ group.statusInfo.title }}</h1>\\n <ax-data-table\\n class=\\\"ax-h-[300px]\\\"\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"group.tasks\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n >\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n </ax-data-table>\\n}\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXDataTableModule }, { kind: \"component\", type: i1.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"rowTemplate\", \"emptyTemplate\", \"noDataTemplate\", \"alternative\", \"showHeader\", \"fixedHeader\", \"showFooter\", \"fixedFooter\", \"itemHeight\", \"allowReordering\", \"paging\", \"fetchDataMode\", \"loading\", \"focusedRow\"], outputs: [\"selectedRowsChange\", \"focusedRowChange\", \"onRowClick\", \"onRowDbClick\", \"onColumnsOrderChanged\", \"onColumnSizeChanged\", \"onPageChanged\"] }, { kind: \"component\", type: i1.AXDataTableTextColumnComponent, selector: \"ax-text-column\", inputs: [\"width\", \"caption\", \"allowSorting\", \"allowResizing\", \"fixed\", \"customExpandIcon\", \"customCollapseIcon\", \"dataField\", \"expandHandler\", \"wrapText\", \"cellTemplate\", \"footerTemplate\", \"headerTemplate\", \"format\", \"formatOptions\"] }, { kind: \"component\", type: i1.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i2.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardStatusGroupedGridViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-status-grouped-grid-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXDataTableModule, AXTranslatorPipe, AsyncPipe, AXPWidgetCoreModule], template: \"@for (group of groupedTasks(); track group) {\\n <h1 class=\\\"ax-text-xl ax-font-bold\\\">{{ group.statusInfo.title }}</h1>\\n <ax-data-table\\n class=\\\"ax-h-[300px]\\\"\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"group.tasks\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n >\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n </ax-data-table>\\n}\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"] }]\n }], propDecorators: { provider: [{ type: i0.Input, args: [{ isSignal: true, alias: \"provider\", required: false }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dataSource\", required: true }] }], onActionClick: [{ type: i0.Output, args: [\"onActionClick\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcvdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcvdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixH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NEZBRTdDLDBDQUEwQztrQkFSdEQsU0FBUzsrQkFDRSx5Q0FBeUMsbUJBR2xDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksV0FDNUIsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbkNsaWNrRXZlbnQsIEFYRGF0YVNvdXJjZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERhdGFUYWJsZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kYXRhLXRhYmxlJztcbmltcG9ydCB7IEFYS2FuYmFuU3RhdHVzIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2thbmJhbic7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBFeHRyYUZpZWxkLCBBWFBUYXNrLCBBWFBUYXNrQWN0aW9uLCBBWFBUYXNrRmlsdGVyLCBBWFBXb3JrZmxvd1Rhc2tQcm92aWRlciB9IGZyb20gJy4uLy4uL3Rhc2stYm9hcmQudHlwZXMnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkVmlld01vZGVsIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG5pbnRlcmZhY2UgU3RhdHVzVGFza0dyb3VwIHtcbiAgc3RhdHVzSW5mbzogQVhLYW5iYW5TdGF0dXM7XG4gIHRhc2tzOiBBWERhdGFTb3VyY2U8YW55Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLXRhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtBWERhdGFUYWJsZU1vZHVsZSwgQVhUcmFuc2xhdG9yUGlwZSwgQXN5bmNQaXBlLCBBWFBXaWRnZXRDb3JlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVGFza0JvYXJkU3RhdHVzR3JvdXBlZEdyaWRWaWV3Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYTVRhc2tCb2FyZFZpZXdNb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuXG4gIHByb3ZpZGVyID0gaW5wdXQ8QVhQV29ya2Zsb3dUYXNrUHJvdmlkZXI+KCk7XG4gIGRhdGFTb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDwoZmlsdGVyPzogQVhQVGFza0ZpbHRlcikgPT4gUHJvbWlzZTx7IGl0ZW1zOiBBWFBUYXNrW107IHRvdGFsOiBudW1iZXIgfT4+KCk7XG5cbiAgb25BY3Rpb25DbGljayA9IG91dHB1dDxBWFBUYXNrQWN0aW9uPigpO1xuXG4gIGdyb3VwZWRUYXNrcyA9IHNpZ25hbDxTdGF0dXNUYXNrR3JvdXBbXT4oW10pO1xuICBwcml2YXRlIGFsbEZldGNoZWRUYXNrcyA9IHNpZ25hbDxBWFBUYXNrW10+KFtdKTtcbiAgcHJvdGVjdGVkIGNvbHVtbnMgPSBzaWduYWw8QVhQRXh0cmFGaWVsZFtdPihbXSk7XG4gIHByb3RlY3RlZCBzdGF0dXNlcyA9IHNpZ25hbDxBWEthbmJhblN0YXR1c1tdPihbXSk7XG5cbiAgI2RhdGFDaGFuZ2VkID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXJlbnREYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCk7XG4gICAgY29uc3QgYWxsU3RhdHVzZXMgPSB0aGlzLnN0YXR1c2VzKCk7XG5cbiAgICBpZiAoIXBhcmVudERhdGFTb3VyY2UgfHwgYWxsU3RhdHVzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmdyb3VwZWRUYXNrcy5zZXQoW10pO1xuICAgICAgdGhpcy5hbGxGZXRjaGVkVGFza3Muc2V0KFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXJlbnREYXRhU291cmNlKCk7XG4gICAgdGhpcy5hbGxGZXRjaGVkVGFza3Muc2V0KHJlc3VsdC5pdGVtcyk7XG4gICAgY29uc3QgYWxsVGFza3MgPSByZXN1bHQuaXRlbXM7XG5cbiAgICBjb25zdCBzdGF0dXNHcm91cHMgPSBhbGxTdGF0dXNlcy5tYXAoKHN0YXR1cykgPT4ge1xuICAgICAgY29uc3QgdGFza3NGb3JTdGF0dXMgPSBhbGxUYXNrcy5maWx0ZXIoKHRhc2spID0+IHRhc2suc3RhdHVzLmlkID09PSBzdGF0dXMua2V5KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1c0luZm86IHN0YXR1cyxcbiAgICAgICAgdGFza3M6IHRoaXMuY3JlYXRlVGFza0RhdGFTb3VyY2VGb3JHcm91cCh0YXNrc0ZvclN0YXR1cyksXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5ncm91cGVkVGFza3Muc2V0KHN0YXR1c0dyb3Vwcyk7XG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmdyb3VwZWRUYXNrcygpPy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgIGdyb3VwLnRhc2tzLnJlZnJlc2goKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgI3Byb3ZpZGVyQ2hhbmdlZCA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnZtLnNlbGVjdGVkVGFza1R5cGVzKClbMF07XG4gICAgcHJvdmlkZXI/LmdldEV4dHJhRmllbGRzKCkudGhlbigoZXh0cmFGaWVsZHMpID0+IHtcbiAgICAgIGlmIChleHRyYUZpZWxkcykge1xuICAgICAgICB0aGlzLmNvbHVtbnMuc2V0KGV4dHJhRmllbGRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBwcm92aWRlcj8uZ2V0U3RhdHVzZXMoKS50aGVuKChzdGF0dXNlcykgPT4ge1xuICAgICAgaWYgKHN0YXR1c2VzKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzZXMuc2V0KHN0YXR1c2VzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBjcmVhdGVUYXNrRGF0YVNvdXJjZUZvckdyb3VwKHRhc2tzOiBBWFBUYXNrW10pOiBBWERhdGFTb3VyY2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBBWERhdGFTb3VyY2U8YW55Pih7XG4gICAgICBsb2FkOiBhc3luYyAoZSkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRhc2tzLm1hcCgodGFzaykgPT4gKHtcbiAgICAgICAgICBpZDogdGFzay5pZCxcbiAgICAgICAgICBkYXRhOiB0YXNrLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHRhc2sudGl0bGUsXG4gICAgICAgICAgcHJpb3JpdHk6IHRhc2sucHJpb3JpdHksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRhc2suZGVzY3JpcHRpb24sXG4gICAgICAgICAgcmVwb3J0ZXI6IHRhc2sucmVwb3J0ZXIuZnVsbE5hbWUgPz8gJy0nLFxuICAgICAgICAgIGFzc2lnbmVlOiB0YXNrLmFzc2lnbmVlPy5mdWxsTmFtZSA/PyAndW5hc3NpZ25lZCcsXG4gICAgICAgICAgZW5kRGF0ZTogdGhpcy5jYWxlbmRhclNlcnZpY2UuZm9ybWF0KHRhc2suZW5kRGF0ZSwgJ0REL01NL1lZWVkgSEg6bW0nLCB7XG4gICAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5jYWxlbmRhclNlcnZpY2UuZm9ybWF0KHRhc2suc3RhcnREYXRlLCAnREQvTU0vWVlZWSBISDptbScsIHtcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpdGVtczogaXRlbXMuc2xpY2UoZS5za2lwLCBlLnNraXAgKyBlLnRha2UpLFxuICAgICAgICAgIHRvdGFsOiBpdGVtcy5sZW5ndGgsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgcGFnZVNpemU6IDUsXG4gICAgICBrZXk6ICdpZCcsXG4gICAgICBieUtleTogYXN5bmMgKGtleTogdW5rbm93bikgPT4ge1xuICAgICAgICByZXR1cm4gdGFza3MuZmluZCgodGFzaykgPT4gdGFzay5pZCA9PT0ga2V5KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25BY3Rpb25DbGlja0hhbmRsZXIoZTogQVhCdXR0b25DbGlja0V2ZW50KSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWxsRmV0Y2hlZFRhc2tzKCkuZmluZCgodGFzaykgPT4gdGFzay5pZCA9PT0gZS5kYXRhLmlkKTtcbiAgICBpZiAoIXRhc2spIHJldHVybjtcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2suZW1pdCh7IG5hdGl2ZUV2ZW50OiBlLm5hdGl2ZUV2ZW50LCB0YXNrIH0pO1xuICB9XG59XG4iLCJAZm9yIChncm91cCBvZiBncm91cGVkVGFza3MoKTsgdHJhY2sgZ3JvdXApIHtcbiAgPGgxIGNsYXNzPVwiYXgtdGV4dC14bCBheC1mb250LWJvbGRcIj57eyBncm91cC5zdGF0dXNJbmZvLnRpdGxlIH19PC9oMT5cbiAgPGF4LWRhdGEtdGFibGVcbiAgICBjbGFzcz1cImF4LWgtWzMwMHB4XVwiXG4gICAgW2ZldGNoRGF0YU1vZGVdPVwiJ21hbnVhbCdcIlxuICAgIFtkYXRhU291cmNlXT1cImdyb3VwLnRhc2tzXCJcbiAgICBbbG9hZGluZ109XCJ7IGVuYWJsZWQ6IHRydWUsIGFuaW1hdGlvbjogdHJ1ZSB9XCJcbiAgPlxuICAgIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJ0aXRsZVwiIGNhcHRpb249XCJ0aXRsZVwiIFt3aWR0aF09XCInMzUwcHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwiZGVzY3JpcHRpb25cIiBjYXB0aW9uPVwiZGVzY3JpcHRpb25cIiBbd2lkdGhdPVwiJzUwMHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gICAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cInN0YXJ0RGF0ZVwiIGNhcHRpb249XCJTdGFydCBEYXRlXCIgW3dpZHRoXT1cIicxNTBweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICAgIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJlbmREYXRlXCIgY2FwdGlvbj1cIkR1ZSBEYXRlXCIgW3dpZHRoXT1cIicxNTBweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICAgIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJwcmlvcml0eVwiIGNhcHRpb249XCJwcmlvcml0eVwiIFt3aWR0aF09XCInMTI1cHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwicmVwb3J0ZXJcIiBjYXB0aW9uPVwiUmVwb3J0ZXJcIiBbd2lkdGhdPVwiJzEyNXB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gICAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cImFzc2lnbmVlXCIgY2FwdGlvbj1cIkFzc2lnbmVlXCIgW3dpZHRoXT1cIicxMjVweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICAgIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJwcmlvcml0eVwiIGNhcHRpb249XCJwcmlvcml0eVwiIFt3aWR0aF09XCInMTI1cHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cblxuICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zKCk7IHRyYWNrIGNvbHVtbikge1xuICAgICAgPGF4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyXG4gICAgICAgIFtub2RlXT1cImNvbHVtbi53aWRnZXRcIlxuICAgICAgICBbY2FwdGlvbl09XCIoY29sdW1uLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICA+PC9heHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcj5cbiAgICB9XG5cbiAgICA8YXgtY29tbWFuZC1jb2x1bW5cbiAgICAgIGZpeGVkPVwiZW5kXCJcbiAgICAgIFt3aWR0aF09XCInNjBweCdcIlxuICAgICAgKG9uSXRlbUNsaWNrKT1cIm9uQWN0aW9uQ2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAgICAgW2l0ZW1zXT1cIlt7IG5hbWU6ICd2aWV3JywgdGV4dDogJ1ZpZXcnLCBpY29uOiAnYXgtaWNvbiBheC1pY29uLW1vcmUtaG9yaXpvbnRhbCcgfV1cIlxuICAgID48L2F4LWNvbW1hbmQtY29sdW1uPlxuICA8L2F4LWRhdGEtdGFibGU+XG59XG4iXX0=","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCalendarComponent } from '@acorex/components/calendar';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXMenuModule, } from '@acorex/components/menu';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter, startWith } from 'rxjs';\nimport { RootConfig } from '../../const';\nimport { AXMTaskBoardDetailPanel } from './task-board-detail-panel/task-board-detail-panel.component';\nimport { AXMTaskBoardFiltersComponent } from './task-board-filters/task-board-filters.component';\nimport { AXPTaskBoardService } from './task-board.service';\nimport { AXMTaskBoardViewModel } from './task-board.viewmodel';\nimport { AXMTaskBoardCalendarViewComponent } from './views/task-board-calendar-view/task-board-calendar-view.component';\nimport { AXMTaskBoardGridViewComponent } from './views/task-board-grid-view/task-board-grid-view.component';\nimport { AXMTaskBoardKanbanViewComponent } from './views/task-board-kanban-view/task-board-kanban-view.component';\nimport { AXMTaskBoardStatusGroupedGridViewComponent } from './views/task-board-status-grouped-grid-view/task-board-status-grouped-grid-view.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/menu\";\nimport * as i3 from \"@acorex/components/button\";\nimport * as i4 from \"@acorex/core/translation\";\nimport * as i5 from \"@acorex/components/decorators\";\nimport * as i6 from \"@acorex/components/loading\";\nimport * as i7 from \"@acorex/components/popover\";\nimport * as i8 from \"@angular/common\";\nexport class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n this.router = inject(Router);\n this.rootConfig = RootConfig;\n this.vm = inject(AXMTaskBoardViewModel);\n this.unsubscribe = inject(AXUnsubscriber);\n this.activatedRoute = inject(ActivatedRoute);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.popover = viewChild('popover', ...(ngDevMode ? [{ debugName: \"popover\" }] : []));\n this.calendar = viewChild('calendar', ...(ngDevMode ? [{ debugName: \"calendar\" }] : []));\n this.isReady = signal(false, ...(ngDevMode ? [{ debugName: \"isReady\" }] : []));\n this.resources = signal([], ...(ngDevMode ? [{ debugName: \"resources\" }] : []));\n this.isQueryParam = signal(false, ...(ngDevMode ? [{ debugName: \"isQueryParam\" }] : []));\n this.currentTask = signal(null, ...(ngDevMode ? [{ debugName: \"currentTask\" }] : []));\n this.currentViewMode = signal('calendar', ...(ngDevMode ? [{ debugName: \"currentViewMode\" }] : []));\n this.schedulerComponent = signal(null, ...(ngDevMode ? [{ debugName: \"schedulerComponent\" }] : []));\n this.menuItems = signal([\n {\n key: 'calendar',\n text: 'calendar',\n icon: 'fa-light fa-calendar-day',\n children: [\n { key: 'day', text: 'daily', icon: 'fa-light fa-calendar-day' },\n { key: 'week', text: 'weekly', icon: 'fa-light fa-calendar-week' },\n { key: 'month', text: 'monthly', icon: 'fa-light fa-calendar-alt' },\n { key: 'agenda', text: 'agenda', icon: 'fa-light fa-calendar-range' },\n ],\n },\n {\n key: 'timeline',\n text: 'timeline',\n icon: 'fa-light fa-list-timeline',\n children: [\n { key: 'timeline-day', text: 'daily-timeline', icon: 'fa-light fa-calendar-day' },\n { key: 'timeline-multi-day', text: 'multi-day-timeline', icon: 'fa-light fa-calendar-week' },\n { key: 'timeline-month', text: 'monthly-timeline', icon: 'fa-light fa-calendar-alt' },\n { key: 'timeline-year', text: 'yearly-timeline', icon: 'fa-light fa-calendar-range' },\n ],\n },\n {\n key: 'table',\n text: 'table',\n icon: 'fa-light fa-table',\n children: [\n { key: 'grid', text: 'grid', icon: 'fa-light fa-table' },\n { key: 'status-grouped-grid', text: 'status-grouped-grid', icon: 'fa-light fa-table' },\n ],\n },\n { key: 'kanban', text: 'kanban', icon: 'fa-light fa-chart-kanban' },\n ], ...(ngDevMode ? [{ debugName: \"menuItems\" }] : []));\n this.calendarType = computed(() => this.localeService.activeProfile().calendar.system, ...(ngDevMode ? [{ debugName: \"calendarType\" }] : []));\n this.todayButtonText = computed(() => {\n switch (this.vm.currentViewMode()) {\n case 'day':\n case 'grid':\n case 'agenda':\n case 'kanban':\n case 'timeline-day':\n case 'timeline-year':\n case 'timeline-multi-day':\n case 'status-grouped-grid':\n return 'Today';\n case 'week':\n return 'Current week';\n case 'month':\n case 'timeline-month':\n return 'Current month';\n case 'timeline-year':\n return 'Current year';\n }\n }, ...(ngDevMode ? [{ debugName: \"todayButtonText\" }] : []));\n this.timeText = computed(() => {\n if (this.vm.currentViewMode() === 'grid' ||\n this.vm.currentViewMode() === 'kanban' ||\n this.vm.currentViewMode() === 'status-grouped-grid') {\n const start = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);\n const end = start.add('day', this.vm.daysCount() - 1);\n const startText = start.format('DD MMMM yyyy', { locale: this.localeService.activeProfile().calendar.system });\n const endText = end.format('DD MMMM yyyy', { locale: this.localeService.activeProfile().calendar.system });\n return `${startText} - ${endText}`;\n }\n return this.schedulerComponent()?.currentDateText();\n }, ...(ngDevMode ? [{ debugName: \"timeText\" }] : []));\n this.calendarDepth = computed(() => {\n if (this.vm.currentViewMode() === 'grid' ||\n this.vm.currentViewMode() === 'kanban' ||\n this.vm.currentViewMode() === 'status-grouped-grid') {\n return 'day';\n }\n return this.schedulerComponent()?.calendarDepth();\n }, ...(ngDevMode ? [{ debugName: \"calendarDepth\" }] : []));\n this.selectedViewMode = computed(() => {\n const currentMode = this.vm.currentViewMode();\n for (const category of this.menuItems()) {\n if (category.key === currentMode) {\n return { key: category.key, text: category.text, icon: category.icon };\n }\n if (category.children) {\n const foundChild = category.children.find((child) => child.key === currentMode);\n if (foundChild) {\n return foundChild;\n }\n }\n }\n const firstCategory = this.menuItems()[0];\n return firstCategory.children\n ? firstCategory.children[0]\n : { key: firstCategory.key, text: firstCategory.text, icon: firstCategory.icon };\n }, ...(ngDevMode ? [{ debugName: \"selectedViewMode\" }] : []));\n this.filter = computed(() => {\n const taskTypeNames = this.vm.selectedTaskTypeNames();\n const types = taskTypeNames.length > 0 ? taskTypeNames : undefined;\n const assigneeIds = this.vm.selectedAssigneeIds();\n const reporterIds = this.vm.selectedReporterIds();\n const priorities = this.vm.selectedPriorities();\n let from = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);\n let end;\n const currentView = this.vm.currentViewMode();\n if (currentView === 'grid' ||\n currentView === 'kanban' ||\n currentView === 'agenda' ||\n currentView === 'timeline-multi-day' ||\n currentView === 'status-grouped-grid') {\n end = from.add('day', this.vm.daysCount() - 1);\n }\n else if (currentView === 'month' || currentView === 'timeline-month') {\n from = from.startOf('month');\n end = from.endOf('month');\n }\n else {\n end = from.endOf('day');\n }\n return {\n ...(types && { types }),\n ...(assigneeIds.length > 0 && { assigneeIds }),\n ...(reporterIds.length > 0 && { reporterIds }),\n ...(priorities.length > 0 && { priorities }),\n range: { from: from.date, end: end.date },\n };\n }, ...(ngDevMode ? [{ debugName: \"filter\" }] : []));\n this.contextMenu = viewChild('rootContextMenu', ...(ngDevMode ? [{ debugName: \"contextMenu\" }] : []));\n this.schedulerDataSource = (filter) => {\n const finalFilter = { ...this.filter(), ...filter };\n return this.taskBoardService.getTasks(finalFilter).then((result) => {\n this.validateSelectedTask(result.items);\n return result.items;\n });\n };\n this.gridDataSource = (filter) => {\n const finalFilter = { ...this.filter(), ...filter };\n return this.taskBoardService.getTasks(finalFilter).then((result) => {\n this.validateSelectedTask(result.items);\n return result;\n });\n };\n this.resolvedTasks = signal([], ...(ngDevMode ? [{ debugName: \"resolvedTasks\" }] : []));\n this.eff = effect(async () => {\n const viewMode = this.vm.currentViewMode();\n const filter = this.filter();\n if (viewMode === 'kanban') {\n await this.taskResolveHandler(filter);\n }\n }, ...(ngDevMode ? [{ debugName: \"eff\" }] : []));\n this.refreshEffect = effect(() => {\n this.vm.selectedTaskTypeNames();\n this.getResources();\n this.schedulerComponent()?.refresh();\n }, ...(ngDevMode ? [{ debugName: \"refreshEffect\" }] : []));\n this.rangeBasedViews = [\n 'grid',\n 'kanban',\n 'agenda',\n 'status-grouped-grid',\n 'timeline-multi-day',\n ];\n this.getCellClass = (date) => {\n const currentView = this.vm.currentViewMode();\n const selectionStartDate = this.vm.rangeStartDate();\n if (this.rangeBasedViews.includes(currentView)) {\n if (selectionStartDate) {\n const axSelectionStartDate = this.calendarService.create(selectionStartDate);\n if (date.equal(axSelectionStartDate, 'day')) {\n return 'ax-range-start ax-range-end';\n }\n return null;\n }\n const fromRange = this.calendarService.create(this.vm.currentDate());\n const endRange = fromRange.add('day', this.vm.daysCount() - 1);\n const isStart = date.equal(fromRange, 'day');\n const isEnd = date.equal(endRange, 'day');\n if (isStart && isEnd)\n return 'ax-range-start ax-range-end';\n if (isStart)\n return 'ax-range-start';\n if (isEnd)\n return 'ax-range-end';\n if (date.compare(fromRange, 'day') > 0 && date.compare(endRange, 'day') < 0) {\n return 'ax-range-between';\n }\n return null;\n }\n if (currentView === 'week') {\n const from = this.calendarService.create(this.vm.currentDate());\n const end = from.add('day', 6);\n if (date.equal(from, 'day'))\n return 'ax-range-start';\n if (date.equal(end, 'day'))\n return 'ax-range-end';\n if (date.compare(from, 'day') > 0 && date.compare(end, 'day') < 0) {\n return 'ax-range-between';\n }\n }\n return null;\n };\n }\n async ngOnInit() {\n await super.ngOnInit();\n await this.vm.initialize();\n this.router.events\n .pipe(this.unsubscribe.takeUntilDestroy, filter((event) => event instanceof NavigationEnd), startWith(null))\n .subscribe(async () => {\n await this.loadFromRoute();\n if (!this.isReady()) {\n this.isReady.set(true);\n }\n });\n this.taskBoardService.refresh$.subscribe(async () => {\n await this.taskResolveHandler();\n await this.getResources();\n });\n }\n async getPageTitle() {\n return await this.translateService.translateAsync('@task-management:task-board.page-title');\n }\n async getPageBreadcrumbs() {\n return [\n {\n title: await this.translateService.translateAsync('@task-management:root-menu'),\n },\n ];\n }\n async taskResolveHandler(filter = this.filter()) {\n const result = await this.taskBoardService.getTasks(filter);\n this.validateSelectedTask(result.items);\n this.resolvedTasks.set(result.items);\n }\n schedulerComponentChanged(component) {\n this.schedulerComponent.set(component);\n }\n async handleContextMenuOnOpening(event) {\n const currentTask = this.currentTask();\n if (!currentTask)\n return;\n const providerName = currentTask.provider;\n if (!providerName)\n return;\n const provider = this.taskBoardService.getProvider(providerName);\n if (!provider)\n return;\n const actions = await provider.getActions(currentTask);\n for (const item of actions) {\n event.items.push({\n text: item.title,\n icon: item.icon,\n color: item.color,\n break: item.break,\n data: {\n command: item.command,\n },\n });\n }\n }\n handleContextMenu(event) {\n this.currentTask.set(event.task);\n const x = event.nativeEvent.clientX;\n const y = event.nativeEvent.clientY;\n const element = event.nativeEvent.target;\n this.contextMenu()?.showAt({ x, y }, element);\n }\n handleMonthSlotDblClicked(date) {\n this.vm.setCurrentDate(date);\n this.vm.setViewMode('day');\n }\n handleViewChange(view, dropdownPanel) {\n this.router.navigate([], { queryParams: { view } });\n this.vm.setViewMode(view);\n this.popover()?.close();\n dropdownPanel.close();\n }\n handleContextMenuItemClick(event) {\n this.taskBoardService.executeCommand(event.item.data?.command, this.currentTask()?.provider ?? '');\n }\n changeDate(forward) {\n const date = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);\n switch (this.vm.currentViewMode()) {\n case 'day':\n case 'timeline-day':\n this.vm.setCurrentDate(date.add('day', forward ? 1 : -1).date);\n break;\n case 'week':\n this.vm.setCurrentDate(date.add('week', forward ? 1 : -1).date);\n break;\n case 'grid':\n case 'agenda':\n case 'kanban':\n case 'timeline-multi-day':\n case 'status-grouped-grid':\n this.vm.setCurrentDate(date.add('day', forward ? this.vm.daysCount() : -this.vm.daysCount()).date);\n break;\n case 'month':\n case 'timeline-month':\n this.vm.setCurrentDate(date.add('month', forward ? 1 : -1).date);\n break;\n case 'timeline-year':\n this.vm.setCurrentDate(date.add('year', forward ? 1 : -1).date);\n break;\n }\n this.popover()?.close();\n this.calendar()?.render();\n }\n handleCalendarSlotClick(event) {\n if (event.component.activeView !== event.component.depth)\n return;\n const clickedDate = event.item;\n const currentView = this.vm.currentViewMode();\n if (this.rangeBasedViews.includes(currentView)) {\n const selectionStartDate = this.vm.rangeStartDate();\n if (!selectionStartDate) {\n this.vm.setRangeStartDate(clickedDate);\n this.calendar()?.render();\n return;\n }\n const date1 = selectionStartDate.getTime();\n const date2 = clickedDate.getTime();\n const newStartDate = new Date(Math.min(date1, date2));\n const newEndDate = new Date(Math.max(date1, date2));\n const differenceInDays = this.calculateDifferenceInDays(newStartDate, newEndDate);\n this.vm.setCurrentDate(newStartDate);\n this.vm.setDaysCount(differenceInDays);\n this.vm.setRangeStartDate(null);\n this.calendar()?.render();\n this.popover()?.close();\n return;\n }\n let dateToSet = new Date(clickedDate);\n if (currentView === 'week') {\n const day = dateToSet.getDay();\n const weekStart = this.localeService.activeProfile().calendar.week.startsOn;\n let daysToSubtract = day - weekStart;\n if (daysToSubtract < 0) {\n daysToSubtract += 7;\n }\n dateToSet.setDate(dateToSet.getDate() - daysToSubtract);\n }\n this.vm.setCurrentDate(dateToSet);\n this.popover()?.close();\n this.calendar()?.render();\n }\n /**\n * Helper function to calculate the difference in whole days between two dates.\n * The result is inclusive (e.g., May 5 to May 6 is a 2-day range).\n */\n calculateDifferenceInDays(start, end) {\n if (!start || !end) {\n return 1;\n }\n const startDate = new Date(start.getFullYear(), start.getMonth(), start.getDate());\n const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());\n const timeDifference = endDate.getTime() - startDate.getTime();\n const daysDifference = Math.round(timeDifference / (1000 * 3600 * 24));\n return daysDifference + 1;\n }\n handleTodayClick() {\n this.vm.setRangeStartDate(null);\n let currentDate;\n if (this.vm.currentViewMode() === 'week') {\n currentDate = this.calendarService\n .create(new Date(), this.localeService.activeProfile().calendar.system)\n .startOf('week').date;\n }\n else {\n currentDate = new Date();\n }\n this.vm.setCurrentDate(currentDate);\n this.popover()?.close();\n this.calendar()?.render();\n }\n async loadFromRoute() {\n const snapshot = this.activatedRoute.snapshot.queryParamMap;\n const view = snapshot.get('view') ?? null;\n const allValidViews = this.menuItems().flatMap((c) => (c.children ? c.children.map((child) => child.key) : c.key));\n if (view && allValidViews.includes(view)) {\n this.vm.setViewMode(view);\n }\n else if (!this.vm.currentViewMode()) {\n this.vm.setViewMode('day');\n }\n const type = snapshot.getAll('type');\n const assignee = snapshot.getAll('assignee');\n const reporter = snapshot.getAll('reporter');\n const priority = snapshot.getAll('priority');\n if (type.length || assignee.length || priority.length || reporter.length) {\n this.isQueryParam.set(true);\n this.vm.setSelectedTaskTypeNames(type, true);\n this.vm.setSelectedAssigneeIds(assignee, true);\n this.vm.setSelectedReporterIds(reporter, true);\n this.vm.setSelectedPriorities(priority, true);\n }\n const dateRange = snapshot.get('dateRange');\n if (dateRange) {\n const range = this.taskBoardService.rangeCalculator(dateRange);\n if (range) {\n this.vm.setCurrentDate(range.from);\n this.vm.setDaysCount(this.calculateDifferenceInDays(range.from, range.end));\n switch (dateRange) {\n case 'today':\n this.vm.setViewMode('day');\n break;\n case 'this-week':\n this.vm.setViewMode('week');\n this.vm.setRangeStartDate(range.from);\n break;\n case 'this-month':\n this.vm.setViewMode('month');\n break;\n }\n }\n }\n }\n /**\n * Checks if the currently selected task is still present in the list of visible tasks.\n * If not, it clears the selection to prevent showing details for a hidden task.\n * @param visibleTasks The new array of tasks that will be displayed.\n */\n validateSelectedTask(visibleTasks) {\n const currentSelectedTask = this.vm.selectedTask();\n // Proceed only if a task is actually selected\n if (currentSelectedTask) {\n // Check if any task in the new list has the same ID as the selected one\n const isSelectedTaskVisible = visibleTasks.some((task) => task.id === currentSelectedTask.id);\n // If the selected task is NOT in the new list, clear the selection.\n if (!isSelectedTaskVisible) {\n this.vm.selectTask(null);\n }\n }\n }\n async getResources() {\n if (this.vm.selectedTaskTypeNames().length !== 1) {\n this.resources.set([]);\n return;\n }\n const resources = await this.taskBoardService.getResources(this.vm.selectedTaskTypeNames()[0] ?? '');\n this.resources.set(resources);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMTaskBoardPage, isStandalone: true, selector: \"ng-component\", providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMTaskBoardPage,\n },\n ], viewQueries: [{ propertyName: \"popover\", first: true, predicate: [\"popover\"], descendants: true, isSignal: true }, { propertyName: \"calendar\", first: true, predicate: [\"calendar\"], descendants: true, isSignal: true }, { propertyName: \"contextMenu\", first: true, predicate: [\"rootContextMenu\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-toolbar>\\n <axp-layout-prefix class=\\\"sm:ax-flex-row ax-flex-col ax-items-start\\\">\\n <ax-button [text]=\\\"(t('task-board.view.' + selectedViewMode().text, { scope: rootConfig.config.i18n}) | async)!\\\">\\n <ax-prefix><ax-icon [icon]=\\\"selectedViewMode().icon\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel #dropdownPanel>\\n <ax-menu [orientation]=\\\"'vertical'\\\" class=\\\"ax-menu-container\\\">\\n @for (category of menuItems(); track category.key) {\\n <ng-container>\\n @if (category.children && category.children.length > 0) {\\n <ax-menu-item>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text>\\n @for (child of category.children; track child.key) {\\n <ax-menu-item (onClick)=\\\"handleViewChange(child.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"child.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text\\n >{{ (t('task-board.view.' + child.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text\\n >\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n } @else {\\n <ax-menu-item (onClick)=\\\"handleViewChange(category.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text>\\n </ax-menu-item>\\n }\\n </ng-container>\\n }\\n </ax-menu>\\n </ax-dropdown-panel>\\n <ax-suffix>\\n <ax-icon icon=\\\"fa-light fa-caret-down\\\"></ax-icon>\\n </ax-suffix>\\n </ax-button>\\n\\n <div class=\\\"ax-scheduler-header ax-w-max ax-sm sm:ax-md\\\">\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(false)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" [text]=\\\"timeText()\\\" #date></ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(true)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-popover [target]=\\\"date\\\" [placement]=\\\"'bottom'\\\" #popover [adaptivityEnabled]=\\\"true\\\">\\n <div class=\\\"ax-overlay-pane\\\">\\n <ax-calendar\\n #calendar\\n [type]=\\\"calendarType()\\\"\\n [depth]=\\\"calendarDepth()\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [ngModel]=\\\"vm.currentDate()\\\"\\n class=\\\"ax-single-range-calendar\\\"\\n (onSlotClick)=\\\"handleCalendarSlotClick($event)\\\"\\n >\\n <ax-footer>\\n <ax-button\\n look=\\\"link\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"todayButtonText()\\\"\\n (onClick)=\\\"handleTodayClick()\\\"\\n ></ax-button>\\n </ax-footer>\\n </ax-calendar>\\n </div>\\n </ax-popover>\\n </div>\\n </axp-layout-prefix>\\n\\n <axp-layout-suffix>\\n <ax-button [text]=\\\"t('task-board.filter.title', { scope: rootConfig.config.i18n }) | async\\\">\\n <ax-prefix><ax-icon icon=\\\"fa-{{vm.activeFilterCount()?'solid':'light'}} fa-filter\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel #filterDropdownPanel (onOpened)=\\\"filtersComponent.resetContextToViewModel()\\\">\\n <axm-task-board-filters\\n #filtersComponent\\n [isQueryParam]=\\\"isQueryParam()\\\"\\n (applyClicked)=\\\"filterDropdownPanel.close()\\\"\\n ></axm-task-board-filters>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n @if(layoutService.isLarge()) {\\n <ax-button (onClick)=\\\"vm.toggleDetailPanel()\\\">\\n <ax-icon icon=\\\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\\\"></ax-icon>\\n </ax-button>\\n }\\n </axp-layout-suffix>\\n </axp-page-toolbar>\\n <axp-page-content class=\\\"ax-flex ax-flex-row ax-gap-2\\\">\\n @if (isReady()) { @switch(vm.currentViewMode()) { @case('kanban') {\\n <axm-task-board-kanban-view\\n class=\\\"axp-kanban-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [tasks]=\\\"resolvedTasks()\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-kanban-view>\\n } @case('grid') {\\n <axm-task-board-grid-view\\n class=\\\"ax-h-full ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-grid-view>\\n } @case('status-grouped-grid') {\\n <axm-task-board-status-grouped-grid-view\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-status-grouped-grid-view>\\n } @default {\\n <axm-task-board-calendar-view\\n class=\\\"axp-scheduler-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [resources]=\\\"resources()\\\"\\n [startingDate]=\\\"vm.currentDate()\\\"\\n [dataSource]=\\\"schedulerDataSource\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n [selectedView]=\\\"vm.currentViewMode()\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n (onTaskRightClick)=\\\"handleContextMenu($event)\\\"\\n (component)=\\\"schedulerComponentChanged($event)\\\"\\n (onMonthSlotDblClicked)=\\\"handleMonthSlotDblClicked($event)\\\"\\n ></axm-task-board-calendar-view>\\n } }\\n <ax-context-menu\\n #rootContextMenu\\n [closeOn]=\\\"'leave'\\\"\\n [orientation]=\\\"'vertical'\\\"\\n (onOpening)=\\\"handleContextMenuOnOpening($event)\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\"\\n >\\n </ax-context-menu>\\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\\n <axm-task-board-detail-panel></axm-task-board-detail-panel>\\n } } @else {\\n <div class=\\\"ax-flex ax-items-center ax-justify-center ax-w-full ax-h-full\\\">\\n <ax-loading></ax-loading>\\n </div>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\"html[dir=rtl] axp-page-layout axp-page-toolbar axp-layout-prefix .ax-scheduler-header .arrow-icon:before{-moz-transform:scale(-1,1);-webkit-transform:scale(-1,1);-o-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scaleX(-1)}.ax-single-range-calendar .ax-range-start,.ax-single-range-calendar .ax-range-end{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.85)!important}.ax-single-range-calendar .ax-range-start:hover,.ax-single-range-calendar .ax-range-end:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}.ax-single-range-calendar .ax-range-start.ax-state-holiday,.ax-single-range-calendar .ax-range-end.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.85)!important}.ax-single-range-calendar .ax-range-between{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.65)}.ax-single-range-calendar .ax-range-between.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.65)}.ax-single-range-calendar ax-footer{display:flex;justify-content:center;border-color:rgba(var(--ax-comp-calendar-view-header-border-color));border-top-width:var(--ax-comp-calendar-view-header-border-width, 1px)}axp-page-content:not(:has(axm-task-board-status-grouped-grid-view,axm-task-board-time-grouped-grid-view)){overflow-y:hidden}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: \n //\n AXMenuModule }, { kind: \"component\", type: i2.AXMenuItemComponent, selector: \"ax-menu-item\", inputs: [\"name\", \"data\", \"disabled\", \"color\"], outputs: [\"onClick\"] }, { kind: \"component\", type: i2.AXMenuComponent, selector: \"ax-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"hasArrow\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: i2.AXContextMenuComponent, selector: \"ax-context-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"target\"], outputs: [\"onItemClick\", \"onOpening\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i4.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i5.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i6.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXBreadcrumbsModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: \n //\n AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXMTaskBoardCalendarViewComponent, selector: \"axm-task-board-calendar-view\", inputs: [\"resources\", \"startingDate\", \"selectedView\", \"dataSource\"], outputs: [\"onTaskClick\", \"onTaskChanged\", \"onMonthSlotDblClicked\", \"onActionClick\", \"component\", \"onTaskRightClick\", \"onRangeChanged\"] }, { kind: \"component\", type: AXMTaskBoardKanbanViewComponent, selector: \"axm-task-board-kanban-view\", inputs: [\"tasks\"], outputs: [\"tasksChange\", \"onTaskClick\", \"onTaskChanged\", \"component\", \"onActionClick\"] }, { kind: \"component\", type: AXMTaskBoardGridViewComponent, selector: \"axm-task-board-grid-view\", inputs: [\"dataSource\"], outputs: [\"onTaskClick\", \"onActionClick\"] }, { kind: \"component\", type: AXMTaskBoardStatusGroupedGridViewComponent, selector: \"axm-task-board-status-grouped-grid-view\", inputs: [\"provider\", \"dataSource\"], outputs: [\"onActionClick\"] }, { kind: \"component\", type: AXMTaskBoardDetailPanel, selector: \"axm-task-board-detail-panel\" }, { kind: \"component\", type: AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"component\", type: i7.AXPopoverComponent, selector: \"ax-popover\", inputs: [\"width\", \"disabled\", \"offsetX\", \"offsetY\", \"target\", \"placement\", \"content\", \"openOn\", \"closeOn\", \"hasBackdrop\", \"openAfter\", \"closeAfter\", \"backdropClass\", \"panelClass\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: AXCalendarComponent, selector: \"ax-calendar\", inputs: [\"rtl\", \"readonly\", \"value\", \"name\", \"disabled\", \"depth\", \"activeView\", \"minValue\", \"maxValue\", \"disabledDates\", \"holidayDates\", \"type\", \"dayCellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"cellClass\", \"showNavigation\", \"count\", \"id\", \"weekend\", \"weekdays\"], outputs: [\"onOptionChanged\", \"valueChange\", \"onValueChanged\", \"minValueChange\", \"maxValueChange\", \"onBlur\", \"onFocus\", \"depthChange\", \"typeChange\", \"activeViewChange\", \"disabledDatesChange\", \"holidayDatesChange\", \"onNavigate\", \"onSlotClick\", \"countChange\"] }, { kind: \"component\", type: AXMTaskBoardFiltersComponent, selector: \"axm-task-board-filters\", inputs: [\"isQueryParam\"], outputs: [\"applyClicked\"] }, { kind: \"pipe\", type: i8.AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardPage, decorators: [{\n type: Component,\n args: [{ imports: [\n FormsModule,\n CommonModule,\n RouterModule,\n //\n AXMenuModule,\n AXButtonModule,\n AXDropdownButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n //\n AXPThemeLayoutBlockComponent,\n AXPPageLayoutComponent,\n AXMTaskBoardCalendarViewComponent,\n AXMTaskBoardKanbanViewComponent,\n AXMTaskBoardGridViewComponent,\n AXMTaskBoardStatusGroupedGridViewComponent,\n AXMTaskBoardDetailPanel,\n AXDropdownPanelComponent,\n AXPopoverModule,\n AXCalendarComponent,\n AXMTaskBoardFiltersComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMTaskBoardPage,\n },\n ], template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-toolbar>\\n <axp-layout-prefix class=\\\"sm:ax-flex-row ax-flex-col ax-items-start\\\">\\n <ax-button [text]=\\\"(t('task-board.view.' + selectedViewMode().text, { scope: rootConfig.config.i18n}) | async)!\\\">\\n <ax-prefix><ax-icon [icon]=\\\"selectedViewMode().icon\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel #dropdownPanel>\\n <ax-menu [orientation]=\\\"'vertical'\\\" class=\\\"ax-menu-container\\\">\\n @for (category of menuItems(); track category.key) {\\n <ng-container>\\n @if (category.children && category.children.length > 0) {\\n <ax-menu-item>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text>\\n @for (child of category.children; track child.key) {\\n <ax-menu-item (onClick)=\\\"handleViewChange(child.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"child.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text\\n >{{ (t('task-board.view.' + child.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text\\n >\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n } @else {\\n <ax-menu-item (onClick)=\\\"handleViewChange(category.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text>\\n </ax-menu-item>\\n }\\n </ng-container>\\n }\\n </ax-menu>\\n </ax-dropdown-panel>\\n <ax-suffix>\\n <ax-icon icon=\\\"fa-light fa-caret-down\\\"></ax-icon>\\n </ax-suffix>\\n </ax-button>\\n\\n <div class=\\\"ax-scheduler-header ax-w-max ax-sm sm:ax-md\\\">\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(false)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" [text]=\\\"timeText()\\\" #date></ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(true)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-popover [target]=\\\"date\\\" [placement]=\\\"'bottom'\\\" #popover [adaptivityEnabled]=\\\"true\\\">\\n <div class=\\\"ax-overlay-pane\\\">\\n <ax-calendar\\n #calendar\\n [type]=\\\"calendarType()\\\"\\n [depth]=\\\"calendarDepth()\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [ngModel]=\\\"vm.currentDate()\\\"\\n class=\\\"ax-single-range-calendar\\\"\\n (onSlotClick)=\\\"handleCalendarSlotClick($event)\\\"\\n >\\n <ax-footer>\\n <ax-button\\n look=\\\"link\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"todayButtonText()\\\"\\n (onClick)=\\\"handleTodayClick()\\\"\\n ></ax-button>\\n </ax-footer>\\n </ax-calendar>\\n </div>\\n </ax-popover>\\n </div>\\n </axp-layout-prefix>\\n\\n <axp-layout-suffix>\\n <ax-button [text]=\\\"t('task-board.filter.title', { scope: rootConfig.config.i18n }) | async\\\">\\n <ax-prefix><ax-icon icon=\\\"fa-{{vm.activeFilterCount()?'solid':'light'}} fa-filter\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel #filterDropdownPanel (onOpened)=\\\"filtersComponent.resetContextToViewModel()\\\">\\n <axm-task-board-filters\\n #filtersComponent\\n [isQueryParam]=\\\"isQueryParam()\\\"\\n (applyClicked)=\\\"filterDropdownPanel.close()\\\"\\n ></axm-task-board-filters>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n @if(layoutService.isLarge()) {\\n <ax-button (onClick)=\\\"vm.toggleDetailPanel()\\\">\\n <ax-icon icon=\\\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\\\"></ax-icon>\\n </ax-button>\\n }\\n </axp-layout-suffix>\\n </axp-page-toolbar>\\n <axp-page-content class=\\\"ax-flex ax-flex-row ax-gap-2\\\">\\n @if (isReady()) { @switch(vm.currentViewMode()) { @case('kanban') {\\n <axm-task-board-kanban-view\\n class=\\\"axp-kanban-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [tasks]=\\\"resolvedTasks()\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-kanban-view>\\n } @case('grid') {\\n <axm-task-board-grid-view\\n class=\\\"ax-h-full ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-grid-view>\\n } @case('status-grouped-grid') {\\n <axm-task-board-status-grouped-grid-view\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-status-grouped-grid-view>\\n } @default {\\n <axm-task-board-calendar-view\\n class=\\\"axp-scheduler-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [resources]=\\\"resources()\\\"\\n [startingDate]=\\\"vm.currentDate()\\\"\\n [dataSource]=\\\"schedulerDataSource\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n [selectedView]=\\\"vm.currentViewMode()\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n (onTaskRightClick)=\\\"handleContextMenu($event)\\\"\\n (component)=\\\"schedulerComponentChanged($event)\\\"\\n (onMonthSlotDblClicked)=\\\"handleMonthSlotDblClicked($event)\\\"\\n ></axm-task-board-calendar-view>\\n } }\\n <ax-context-menu\\n #rootContextMenu\\n [closeOn]=\\\"'leave'\\\"\\n [orientation]=\\\"'vertical'\\\"\\n (onOpening)=\\\"handleContextMenuOnOpening($event)\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\"\\n >\\n </ax-context-menu>\\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\\n <axm-task-board-detail-panel></axm-task-board-detail-panel>\\n } } @else {\\n <div class=\\\"ax-flex ax-items-center ax-justify-center ax-w-full ax-h-full\\\">\\n <ax-loading></ax-loading>\\n </div>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\"html[dir=rtl] axp-page-layout axp-page-toolbar axp-layout-prefix .ax-scheduler-header .arrow-icon:before{-moz-transform:scale(-1,1);-webkit-transform:scale(-1,1);-o-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scaleX(-1)}.ax-single-range-calendar .ax-range-start,.ax-single-range-calendar .ax-range-end{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.85)!important}.ax-single-range-calendar .ax-range-start:hover,.ax-single-range-calendar .ax-range-end:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}.ax-single-range-calendar .ax-range-start.ax-state-holiday,.ax-single-range-calendar .ax-range-end.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.85)!important}.ax-single-range-calendar .ax-range-between{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.65)}.ax-single-range-calendar .ax-range-between.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.65)}.ax-single-range-calendar ax-footer{display:flex;justify-content:center;border-color:rgba(var(--ax-comp-calendar-view-header-border-color));border-top-width:var(--ax-comp-calendar-view-header-border-width, 1px)}axp-page-content:not(:has(axm-task-board-status-grouped-grid-view,axm-task-board-time-grouped-grid-view)){overflow-y:hidden}\\n\"] }]\n }], propDecorators: { popover: [{ type: i0.ViewChild, args: ['popover', { isSignal: true }] }], calendar: [{ type: i0.ViewChild, args: ['calendar', { isSignal: true }] }], contextMenu: [{ type: i0.ViewChild, args: ['rootContextMenu', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdGFzay1ib2FyZC5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdGFzay1ib2FyZC5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQXVCLE1BQU0sNkJBQTZCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFJTCxZQUFZLEdBQ2IsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQXNCLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpGLE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1B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d0JBQy9CLDZCQUE2Qjt3QkFDN0IsMENBQTBDO3dCQUMxQyx1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLDRCQUE0QjtxQkFDN0IsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxrQkFBa0I7eUJBQzlCO3FCQUNGO3FFQVlpRCxTQUFTLGtFQUNQLFVBQVUscUVBMkpOLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYU3R5bGVDb2xvclR5cGUgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEJyZWFkY3J1bWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWENhbGVuZGFyQ29tcG9uZW50LCBBWENhbGVuZGFyU2xvdENsaWNrIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93blBhbmVsQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7XG4gIEFYQ29udGV4dE1lbnVDb21wb25lbnQsXG4gIEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQsXG4gIEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQsXG4gIEFYTWVudU1vZHVsZSxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21lbnUnO1xuaW1wb3J0IHsgQVhQb3BvdmVyQ29tcG9uZW50LCBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFNjaGVkdWxlckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zY2hlZHVsZXInO1xuaW1wb3J0IHsgQVhDYWxlbmRhclNlcnZpY2UsIEFYRGF0ZVRpbWUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBWFBCcmVhZGNydW1iSXRlbSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZSwgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBPbkluaXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTVRhc2tCb2FyZERldGFpbFBhbmVsIH0gZnJvbSAnLi90YXNrLWJvYXJkLWRldGFpbC1wYW5lbC90YXNrLWJvYXJkLWRldGFpbC1wYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkRmlsdGVyc0NvbXBvbmVudCB9IGZyb20gJy4vdGFzay1ib2FyZC1maWx0ZXJzL3Rhc2stYm9hcmQtZmlsdGVycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQVGFza0JvYXJkU2VydmljZSB9IGZyb20gJy4vdGFzay1ib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFJlc291cmNlLCBBWFBUYXNrLCBBWFBUYXNrQWN0aW9uLCBBWFBUYXNrRmlsdGVyIH0gZnJvbSAnLi90YXNrLWJvYXJkLnR5cGVzJztcbmltcG9ydCB7IEFYTVRhc2tCb2FyZFZpZXdNb2RlbCwgQVhQUHJpb3JpdHlGaWx0ZXJLZXksIEFYUFRhc2tCb2FyZFZpZXdNb2RlIH0gZnJvbSAnLi90YXNrLWJvYXJkLnZpZXdtb2RlbCc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRDYWxlbmRhclZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdzL3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy90YXNrLWJvYXJkLWNhbGVuZGFyLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYTVRhc2tCb2FyZEdyaWRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi92aWV3cy90YXNrLWJvYXJkLWdyaWQtdmlldy90YXNrLWJvYXJkLWdyaWQtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkS2FuYmFuVmlld0NvbXBvbmVudCB9IGZyb20gJy4vdmlld3MvdGFzay1ib2FyZC1rYW5iYW4tdmlldy90YXNrLWJvYXJkLWthbmJhbi12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRTdGF0dXNHcm91cGVkR3JpZFZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdzL3Rhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3L3Rhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3LmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIEFYUFRhc2tCb2FyZFZpZXdDYXRlZ29yeSA9ICdjYWxlbmRhcicgfCAndGltZWxpbmUnIHwgJ3RhYmxlJyB8ICdrYW5iYW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYm9hcmQucGFnZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1ib2FyZC5wYWdlLnNjc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgLy9cbiAgICBBWE1lbnVNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIEFYQmFkZ2VNb2R1bGUsXG4gICAgLy9cbiAgICBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50LFxuICAgIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgQVhNVGFza0JvYXJkQ2FsZW5kYXJWaWV3Q29tcG9uZW50LFxuICAgIEFYTVRhc2tCb2FyZEthbmJhblZpZXdDb21wb25lbnQsXG4gICAgQVhNVGFza0JvYXJkR3JpZFZpZXdDb21wb25lbnQsXG4gICAgQVhNVGFza0JvYXJkU3RhdHVzR3JvdXBlZEdyaWRWaWV3Q29tcG9uZW50LFxuICAgIEFYTVRhc2tCb2FyZERldGFpbFBhbmVsLFxuICAgIEFYRHJvcGRvd25QYW5lbENvbXBvbmVudCxcbiAgICBBWFBvcG92ZXJNb2R1bGUsXG4gICAgQVhDYWxlbmRhckNvbXBvbmVudCxcbiAgICBBWE1UYXNrQm9hcmRGaWx0ZXJzQ29tcG9uZW50LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQUGFnZUxheW91dEJhc2UsXG4gICAgICB1c2VFeGlzdGluZzogQVhNVGFza0JvYXJkUGFnZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1UYXNrQm9hcmRQYWdlIGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm9vdENvbmZpZyA9IFJvb3RDb25maWc7XG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IGluamVjdChBWE1UYXNrQm9hcmRWaWV3TW9kZWwpO1xuICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU2VydmljZSA9IGluamVjdChBWExvY2FsZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhbGVuZGFyU2VydmljZSA9IGluamVjdChBWENhbGVuZGFyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFza0JvYXJkU2VydmljZSA9IGluamVjdChBWFBUYXNrQm9hcmRTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgcG9wb3ZlciA9IHZpZXdDaGlsZDxBWFBvcG92ZXJDb21wb25lbnQ+KCdwb3BvdmVyJyk7XG4gIHByb3RlY3RlZCBjYWxlbmRhciA9IHZpZXdDaGlsZDxBWENhbGVuZGFyQ29tcG9uZW50PignY2FsZW5kYXInKTtcblxuICBwcm90ZWN0ZWQgaXNSZWFkeSA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZXNvdXJjZXMgPSBzaWduYWw8QVhQUmVzb3VyY2VbXT4oW10pO1xuICBwcm90ZWN0ZWQgaXNRdWVyeVBhcmFtID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBjdXJyZW50VGFzayA9IHNpZ25hbDxBWFBUYXNrIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCBjdXJyZW50Vmlld01vZGUgPSBzaWduYWw8J2NhbGVuZGFyJyB8ICdrYW5iYW4nIHwgJ2dyaWQnIHwgJ3N0YXR1cy1ncm91cGVkLWdyaWQnPignY2FsZW5kYXInKTtcbiAgcHJvdGVjdGVkIHNjaGVkdWxlckNvbXBvbmVudCA9IHNpZ25hbDxBWFNjaGVkdWxlckNvbXBvbmVudCB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWVudUl0ZW1zID0gc2lnbmFsPFxuICAgIHtcbiAgICAgIGtleTogQVhQVGFza0JvYXJkVmlld0NhdGVnb3J5O1xuICAgICAgdGV4dDogc3RyaW5nO1xuICAgICAgaWNvbjogc3RyaW5nO1xuICAgICAgY2hpbGRyZW4/OiB7IGtleTogQVhQVGFza0JvYXJkVmlld01vZGU7IHRleHQ6IHN0cmluZzsgaWNvbjogc3RyaW5nIH1bXTtcbiAgICB9W11cbiAgPihbXG4gICAge1xuICAgICAga2V5OiAnY2FsZW5kYXInLFxuICAgICAgdGV4dDogJ2NhbGVuZGFyJyxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS1jYWxlbmRhci1kYXknLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgeyBrZXk6ICdkYXknLCB0ZXh0OiAnZGFpbHknLCBpY29uOiAnZmEtbGlnaHQgZmEtY2FsZW5kYXItZGF5JyB9LFxuICAgICAgICB7IGtleTogJ3dlZWsnLCB0ZXh0OiAnd2Vla2x5JywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNhbGVuZGFyLXdlZWsnIH0sXG4gICAgICAgIHsga2V5OiAnbW9udGgnLCB0ZXh0OiAnbW9udGhseScsIGljb246ICdmYS1saWdodCBmYS1jYWxlbmRhci1hbHQnIH0sXG4gICAgICAgIHsga2V5OiAnYWdlbmRhJywgdGV4dDogJ2FnZW5kYScsIGljb246ICdmYS1saWdodCBmYS1jYWxlbmRhci1yYW5nZScgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd0aW1lbGluZScsXG4gICAgICB0ZXh0OiAndGltZWxpbmUnLFxuICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWxpc3QtdGltZWxpbmUnLFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgeyBrZXk6ICd0aW1lbGluZS1kYXknLCB0ZXh0OiAnZGFpbHktdGltZWxpbmUnLCBpY29uOiAnZmEtbGlnaHQgZmEtY2FsZW5kYXItZGF5JyB9LFxuICAgICAgICB7IGtleTogJ3RpbWVsaW5lLW11bHRpLWRheScsIHRleHQ6ICdtdWx0aS1kYXktdGltZWxpbmUnLCBpY29uOiAnZmEtbGlnaHQgZmEtY2FsZW5kYXItd2VlaycgfSxcbiAgICAgICAgeyBrZXk6ICd0aW1lbGluZS1tb250aCcsIHRleHQ6ICdtb250aGx5LXRpbWVsaW5lJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNhbGVuZGFyLWFsdCcgfSxcbiAgICAgICAgeyBrZXk6ICd0aW1lbGluZS15ZWFyJywgdGV4dDogJ3llYXJseS10aW1lbGluZScsIGljb246ICdmYS1saWdodCBmYS1jYWxlbmRhci1yYW5nZScgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd0YWJsZScsXG4gICAgICB0ZXh0OiAndGFibGUnLFxuICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXRhYmxlJyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHsga2V5OiAnZ3JpZCcsIHRleHQ6ICdncmlkJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLXRhYmxlJyB9LFxuICAgICAgICB7IGtleTogJ3N0YXR1cy1ncm91cGVkLWdyaWQnLCB0ZXh0OiAnc3RhdHVzLWdyb3VwZWQtZ3JpZCcsIGljb246ICdmYS1saWdodCBmYS10YWJsZScgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7IGtleTogJ2thbmJhbicsIHRleHQ6ICdrYW5iYW4nLCBpY29uOiAnZmEtbGlnaHQgZmEtY2hhcnQta2FuYmFuJyB9LFxuICBdKTtcblxuICBwcm90ZWN0ZWQgY2FsZW5kYXJUeXBlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0pO1xuICBwcm90ZWN0ZWQgdG9kYXlCdXR0b25UZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAodGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSkge1xuICAgICAgY2FzZSAnZGF5JzpcbiAgICAgIGNhc2UgJ2dyaWQnOlxuICAgICAgY2FzZSAnYWdlbmRhJzpcbiAgICAgIGNhc2UgJ2thbmJhbic6XG4gICAgICBjYXNlICd0aW1lbGluZS1kYXknOlxuICAgICAgY2FzZSAndGltZWxpbmUteWVhcic6XG4gICAgICBjYXNlICd0aW1lbGluZS1tdWx0aS1kYXknOlxuICAgICAgY2FzZSAnc3RhdHVzLWdyb3VwZWQtZ3JpZCc6XG4gICAgICAgIHJldHVybiAnVG9kYXknO1xuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHJldHVybiAnQ3VycmVudCB3ZWVrJztcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgIGNhc2UgJ3RpbWVsaW5lLW1vbnRoJzpcbiAgICAgICAgcmV0dXJuICdDdXJyZW50IG1vbnRoJztcbiAgICAgIGNhc2UgJ3RpbWVsaW5lLXllYXInOlxuICAgICAgICByZXR1cm4gJ0N1cnJlbnQgeWVhcic7XG4gICAgfVxuICB9KTtcbiAgcHJvdGVjdGVkIHRpbWVUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCkgPT09ICdncmlkJyB8fFxuICAgICAgdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSA9PT0gJ2thbmJhbicgfHxcbiAgICAgIHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCkgPT09ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJ1xuICAgICkge1xuICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUoXG4gICAgICAgIHRoaXMudm0uY3VycmVudERhdGUoKSxcbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0sXG4gICAgICApO1xuICAgICAgY29uc3QgZW5kID0gc3RhcnQuYWRkKCdkYXknLCB0aGlzLnZtLmRheXNDb3VudCgpIC0gMSk7XG4gICAgICBjb25zdCBzdGFydFRleHQgPSBzdGFydC5mb3JtYXQoJ0REIE1NTU0geXl5eScsIHsgbG9jYWxlOiB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSB9KTtcbiAgICAgIGNvbnN0IGVuZFRleHQgPSBlbmQuZm9ybWF0KCdERCBNTU1NIHl5eXknLCB7IGxvY2FsZTogdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0gfSk7XG4gICAgICByZXR1cm4gYCR7c3RhcnRUZXh0fSAtICR7ZW5kVGV4dH1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXJDb21wb25lbnQoKT8uY3VycmVudERhdGVUZXh0KCk7XG4gIH0pO1xuICBwcm90ZWN0ZWQgY2FsZW5kYXJEZXB0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpID09PSAnZ3JpZCcgfHxcbiAgICAgIHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCkgPT09ICdrYW5iYW4nIHx8XG4gICAgICB0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpID09PSAnc3RhdHVzLWdyb3VwZWQtZ3JpZCdcbiAgICApIHtcbiAgICAgIHJldHVybiAnZGF5JztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyQ29tcG9uZW50KCk/LmNhbGVuZGFyRGVwdGgoKTtcbiAgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFZpZXdNb2RlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRNb2RlID0gdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKTtcbiAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIHRoaXMubWVudUl0ZW1zKCkpIHtcbiAgICAgIGlmIChjYXRlZ29yeS5rZXkgPT09IGN1cnJlbnRNb2RlKSB7XG4gICAgICAgIHJldHVybiB7IGtleTogY2F0ZWdvcnkua2V5IGFzIEFYUFRhc2tCb2FyZFZpZXdNb2RlLCB0ZXh0OiBjYXRlZ29yeS50ZXh0LCBpY29uOiBjYXRlZ29yeS5pY29uIH07XG4gICAgICB9XG4gICAgICBpZiAoY2F0ZWdvcnkuY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgZm91bmRDaGlsZCA9IGNhdGVnb3J5LmNoaWxkcmVuLmZpbmQoKGNoaWxkKSA9PiBjaGlsZC5rZXkgPT09IGN1cnJlbnRNb2RlKTtcbiAgICAgICAgaWYgKGZvdW5kQ2hpbGQpIHtcbiAgICAgICAgICByZXR1cm4gZm91bmRDaGlsZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBmaXJzdENhdGVnb3J5ID0gdGhpcy5tZW51SXRlbXMoKVswXTtcbiAgICByZXR1cm4gZmlyc3RDYXRlZ29yeS5jaGlsZHJlblxuICAgICAgPyBmaXJzdENhdGVnb3J5LmNoaWxkcmVuWzBdXG4gICAgICA6IHsga2V5OiBmaXJzdENhdGVnb3J5LmtleSBhcyBBWFBUYXNrQm9hcmRWaWV3TW9kZSwgdGV4dDogZmlyc3RDYXRlZ29yeS50ZXh0LCBpY29uOiBmaXJzdENhdGVnb3J5Lmljb24gfTtcbiAgfSk7XG4gIHByb3RlY3RlZCBmaWx0ZXIgPSBjb21wdXRlZDxBWFBUYXNrRmlsdGVyPigoKSA9PiB7XG4gICAgY29uc3QgdGFza1R5cGVOYW1lcyA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrVHlwZU5hbWVzKCk7XG4gICAgY29uc3QgdHlwZXMgPSB0YXNrVHlwZU5hbWVzLmxlbmd0aCA+IDAgPyB0YXNrVHlwZU5hbWVzIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGFzc2lnbmVlSWRzID0gdGhpcy52bS5zZWxlY3RlZEFzc2lnbmVlSWRzKCk7XG4gICAgY29uc3QgcmVwb3J0ZXJJZHMgPSB0aGlzLnZtLnNlbGVjdGVkUmVwb3J0ZXJJZHMoKTtcbiAgICBjb25zdCBwcmlvcml0aWVzID0gdGhpcy52bS5zZWxlY3RlZFByaW9yaXRpZXMoKTtcblxuICAgIGxldCBmcm9tOiBBWERhdGVUaW1lID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKFxuICAgICAgdGhpcy52bS5jdXJyZW50RGF0ZSgpLFxuICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0sXG4gICAgKTtcbiAgICBsZXQgZW5kOiBBWERhdGVUaW1lO1xuXG4gICAgY29uc3QgY3VycmVudFZpZXcgPSB0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpO1xuXG4gICAgaWYgKFxuICAgICAgY3VycmVudFZpZXcgPT09ICdncmlkJyB8fFxuICAgICAgY3VycmVudFZpZXcgPT09ICdrYW5iYW4nIHx8XG4gICAgICBjdXJyZW50VmlldyA9PT0gJ2FnZW5kYScgfHxcbiAgICAgIGN1cnJlbnRWaWV3ID09PSAndGltZWxpbmUtbXVsdGktZGF5JyB8fFxuICAgICAgY3VycmVudFZpZXcgPT09ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJ1xuICAgICkge1xuICAgICAgZW5kID0gZnJvbS5hZGQoJ2RheScsIHRoaXMudm0uZGF5c0NvdW50KCkgLSAxKTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRWaWV3ID09PSAnbW9udGgnIHx8IGN1cnJlbnRWaWV3ID09PSAndGltZWxpbmUtbW9udGgnKSB7XG4gICAgICBmcm9tID0gZnJvbS5zdGFydE9mKCdtb250aCcpO1xuICAgICAgZW5kID0gZnJvbS5lbmRPZignbW9udGgnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5kID0gZnJvbS5lbmRPZignZGF5Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLih0eXBlcyAmJiB7IHR5cGVzIH0pLFxuICAgICAgLi4uKGFzc2lnbmVlSWRzLmxlbmd0aCA+IDAgJiYgeyBhc3NpZ25lZUlkcyB9KSxcbiAgICAgIC4uLihyZXBvcnRlcklkcy5sZW5ndGggPiAwICYmIHsgcmVwb3J0ZXJJZHMgfSksXG4gICAgICAuLi4ocHJpb3JpdGllcy5sZW5ndGggPiAwICYmIHsgcHJpb3JpdGllcyB9KSxcbiAgICAgIHJhbmdlOiB7IGZyb206IGZyb20uZGF0ZSwgZW5kOiBlbmQuZGF0ZSB9LFxuICAgIH07XG4gIH0pO1xuXG4gIHByaXZhdGUgY29udGV4dE1lbnUgPSB2aWV3Q2hpbGQ8QVhDb250ZXh0TWVudUNvbXBvbmVudD4oJ3Jvb3RDb250ZXh0TWVudScpO1xuXG4gIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGF3YWl0IHN1cGVyLm5nT25Jbml0KCk7XG4gICAgYXdhaXQgdGhpcy52bS5pbml0aWFsaXplKCk7XG5cbiAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLnRha2VVbnRpbERlc3Ryb3ksXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRGcm9tUm91dGUoKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzUmVhZHkoKSkge1xuICAgICAgICAgIHRoaXMuaXNSZWFkeS5zZXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy50YXNrQm9hcmRTZXJ2aWNlLnJlZnJlc2gkLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnRhc2tSZXNvbHZlSGFuZGxlcigpO1xuICAgICAgYXdhaXQgdGhpcy5nZXRSZXNvdXJjZXMoKTtcbiAgICB9KTtcbiAgfVxuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlVGl0bGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAdGFzay1tYW5hZ2VtZW50OnRhc2stYm9hcmQucGFnZS10aXRsZScpO1xuICB9XG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VCcmVhZGNydW1icygpOiBQcm9taXNlPEFYUEJyZWFkY3J1bWJJdGVtW10+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAdGFzay1tYW5hZ2VtZW50OnJvb3QtbWVudScpLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNjaGVkdWxlckRhdGFTb3VyY2UgPSAoZmlsdGVyPzogQVhQVGFza0ZpbHRlcik6IFByb21pc2U8QVhQVGFza1tdPiA9PiB7XG4gICAgY29uc3QgZmluYWxGaWx0ZXI6IEFYUFRhc2tGaWx0ZXIgPSB7IC4uLnRoaXMuZmlsdGVyKCksIC4uLmZpbHRlciB9O1xuXG4gICAgcmV0dXJuIHRoaXMudGFza0JvYXJkU2VydmljZS5nZXRUYXNrcyhmaW5hbEZpbHRlcikudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLnZhbGlkYXRlU2VsZWN0ZWRUYXNrKHJlc3VsdC5pdGVtcyk7XG4gICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zO1xuICAgIH0pO1xuICB9O1xuXG4gIHByb3RlY3RlZCBncmlkRGF0YVNvdXJjZSA9IChmaWx0ZXI/OiBBWFBUYXNrRmlsdGVyKTogUHJvbWlzZTx7IGl0ZW1zOiBBWFBUYXNrW107IHRvdGFsOiBudW1iZXIgfT4gPT4ge1xuICAgIGNvbnN0IGZpbmFsRmlsdGVyOiBBWFBUYXNrRmlsdGVyID0geyAuLi50aGlzLmZpbHRlcigpLCAuLi5maWx0ZXIgfTtcblxuICAgIHJldHVybiB0aGlzLnRhc2tCb2FyZFNlcnZpY2UuZ2V0VGFza3MoZmluYWxGaWx0ZXIpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy52YWxpZGF0ZVNlbGVjdGVkVGFzayhyZXN1bHQuaXRlbXMpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgfTtcblxuICByZXNvbHZlZFRhc2tzID0gc2lnbmFsPEFYUFRhc2tbXT4oW10pO1xuICBlZmYgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdNb2RlID0gdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKTtcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmZpbHRlcigpO1xuICAgIGlmICh2aWV3TW9kZSA9PT0gJ2thbmJhbicpIHtcbiAgICAgIGF3YWl0IHRoaXMudGFza1Jlc29sdmVIYW5kbGVyKGZpbHRlcik7XG4gICAgfVxuICB9KTtcblxuICBwcml2YXRlIGFzeW5jIHRhc2tSZXNvbHZlSGFuZGxlcihmaWx0ZXI6IEFYUFRhc2tGaWx0ZXIgPSB0aGlzLmZpbHRlcigpKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy50YXNrQm9hcmRTZXJ2aWNlLmdldFRhc2tzKGZpbHRlcik7XG4gICAgdGhpcy52YWxpZGF0ZVNlbGVjdGVkVGFzayhyZXN1bHQuaXRlbXMpO1xuICAgIHRoaXMucmVzb2x2ZWRUYXNrcy5zZXQocmVzdWx0Lml0ZW1zKTtcbiAgfVxuXG4gIHNjaGVkdWxlckNvbXBvbmVudENoYW5nZWQoY29tcG9uZW50OiBBWFNjaGVkdWxlckNvbXBvbmVudCkge1xuICAgIHRoaXMuc2NoZWR1bGVyQ29tcG9uZW50LnNldChjb21wb25lbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNvbnRleHRNZW51T25PcGVuaW5nKGV2ZW50OiBBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50KSB7XG4gICAgY29uc3QgY3VycmVudFRhc2sgPSB0aGlzLmN1cnJlbnRUYXNrKCk7XG4gICAgaWYgKCFjdXJyZW50VGFzaykgcmV0dXJuO1xuICAgIGNvbnN0IHByb3ZpZGVyTmFtZSA9IGN1cnJlbnRUYXNrLnByb3ZpZGVyO1xuICAgIGlmICghcHJvdmlkZXJOYW1lKSByZXR1cm47XG4gICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnRhc2tCb2FyZFNlcnZpY2UuZ2V0UHJvdmlkZXIocHJvdmlkZXJOYW1lKTtcbiAgICBpZiAoIXByb3ZpZGVyKSByZXR1cm47XG4gICAgY29uc3QgYWN0aW9ucyA9IGF3YWl0IHByb3ZpZGVyLmdldEFjdGlvbnMoY3VycmVudFRhc2spO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBhY3Rpb25zKSB7XG4gICAgICBldmVudC5pdGVtcy5wdXNoKHtcbiAgICAgICAgdGV4dDogaXRlbS50aXRsZSxcbiAgICAgICAgaWNvbjogaXRlbS5pY29uLFxuICAgICAgICBjb2xvcjogaXRlbS5jb2xvciBhcyBBWFN0eWxlQ29sb3JUeXBlLFxuICAgICAgICBicmVhazogaXRlbS5icmVhayxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNvbW1hbmQ6IGl0ZW0uY29tbWFuZCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDb250ZXh0TWVudShldmVudDogQVhQVGFza0FjdGlvbikge1xuICAgIHRoaXMuY3VycmVudFRhc2suc2V0KGV2ZW50LnRhc2spO1xuICAgIGNvbnN0IHggPSBldmVudC5uYXRpdmVFdmVudC5jbGllbnRYO1xuICAgIGNvbnN0IHkgPSBldmVudC5uYXRpdmVFdmVudC5jbGllbnRZO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC5uYXRpdmVFdmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5jb250ZXh0TWVudSgpPy5zaG93QXQoeyB4LCB5IH0sIGVsZW1lbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU1vbnRoU2xvdERibENsaWNrZWQoZGF0ZTogRGF0ZSkge1xuICAgIHRoaXMudm0uc2V0Q3VycmVudERhdGUoZGF0ZSk7XG4gICAgdGhpcy52bS5zZXRWaWV3TW9kZSgnZGF5Jyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlVmlld0NoYW5nZSh2aWV3OiBhbnksIGRyb3Bkb3duUGFuZWw6IEFYRHJvcGRvd25QYW5lbENvbXBvbmVudCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IHF1ZXJ5UGFyYW1zOiB7IHZpZXcgfSB9KTtcbiAgICB0aGlzLnZtLnNldFZpZXdNb2RlKHZpZXcpO1xuICAgIHRoaXMucG9wb3ZlcigpPy5jbG9zZSgpO1xuICAgIGRyb3Bkb3duUGFuZWwuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaEVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgdGhpcy52bS5zZWxlY3RlZFRhc2tUeXBlTmFtZXMoKTtcbiAgICB0aGlzLmdldFJlc291cmNlcygpO1xuICAgIHRoaXMuc2NoZWR1bGVyQ29tcG9uZW50KCk/LnJlZnJlc2goKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbnRleHRNZW51SXRlbUNsaWNrKGV2ZW50OiBBWENvbnRleHRNZW51SXRlbXNDbGlja0V2ZW50KSB7XG4gICAgdGhpcy50YXNrQm9hcmRTZXJ2aWNlLmV4ZWN1dGVDb21tYW5kKGV2ZW50Lml0ZW0uZGF0YT8uY29tbWFuZCwgdGhpcy5jdXJyZW50VGFzaygpPy5wcm92aWRlciA/PyAnJyk7XG4gIH1cblxuICBjaGFuZ2VEYXRlKGZvcndhcmQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHRoaXMudm0uY3VycmVudERhdGUoKSwgdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0pO1xuICAgIHN3aXRjaCAodGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSkge1xuICAgICAgY2FzZSAnZGF5JzpcbiAgICAgIGNhc2UgJ3RpbWVsaW5lLWRheSc6XG4gICAgICAgIHRoaXMudm0uc2V0Q3VycmVudERhdGUoZGF0ZS5hZGQoJ2RheScsIGZvcndhcmQgPyAxIDogLTEpLmRhdGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHRoaXMudm0uc2V0Q3VycmVudERhdGUoZGF0ZS5hZGQoJ3dlZWsnLCBmb3J3YXJkID8gMSA6IC0xKS5kYXRlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2dyaWQnOlxuICAgICAgY2FzZSAnYWdlbmRhJzpcbiAgICAgIGNhc2UgJ2thbmJhbic6XG4gICAgICBjYXNlICd0aW1lbGluZS1tdWx0aS1kYXknOlxuICAgICAgY2FzZSAnc3RhdHVzLWdyb3VwZWQtZ3JpZCc6XG4gICAgICAgIHRoaXMudm0uc2V0Q3VycmVudERhdGUoZGF0ZS5hZGQoJ2RheScsIGZvcndhcmQgPyB0aGlzLnZtLmRheXNDb3VudCgpIDogLXRoaXMudm0uZGF5c0NvdW50KCkpLmRhdGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgY2FzZSAndGltZWxpbmUtbW9udGgnOlxuICAgICAgICB0aGlzLnZtLnNldEN1cnJlbnREYXRlKGRhdGUuYWRkKCdtb250aCcsIGZvcndhcmQgPyAxIDogLTEpLmRhdGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndGltZWxpbmUteWVhcic6XG4gICAgICAgIHRoaXMudm0uc2V0Q3VycmVudERhdGUoZGF0ZS5hZGQoJ3llYXInLCBmb3J3YXJkID8gMSA6IC0xKS5kYXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMucG9wb3ZlcigpPy5jbG9zZSgpO1xuICAgIHRoaXMuY2FsZW5kYXIoKT8ucmVuZGVyKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHJhbmdlQmFzZWRWaWV3czogQVhQVGFza0JvYXJkVmlld01vZGVbXSA9IFtcbiAgICAnZ3JpZCcsXG4gICAgJ2thbmJhbicsXG4gICAgJ2FnZW5kYScsXG4gICAgJ3N0YXR1cy1ncm91cGVkLWdyaWQnLFxuICAgICd0aW1lbGluZS1tdWx0aS1kYXknLFxuICBdO1xuXG4gIHByb3RlY3RlZCBoYW5kbGVDYWxlbmRhclNsb3RDbGljayhldmVudDogQVhDYWxlbmRhclNsb3RDbGljaykge1xuICAgIGlmIChldmVudC5jb21wb25lbnQuYWN0aXZlVmlldyAhPT0gZXZlbnQuY29tcG9uZW50LmRlcHRoKSByZXR1cm47XG5cbiAgICBjb25zdCBjbGlja2VkRGF0ZTogRGF0ZSA9IGV2ZW50Lml0ZW07XG4gICAgY29uc3QgY3VycmVudFZpZXcgPSB0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpO1xuXG4gICAgaWYgKHRoaXMucmFuZ2VCYXNlZFZpZXdzLmluY2x1ZGVzKGN1cnJlbnRWaWV3KSkge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnREYXRlID0gdGhpcy52bS5yYW5nZVN0YXJ0RGF0ZSgpO1xuXG4gICAgICBpZiAoIXNlbGVjdGlvblN0YXJ0RGF0ZSkge1xuICAgICAgICB0aGlzLnZtLnNldFJhbmdlU3RhcnREYXRlKGNsaWNrZWREYXRlKTtcbiAgICAgICAgdGhpcy5jYWxlbmRhcigpPy5yZW5kZXIoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRlMSA9IHNlbGVjdGlvblN0YXJ0RGF0ZS5nZXRUaW1lKCk7XG4gICAgICBjb25zdCBkYXRlMiA9IGNsaWNrZWREYXRlLmdldFRpbWUoKTtcbiAgICAgIGNvbnN0IG5ld1N0YXJ0RGF0ZSA9IG5ldyBEYXRlKE1hdGgubWluKGRhdGUxLCBkYXRlMikpO1xuICAgICAgY29uc3QgbmV3RW5kRGF0ZSA9IG5ldyBEYXRlKE1hdGgubWF4KGRhdGUxLCBkYXRlMikpO1xuXG4gICAgICBjb25zdCBkaWZmZXJlbmNlSW5EYXlzID0gdGhpcy5jYWxjdWxhdGVEaWZmZXJlbmNlSW5EYXlzKG5ld1N0YXJ0RGF0ZSwgbmV3RW5kRGF0ZSk7XG5cbiAgICAgIHRoaXMudm0uc2V0Q3VycmVudERhdGUobmV3U3RhcnREYXRlKTtcbiAgICAgIHRoaXMudm0uc2V0RGF5c0NvdW50KGRpZmZlcmVuY2VJbkRheXMpO1xuICAgICAgdGhpcy52bS5zZXRSYW5nZVN0YXJ0RGF0ZShudWxsKTtcblxuICAgICAgdGhpcy5jYWxlbmRhcigpPy5yZW5kZXIoKTtcbiAgICAgIHRoaXMucG9wb3ZlcigpPy5jbG9zZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBkYXRlVG9TZXQgPSBuZXcgRGF0ZShjbGlja2VkRGF0ZSk7XG5cbiAgICBpZiAoY3VycmVudFZpZXcgPT09ICd3ZWVrJykge1xuICAgICAgY29uc3QgZGF5ID0gZGF0ZVRvU2V0LmdldERheSgpO1xuICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci53ZWVrLnN0YXJ0c09uO1xuICAgICAgbGV0IGRheXNUb1N1YnRyYWN0ID0gZGF5IC0gd2Vla1N0YXJ0O1xuICAgICAgaWYgKGRheXNUb1N1YnRyYWN0IDwgMCkge1xuICAgICAgICBkYXlzVG9TdWJ0cmFjdCArPSA3O1xuICAgICAgfVxuICAgICAgZGF0ZVRvU2V0LnNldERhdGUoZGF0ZVRvU2V0LmdldERhdGUoKSAtIGRheXNUb1N1YnRyYWN0KTtcbiAgICB9XG5cbiAgICB0aGlzLnZtLnNldEN1cnJlbnREYXRlKGRhdGVUb1NldCk7XG4gICAgdGhpcy5wb3BvdmVyKCk/LmNsb3NlKCk7XG4gICAgdGhpcy5jYWxlbmRhcigpPy5yZW5kZXIoKTtcbiAgfVxuXG4gIGdldENlbGxDbGFzcyA9IChkYXRlOiBBWERhdGVUaW1lKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgY3VycmVudFZpZXcgPSB0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpO1xuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0RGF0ZSA9IHRoaXMudm0ucmFuZ2VTdGFydERhdGUoKTtcblxuICAgIGlmICh0aGlzLnJhbmdlQmFzZWRWaWV3cy5pbmNsdWRlcyhjdXJyZW50VmlldykpIHtcbiAgICAgIGlmIChzZWxlY3Rpb25TdGFydERhdGUpIHtcbiAgICAgICAgY29uc3QgYXhTZWxlY3Rpb25TdGFydERhdGUgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUoc2VsZWN0aW9uU3RhcnREYXRlKTtcbiAgICAgICAgaWYgKGRhdGUuZXF1YWwoYXhTZWxlY3Rpb25TdGFydERhdGUsICdkYXknKSkge1xuICAgICAgICAgIHJldHVybiAnYXgtcmFuZ2Utc3RhcnQgYXgtcmFuZ2UtZW5kJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZnJvbVJhbmdlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHRoaXMudm0uY3VycmVudERhdGUoKSk7XG4gICAgICBjb25zdCBlbmRSYW5nZSA9IGZyb21SYW5nZS5hZGQoJ2RheScsIHRoaXMudm0uZGF5c0NvdW50KCkgLSAxKTtcblxuICAgICAgY29uc3QgaXNTdGFydCA9IGRhdGUuZXF1YWwoZnJvbVJhbmdlLCAnZGF5Jyk7XG4gICAgICBjb25zdCBpc0VuZCA9IGRhdGUuZXF1YWwoZW5kUmFuZ2UsICdkYXknKTtcblxuICAgICAgaWYgKGlzU3RhcnQgJiYgaXNFbmQpIHJldHVybiAnYXgtcmFuZ2Utc3RhcnQgYXgtcmFuZ2UtZW5kJztcbiAgICAgIGlmIChpc1N0YXJ0KSByZXR1cm4gJ2F4LXJhbmdlLXN0YXJ0JztcbiAgICAgIGlmIChpc0VuZCkgcmV0dXJuICdheC1yYW5nZS1lbmQnO1xuICAgICAgaWYgKGRhdGUuY29tcGFyZShmcm9tUmFuZ2UsICdkYXknKSA+IDAgJiYgZGF0ZS5jb21wYXJlKGVuZFJhbmdlLCAnZGF5JykgPCAwKSB7XG4gICAgICAgIHJldHVybiAnYXgtcmFuZ2UtYmV0d2Vlbic7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50VmlldyA9PT0gJ3dlZWsnKSB7XG4gICAgICBjb25zdCBmcm9tID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHRoaXMudm0uY3VycmVudERhdGUoKSk7XG4gICAgICBjb25zdCBlbmQgPSBmcm9tLmFkZCgnZGF5JywgNik7XG5cbiAgICAgIGlmIChkYXRlLmVxdWFsKGZyb20sICdkYXknKSkgcmV0dXJuICdheC1yYW5nZS1zdGFydCc7XG4gICAgICBpZiAoZGF0ZS5lcXVhbChlbmQsICdkYXknKSkgcmV0dXJuICdheC1yYW5nZS1lbmQnO1xuICAgICAgaWYgKGRhdGUuY29tcGFyZShmcm9tLCAnZGF5JykgPiAwICYmIGRhdGUuY29tcGFyZShlbmQsICdkYXknKSA8IDApIHtcbiAgICAgICAgcmV0dXJuICdheC1yYW5nZS1iZXR3ZWVuJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgZGlmZmVyZW5jZSBpbiB3aG9sZSBkYXlzIGJldHdlZW4gdHdvIGRhdGVzLlxuICAgKiBUaGUgcmVzdWx0IGlzIGluY2x1c2l2ZSAoZS5nLiwgTWF5IDUgdG8gTWF5IDYgaXMgYSAyLWRheSByYW5nZSkuXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZURpZmZlcmVuY2VJbkRheXMoc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSk6IG51bWJlciB7XG4gICAgaWYgKCFzdGFydCB8fCAhZW5kKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoc3RhcnQuZ2V0RnVsbFllYXIoKSwgc3RhcnQuZ2V0TW9udGgoKSwgc3RhcnQuZ2V0RGF0ZSgpKTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoZW5kLmdldEZ1bGxZZWFyKCksIGVuZC5nZXRNb250aCgpLCBlbmQuZ2V0RGF0ZSgpKTtcblxuICAgIGNvbnN0IHRpbWVEaWZmZXJlbmNlID0gZW5kRGF0ZS5nZXRUaW1lKCkgLSBzdGFydERhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRheXNEaWZmZXJlbmNlID0gTWF0aC5yb3VuZCh0aW1lRGlmZmVyZW5jZSAvICgxMDAwICogMzYwMCAqIDI0KSk7XG5cbiAgICByZXR1cm4gZGF5c0RpZmZlcmVuY2UgKyAxO1xuICB9XG5cbiAgaGFuZGxlVG9kYXlDbGljaygpIHtcbiAgICB0aGlzLnZtLnNldFJhbmdlU3RhcnREYXRlKG51bGwpO1xuICAgIGxldCBjdXJyZW50RGF0ZTogRGF0ZTtcbiAgICBpZiAodGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSA9PT0gJ3dlZWsnKSB7XG4gICAgICBjdXJyZW50RGF0ZSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlXG4gICAgICAgIC5jcmVhdGUobmV3IERhdGUoKSwgdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0pXG4gICAgICAgIC5zdGFydE9mKCd3ZWVrJykuZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLnZtLnNldEN1cnJlbnREYXRlKGN1cnJlbnREYXRlKTtcbiAgICB0aGlzLnBvcG92ZXIoKT8uY2xvc2UoKTtcbiAgICB0aGlzLmNhbGVuZGFyKCk/LnJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRnJvbVJvdXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNuYXBzaG90ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwO1xuICAgIGNvbnN0IHZpZXcgPSAoc25hcHNob3QuZ2V0KCd2aWV3JykgYXMgQVhQVGFza0JvYXJkVmlld01vZGUpID8/IG51bGw7XG4gICAgY29uc3QgYWxsVmFsaWRWaWV3cyA9IHRoaXMubWVudUl0ZW1zKCkuZmxhdE1hcCgoYykgPT4gKGMuY2hpbGRyZW4gPyBjLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IGNoaWxkLmtleSkgOiBjLmtleSkpO1xuXG4gICAgaWYgKHZpZXcgJiYgYWxsVmFsaWRWaWV3cy5pbmNsdWRlcyh2aWV3KSkge1xuICAgICAgdGhpcy52bS5zZXRWaWV3TW9kZSh2aWV3KTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpKSB7XG4gICAgICB0aGlzLnZtLnNldFZpZXdNb2RlKCdkYXknKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlID0gc25hcHNob3QuZ2V0QWxsKCd0eXBlJykgYXMgc3RyaW5nW107XG4gICAgY29uc3QgYXNzaWduZWUgPSBzbmFwc2hvdC5nZXRBbGwoJ2Fzc2lnbmVlJykgYXMgc3RyaW5nW107XG4gICAgY29uc3QgcmVwb3J0ZXIgPSBzbmFwc2hvdC5nZXRBbGwoJ3JlcG9ydGVyJykgYXMgc3RyaW5nW107XG4gICAgY29uc3QgcHJpb3JpdHkgPSBzbmFwc2hvdC5nZXRBbGwoJ3ByaW9yaXR5JykgYXMgQVhQUHJpb3JpdHlGaWx0ZXJLZXlbXTtcbiAgICBpZiAodHlwZS5sZW5ndGggfHwgYXNzaWduZWUubGVuZ3RoIHx8IHByaW9yaXR5Lmxlbmd0aCB8fCByZXBvcnRlci5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaXNRdWVyeVBhcmFtLnNldCh0cnVlKTtcbiAgICAgIHRoaXMudm0uc2V0U2VsZWN0ZWRUYXNrVHlwZU5hbWVzKHR5cGUsIHRydWUpO1xuICAgICAgdGhpcy52bS5zZXRTZWxlY3RlZEFzc2lnbmVlSWRzKGFzc2lnbmVlLCB0cnVlKTtcbiAgICAgIHRoaXMudm0uc2V0U2VsZWN0ZWRSZXBvcnRlcklkcyhyZXBvcnRlciwgdHJ1ZSk7XG4gICAgICB0aGlzLnZtLnNldFNlbGVjdGVkUHJpb3JpdGllcyhwcmlvcml0eSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZVJhbmdlID0gc25hcHNob3QuZ2V0KCdkYXRlUmFuZ2UnKSBhcyBzdHJpbmc7XG4gICAgaWYgKGRhdGVSYW5nZSkge1xuICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnRhc2tCb2FyZFNlcnZpY2UucmFuZ2VDYWxjdWxhdG9yKGRhdGVSYW5nZSk7XG4gICAgICBpZiAocmFuZ2UpIHtcbiAgICAgICAgdGhpcy52bS5zZXRDdXJyZW50RGF0ZShyYW5nZS5mcm9tKTtcbiAgICAgICAgdGhpcy52bS5zZXREYXlzQ291bnQodGhpcy5jYWxjdWxhdGVEaWZmZXJlbmNlSW5EYXlzKHJhbmdlLmZyb20sIHJhbmdlLmVuZCkpO1xuICAgICAgICBzd2l0Y2ggKGRhdGVSYW5nZSkge1xuICAgICAgICAgIGNhc2UgJ3RvZGF5JzpcbiAgICAgICAgICAgIHRoaXMudm0uc2V0Vmlld01vZGUoJ2RheScpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGhpcy13ZWVrJzpcbiAgICAgICAgICAgIHRoaXMudm0uc2V0Vmlld01vZGUoJ3dlZWsnKTtcbiAgICAgICAgICAgIHRoaXMudm0uc2V0UmFuZ2VTdGFydERhdGUocmFuZ2UuZnJvbSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd0aGlzLW1vbnRoJzpcbiAgICAgICAgICAgIHRoaXMudm0uc2V0Vmlld01vZGUoJ21vbnRoJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0YXNrIGlzIHN0aWxsIHByZXNlbnQgaW4gdGhlIGxpc3Qgb2YgdmlzaWJsZSB0YXNrcy5cbiAgICogSWYgbm90LCBpdCBjbGVhcnMgdGhlIHNlbGVjdGlvbiB0byBwcmV2ZW50IHNob3dpbmcgZGV0YWlscyBmb3IgYSBoaWRkZW4gdGFzay5cbiAgICogQHBhcmFtIHZpc2libGVUYXNrcyBUaGUgbmV3IGFycmF5IG9mIHRhc2tzIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlU2VsZWN0ZWRUYXNrKHZpc2libGVUYXNrczogQVhQVGFza1tdKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGVkVGFzayA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrKCk7XG4gICAgLy8gUHJvY2VlZCBvbmx5IGlmIGEgdGFzayBpcyBhY3R1YWxseSBzZWxlY3RlZFxuICAgIGlmIChjdXJyZW50U2VsZWN0ZWRUYXNrKSB7XG4gICAgICAvLyBDaGVjayBpZiBhbnkgdGFzayBpbiB0aGUgbmV3IGxpc3QgaGFzIHRoZSBzYW1lIElEIGFzIHRoZSBzZWxlY3RlZCBvbmVcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWRUYXNrVmlzaWJsZSA9IHZpc2libGVUYXNrcy5zb21lKCh0YXNrKSA9PiB0YXNrLmlkID09PSBjdXJyZW50U2VsZWN0ZWRUYXNrLmlkKTtcblxuICAgICAgLy8gSWYgdGhlIHNlbGVjdGVkIHRhc2sgaXMgTk9UIGluIHRoZSBuZXcgbGlzdCwgY2xlYXIgdGhlIHNlbGVjdGlvbi5cbiAgICAgIGlmICghaXNTZWxlY3RlZFRhc2tWaXNpYmxlKSB7XG4gICAgICAgIHRoaXMudm0uc2VsZWN0VGFzayhudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0UmVzb3VyY2VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnZtLnNlbGVjdGVkVGFza1R5cGVOYW1lcygpLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhpcy5yZXNvdXJjZXMuc2V0KFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVzb3VyY2VzID0gYXdhaXQgdGhpcy50YXNrQm9hcmRTZXJ2aWNlLmdldFJlc291cmNlcyh0aGlzLnZtLnNlbGVjdGVkVGFza1R5cGVOYW1lcygpWzBdID8/ICcnKTtcbiAgICB0aGlzLnJlc291cmNlcy5zZXQocmVzb3VyY2VzKTtcbiAgfVxufVxuIiwiPGF4cC1wYWdlLWxheW91dCAqdHJhbnNsYXRlPVwibGV0IHRcIj5cbiAgPGF4cC1wYWdlLXRvb2xiYXI+XG4gICAgPGF4cC1sYXlvdXQtcHJlZml4IGNsYXNzPVwic206YXgtZmxleC1yb3cgYXgtZmxleC1jb2wgYXgtaXRlbXMtc3RhcnRcIj5cbiAgICAgIDxheC1idXR0b24gW3RleHRdPVwiKHQoJ3Rhc2stYm9hcmQudmlldy4nICsgc2VsZWN0ZWRWaWV3TW9kZSgpLnRleHQsIHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG59KSB8IGFzeW5jKSFcIj5cbiAgICAgICAgPGF4LXByZWZpeD48YXgtaWNvbiBbaWNvbl09XCJzZWxlY3RlZFZpZXdNb2RlKCkuaWNvblwiPjwvYXgtaWNvbj48L2F4LXByZWZpeD5cbiAgICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsICNkcm9wZG93blBhbmVsPlxuICAgICAgICAgIDxheC1tZW51IFtvcmllbnRhdGlvbl09XCIndmVydGljYWwnXCIgY2xhc3M9XCJheC1tZW51LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgQGZvciAoY2F0ZWdvcnkgb2YgbWVudUl0ZW1zKCk7IHRyYWNrIGNhdGVnb3J5LmtleSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgQGlmIChjYXRlZ29yeS5jaGlsZHJlbiAmJiBjYXRlZ29yeS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxheC1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cImNhdGVnb3J5Lmljb25cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGF4LXRleHQ+e3sgKHQoJ3Rhc2stYm9hcmQuJyArIGNhdGVnb3J5LnRleHQsIHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG59KSB8IGFzeW5jKSEgfX08L2F4LXRleHQ+XG4gICAgICAgICAgICAgICAgQGZvciAoY2hpbGQgb2YgY2F0ZWdvcnkuY2hpbGRyZW47IHRyYWNrIGNoaWxkLmtleSkge1xuICAgICAgICAgICAgICAgIDxheC1tZW51LWl0ZW0gKG9uQ2xpY2spPVwiaGFuZGxlVmlld0NoYW5nZShjaGlsZC5rZXksZHJvcGRvd25QYW5lbClcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cImNoaWxkLmljb25cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDxheC10ZXh0XG4gICAgICAgICAgICAgICAgICAgID57eyAodCgndGFzay1ib2FyZC52aWV3LicgKyBjaGlsZC50ZXh0LCB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThufSkgfCBhc3luYykhIH19PC9heC10ZXh0XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9heC1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2F4LW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxheC1tZW51LWl0ZW0gKG9uQ2xpY2spPVwiaGFuZGxlVmlld0NoYW5nZShjYXRlZ29yeS5rZXksZHJvcGRvd25QYW5lbClcIj5cbiAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwiY2F0ZWdvcnkuaWNvblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8YXgtdGV4dD57eyAodCgndGFzay1ib2FyZC4nICsgY2F0ZWdvcnkudGV4dCwgeyBzY29wZTogcm9vdENvbmZpZy5jb25maWcuaTE4bn0pIHwgYXN5bmMpISB9fTwvYXgtdGV4dD5cbiAgICAgICAgICAgICAgPC9heC1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtbWVudT5cbiAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtY2FyZXQtZG93blwiPjwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgPGRpdiBjbGFzcz1cImF4LXNjaGVkdWxlci1oZWFkZXIgYXgtdy1tYXggYXgtc20gc206YXgtbWRcIj5cbiAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiAob25DbGljayk9XCJjaGFuZ2VEYXRlKGZhbHNlKVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC10ZXh0LXhsIGF4LWljb24tY2hldnJvbi1sZWZ0IGFycm93LWljb25cIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIFt0ZXh0XT1cInRpbWVUZXh0KClcIiAjZGF0ZT48L2F4LWJ1dHRvbj5cbiAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiAob25DbGljayk9XCJjaGFuZ2VEYXRlKHRydWUpXCI+XG4gICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LXRleHQteGwgYXgtaWNvbi1jaGV2cm9uLXJpZ2h0IGFycm93LWljb25cIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8YXgtcG9wb3ZlciBbdGFyZ2V0XT1cImRhdGVcIiBbcGxhY2VtZW50XT1cIidib3R0b20nXCIgI3BvcG92ZXIgW2FkYXB0aXZpdHlFbmFibGVkXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmxheS1wYW5lXCI+XG4gICAgICAgICAgICA8YXgtY2FsZW5kYXJcbiAgICAgICAgICAgICAgI2NhbGVuZGFyXG4gICAgICAgICAgICAgIFt0eXBlXT1cImNhbGVuZGFyVHlwZSgpXCJcbiAgICAgICAgICAgICAgW2RlcHRoXT1cImNhbGVuZGFyRGVwdGgoKVwiXG4gICAgICAgICAgICAgIFtjZWxsQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwidm0uY3VycmVudERhdGUoKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtc2luZ2xlLXJhbmdlLWNhbGVuZGFyXCJcbiAgICAgICAgICAgICAgKG9uU2xvdENsaWNrKT1cImhhbmRsZUNhbGVuZGFyU2xvdENsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXgtZm9vdGVyPlxuICAgICAgICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgICAgICAgIGxvb2s9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBbdGV4dF09XCJ0b2RheUJ1dHRvblRleHQoKVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVUb2RheUNsaWNrKClcIlxuICAgICAgICAgICAgICAgID48L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9heC1mb290ZXI+XG4gICAgICAgICAgICA8L2F4LWNhbGVuZGFyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2F4LXBvcG92ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4cC1sYXlvdXQtcHJlZml4PlxuXG4gICAgPGF4cC1sYXlvdXQtc3VmZml4PlxuICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJ0KCd0YXNrLWJvYXJkLmZpbHRlci50aXRsZScsIHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG4gfSkgfCBhc3luY1wiPlxuICAgICAgICA8YXgtcHJlZml4PjxheC1pY29uIGljb249XCJmYS17e3ZtLmFjdGl2ZUZpbHRlckNvdW50KCk/J3NvbGlkJzonbGlnaHQnfX0gZmEtZmlsdGVyXCI+PC9heC1pY29uPjwvYXgtcHJlZml4PlxuICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWwgI2ZpbHRlckRyb3Bkb3duUGFuZWwgKG9uT3BlbmVkKT1cImZpbHRlcnNDb21wb25lbnQucmVzZXRDb250ZXh0VG9WaWV3TW9kZWwoKVwiPlxuICAgICAgICAgIDxheG0tdGFzay1ib2FyZC1maWx0ZXJzXG4gICAgICAgICAgICAjZmlsdGVyc0NvbXBvbmVudFxuICAgICAgICAgICAgW2lzUXVlcnlQYXJhbV09XCJpc1F1ZXJ5UGFyYW0oKVwiXG4gICAgICAgICAgICAoYXBwbHlDbGlja2VkKT1cImZpbHRlckRyb3Bkb3duUGFuZWwuY2xvc2UoKVwiXG4gICAgICAgICAgPjwvYXhtLXRhc2stYm9hcmQtZmlsdGVycz5cbiAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICBAaWYobGF5b3V0U2VydmljZS5pc0xhcmdlKCkpIHtcbiAgICAgIDxheC1idXR0b24gKG9uQ2xpY2spPVwidm0udG9nZ2xlRGV0YWlsUGFuZWwoKVwiPlxuICAgICAgICA8YXgtaWNvbiBpY29uPVwie3sgdm0uaXNEZXRhaWxQYW5lbE9wZW4oKSA/ICdmYS1zb2xpZCBmYS1zcXVhcmUtaW5mbycgOiAnZmEtbGlnaHQgZmEtc3F1YXJlLWluZm8nIH19XCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgICB9XG4gICAgPC9heHAtbGF5b3V0LXN1ZmZpeD5cbiAgPC9heHAtcGFnZS10b29sYmFyPlxuICA8YXhwLXBhZ2UtY29udGVudCBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1yb3cgYXgtZ2FwLTJcIj5cbiAgICBAaWYgKGlzUmVhZHkoKSkgeyBAc3dpdGNoKHZtLmN1cnJlbnRWaWV3TW9kZSgpKSB7IEBjYXNlKCdrYW5iYW4nKSB7XG4gICAgPGF4bS10YXNrLWJvYXJkLWthbmJhbi12aWV3XG4gICAgICBjbGFzcz1cImF4cC1rYW5iYW4tY29udGFpbmVyIGF4LWgtZnVsbCBheC13LWZ1bGwgYXgtbWluLXctMFwiXG4gICAgICBbdGFza3NdPVwicmVzb2x2ZWRUYXNrcygpXCJcbiAgICAgIChvblRhc2tDbGljayk9XCJ2bS5zZWxlY3RUYXNrKCRldmVudClcIlxuICAgICAgKG9uQWN0aW9uQ2xpY2spPVwiaGFuZGxlQ29udGV4dE1lbnUoJGV2ZW50KVwiXG4gICAgPjwvYXhtLXRhc2stYm9hcmQta2FuYmFuLXZpZXc+XG4gICAgfSBAY2FzZSgnZ3JpZCcpIHtcbiAgICA8YXhtLXRhc2stYm9hcmQtZ3JpZC12aWV3XG4gICAgICBjbGFzcz1cImF4LWgtZnVsbCBheC13LWZ1bGwgYXgtbWluLXctMFwiXG4gICAgICBbZGF0YVNvdXJjZV09XCJncmlkRGF0YVNvdXJjZVwiXG4gICAgICAob25UYXNrQ2xpY2spPVwidm0uc2VsZWN0VGFzaygkZXZlbnQpXCJcbiAgICAgIChvbkFjdGlvbkNsaWNrKT1cImhhbmRsZUNvbnRleHRNZW51KCRldmVudClcIlxuICAgID48L2F4bS10YXNrLWJvYXJkLWdyaWQtdmlldz5cbiAgICB9IEBjYXNlKCdzdGF0dXMtZ3JvdXBlZC1ncmlkJykge1xuICAgIDxheG0tdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXdcbiAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC13LWZ1bGwgYXgtbWluLXctMFwiXG4gICAgICBbZGF0YVNvdXJjZV09XCJncmlkRGF0YVNvdXJjZVwiXG4gICAgICAob25BY3Rpb25DbGljayk9XCJoYW5kbGVDb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICA+PC9heG0tdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXc+XG4gICAgfSBAZGVmYXVsdCB7XG4gICAgPGF4bS10YXNrLWJvYXJkLWNhbGVuZGFyLXZpZXdcbiAgICAgIGNsYXNzPVwiYXhwLXNjaGVkdWxlci1jb250YWluZXIgYXgtaC1mdWxsIGF4LXctZnVsbCBheC1taW4tdy0wXCJcbiAgICAgIFtyZXNvdXJjZXNdPVwicmVzb3VyY2VzKClcIlxuICAgICAgW3N0YXJ0aW5nRGF0ZV09XCJ2bS5jdXJyZW50RGF0ZSgpXCJcbiAgICAgIFtkYXRhU291cmNlXT1cInNjaGVkdWxlckRhdGFTb3VyY2VcIlxuICAgICAgKG9uVGFza0NsaWNrKT1cInZtLnNlbGVjdFRhc2soJGV2ZW50KVwiXG4gICAgICBbc2VsZWN0ZWRWaWV3XT1cInZtLmN1cnJlbnRWaWV3TW9kZSgpXCJcbiAgICAgIChvbkFjdGlvbkNsaWNrKT1cImhhbmRsZUNvbnRleHRNZW51KCRldmVudClcIlxuICAgICAgKG9uVGFza1JpZ2h0Q2xpY2spPVwiaGFuZGxlQ29udGV4dE1lbnUoJGV2ZW50KVwiXG4gICAgICAoY29tcG9uZW50KT1cInNjaGVkdWxlckNvbXBvbmVudENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAob25Nb250aFNsb3REYmxDbGlja2VkKT1cImhhbmRsZU1vbnRoU2xvdERibENsaWNrZWQoJGV2ZW50KVwiXG4gICAgPjwvYXhtLXRhc2stYm9hcmQtY2FsZW5kYXItdmlldz5cbiAgICB9IH1cbiAgICA8YXgtY29udGV4dC1tZW51XG4gICAgICAjcm9vdENvbnRleHRNZW51XG4gICAgICBbY2xvc2VPbl09XCInbGVhdmUnXCJcbiAgICAgIFtvcmllbnRhdGlvbl09XCIndmVydGljYWwnXCJcbiAgICAgIChvbk9wZW5pbmcpPVwiaGFuZGxlQ29udGV4dE1lbnVPbk9wZW5pbmcoJGV2ZW50KVwiXG4gICAgICAob25JdGVtQ2xpY2spPVwiaGFuZGxlQ29udGV4dE1lbnVJdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvYXgtY29udGV4dC1tZW51PlxuICAgIEBpZiAodm0uaXNEZXRhaWxQYW5lbE9wZW4oKSAmJiBsYXlvdXRTZXJ2aWNlLmlzTGFyZ2UoKSkge1xuICAgIDxheG0tdGFzay1ib2FyZC1kZXRhaWwtcGFuZWw+PC9heG0tdGFzay1ib2FyZC1kZXRhaWwtcGFuZWw+XG4gICAgfSB9IEBlbHNlIHtcbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtdy1mdWxsIGF4LWgtZnVsbFwiPlxuICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9heHAtcGFnZS1jb250ZW50PlxuPC9heHAtcGFnZS1sYXlvdXQ+XG4iXX0="],"names":["i2","i1","i4","i8"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-modules-task-management-task-board.page-Bceu03Yj.mjs","sources":["../tmp-esm2022/task-management/lib/features/task-board/settings.keys.js","../tmp-esm2022/task-management/lib/features/task-board/task-board.viewmodel.js","../tmp-esm2022/task-management/lib/features/task-board/task-board-detail-panel/task-board-detail-panel.component.js","../tmp-esm2022/task-management/lib/features/task-board/task-board-filters/task-board-filters.component.js","../tmp-esm2022/task-management/lib/features/task-board/views/task-board-calendar-view/task-board-calendar-view.component.js","../tmp-esm2022/task-management/lib/features/task-board/views/task-board-grid-view/task-board-grid-view.component.js","../tmp-esm2022/task-management/lib/features/task-board/views/task-board-kanban-view/task-board-kanban-view.component.js","../tmp-esm2022/task-management/lib/features/task-board/views/task-board-status-grouped-grid-view/task-board-status-grouped-grid-view.component.js","../tmp-esm2022/task-management/lib/features/task-board/task-board.page.js"],"sourcesContent":["export var AXMTaskBoardSettings;\n(function (AXMTaskBoardSettings) {\n AXMTaskBoardSettings[\"ViewMode\"] = \"taskboard.viewMode\";\n AXMTaskBoardSettings[\"DetailPanel\"] = \"taskboard.DetailPanel\";\n AXMTaskBoardSettings[\"DaysCount\"] = \"taskboard.calendar.daysCount\";\n AXMTaskBoardSettings[\"CurrentDate\"] = \"taskboard.calendar.currentDate\";\n AXMTaskBoardSettings[\"SelectedPriorities\"] = \"taskboard.filter.selectedPriorities\";\n AXMTaskBoardSettings[\"SelectedAssigneeIds\"] = \"taskboard.filter.selectedAssigneeIds\";\n AXMTaskBoardSettings[\"SelectedReporterIds\"] = \"taskboard.filter.selectedReporterIds\";\n AXMTaskBoardSettings[\"SelectedTaskTypeNames\"] = \"taskboard.filter.selectedTaskTypeNames\";\n})(AXMTaskBoardSettings || (AXMTaskBoardSettings = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Mua2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy90YXNrLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy90YXNrLWJvYXJkL3NldHRpbmdzLmtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksb0JBU1g7QUFURCxXQUFZLG9CQUFvQjtJQUM5Qix1REFBK0IsQ0FBQTtJQUMvQiw2REFBcUMsQ0FBQTtJQUNyQyxrRUFBMEMsQ0FBQTtJQUMxQyxzRUFBOEMsQ0FBQTtJQUM5QyxrRkFBMEQsQ0FBQTtJQUMxRCxvRkFBNEQsQ0FBQTtJQUM1RCxvRkFBNEQsQ0FBQTtJQUM1RCx3RkFBZ0UsQ0FBQTtBQUNsRSxDQUFDLEVBVFcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQVMvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEFYTVRhc2tCb2FyZFNldHRpbmdzIHtcbiAgVmlld01vZGUgPSAndGFza2JvYXJkLnZpZXdNb2RlJyxcbiAgRGV0YWlsUGFuZWwgPSAndGFza2JvYXJkLkRldGFpbFBhbmVsJyxcbiAgRGF5c0NvdW50ID0gJ3Rhc2tib2FyZC5jYWxlbmRhci5kYXlzQ291bnQnLFxuICBDdXJyZW50RGF0ZSA9ICd0YXNrYm9hcmQuY2FsZW5kYXIuY3VycmVudERhdGUnLFxuICBTZWxlY3RlZFByaW9yaXRpZXMgPSAndGFza2JvYXJkLmZpbHRlci5zZWxlY3RlZFByaW9yaXRpZXMnLFxuICBTZWxlY3RlZEFzc2lnbmVlSWRzID0gJ3Rhc2tib2FyZC5maWx0ZXIuc2VsZWN0ZWRBc3NpZ25lZUlkcycsXG4gIFNlbGVjdGVkUmVwb3J0ZXJJZHMgPSAndGFza2JvYXJkLmZpbHRlci5zZWxlY3RlZFJlcG9ydGVySWRzJyxcbiAgU2VsZWN0ZWRUYXNrVHlwZU5hbWVzID0gJ3Rhc2tib2FyZC5maWx0ZXIuc2VsZWN0ZWRUYXNrVHlwZU5hbWVzJyxcbn1cbiJdfQ==","import { AXPSettingService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withMethods, withState } from '@ngrx/signals';\nimport { AXMTaskBoardSettings } from './settings.keys';\nimport { AXPTaskBoardService } from './task-board.service';\nexport const AXMTaskBoardViewModel = signalStore({ providedIn: 'root' }, withState(() => ({\n daysCount: 7,\n taskTypes: [],\n isLoading: true,\n detailPanel: false,\n selectedTask: null,\n rangeStartDate: null,\n currentDate: new Date(),\n currentViewMode: 'month',\n selectedTaskTypeNames: [],\n selectedAssigneeIds: [],\n selectedPriorities: [],\n selectedReporterIds: [],\n})), withComputed((store) => ({\n selectedTaskTypes: computed(() => {\n const names = store.selectedTaskTypeNames();\n if (!names || names.length === 0) {\n return [];\n }\n return store.taskTypes().filter((tt) => names.includes(tt.name));\n }),\n isTaskSelected: computed(() => store.selectedTask() !== null),\n isDetailPanelOpen: computed(() => store.detailPanel()),\n endDate: computed(() => {\n const currentDate = store.currentDate();\n const daysCount = store.daysCount();\n return new Date(currentDate.getTime() + daysCount * 24 * 60 * 60 * 1000);\n }),\n activeFilterCount: computed(() => {\n let count = 0;\n if (store.currentViewMode() !== 'kanban' &&\n store.currentViewMode() !== 'status-grouped-grid' &&\n store.selectedTaskTypeNames().length > 0) {\n count++;\n }\n if (store.selectedAssigneeIds().length > 0) {\n count++;\n }\n if (store.selectedReporterIds().length > 0) {\n count++;\n }\n if (store.selectedPriorities().length > 0) {\n count++;\n }\n return count;\n }),\n})), withMethods((store, settingService = inject(AXPSettingService), taskBoardService = inject(AXPTaskBoardService)) => {\n const userScopedSettings = () => settingService.scope(AXPPlatformScope.User);\n return {\n async initialize() {\n patchState(store, { isLoading: true });\n try {\n const taskTypes = await taskBoardService.getTaskTypes();\n patchState(store, { taskTypes });\n const [savedDaysCount, savedDateString, savedDetailPanel, savedViewMode, savedTaskTypeNames, savedAssigneeIds, savedReporterIds, savedPriorities,] = await Promise.all([\n userScopedSettings().get(AXMTaskBoardSettings.DaysCount),\n userScopedSettings().get(AXMTaskBoardSettings.CurrentDate),\n userScopedSettings().get(AXMTaskBoardSettings.DetailPanel),\n userScopedSettings().get(AXMTaskBoardSettings.ViewMode),\n userScopedSettings().get(AXMTaskBoardSettings.SelectedTaskTypeNames),\n userScopedSettings().get(AXMTaskBoardSettings.SelectedAssigneeIds),\n userScopedSettings().get(AXMTaskBoardSettings.SelectedReporterIds),\n userScopedSettings().get(AXMTaskBoardSettings.SelectedPriorities),\n ]);\n patchState(store, {\n daysCount: savedDaysCount || 7,\n detailPanel: savedDetailPanel || false,\n currentViewMode: savedViewMode || 'month',\n currentDate: savedDateString ? new Date(savedDateString) : new Date(),\n selectedTaskTypeNames: savedTaskTypeNames || [],\n selectedAssigneeIds: savedAssigneeIds || [],\n selectedReporterIds: savedReporterIds || [],\n selectedPriorities: savedPriorities || [],\n isLoading: false,\n });\n }\n catch (error) {\n console.error('Error initializing TaskBoard ViewModel:', error);\n patchState(store, {\n detailPanel: false,\n currentViewMode: 'month',\n currentDate: new Date(),\n selectedTaskTypeNames: [],\n selectedAssigneeIds: [],\n selectedPriorities: [],\n selectedReporterIds: [],\n taskTypes: store.taskTypes(),\n isLoading: false,\n });\n }\n },\n setViewMode(mode) {\n if ((mode === 'kanban' || mode === 'status-grouped-grid') && store.selectedTaskTypeNames().length === 0) {\n const firstTaskType = store.taskTypes()[0];\n if (firstTaskType) {\n this.setSelectedTaskTypeNames([firstTaskType.name]);\n }\n }\n if ((mode === 'kanban' || mode === 'status-grouped-grid') && store.selectedTaskTypeNames().length > 1) {\n this.setSelectedTaskTypeNames([store.selectedTaskTypeNames()[0]]);\n }\n patchState(store, { currentViewMode: mode });\n userScopedSettings()\n .set(AXMTaskBoardSettings.ViewMode, mode)\n .catch((error) => console.error('Error saving calendar view mode:', error));\n },\n setCurrentDate(date) {\n patchState(store, { currentDate: new Date(date) });\n userScopedSettings()\n .set(AXMTaskBoardSettings.CurrentDate, date.toISOString())\n .catch((error) => console.error('Error saving current date:', error));\n },\n setSelectedTaskTypeNames(taskTypeNames, isQueryParam = false) {\n patchState(store, { selectedTaskTypeNames: taskTypeNames });\n if (isQueryParam)\n return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedTaskTypeNames, taskTypeNames)\n .catch((error) => console.error('Error saving selected task type filter:', error));\n },\n setSelectedAssigneeIds(assigneeIds, isQueryParam = false) {\n patchState(store, { selectedAssigneeIds: assigneeIds });\n if (isQueryParam)\n return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedAssigneeIds, assigneeIds)\n .catch((error) => console.error('Error saving selected assignee filter:', error));\n },\n setSelectedReporterIds(reporterIds, isQueryParam = false) {\n patchState(store, { selectedReporterIds: reporterIds });\n if (isQueryParam)\n return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedReporterIds, reporterIds)\n .catch((error) => console.error('Error saving selected reporter filter:', error));\n },\n setSelectedPriorities(priorities, isQueryParam = false) {\n patchState(store, { selectedPriorities: priorities });\n if (isQueryParam)\n return;\n userScopedSettings()\n .set(AXMTaskBoardSettings.SelectedPriorities, priorities)\n .catch((error) => console.error('Error saving selected priority filter:', error));\n },\n /**\n * Sets the currently selected task. Pass `null` to clear the selection.\n * @param task The task to select, or null.\n */\n selectTask(task) {\n patchState(store, { selectedTask: task });\n },\n /**\n * A convenience method to clear the currently selected task.\n */\n clearSelectedTask() {\n patchState(store, { selectedTask: null });\n },\n openDetailPanel() {\n patchState(store, { detailPanel: true });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DetailPanel, true)\n .catch((error) => console.error('Error saving detail panel:', error));\n },\n closeDetailPanel() {\n patchState(store, { detailPanel: false });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DetailPanel, false)\n .catch((error) => console.error('Error saving detail panel:', error));\n },\n toggleDetailPanel() {\n const detailPanel = !store.detailPanel();\n patchState(store, { detailPanel: detailPanel });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DetailPanel, detailPanel)\n .catch((error) => console.error('Error saving detail panel:', error));\n },\n async getStatusName(key, provider) {\n return taskBoardService.getStatusName(key, provider);\n },\n /**\n * Sets the start date for a new range selection.\n * Pass `null` to clear the selection.\n * @param date The start date of the range.\n */\n setRangeStartDate(date) {\n patchState(store, { rangeStartDate: date });\n },\n setDaysCount(days) {\n const count = Math.max(1, days);\n patchState(store, { daysCount: count });\n userScopedSettings()\n .set(AXMTaskBoardSettings.DaysCount, count)\n .catch((error) => console.error('Error saving days count:', error));\n },\n };\n}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC52aWV3bW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvdGFzay1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC90YXNrLWJvYXJkLnZpZXdtb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQXNCM0QsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUM5QyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFDdEIsU0FBUyxDQUFvQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFNBQVMsRUFBRSxDQUFDO0lBQ1osU0FBUyxFQUFFLEVBQUU7SUFDYixTQUFTLEVBQUUsSUFBSTtJQUNmLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLFlBQVksRUFBRSxJQUFJO0lBQ2xCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRTtJQUN2QixlQUFlLEVBQUUsT0FBTztJQUN4QixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLG1CQUFtQixFQUFFLEVBQUU7SUFDdkIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QixtQkFBbUIsRUFBRSxFQUFFO0NBQ3hCLENBQUMs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LE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFRLEVBQUUsUUFBZ0I7WUFDNUMsT0FBTyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRDs7OztXQUlHO1FBQ0gsaUJBQWlCLENBQUMsSUFBaUI7WUFDakMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxZQUFZLENBQUMsSUFBWTtZQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEMsa0JBQWtCLEVBQUU7aUJBQ2pCLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2lCQUMxQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFNjaGVkdWxlclZpZXcgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2NoZWR1bGVyJztcbmltcG9ydCB7IEFYUFNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQUGxhdGZvcm1TY29wZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwYXRjaFN0YXRlLCBzaWduYWxTdG9yZSwgd2l0aENvbXB1dGVkLCB3aXRoTWV0aG9kcywgd2l0aFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRTZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3Mua2V5cyc7XG5pbXBvcnQgeyBBWFBUYXNrQm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi90YXNrLWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQVGFzaywgQVhQV29ya2Zsb3dUYXNrUHJvdmlkZXIgfSBmcm9tICcuL3Rhc2stYm9hcmQudHlwZXMnO1xuXG50eXBlIEFYUFRhc2tQcmlvcml0eSA9IE5vbk51bGxhYmxlPEFYUFRhc2tbJ3ByaW9yaXR5J10+O1xuZXhwb3J0IHR5cGUgQVhQUHJpb3JpdHlGaWx0ZXJLZXkgPSBBWFBUYXNrUHJpb3JpdHkgfCAnbm9fcHJpb3JpdHknO1xuZXhwb3J0IHR5cGUgQVhQVGFza0JvYXJkVmlld01vZGUgPSBBWFNjaGVkdWxlclZpZXcgfCAna2FuYmFuJyB8ICdncmlkJyB8ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJztcblxudHlwZSBBWFBUYXNrQm9hcmRTdGF0ZSA9IHtcbiAgZGF5c0NvdW50OiBudW1iZXI7XG4gIGN1cnJlbnREYXRlOiBEYXRlO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGRldGFpbFBhbmVsOiBib29sZWFuO1xuICByYW5nZVN0YXJ0RGF0ZTogRGF0ZSB8IG51bGw7XG4gIHNlbGVjdGVkVGFzazogQVhQVGFzayB8IG51bGw7XG4gIHNlbGVjdGVkVGFza1R5cGVOYW1lczogc3RyaW5nW107XG4gIHRhc2tUeXBlczogQVhQV29ya2Zsb3dUYXNrUHJvdmlkZXJbXTtcbiAgY3VycmVudFZpZXdNb2RlOiBBWFBUYXNrQm9hcmRWaWV3TW9kZTtcbiAgc2VsZWN0ZWRQcmlvcml0aWVzOiBBWFBQcmlvcml0eUZpbHRlcktleVtdO1xuICBzZWxlY3RlZEFzc2lnbmVlSWRzOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICBzZWxlY3RlZFJlcG9ydGVySWRzOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xufTtcblxuZXhwb3J0IGNvbnN0IEFYTVRhc2tCb2FyZFZpZXdNb2RlbCA9IHNpZ25hbFN0b3JlKFxuICB7IHByb3ZpZGVkSW46ICdyb290JyB9LFxuICB3aXRoU3RhdGU8QVhQVGFza0JvYXJkU3RhdGU+KCgpID0+ICh7XG4gICAgZGF5c0NvdW50OiA3LFxuICAgIHRhc2tUeXBlczogW10sXG4gICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgIGRldGFpbFBhbmVsOiBmYWxzZSxcbiAgICBzZWxlY3RlZFRhc2s6IG51bGwsXG4gICAgcmFuZ2VTdGFydERhdGU6IG51bGwsXG4gICAgY3VycmVudERhdGU6IG5ldyBEYXRlKCksXG4gICAgY3VycmVudFZpZXdNb2RlOiAnbW9udGgnLFxuICAgIHNlbGVjdGVkVGFza1R5cGVOYW1lczogW10sXG4gICAgc2VsZWN0ZWRBc3NpZ25lZUlkczogW10sXG4gICAgc2VsZWN0ZWRQcmlvcml0aWVzOiBbXSxcbiAgICBzZWxlY3RlZFJlcG9ydGVySWRzOiBbXSxcbiAgfSkpLFxuXG4gIHdpdGhDb21wdXRlZCgoc3RvcmUpID0+ICh7XG4gICAgc2VsZWN0ZWRUYXNrVHlwZXM6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWVzID0gc3RvcmUuc2VsZWN0ZWRUYXNrVHlwZU5hbWVzKCk7XG4gICAgICBpZiAoIW5hbWVzIHx8IG5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RvcmUudGFza1R5cGVzKCkuZmlsdGVyKCh0dCkgPT4gbmFtZXMuaW5jbHVkZXModHQubmFtZSkpO1xuICAgIH0pLFxuICAgIGlzVGFza1NlbGVjdGVkOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5zZWxlY3RlZFRhc2soKSAhPT0gbnVsbCksXG4gICAgaXNEZXRhaWxQYW5lbE9wZW46IGNvbXB1dGVkKCgpID0+IHN0b3JlLmRldGFpbFBhbmVsKCkpLFxuICAgIGVuZERhdGU6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gc3RvcmUuY3VycmVudERhdGUoKTtcbiAgICAgIGNvbnN0IGRheXNDb3VudCA9IHN0b3JlLmRheXNDb3VudCgpO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGN1cnJlbnREYXRlLmdldFRpbWUoKSArIGRheXNDb3VudCAqIDI0ICogNjAgKiA2MCAqIDEwMDApO1xuICAgIH0pLFxuICAgIGFjdGl2ZUZpbHRlckNvdW50OiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgaWYgKFxuICAgICAgICBzdG9yZS5jdXJyZW50Vmlld01vZGUoKSAhPT0gJ2thbmJhbicgJiZcbiAgICAgICAgc3RvcmUuY3VycmVudFZpZXdNb2RlKCkgIT09ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJyAmJlxuICAgICAgICBzdG9yZS5zZWxlY3RlZFRhc2tUeXBlTmFtZXMoKS5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICAgIGlmIChzdG9yZS5zZWxlY3RlZEFzc2lnbmVlSWRzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgICAgaWYgKHN0b3JlLnNlbGVjdGVkUmVwb3J0ZXJJZHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgICBpZiAoc3RvcmUuc2VsZWN0ZWRQcmlvcml0aWVzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH0pLFxuICB9KSksXG5cbiAgd2l0aE1ldGhvZHMoKHN0b3JlLCBzZXR0aW5nU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSksIHRhc2tCb2FyZFNlcnZpY2UgPSBpbmplY3QoQVhQVGFza0JvYXJkU2VydmljZSkpID0+IHtcbiAgICBjb25zdCB1c2VyU2NvcGVkU2V0dGluZ3MgPSAoKSA9PiBzZXR0aW5nU2VydmljZS5zY29wZShBWFBQbGF0Zm9ybVNjb3BlLlVzZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgaXNMb2FkaW5nOiB0cnVlIH0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHRhc2tUeXBlcyA9IGF3YWl0IHRhc2tCb2FyZFNlcnZpY2UuZ2V0VGFza1R5cGVzKCk7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyB0YXNrVHlwZXMgfSk7XG5cbiAgICAgICAgICBjb25zdCBbXG4gICAgICAgICAgICBzYXZlZERheXNDb3VudCxcbiAgICAgICAgICAgIHNhdmVkRGF0ZVN0cmluZyxcbiAgICAgICAgICAgIHNhdmVkRGV0YWlsUGFuZWwsXG4gICAgICAgICAgICBzYXZlZFZpZXdNb2RlLFxuICAgICAgICAgICAgc2F2ZWRUYXNrVHlwZU5hbWVzLFxuICAgICAgICAgICAgc2F2ZWRBc3NpZ25lZUlkcyxcbiAgICAgICAgICAgIHNhdmVkUmVwb3J0ZXJJZHMsXG4gICAgICAgICAgICBzYXZlZFByaW9yaXRpZXMsXG4gICAgICAgICAgXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIHVzZXJTY29wZWRTZXR0aW5ncygpLmdldDxudW1iZXIgfCB1bmRlZmluZWQ+KEFYTVRhc2tCb2FyZFNldHRpbmdzLkRheXNDb3VudCksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8c3RyaW5nIHwgdW5kZWZpbmVkPihBWE1UYXNrQm9hcmRTZXR0aW5ncy5DdXJyZW50RGF0ZSksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oQVhNVGFza0JvYXJkU2V0dGluZ3MuRGV0YWlsUGFuZWwpLFxuICAgICAgICAgICAgdXNlclNjb3BlZFNldHRpbmdzKCkuZ2V0PEFYUFRhc2tCb2FyZFZpZXdNb2RlIHwgdW5kZWZpbmVkPihBWE1UYXNrQm9hcmRTZXR0aW5ncy5WaWV3TW9kZSksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8c3RyaW5nW10gfCB1bmRlZmluZWQ+KEFYTVRhc2tCb2FyZFNldHRpbmdzLlNlbGVjdGVkVGFza1R5cGVOYW1lcyksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8KHN0cmluZyB8IG51bWJlcilbXSB8IHVuZGVmaW5lZD4oQVhNVGFza0JvYXJkU2V0dGluZ3MuU2VsZWN0ZWRBc3NpZ25lZUlkcyksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8KHN0cmluZyB8IG51bWJlcilbXSB8IHVuZGVmaW5lZD4oQVhNVGFza0JvYXJkU2V0dGluZ3MuU2VsZWN0ZWRSZXBvcnRlcklkcyksXG4gICAgICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKS5nZXQ8QVhQUHJpb3JpdHlGaWx0ZXJLZXlbXSB8IHVuZGVmaW5lZD4oQVhNVGFza0JvYXJkU2V0dGluZ3MuU2VsZWN0ZWRQcmlvcml0aWVzKSxcbiAgICAgICAgICBdKTtcblxuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIGRheXNDb3VudDogc2F2ZWREYXlzQ291bnQgfHwgNyxcbiAgICAgICAgICAgIGRldGFpbFBhbmVsOiBzYXZlZERldGFpbFBhbmVsIHx8IGZhbHNlLFxuICAgICAgICAgICAgY3VycmVudFZpZXdNb2RlOiBzYXZlZFZpZXdNb2RlIHx8ICdtb250aCcsXG4gICAgICAgICAgICBjdXJyZW50RGF0ZTogc2F2ZWREYXRlU3RyaW5nID8gbmV3IERhdGUoc2F2ZWREYXRlU3RyaW5nKSA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBzZWxlY3RlZFRhc2tUeXBlTmFtZXM6IHNhdmVkVGFza1R5cGVOYW1lcyB8fCBbXSxcbiAgICAgICAgICAgIHNlbGVjdGVkQXNzaWduZWVJZHM6IHNhdmVkQXNzaWduZWVJZHMgfHwgW10sXG4gICAgICAgICAgICBzZWxlY3RlZFJlcG9ydGVySWRzOiBzYXZlZFJlcG9ydGVySWRzIHx8IFtdLFxuICAgICAgICAgICAgc2VsZWN0ZWRQcmlvcml0aWVzOiBzYXZlZFByaW9yaXRpZXMgfHwgW10sXG4gICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluaXRpYWxpemluZyBUYXNrQm9hcmQgVmlld01vZGVsOicsIGVycm9yKTtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBkZXRhaWxQYW5lbDogZmFsc2UsXG4gICAgICAgICAgICBjdXJyZW50Vmlld01vZGU6ICdtb250aCcsXG4gICAgICAgICAgICBjdXJyZW50RGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHNlbGVjdGVkVGFza1R5cGVOYW1lczogW10sXG4gICAgICAgICAgICBzZWxlY3RlZEFzc2lnbmVlSWRzOiBbXSxcbiAgICAgICAgICAgIHNlbGVjdGVkUHJpb3JpdGllczogW10sXG4gICAgICAgICAgICBzZWxlY3RlZFJlcG9ydGVySWRzOiBbXSxcbiAgICAgICAgICAgIHRhc2tUeXBlczogc3RvcmUudGFza1R5cGVzKCksXG4gICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICBzZXRWaWV3TW9kZShtb2RlOiBBWFBUYXNrQm9hcmRWaWV3TW9kZSkge1xuICAgICAgICBpZiAoKG1vZGUgPT09ICdrYW5iYW4nIHx8IG1vZGUgPT09ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJykgJiYgc3RvcmUuc2VsZWN0ZWRUYXNrVHlwZU5hbWVzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgZmlyc3RUYXNrVHlwZSA9IHN0b3JlLnRhc2tUeXBlcygpWzBdO1xuICAgICAgICAgIGlmIChmaXJzdFRhc2tUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVGFza1R5cGVOYW1lcyhbZmlyc3RUYXNrVHlwZS5uYW1lXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgobW9kZSA9PT0gJ2thbmJhbicgfHwgbW9kZSA9PT0gJ3N0YXR1cy1ncm91cGVkLWdyaWQnKSAmJiBzdG9yZS5zZWxlY3RlZFRhc2tUeXBlTmFtZXMoKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFRhc2tUeXBlTmFtZXMoW3N0b3JlLnNlbGVjdGVkVGFza1R5cGVOYW1lcygpWzBdXSk7XG4gICAgICAgIH1cbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBjdXJyZW50Vmlld01vZGU6IG1vZGUgfSk7XG4gICAgICAgIHVzZXJTY29wZWRTZXR0aW5ncygpXG4gICAgICAgICAgLnNldChBWE1UYXNrQm9hcmRTZXR0aW5ncy5WaWV3TW9kZSwgbW9kZSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgY2FsZW5kYXIgdmlldyBtb2RlOicsIGVycm9yKSk7XG4gICAgICB9LFxuXG4gICAgICBzZXRDdXJyZW50RGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgY3VycmVudERhdGU6IG5ldyBEYXRlKGRhdGUpIH0pO1xuICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgIC5zZXQoQVhNVGFza0JvYXJkU2V0dGluZ3MuQ3VycmVudERhdGUsIGRhdGUudG9JU09TdHJpbmcoKSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgY3VycmVudCBkYXRlOicsIGVycm9yKSk7XG4gICAgICB9LFxuXG4gICAgICBzZXRTZWxlY3RlZFRhc2tUeXBlTmFtZXModGFza1R5cGVOYW1lczogc3RyaW5nW10sIGlzUXVlcnlQYXJhbTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgc2VsZWN0ZWRUYXNrVHlwZU5hbWVzOiB0YXNrVHlwZU5hbWVzIH0pO1xuICAgICAgICBpZiAoaXNRdWVyeVBhcmFtKSByZXR1cm47XG4gICAgICAgIHVzZXJTY29wZWRTZXR0aW5ncygpXG4gICAgICAgICAgLnNldChBWE1UYXNrQm9hcmRTZXR0aW5ncy5TZWxlY3RlZFRhc2tUeXBlTmFtZXMsIHRhc2tUeXBlTmFtZXMpXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIHNlbGVjdGVkIHRhc2sgdHlwZSBmaWx0ZXI6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIHNldFNlbGVjdGVkQXNzaWduZWVJZHMoYXNzaWduZWVJZHM6IChzdHJpbmcgfCBudW1iZXIpW10sIGlzUXVlcnlQYXJhbTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgc2VsZWN0ZWRBc3NpZ25lZUlkczogYXNzaWduZWVJZHMgfSk7XG4gICAgICAgIGlmIChpc1F1ZXJ5UGFyYW0pIHJldHVybjtcbiAgICAgICAgdXNlclNjb3BlZFNldHRpbmdzKClcbiAgICAgICAgICAuc2V0KEFYTVRhc2tCb2FyZFNldHRpbmdzLlNlbGVjdGVkQXNzaWduZWVJZHMsIGFzc2lnbmVlSWRzKVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBzZWxlY3RlZCBhc3NpZ25lZSBmaWx0ZXI6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIHNldFNlbGVjdGVkUmVwb3J0ZXJJZHMocmVwb3J0ZXJJZHM6IChzdHJpbmcgfCBudW1iZXIpW10sIGlzUXVlcnlQYXJhbTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgc2VsZWN0ZWRSZXBvcnRlcklkczogcmVwb3J0ZXJJZHMgfSk7XG4gICAgICAgIGlmIChpc1F1ZXJ5UGFyYW0pIHJldHVybjtcbiAgICAgICAgdXNlclNjb3BlZFNldHRpbmdzKClcbiAgICAgICAgICAuc2V0KEFYTVRhc2tCb2FyZFNldHRpbmdzLlNlbGVjdGVkUmVwb3J0ZXJJZHMsIHJlcG9ydGVySWRzKVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBzZWxlY3RlZCByZXBvcnRlciBmaWx0ZXI6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIHNldFNlbGVjdGVkUHJpb3JpdGllcyhwcmlvcml0aWVzOiBBWFBQcmlvcml0eUZpbHRlcktleVtdLCBpc1F1ZXJ5UGFyYW06IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IHNlbGVjdGVkUHJpb3JpdGllczogcHJpb3JpdGllcyB9KTtcbiAgICAgICAgaWYgKGlzUXVlcnlQYXJhbSkgcmV0dXJuO1xuICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgIC5zZXQoQVhNVGFza0JvYXJkU2V0dGluZ3MuU2VsZWN0ZWRQcmlvcml0aWVzLCBwcmlvcml0aWVzKVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBzZWxlY3RlZCBwcmlvcml0eSBmaWx0ZXI6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogU2V0cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHRhc2suIFBhc3MgYG51bGxgIHRvIGNsZWFyIHRoZSBzZWxlY3Rpb24uXG4gICAgICAgKiBAcGFyYW0gdGFzayBUaGUgdGFzayB0byBzZWxlY3QsIG9yIG51bGwuXG4gICAgICAgKi9cbiAgICAgIHNlbGVjdFRhc2sodGFzazogQVhQVGFzayB8IG51bGwpIHtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBzZWxlY3RlZFRhc2s6IHRhc2sgfSk7XG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIEEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNsZWFyIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFzay5cbiAgICAgICAqL1xuICAgICAgY2xlYXJTZWxlY3RlZFRhc2soKSB7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgc2VsZWN0ZWRUYXNrOiBudWxsIH0pO1xuICAgICAgfSxcblxuICAgICAgb3BlbkRldGFpbFBhbmVsKCkge1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGRldGFpbFBhbmVsOiB0cnVlIH0pO1xuICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgIC5zZXQoQVhNVGFza0JvYXJkU2V0dGluZ3MuRGV0YWlsUGFuZWwsIHRydWUpXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGRldGFpbCBwYW5lbDonLCBlcnJvcikpO1xuICAgICAgfSxcblxuICAgICAgY2xvc2VEZXRhaWxQYW5lbCgpIHtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBkZXRhaWxQYW5lbDogZmFsc2UgfSk7XG4gICAgICAgIHVzZXJTY29wZWRTZXR0aW5ncygpXG4gICAgICAgICAgLnNldChBWE1UYXNrQm9hcmRTZXR0aW5ncy5EZXRhaWxQYW5lbCwgZmFsc2UpXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGRldGFpbCBwYW5lbDonLCBlcnJvcikpO1xuICAgICAgfSxcblxuICAgICAgdG9nZ2xlRGV0YWlsUGFuZWwoKSB7XG4gICAgICAgIGNvbnN0IGRldGFpbFBhbmVsID0gIXN0b3JlLmRldGFpbFBhbmVsKCk7XG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgZGV0YWlsUGFuZWw6IGRldGFpbFBhbmVsIH0pO1xuICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgIC5zZXQoQVhNVGFza0JvYXJkU2V0dGluZ3MuRGV0YWlsUGFuZWwsIGRldGFpbFBhbmVsKVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBkZXRhaWwgcGFuZWw6JywgZXJyb3IpKTtcbiAgICAgIH0sXG5cbiAgICAgIGFzeW5jIGdldFN0YXR1c05hbWUoa2V5OiBhbnksIHByb3ZpZGVyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRhc2tCb2FyZFNlcnZpY2UuZ2V0U3RhdHVzTmFtZShrZXksIHByb3ZpZGVyKTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogU2V0cyB0aGUgc3RhcnQgZGF0ZSBmb3IgYSBuZXcgcmFuZ2Ugc2VsZWN0aW9uLlxuICAgICAgICogUGFzcyBgbnVsbGAgdG8gY2xlYXIgdGhlIHNlbGVjdGlvbi5cbiAgICAgICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydCBkYXRlIG9mIHRoZSByYW5nZS5cbiAgICAgICAqL1xuICAgICAgc2V0UmFuZ2VTdGFydERhdGUoZGF0ZTogRGF0ZSB8IG51bGwpIHtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyByYW5nZVN0YXJ0RGF0ZTogZGF0ZSB9KTtcbiAgICAgIH0sXG5cbiAgICAgIHNldERheXNDb3VudChkYXlzOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgY291bnQgPSBNYXRoLm1heCgxLCBkYXlzKTtcbiAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBkYXlzQ291bnQ6IGNvdW50IH0pO1xuICAgICAgICB1c2VyU2NvcGVkU2V0dGluZ3MoKVxuICAgICAgICAgIC5zZXQoQVhNVGFza0JvYXJkU2V0dGluZ3MuRGF5c0NvdW50LCBjb3VudClcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZGF5cyBjb3VudDonLCBlcnJvcikpO1xuICAgICAgfSxcbiAgICB9O1xuICB9KSxcbik7XG4iXX0=","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { RootConfig } from '../../../const';\nimport { AXPTaskBoardService } from '../task-board.service';\nimport { AXMTaskBoardViewModel } from '../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/widget-core\";\nexport class AXMTaskBoardDetailPanel {\n constructor() {\n this.rootConfig = RootConfig;\n this.vm = inject(AXMTaskBoardViewModel);\n this.localeService = inject(AXLocaleService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.statusName = signal('', ...(ngDevMode ? [{ debugName: \"statusName\" }] : []));\n this.extraFields = signal([], ...(ngDevMode ? [{ debugName: \"extraFields\" }] : []));\n this.#selectedTaskChanged = effect(async () => {\n const selectedTask = this.vm.selectedTask();\n const key = selectedTask?.status.id;\n const provider = selectedTask?.provider;\n if (!provider)\n return;\n const name = await this.vm.getStatusName(key, provider);\n if (name)\n this.statusName.set(name);\n }, ...(ngDevMode ? [{ debugName: \"#selectedTaskChanged\" }] : []));\n this.#selectedTaskTypeChanged = effect(async () => {\n const selectedTask = this.vm.selectedTask();\n const selectedTaskType = this.taskBoardService.getProvider(selectedTask?.provider);\n const extraFields = await selectedTaskType?.getExtraFields();\n if (!extraFields) {\n this.extraFields.set([]);\n return;\n }\n this.extraFields.set(extraFields);\n }, ...(ngDevMode ? [{ debugName: \"#selectedTaskTypeChanged\" }] : []));\n }\n #selectedTaskChanged;\n #selectedTaskTypeChanged;\n capitalizeFirstLetter(text) {\n return String(text).charAt(0).toUpperCase() + String(text).slice(1);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardDetailPanel, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMTaskBoardDetailPanel, isStandalone: true, selector: \"axm-task-board-detail-panel\", ngImport: i0, template: \"@if (vm.isTaskSelected()) {\\n @let nodeInfo = vm.selectedTask();\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ nodeInfo?.title }}</span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <div class=\\\"__section\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.title' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @if (nodeInfo?.description) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.description' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.description }}</div>\\n </div>\\n }\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.start-date' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.startDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.end-date' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.endDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.reporter' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{ nodeInfo?.reporter?.fullName }}\\n </div>\\n </div>\\n @if (nodeInfo?.assignee) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.assignee' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.assignee?.fullName }}</div>\\n </div>\\n }\\n @if (statusName()) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.status' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ statusName() }}</div>\\n </div>\\n }\\n @if (nodeInfo?.priority) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.priority' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ capitalizeFirstLetter(nodeInfo?.priority ?? '') }}</div>\\n </div>\\n }\\n @if (extraFields() && extraFields().length) {\\n <div class=\\\"__row\\\">\\n <axp-widgets-container [context]=\\\"nodeInfo\\\">\\n @for (extraField of extraFields(); track extraField) {\\n <div class=\\\"__title\\\">\\n <span>\\n {{ extraField.title | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n <ng-container axp-widget-renderer [node]=\\\"extraField.widget\\\" [mode]=\\\"'view'\\\"> </ng-container>\\n </div>\\n }\\n </axp-widgets-container>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n} @else {\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.title' | translate | async }}\\n </span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n\\n <div class=\\\"__content ax-flex ax-items-center ax-justify-center\\\">\\n <axp-state-message\\n icon=\\\"fa-light fa-clipboard-list-check\\\"\\n [title]=\\\"'@task-management:task-board.detail-panel.no-task-selected.title'\\\"\\n [description]=\\\"'@task-management:task-board.detail-panel.no-task-selected.description'\\\"\\n >\\n </axp-state-message>\\n </div>\\n}\\n\", styles: [\"axm-task-board-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-task-board-detail-panel{width:24rem}}axm-task-board-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}@media (min-width: 1024px){axm-task-board-detail-panel>.__header{width:20rem}}axm-task-board-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-task-board-detail-panel>.__content{display:flex;flex-direction:column}axm-task-board-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-task-board-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-task-board-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-task-board-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\\n\"], dependencies: [{ kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i1.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i1.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardDetailPanel, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-detail-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [\n AsyncPipe,\n AXFormatPipe,\n AXTranslatorPipe,\n AXButtonComponent,\n AXPStateMessageComponent,\n AXPWidgetCoreModule,\n AXDecoratorIconComponent,\n ], template: \"@if (vm.isTaskSelected()) {\\n @let nodeInfo = vm.selectedTask();\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ nodeInfo?.title }}</span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <div class=\\\"__section\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.title' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @if (nodeInfo?.description) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.description' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.description }}</div>\\n </div>\\n }\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.start-date' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.startDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.end-date' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{\\n nodeInfo?.endDate\\n | format: 'datetime' : { format: 'short', calendar: localeService.activeProfile().calendar.system }\\n | async\\n }}\\n </div>\\n </div>\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.reporter' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n {{ nodeInfo?.reporter?.fullName }}\\n </div>\\n </div>\\n @if (nodeInfo?.assignee) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.assignee' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ nodeInfo?.assignee?.fullName }}</div>\\n </div>\\n }\\n @if (statusName()) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ '@task-management:task-board.detail-panel.status' | translate | async }}</span>\\n </div>\\n <div class=\\\"__content\\\">{{ statusName() }}</div>\\n </div>\\n }\\n @if (nodeInfo?.priority) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.priority' | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">{{ capitalizeFirstLetter(nodeInfo?.priority ?? '') }}</div>\\n </div>\\n }\\n @if (extraFields() && extraFields().length) {\\n <div class=\\\"__row\\\">\\n <axp-widgets-container [context]=\\\"nodeInfo\\\">\\n @for (extraField of extraFields(); track extraField) {\\n <div class=\\\"__title\\\">\\n <span>\\n {{ extraField.title | translate | async }}\\n </span>\\n </div>\\n <div class=\\\"__content\\\">\\n <ng-container axp-widget-renderer [node]=\\\"extraField.widget\\\" [mode]=\\\"'view'\\\"> </ng-container>\\n </div>\\n }\\n </axp-widgets-container>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n} @else {\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <span>\\n {{ '@task-management:task-board.detail-panel.title' | translate | async }}\\n </span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n\\n <div class=\\\"__content ax-flex ax-items-center ax-justify-center\\\">\\n <axp-state-message\\n icon=\\\"fa-light fa-clipboard-list-check\\\"\\n [title]=\\\"'@task-management:task-board.detail-panel.no-task-selected.title'\\\"\\n [description]=\\\"'@task-management:task-board.detail-panel.no-task-selected.description'\\\"\\n >\\n </axp-state-message>\\n </div>\\n}\\n\", styles: [\"axm-task-board-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-task-board-detail-panel{width:24rem}}axm-task-board-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}@media (min-width: 1024px){axm-task-board-detail-panel>.__header{width:20rem}}axm-task-board-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-task-board-detail-panel>.__content{display:flex;flex-direction:column}axm-task-board-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-task-board-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-task-board-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-task-board-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-task-board-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1kZXRhaWwtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwvdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwvdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQWtCaEUsTUFBTSxPQUFPLHVCQUF1QjtJQWhCcEM7UUFpQnFCLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXhELGVBQVUsR0FBRyxNQUFNLENBQVMsRUFBRSxzREFBQyxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsTUFBTSxDQUFrQixFQUFFLHVEQUFDLENBQUM7UUFFcEQseUJBQW9CLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUMsTUFBTSxHQUFHLEdBQUcsWUFBWSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxRQUFRLEdBQUcsWUFBWSxFQUFFLFFBQVEsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPO1lBQ3RCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hELElBQUksSUFBSTtnQkFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLGdFQUFDLENBQUM7UUFFSCw2QkFBd0IsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDM0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ25GLE1BQU0sV0FBVyxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekIsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQyxDQUFDLG9FQUFDLENBQUM7S0FLSjtJQXZCQyxvQkFBb0IsQ0FPakI7SUFFSCx3QkFBd0IsQ0FTckI7SUFFTyxxQkFBcUIsQ0FBQyxJQUFZO1FBQzFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7K0dBL0JVLHVCQUF1QjttR0FBdkIsdUJBQXVCLHVGQzlCcEMsbXBKQStIQSxvc0VEdkdJLGlCQUFpQiwyVUFDakIsd0JBQXdCLDBIQUN4QixtQkFBbUIsK1pBQ25CLHdCQUF3QixpRUFOeEIsU0FBUyx5Q0FDVCxZQUFZLDBDQUNaLGdCQUFnQjs7NEZBT1AsdUJBQXVCO2tCQWhCbkMsU0FBUzsrQkFDRSw2QkFBNkIsbUJBR3RCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksV0FDNUI7d0JBQ1AsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3FCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvckljb25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWEZvcm1hdFBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb3JlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWFBUYXNrQm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi4vdGFzay1ib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUEV4dHJhRmllbGQgfSBmcm9tICcuLi90YXNrLWJvYXJkLnR5cGVzJztcbmltcG9ydCB7IEFYTVRhc2tCb2FyZFZpZXdNb2RlbCB9IGZyb20gJy4uL3Rhc2stYm9hcmQudmlld21vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLXRhc2stYm9hcmQtZGV0YWlsLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYm9hcmQtZGV0YWlsLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1ib2FyZC1kZXRhaWwtcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgQVhGb3JtYXRQaXBlLFxuICAgIEFYVHJhbnNsYXRvclBpcGUsXG4gICAgQVhCdXR0b25Db21wb25lbnQsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1UYXNrQm9hcmREZXRhaWxQYW5lbCB7XG4gIHByb3RlY3RlZCByZWFkb25seSByb290Q29uZmlnID0gUm9vdENvbmZpZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYTVRhc2tCb2FyZFZpZXdNb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0YXNrQm9hcmRTZXJ2aWNlID0gaW5qZWN0KEFYUFRhc2tCb2FyZFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBzdGF0dXNOYW1lID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgZXh0cmFGaWVsZHMgPSBzaWduYWw8QVhQRXh0cmFGaWVsZFtdPihbXSk7XG5cbiAgI3NlbGVjdGVkVGFza0NoYW5nZWQgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkVGFzayA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrKCk7XG4gICAgY29uc3Qga2V5ID0gc2VsZWN0ZWRUYXNrPy5zdGF0dXMuaWQ7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBzZWxlY3RlZFRhc2s/LnByb3ZpZGVyO1xuICAgIGlmICghcHJvdmlkZXIpIHJldHVybjtcbiAgICBjb25zdCBuYW1lID0gYXdhaXQgdGhpcy52bS5nZXRTdGF0dXNOYW1lKGtleSwgcHJvdmlkZXIpO1xuICAgIGlmIChuYW1lKSB0aGlzLnN0YXR1c05hbWUuc2V0KG5hbWUpO1xuICB9KTtcblxuICAjc2VsZWN0ZWRUYXNrVHlwZUNoYW5nZWQgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkVGFzayA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRUYXNrVHlwZSA9IHRoaXMudGFza0JvYXJkU2VydmljZS5nZXRQcm92aWRlcihzZWxlY3RlZFRhc2s/LnByb3ZpZGVyKTtcbiAgICBjb25zdCBleHRyYUZpZWxkcyA9IGF3YWl0IHNlbGVjdGVkVGFza1R5cGU/LmdldEV4dHJhRmllbGRzKCk7XG4gICAgaWYgKCFleHRyYUZpZWxkcykge1xuICAgICAgdGhpcy5leHRyYUZpZWxkcy5zZXQoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmV4dHJhRmllbGRzLnNldChleHRyYUZpZWxkcyk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBjYXBpdGFsaXplRmlyc3RMZXR0ZXIodGV4dDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0ZXh0KS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIFN0cmluZyh0ZXh0KS5zbGljZSgxKTtcbiAgfVxufVxuIiwiQGlmICh2bS5pc1Rhc2tTZWxlY3RlZCgpKSB7XG4gIEBsZXQgbm9kZUluZm8gPSB2bS5zZWxlY3RlZFRhc2soKTtcbiAgPGRpdiBjbGFzcz1cIl9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIl9fdGl0bGVcIj5cbiAgICAgIDxzcGFuPnt7IG5vZGVJbmZvPy50aXRsZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8YXgtYnV0dG9uIFtsb29rXT1cIidibGFuaydcIiBjbGFzcz1cImF4LXNtIGF4LXJvdW5kZWQtZnVsbFwiIChvbkNsaWNrKT1cInZtLmNsb3NlRGV0YWlsUGFuZWwoKVwiPlxuICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLXhtYXJrXCI+PC9heC1pY29uPlxuICAgIDwvYXgtYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cIl9fc2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cIl9fdGl0bGVcIj5cbiAgICAgICAgPHNwYW4+e3sgJ0B0YXNrLW1hbmFnZW1lbnQ6dGFzay1ib2FyZC5kZXRhaWwtcGFuZWwudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj5cbiAgICAgICAgQGlmIChub2RlSW5mbz8uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19yb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHt7ICdAdGFzay1tYW5hZ2VtZW50OnRhc2stYm9hcmQuZGV0YWlsLXBhbmVsLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPnt7IG5vZGVJbmZvPy5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3Jvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAge3sgJ0B0YXNrLW1hbmFnZW1lbnQ6dGFzay1ib2FyZC5kZXRhaWwtcGFuZWwuc3RhcnQtZGF0ZScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIG5vZGVJbmZvPy5zdGFydERhdGVcbiAgICAgICAgICAgICAgICB8IGZvcm1hdDogJ2RhdGV0aW1lJyA6IHsgZm9ybWF0OiAnc2hvcnQnLCBjYWxlbmRhcjogbG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtIH1cbiAgICAgICAgICAgICAgICB8IGFzeW5jXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIl9fcm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIl9fdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdAdGFzay1tYW5hZ2VtZW50OnRhc2stYm9hcmQuZGV0YWlsLXBhbmVsLmVuZC1kYXRlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIG5vZGVJbmZvPy5lbmREYXRlXG4gICAgICAgICAgICAgICAgfCBmb3JtYXQ6ICdkYXRldGltZScgOiB7IGZvcm1hdDogJ3Nob3J0JywgY2FsZW5kYXI6IGxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSB9XG4gICAgICAgICAgICAgICAgfCBhc3luY1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3Jvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyAnQHRhc2stbWFuYWdlbWVudDp0YXNrLWJvYXJkLmRldGFpbC1wYW5lbC5yZXBvcnRlcicgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgICAgICAgICB7eyBub2RlSW5mbz8ucmVwb3J0ZXI/LmZ1bGxOYW1lIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKG5vZGVJbmZvPy5hc3NpZ25lZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3Jvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0B0YXNrLW1hbmFnZW1lbnQ6dGFzay1ib2FyZC5kZXRhaWwtcGFuZWwuYXNzaWduZWUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj57eyBub2RlSW5mbz8uYXNzaWduZWU/LmZ1bGxOYW1lIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzdGF0dXNOYW1lKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19yb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdAdGFzay1tYW5hZ2VtZW50OnRhc2stYm9hcmQuZGV0YWlsLXBhbmVsLnN0YXR1cycgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPnt7IHN0YXR1c05hbWUoKSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAobm9kZUluZm8/LnByaW9yaXR5KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIl9fcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7eyAnQHRhc2stbWFuYWdlbWVudDp0YXNrLWJvYXJkLmRldGFpbC1wYW5lbC5wcmlvcml0eScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj57eyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIobm9kZUluZm8/LnByaW9yaXR5ID8/ICcnKSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoZXh0cmFGaWVsZHMoKSAmJiBleHRyYUZpZWxkcygpLmxlbmd0aCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3Jvd1wiPlxuICAgICAgICAgICAgPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbY29udGV4dF09XCJub2RlSW5mb1wiPlxuICAgICAgICAgICAgICBAZm9yIChleHRyYUZpZWxkIG9mIGV4dHJhRmllbGRzKCk7IHRyYWNrIGV4dHJhRmllbGQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHt7IGV4dHJhRmllbGQudGl0bGUgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgYXhwLXdpZGdldC1yZW5kZXJlciBbbm9kZV09XCJleHRyYUZpZWxkLndpZGdldFwiIFttb2RlXT1cIid2aWV3J1wiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heHAtd2lkZ2V0cy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn0gQGVsc2Uge1xuICA8ZGl2IGNsYXNzPVwiX19oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgPHNwYW4+XG4gICAgICAgIHt7ICdAdGFzay1tYW5hZ2VtZW50OnRhc2stYm9hcmQuZGV0YWlsLXBhbmVsLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGF4LWJ1dHRvbiBbbG9va109XCInYmxhbmsnXCIgY2xhc3M9XCJheC1zbSBheC1yb3VuZGVkLWZ1bGxcIiAob25DbGljayk9XCJ2bS5jbG9zZURldGFpbFBhbmVsKClcIj5cbiAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS14bWFya1wiPjwvYXgtaWNvbj5cbiAgICA8L2F4LWJ1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIl9fY29udGVudCBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgIDxheHAtc3RhdGUtbWVzc2FnZVxuICAgICAgaWNvbj1cImZhLWxpZ2h0IGZhLWNsaXBib2FyZC1saXN0LWNoZWNrXCJcbiAgICAgIFt0aXRsZV09XCInQHRhc2stbWFuYWdlbWVudDp0YXNrLWJvYXJkLmRldGFpbC1wYW5lbC5uby10YXNrLXNlbGVjdGVkLnRpdGxlJ1wiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ0B0YXNrLW1hbmFnZW1lbnQ6dGFzay1ib2FyZC5kZXRhaWwtcGFuZWwubm8tdGFzay1zZWxlY3RlZC5kZXNjcmlwdGlvbidcIlxuICAgID5cbiAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICA8L2Rpdj5cbn1cbiJdfQ==","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule, AXPWidgetsCatalog, } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, ViewEncapsulation, } from '@angular/core';\nimport { isEqual, sortBy } from 'lodash-es';\nimport { RootConfig } from '../../../const';\nimport { AXMTaskBoardViewModel } from '../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/widget-core\";\nimport * as i2 from \"@angular/common\";\nexport class AXMTaskBoardFiltersComponent {\n constructor() {\n this.rootConfig = RootConfig;\n this.vm = inject(AXMTaskBoardViewModel);\n this.isQueryParam = input(false, ...(ngDevMode ? [{ debugName: \"isQueryParam\" }] : []));\n this.applyClicked = output();\n this.context = signal({}, ...(ngDevMode ? [{ debugName: \"context\" }] : []));\n this.isInitialized = false;\n this.#init = effect(() => {\n const isLoading = this.vm.isLoading();\n if (!isLoading && !this.isInitialized) {\n this.resetContextToViewModel();\n this.isInitialized = true;\n }\n }, ...(ngDevMode ? [{ debugName: \"#init\" }] : []));\n this.VALID_PRIORITIES = [\n { title: 'Highest', name: 'highest' },\n { title: 'High', name: 'high' },\n { title: 'Medium', name: 'medium' },\n { title: 'Low', name: 'low' },\n { title: 'Lowest', name: 'lowest' },\n { title: 'No Priority', name: 'no_priority' },\n ];\n this.isMultiSelectEnabled = computed(() => {\n const viewMode = this.vm.currentViewMode();\n return viewMode !== 'kanban' && viewMode !== 'status-grouped-grid';\n }, ...(ngDevMode ? [{ debugName: \"isMultiSelectEnabled\" }] : []));\n this.nodes = computed(() => [\n {\n name: 'taskType',\n path: 'options.taskType',\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: 'task-types',\n placeholder: 'Select Task Type',\n multiple: this.isMultiSelectEnabled(),\n allowClear: this.isMultiSelectEnabled(),\n },\n meta: {\n title: 'task-board.filter.task-type',\n },\n },\n {\n name: 'assignee',\n path: 'options.assignee',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n valueField: 'id',\n allowSearch: true,\n dataSource: 'users',\n textField: 'displayName',\n placeholder: 'Select Assignee',\n },\n meta: {\n title: 'task-board.filter.assignee',\n },\n },\n {\n name: 'reporter',\n path: 'options.reporter',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n valueField: 'id',\n allowSearch: true,\n dataSource: 'users',\n textField: 'displayName',\n placeholder: 'Select Reporter',\n },\n meta: {\n title: 'task-board.filter.reporter',\n },\n },\n {\n name: 'priority',\n path: 'options.priority',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n valueField: 'name',\n textField: 'title',\n direction: 'horizontal',\n placeholder: 'Select Priority',\n dataSource: this.VALID_PRIORITIES,\n },\n meta: {\n title: 'task-board.filter.priority',\n },\n },\n ], ...(ngDevMode ? [{ debugName: \"nodes\" }] : []));\n }\n #init;\n resetContextToViewModel() {\n const vmTaskTypeNames = this.vm.selectedTaskTypeNames();\n const vmAssigneeIds = this.vm.selectedAssigneeIds();\n const vmReporterIds = this.vm.selectedReporterIds();\n const vmPriorities = this.vm.selectedPriorities();\n const currentViewIsMulti = this.isMultiSelectEnabled();\n const taskTypeContextValue = currentViewIsMulti\n ? vmTaskTypeNames\n : vmTaskTypeNames.length > 0\n ? vmTaskTypeNames[0]\n : null;\n this.context.set({\n options: {\n priority: vmPriorities,\n assignee: vmAssigneeIds,\n reporter: vmReporterIds,\n taskType: taskTypeContextValue,\n },\n });\n }\n handleContextChanged(e) {\n this.context.set(e.data);\n }\n handleApply() {\n this.syncTaskTypesToViewModel(this.context()?.options?.taskType);\n this.syncAssigneesToViewModel(this.context()?.options?.assignee);\n this.syncReportersToViewModel(this.context()?.options?.reporter);\n this.syncPrioritiesToViewModel(this.context()?.options?.priority);\n this.applyClicked.emit();\n }\n syncTaskTypesToViewModel(selectedValue) {\n let newNames = [];\n if (Array.isArray(selectedValue)) {\n newNames = selectedValue.filter((v) => v != null).map((t) => (typeof t === 'string' ? t : t.name));\n }\n else if (selectedValue) {\n newNames = [typeof selectedValue === 'string' ? selectedValue : selectedValue.name];\n }\n const currentNames = this.vm.selectedTaskTypeNames();\n if (!isEqual(sortBy(currentNames), sortBy(newNames))) {\n this.vm.setSelectedTaskTypeNames(newNames, this.isQueryParam());\n }\n }\n syncAssigneesToViewModel(selectedAssignees) {\n let newIds = [];\n if (Array.isArray(selectedAssignees)) {\n newIds = selectedAssignees\n .filter((v) => v != null)\n .map((t) => (typeof t === 'string' || typeof t === 'number' ? t : t.id));\n }\n const currentIds = this.vm.selectedAssigneeIds();\n if (!isEqual(sortBy(currentIds), sortBy(newIds))) {\n this.vm.setSelectedAssigneeIds(newIds, this.isQueryParam());\n }\n }\n syncReportersToViewModel(selectedReporters) {\n let newIds = [];\n if (Array.isArray(selectedReporters)) {\n newIds = selectedReporters\n .filter((v) => v != null)\n .map((t) => (typeof t === 'string' || typeof t === 'number' ? t : t.id));\n }\n const currentIds = this.vm.selectedReporterIds();\n if (!isEqual(sortBy(currentIds), sortBy(newIds))) {\n this.vm.setSelectedReporterIds(newIds, this.isQueryParam());\n }\n }\n syncPrioritiesToViewModel(selectedPriorities) {\n let newNames = [];\n if (Array.isArray(selectedPriorities)) {\n newNames = selectedPriorities\n .filter((v) => v != null)\n .map((t) => (typeof t === 'string' ? t : t.name));\n }\n const currentNames = this.vm.selectedPriorities();\n if (!isEqual(sortBy(currentNames), sortBy(newNames))) {\n this.vm.setSelectedPriorities(newNames, this.isQueryParam());\n }\n }\n handleReset() {\n if (this.vm.currentViewMode() === 'kanban' || this.vm.currentViewMode() === 'status-grouped-grid') {\n const currentOptions = this.context();\n this.context.set({\n options: {\n taskType: currentOptions?.options?.taskType,\n },\n });\n return;\n }\n this.context.set({});\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMTaskBoardFiltersComponent, isStandalone: true, selector: \"axm-task-board-filters\", inputs: { isQueryParam: { classPropertyName: \"isQueryParam\", publicName: \"isQueryParam\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { applyClicked: \"applyClicked\" }, ngImport: i0, template: \"<div class=\\\"ax-px-4 ax-py-3 ax-flex ax-flex-col ax-gap-2 ax-sm ax-w-[20rem]\\\">\\n <axp-widgets-container [context]=\\\"context()\\\" (onContextChanged)=\\\"handleContextChanged($event)\\\">\\n <ax-form>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4\\\">\\n @for (node of nodes(); track $index) {\\n <ax-form-field>\\n @if (node.meta?.['title']) {\\n <ax-label>\\n {{ node.meta?.['title'] | translate: { scope: rootConfig.config.i18n } | async }}\\n </ax-label>\\n }\\n <ng-container axp-widget-renderer [node]=\\\"node\\\" [mode]=\\\"'edit'\\\"></ng-container>\\n </ax-form-field>\\n }\\n </div>\\n <div class=\\\"ax-flex ax-gap-2 ax-mt-6 ax-mb-1\\\">\\n <ax-button\\n (onClick)=\\\"handleReset()\\\"\\n class=\\\"ax-w-full\\\"\\n [text]=\\\"'@general:actions.clear.title' | translate | async\\\"\\n ></ax-button>\\n <ax-button\\n color=\\\"primary\\\"\\n [type]=\\\"'submit'\\\"\\n (onClick)=\\\"handleApply()\\\"\\n class=\\\"ax-w-full\\\"\\n [text]=\\\"'@general:actions.apply.title' | translate | async\\\"\\n ></ax-button>\\n </div>\\n </ax-form>\\n </axp-widgets-container>\\n</div>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i1.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i1.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"component\", type: AXFormComponent, selector: \"ax-form\", inputs: [\"disabled\", \"readonly\", \"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"component\", type: AXLabelComponent, selector: \"ax-label\", inputs: [\"required\", \"for\"], outputs: [\"requiredChange\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardFiltersComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-filters', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [\n CommonModule,\n AXFormFieldComponent,\n AXPWidgetCoreModule,\n AXFormComponent,\n AXLabelComponent,\n AXButtonComponent,\n AXTranslatorPipe,\n AsyncPipe,\n ], template: \"<div class=\\\"ax-px-4 ax-py-3 ax-flex ax-flex-col ax-gap-2 ax-sm ax-w-[20rem]\\\">\\n <axp-widgets-container [context]=\\\"context()\\\" (onContextChanged)=\\\"handleContextChanged($event)\\\">\\n <ax-form>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-4\\\">\\n @for (node of nodes(); track $index) {\\n <ax-form-field>\\n @if (node.meta?.['title']) {\\n <ax-label>\\n {{ node.meta?.['title'] | translate: { scope: rootConfig.config.i18n } | async }}\\n </ax-label>\\n }\\n <ng-container axp-widget-renderer [node]=\\\"node\\\" [mode]=\\\"'edit'\\\"></ng-container>\\n </ax-form-field>\\n }\\n </div>\\n <div class=\\\"ax-flex ax-gap-2 ax-mt-6 ax-mb-1\\\">\\n <ax-button\\n (onClick)=\\\"handleReset()\\\"\\n class=\\\"ax-w-full\\\"\\n [text]=\\\"'@general:actions.clear.title' | translate | async\\\"\\n ></ax-button>\\n <ax-button\\n color=\\\"primary\\\"\\n [type]=\\\"'submit'\\\"\\n (onClick)=\\\"handleApply()\\\"\\n class=\\\"ax-w-full\\\"\\n [text]=\\\"'@general:actions.apply.title' | translate | async\\\"\\n ></ax-button>\\n </div>\\n </ax-form>\\n </axp-widgets-container>\\n</div>\\n\" }]\n }], propDecorators: { isQueryParam: [{ type: i0.Input, args: [{ isSignal: true, alias: \"isQueryParam\", required: false }] }], applyClicked: [{ type: i0.Output, args: [\"applyClicked\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy90YXNrLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy90YXNrLWJvYXJkL3Rhc2stYm9hcmQtZmlsdGVycy90YXNrLWJvYXJkLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdGFzay1ib2FyZC1maWx0ZXJzL3Rhc2stYm9hcmQtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUVMLG1CQUFtQixFQUVuQixpQkFBaUIsR0FDbEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixFQUF3QixNQUFNLHlCQUF5QixDQUFDOzs7O0FBdUJ0RixNQUFNLE9BQU8sNEJBQTRCO0lBaEJ6QztRQWlCcUIsZUFBVSxHQUFHLFVBQVUsQ0FBQztRQUUxQixPQUFFLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFcEQsaUJBQVksR0FBRyxLQUFLLENBQVUsS0FBSyx3REFBQyxDQUFDO1FBRXJDLGlCQUFZLEdBQUcsTUFBTSxFQUFRLENBQUM7UUFFcEIsWUFBTyxHQUFHLE1BQU0sQ0FBb0IsRUFBRSxtREFBQyxDQUFDO1FBQzFDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTlCLFVBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2xCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDLGlEQUFDLENBQUM7UUFFYyxxQkFBZ0IsR0FBb0Q7WUFDbkYsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDckMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDL0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDbkMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDN0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDbkMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7U0FDOUMsQ0FBQztRQXlCZSx5QkFBb0IsR0FBRyxRQUFRLENBQVUsR0FBRyxFQUFFO1lBQzdELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0MsT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxxQkFBcUIsQ0FBQztRQUNyRSxDQUFDLGdFQUFDLENBQUM7UUFFTyxVQUFLLEdBQUcsUUFBUSxDQUFrQixHQUFHLEVBQUUsQ0FBQztZQUNoRDtnQkFDRSxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07Z0JBQzlCLE9BQU8sRUFBRTtvQkFDUCxVQUFVLEVBQUUsTUFBTTtvQkFDbEIsU0FBUyxFQUFFLE9BQU87b0JBQ2xCLFVBQVUsRUFBRSxZQUFZO29CQUN4QixXQUFXLEVBQUUsa0JBQWtCO29CQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFO29CQUNyQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2lCQUN4QztnQkFDRCxJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLDZCQUE2QjtpQkFDckM7YUFDRjtZQUNEO2dCQUNFLElBQUksRUFBRSxVQUFVO2dCQUNoQixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtnQkFDOUIsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxJQUFJO29CQUNoQixXQUFXLEVBQUUsSUFBSTtvQkFDakIsVUFBVSxFQUFFLE9BQU87b0JBQ25CLFNBQVMsRUFBRSxhQUFhO29CQUN4QixXQUFXLEVBQUUsaUJBQWlCO2lCQUMvQjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLDRCQUE0QjtpQkFDcEM7YUFDRjtZQUNEO2dCQUNFLElBQUksRUFBRSxVQUFVO2dCQUNoQixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtnQkFDOUIsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxJQUFJO29CQUNoQixXQUFXLEVBQUUsSUFBSTtvQkFDakIsVUFBVSxFQUFFLE9BQU87b0JBQ25CLFNBQVMsRUFBRSxhQUFhO29CQUN4QixXQUFXLEVBQUUsaUJBQWlCO2lCQUMvQjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLDRCQUE0QjtpQkFDcEM7YUFDRjtZQUNEO2dCQUNFLElBQUksRUFBRSxVQUFVO2dCQUNoQixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtnQkFDOUIsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxNQUFNO29CQUNsQixTQUFTLEVBQUUsT0FBTztvQkFDbEIsU0FBUyxFQUFFLFlBQVk7b0JBQ3ZCLFdBQVcsRUFBRSxpQkFBaUI7b0JBQzlCLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO2lCQUNsQztnQkFDRCxJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLDRCQUE0QjtpQkFDcEM7YUFDRjtTQUNGLGlEQUFDLENBQUM7S0E4RUo7SUE1TEMsS0FBSyxDQU1GO0lBV0ksdUJBQXVCO1FBQzVCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDcEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRXZELE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCO1lBQzdDLENBQUMsQ0FBQyxlQUFlO1lBQ2pCLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDO1FBRVgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDZixPQUFPLEVBQUU7Z0JBQ1AsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsUUFBUSxFQUFFLG9CQUFvQjthQUMvQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUEwRVMsb0JBQW9CLENBQUMsQ0FBa0M7UUFDL0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFUyxXQUFXO1FBQ25CLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLHdCQUF3QixDQUFDLGFBQTJFO1FBQzFHLElBQUksUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxRQUFRLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckcsQ0FBQzthQUFNLElBQUksYUFBYSxFQUFFLENBQUM7WUFDekIsUUFBUSxHQUFHLENBQUMsT0FBTyxhQUFhLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxpQkFBc0U7UUFDckcsSUFBSSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sR0FBRyxpQkFBaUI7aUJBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztpQkFDeEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsaUJBQXNFO1FBQ3JHLElBQUksTUFBTSxHQUF3QixFQUFFLENBQUM7UUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEdBQUcsaUJBQWlCO2lCQUN2QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7aUJBQ3hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUVPLHlCQUF5QixDQUFDLGtCQUE0RDtRQUM1RixJQUFJLFFBQVEsR0FBMkIsRUFBRSxDQUFDO1FBQzFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDdEMsUUFBUSxHQUFHLGtCQUFrQjtpQkFDMUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO2lCQUN4QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBRSxDQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUM7SUFFUyxXQUFXO1FBQ25CLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2xHLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDZixPQUFPLEVBQUU7b0JBQ1AsUUFBUSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsUUFBUTtpQkFDNUM7YUFDRixDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7K0dBdk1VLDRCQUE0QjttR0FBNUIsNEJBQTRCLHNSQy9DekMseXRDQWdDQSwyQ0RLSSxZQUFZLCtCQUNaLG9CQUFvQixnRkFDcEIsbUJBQW1CLCtaQUNuQixlQUFlLGtMQUNmLGdCQUFnQiwrR0FDaEIsaUJBQWlCLDJYQUNqQixnQkFBZ0I7OzRGQUlQLDRCQUE0QjtrQkFoQnhDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUVqQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsU0FBUztxQkFDViIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWEZvcm1Db21wb25lbnQsIEFYRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhMYWJlbENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7XG4gIEFYUFdpZGdldENvcmVDb250ZXh0Q2hhbmdlRXZlbnQsXG4gIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gIEFYUFdpZGdldE5vZGUsXG4gIEFYUFdpZGdldHNDYXRhbG9nLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFcXVhbCwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRWaWV3TW9kZWwsIEFYUFByaW9yaXR5RmlsdGVyS2V5IH0gZnJvbSAnLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG50eXBlIFRhc2tUeXBlID0geyBuYW1lOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfTtcbnR5cGUgQXNzaWduZWUgPSB7IGlkOiBzdHJpbmcgfCBudW1iZXI7IFtrZXk6IHN0cmluZ106IGFueSB9O1xudHlwZSBSZXBvcnRlciA9IHsgaWQ6IHN0cmluZyB8IG51bWJlcjsgW2tleTogc3RyaW5nXTogYW55IH07XG50eXBlIFByaW9yaXR5ID0geyBuYW1lOiBBWFBQcmlvcml0eUZpbHRlcktleTsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS10YXNrLWJvYXJkLWZpbHRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1ib2FyZC1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhGb3JtRmllbGRDb21wb25lbnQsXG4gICAgQVhQV2lkZ2V0Q29yZU1vZHVsZSxcbiAgICBBWEZvcm1Db21wb25lbnQsXG4gICAgQVhMYWJlbENvbXBvbmVudCxcbiAgICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgICBBWFRyYW5zbGF0b3JQaXBlLFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVGFza0JvYXJkRmlsdGVyc0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSByb290Q29uZmlnID0gUm9vdENvbmZpZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYTVRhc2tCb2FyZFZpZXdNb2RlbCk7XG5cbiAgaXNRdWVyeVBhcmFtID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGFwcGx5Q2xpY2tlZCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHByb3RlY3RlZCBjb250ZXh0ID0gc2lnbmFsPHsgb3B0aW9ucz86IGFueSB9Pih7fSk7XG4gIHByaXZhdGUgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICNpbml0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpc0xvYWRpbmcgPSB0aGlzLnZtLmlzTG9hZGluZygpO1xuICAgIGlmICghaXNMb2FkaW5nICYmICF0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMucmVzZXRDb250ZXh0VG9WaWV3TW9kZWwoKTtcbiAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFZBTElEX1BSSU9SSVRJRVM6IHsgdGl0bGU6IHN0cmluZzsgbmFtZTogQVhQUHJpb3JpdHlGaWx0ZXJLZXkgfVtdID0gW1xuICAgIHsgdGl0bGU6ICdIaWdoZXN0JywgbmFtZTogJ2hpZ2hlc3QnIH0sXG4gICAgeyB0aXRsZTogJ0hpZ2gnLCBuYW1lOiAnaGlnaCcgfSxcbiAgICB7IHRpdGxlOiAnTWVkaXVtJywgbmFtZTogJ21lZGl1bScgfSxcbiAgICB7IHRpdGxlOiAnTG93JywgbmFtZTogJ2xvdycgfSxcbiAgICB7IHRpdGxlOiAnTG93ZXN0JywgbmFtZTogJ2xvd2VzdCcgfSxcbiAgICB7IHRpdGxlOiAnTm8gUHJpb3JpdHknLCBuYW1lOiAnbm9fcHJpb3JpdHknIH0sXG4gIF07XG5cbiAgcHVibGljIHJlc2V0Q29udGV4dFRvVmlld01vZGVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHZtVGFza1R5cGVOYW1lcyA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrVHlwZU5hbWVzKCk7XG4gICAgY29uc3Qgdm1Bc3NpZ25lZUlkcyA9IHRoaXMudm0uc2VsZWN0ZWRBc3NpZ25lZUlkcygpO1xuICAgIGNvbnN0IHZtUmVwb3J0ZXJJZHMgPSB0aGlzLnZtLnNlbGVjdGVkUmVwb3J0ZXJJZHMoKTtcbiAgICBjb25zdCB2bVByaW9yaXRpZXMgPSB0aGlzLnZtLnNlbGVjdGVkUHJpb3JpdGllcygpO1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3SXNNdWx0aSA9IHRoaXMuaXNNdWx0aVNlbGVjdEVuYWJsZWQoKTtcblxuICAgIGNvbnN0IHRhc2tUeXBlQ29udGV4dFZhbHVlID0gY3VycmVudFZpZXdJc011bHRpXG4gICAgICA/IHZtVGFza1R5cGVOYW1lc1xuICAgICAgOiB2bVRhc2tUeXBlTmFtZXMubGVuZ3RoID4gMFxuICAgICAgICA/IHZtVGFza1R5cGVOYW1lc1swXVxuICAgICAgICA6IG51bGw7XG5cbiAgICB0aGlzLmNvbnRleHQuc2V0KHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgcHJpb3JpdHk6IHZtUHJpb3JpdGllcyxcbiAgICAgICAgYXNzaWduZWU6IHZtQXNzaWduZWVJZHMsXG4gICAgICAgIHJlcG9ydGVyOiB2bVJlcG9ydGVySWRzLFxuICAgICAgICB0YXNrVHlwZTogdGFza1R5cGVDb250ZXh0VmFsdWUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc011bHRpU2VsZWN0RW5hYmxlZCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICBjb25zdCB2aWV3TW9kZSA9IHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCk7XG4gICAgcmV0dXJuIHZpZXdNb2RlICE9PSAna2FuYmFuJyAmJiB2aWV3TW9kZSAhPT0gJ3N0YXR1cy1ncm91cGVkLWdyaWQnO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgbm9kZXMgPSBjb21wdXRlZDxBWFBXaWRnZXROb2RlW10+KCgpID0+IFtcbiAgICB7XG4gICAgICBuYW1lOiAndGFza1R5cGUnLFxuICAgICAgcGF0aDogJ29wdGlvbnMudGFza1R5cGUnLFxuICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICB2YWx1ZUZpZWxkOiAnbmFtZScsXG4gICAgICAgIHRleHRGaWVsZDogJ3RpdGxlJyxcbiAgICAgICAgZGF0YVNvdXJjZTogJ3Rhc2stdHlwZXMnLFxuICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBUYXNrIFR5cGUnLFxuICAgICAgICBtdWx0aXBsZTogdGhpcy5pc011bHRpU2VsZWN0RW5hYmxlZCgpLFxuICAgICAgICBhbGxvd0NsZWFyOiB0aGlzLmlzTXVsdGlTZWxlY3RFbmFibGVkKCksXG4gICAgICB9LFxuICAgICAgbWV0YToge1xuICAgICAgICB0aXRsZTogJ3Rhc2stYm9hcmQuZmlsdGVyLnRhc2stdHlwZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Fzc2lnbmVlJyxcbiAgICAgIHBhdGg6ICdvcHRpb25zLmFzc2lnbmVlJyxcbiAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgIHZhbHVlRmllbGQ6ICdpZCcsXG4gICAgICAgIGFsbG93U2VhcmNoOiB0cnVlLFxuICAgICAgICBkYXRhU291cmNlOiAndXNlcnMnLFxuICAgICAgICB0ZXh0RmllbGQ6ICdkaXNwbGF5TmFtZScsXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IEFzc2lnbmVlJyxcbiAgICAgIH0sXG4gICAgICBtZXRhOiB7XG4gICAgICAgIHRpdGxlOiAndGFzay1ib2FyZC5maWx0ZXIuYXNzaWduZWUnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdyZXBvcnRlcicsXG4gICAgICBwYXRoOiAnb3B0aW9ucy5yZXBvcnRlcicsXG4gICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5zZWxlY3QsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICB2YWx1ZUZpZWxkOiAnaWQnLFxuICAgICAgICBhbGxvd1NlYXJjaDogdHJ1ZSxcbiAgICAgICAgZGF0YVNvdXJjZTogJ3VzZXJzJyxcbiAgICAgICAgdGV4dEZpZWxkOiAnZGlzcGxheU5hbWUnLFxuICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBSZXBvcnRlcicsXG4gICAgICB9LFxuICAgICAgbWV0YToge1xuICAgICAgICB0aXRsZTogJ3Rhc2stYm9hcmQuZmlsdGVyLnJlcG9ydGVyJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAncHJpb3JpdHknLFxuICAgICAgcGF0aDogJ29wdGlvbnMucHJpb3JpdHknLFxuICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWVGaWVsZDogJ25hbWUnLFxuICAgICAgICB0ZXh0RmllbGQ6ICd0aXRsZScsXG4gICAgICAgIGRpcmVjdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBQcmlvcml0eScsXG4gICAgICAgIGRhdGFTb3VyY2U6IHRoaXMuVkFMSURfUFJJT1JJVElFUyxcbiAgICAgIH0sXG4gICAgICBtZXRhOiB7XG4gICAgICAgIHRpdGxlOiAndGFzay1ib2FyZC5maWx0ZXIucHJpb3JpdHknLFxuICAgICAgfSxcbiAgICB9LFxuICBdKTtcblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29udGV4dENoYW5nZWQoZTogQVhQV2lkZ2V0Q29yZUNvbnRleHRDaGFuZ2VFdmVudCkge1xuICAgIHRoaXMuY29udGV4dC5zZXQoZS5kYXRhKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVBcHBseSgpIHtcbiAgICB0aGlzLnN5bmNUYXNrVHlwZXNUb1ZpZXdNb2RlbCh0aGlzLmNvbnRleHQoKT8ub3B0aW9ucz8udGFza1R5cGUpO1xuICAgIHRoaXMuc3luY0Fzc2lnbmVlc1RvVmlld01vZGVsKHRoaXMuY29udGV4dCgpPy5vcHRpb25zPy5hc3NpZ25lZSk7XG4gICAgdGhpcy5zeW5jUmVwb3J0ZXJzVG9WaWV3TW9kZWwodGhpcy5jb250ZXh0KCk/Lm9wdGlvbnM/LnJlcG9ydGVyKTtcbiAgICB0aGlzLnN5bmNQcmlvcml0aWVzVG9WaWV3TW9kZWwodGhpcy5jb250ZXh0KCk/Lm9wdGlvbnM/LnByaW9yaXR5KTtcbiAgICB0aGlzLmFwcGx5Q2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNUYXNrVHlwZXNUb1ZpZXdNb2RlbChzZWxlY3RlZFZhbHVlOiBUYXNrVHlwZSB8IFRhc2tUeXBlW10gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBsZXQgbmV3TmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRWYWx1ZSkpIHtcbiAgICAgIG5ld05hbWVzID0gc2VsZWN0ZWRWYWx1ZS5maWx0ZXIoKHYpID0+IHYgIT0gbnVsbCkubWFwKCh0KSA9PiAodHlwZW9mIHQgPT09ICdzdHJpbmcnID8gdCA6IHQubmFtZSkpO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgbmV3TmFtZXMgPSBbdHlwZW9mIHNlbGVjdGVkVmFsdWUgPT09ICdzdHJpbmcnID8gc2VsZWN0ZWRWYWx1ZSA6IHNlbGVjdGVkVmFsdWUubmFtZV07XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnROYW1lcyA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrVHlwZU5hbWVzKCk7XG4gICAgaWYgKCFpc0VxdWFsKHNvcnRCeShjdXJyZW50TmFtZXMpLCBzb3J0QnkobmV3TmFtZXMpKSkge1xuICAgICAgdGhpcy52bS5zZXRTZWxlY3RlZFRhc2tUeXBlTmFtZXMobmV3TmFtZXMsIHRoaXMuaXNRdWVyeVBhcmFtKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3luY0Fzc2lnbmVlc1RvVmlld01vZGVsKHNlbGVjdGVkQXNzaWduZWVzOiBBc3NpZ25lZVtdIHwgKHN0cmluZyB8IG51bWJlcilbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBsZXQgbmV3SWRzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRBc3NpZ25lZXMpKSB7XG4gICAgICBuZXdJZHMgPSBzZWxlY3RlZEFzc2lnbmVlc1xuICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ICE9IG51bGwpXG4gICAgICAgIC5tYXAoKHQpID0+ICh0eXBlb2YgdCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHQgPT09ICdudW1iZXInID8gdCA6IHQuaWQpKTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudElkcyA9IHRoaXMudm0uc2VsZWN0ZWRBc3NpZ25lZUlkcygpO1xuICAgIGlmICghaXNFcXVhbChzb3J0QnkoY3VycmVudElkcyksIHNvcnRCeShuZXdJZHMpKSkge1xuICAgICAgdGhpcy52bS5zZXRTZWxlY3RlZEFzc2lnbmVlSWRzKG5ld0lkcywgdGhpcy5pc1F1ZXJ5UGFyYW0oKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzeW5jUmVwb3J0ZXJzVG9WaWV3TW9kZWwoc2VsZWN0ZWRSZXBvcnRlcnM6IFJlcG9ydGVyW10gfCAoc3RyaW5nIHwgbnVtYmVyKVtdIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGxldCBuZXdJZHM6IChzdHJpbmcgfCBudW1iZXIpW10gPSBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZFJlcG9ydGVycykpIHtcbiAgICAgIG5ld0lkcyA9IHNlbGVjdGVkUmVwb3J0ZXJzXG4gICAgICAgIC5maWx0ZXIoKHYpID0+IHYgIT0gbnVsbClcbiAgICAgICAgLm1hcCgodCkgPT4gKHR5cGVvZiB0ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdCA9PT0gJ251bWJlcicgPyB0IDogdC5pZCkpO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SWRzID0gdGhpcy52bS5zZWxlY3RlZFJlcG9ydGVySWRzKCk7XG4gICAgaWYgKCFpc0VxdWFsKHNvcnRCeShjdXJyZW50SWRzKSwgc29ydEJ5KG5ld0lkcykpKSB7XG4gICAgICB0aGlzLnZtLnNldFNlbGVjdGVkUmVwb3J0ZXJJZHMobmV3SWRzLCB0aGlzLmlzUXVlcnlQYXJhbSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN5bmNQcmlvcml0aWVzVG9WaWV3TW9kZWwoc2VsZWN0ZWRQcmlvcml0aWVzOiBQcmlvcml0eVtdIHwgc3RyaW5nW10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgbGV0IG5ld05hbWVzOiBBWFBQcmlvcml0eUZpbHRlcktleVtdID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRQcmlvcml0aWVzKSkge1xuICAgICAgbmV3TmFtZXMgPSBzZWxlY3RlZFByaW9yaXRpZXNcbiAgICAgICAgLmZpbHRlcigodikgPT4gdiAhPSBudWxsKVxuICAgICAgICAubWFwKCh0KSA9PiAodHlwZW9mIHQgPT09ICdzdHJpbmcnID8gKHQgYXMgQVhQUHJpb3JpdHlGaWx0ZXJLZXkpIDogdC5uYW1lKSk7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnROYW1lcyA9IHRoaXMudm0uc2VsZWN0ZWRQcmlvcml0aWVzKCk7XG4gICAgaWYgKCFpc0VxdWFsKHNvcnRCeShjdXJyZW50TmFtZXMpLCBzb3J0QnkobmV3TmFtZXMpKSkge1xuICAgICAgdGhpcy52bS5zZXRTZWxlY3RlZFByaW9yaXRpZXMobmV3TmFtZXMsIHRoaXMuaXNRdWVyeVBhcmFtKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSZXNldCgpIHtcbiAgICBpZiAodGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSA9PT0gJ2thbmJhbicgfHwgdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSA9PT0gJ3N0YXR1cy1ncm91cGVkLWdyaWQnKSB7XG4gICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuY29udGV4dCgpO1xuICAgICAgdGhpcy5jb250ZXh0LnNldCh7XG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0YXNrVHlwZTogY3VycmVudE9wdGlvbnM/Lm9wdGlvbnM/LnRhc2tUeXBlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29udGV4dC5zZXQoe30pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtcHgtNCBheC1weS0zIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtc20gYXgtdy1bMjByZW1dXCI+XG4gIDxheHAtd2lkZ2V0cy1jb250YWluZXIgW2NvbnRleHRdPVwiY29udGV4dCgpXCIgKG9uQ29udGV4dENoYW5nZWQpPVwiaGFuZGxlQ29udGV4dENoYW5nZWQoJGV2ZW50KVwiPlxuICAgIDxheC1mb3JtPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTRcIj5cbiAgICAgICAgQGZvciAobm9kZSBvZiBub2RlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIEBpZiAobm9kZS5tZXRhPy5bJ3RpdGxlJ10pIHtcbiAgICAgICAgICAgICAgPGF4LWxhYmVsPlxuICAgICAgICAgICAgICAgIHt7IG5vZGUubWV0YT8uWyd0aXRsZSddIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L2F4LWxhYmVsPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cIm5vZGVcIiBbbW9kZV09XCInZWRpdCdcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTIgYXgtbXQtNiBheC1tYi0xXCI+XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVSZXNldCgpXCJcbiAgICAgICAgICBjbGFzcz1cImF4LXctZnVsbFwiXG4gICAgICAgICAgW3RleHRdPVwiJ0BnZW5lcmFsOmFjdGlvbnMuY2xlYXIudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIFt0eXBlXT1cIidzdWJtaXQnXCJcbiAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVBcHBseSgpXCJcbiAgICAgICAgICBjbGFzcz1cImF4LXctZnVsbFwiXG4gICAgICAgICAgW3RleHRdPVwiJ0BnZW5lcmFsOmFjdGlvbnMuYXBwbHkudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4LWZvcm0+XG4gIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=","import { AXSchedulerComponent, } from '@acorex/components/scheduler';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nexport class AXMTaskBoardCalendarViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.calendarService = inject(AXCalendarService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.settingService = inject(AXPSettingService);\n this.schedulerComponent = viewChild(AXSchedulerComponent, ...(ngDevMode ? [{ debugName: \"schedulerComponent\" }] : []));\n this.resources = input([], ...(ngDevMode ? [{ debugName: \"resources\" }] : []));\n this.startingDate = input(new Date(), ...(ngDevMode ? [{ debugName: \"startingDate\" }] : []));\n this.selectedView = input('month', ...(ngDevMode ? [{ debugName: \"selectedView\" }] : []));\n this.dataSource = input.required(...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.firstDayOfWeek = signal('monday', ...(ngDevMode ? [{ debugName: \"firstDayOfWeek\" }] : []));\n this.weekendDays = signal([0, 6], ...(ngDevMode ? [{ debugName: \"weekendDays\" }] : []));\n this.holidays = (range) => {\n return this.taskBoardService.getEvents(range);\n };\n this.currentSchedulerView = computed(() => this.selectedView() === 'kanban' || this.selectedView() === 'grid'\n ? 'month'\n : this.selectedView(), ...(ngDevMode ? [{ debugName: \"currentSchedulerView\" }] : []));\n this.onTaskClick = output();\n this.onTaskChanged = output();\n this.onMonthSlotDblClicked = output();\n this.onActionClick = output();\n this.component = output();\n this.onTaskRightClick = output();\n this.onRangeChanged = output();\n }\n // async ngOnInit(): Promise<void> {\n // const firstDayOfWeek = await this.settingService.get(AXPRegionalSetting.FirstDayOfWeek) as unknown as number;\n // const weekDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n // this.firstDayOfWeek.set(weekDays[firstDayOfWeek] as unknown as AXDayOfWeekName);\n // this.weekendDays.set((await this.settingService.get(AXPRegionalSetting.WeekendDays)) as unknown as number[]);\n // }\n async ngAfterViewInit() {\n if (this.schedulerComponent()) {\n this.component.emit(this.schedulerComponent());\n }\n }\n onTaskDrop(event) {\n if (event.isSameSlotDrop)\n return;\n let from;\n let end;\n const apptStartDate = this.calendarService.create(event.appointment.startDate);\n const apptEndDate = event.appointment.endDate;\n const apptDiffTime = Math.abs(apptStartDate.date.getTime() - apptEndDate.getTime());\n switch (event.slot.view) {\n case 'month':\n case 'agenda':\n from = this.calendarService\n .create(event.slot.startDate.date)\n .set('hour', apptStartDate.hour)\n .set('minute', apptStartDate.minute)\n .set('second', apptStartDate.second).date;\n end = new Date(from.getTime() + apptDiffTime);\n break;\n default:\n from = event.slot.startDate.date;\n end = event.slot.endDate.date;\n const isAllDay = Math.abs(from.getTime() - end.getTime()) >= 24 * 60 * 60 * 1000 - 1;\n const wasAllDay = apptDiffTime >= 24 * 60 * 60 * 1000 - 1;\n if ((wasAllDay && isAllDay) || (!wasAllDay && !isAllDay)) {\n end = new Date(from.getTime() + apptDiffTime);\n }\n break;\n }\n this.taskBoardService.updateTaskDateRange(event.appointment, { from, end }).then((task) => {\n this.onTaskChanged.emit(task);\n this.schedulerComponent()?.refresh([task]);\n });\n }\n onTaskRightClickHandler(event) {\n this.onTaskRightClick.emit({ nativeEvent: event.nativeEvent, task: event.appointment });\n }\n onSlotDblClicked(event) {\n if (event.sender.selectedView() === 'month') {\n this.onMonthSlotDblClicked.emit(event.slot.startDate.date);\n }\n }\n async handleRangeChanged(event) {\n this.onRangeChanged.emit(event);\n }\n handleActionClick(event) {\n this.onActionClick.emit({ nativeEvent: event.nativeEvent, task: event.appointment });\n }\n onTaskClickHandler(event) {\n this.onTaskClick.emit(event.appointment);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardCalendarViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.3.12\", type: AXMTaskBoardCalendarViewComponent, isStandalone: true, selector: \"axm-task-board-calendar-view\", inputs: { resources: { classPropertyName: \"resources\", publicName: \"resources\", isSignal: true, isRequired: false, transformFunction: null }, startingDate: { classPropertyName: \"startingDate\", publicName: \"startingDate\", isSignal: true, isRequired: false, transformFunction: null }, selectedView: { classPropertyName: \"selectedView\", publicName: \"selectedView\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onTaskClick: \"onTaskClick\", onTaskChanged: \"onTaskChanged\", onMonthSlotDblClicked: \"onMonthSlotDblClicked\", onActionClick: \"onActionClick\", component: \"component\", onTaskRightClick: \"onTaskRightClick\", onRangeChanged: \"onRangeChanged\" }, viewQueries: [{ propertyName: \"schedulerComponent\", first: true, predicate: AXSchedulerComponent, descendants: true, isSignal: true }], ngImport: i0, template: \"<ax-scheduler\\n [hasHeader]=\\\"false\\\"\\n [hasActions]=\\\"true\\\"\\n [holidays]=\\\"holidays\\\"\\n [resources]=\\\"resources()\\\"\\n [dataSource]=\\\"dataSource()\\\"\\n [startingDate]=\\\"startingDate()\\\"\\n [selectedView]=\\\"currentSchedulerView()\\\"\\n [multiDayViewDaysCount]=\\\"vm.daysCount()\\\"\\n (onAppointmentDrop)=\\\"onTaskDrop($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n (onRangeChanged)=\\\"handleRangeChanged($event)\\\"\\n (onSlotDblClicked)=\\\"onSlotDblClicked($event)\\\"\\n (onAppointmentClicked)=\\\"onTaskClickHandler($event)\\\"\\n (onAppointmentRightClick)=\\\"onTaskRightClickHandler($event)\\\"\\n [weekend]=\\\"weekendDays()\\\"\\n [firstDayOfWeek]=\\\"firstDayOfWeek()\\\"\\n></ax-scheduler>\\n\", styles: [\"ax-scheduler{line-height:1.5;background-color:rgba(var(--ax-sys-color-lightest-surface))!important}\\n\"], dependencies: [{ kind: \"component\", type: AXSchedulerComponent, selector: \"ax-scheduler\", inputs: [\"calendar\", \"startingDate\", \"endDayHour\", \"startDayHour\", \"hasHeader\", \"readonly\", \"draggable\", \"hasActions\", \"dragStartDelay\", \"weekend\", \"allowFullScreen\", \"multiDayViewDaysCount\", \"showResourceHeaders\", \"showCurrentTimeIndicator\", \"showUnassignedAppointments\", \"resources\", \"resourceTemplate\", \"firstDayOfWeek\", \"tooltipTemplate\", \"dataSource\", \"holidays\", \"views\", \"selectedView\"], outputs: [\"selectedViewChange\", \"onDataLoaded\", \"onRangeChanged\", \"onSlotClicked\", \"onSlotDblClicked\", \"onSlotRightClick\", \"onAppointmentDrop\", \"onActionClick\", \"onAppointmentClicked\", \"onAppointmentDblClicked\", \"onAppointmentRightClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardCalendarViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-calendar-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXSchedulerComponent], template: \"<ax-scheduler\\n [hasHeader]=\\\"false\\\"\\n [hasActions]=\\\"true\\\"\\n [holidays]=\\\"holidays\\\"\\n [resources]=\\\"resources()\\\"\\n [dataSource]=\\\"dataSource()\\\"\\n [startingDate]=\\\"startingDate()\\\"\\n [selectedView]=\\\"currentSchedulerView()\\\"\\n [multiDayViewDaysCount]=\\\"vm.daysCount()\\\"\\n (onAppointmentDrop)=\\\"onTaskDrop($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n (onRangeChanged)=\\\"handleRangeChanged($event)\\\"\\n (onSlotDblClicked)=\\\"onSlotDblClicked($event)\\\"\\n (onAppointmentClicked)=\\\"onTaskClickHandler($event)\\\"\\n (onAppointmentRightClick)=\\\"onTaskRightClickHandler($event)\\\"\\n [weekend]=\\\"weekendDays()\\\"\\n [firstDayOfWeek]=\\\"firstDayOfWeek()\\\"\\n></ax-scheduler>\\n\", styles: [\"ax-scheduler{line-height:1.5;background-color:rgba(var(--ax-sys-color-lightest-surface))!important}\\n\"] }]\n }], propDecorators: { schedulerComponent: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXSchedulerComponent), { isSignal: true }] }], resources: [{ type: i0.Input, args: [{ isSignal: true, alias: \"resources\", required: false }] }], startingDate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"startingDate\", required: false }] }], selectedView: [{ type: i0.Input, args: [{ isSignal: true, alias: \"selectedView\", required: false }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dataSource\", required: true }] }], onTaskClick: [{ type: i0.Output, args: [\"onTaskClick\"] }], onTaskChanged: [{ type: i0.Output, args: [\"onTaskChanged\"] }], onMonthSlotDblClicked: [{ type: i0.Output, args: [\"onMonthSlotDblClicked\"] }], onActionClick: [{ type: i0.Output, args: [\"onActionClick\"] }], component: [{ type: i0.Output, args: [\"component\"] }], onTaskRightClick: [{ type: i0.Output, args: [\"onTaskRightClick\"] }], onRangeChanged: [{ type: i0.Output, args: [\"onRangeChanged\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1jYWxlbmRhci12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy90YXNrLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy90YXNrLWJvYXJkL3ZpZXdzL3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy90YXNrLWJvYXJkLWNhbGVuZGFyLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1jYWxlbmRhci12aWV3L3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsb0JBQW9CLEdBS3JCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLHdCQUF3QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUscUJBQXFCLEVBQXdCLE1BQU0sNEJBQTRCLENBQUM7O0FBVXpGLE1BQU0sT0FBTyxpQ0FBaUM7SUFSOUM7UUFTcUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25DLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDL0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU5RCx1QkFBa0IsR0FBRyxTQUFTLENBQUMsb0JBQW9CLDhEQUFDLENBQUM7UUFFckQsY0FBUyxHQUFHLEtBQUssQ0FBZ0IsRUFBRSxxREFBQyxDQUFDO1FBQ3JDLGlCQUFZLEdBQUcsS0FBSyxDQUFPLElBQUksSUFBSSxFQUFFLHdEQUFDLENBQUM7UUFDdkMsaUJBQVksR0FBRyxLQUFLLENBQXVCLE9BQU8sd0RBQUMsQ0FBQztRQUNwRCxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEscURBQW9DLENBQUM7UUFDdEQsbUJBQWMsR0FBRyxNQUFNLENBQWtCLFFBQVEsMERBQUMsQ0FBQztRQUNuRCxnQkFBVyxHQUFHLE1BQU0sQ0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsdURBQUMsQ0FBQztRQUV2QyxhQUFRLEdBQUcsQ0FBQyxLQUEyQixFQUE0QixFQUFFO1lBQzdFLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUM7UUFFUSx5QkFBb0IsR0FBRyxRQUFRLENBQWtCLEdBQUcsRUFBRSxDQUM5RCxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxNQUFNO1lBQ2hFLENBQUMsQ0FBQyxPQUFPO1lBQ1QsQ0FBQyxDQUFFLElBQUksQ0FBQyxZQUFZLEVBQXNCLGdFQUM3QyxDQUFDO1FBRUYsZ0JBQVcsR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLE1BQU0sRUFBVyxDQUFDO1FBQ2xDLDBCQUFxQixHQUFHLE1BQU0sRUFBUSxDQUFDO1FBQ3ZDLGtCQUFhLEdBQUcsTUFBTSxFQUFpQixDQUFDO1FBQ3hDLGNBQVMsR0FBRyxNQUFNLEVBQXdCLENBQUM7UUFDM0MscUJBQWdCLEdBQUcsTUFBTSxFQUFpQixDQUFDO1FBQzNDLG1CQUFjLEdBQUcsTUFBTSxFQUF3QixDQUFDO0tBMEVqRDtJQXhFQyxvQ0FBb0M7SUFDcEMsa0hBQWtIO0lBQ2xILHFHQUFxRztJQUNyRyxxRkFBcUY7SUFDckYsa0hBQWtIO0lBQ2xILElBQUk7SUFFSixLQUFLLENBQUMsZUFBZTtRQUNuQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFHLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVTLFVBQVUsQ0FBQyxLQUErQjtRQUNsRCxJQUFJLEtBQUssQ0FBQyxjQUFjO1lBQUUsT0FBTztRQUNqQyxJQUFJLElBQVUsQ0FBQztRQUNmLElBQUksR0FBUyxDQUFDO1FBQ2QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUU5QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDcEYsUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hCLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxRQUFRO2dCQUNYLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZTtxQkFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztxQkFDakMsR0FBRyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDO3FCQUMvQixHQUFHLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUM7cUJBQ25DLEdBQUcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDNUMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQztnQkFDOUMsTUFBTTtZQUVSO2dCQUNFLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pDLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBRTlCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQ3JGLE1BQU0sU0FBUyxHQUFHLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2dCQUUxRCxJQUFJLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUN6RCxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO2dCQUNELE1BQU07UUFDVixDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxXQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyx1QkFBdUIsQ0FBQyxLQUF1QztRQUN2RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFzQixFQUFFLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsS0FBZ0M7UUFDekQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUM7SUFFUyxLQUFLLENBQUMsa0JBQWtCLENBQUMsS0FBMkI7UUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQXVDO1FBQ2pFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFzQixFQUFFLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRVMsa0JBQWtCLENBQUMsS0FBdUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQXNCLENBQUMsQ0FBQztJQUN0RCxDQUFDOytHQXhHVSxpQ0FBaUM7bUdBQWpDLGlDQUFpQyxxN0JBTWIsb0JBQW9CLGdFQzFDckQsdXJCQWtCQSwrSkRnQlksb0JBQW9COzs0RkFFbkIsaUNBQWlDO2tCQVI3QyxTQUFTOytCQUNFLDhCQUE4QixtQkFHdkIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxXQUM1QixDQUFDLG9CQUFvQixDQUFDO29HQVFBLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYRGF5T2ZXZWVrTmFtZSxcbiAgQVhTY2hlZHVsZXJBcHBvaW50bWVudERhdGFTb3VyY2UsXG4gIEFYU2NoZWR1bGVyQXBwb2ludG1lbnRNb3VzZUV2ZW50LFxuICBBWFNjaGVkdWxlckNvbXBvbmVudCxcbiAgQVhTY2hlZHVsZXJEYXRlUmFuZ2UsXG4gIEFYU2NoZWR1bGVyU2xvdERyb3BFdmVudCxcbiAgQVhTY2hlZHVsZXJTbG90TW91c2VFdmVudCxcbiAgQVhTY2hlZHVsZXJWaWV3LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2NoZWR1bGVyJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJTZXJ2aWNlLCBBWEhvbGlkYXlEYXRlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBBWFBTZXR0aW5nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBUYXNrQm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFJlc291cmNlLCBBWFBUYXNrLCBBWFBUYXNrQWN0aW9uIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC50eXBlcyc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRWaWV3TW9kZWwsIEFYUFRhc2tCb2FyZFZpZXdNb2RlIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tdGFzay1ib2FyZC1jYWxlbmRhci12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW0FYU2NoZWR1bGVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVGFza0JvYXJkQ2FsZW5kYXJWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IGluamVjdChBWE1UYXNrQm9hcmRWaWV3TW9kZWwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRhc2tCb2FyZFNlcnZpY2UgPSBpbmplY3QoQVhQVGFza0JvYXJkU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZXR0aW5nU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSk7XG5cbiAgc2NoZWR1bGVyQ29tcG9uZW50ID0gdmlld0NoaWxkKEFYU2NoZWR1bGVyQ29tcG9uZW50KTtcblxuICByZXNvdXJjZXMgPSBpbnB1dDxBWFBSZXNvdXJjZVtdPihbXSk7XG4gIHN0YXJ0aW5nRGF0ZSA9IGlucHV0PERhdGU+KG5ldyBEYXRlKCkpO1xuICBzZWxlY3RlZFZpZXcgPSBpbnB1dDxBWFBUYXNrQm9hcmRWaWV3TW9kZT4oJ21vbnRoJyk7XG4gIGRhdGFTb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDxBWFNjaGVkdWxlckFwcG9pbnRtZW50RGF0YVNvdXJjZT4oKTtcbiAgcHJvdGVjdGVkIGZpcnN0RGF5T2ZXZWVrID0gc2lnbmFsPEFYRGF5T2ZXZWVrTmFtZT4oJ21vbmRheScpO1xuICBwcm90ZWN0ZWQgd2Vla2VuZERheXMgPSBzaWduYWw8bnVtYmVyW10+KFswLCA2XSk7XG5cbiAgcHJvdGVjdGVkIGhvbGlkYXlzID0gKHJhbmdlOiBBWFNjaGVkdWxlckRhdGVSYW5nZSk6IFByb21pc2U8QVhIb2xpZGF5RGF0ZVtdPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMudGFza0JvYXJkU2VydmljZS5nZXRFdmVudHMocmFuZ2UpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBjdXJyZW50U2NoZWR1bGVyVmlldyA9IGNvbXB1dGVkPEFYU2NoZWR1bGVyVmlldz4oKCkgPT5cbiAgICB0aGlzLnNlbGVjdGVkVmlldygpID09PSAna2FuYmFuJyB8fCB0aGlzLnNlbGVjdGVkVmlldygpID09PSAnZ3JpZCdcbiAgICAgID8gJ21vbnRoJ1xuICAgICAgOiAodGhpcy5zZWxlY3RlZFZpZXcoKSBhcyBBWFNjaGVkdWxlclZpZXcpLFxuICApO1xuXG4gIG9uVGFza0NsaWNrID0gb3V0cHV0PEFYUFRhc2s+KCk7XG4gIG9uVGFza0NoYW5nZWQgPSBvdXRwdXQ8QVhQVGFzaz4oKTtcbiAgb25Nb250aFNsb3REYmxDbGlja2VkID0gb3V0cHV0PERhdGU+KCk7XG4gIG9uQWN0aW9uQ2xpY2sgPSBvdXRwdXQ8QVhQVGFza0FjdGlvbj4oKTtcbiAgY29tcG9uZW50ID0gb3V0cHV0PEFYU2NoZWR1bGVyQ29tcG9uZW50PigpO1xuICBvblRhc2tSaWdodENsaWNrID0gb3V0cHV0PEFYUFRhc2tBY3Rpb24+KCk7XG4gIG9uUmFuZ2VDaGFuZ2VkID0gb3V0cHV0PEFYU2NoZWR1bGVyRGF0ZVJhbmdlPigpO1xuXG4gIC8vIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAvLyAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gYXdhaXQgdGhpcy5zZXR0aW5nU2VydmljZS5nZXQoQVhQUmVnaW9uYWxTZXR0aW5nLkZpcnN0RGF5T2ZXZWVrKSBhcyB1bmtub3duIGFzIG51bWJlcjtcbiAgLy8gICBjb25zdCB3ZWVrRGF5cyA9IFsnc3VuZGF5JywgJ21vbmRheScsICd0dWVzZGF5JywgJ3dlZG5lc2RheScsICd0aHVyc2RheScsICdmcmlkYXknLCAnc2F0dXJkYXknXTtcbiAgLy8gICB0aGlzLmZpcnN0RGF5T2ZXZWVrLnNldCh3ZWVrRGF5c1tmaXJzdERheU9mV2Vla10gYXMgdW5rbm93biBhcyBBWERheU9mV2Vla05hbWUpO1xuICAvLyAgIHRoaXMud2Vla2VuZERheXMuc2V0KChhd2FpdCB0aGlzLnNldHRpbmdTZXJ2aWNlLmdldChBWFBSZWdpb25hbFNldHRpbmcuV2Vla2VuZERheXMpKSBhcyB1bmtub3duIGFzIG51bWJlcltdKTtcbiAgLy8gfVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5zY2hlZHVsZXJDb21wb25lbnQoKSkge1xuICAgICAgdGhpcy5jb21wb25lbnQuZW1pdCh0aGlzLnNjaGVkdWxlckNvbXBvbmVudCgpISk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uVGFza0Ryb3AoZXZlbnQ6IEFYU2NoZWR1bGVyU2xvdERyb3BFdmVudCkge1xuICAgIGlmIChldmVudC5pc1NhbWVTbG90RHJvcCkgcmV0dXJuO1xuICAgIGxldCBmcm9tOiBEYXRlO1xuICAgIGxldCBlbmQ6IERhdGU7XG4gICAgY29uc3QgYXBwdFN0YXJ0RGF0ZSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShldmVudC5hcHBvaW50bWVudC5zdGFydERhdGUpO1xuICAgIGNvbnN0IGFwcHRFbmREYXRlID0gZXZlbnQuYXBwb2ludG1lbnQuZW5kRGF0ZTtcblxuICAgIGNvbnN0IGFwcHREaWZmVGltZSA9IE1hdGguYWJzKGFwcHRTdGFydERhdGUuZGF0ZS5nZXRUaW1lKCkgLSBhcHB0RW5kRGF0ZS5nZXRUaW1lKCkpO1xuICAgIHN3aXRjaCAoZXZlbnQuc2xvdC52aWV3KSB7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICBjYXNlICdhZ2VuZGEnOlxuICAgICAgICBmcm9tID0gdGhpcy5jYWxlbmRhclNlcnZpY2VcbiAgICAgICAgICAuY3JlYXRlKGV2ZW50LnNsb3Quc3RhcnREYXRlLmRhdGUpXG4gICAgICAgICAgLnNldCgnaG91cicsIGFwcHRTdGFydERhdGUuaG91cilcbiAgICAgICAgICAuc2V0KCdtaW51dGUnLCBhcHB0U3RhcnREYXRlLm1pbnV0ZSlcbiAgICAgICAgICAuc2V0KCdzZWNvbmQnLCBhcHB0U3RhcnREYXRlLnNlY29uZCkuZGF0ZTtcbiAgICAgICAgZW5kID0gbmV3IERhdGUoZnJvbS5nZXRUaW1lKCkgKyBhcHB0RGlmZlRpbWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZnJvbSA9IGV2ZW50LnNsb3Quc3RhcnREYXRlLmRhdGU7XG4gICAgICAgIGVuZCA9IGV2ZW50LnNsb3QuZW5kRGF0ZS5kYXRlO1xuXG4gICAgICAgIGNvbnN0IGlzQWxsRGF5ID0gTWF0aC5hYnMoZnJvbS5nZXRUaW1lKCkgLSBlbmQuZ2V0VGltZSgpKSA+PSAyNCAqIDYwICogNjAgKiAxMDAwIC0gMTtcbiAgICAgICAgY29uc3Qgd2FzQWxsRGF5ID0gYXBwdERpZmZUaW1lID49IDI0ICogNjAgKiA2MCAqIDEwMDAgLSAxO1xuXG4gICAgICAgIGlmICgod2FzQWxsRGF5ICYmIGlzQWxsRGF5KSB8fCAoIXdhc0FsbERheSAmJiAhaXNBbGxEYXkpKSB7XG4gICAgICAgICAgZW5kID0gbmV3IERhdGUoZnJvbS5nZXRUaW1lKCkgKyBhcHB0RGlmZlRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMudGFza0JvYXJkU2VydmljZS51cGRhdGVUYXNrRGF0ZVJhbmdlKGV2ZW50LmFwcG9pbnRtZW50IGFzIEFYUFRhc2ssIHsgZnJvbSwgZW5kIH0pLnRoZW4oKHRhc2spID0+IHtcbiAgICAgIHRoaXMub25UYXNrQ2hhbmdlZC5lbWl0KHRhc2spO1xuICAgICAgdGhpcy5zY2hlZHVsZXJDb21wb25lbnQoKT8ucmVmcmVzaChbdGFza10pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uVGFza1JpZ2h0Q2xpY2tIYW5kbGVyKGV2ZW50OiBBWFNjaGVkdWxlckFwcG9pbnRtZW50TW91c2VFdmVudCkge1xuICAgIHRoaXMub25UYXNrUmlnaHRDbGljay5lbWl0KHsgbmF0aXZlRXZlbnQ6IGV2ZW50Lm5hdGl2ZUV2ZW50LCB0YXNrOiBldmVudC5hcHBvaW50bWVudCBhcyBBWFBUYXNrIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU2xvdERibENsaWNrZWQoZXZlbnQ6IEFYU2NoZWR1bGVyU2xvdE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuc2VuZGVyLnNlbGVjdGVkVmlldygpID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLm9uTW9udGhTbG90RGJsQ2xpY2tlZC5lbWl0KGV2ZW50LnNsb3Quc3RhcnREYXRlLmRhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVSYW5nZUNoYW5nZWQoZXZlbnQ6IEFYU2NoZWR1bGVyRGF0ZVJhbmdlKSB7XG4gICAgdGhpcy5vblJhbmdlQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVBY3Rpb25DbGljayhldmVudDogQVhTY2hlZHVsZXJBcHBvaW50bWVudE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2suZW1pdCh7IG5hdGl2ZUV2ZW50OiBldmVudC5uYXRpdmVFdmVudCwgdGFzazogZXZlbnQuYXBwb2ludG1lbnQgYXMgQVhQVGFzayB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblRhc2tDbGlja0hhbmRsZXIoZXZlbnQ6IEFYU2NoZWR1bGVyQXBwb2ludG1lbnRNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5vblRhc2tDbGljay5lbWl0KGV2ZW50LmFwcG9pbnRtZW50IGFzIEFYUFRhc2spO1xuICB9XG59XG4iLCI8YXgtc2NoZWR1bGVyXG4gIFtoYXNIZWFkZXJdPVwiZmFsc2VcIlxuICBbaGFzQWN0aW9uc109XCJ0cnVlXCJcbiAgW2hvbGlkYXlzXT1cImhvbGlkYXlzXCJcbiAgW3Jlc291cmNlc109XCJyZXNvdXJjZXMoKVwiXG4gIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2UoKVwiXG4gIFtzdGFydGluZ0RhdGVdPVwic3RhcnRpbmdEYXRlKClcIlxuICBbc2VsZWN0ZWRWaWV3XT1cImN1cnJlbnRTY2hlZHVsZXJWaWV3KClcIlxuICBbbXVsdGlEYXlWaWV3RGF5c0NvdW50XT1cInZtLmRheXNDb3VudCgpXCJcbiAgKG9uQXBwb2ludG1lbnREcm9wKT1cIm9uVGFza0Ryb3AoJGV2ZW50KVwiXG4gIChvbkFjdGlvbkNsaWNrKT1cImhhbmRsZUFjdGlvbkNsaWNrKCRldmVudClcIlxuICAob25SYW5nZUNoYW5nZWQpPVwiaGFuZGxlUmFuZ2VDaGFuZ2VkKCRldmVudClcIlxuICAob25TbG90RGJsQ2xpY2tlZCk9XCJvblNsb3REYmxDbGlja2VkKCRldmVudClcIlxuICAob25BcHBvaW50bWVudENsaWNrZWQpPVwib25UYXNrQ2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAob25BcHBvaW50bWVudFJpZ2h0Q2xpY2spPVwib25UYXNrUmlnaHRDbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gIFt3ZWVrZW5kXT1cIndlZWtlbmREYXlzKClcIlxuICBbZmlyc3REYXlPZldlZWtdPVwiZmlyc3REYXlPZldlZWsoKVwiXG4+PC9heC1zY2hlZHVsZXI+XG4iXX0=","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, ViewEncapsulation, } from '@angular/core';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/data-table\";\nimport * as i2 from \"@acorex/platform/layout/widget-core\";\nexport class AXMTaskBoardGridViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.dataSource = input.required(...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.onTaskClick = output();\n this.onActionClick = output();\n this.fetchedTasks = signal([], ...(ngDevMode ? [{ debugName: \"fetchedTasks\" }] : []));\n this.columns = signal([], ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n this.tasksDataSource = computed(() => {\n const parentDataSource = this.dataSource();\n return new AXDataSource({\n load: async (e) => {\n const result = await parentDataSource({ skip: e.skip, take: e.take });\n this.fetchedTasks.set(result.items);\n const mappedItems = result.items.map((task) => ({\n id: task.id,\n data: task.data,\n title: task.title,\n priority: task.priority,\n description: task.description,\n statusTitle: task.status.title,\n reporter: task.reporter.fullName ?? '-',\n assignee: task.assignee?.fullName ?? 'unassigned',\n type: this.taskBoardService.getProvider(task.provider)?.title,\n endDate: this.calendarService.format(task.endDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n startDate: this.calendarService.format(task.startDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n }));\n return { items: mappedItems, total: result.total };\n },\n pageSize: 10,\n key: 'id',\n byKey: async (key) => {\n return this.fetchedTasks().find((task) => task.id === key);\n },\n });\n }, ...(ngDevMode ? [{ debugName: \"tasksDataSource\" }] : []));\n this.#dataSourceChanged = effect(() => {\n this.tasksDataSource().refresh();\n }, ...(ngDevMode ? [{ debugName: \"#dataSourceChanged\" }] : []));\n this.#providerChanged = effect(async () => {\n const taskType = this.vm.selectedTaskTypes()[0];\n if (!taskType) {\n this.columns.set([]);\n return;\n }\n taskType.getExtraFields().then((extraFields) => {\n if (extraFields) {\n this.columns.set(extraFields);\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"#providerChanged\" }] : []));\n }\n #dataSourceChanged;\n #providerChanged;\n handleRowClick(event) {\n if (event.data) {\n this.onTaskClick.emit(event.data);\n }\n }\n onActionClickHandler(e) {\n const task = this.fetchedTasks().find((task) => task.id === e.data.id);\n if (!task)\n return;\n this.onActionClick.emit({ nativeEvent: e.nativeEvent, task });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardGridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMTaskBoardGridViewComponent, isStandalone: true, selector: \"axm-task-board-grid-view\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onTaskClick: \"onTaskClick\", onActionClick: \"onActionClick\" }, ngImport: i0, template: \"<ax-data-table\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"tasksDataSource()\\\"\\n (onRowClick)=\\\"handleRowClick($event)\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n>\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"statusTitle\\\" caption=\\\"status\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"type\\\" caption=\\\"type\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n\\n @if (columns().length) {\\n <ng-container>\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n </ng-container>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n</ax-data-table>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXDataTableModule }, { kind: \"component\", type: i1.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"rowTemplate\", \"emptyTemplate\", \"noDataTemplate\", \"alternative\", \"showHeader\", \"fixedHeader\", \"showFooter\", \"fixedFooter\", \"itemHeight\", \"allowReordering\", \"paging\", \"fetchDataMode\", \"loading\", \"focusedRow\"], outputs: [\"selectedRowsChange\", \"focusedRowChange\", \"onRowClick\", \"onRowDbClick\", \"onColumnsOrderChanged\", \"onColumnSizeChanged\", \"onPageChanged\"] }, { kind: \"component\", type: i1.AXDataTableTextColumnComponent, selector: \"ax-text-column\", inputs: [\"width\", \"caption\", \"allowSorting\", \"allowResizing\", \"fixed\", \"customExpandIcon\", \"customCollapseIcon\", \"dataField\", \"expandHandler\", \"wrapText\", \"cellTemplate\", \"footerTemplate\", \"headerTemplate\", \"format\", \"formatOptions\"] }, { kind: \"component\", type: i1.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i2.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardGridViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-grid-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXDataTableModule, AXTranslatorPipe, AsyncPipe, AXPWidgetCoreModule], template: \"<ax-data-table\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"tasksDataSource()\\\"\\n (onRowClick)=\\\"handleRowClick($event)\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n>\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"statusTitle\\\" caption=\\\"status\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"type\\\" caption=\\\"type\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n\\n @if (columns().length) {\\n <ng-container>\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n </ng-container>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n</ax-data-table>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"] }]\n }], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dataSource\", required: true }] }], onTaskClick: [{ type: i0.Output, args: [\"onTaskClick\"] }], onActionClick: [{ type: i0.Output, args: [\"onActionClick\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1ncmlkLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1ncmlkLXZpZXcvdGFzay1ib2FyZC1ncmlkLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1ncmlkLXZpZXcvdGFzay1ib2FyZC1ncmlkLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXVCLE1BQU0sK0JBQStCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FB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S0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQzsrR0EzRVUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsK1NDOUIxQyxvbkRBa0NBLDBJRE5ZLGlCQUFpQix5Z0NBQStCLG1CQUFtQiwrUkFBaEQsZ0JBQWdCLDZDQUFFLFNBQVM7OzRGQUU3Qyw2QkFBNkI7a0JBUnpDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25DbGlja0V2ZW50LCBBWERhdGFTb3VyY2UgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVNb2R1bGUsIEFYRGF0YVRhYmxlUm93Q2xpY2sgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFRhc2tCb2FyZFNlcnZpY2UgfSBmcm9tICcuLi8uLi90YXNrLWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQRXh0cmFGaWVsZCwgQVhQVGFzaywgQVhQVGFza0FjdGlvbiwgQVhQVGFza0ZpbHRlciB9IGZyb20gJy4uLy4uL3Rhc2stYm9hcmQudHlwZXMnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkVmlld01vZGVsIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tdGFzay1ib2FyZC1ncmlkLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1ib2FyZC1ncmlkLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YXNrLWJvYXJkLWdyaWQtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW0FYRGF0YVRhYmxlTW9kdWxlLCBBWFRyYW5zbGF0b3JQaXBlLCBBc3luY1BpcGUsIEFYUFdpZGdldENvcmVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1UYXNrQm9hcmRHcmlkVmlld0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IGluamVjdChBWE1UYXNrQm9hcmRWaWV3TW9kZWwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9jYWxlU2VydmljZSA9IGluamVjdChBWExvY2FsZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRhc2tCb2FyZFNlcnZpY2UgPSBpbmplY3QoQVhQVGFza0JvYXJkU2VydmljZSk7XG5cbiAgZGF0YVNvdXJjZSA9IGlucHV0LnJlcXVpcmVkPChmaWx0ZXI/OiBBWFBUYXNrRmlsdGVyKSA9PiBQcm9taXNlPHsgaXRlbXM6IEFYUFRhc2tbXTsgdG90YWw6IG51bWJlciB9Pj4oKTtcblxuICBvblRhc2tDbGljayA9IG91dHB1dDxBWFBUYXNrPigpO1xuICBvbkFjdGlvbkNsaWNrID0gb3V0cHV0PEFYUFRhc2tBY3Rpb24+KCk7XG5cbiAgcHJpdmF0ZSBmZXRjaGVkVGFza3MgPSBzaWduYWw8QVhQVGFza1tdPihbXSk7XG4gIHByb3RlY3RlZCBjb2x1bW5zID0gc2lnbmFsPEFYUEV4dHJhRmllbGRbXT4oW10pO1xuXG4gIHByb3RlY3RlZCB0YXNrc0RhdGFTb3VyY2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGFyZW50RGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZSgpO1xuICAgIHJldHVybiBuZXcgQVhEYXRhU291cmNlPGFueT4oe1xuICAgICAgbG9hZDogYXN5bmMgKGUpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGFyZW50RGF0YVNvdXJjZSh7IHNraXA6IGUuc2tpcCwgdGFrZTogZS50YWtlIH0pO1xuICAgICAgICB0aGlzLmZldGNoZWRUYXNrcy5zZXQocmVzdWx0Lml0ZW1zKTtcbiAgICAgICAgY29uc3QgbWFwcGVkSXRlbXMgPSByZXN1bHQuaXRlbXMubWFwKCh0YXNrKSA9PiAoe1xuICAgICAgICAgIGlkOiB0YXNrLmlkLFxuICAgICAgICAgIGRhdGE6IHRhc2suZGF0YSxcbiAgICAgICAgICB0aXRsZTogdGFzay50aXRsZSxcbiAgICAgICAgICBwcmlvcml0eTogdGFzay5wcmlvcml0eSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgICBzdGF0dXNUaXRsZTogdGFzay5zdGF0dXMudGl0bGUsXG4gICAgICAgICAgcmVwb3J0ZXI6IHRhc2sucmVwb3J0ZXIuZnVsbE5hbWUgPz8gJy0nLFxuICAgICAgICAgIGFzc2lnbmVlOiB0YXNrLmFzc2lnbmVlPy5mdWxsTmFtZSA/PyAndW5hc3NpZ25lZCcsXG4gICAgICAgICAgdHlwZTogdGhpcy50YXNrQm9hcmRTZXJ2aWNlLmdldFByb3ZpZGVyKHRhc2sucHJvdmlkZXIpPy50aXRsZSxcbiAgICAgICAgICBlbmREYXRlOiB0aGlzLmNhbGVuZGFyU2VydmljZS5mb3JtYXQodGFzay5lbmREYXRlLCAnREQvTU0vWVlZWSBISDptbScsIHtcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3RhcnREYXRlOiB0aGlzLmNhbGVuZGFyU2VydmljZS5mb3JtYXQodGFzay5zdGFydERhdGUsICdERC9NTS9ZWVlZIEhIOm1tJywge1xuICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4geyBpdGVtczogbWFwcGVkSXRlbXMsIHRvdGFsOiByZXN1bHQudG90YWwgfTtcbiAgICAgIH0sXG4gICAgICBwYWdlU2l6ZTogMTAsXG4gICAgICBrZXk6ICdpZCcsXG4gICAgICBieUtleTogYXN5bmMgKGtleTogdW5rbm93bikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaGVkVGFza3MoKS5maW5kKCh0YXNrKSA9PiB0YXNrLmlkID09PSBrZXkpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgI2RhdGFTb3VyY2VDaGFuZ2VkID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLnRhc2tzRGF0YVNvdXJjZSgpLnJlZnJlc2goKTtcbiAgfSk7XG5cbiAgI3Byb3ZpZGVyQ2hhbmdlZCA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGFza1R5cGUgPSB0aGlzLnZtLnNlbGVjdGVkVGFza1R5cGVzKClbMF07XG4gICAgaWYgKCF0YXNrVHlwZSkge1xuICAgICAgdGhpcy5jb2x1bW5zLnNldChbXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGFza1R5cGUuZ2V0RXh0cmFGaWVsZHMoKS50aGVuKChleHRyYUZpZWxkcykgPT4ge1xuICAgICAgaWYgKGV4dHJhRmllbGRzKSB7XG4gICAgICAgIHRoaXMuY29sdW1ucy5zZXQoZXh0cmFGaWVsZHMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgaGFuZGxlUm93Q2xpY2soZXZlbnQ6IEFYRGF0YVRhYmxlUm93Q2xpY2spIHtcbiAgICBpZiAoZXZlbnQuZGF0YSkge1xuICAgICAgdGhpcy5vblRhc2tDbGljay5lbWl0KGV2ZW50LmRhdGEgYXMgQVhQVGFzayk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQWN0aW9uQ2xpY2tIYW5kbGVyKGU6IEFYQnV0dG9uQ2xpY2tFdmVudCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLmZldGNoZWRUYXNrcygpLmZpbmQoKHRhc2spID0+IHRhc2suaWQgPT09IGUuZGF0YS5pZCk7XG4gICAgaWYgKCF0YXNrKSByZXR1cm47XG4gICAgdGhpcy5vbkFjdGlvbkNsaWNrLmVtaXQoeyBuYXRpdmVFdmVudDogZS5uYXRpdmVFdmVudCwgdGFzayB9KTtcbiAgfVxufVxuIiwiPGF4LWRhdGEtdGFibGVcbiAgW2ZldGNoRGF0YU1vZGVdPVwiJ21hbnVhbCdcIlxuICBbZGF0YVNvdXJjZV09XCJ0YXNrc0RhdGFTb3VyY2UoKVwiXG4gIChvblJvd0NsaWNrKT1cImhhbmRsZVJvd0NsaWNrKCRldmVudClcIlxuICBbbG9hZGluZ109XCJ7IGVuYWJsZWQ6IHRydWUsIGFuaW1hdGlvbjogdHJ1ZSB9XCJcbj5cbiAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cInRpdGxlXCIgY2FwdGlvbj1cInRpdGxlXCIgW3dpZHRoXT1cIiczNTBweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwiZGVzY3JpcHRpb25cIiBjYXB0aW9uPVwiZGVzY3JpcHRpb25cIiBbd2lkdGhdPVwiJzUwMHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJzdGFydERhdGVcIiBjYXB0aW9uPVwiU3RhcnQgRGF0ZVwiIFt3aWR0aF09XCInMTUwcHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cImVuZERhdGVcIiBjYXB0aW9uPVwiRHVlIERhdGVcIiBbd2lkdGhdPVwiJzE1MHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJwcmlvcml0eVwiIGNhcHRpb249XCJwcmlvcml0eVwiIFt3aWR0aF09XCInMTI1cHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cInJlcG9ydGVyXCIgY2FwdGlvbj1cIlJlcG9ydGVyXCIgW3dpZHRoXT1cIicxMjVweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwiYXNzaWduZWVcIiBjYXB0aW9uPVwiQXNzaWduZWVcIiBbd2lkdGhdPVwiJzEyNXB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJzdGF0dXNUaXRsZVwiIGNhcHRpb249XCJzdGF0dXNcIiBbd2lkdGhdPVwiJzEyNXB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJ0eXBlXCIgY2FwdGlvbj1cInR5cGVcIiBbd2lkdGhdPVwiJzE1MHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG5cbiAgQGlmIChjb2x1bW5zKCkubGVuZ3RoKSB7XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zKCk7IHRyYWNrIGNvbHVtbikge1xuICAgICAgICA8YXhwLXdpZGdldC1jb2x1bW4tcmVuZGVyZXJcbiAgICAgICAgICBbbm9kZV09XCJjb2x1bW4ud2lkZ2V0XCJcbiAgICAgICAgICBbY2FwdGlvbl09XCIoY29sdW1uLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgID48L2F4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyPlxuICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuICB9XG5cbiAgPGF4LWNvbW1hbmQtY29sdW1uXG4gICAgZml4ZWQ9XCJlbmRcIlxuICAgIFt3aWR0aF09XCInNjBweCdcIlxuICAgIChvbkl0ZW1DbGljayk9XCJvbkFjdGlvbkNsaWNrSGFuZGxlcigkZXZlbnQpXCJcbiAgICBbaXRlbXNdPVwiW3sgbmFtZTogJ3ZpZXcnLCB0ZXh0OiAnVmlldycsIGljb246ICdheC1pY29uIGF4LWljb24tbW9yZS1ob3Jpem9udGFsJyB9XVwiXG4gID48L2F4LWNvbW1hbmQtY29sdW1uPlxuPC9heC1kYXRhLXRhYmxlPlxuIl19","import { AXKanbanComponent, } from '@acorex/components/kanban';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, model, output, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport { AXPTaskBoardService } from '../../task-board.service';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nexport class AXMTaskBoardKanbanViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.kanbanComponent = viewChild(AXKanbanComponent, ...(ngDevMode ? [{ debugName: \"kanbanComponent\" }] : []));\n this.tasks = model.required(...(ngDevMode ? [{ debugName: \"tasks\" }] : []));\n this.onTaskClick = output();\n this.onTaskChanged = output();\n this.component = output();\n this.onActionClick = output();\n this.statuses = signal([], ...(ngDevMode ? [{ debugName: \"statuses\" }] : []));\n this.stableTasks = computed(() => this.tasks(), ...(ngDevMode ? [{ debugName: \"stableTasks\", equal: isEqual }] : [{ equal: isEqual }]));\n this.kanbanTasks = computed(() => {\n return this.stableTasks().map((task) => ({\n id: task.id,\n title: task.title,\n index: task.index,\n cssClass: task.cssClass,\n priority: task.priority,\n statusKey: task.status.id,\n description: task.description,\n }));\n }, ...(ngDevMode ? [{ debugName: \"kanbanTasks\" }] : []));\n this.#providerChanged = effect(async () => {\n const taskType = this.vm.selectedTaskTypes()[0];\n if (!taskType) {\n this.statuses.set([]);\n return;\n }\n taskType.getStatuses().then((statuses) => {\n if (statuses) {\n this.statuses.set(statuses);\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"#providerChanged\" }] : []));\n }\n ngAfterViewInit() {\n if (this.kanbanComponent()) {\n this.component.emit(this.kanbanComponent());\n }\n }\n #providerChanged;\n onSortChanged(event) {\n const tasks = this.tasks().map((item) => {\n const task = event.allItems.find((t) => t.id === item.id);\n if (task) {\n const status = this.statuses().find((s) => s.key === task.statusKey);\n return { ...item, index: task.index, status: { id: status.key, title: status.title } };\n }\n return item;\n });\n this.taskBoardService.updateTasks(tasks).then((tasks) => {\n this.tasks.set(tasks);\n });\n }\n handleItemClick(event) {\n const task = this.stableTasks().find((task) => task.id === event.item.id);\n if (task) {\n this.onTaskClick.emit(task);\n }\n }\n handleActionClick(event) {\n const task = this.stableTasks().find((task) => task.id === event.item.id);\n if (task) {\n this.onActionClick.emit({ nativeEvent: event.nativeEvent, task: task });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardKanbanViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.3.12\", type: AXMTaskBoardKanbanViewComponent, isStandalone: true, selector: \"axm-task-board-kanban-view\", inputs: { tasks: { classPropertyName: \"tasks\", publicName: \"tasks\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { tasks: \"tasksChange\", onTaskClick: \"onTaskClick\", onTaskChanged: \"onTaskChanged\", component: \"component\", onActionClick: \"onActionClick\" }, viewQueries: [{ propertyName: \"kanbanComponent\", first: true, predicate: AXKanbanComponent, descendants: true, isSignal: true }], ngImport: i0, template: \"<ax-kanban\\n [hasActions]=\\\"true\\\"\\n [statuses]=\\\"statuses()\\\"\\n [dataSource]=\\\"kanbanTasks()\\\"\\n (onItemClick)=\\\"handleItemClick($event)\\\"\\n (onSortChanged)=\\\"onSortChanged($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n></ax-kanban>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-height: 100%;--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"], dependencies: [{ kind: \"component\", type: AXKanbanComponent, selector: \"ax-kanban\", inputs: [\"hasActions\", \"dragStartDelay\", \"statuses\", \"itemTemplate\", \"dataSource\", \"keyField\", \"indexField\", \"titleField\", \"cssClassField\", \"priorityField\", \"statusKeyField\", \"descriptionField\", \"emptyTemplate\", \"headerTemplate\", \"footerTemplate\", \"contentFooterTemplate\", \"tooltipTemplate\"], outputs: [\"onSortChanged\", \"onItemClick\", \"onActionClick\", \"onItemDblClick\", \"onItemRightClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardKanbanViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-kanban-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXKanbanComponent], template: \"<ax-kanban\\n [hasActions]=\\\"true\\\"\\n [statuses]=\\\"statuses()\\\"\\n [dataSource]=\\\"kanbanTasks()\\\"\\n (onItemClick)=\\\"handleItemClick($event)\\\"\\n (onSortChanged)=\\\"onSortChanged($event)\\\"\\n (onActionClick)=\\\"handleActionClick($event)\\\"\\n></ax-kanban>\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-height: 100%;--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"] }]\n }], propDecorators: { kanbanComponent: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXKanbanComponent), { isSignal: true }] }], tasks: [{ type: i0.Input, args: [{ isSignal: true, alias: \"tasks\", required: true }] }, { type: i0.Output, args: [\"tasksChange\"] }], onTaskClick: [{ type: i0.Output, args: [\"onTaskClick\"] }], onTaskChanged: [{ type: i0.Output, args: [\"onTaskChanged\"] }], component: [{ type: i0.Output, args: [\"component\"] }], onActionClick: [{ type: i0.Output, args: [\"onActionClick\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1rYW5iYW4tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvdGFzay1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdGFzay1ib2FyZC92aWV3cy90YXNrLWJvYXJkLWthbmJhbi12aWV3L3Rhc2stYm9hcmQta2FuYmFuLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1rYW5iYW4tdmlldy90YXNrLWJvYXJkLWthbmJhbi12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsR0FLbEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBVW5FLE1BQU0sT0FBTywrQkFBK0I7SUFSNUM7UUFTcUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25DLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWxFLG9CQUFlLEdBQUcsU0FBUyxDQUFDLGlCQUFpQiwyREFBQyxDQUFDO1FBRS9DLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxnREFBYSxDQUFDO1FBRXBDLGdCQUFXLEdBQUcsTUFBTSxFQUFXLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUNsQyxjQUFTLEdBQUcsTUFBTSxFQUFxQixDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsTUFBTSxFQUFpQixDQUFDO1FBRXhDLGFBQVEsR0FBRyxNQUFNLENBQW1CLEVBQUUsb0RBQUMsQ0FBQztRQUV4QyxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLCtDQUFJLEtBQUssRUFBRSxPQUFPLE9BQWhCLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFDLENBQUM7UUFDckQsZ0JBQVcsR0FBRyxRQUFRLENBQWlCLEdBQUcsRUFBRTtZQUNwRCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVzthQUM5QixDQUFDLENBQUMsQ0FBQztRQUNOLENBQUMsdURBQUMsQ0FBQztRQVFILHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QixPQUFPO1lBQ1QsQ0FBQztZQUNELFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyw0REFBQyxDQUFDO0tBNkJKO0lBOUNDLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUcsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBV2I7SUFFTyxhQUFhLENBQUMsS0FBd0I7UUFDOUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxHQUFpQixLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEUsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUUsQ0FBQztnQkFDdEUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMxRixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsZUFBZSxDQUFDLEtBQXlCO1FBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxLQUF5QjtRQUNuRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQztJQUNILENBQUM7K0dBekVVLCtCQUErQjttR0FBL0IsK0JBQStCLGlhQUlkLGlCQUFpQixnRUNyQy9DLGdRQVFBLG9MRHVCWSxpQkFBaUI7OzRGQUVoQiwrQkFBK0I7a0JBUjNDLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsaUJBQWlCLENBQUM7aUdBTUEsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhLYW5iYW5Db21wb25lbnQsXG4gIEFYS2FuYmFuSXRlbSxcbiAgQVhLYW5iYW5Nb3VzZUV2ZW50LFxuICBBWEthbmJhblNvcnRFdmVudCxcbiAgQVhLYW5iYW5TdGF0dXMsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9rYW5iYW4nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBUYXNrQm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFRhc2ssIEFYUFRhc2tBY3Rpb24gfSBmcm9tICcuLi8uLi90YXNrLWJvYXJkLnR5cGVzJztcbmltcG9ydCB7IEFYTVRhc2tCb2FyZFZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3Rhc2stYm9hcmQudmlld21vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLXRhc2stYm9hcmQta2FuYmFuLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1ib2FyZC1rYW5iYW4tdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhc2stYm9hcmQta2FuYmFuLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtBWEthbmJhbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVRhc2tCb2FyZEthbmJhblZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYTVRhc2tCb2FyZFZpZXdNb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0YXNrQm9hcmRTZXJ2aWNlID0gaW5qZWN0KEFYUFRhc2tCb2FyZFNlcnZpY2UpO1xuXG4gIGthbmJhbkNvbXBvbmVudCA9IHZpZXdDaGlsZChBWEthbmJhbkNvbXBvbmVudCk7XG5cbiAgdGFza3MgPSBtb2RlbC5yZXF1aXJlZDxBWFBUYXNrW10+KCk7XG5cbiAgb25UYXNrQ2xpY2sgPSBvdXRwdXQ8QVhQVGFzaz4oKTtcbiAgb25UYXNrQ2hhbmdlZCA9IG91dHB1dDxBWFBUYXNrPigpO1xuICBjb21wb25lbnQgPSBvdXRwdXQ8QVhLYW5iYW5Db21wb25lbnQ+KCk7XG4gIG9uQWN0aW9uQ2xpY2sgPSBvdXRwdXQ8QVhQVGFza0FjdGlvbj4oKTtcblxuICBzdGF0dXNlcyA9IHNpZ25hbDxBWEthbmJhblN0YXR1c1tdPihbXSk7XG5cbiAgc3RhYmxlVGFza3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRhc2tzKCksIHsgZXF1YWw6IGlzRXF1YWwgfSk7XG4gIHByb3RlY3RlZCBrYW5iYW5UYXNrcyA9IGNvbXB1dGVkPEFYS2FuYmFuSXRlbVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhYmxlVGFza3MoKS5tYXAoKHRhc2spID0+ICh7XG4gICAgICBpZDogdGFzay5pZCxcbiAgICAgIHRpdGxlOiB0YXNrLnRpdGxlLFxuICAgICAgaW5kZXg6IHRhc2suaW5kZXgsXG4gICAgICBjc3NDbGFzczogdGFzay5jc3NDbGFzcyxcbiAgICAgIHByaW9yaXR5OiB0YXNrLnByaW9yaXR5LFxuICAgICAgc3RhdHVzS2V5OiB0YXNrLnN0YXR1cy5pZCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0YXNrLmRlc2NyaXB0aW9uLFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmthbmJhbkNvbXBvbmVudCgpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudC5lbWl0KHRoaXMua2FuYmFuQ29tcG9uZW50KCkhKTtcbiAgICB9XG4gIH1cblxuICAjcHJvdmlkZXJDaGFuZ2VkID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0YXNrVHlwZSA9IHRoaXMudm0uc2VsZWN0ZWRUYXNrVHlwZXMoKVswXTtcbiAgICBpZiAoIXRhc2tUeXBlKSB7XG4gICAgICB0aGlzLnN0YXR1c2VzLnNldChbXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRhc2tUeXBlLmdldFN0YXR1c2VzKCkudGhlbigoc3RhdHVzZXMpID0+IHtcbiAgICAgIGlmIChzdGF0dXNlcykge1xuICAgICAgICB0aGlzLnN0YXR1c2VzLnNldChzdGF0dXNlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBvblNvcnRDaGFuZ2VkKGV2ZW50OiBBWEthbmJhblNvcnRFdmVudCkge1xuICAgIGNvbnN0IHRhc2tzID0gdGhpcy50YXNrcygpLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgdGFzazogQVhLYW5iYW5JdGVtID0gZXZlbnQuYWxsSXRlbXMuZmluZCgodCkgPT4gdC5pZCA9PT0gaXRlbS5pZCk7XG4gICAgICBpZiAodGFzaykge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnN0YXR1c2VzKCkuZmluZCgocykgPT4gcy5rZXkgPT09IHRhc2suc3RhdHVzS2V5KSE7XG4gICAgICAgIHJldHVybiB7IC4uLml0ZW0sIGluZGV4OiB0YXNrLmluZGV4ISwgc3RhdHVzOiB7IGlkOiBzdGF0dXMua2V5LCB0aXRsZTogc3RhdHVzLnRpdGxlIH0gfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICAgIHRoaXMudGFza0JvYXJkU2VydmljZS51cGRhdGVUYXNrcyh0YXNrcykudGhlbigodGFza3MpID0+IHtcbiAgICAgIHRoaXMudGFza3Muc2V0KHRhc2tzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVJdGVtQ2xpY2soZXZlbnQ6IEFYS2FuYmFuTW91c2VFdmVudCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLnN0YWJsZVRhc2tzKCkuZmluZCgodGFzaykgPT4gdGFzay5pZCA9PT0gZXZlbnQuaXRlbS5pZCk7XG4gICAgaWYgKHRhc2spIHtcbiAgICAgIHRoaXMub25UYXNrQ2xpY2suZW1pdCh0YXNrKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQWN0aW9uQ2xpY2soZXZlbnQ6IEFYS2FuYmFuTW91c2VFdmVudCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLnN0YWJsZVRhc2tzKCkuZmluZCgodGFzaykgPT4gdGFzay5pZCA9PT0gZXZlbnQuaXRlbS5pZCk7XG4gICAgaWYgKHRhc2spIHtcbiAgICAgIHRoaXMub25BY3Rpb25DbGljay5lbWl0KHsgbmF0aXZlRXZlbnQ6IGV2ZW50Lm5hdGl2ZUV2ZW50LCB0YXNrOiB0YXNrIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGF4LWthbmJhblxuICBbaGFzQWN0aW9uc109XCJ0cnVlXCJcbiAgW3N0YXR1c2VzXT1cInN0YXR1c2VzKClcIlxuICBbZGF0YVNvdXJjZV09XCJrYW5iYW5UYXNrcygpXCJcbiAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZUl0ZW1DbGljaygkZXZlbnQpXCJcbiAgKG9uU29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgKG9uQWN0aW9uQ2xpY2spPVwiaGFuZGxlQWN0aW9uQ2xpY2soJGV2ZW50KVwiXG4+PC9heC1rYW5iYW4+XG4iXX0=","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, output, signal, untracked, ViewEncapsulation, } from '@angular/core';\nimport { AXMTaskBoardViewModel } from '../../task-board.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/data-table\";\nimport * as i2 from \"@acorex/platform/layout/widget-core\";\nexport class AXMTaskBoardStatusGroupedGridViewComponent {\n constructor() {\n this.vm = inject(AXMTaskBoardViewModel);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n this.provider = input(...(ngDevMode ? [undefined, { debugName: \"provider\" }] : []));\n this.dataSource = input.required(...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.onActionClick = output();\n this.groupedTasks = signal([], ...(ngDevMode ? [{ debugName: \"groupedTasks\" }] : []));\n this.allFetchedTasks = signal([], ...(ngDevMode ? [{ debugName: \"allFetchedTasks\" }] : []));\n this.columns = signal([], ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n this.statuses = signal([], ...(ngDevMode ? [{ debugName: \"statuses\" }] : []));\n this.#dataChanged = effect(async () => {\n const parentDataSource = this.dataSource();\n const allStatuses = this.statuses();\n if (!parentDataSource || allStatuses.length === 0) {\n this.groupedTasks.set([]);\n this.allFetchedTasks.set([]);\n return;\n }\n const result = await parentDataSource();\n this.allFetchedTasks.set(result.items);\n const allTasks = result.items;\n const statusGroups = allStatuses.map((status) => {\n const tasksForStatus = allTasks.filter((task) => task.status.id === status.key);\n return {\n statusInfo: status,\n tasks: this.createTaskDataSourceForGroup(tasksForStatus),\n };\n });\n this.groupedTasks.set(statusGroups);\n untracked(() => {\n setTimeout(() => {\n this.groupedTasks()?.forEach((group) => {\n group.tasks.refresh();\n });\n });\n });\n }, ...(ngDevMode ? [{ debugName: \"#dataChanged\" }] : []));\n this.#providerChanged = effect(async () => {\n const provider = this.vm.selectedTaskTypes()[0];\n provider?.getExtraFields().then((extraFields) => {\n if (extraFields) {\n this.columns.set(extraFields);\n }\n });\n provider?.getStatuses().then((statuses) => {\n if (statuses) {\n this.statuses.set(statuses);\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"#providerChanged\" }] : []));\n }\n #dataChanged;\n #providerChanged;\n createTaskDataSourceForGroup(tasks) {\n return new AXDataSource({\n load: async (e) => {\n const items = tasks.map((task) => ({\n id: task.id,\n data: task.data,\n title: task.title,\n priority: task.priority,\n description: task.description,\n reporter: task.reporter.fullName ?? '-',\n assignee: task.assignee?.fullName ?? 'unassigned',\n endDate: this.calendarService.format(task.endDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n startDate: this.calendarService.format(task.startDate, 'DD/MM/YYYY HH:mm', {\n locale: this.localeService.activeProfile().calendar.system,\n }),\n }));\n return {\n items: items.slice(e.skip, e.skip + e.take),\n total: items.length,\n };\n },\n pageSize: 5,\n key: 'id',\n byKey: async (key) => {\n return tasks.find((task) => task.id === key);\n },\n });\n }\n onActionClickHandler(e) {\n const task = this.allFetchedTasks().find((task) => task.id === e.data.id);\n if (!task)\n return;\n this.onActionClick.emit({ nativeEvent: e.nativeEvent, task });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardStatusGroupedGridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMTaskBoardStatusGroupedGridViewComponent, isStandalone: true, selector: \"axm-task-board-status-grouped-grid-view\", inputs: { provider: { classPropertyName: \"provider\", publicName: \"provider\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onActionClick: \"onActionClick\" }, ngImport: i0, template: \"@for (group of groupedTasks(); track group) {\\n <h1 class=\\\"ax-text-xl ax-font-bold\\\">{{ group.statusInfo.title }}</h1>\\n <ax-data-table\\n class=\\\"ax-h-[300px]\\\"\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"group.tasks\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n >\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n </ax-data-table>\\n}\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXDataTableModule }, { kind: \"component\", type: i1.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"rowTemplate\", \"emptyTemplate\", \"noDataTemplate\", \"alternative\", \"showHeader\", \"fixedHeader\", \"showFooter\", \"fixedFooter\", \"itemHeight\", \"allowReordering\", \"paging\", \"fetchDataMode\", \"loading\", \"focusedRow\"], outputs: [\"selectedRowsChange\", \"focusedRowChange\", \"onRowClick\", \"onRowDbClick\", \"onColumnsOrderChanged\", \"onColumnSizeChanged\", \"onPageChanged\"] }, { kind: \"component\", type: i1.AXDataTableTextColumnComponent, selector: \"ax-text-column\", inputs: [\"width\", \"caption\", \"allowSorting\", \"allowResizing\", \"fixed\", \"customExpandIcon\", \"customCollapseIcon\", \"dataField\", \"expandHandler\", \"wrapText\", \"cellTemplate\", \"footerTemplate\", \"headerTemplate\", \"format\", \"formatOptions\"] }, { kind: \"component\", type: i1.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i2.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardStatusGroupedGridViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-task-board-status-grouped-grid-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXDataTableModule, AXTranslatorPipe, AsyncPipe, AXPWidgetCoreModule], template: \"@for (group of groupedTasks(); track group) {\\n <h1 class=\\\"ax-text-xl ax-font-bold\\\">{{ group.statusInfo.title }}</h1>\\n <ax-data-table\\n class=\\\"ax-h-[300px]\\\"\\n [fetchDataMode]=\\\"'manual'\\\"\\n [dataSource]=\\\"group.tasks\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n >\\n <ax-text-column dataField=\\\"title\\\" caption=\\\"title\\\" [width]=\\\"'350px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"description\\\" caption=\\\"description\\\" [width]=\\\"'500px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"startDate\\\" caption=\\\"Start Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"endDate\\\" caption=\\\"Due Date\\\" [width]=\\\"'150px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"reporter\\\" caption=\\\"Reporter\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"assignee\\\" caption=\\\"Assignee\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n <ax-text-column dataField=\\\"priority\\\" caption=\\\"priority\\\" [width]=\\\"'125px'\\\"></ax-text-column>\\n\\n @for (column of columns(); track column) {\\n <axp-widget-column-renderer\\n [node]=\\\"column.widget\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n ></axp-widget-column-renderer>\\n }\\n\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n (onItemClick)=\\\"onActionClickHandler($event)\\\"\\n [items]=\\\"[{ name: 'view', text: 'View', icon: 'ax-icon ax-icon-more-horizontal' }]\\\"\\n ></ax-command-column>\\n </ax-data-table>\\n}\\n\", styles: [\"ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\\n\"] }]\n }], propDecorators: { provider: [{ type: i0.Input, args: [{ isSignal: true, alias: \"provider\", required: false }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dataSource\", required: true }] }], onActionClick: [{ type: i0.Output, args: [\"onActionClick\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcvdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdmlld3MvdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcvdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixH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NEZBRTdDLDBDQUEwQztrQkFSdEQsU0FBUzsrQkFDRSx5Q0FBeUMsbUJBR2xDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksV0FDNUIsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbkNsaWNrRXZlbnQsIEFYRGF0YVNvdXJjZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERhdGFUYWJsZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kYXRhLXRhYmxlJztcbmltcG9ydCB7IEFYS2FuYmFuU3RhdHVzIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2thbmJhbic7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBFeHRyYUZpZWxkLCBBWFBUYXNrLCBBWFBUYXNrQWN0aW9uLCBBWFBUYXNrRmlsdGVyLCBBWFBXb3JrZmxvd1Rhc2tQcm92aWRlciB9IGZyb20gJy4uLy4uL3Rhc2stYm9hcmQudHlwZXMnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkVmlld01vZGVsIH0gZnJvbSAnLi4vLi4vdGFzay1ib2FyZC52aWV3bW9kZWwnO1xuXG5pbnRlcmZhY2UgU3RhdHVzVGFza0dyb3VwIHtcbiAgc3RhdHVzSW5mbzogQVhLYW5iYW5TdGF0dXM7XG4gIHRhc2tzOiBBWERhdGFTb3VyY2U8YW55Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLXRhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1ib2FyZC1zdGF0dXMtZ3JvdXBlZC1ncmlkLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtBWERhdGFUYWJsZU1vZHVsZSwgQVhUcmFuc2xhdG9yUGlwZSwgQXN5bmNQaXBlLCBBWFBXaWRnZXRDb3JlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVGFza0JvYXJkU3RhdHVzR3JvdXBlZEdyaWRWaWV3Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYTVRhc2tCb2FyZFZpZXdNb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuXG4gIHByb3ZpZGVyID0gaW5wdXQ8QVhQV29ya2Zsb3dUYXNrUHJvdmlkZXI+KCk7XG4gIGRhdGFTb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDwoZmlsdGVyPzogQVhQVGFza0ZpbHRlcikgPT4gUHJvbWlzZTx7IGl0ZW1zOiBBWFBUYXNrW107IHRvdGFsOiBudW1iZXIgfT4+KCk7XG5cbiAgb25BY3Rpb25DbGljayA9IG91dHB1dDxBWFBUYXNrQWN0aW9uPigpO1xuXG4gIGdyb3VwZWRUYXNrcyA9IHNpZ25hbDxTdGF0dXNUYXNrR3JvdXBbXT4oW10pO1xuICBwcml2YXRlIGFsbEZldGNoZWRUYXNrcyA9IHNpZ25hbDxBWFBUYXNrW10+KFtdKTtcbiAgcHJvdGVjdGVkIGNvbHVtbnMgPSBzaWduYWw8QVhQRXh0cmFGaWVsZFtdPihbXSk7XG4gIHByb3RlY3RlZCBzdGF0dXNlcyA9IHNpZ25hbDxBWEthbmJhblN0YXR1c1tdPihbXSk7XG5cbiAgI2RhdGFDaGFuZ2VkID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXJlbnREYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCk7XG4gICAgY29uc3QgYWxsU3RhdHVzZXMgPSB0aGlzLnN0YXR1c2VzKCk7XG5cbiAgICBpZiAoIXBhcmVudERhdGFTb3VyY2UgfHwgYWxsU3RhdHVzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmdyb3VwZWRUYXNrcy5zZXQoW10pO1xuICAgICAgdGhpcy5hbGxGZXRjaGVkVGFza3Muc2V0KFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXJlbnREYXRhU291cmNlKCk7XG4gICAgdGhpcy5hbGxGZXRjaGVkVGFza3Muc2V0KHJlc3VsdC5pdGVtcyk7XG4gICAgY29uc3QgYWxsVGFza3MgPSByZXN1bHQuaXRlbXM7XG5cbiAgICBjb25zdCBzdGF0dXNHcm91cHMgPSBhbGxTdGF0dXNlcy5tYXAoKHN0YXR1cykgPT4ge1xuICAgICAgY29uc3QgdGFza3NGb3JTdGF0dXMgPSBhbGxUYXNrcy5maWx0ZXIoKHRhc2spID0+IHRhc2suc3RhdHVzLmlkID09PSBzdGF0dXMua2V5KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1c0luZm86IHN0YXR1cyxcbiAgICAgICAgdGFza3M6IHRoaXMuY3JlYXRlVGFza0RhdGFTb3VyY2VGb3JHcm91cCh0YXNrc0ZvclN0YXR1cyksXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5ncm91cGVkVGFza3Muc2V0KHN0YXR1c0dyb3Vwcyk7XG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmdyb3VwZWRUYXNrcygpPy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgIGdyb3VwLnRhc2tzLnJlZnJlc2goKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgI3Byb3ZpZGVyQ2hhbmdlZCA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnZtLnNlbGVjdGVkVGFza1R5cGVzKClbMF07XG4gICAgcHJvdmlkZXI/LmdldEV4dHJhRmllbGRzKCkudGhlbigoZXh0cmFGaWVsZHMpID0+IHtcbiAgICAgIGlmIChleHRyYUZpZWxkcykge1xuICAgICAgICB0aGlzLmNvbHVtbnMuc2V0KGV4dHJhRmllbGRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBwcm92aWRlcj8uZ2V0U3RhdHVzZXMoKS50aGVuKChzdGF0dXNlcykgPT4ge1xuICAgICAgaWYgKHN0YXR1c2VzKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzZXMuc2V0KHN0YXR1c2VzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBjcmVhdGVUYXNrRGF0YVNvdXJjZUZvckdyb3VwKHRhc2tzOiBBWFBUYXNrW10pOiBBWERhdGFTb3VyY2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBBWERhdGFTb3VyY2U8YW55Pih7XG4gICAgICBsb2FkOiBhc3luYyAoZSkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRhc2tzLm1hcCgodGFzaykgPT4gKHtcbiAgICAgICAgICBpZDogdGFzay5pZCxcbiAgICAgICAgICBkYXRhOiB0YXNrLmRhdGEsXG4gICAgICAgICAgdGl0bGU6IHRhc2sudGl0bGUsXG4gICAgICAgICAgcHJpb3JpdHk6IHRhc2sucHJpb3JpdHksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRhc2suZGVzY3JpcHRpb24sXG4gICAgICAgICAgcmVwb3J0ZXI6IHRhc2sucmVwb3J0ZXIuZnVsbE5hbWUgPz8gJy0nLFxuICAgICAgICAgIGFzc2lnbmVlOiB0YXNrLmFzc2lnbmVlPy5mdWxsTmFtZSA/PyAndW5hc3NpZ25lZCcsXG4gICAgICAgICAgZW5kRGF0ZTogdGhpcy5jYWxlbmRhclNlcnZpY2UuZm9ybWF0KHRhc2suZW5kRGF0ZSwgJ0REL01NL1lZWVkgSEg6bW0nLCB7XG4gICAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5jYWxlbmRhclNlcnZpY2UuZm9ybWF0KHRhc2suc3RhcnREYXRlLCAnREQvTU0vWVlZWSBISDptbScsIHtcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpdGVtczogaXRlbXMuc2xpY2UoZS5za2lwLCBlLnNraXAgKyBlLnRha2UpLFxuICAgICAgICAgIHRvdGFsOiBpdGVtcy5sZW5ndGgsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgcGFnZVNpemU6IDUsXG4gICAgICBrZXk6ICdpZCcsXG4gICAgICBieUtleTogYXN5bmMgKGtleTogdW5rbm93bikgPT4ge1xuICAgICAgICByZXR1cm4gdGFza3MuZmluZCgodGFzaykgPT4gdGFzay5pZCA9PT0ga2V5KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25BY3Rpb25DbGlja0hhbmRsZXIoZTogQVhCdXR0b25DbGlja0V2ZW50KSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWxsRmV0Y2hlZFRhc2tzKCkuZmluZCgodGFzaykgPT4gdGFzay5pZCA9PT0gZS5kYXRhLmlkKTtcbiAgICBpZiAoIXRhc2spIHJldHVybjtcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2suZW1pdCh7IG5hdGl2ZUV2ZW50OiBlLm5hdGl2ZUV2ZW50LCB0YXNrIH0pO1xuICB9XG59XG4iLCJAZm9yIChncm91cCBvZiBncm91cGVkVGFza3MoKTsgdHJhY2sgZ3JvdXApIHtcbiAgPGgxIGNsYXNzPVwiYXgtdGV4dC14bCBheC1mb250LWJvbGRcIj57eyBncm91cC5zdGF0dXNJbmZvLnRpdGxlIH19PC9oMT5cbiAgPGF4LWRhdGEtdGFibGVcbiAgICBjbGFzcz1cImF4LWgtWzMwMHB4XVwiXG4gICAgW2ZldGNoRGF0YU1vZGVdPVwiJ21hbnVhbCdcIlxuICAgIFtkYXRhU291cmNlXT1cImdyb3VwLnRhc2tzXCJcbiAgICBbbG9hZGluZ109XCJ7IGVuYWJsZWQ6IHRydWUsIGFuaW1hdGlvbjogdHJ1ZSB9XCJcbiAgPlxuICAgIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJ0aXRsZVwiIGNhcHRpb249XCJ0aXRsZVwiIFt3aWR0aF09XCInMzUwcHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwiZGVzY3JpcHRpb25cIiBjYXB0aW9uPVwiZGVzY3JpcHRpb25cIiBbd2lkdGhdPVwiJzUwMHB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gICAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cInN0YXJ0RGF0ZVwiIGNhcHRpb249XCJTdGFydCBEYXRlXCIgW3dpZHRoXT1cIicxNTBweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICAgIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJlbmREYXRlXCIgY2FwdGlvbj1cIkR1ZSBEYXRlXCIgW3dpZHRoXT1cIicxNTBweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICAgIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJwcmlvcml0eVwiIGNhcHRpb249XCJwcmlvcml0eVwiIFt3aWR0aF09XCInMTI1cHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cbiAgICA8YXgtdGV4dC1jb2x1bW4gZGF0YUZpZWxkPVwicmVwb3J0ZXJcIiBjYXB0aW9uPVwiUmVwb3J0ZXJcIiBbd2lkdGhdPVwiJzEyNXB4J1wiPjwvYXgtdGV4dC1jb2x1bW4+XG4gICAgPGF4LXRleHQtY29sdW1uIGRhdGFGaWVsZD1cImFzc2lnbmVlXCIgY2FwdGlvbj1cIkFzc2lnbmVlXCIgW3dpZHRoXT1cIicxMjVweCdcIj48L2F4LXRleHQtY29sdW1uPlxuICAgIDxheC10ZXh0LWNvbHVtbiBkYXRhRmllbGQ9XCJwcmlvcml0eVwiIGNhcHRpb249XCJwcmlvcml0eVwiIFt3aWR0aF09XCInMTI1cHgnXCI+PC9heC10ZXh0LWNvbHVtbj5cblxuICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zKCk7IHRyYWNrIGNvbHVtbikge1xuICAgICAgPGF4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyXG4gICAgICAgIFtub2RlXT1cImNvbHVtbi53aWRnZXRcIlxuICAgICAgICBbY2FwdGlvbl09XCIoY29sdW1uLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICA+PC9heHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcj5cbiAgICB9XG5cbiAgICA8YXgtY29tbWFuZC1jb2x1bW5cbiAgICAgIGZpeGVkPVwiZW5kXCJcbiAgICAgIFt3aWR0aF09XCInNjBweCdcIlxuICAgICAgKG9uSXRlbUNsaWNrKT1cIm9uQWN0aW9uQ2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAgICAgW2l0ZW1zXT1cIlt7IG5hbWU6ICd2aWV3JywgdGV4dDogJ1ZpZXcnLCBpY29uOiAnYXgtaWNvbiBheC1pY29uLW1vcmUtaG9yaXpvbnRhbCcgfV1cIlxuICAgID48L2F4LWNvbW1hbmQtY29sdW1uPlxuICA8L2F4LWRhdGEtdGFibGU+XG59XG4iXX0=","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCalendarComponent } from '@acorex/components/calendar';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXMenuModule, } from '@acorex/components/menu';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPDeviceService } from '@acorex/platform/core';\nimport { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter, startWith } from 'rxjs';\nimport { RootConfig } from '../../const';\nimport { AXMTaskBoardDetailPanel } from './task-board-detail-panel/task-board-detail-panel.component';\nimport { AXMTaskBoardFiltersComponent } from './task-board-filters/task-board-filters.component';\nimport { AXPTaskBoardService } from './task-board.service';\nimport { AXMTaskBoardViewModel } from './task-board.viewmodel';\nimport { AXMTaskBoardCalendarViewComponent } from './views/task-board-calendar-view/task-board-calendar-view.component';\nimport { AXMTaskBoardGridViewComponent } from './views/task-board-grid-view/task-board-grid-view.component';\nimport { AXMTaskBoardKanbanViewComponent } from './views/task-board-kanban-view/task-board-kanban-view.component';\nimport { AXMTaskBoardStatusGroupedGridViewComponent } from './views/task-board-status-grouped-grid-view/task-board-status-grouped-grid-view.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/menu\";\nimport * as i3 from \"@acorex/components/button\";\nimport * as i4 from \"@acorex/core/translation\";\nimport * as i5 from \"@acorex/components/decorators\";\nimport * as i6 from \"@acorex/components/loading\";\nimport * as i7 from \"@acorex/components/popover\";\nimport * as i8 from \"@angular/common\";\nexport class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n this.router = inject(Router);\n this.rootConfig = RootConfig;\n this.deviceService = inject(AXPDeviceService);\n this.vm = inject(AXMTaskBoardViewModel);\n this.unsubscribe = inject(AXUnsubscriber);\n this.activatedRoute = inject(ActivatedRoute);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n this.taskBoardService = inject(AXPTaskBoardService);\n this.popover = viewChild('popover', ...(ngDevMode ? [{ debugName: \"popover\" }] : []));\n this.calendar = viewChild('calendar', ...(ngDevMode ? [{ debugName: \"calendar\" }] : []));\n this.isReady = signal(false, ...(ngDevMode ? [{ debugName: \"isReady\" }] : []));\n this.resources = signal([], ...(ngDevMode ? [{ debugName: \"resources\" }] : []));\n this.isQueryParam = signal(false, ...(ngDevMode ? [{ debugName: \"isQueryParam\" }] : []));\n this.currentTask = signal(null, ...(ngDevMode ? [{ debugName: \"currentTask\" }] : []));\n this.currentViewMode = signal('calendar', ...(ngDevMode ? [{ debugName: \"currentViewMode\" }] : []));\n this.schedulerComponent = signal(null, ...(ngDevMode ? [{ debugName: \"schedulerComponent\" }] : []));\n this.menuItems = signal([\n {\n key: 'calendar',\n text: 'calendar',\n icon: 'fa-light fa-calendar-day',\n children: [\n { key: 'day', text: 'daily', icon: 'fa-light fa-calendar-day' },\n { key: 'week', text: 'weekly', icon: 'fa-light fa-calendar-week' },\n { key: 'month', text: 'monthly', icon: 'fa-light fa-calendar-alt' },\n { key: 'agenda', text: 'agenda', icon: 'fa-light fa-calendar-range' },\n ],\n },\n {\n key: 'timeline',\n text: 'timeline',\n icon: 'fa-light fa-list-timeline',\n children: [\n { key: 'timeline-day', text: 'daily-timeline', icon: 'fa-light fa-calendar-day' },\n { key: 'timeline-multi-day', text: 'multi-day-timeline', icon: 'fa-light fa-calendar-week' },\n { key: 'timeline-month', text: 'monthly-timeline', icon: 'fa-light fa-calendar-alt' },\n { key: 'timeline-year', text: 'yearly-timeline', icon: 'fa-light fa-calendar-range' },\n ],\n },\n {\n key: 'table',\n text: 'table',\n icon: 'fa-light fa-table',\n children: [\n { key: 'grid', text: 'grid', icon: 'fa-light fa-table' },\n { key: 'status-grouped-grid', text: 'status-grouped-grid', icon: 'fa-light fa-table' },\n ],\n },\n { key: 'kanban', text: 'kanban', icon: 'fa-light fa-chart-kanban' },\n ], ...(ngDevMode ? [{ debugName: \"menuItems\" }] : []));\n this.calendarType = computed(() => this.localeService.activeProfile().calendar.system, ...(ngDevMode ? [{ debugName: \"calendarType\" }] : []));\n this.todayButtonText = computed(() => {\n switch (this.vm.currentViewMode()) {\n case 'day':\n case 'grid':\n case 'agenda':\n case 'kanban':\n case 'timeline-day':\n case 'timeline-year':\n case 'timeline-multi-day':\n case 'status-grouped-grid':\n return 'Today';\n case 'week':\n return 'Current week';\n case 'month':\n case 'timeline-month':\n return 'Current month';\n case 'timeline-year':\n return 'Current year';\n }\n }, ...(ngDevMode ? [{ debugName: \"todayButtonText\" }] : []));\n this.timeText = computed(() => {\n if (this.vm.currentViewMode() === 'grid' ||\n this.vm.currentViewMode() === 'kanban' ||\n this.vm.currentViewMode() === 'status-grouped-grid') {\n const start = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);\n const end = start.add('day', this.vm.daysCount() - 1);\n const startText = start.format('DD MMMM yyyy', { locale: this.localeService.activeProfile().calendar.system });\n const endText = end.format('DD MMMM yyyy', { locale: this.localeService.activeProfile().calendar.system });\n return `${startText} - ${endText}`;\n }\n return this.schedulerComponent()?.currentDateText();\n }, ...(ngDevMode ? [{ debugName: \"timeText\" }] : []));\n this.calendarDepth = computed(() => {\n if (this.vm.currentViewMode() === 'grid' ||\n this.vm.currentViewMode() === 'kanban' ||\n this.vm.currentViewMode() === 'status-grouped-grid') {\n return 'day';\n }\n return this.schedulerComponent()?.calendarDepth();\n }, ...(ngDevMode ? [{ debugName: \"calendarDepth\" }] : []));\n this.selectedViewMode = computed(() => {\n const currentMode = this.vm.currentViewMode();\n for (const category of this.menuItems()) {\n if (category.key === currentMode) {\n return { key: category.key, text: category.text, icon: category.icon };\n }\n if (category.children) {\n const foundChild = category.children.find((child) => child.key === currentMode);\n if (foundChild) {\n return foundChild;\n }\n }\n }\n const firstCategory = this.menuItems()[0];\n return firstCategory.children\n ? firstCategory.children[0]\n : { key: firstCategory.key, text: firstCategory.text, icon: firstCategory.icon };\n }, ...(ngDevMode ? [{ debugName: \"selectedViewMode\" }] : []));\n this.filter = computed(() => {\n const taskTypeNames = this.vm.selectedTaskTypeNames();\n const types = taskTypeNames.length > 0 ? taskTypeNames : undefined;\n const assigneeIds = this.vm.selectedAssigneeIds();\n const reporterIds = this.vm.selectedReporterIds();\n const priorities = this.vm.selectedPriorities();\n let from = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);\n let end;\n const currentView = this.vm.currentViewMode();\n if (currentView === 'grid' ||\n currentView === 'kanban' ||\n currentView === 'agenda' ||\n currentView === 'timeline-multi-day' ||\n currentView === 'status-grouped-grid') {\n end = from.add('day', this.vm.daysCount() - 1);\n }\n else if (currentView === 'month' || currentView === 'timeline-month') {\n from = from.startOf('month');\n end = from.endOf('month');\n }\n else {\n end = from.endOf('day');\n }\n return {\n ...(types && { types }),\n ...(assigneeIds.length > 0 && { assigneeIds }),\n ...(reporterIds.length > 0 && { reporterIds }),\n ...(priorities.length > 0 && { priorities }),\n range: { from: from.date, end: end.date },\n };\n }, ...(ngDevMode ? [{ debugName: \"filter\" }] : []));\n this.contextMenu = viewChild('rootContextMenu', ...(ngDevMode ? [{ debugName: \"contextMenu\" }] : []));\n this.schedulerDataSource = (filter) => {\n const finalFilter = { ...this.filter(), ...filter };\n return this.taskBoardService.getTasks(finalFilter).then((result) => {\n this.validateSelectedTask(result.items);\n return result.items;\n });\n };\n this.gridDataSource = (filter) => {\n const finalFilter = { ...this.filter(), ...filter };\n return this.taskBoardService.getTasks(finalFilter).then((result) => {\n this.validateSelectedTask(result.items);\n return result;\n });\n };\n this.resolvedTasks = signal([], ...(ngDevMode ? [{ debugName: \"resolvedTasks\" }] : []));\n this.eff = effect(async () => {\n const viewMode = this.vm.currentViewMode();\n const filter = this.filter();\n if (viewMode === 'kanban') {\n await this.taskResolveHandler(filter);\n }\n }, ...(ngDevMode ? [{ debugName: \"eff\" }] : []));\n this.refreshEffect = effect(() => {\n this.vm.selectedTaskTypeNames();\n this.getResources();\n this.schedulerComponent()?.refresh();\n }, ...(ngDevMode ? [{ debugName: \"refreshEffect\" }] : []));\n this.rangeBasedViews = [\n 'grid',\n 'kanban',\n 'agenda',\n 'status-grouped-grid',\n 'timeline-multi-day',\n ];\n this.getCellClass = (date) => {\n const currentView = this.vm.currentViewMode();\n const selectionStartDate = this.vm.rangeStartDate();\n if (this.rangeBasedViews.includes(currentView)) {\n if (selectionStartDate) {\n const axSelectionStartDate = this.calendarService.create(selectionStartDate);\n if (date.equal(axSelectionStartDate, 'day')) {\n return 'ax-range-start ax-range-end';\n }\n return null;\n }\n const fromRange = this.calendarService.create(this.vm.currentDate());\n const endRange = fromRange.add('day', this.vm.daysCount() - 1);\n const isStart = date.equal(fromRange, 'day');\n const isEnd = date.equal(endRange, 'day');\n if (isStart && isEnd)\n return 'ax-range-start ax-range-end';\n if (isStart)\n return 'ax-range-start';\n if (isEnd)\n return 'ax-range-end';\n if (date.compare(fromRange, 'day') > 0 && date.compare(endRange, 'day') < 0) {\n return 'ax-range-between';\n }\n return null;\n }\n if (currentView === 'week') {\n const from = this.calendarService.create(this.vm.currentDate());\n const end = from.add('day', 6);\n if (date.equal(from, 'day'))\n return 'ax-range-start';\n if (date.equal(end, 'day'))\n return 'ax-range-end';\n if (date.compare(from, 'day') > 0 && date.compare(end, 'day') < 0) {\n return 'ax-range-between';\n }\n }\n return null;\n };\n }\n async ngOnInit() {\n await super.ngOnInit();\n await this.vm.initialize();\n this.router.events\n .pipe(this.unsubscribe.takeUntilDestroy, filter((event) => event instanceof NavigationEnd), startWith(null))\n .subscribe(async () => {\n await this.loadFromRoute();\n if (!this.isReady()) {\n this.isReady.set(true);\n }\n });\n this.taskBoardService.refresh$.subscribe(async () => {\n await this.taskResolveHandler();\n await this.getResources();\n });\n }\n async getPageTitle() {\n return await this.translateService.translateAsync('@task-management:task-board.page-title');\n }\n async getPageBreadcrumbs() {\n return [\n {\n title: await this.translateService.translateAsync('@task-management:root-menu'),\n },\n ];\n }\n async taskResolveHandler(filter = this.filter()) {\n const result = await this.taskBoardService.getTasks(filter);\n this.validateSelectedTask(result.items);\n this.resolvedTasks.set(result.items);\n }\n schedulerComponentChanged(component) {\n this.schedulerComponent.set(component);\n }\n async handleContextMenuOnOpening(event) {\n const currentTask = this.currentTask();\n if (!currentTask)\n return;\n const providerName = currentTask.provider;\n if (!providerName)\n return;\n const provider = this.taskBoardService.getProvider(providerName);\n if (!provider)\n return;\n const actions = await provider.getActions(currentTask);\n for (const item of actions) {\n event.items.push({\n text: item.title,\n icon: item.icon,\n color: item.color,\n break: item.break,\n data: {\n command: item.command,\n },\n });\n }\n }\n handleContextMenu(event) {\n this.currentTask.set(event.task);\n const x = event.nativeEvent.clientX;\n const y = event.nativeEvent.clientY;\n const element = event.nativeEvent.target;\n this.contextMenu()?.showAt({ x, y }, element);\n }\n handleMonthSlotDblClicked(date) {\n this.vm.setCurrentDate(date);\n this.vm.setViewMode('day');\n }\n handleViewChange(view, dropdownPanel) {\n this.router.navigate([], { queryParams: { view } });\n this.vm.setViewMode(view);\n this.popover()?.close();\n dropdownPanel.close();\n }\n handleContextMenuItemClick(event) {\n this.taskBoardService.executeCommand(event.item.data?.command, this.currentTask()?.provider ?? '');\n }\n changeDate(forward) {\n const date = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);\n switch (this.vm.currentViewMode()) {\n case 'day':\n case 'timeline-day':\n this.vm.setCurrentDate(date.add('day', forward ? 1 : -1).date);\n break;\n case 'week':\n this.vm.setCurrentDate(date.add('week', forward ? 1 : -1).date);\n break;\n case 'grid':\n case 'agenda':\n case 'kanban':\n case 'timeline-multi-day':\n case 'status-grouped-grid':\n this.vm.setCurrentDate(date.add('day', forward ? this.vm.daysCount() : -this.vm.daysCount()).date);\n break;\n case 'month':\n case 'timeline-month':\n this.vm.setCurrentDate(date.add('month', forward ? 1 : -1).date);\n break;\n case 'timeline-year':\n this.vm.setCurrentDate(date.add('year', forward ? 1 : -1).date);\n break;\n }\n this.popover()?.close();\n this.calendar()?.render();\n }\n handleCalendarSlotClick(event) {\n if (event.component.activeView !== event.component.depth)\n return;\n const clickedDate = event.item;\n const currentView = this.vm.currentViewMode();\n if (this.rangeBasedViews.includes(currentView)) {\n const selectionStartDate = this.vm.rangeStartDate();\n if (!selectionStartDate) {\n this.vm.setRangeStartDate(clickedDate);\n this.calendar()?.render();\n return;\n }\n const date1 = selectionStartDate.getTime();\n const date2 = clickedDate.getTime();\n const newStartDate = new Date(Math.min(date1, date2));\n const newEndDate = new Date(Math.max(date1, date2));\n const differenceInDays = this.calculateDifferenceInDays(newStartDate, newEndDate);\n this.vm.setCurrentDate(newStartDate);\n this.vm.setDaysCount(differenceInDays);\n this.vm.setRangeStartDate(null);\n this.calendar()?.render();\n this.popover()?.close();\n return;\n }\n let dateToSet = new Date(clickedDate);\n if (currentView === 'week') {\n const day = dateToSet.getDay();\n const weekStart = this.localeService.activeProfile().calendar.week.startsOn;\n let daysToSubtract = day - weekStart;\n if (daysToSubtract < 0) {\n daysToSubtract += 7;\n }\n dateToSet.setDate(dateToSet.getDate() - daysToSubtract);\n }\n this.vm.setCurrentDate(dateToSet);\n this.popover()?.close();\n this.calendar()?.render();\n }\n /**\n * Helper function to calculate the difference in whole days between two dates.\n * The result is inclusive (e.g., May 5 to May 6 is a 2-day range).\n */\n calculateDifferenceInDays(start, end) {\n if (!start || !end) {\n return 1;\n }\n const startDate = new Date(start.getFullYear(), start.getMonth(), start.getDate());\n const endDate = new Date(end.getFullYear(), end.getMonth(), end.getDate());\n const timeDifference = endDate.getTime() - startDate.getTime();\n const daysDifference = Math.round(timeDifference / (1000 * 3600 * 24));\n return daysDifference + 1;\n }\n handleTodayClick() {\n this.vm.setRangeStartDate(null);\n let currentDate;\n if (this.vm.currentViewMode() === 'week') {\n currentDate = this.calendarService\n .create(new Date(), this.localeService.activeProfile().calendar.system)\n .startOf('week').date;\n }\n else {\n currentDate = new Date();\n }\n this.vm.setCurrentDate(currentDate);\n this.popover()?.close();\n this.calendar()?.render();\n }\n async loadFromRoute() {\n const snapshot = this.activatedRoute.snapshot.queryParamMap;\n const view = snapshot.get('view') ?? null;\n const allValidViews = this.menuItems().flatMap((c) => (c.children ? c.children.map((child) => child.key) : c.key));\n if (view && allValidViews.includes(view)) {\n this.vm.setViewMode(view);\n }\n else if (!this.vm.currentViewMode()) {\n this.vm.setViewMode('day');\n }\n const type = snapshot.getAll('type');\n const assignee = snapshot.getAll('assignee');\n const reporter = snapshot.getAll('reporter');\n const priority = snapshot.getAll('priority');\n if (type.length || assignee.length || priority.length || reporter.length) {\n this.isQueryParam.set(true);\n this.vm.setSelectedTaskTypeNames(type, true);\n this.vm.setSelectedAssigneeIds(assignee, true);\n this.vm.setSelectedReporterIds(reporter, true);\n this.vm.setSelectedPriorities(priority, true);\n }\n const dateRange = snapshot.get('dateRange');\n if (dateRange) {\n const range = this.taskBoardService.rangeCalculator(dateRange);\n if (range) {\n this.vm.setCurrentDate(range.from);\n this.vm.setDaysCount(this.calculateDifferenceInDays(range.from, range.end));\n switch (dateRange) {\n case 'today':\n this.vm.setViewMode('day');\n break;\n case 'this-week':\n this.vm.setViewMode('week');\n this.vm.setRangeStartDate(range.from);\n break;\n case 'this-month':\n this.vm.setViewMode('month');\n break;\n }\n }\n }\n }\n /**\n * Checks if the currently selected task is still present in the list of visible tasks.\n * If not, it clears the selection to prevent showing details for a hidden task.\n * @param visibleTasks The new array of tasks that will be displayed.\n */\n validateSelectedTask(visibleTasks) {\n const currentSelectedTask = this.vm.selectedTask();\n // Proceed only if a task is actually selected\n if (currentSelectedTask) {\n // Check if any task in the new list has the same ID as the selected one\n const isSelectedTaskVisible = visibleTasks.some((task) => task.id === currentSelectedTask.id);\n // If the selected task is NOT in the new list, clear the selection.\n if (!isSelectedTaskVisible) {\n this.vm.selectTask(null);\n }\n }\n }\n async getResources() {\n if (this.vm.selectedTaskTypeNames().length !== 1) {\n this.resources.set([]);\n return;\n }\n const resources = await this.taskBoardService.getResources(this.vm.selectedTaskTypeNames()[0] ?? '');\n this.resources.set(resources);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMTaskBoardPage, isStandalone: true, selector: \"ng-component\", providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMTaskBoardPage,\n },\n ], viewQueries: [{ propertyName: \"popover\", first: true, predicate: [\"popover\"], descendants: true, isSignal: true }, { propertyName: \"calendar\", first: true, predicate: [\"calendar\"], descendants: true, isSignal: true }, { propertyName: \"contextMenu\", first: true, predicate: [\"rootContextMenu\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-toolbar>\\n <axp-layout-prefix class=\\\"sm:ax-flex-row ax-flex-col ax-items-start\\\">\\n <ax-button [text]=\\\"(t('task-board.view.' + selectedViewMode().text, { scope: rootConfig.config.i18n}) | async)!\\\">\\n <ax-prefix><ax-icon [icon]=\\\"selectedViewMode().icon\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel #dropdownPanel>\\n <ax-menu [orientation]=\\\"'vertical'\\\" class=\\\"ax-menu-container\\\">\\n @for (category of menuItems(); track category.key) {\\n <ng-container>\\n @if (category.children && category.children.length > 0) {\\n <ax-menu-item>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text>\\n @for (child of category.children; track child.key) {\\n <ax-menu-item (onClick)=\\\"handleViewChange(child.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"child.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text\\n >{{ (t('task-board.view.' + child.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text\\n >\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n } @else {\\n <ax-menu-item (onClick)=\\\"handleViewChange(category.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text>\\n </ax-menu-item>\\n }\\n </ng-container>\\n }\\n </ax-menu>\\n </ax-dropdown-panel>\\n <ax-suffix>\\n <ax-icon icon=\\\"fa-light fa-caret-down\\\"></ax-icon>\\n </ax-suffix>\\n </ax-button>\\n\\n <div class=\\\"ax-scheduler-header ax-w-max ax-sm sm:ax-md\\\">\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(false)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" [text]=\\\"timeText()\\\" #date></ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(true)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-popover [target]=\\\"date\\\" [placement]=\\\"'bottom'\\\" #popover [adaptivityEnabled]=\\\"true\\\">\\n <div class=\\\"ax-overlay-pane\\\">\\n <ax-calendar\\n #calendar\\n [type]=\\\"calendarType()\\\"\\n [depth]=\\\"calendarDepth()\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [ngModel]=\\\"vm.currentDate()\\\"\\n class=\\\"ax-single-range-calendar\\\"\\n (onSlotClick)=\\\"handleCalendarSlotClick($event)\\\"\\n >\\n <ax-footer>\\n <ax-button\\n look=\\\"link\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"todayButtonText()\\\"\\n (onClick)=\\\"handleTodayClick()\\\"\\n ></ax-button>\\n </ax-footer>\\n </ax-calendar>\\n </div>\\n </ax-popover>\\n </div>\\n </axp-layout-prefix>\\n\\n <axp-layout-suffix>\\n <ax-button [text]=\\\"t('task-board.filter.title', { scope: rootConfig.config.i18n }) | async\\\">\\n <ax-prefix><ax-icon icon=\\\"fa-{{vm.activeFilterCount()?'solid':'light'}} fa-filter\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel #filterDropdownPanel (onOpened)=\\\"filtersComponent.resetContextToViewModel()\\\">\\n <axm-task-board-filters\\n #filtersComponent\\n [isQueryParam]=\\\"isQueryParam()\\\"\\n (applyClicked)=\\\"filterDropdownPanel.close()\\\"\\n ></axm-task-board-filters>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n @if(deviceService.isLarge()) {\\n <ax-button (onClick)=\\\"vm.toggleDetailPanel()\\\">\\n <ax-icon icon=\\\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\\\"></ax-icon>\\n </ax-button>\\n }\\n </axp-layout-suffix>\\n </axp-page-toolbar>\\n <axp-page-content class=\\\"ax-flex ax-flex-row ax-gap-2\\\">\\n @if (isReady()) { @switch(vm.currentViewMode()) { @case('kanban') {\\n <axm-task-board-kanban-view\\n class=\\\"axp-kanban-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [tasks]=\\\"resolvedTasks()\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-kanban-view>\\n } @case('grid') {\\n <axm-task-board-grid-view\\n class=\\\"ax-h-full ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-grid-view>\\n } @case('status-grouped-grid') {\\n <axm-task-board-status-grouped-grid-view\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-status-grouped-grid-view>\\n } @default {\\n <axm-task-board-calendar-view\\n class=\\\"axp-scheduler-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [resources]=\\\"resources()\\\"\\n [startingDate]=\\\"vm.currentDate()\\\"\\n [dataSource]=\\\"schedulerDataSource\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n [selectedView]=\\\"vm.currentViewMode()\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n (onTaskRightClick)=\\\"handleContextMenu($event)\\\"\\n (component)=\\\"schedulerComponentChanged($event)\\\"\\n (onMonthSlotDblClicked)=\\\"handleMonthSlotDblClicked($event)\\\"\\n ></axm-task-board-calendar-view>\\n } }\\n <ax-context-menu\\n #rootContextMenu\\n [closeOn]=\\\"'leave'\\\"\\n [orientation]=\\\"'vertical'\\\"\\n (onOpening)=\\\"handleContextMenuOnOpening($event)\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\"\\n >\\n </ax-context-menu>\\n @if (vm.isDetailPanelOpen() && deviceService.isLarge()) {\\n <axm-task-board-detail-panel></axm-task-board-detail-panel>\\n } } @else {\\n <div class=\\\"ax-flex ax-items-center ax-justify-center ax-w-full ax-h-full\\\">\\n <ax-loading></ax-loading>\\n </div>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\"html[dir=rtl] axp-page-layout axp-page-toolbar axp-layout-prefix .ax-scheduler-header .arrow-icon:before{-moz-transform:scale(-1,1);-webkit-transform:scale(-1,1);-o-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scaleX(-1)}.ax-single-range-calendar .ax-range-start,.ax-single-range-calendar .ax-range-end{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.85)!important}.ax-single-range-calendar .ax-range-start:hover,.ax-single-range-calendar .ax-range-end:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}.ax-single-range-calendar .ax-range-start.ax-state-holiday,.ax-single-range-calendar .ax-range-end.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.85)!important}.ax-single-range-calendar .ax-range-between{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.65)}.ax-single-range-calendar .ax-range-between.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.65)}.ax-single-range-calendar ax-footer{display:flex;justify-content:center;border-color:rgba(var(--ax-comp-calendar-view-header-border-color));border-top-width:var(--ax-comp-calendar-view-header-border-width, 1px)}axp-page-content:not(:has(axm-task-board-status-grouped-grid-view,axm-task-board-time-grouped-grid-view)){overflow-y:hidden}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: \n //\n AXMenuModule }, { kind: \"component\", type: i2.AXMenuItemComponent, selector: \"ax-menu-item\", inputs: [\"name\", \"data\", \"disabled\", \"color\"], outputs: [\"onClick\"] }, { kind: \"component\", type: i2.AXMenuComponent, selector: \"ax-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"hasArrow\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: i2.AXContextMenuComponent, selector: \"ax-context-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"target\"], outputs: [\"onItemClick\", \"onOpening\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i4.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i5.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i6.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXBreadcrumbsModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: \n //\n AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXMTaskBoardCalendarViewComponent, selector: \"axm-task-board-calendar-view\", inputs: [\"resources\", \"startingDate\", \"selectedView\", \"dataSource\"], outputs: [\"onTaskClick\", \"onTaskChanged\", \"onMonthSlotDblClicked\", \"onActionClick\", \"component\", \"onTaskRightClick\", \"onRangeChanged\"] }, { kind: \"component\", type: AXMTaskBoardKanbanViewComponent, selector: \"axm-task-board-kanban-view\", inputs: [\"tasks\"], outputs: [\"tasksChange\", \"onTaskClick\", \"onTaskChanged\", \"component\", \"onActionClick\"] }, { kind: \"component\", type: AXMTaskBoardGridViewComponent, selector: \"axm-task-board-grid-view\", inputs: [\"dataSource\"], outputs: [\"onTaskClick\", \"onActionClick\"] }, { kind: \"component\", type: AXMTaskBoardStatusGroupedGridViewComponent, selector: \"axm-task-board-status-grouped-grid-view\", inputs: [\"provider\", \"dataSource\"], outputs: [\"onActionClick\"] }, { kind: \"component\", type: AXMTaskBoardDetailPanel, selector: \"axm-task-board-detail-panel\" }, { kind: \"component\", type: AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"component\", type: i7.AXPopoverComponent, selector: \"ax-popover\", inputs: [\"width\", \"disabled\", \"offsetX\", \"offsetY\", \"target\", \"placement\", \"content\", \"openOn\", \"closeOn\", \"hasBackdrop\", \"openAfter\", \"closeAfter\", \"backdropClass\", \"panelClass\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: AXCalendarComponent, selector: \"ax-calendar\", inputs: [\"rtl\", \"readonly\", \"value\", \"name\", \"disabled\", \"depth\", \"activeView\", \"minValue\", \"maxValue\", \"disabledDates\", \"holidayDates\", \"type\", \"dayCellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"cellClass\", \"showNavigation\", \"count\", \"id\", \"weekend\", \"weekdays\"], outputs: [\"onOptionChanged\", \"valueChange\", \"onValueChanged\", \"minValueChange\", \"maxValueChange\", \"onBlur\", \"onFocus\", \"depthChange\", \"typeChange\", \"activeViewChange\", \"disabledDatesChange\", \"holidayDatesChange\", \"onNavigate\", \"onSlotClick\", \"countChange\"] }, { kind: \"component\", type: AXMTaskBoardFiltersComponent, selector: \"axm-task-board-filters\", inputs: [\"isQueryParam\"], outputs: [\"applyClicked\"] }, { kind: \"pipe\", type: i8.AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMTaskBoardPage, decorators: [{\n type: Component,\n args: [{ imports: [\n FormsModule,\n CommonModule,\n RouterModule,\n //\n AXMenuModule,\n AXButtonModule,\n AXDropdownButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n //\n AXPThemeLayoutBlockComponent,\n AXPPageLayoutComponent,\n AXMTaskBoardCalendarViewComponent,\n AXMTaskBoardKanbanViewComponent,\n AXMTaskBoardGridViewComponent,\n AXMTaskBoardStatusGroupedGridViewComponent,\n AXMTaskBoardDetailPanel,\n AXDropdownPanelComponent,\n AXPopoverModule,\n AXCalendarComponent,\n AXMTaskBoardFiltersComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMTaskBoardPage,\n },\n ], template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-toolbar>\\n <axp-layout-prefix class=\\\"sm:ax-flex-row ax-flex-col ax-items-start\\\">\\n <ax-button [text]=\\\"(t('task-board.view.' + selectedViewMode().text, { scope: rootConfig.config.i18n}) | async)!\\\">\\n <ax-prefix><ax-icon [icon]=\\\"selectedViewMode().icon\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel #dropdownPanel>\\n <ax-menu [orientation]=\\\"'vertical'\\\" class=\\\"ax-menu-container\\\">\\n @for (category of menuItems(); track category.key) {\\n <ng-container>\\n @if (category.children && category.children.length > 0) {\\n <ax-menu-item>\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text>\\n @for (child of category.children; track child.key) {\\n <ax-menu-item (onClick)=\\\"handleViewChange(child.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"child.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text\\n >{{ (t('task-board.view.' + child.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text\\n >\\n </ax-menu-item>\\n }\\n </ax-menu-item>\\n } @else {\\n <ax-menu-item (onClick)=\\\"handleViewChange(category.key,dropdownPanel)\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"category.icon\\\"></ax-icon>\\n </ax-prefix>\\n <ax-text>{{ (t('task-board.' + category.text, { scope: rootConfig.config.i18n}) | async)! }}</ax-text>\\n </ax-menu-item>\\n }\\n </ng-container>\\n }\\n </ax-menu>\\n </ax-dropdown-panel>\\n <ax-suffix>\\n <ax-icon icon=\\\"fa-light fa-caret-down\\\"></ax-icon>\\n </ax-suffix>\\n </ax-button>\\n\\n <div class=\\\"ax-scheduler-header ax-w-max ax-sm sm:ax-md\\\">\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(false)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" [text]=\\\"timeText()\\\" #date></ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"changeDate(true)\\\">\\n <ax-icon class=\\\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\\\"></ax-icon>\\n </ax-button>\\n <ax-popover [target]=\\\"date\\\" [placement]=\\\"'bottom'\\\" #popover [adaptivityEnabled]=\\\"true\\\">\\n <div class=\\\"ax-overlay-pane\\\">\\n <ax-calendar\\n #calendar\\n [type]=\\\"calendarType()\\\"\\n [depth]=\\\"calendarDepth()\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [ngModel]=\\\"vm.currentDate()\\\"\\n class=\\\"ax-single-range-calendar\\\"\\n (onSlotClick)=\\\"handleCalendarSlotClick($event)\\\"\\n >\\n <ax-footer>\\n <ax-button\\n look=\\\"link\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"todayButtonText()\\\"\\n (onClick)=\\\"handleTodayClick()\\\"\\n ></ax-button>\\n </ax-footer>\\n </ax-calendar>\\n </div>\\n </ax-popover>\\n </div>\\n </axp-layout-prefix>\\n\\n <axp-layout-suffix>\\n <ax-button [text]=\\\"t('task-board.filter.title', { scope: rootConfig.config.i18n }) | async\\\">\\n <ax-prefix><ax-icon icon=\\\"fa-{{vm.activeFilterCount()?'solid':'light'}} fa-filter\\\"></ax-icon></ax-prefix>\\n <ax-dropdown-panel #filterDropdownPanel (onOpened)=\\\"filtersComponent.resetContextToViewModel()\\\">\\n <axm-task-board-filters\\n #filtersComponent\\n [isQueryParam]=\\\"isQueryParam()\\\"\\n (applyClicked)=\\\"filterDropdownPanel.close()\\\"\\n ></axm-task-board-filters>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n @if(deviceService.isLarge()) {\\n <ax-button (onClick)=\\\"vm.toggleDetailPanel()\\\">\\n <ax-icon icon=\\\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\\\"></ax-icon>\\n </ax-button>\\n }\\n </axp-layout-suffix>\\n </axp-page-toolbar>\\n <axp-page-content class=\\\"ax-flex ax-flex-row ax-gap-2\\\">\\n @if (isReady()) { @switch(vm.currentViewMode()) { @case('kanban') {\\n <axm-task-board-kanban-view\\n class=\\\"axp-kanban-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [tasks]=\\\"resolvedTasks()\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-kanban-view>\\n } @case('grid') {\\n <axm-task-board-grid-view\\n class=\\\"ax-h-full ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-grid-view>\\n } @case('status-grouped-grid') {\\n <axm-task-board-status-grouped-grid-view\\n class=\\\"ax-flex ax-flex-col ax-gap-2 ax-w-full ax-min-w-0\\\"\\n [dataSource]=\\\"gridDataSource\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n ></axm-task-board-status-grouped-grid-view>\\n } @default {\\n <axm-task-board-calendar-view\\n class=\\\"axp-scheduler-container ax-h-full ax-w-full ax-min-w-0\\\"\\n [resources]=\\\"resources()\\\"\\n [startingDate]=\\\"vm.currentDate()\\\"\\n [dataSource]=\\\"schedulerDataSource\\\"\\n (onTaskClick)=\\\"vm.selectTask($event)\\\"\\n [selectedView]=\\\"vm.currentViewMode()\\\"\\n (onActionClick)=\\\"handleContextMenu($event)\\\"\\n (onTaskRightClick)=\\\"handleContextMenu($event)\\\"\\n (component)=\\\"schedulerComponentChanged($event)\\\"\\n (onMonthSlotDblClicked)=\\\"handleMonthSlotDblClicked($event)\\\"\\n ></axm-task-board-calendar-view>\\n } }\\n <ax-context-menu\\n #rootContextMenu\\n [closeOn]=\\\"'leave'\\\"\\n [orientation]=\\\"'vertical'\\\"\\n (onOpening)=\\\"handleContextMenuOnOpening($event)\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\"\\n >\\n </ax-context-menu>\\n @if (vm.isDetailPanelOpen() && deviceService.isLarge()) {\\n <axm-task-board-detail-panel></axm-task-board-detail-panel>\\n } } @else {\\n <div class=\\\"ax-flex ax-items-center ax-justify-center ax-w-full ax-h-full\\\">\\n <ax-loading></ax-loading>\\n </div>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\"html[dir=rtl] axp-page-layout axp-page-toolbar axp-layout-prefix .ax-scheduler-header .arrow-icon:before{-moz-transform:scale(-1,1);-webkit-transform:scale(-1,1);-o-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scaleX(-1)}.ax-single-range-calendar .ax-range-start,.ax-single-range-calendar .ax-range-end{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.85)!important}.ax-single-range-calendar .ax-range-start:hover,.ax-single-range-calendar .ax-range-end:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}.ax-single-range-calendar .ax-range-start.ax-state-holiday,.ax-single-range-calendar .ax-range-end.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.85)!important}.ax-single-range-calendar .ax-range-between{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.65)}.ax-single-range-calendar .ax-range-between.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.65)}.ax-single-range-calendar ax-footer{display:flex;justify-content:center;border-color:rgba(var(--ax-comp-calendar-view-header-border-color));border-top-width:var(--ax-comp-calendar-view-header-border-width, 1px)}axp-page-content:not(:has(axm-task-board-status-grouped-grid-view,axm-task-board-time-grouped-grid-view)){overflow-y:hidden}\\n\"] }]\n }], propDecorators: { popover: [{ type: i0.ViewChild, args: ['popover', { isSignal: true }] }], calendar: [{ type: i0.ViewChild, args: ['calendar', { isSignal: true }] }], contextMenu: [{ type: i0.ViewChild, args: ['rootContextMenu', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1ib2FyZC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdGFzay1ib2FyZC5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rhc2stYm9hcmQvdGFzay1ib2FyZC5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQXVCLE1BQU0sNkJBQTZCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFJTCxZQUFZLEdBQ2IsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQXNCLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpGLE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1B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QkFDZixtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsRUFBRTt3QkFDRiw0QkFBNEI7d0JBQzVCLHNCQUFzQjt3QkFDdEIsaUNBQWlDO3dCQUNqQywrQkFBK0I7d0JBQy9CLDZCQUE2Qjt3QkFDN0IsMENBQTBDO3dCQUMxQyx1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLDRCQUE0QjtxQkFDN0IsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxrQkFBa0I7eUJBQzlCO3FCQUNGO3FFQWFpRCxTQUFTLGtFQUNQLFVBQVUscUVBMkpOLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYU3R5bGVDb2xvclR5cGUgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEJyZWFkY3J1bWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWENhbGVuZGFyQ29tcG9uZW50LCBBWENhbGVuZGFyU2xvdENsaWNrIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93blBhbmVsQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7XG4gIEFYQ29udGV4dE1lbnVDb21wb25lbnQsXG4gIEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQsXG4gIEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQsXG4gIEFYTWVudU1vZHVsZSxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21lbnUnO1xuaW1wb3J0IHsgQVhQb3BvdmVyQ29tcG9uZW50LCBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFNjaGVkdWxlckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zY2hlZHVsZXInO1xuaW1wb3J0IHsgQVhDYWxlbmRhclNlcnZpY2UsIEFYRGF0ZVRpbWUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBWFBCcmVhZGNydW1iSXRlbSwgQVhQRGV2aWNlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZSwgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBPbkluaXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTVRhc2tCb2FyZERldGFpbFBhbmVsIH0gZnJvbSAnLi90YXNrLWJvYXJkLWRldGFpbC1wYW5lbC90YXNrLWJvYXJkLWRldGFpbC1wYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkRmlsdGVyc0NvbXBvbmVudCB9IGZyb20gJy4vdGFzay1ib2FyZC1maWx0ZXJzL3Rhc2stYm9hcmQtZmlsdGVycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQVGFza0JvYXJkU2VydmljZSB9IGZyb20gJy4vdGFzay1ib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFJlc291cmNlLCBBWFBUYXNrLCBBWFBUYXNrQWN0aW9uLCBBWFBUYXNrRmlsdGVyIH0gZnJvbSAnLi90YXNrLWJvYXJkLnR5cGVzJztcbmltcG9ydCB7IEFYTVRhc2tCb2FyZFZpZXdNb2RlbCwgQVhQUHJpb3JpdHlGaWx0ZXJLZXksIEFYUFRhc2tCb2FyZFZpZXdNb2RlIH0gZnJvbSAnLi90YXNrLWJvYXJkLnZpZXdtb2RlbCc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRDYWxlbmRhclZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdzL3Rhc2stYm9hcmQtY2FsZW5kYXItdmlldy90YXNrLWJvYXJkLWNhbGVuZGFyLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYTVRhc2tCb2FyZEdyaWRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi92aWV3cy90YXNrLWJvYXJkLWdyaWQtdmlldy90YXNrLWJvYXJkLWdyaWQtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhNVGFza0JvYXJkS2FuYmFuVmlld0NvbXBvbmVudCB9IGZyb20gJy4vdmlld3MvdGFzay1ib2FyZC1rYW5iYW4tdmlldy90YXNrLWJvYXJkLWthbmJhbi12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWE1UYXNrQm9hcmRTdGF0dXNHcm91cGVkR3JpZFZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdzL3Rhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3L3Rhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3LmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIEFYUFRhc2tCb2FyZFZpZXdDYXRlZ29yeSA9ICdjYWxlbmRhcicgfCAndGltZWxpbmUnIHwgJ3RhYmxlJyB8ICdrYW5iYW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stYm9hcmQucGFnZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1ib2FyZC5wYWdlLnNjc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgLy9cbiAgICBBWE1lbnVNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIEFYQmFkZ2VNb2R1bGUsXG4gICAgLy9cbiAgICBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50LFxuICAgIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgQVhNVGFza0JvYXJkQ2FsZW5kYXJWaWV3Q29tcG9uZW50LFxuICAgIEFYTVRhc2tCb2FyZEthbmJhblZpZXdDb21wb25lbnQsXG4gICAgQVhNVGFza0JvYXJkR3JpZFZpZXdDb21wb25lbnQsXG4gICAgQVhNVGFza0JvYXJkU3RhdHVzR3JvdXBlZEdyaWRWaWV3Q29tcG9uZW50LFxuICAgIEFYTVRhc2tCb2FyZERldGFpbFBhbmVsLFxuICAgIEFYRHJvcGRvd25QYW5lbENvbXBvbmVudCxcbiAgICBBWFBvcG92ZXJNb2R1bGUsXG4gICAgQVhDYWxlbmRhckNvbXBvbmVudCxcbiAgICBBWE1UYXNrQm9hcmRGaWx0ZXJzQ29tcG9uZW50LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQUGFnZUxheW91dEJhc2UsXG4gICAgICB1c2VFeGlzdGluZzogQVhNVGFza0JvYXJkUGFnZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1UYXNrQm9hcmRQYWdlIGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm9vdENvbmZpZyA9IFJvb3RDb25maWc7XG4gIHByb3RlY3RlZCByZWFkb25seSBkZXZpY2VTZXJ2aWNlID0gaW5qZWN0KEFYUERldmljZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhNVGFza0JvYXJkVmlld01vZGVsKTtcbiAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZSA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoQVhMb2NhbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRhc2tCb2FyZFNlcnZpY2UgPSBpbmplY3QoQVhQVGFza0JvYXJkU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHBvcG92ZXIgPSB2aWV3Q2hpbGQ8QVhQb3BvdmVyQ29tcG9uZW50PigncG9wb3ZlcicpO1xuICBwcm90ZWN0ZWQgY2FsZW5kYXIgPSB2aWV3Q2hpbGQ8QVhDYWxlbmRhckNvbXBvbmVudD4oJ2NhbGVuZGFyJyk7XG5cbiAgcHJvdGVjdGVkIGlzUmVhZHkgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVzb3VyY2VzID0gc2lnbmFsPEFYUFJlc291cmNlW10+KFtdKTtcbiAgcHJvdGVjdGVkIGlzUXVlcnlQYXJhbSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgY3VycmVudFRhc2sgPSBzaWduYWw8QVhQVGFzayB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgY3VycmVudFZpZXdNb2RlID0gc2lnbmFsPCdjYWxlbmRhcicgfCAna2FuYmFuJyB8ICdncmlkJyB8ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJz4oJ2NhbGVuZGFyJyk7XG4gIHByb3RlY3RlZCBzY2hlZHVsZXJDb21wb25lbnQgPSBzaWduYWw8QVhTY2hlZHVsZXJDb21wb25lbnQgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1lbnVJdGVtcyA9IHNpZ25hbDxcbiAgICB7XG4gICAgICBrZXk6IEFYUFRhc2tCb2FyZFZpZXdDYXRlZ29yeTtcbiAgICAgIHRleHQ6IHN0cmluZztcbiAgICAgIGljb246IHN0cmluZztcbiAgICAgIGNoaWxkcmVuPzogeyBrZXk6IEFYUFRhc2tCb2FyZFZpZXdNb2RlOyB0ZXh0OiBzdHJpbmc7IGljb246IHN0cmluZyB9W107XG4gICAgfVtdXG4gID4oW1xuICAgIHtcbiAgICAgIGtleTogJ2NhbGVuZGFyJyxcbiAgICAgIHRleHQ6ICdjYWxlbmRhcicsXG4gICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY2FsZW5kYXItZGF5JyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHsga2V5OiAnZGF5JywgdGV4dDogJ2RhaWx5JywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNhbGVuZGFyLWRheScgfSxcbiAgICAgICAgeyBrZXk6ICd3ZWVrJywgdGV4dDogJ3dlZWtseScsIGljb246ICdmYS1saWdodCBmYS1jYWxlbmRhci13ZWVrJyB9LFxuICAgICAgICB7IGtleTogJ21vbnRoJywgdGV4dDogJ21vbnRobHknLCBpY29uOiAnZmEtbGlnaHQgZmEtY2FsZW5kYXItYWx0JyB9LFxuICAgICAgICB7IGtleTogJ2FnZW5kYScsIHRleHQ6ICdhZ2VuZGEnLCBpY29uOiAnZmEtbGlnaHQgZmEtY2FsZW5kYXItcmFuZ2UnIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndGltZWxpbmUnLFxuICAgICAgdGV4dDogJ3RpbWVsaW5lJyxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS1saXN0LXRpbWVsaW5lJyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHsga2V5OiAndGltZWxpbmUtZGF5JywgdGV4dDogJ2RhaWx5LXRpbWVsaW5lJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNhbGVuZGFyLWRheScgfSxcbiAgICAgICAgeyBrZXk6ICd0aW1lbGluZS1tdWx0aS1kYXknLCB0ZXh0OiAnbXVsdGktZGF5LXRpbWVsaW5lJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNhbGVuZGFyLXdlZWsnIH0sXG4gICAgICAgIHsga2V5OiAndGltZWxpbmUtbW9udGgnLCB0ZXh0OiAnbW9udGhseS10aW1lbGluZScsIGljb246ICdmYS1saWdodCBmYS1jYWxlbmRhci1hbHQnIH0sXG4gICAgICAgIHsga2V5OiAndGltZWxpbmUteWVhcicsIHRleHQ6ICd5ZWFybHktdGltZWxpbmUnLCBpY29uOiAnZmEtbGlnaHQgZmEtY2FsZW5kYXItcmFuZ2UnIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndGFibGUnLFxuICAgICAgdGV4dDogJ3RhYmxlJyxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS10YWJsZScsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICB7IGtleTogJ2dyaWQnLCB0ZXh0OiAnZ3JpZCcsIGljb246ICdmYS1saWdodCBmYS10YWJsZScgfSxcbiAgICAgICAgeyBrZXk6ICdzdGF0dXMtZ3JvdXBlZC1ncmlkJywgdGV4dDogJ3N0YXR1cy1ncm91cGVkLWdyaWQnLCBpY29uOiAnZmEtbGlnaHQgZmEtdGFibGUnIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAgeyBrZXk6ICdrYW5iYW4nLCB0ZXh0OiAna2FuYmFuJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNoYXJ0LWthbmJhbicgfSxcbiAgXSk7XG5cbiAgcHJvdGVjdGVkIGNhbGVuZGFyVHlwZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtKTtcbiAgcHJvdGVjdGVkIHRvZGF5QnV0dG9uVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCkpIHtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICBjYXNlICdncmlkJzpcbiAgICAgIGNhc2UgJ2FnZW5kYSc6XG4gICAgICBjYXNlICdrYW5iYW4nOlxuICAgICAgY2FzZSAndGltZWxpbmUtZGF5JzpcbiAgICAgIGNhc2UgJ3RpbWVsaW5lLXllYXInOlxuICAgICAgY2FzZSAndGltZWxpbmUtbXVsdGktZGF5JzpcbiAgICAgIGNhc2UgJ3N0YXR1cy1ncm91cGVkLWdyaWQnOlxuICAgICAgICByZXR1cm4gJ1RvZGF5JztcbiAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICByZXR1cm4gJ0N1cnJlbnQgd2Vlayc7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICBjYXNlICd0aW1lbGluZS1tb250aCc6XG4gICAgICAgIHJldHVybiAnQ3VycmVudCBtb250aCc7XG4gICAgICBjYXNlICd0aW1lbGluZS15ZWFyJzpcbiAgICAgICAgcmV0dXJuICdDdXJyZW50IHllYXInO1xuICAgIH1cbiAgfSk7XG4gIHByb3RlY3RlZCB0aW1lVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpID09PSAnZ3JpZCcgfHxcbiAgICAgIHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCkgPT09ICdrYW5iYW4nIHx8XG4gICAgICB0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpID09PSAnc3RhdHVzLWdyb3VwZWQtZ3JpZCdcbiAgICApIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKFxuICAgICAgICB0aGlzLnZtLmN1cnJlbnREYXRlKCksXG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0LmFkZCgnZGF5JywgdGhpcy52bS5kYXlzQ291bnQoKSAtIDEpO1xuICAgICAgY29uc3Qgc3RhcnRUZXh0ID0gc3RhcnQuZm9ybWF0KCdERCBNTU1NIHl5eXknLCB7IGxvY2FsZTogdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0gfSk7XG4gICAgICBjb25zdCBlbmRUZXh0ID0gZW5kLmZvcm1hdCgnREQgTU1NTSB5eXl5JywgeyBsb2NhbGU6IHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtIH0pO1xuICAgICAgcmV0dXJuIGAke3N0YXJ0VGV4dH0gLSAke2VuZFRleHR9YDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyQ29tcG9uZW50KCk/LmN1cnJlbnREYXRlVGV4dCgpO1xuICB9KTtcbiAgcHJvdGVjdGVkIGNhbGVuZGFyRGVwdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSA9PT0gJ2dyaWQnIHx8XG4gICAgICB0aGlzLnZtLmN1cnJlbnRWaWV3TW9kZSgpID09PSAna2FuYmFuJyB8fFxuICAgICAgdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSA9PT0gJ3N0YXR1cy1ncm91cGVkLWdyaWQnXG4gICAgKSB7XG4gICAgICByZXR1cm4gJ2RheSc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNjaGVkdWxlckNvbXBvbmVudCgpPy5jYWxlbmRhckRlcHRoKCk7XG4gIH0pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRWaWV3TW9kZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50TW9kZSA9IHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCk7XG4gICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiB0aGlzLm1lbnVJdGVtcygpKSB7XG4gICAgICBpZiAoY2F0ZWdvcnkua2V5ID09PSBjdXJyZW50TW9kZSkge1xuICAgICAgICByZXR1cm4geyBrZXk6IGNhdGVnb3J5LmtleSBhcyBBWFBUYXNrQm9hcmRWaWV3TW9kZSwgdGV4dDogY2F0ZWdvcnkudGV4dCwgaWNvbjogY2F0ZWdvcnkuaWNvbiB9O1xuICAgICAgfVxuICAgICAgaWYgKGNhdGVnb3J5LmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kQ2hpbGQgPSBjYXRlZ29yeS5jaGlsZHJlbi5maW5kKChjaGlsZCkgPT4gY2hpbGQua2V5ID09PSBjdXJyZW50TW9kZSk7XG4gICAgICAgIGlmIChmb3VuZENoaWxkKSB7XG4gICAgICAgICAgcmV0dXJuIGZvdW5kQ2hpbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZmlyc3RDYXRlZ29yeSA9IHRoaXMubWVudUl0ZW1zKClbMF07XG4gICAgcmV0dXJuIGZpcnN0Q2F0ZWdvcnkuY2hpbGRyZW5cbiAgICAgID8gZmlyc3RDYXRlZ29yeS5jaGlsZHJlblswXVxuICAgICAgOiB7IGtleTogZmlyc3RDYXRlZ29yeS5rZXkgYXMgQVhQVGFza0JvYXJkVmlld01vZGUsIHRleHQ6IGZpcnN0Q2F0ZWdvcnkudGV4dCwgaWNvbjogZmlyc3RDYXRlZ29yeS5pY29uIH07XG4gIH0pO1xuICBwcm90ZWN0ZWQgZmlsdGVyID0gY29tcHV0ZWQ8QVhQVGFza0ZpbHRlcj4oKCkgPT4ge1xuICAgIGNvbnN0IHRhc2tUeXBlTmFtZXMgPSB0aGlzLnZtLnNlbGVjdGVkVGFza1R5cGVOYW1lcygpO1xuICAgIGNvbnN0IHR5cGVzID0gdGFza1R5cGVOYW1lcy5sZW5ndGggPiAwID8gdGFza1R5cGVOYW1lcyA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhc3NpZ25lZUlkcyA9IHRoaXMudm0uc2VsZWN0ZWRBc3NpZ25lZUlkcygpO1xuICAgIGNvbnN0IHJlcG9ydGVySWRzID0gdGhpcy52bS5zZWxlY3RlZFJlcG9ydGVySWRzKCk7XG4gICAgY29uc3QgcHJpb3JpdGllcyA9IHRoaXMudm0uc2VsZWN0ZWRQcmlvcml0aWVzKCk7XG5cbiAgICBsZXQgZnJvbTogQVhEYXRlVGltZSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShcbiAgICAgIHRoaXMudm0uY3VycmVudERhdGUoKSxcbiAgICAgIHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtLFxuICAgICk7XG4gICAgbGV0IGVuZDogQVhEYXRlVGltZTtcblxuICAgIGNvbnN0IGN1cnJlbnRWaWV3ID0gdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKTtcblxuICAgIGlmIChcbiAgICAgIGN1cnJlbnRWaWV3ID09PSAnZ3JpZCcgfHxcbiAgICAgIGN1cnJlbnRWaWV3ID09PSAna2FuYmFuJyB8fFxuICAgICAgY3VycmVudFZpZXcgPT09ICdhZ2VuZGEnIHx8XG4gICAgICBjdXJyZW50VmlldyA9PT0gJ3RpbWVsaW5lLW11bHRpLWRheScgfHxcbiAgICAgIGN1cnJlbnRWaWV3ID09PSAnc3RhdHVzLWdyb3VwZWQtZ3JpZCdcbiAgICApIHtcbiAgICAgIGVuZCA9IGZyb20uYWRkKCdkYXknLCB0aGlzLnZtLmRheXNDb3VudCgpIC0gMSk7XG4gICAgfSBlbHNlIGlmIChjdXJyZW50VmlldyA9PT0gJ21vbnRoJyB8fCBjdXJyZW50VmlldyA9PT0gJ3RpbWVsaW5lLW1vbnRoJykge1xuICAgICAgZnJvbSA9IGZyb20uc3RhcnRPZignbW9udGgnKTtcbiAgICAgIGVuZCA9IGZyb20uZW5kT2YoJ21vbnRoJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IGZyb20uZW5kT2YoJ2RheScpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi4odHlwZXMgJiYgeyB0eXBlcyB9KSxcbiAgICAgIC4uLihhc3NpZ25lZUlkcy5sZW5ndGggPiAwICYmIHsgYXNzaWduZWVJZHMgfSksXG4gICAgICAuLi4ocmVwb3J0ZXJJZHMubGVuZ3RoID4gMCAmJiB7IHJlcG9ydGVySWRzIH0pLFxuICAgICAgLi4uKHByaW9yaXRpZXMubGVuZ3RoID4gMCAmJiB7IHByaW9yaXRpZXMgfSksXG4gICAgICByYW5nZTogeyBmcm9tOiBmcm9tLmRhdGUsIGVuZDogZW5kLmRhdGUgfSxcbiAgICB9O1xuICB9KTtcblxuICBwcml2YXRlIGNvbnRleHRNZW51ID0gdmlld0NoaWxkPEFYQ29udGV4dE1lbnVDb21wb25lbnQ+KCdyb290Q29udGV4dE1lbnUnKTtcblxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBhd2FpdCBzdXBlci5uZ09uSW5pdCgpO1xuICAgIGF3YWl0IHRoaXMudm0uaW5pdGlhbGl6ZSgpO1xuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZS50YWtlVW50aWxEZXN0cm95LFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkRnJvbVJvdXRlKCk7XG4gICAgICAgIGlmICghdGhpcy5pc1JlYWR5KCkpIHtcbiAgICAgICAgICB0aGlzLmlzUmVhZHkuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMudGFza0JvYXJkU2VydmljZS5yZWZyZXNoJC5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy50YXNrUmVzb2x2ZUhhbmRsZXIoKTtcbiAgICAgIGF3YWl0IHRoaXMuZ2V0UmVzb3VyY2VzKCk7XG4gICAgfSk7XG4gIH1cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZVRpdGxlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHRhc2stbWFuYWdlbWVudDp0YXNrLWJvYXJkLnBhZ2UtdGl0bGUnKTtcbiAgfVxuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlQnJlYWRjcnVtYnMoKTogUHJvbWlzZTxBWFBCcmVhZGNydW1iSXRlbVtdPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHRhc2stbWFuYWdlbWVudDpyb290LW1lbnUnKSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzY2hlZHVsZXJEYXRhU291cmNlID0gKGZpbHRlcj86IEFYUFRhc2tGaWx0ZXIpOiBQcm9taXNlPEFYUFRhc2tbXT4gPT4ge1xuICAgIGNvbnN0IGZpbmFsRmlsdGVyOiBBWFBUYXNrRmlsdGVyID0geyAuLi50aGlzLmZpbHRlcigpLCAuLi5maWx0ZXIgfTtcblxuICAgIHJldHVybiB0aGlzLnRhc2tCb2FyZFNlcnZpY2UuZ2V0VGFza3MoZmluYWxGaWx0ZXIpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy52YWxpZGF0ZVNlbGVjdGVkVGFzayhyZXN1bHQuaXRlbXMpO1xuICAgICAgcmV0dXJuIHJlc3VsdC5pdGVtcztcbiAgICB9KTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZ3JpZERhdGFTb3VyY2UgPSAoZmlsdGVyPzogQVhQVGFza0ZpbHRlcik6IFByb21pc2U8eyBpdGVtczogQVhQVGFza1tdOyB0b3RhbDogbnVtYmVyIH0+ID0+IHtcbiAgICBjb25zdCBmaW5hbEZpbHRlcjogQVhQVGFza0ZpbHRlciA9IHsgLi4udGhpcy5maWx0ZXIoKSwgLi4uZmlsdGVyIH07XG5cbiAgICByZXR1cm4gdGhpcy50YXNrQm9hcmRTZXJ2aWNlLmdldFRhc2tzKGZpbmFsRmlsdGVyKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVTZWxlY3RlZFRhc2socmVzdWx0Lml0ZW1zKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG4gIH07XG5cbiAgcmVzb2x2ZWRUYXNrcyA9IHNpZ25hbDxBWFBUYXNrW10+KFtdKTtcbiAgZWZmID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB2aWV3TW9kZSA9IHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCk7XG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5maWx0ZXIoKTtcbiAgICBpZiAodmlld01vZGUgPT09ICdrYW5iYW4nKSB7XG4gICAgICBhd2FpdCB0aGlzLnRhc2tSZXNvbHZlSGFuZGxlcihmaWx0ZXIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcHJpdmF0ZSBhc3luYyB0YXNrUmVzb2x2ZUhhbmRsZXIoZmlsdGVyOiBBWFBUYXNrRmlsdGVyID0gdGhpcy5maWx0ZXIoKSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMudGFza0JvYXJkU2VydmljZS5nZXRUYXNrcyhmaWx0ZXIpO1xuICAgIHRoaXMudmFsaWRhdGVTZWxlY3RlZFRhc2socmVzdWx0Lml0ZW1zKTtcbiAgICB0aGlzLnJlc29sdmVkVGFza3Muc2V0KHJlc3VsdC5pdGVtcyk7XG4gIH1cblxuICBzY2hlZHVsZXJDb21wb25lbnRDaGFuZ2VkKGNvbXBvbmVudDogQVhTY2hlZHVsZXJDb21wb25lbnQpIHtcbiAgICB0aGlzLnNjaGVkdWxlckNvbXBvbmVudC5zZXQoY29tcG9uZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVDb250ZXh0TWVudU9uT3BlbmluZyhldmVudDogQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCkge1xuICAgIGNvbnN0IGN1cnJlbnRUYXNrID0gdGhpcy5jdXJyZW50VGFzaygpO1xuICAgIGlmICghY3VycmVudFRhc2spIHJldHVybjtcbiAgICBjb25zdCBwcm92aWRlck5hbWUgPSBjdXJyZW50VGFzay5wcm92aWRlcjtcbiAgICBpZiAoIXByb3ZpZGVyTmFtZSkgcmV0dXJuO1xuICAgIGNvbnN0IHByb3ZpZGVyID0gdGhpcy50YXNrQm9hcmRTZXJ2aWNlLmdldFByb3ZpZGVyKHByb3ZpZGVyTmFtZSk7XG4gICAgaWYgKCFwcm92aWRlcikgcmV0dXJuO1xuICAgIGNvbnN0IGFjdGlvbnMgPSBhd2FpdCBwcm92aWRlci5nZXRBY3Rpb25zKGN1cnJlbnRUYXNrKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYWN0aW9ucykge1xuICAgICAgZXZlbnQuaXRlbXMucHVzaCh7XG4gICAgICAgIHRleHQ6IGl0ZW0udGl0bGUsXG4gICAgICAgIGljb246IGl0ZW0uaWNvbixcbiAgICAgICAgY29sb3I6IGl0ZW0uY29sb3IgYXMgQVhTdHlsZUNvbG9yVHlwZSxcbiAgICAgICAgYnJlYWs6IGl0ZW0uYnJlYWssXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjb21tYW5kOiBpdGVtLmNvbW1hbmQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29udGV4dE1lbnUoZXZlbnQ6IEFYUFRhc2tBY3Rpb24pIHtcbiAgICB0aGlzLmN1cnJlbnRUYXNrLnNldChldmVudC50YXNrKTtcbiAgICBjb25zdCB4ID0gZXZlbnQubmF0aXZlRXZlbnQuY2xpZW50WDtcbiAgICBjb25zdCB5ID0gZXZlbnQubmF0aXZlRXZlbnQuY2xpZW50WTtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQubmF0aXZlRXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMuY29udGV4dE1lbnUoKT8uc2hvd0F0KHsgeCwgeSB9LCBlbGVtZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVNb250aFNsb3REYmxDbGlja2VkKGRhdGU6IERhdGUpIHtcbiAgICB0aGlzLnZtLnNldEN1cnJlbnREYXRlKGRhdGUpO1xuICAgIHRoaXMudm0uc2V0Vmlld01vZGUoJ2RheScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVZpZXdDaGFuZ2UodmlldzogYW55LCBkcm9wZG93blBhbmVsOiBBWERyb3Bkb3duUGFuZWxDb21wb25lbnQpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyBxdWVyeVBhcmFtczogeyB2aWV3IH0gfSk7XG4gICAgdGhpcy52bS5zZXRWaWV3TW9kZSh2aWV3KTtcbiAgICB0aGlzLnBvcG92ZXIoKT8uY2xvc2UoKTtcbiAgICBkcm9wZG93blBhbmVsLmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHJlZnJlc2hFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMudm0uc2VsZWN0ZWRUYXNrVHlwZU5hbWVzKCk7XG4gICAgdGhpcy5nZXRSZXNvdXJjZXMoKTtcbiAgICB0aGlzLnNjaGVkdWxlckNvbXBvbmVudCgpPy5yZWZyZXNoKCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBoYW5kbGVDb250ZXh0TWVudUl0ZW1DbGljayhldmVudDogQVhDb250ZXh0TWVudUl0ZW1zQ2xpY2tFdmVudCkge1xuICAgIHRoaXMudGFza0JvYXJkU2VydmljZS5leGVjdXRlQ29tbWFuZChldmVudC5pdGVtLmRhdGE/LmNvbW1hbmQsIHRoaXMuY3VycmVudFRhc2soKT8ucHJvdmlkZXIgPz8gJycpO1xuICB9XG5cbiAgY2hhbmdlRGF0ZShmb3J3YXJkOiBib29sZWFuKSB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZSh0aGlzLnZtLmN1cnJlbnREYXRlKCksIHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtKTtcbiAgICBzd2l0Y2ggKHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCkpIHtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICBjYXNlICd0aW1lbGluZS1kYXknOlxuICAgICAgICB0aGlzLnZtLnNldEN1cnJlbnREYXRlKGRhdGUuYWRkKCdkYXknLCBmb3J3YXJkID8gMSA6IC0xKS5kYXRlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICB0aGlzLnZtLnNldEN1cnJlbnREYXRlKGRhdGUuYWRkKCd3ZWVrJywgZm9yd2FyZCA/IDEgOiAtMSkuZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdncmlkJzpcbiAgICAgIGNhc2UgJ2FnZW5kYSc6XG4gICAgICBjYXNlICdrYW5iYW4nOlxuICAgICAgY2FzZSAndGltZWxpbmUtbXVsdGktZGF5JzpcbiAgICAgIGNhc2UgJ3N0YXR1cy1ncm91cGVkLWdyaWQnOlxuICAgICAgICB0aGlzLnZtLnNldEN1cnJlbnREYXRlKGRhdGUuYWRkKCdkYXknLCBmb3J3YXJkID8gdGhpcy52bS5kYXlzQ291bnQoKSA6IC10aGlzLnZtLmRheXNDb3VudCgpKS5kYXRlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgIGNhc2UgJ3RpbWVsaW5lLW1vbnRoJzpcbiAgICAgICAgdGhpcy52bS5zZXRDdXJyZW50RGF0ZShkYXRlLmFkZCgnbW9udGgnLCBmb3J3YXJkID8gMSA6IC0xKS5kYXRlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RpbWVsaW5lLXllYXInOlxuICAgICAgICB0aGlzLnZtLnNldEN1cnJlbnREYXRlKGRhdGUuYWRkKCd5ZWFyJywgZm9yd2FyZCA/IDEgOiAtMSkuZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLnBvcG92ZXIoKT8uY2xvc2UoKTtcbiAgICB0aGlzLmNhbGVuZGFyKCk/LnJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSByYW5nZUJhc2VkVmlld3M6IEFYUFRhc2tCb2FyZFZpZXdNb2RlW10gPSBbXG4gICAgJ2dyaWQnLFxuICAgICdrYW5iYW4nLFxuICAgICdhZ2VuZGEnLFxuICAgICdzdGF0dXMtZ3JvdXBlZC1ncmlkJyxcbiAgICAndGltZWxpbmUtbXVsdGktZGF5JyxcbiAgXTtcblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2FsZW5kYXJTbG90Q2xpY2soZXZlbnQ6IEFYQ2FsZW5kYXJTbG90Q2xpY2spIHtcbiAgICBpZiAoZXZlbnQuY29tcG9uZW50LmFjdGl2ZVZpZXcgIT09IGV2ZW50LmNvbXBvbmVudC5kZXB0aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY2xpY2tlZERhdGU6IERhdGUgPSBldmVudC5pdGVtO1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3ID0gdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKTtcblxuICAgIGlmICh0aGlzLnJhbmdlQmFzZWRWaWV3cy5pbmNsdWRlcyhjdXJyZW50VmlldykpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0RGF0ZSA9IHRoaXMudm0ucmFuZ2VTdGFydERhdGUoKTtcblxuICAgICAgaWYgKCFzZWxlY3Rpb25TdGFydERhdGUpIHtcbiAgICAgICAgdGhpcy52bS5zZXRSYW5nZVN0YXJ0RGF0ZShjbGlja2VkRGF0ZSk7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIoKT8ucmVuZGVyKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0ZTEgPSBzZWxlY3Rpb25TdGFydERhdGUuZ2V0VGltZSgpO1xuICAgICAgY29uc3QgZGF0ZTIgPSBjbGlja2VkRGF0ZS5nZXRUaW1lKCk7XG4gICAgICBjb25zdCBuZXdTdGFydERhdGUgPSBuZXcgRGF0ZShNYXRoLm1pbihkYXRlMSwgZGF0ZTIpKTtcbiAgICAgIGNvbnN0IG5ld0VuZERhdGUgPSBuZXcgRGF0ZShNYXRoLm1heChkYXRlMSwgZGF0ZTIpKTtcblxuICAgICAgY29uc3QgZGlmZmVyZW5jZUluRGF5cyA9IHRoaXMuY2FsY3VsYXRlRGlmZmVyZW5jZUluRGF5cyhuZXdTdGFydERhdGUsIG5ld0VuZERhdGUpO1xuXG4gICAgICB0aGlzLnZtLnNldEN1cnJlbnREYXRlKG5ld1N0YXJ0RGF0ZSk7XG4gICAgICB0aGlzLnZtLnNldERheXNDb3VudChkaWZmZXJlbmNlSW5EYXlzKTtcbiAgICAgIHRoaXMudm0uc2V0UmFuZ2VTdGFydERhdGUobnVsbCk7XG5cbiAgICAgIHRoaXMuY2FsZW5kYXIoKT8ucmVuZGVyKCk7XG4gICAgICB0aGlzLnBvcG92ZXIoKT8uY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZGF0ZVRvU2V0ID0gbmV3IERhdGUoY2xpY2tlZERhdGUpO1xuXG4gICAgaWYgKGN1cnJlbnRWaWV3ID09PSAnd2VlaycpIHtcbiAgICAgIGNvbnN0IGRheSA9IGRhdGVUb1NldC5nZXREYXkoKTtcbiAgICAgIGNvbnN0IHdlZWtTdGFydCA9IHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIud2Vlay5zdGFydHNPbjtcbiAgICAgIGxldCBkYXlzVG9TdWJ0cmFjdCA9IGRheSAtIHdlZWtTdGFydDtcbiAgICAgIGlmIChkYXlzVG9TdWJ0cmFjdCA8IDApIHtcbiAgICAgICAgZGF5c1RvU3VidHJhY3QgKz0gNztcbiAgICAgIH1cbiAgICAgIGRhdGVUb1NldC5zZXREYXRlKGRhdGVUb1NldC5nZXREYXRlKCkgLSBkYXlzVG9TdWJ0cmFjdCk7XG4gICAgfVxuXG4gICAgdGhpcy52bS5zZXRDdXJyZW50RGF0ZShkYXRlVG9TZXQpO1xuICAgIHRoaXMucG9wb3ZlcigpPy5jbG9zZSgpO1xuICAgIHRoaXMuY2FsZW5kYXIoKT8ucmVuZGVyKCk7XG4gIH1cblxuICBnZXRDZWxsQ2xhc3MgPSAoZGF0ZTogQVhEYXRlVGltZSk6IHN0cmluZyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3ID0gdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKTtcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydERhdGUgPSB0aGlzLnZtLnJhbmdlU3RhcnREYXRlKCk7XG5cbiAgICBpZiAodGhpcy5yYW5nZUJhc2VkVmlld3MuaW5jbHVkZXMoY3VycmVudFZpZXcpKSB7XG4gICAgICBpZiAoc2VsZWN0aW9uU3RhcnREYXRlKSB7XG4gICAgICAgIGNvbnN0IGF4U2VsZWN0aW9uU3RhcnREYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHNlbGVjdGlvblN0YXJ0RGF0ZSk7XG4gICAgICAgIGlmIChkYXRlLmVxdWFsKGF4U2VsZWN0aW9uU3RhcnREYXRlLCAnZGF5JykpIHtcbiAgICAgICAgICByZXR1cm4gJ2F4LXJhbmdlLXN0YXJ0IGF4LXJhbmdlLWVuZCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZyb21SYW5nZSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZSh0aGlzLnZtLmN1cnJlbnREYXRlKCkpO1xuICAgICAgY29uc3QgZW5kUmFuZ2UgPSBmcm9tUmFuZ2UuYWRkKCdkYXknLCB0aGlzLnZtLmRheXNDb3VudCgpIC0gMSk7XG5cbiAgICAgIGNvbnN0IGlzU3RhcnQgPSBkYXRlLmVxdWFsKGZyb21SYW5nZSwgJ2RheScpO1xuICAgICAgY29uc3QgaXNFbmQgPSBkYXRlLmVxdWFsKGVuZFJhbmdlLCAnZGF5Jyk7XG5cbiAgICAgIGlmIChpc1N0YXJ0ICYmIGlzRW5kKSByZXR1cm4gJ2F4LXJhbmdlLXN0YXJ0IGF4LXJhbmdlLWVuZCc7XG4gICAgICBpZiAoaXNTdGFydCkgcmV0dXJuICdheC1yYW5nZS1zdGFydCc7XG4gICAgICBpZiAoaXNFbmQpIHJldHVybiAnYXgtcmFuZ2UtZW5kJztcbiAgICAgIGlmIChkYXRlLmNvbXBhcmUoZnJvbVJhbmdlLCAnZGF5JykgPiAwICYmIGRhdGUuY29tcGFyZShlbmRSYW5nZSwgJ2RheScpIDwgMCkge1xuICAgICAgICByZXR1cm4gJ2F4LXJhbmdlLWJldHdlZW4nO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFZpZXcgPT09ICd3ZWVrJykge1xuICAgICAgY29uc3QgZnJvbSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZSh0aGlzLnZtLmN1cnJlbnREYXRlKCkpO1xuICAgICAgY29uc3QgZW5kID0gZnJvbS5hZGQoJ2RheScsIDYpO1xuXG4gICAgICBpZiAoZGF0ZS5lcXVhbChmcm9tLCAnZGF5JykpIHJldHVybiAnYXgtcmFuZ2Utc3RhcnQnO1xuICAgICAgaWYgKGRhdGUuZXF1YWwoZW5kLCAnZGF5JykpIHJldHVybiAnYXgtcmFuZ2UtZW5kJztcbiAgICAgIGlmIChkYXRlLmNvbXBhcmUoZnJvbSwgJ2RheScpID4gMCAmJiBkYXRlLmNvbXBhcmUoZW5kLCAnZGF5JykgPCAwKSB7XG4gICAgICAgIHJldHVybiAnYXgtcmFuZ2UtYmV0d2Vlbic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gd2hvbGUgZGF5cyBiZXR3ZWVuIHR3byBkYXRlcy5cbiAgICogVGhlIHJlc3VsdCBpcyBpbmNsdXNpdmUgKGUuZy4sIE1heSA1IHRvIE1heSA2IGlzIGEgMi1kYXkgcmFuZ2UpLlxuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxhdGVEaWZmZXJlbmNlSW5EYXlzKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpOiBudW1iZXIge1xuICAgIGlmICghc3RhcnQgfHwgIWVuZCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0LmdldEZ1bGxZZWFyKCksIHN0YXJ0LmdldE1vbnRoKCksIHN0YXJ0LmdldERhdGUoKSk7XG4gICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKGVuZC5nZXRGdWxsWWVhcigpLCBlbmQuZ2V0TW9udGgoKSwgZW5kLmdldERhdGUoKSk7XG5cbiAgICBjb25zdCB0aW1lRGlmZmVyZW5jZSA9IGVuZERhdGUuZ2V0VGltZSgpIC0gc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgICBjb25zdCBkYXlzRGlmZmVyZW5jZSA9IE1hdGgucm91bmQodGltZURpZmZlcmVuY2UgLyAoMTAwMCAqIDM2MDAgKiAyNCkpO1xuXG4gICAgcmV0dXJuIGRheXNEaWZmZXJlbmNlICsgMTtcbiAgfVxuXG4gIGhhbmRsZVRvZGF5Q2xpY2soKSB7XG4gICAgdGhpcy52bS5zZXRSYW5nZVN0YXJ0RGF0ZShudWxsKTtcbiAgICBsZXQgY3VycmVudERhdGU6IERhdGU7XG4gICAgaWYgKHRoaXMudm0uY3VycmVudFZpZXdNb2RlKCkgPT09ICd3ZWVrJykge1xuICAgICAgY3VycmVudERhdGUgPSB0aGlzLmNhbGVuZGFyU2VydmljZVxuICAgICAgICAuY3JlYXRlKG5ldyBEYXRlKCksIHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtKVxuICAgICAgICAuc3RhcnRPZignd2VlaycpLmRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgdGhpcy52bS5zZXRDdXJyZW50RGF0ZShjdXJyZW50RGF0ZSk7XG4gICAgdGhpcy5wb3BvdmVyKCk/LmNsb3NlKCk7XG4gICAgdGhpcy5jYWxlbmRhcigpPy5yZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZEZyb21Sb3V0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzbmFwc2hvdCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcDtcbiAgICBjb25zdCB2aWV3ID0gKHNuYXBzaG90LmdldCgndmlldycpIGFzIEFYUFRhc2tCb2FyZFZpZXdNb2RlKSA/PyBudWxsO1xuICAgIGNvbnN0IGFsbFZhbGlkVmlld3MgPSB0aGlzLm1lbnVJdGVtcygpLmZsYXRNYXAoKGMpID0+IChjLmNoaWxkcmVuID8gYy5jaGlsZHJlbi5tYXAoKGNoaWxkKSA9PiBjaGlsZC5rZXkpIDogYy5rZXkpKTtcblxuICAgIGlmICh2aWV3ICYmIGFsbFZhbGlkVmlld3MuaW5jbHVkZXModmlldykpIHtcbiAgICAgIHRoaXMudm0uc2V0Vmlld01vZGUodmlldyk7XG4gICAgfSBlbHNlIGlmICghdGhpcy52bS5jdXJyZW50Vmlld01vZGUoKSkge1xuICAgICAgdGhpcy52bS5zZXRWaWV3TW9kZSgnZGF5Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZSA9IHNuYXBzaG90LmdldEFsbCgndHlwZScpIGFzIHN0cmluZ1tdO1xuICAgIGNvbnN0IGFzc2lnbmVlID0gc25hcHNob3QuZ2V0QWxsKCdhc3NpZ25lZScpIGFzIHN0cmluZ1tdO1xuICAgIGNvbnN0IHJlcG9ydGVyID0gc25hcHNob3QuZ2V0QWxsKCdyZXBvcnRlcicpIGFzIHN0cmluZ1tdO1xuICAgIGNvbnN0IHByaW9yaXR5ID0gc25hcHNob3QuZ2V0QWxsKCdwcmlvcml0eScpIGFzIEFYUFByaW9yaXR5RmlsdGVyS2V5W107XG4gICAgaWYgKHR5cGUubGVuZ3RoIHx8IGFzc2lnbmVlLmxlbmd0aCB8fCBwcmlvcml0eS5sZW5ndGggfHwgcmVwb3J0ZXIubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlzUXVlcnlQYXJhbS5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLnZtLnNldFNlbGVjdGVkVGFza1R5cGVOYW1lcyh0eXBlLCB0cnVlKTtcbiAgICAgIHRoaXMudm0uc2V0U2VsZWN0ZWRBc3NpZ25lZUlkcyhhc3NpZ25lZSwgdHJ1ZSk7XG4gICAgICB0aGlzLnZtLnNldFNlbGVjdGVkUmVwb3J0ZXJJZHMocmVwb3J0ZXIsIHRydWUpO1xuICAgICAgdGhpcy52bS5zZXRTZWxlY3RlZFByaW9yaXRpZXMocHJpb3JpdHksIHRydWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGVSYW5nZSA9IHNuYXBzaG90LmdldCgnZGF0ZVJhbmdlJykgYXMgc3RyaW5nO1xuICAgIGlmIChkYXRlUmFuZ2UpIHtcbiAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy50YXNrQm9hcmRTZXJ2aWNlLnJhbmdlQ2FsY3VsYXRvcihkYXRlUmFuZ2UpO1xuICAgICAgaWYgKHJhbmdlKSB7XG4gICAgICAgIHRoaXMudm0uc2V0Q3VycmVudERhdGUocmFuZ2UuZnJvbSk7XG4gICAgICAgIHRoaXMudm0uc2V0RGF5c0NvdW50KHRoaXMuY2FsY3VsYXRlRGlmZmVyZW5jZUluRGF5cyhyYW5nZS5mcm9tLCByYW5nZS5lbmQpKTtcbiAgICAgICAgc3dpdGNoIChkYXRlUmFuZ2UpIHtcbiAgICAgICAgICBjYXNlICd0b2RheSc6XG4gICAgICAgICAgICB0aGlzLnZtLnNldFZpZXdNb2RlKCdkYXknKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3RoaXMtd2Vlayc6XG4gICAgICAgICAgICB0aGlzLnZtLnNldFZpZXdNb2RlKCd3ZWVrJyk7XG4gICAgICAgICAgICB0aGlzLnZtLnNldFJhbmdlU3RhcnREYXRlKHJhbmdlLmZyb20pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGhpcy1tb250aCc6XG4gICAgICAgICAgICB0aGlzLnZtLnNldFZpZXdNb2RlKCdtb250aCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFzayBpcyBzdGlsbCBwcmVzZW50IGluIHRoZSBsaXN0IG9mIHZpc2libGUgdGFza3MuXG4gICAqIElmIG5vdCwgaXQgY2xlYXJzIHRoZSBzZWxlY3Rpb24gdG8gcHJldmVudCBzaG93aW5nIGRldGFpbHMgZm9yIGEgaGlkZGVuIHRhc2suXG4gICAqIEBwYXJhbSB2aXNpYmxlVGFza3MgVGhlIG5ldyBhcnJheSBvZiB0YXNrcyB0aGF0IHdpbGwgYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNlbGVjdGVkVGFzayh2aXNpYmxlVGFza3M6IEFYUFRhc2tbXSk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZFRhc2sgPSB0aGlzLnZtLnNlbGVjdGVkVGFzaygpO1xuICAgIC8vIFByb2NlZWQgb25seSBpZiBhIHRhc2sgaXMgYWN0dWFsbHkgc2VsZWN0ZWRcbiAgICBpZiAoY3VycmVudFNlbGVjdGVkVGFzaykge1xuICAgICAgLy8gQ2hlY2sgaWYgYW55IHRhc2sgaW4gdGhlIG5ldyBsaXN0IGhhcyB0aGUgc2FtZSBJRCBhcyB0aGUgc2VsZWN0ZWQgb25lXG4gICAgICBjb25zdCBpc1NlbGVjdGVkVGFza1Zpc2libGUgPSB2aXNpYmxlVGFza3Muc29tZSgodGFzaykgPT4gdGFzay5pZCA9PT0gY3VycmVudFNlbGVjdGVkVGFzay5pZCk7XG5cbiAgICAgIC8vIElmIHRoZSBzZWxlY3RlZCB0YXNrIGlzIE5PVCBpbiB0aGUgbmV3IGxpc3QsIGNsZWFyIHRoZSBzZWxlY3Rpb24uXG4gICAgICBpZiAoIWlzU2VsZWN0ZWRUYXNrVmlzaWJsZSkge1xuICAgICAgICB0aGlzLnZtLnNlbGVjdFRhc2sobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldFJlc291cmNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy52bS5zZWxlY3RlZFRhc2tUeXBlTmFtZXMoKS5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VzLnNldChbXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlc291cmNlcyA9IGF3YWl0IHRoaXMudGFza0JvYXJkU2VydmljZS5nZXRSZXNvdXJjZXModGhpcy52bS5zZWxlY3RlZFRhc2tUeXBlTmFtZXMoKVswXSA/PyAnJyk7XG4gICAgdGhpcy5yZXNvdXJjZXMuc2V0KHJlc291cmNlcyk7XG4gIH1cbn1cbiIsIjxheHAtcGFnZS1sYXlvdXQgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gIDxheHAtcGFnZS10b29sYmFyPlxuICAgIDxheHAtbGF5b3V0LXByZWZpeCBjbGFzcz1cInNtOmF4LWZsZXgtcm93IGF4LWZsZXgtY29sIGF4LWl0ZW1zLXN0YXJ0XCI+XG4gICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cIih0KCd0YXNrLWJvYXJkLnZpZXcuJyArIHNlbGVjdGVkVmlld01vZGUoKS50ZXh0LCB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThufSkgfCBhc3luYykhXCI+XG4gICAgICAgIDxheC1wcmVmaXg+PGF4LWljb24gW2ljb25dPVwic2VsZWN0ZWRWaWV3TW9kZSgpLmljb25cIj48L2F4LWljb24+PC9heC1wcmVmaXg+XG4gICAgICAgIDxheC1kcm9wZG93bi1wYW5lbCAjZHJvcGRvd25QYW5lbD5cbiAgICAgICAgICA8YXgtbWVudSBbb3JpZW50YXRpb25dPVwiJ3ZlcnRpY2FsJ1wiIGNsYXNzPVwiYXgtbWVudS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBmb3IgKGNhdGVnb3J5IG9mIG1lbnVJdGVtcygpOyB0cmFjayBjYXRlZ29yeS5rZXkpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIEBpZiAoY2F0ZWdvcnkuY2hpbGRyZW4gJiYgY2F0ZWdvcnkuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8YXgtbWVudS1pdGVtPlxuICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJjYXRlZ29yeS5pY29uXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDxheC10ZXh0Pnt7ICh0KCd0YXNrLWJvYXJkLicgKyBjYXRlZ29yeS50ZXh0LCB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThufSkgfCBhc3luYykhIH19PC9heC10ZXh0PlxuICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGNhdGVnb3J5LmNoaWxkcmVuOyB0cmFjayBjaGlsZC5rZXkpIHtcbiAgICAgICAgICAgICAgICA8YXgtbWVudS1pdGVtIChvbkNsaWNrKT1cImhhbmRsZVZpZXdDaGFuZ2UoY2hpbGQua2V5LGRyb3Bkb3duUGFuZWwpXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJjaGlsZC5pY29uXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8YXgtdGV4dFxuICAgICAgICAgICAgICAgICAgICA+e3sgKHQoJ3Rhc2stYm9hcmQudmlldy4nICsgY2hpbGQudGV4dCwgeyBzY29wZTogcm9vdENvbmZpZy5jb25maWcuaTE4bn0pIHwgYXN5bmMpISB9fTwvYXgtdGV4dFxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvYXgtbWVudS1pdGVtPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9heC1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8YXgtbWVudS1pdGVtIChvbkNsaWNrKT1cImhhbmRsZVZpZXdDaGFuZ2UoY2F0ZWdvcnkua2V5LGRyb3Bkb3duUGFuZWwpXCI+XG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cImNhdGVnb3J5Lmljb25cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGF4LXRleHQ+e3sgKHQoJ3Rhc2stYm9hcmQuJyArIGNhdGVnb3J5LnRleHQsIHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG59KSB8IGFzeW5jKSEgfX08L2F4LXRleHQ+XG4gICAgICAgICAgICAgIDwvYXgtbWVudS1pdGVtPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LW1lbnU+XG4gICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWNhcmV0LWRvd25cIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1zY2hlZHVsZXItaGVhZGVyIGF4LXctbWF4IGF4LXNtIHNtOmF4LW1kXCI+XG4gICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgKG9uQ2xpY2spPVwiY2hhbmdlRGF0ZShmYWxzZSlcIj5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtdGV4dC14bCBheC1pY29uLWNoZXZyb24tbGVmdCBhcnJvdy1pY29uXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiBbdGV4dF09XCJ0aW1lVGV4dCgpXCIgI2RhdGU+PC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgKG9uQ2xpY2spPVwiY2hhbmdlRGF0ZSh0cnVlKVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC10ZXh0LXhsIGF4LWljb24tY2hldnJvbi1yaWdodCBhcnJvdy1pY29uXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPGF4LXBvcG92ZXIgW3RhcmdldF09XCJkYXRlXCIgW3BsYWNlbWVudF09XCInYm90dG9tJ1wiICNwb3BvdmVyIFthZGFwdGl2aXR5RW5hYmxlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW92ZXJsYXktcGFuZVwiPlxuICAgICAgICAgICAgPGF4LWNhbGVuZGFyXG4gICAgICAgICAgICAgICNjYWxlbmRhclxuICAgICAgICAgICAgICBbdHlwZV09XCJjYWxlbmRhclR5cGUoKVwiXG4gICAgICAgICAgICAgIFtkZXB0aF09XCJjYWxlbmRhckRlcHRoKClcIlxuICAgICAgICAgICAgICBbY2VsbENsYXNzXT1cImdldENlbGxDbGFzc1wiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZtLmN1cnJlbnREYXRlKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LXNpbmdsZS1yYW5nZS1jYWxlbmRhclwiXG4gICAgICAgICAgICAgIChvblNsb3RDbGljayk9XCJoYW5kbGVDYWxlbmRhclNsb3RDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF4LWZvb3Rlcj5cbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBsb29rPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwidG9kYXlCdXR0b25UZXh0KClcIlxuICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlVG9kYXlDbGljaygpXCJcbiAgICAgICAgICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICAgICAgICAgIDwvYXgtZm9vdGVyPlxuICAgICAgICAgICAgPC9heC1jYWxlbmRhcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9heC1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9heHAtbGF5b3V0LXByZWZpeD5cblxuICAgIDxheHAtbGF5b3V0LXN1ZmZpeD5cbiAgICAgIDxheC1idXR0b24gW3RleHRdPVwidCgndGFzay1ib2FyZC5maWx0ZXIudGl0bGUnLCB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0pIHwgYXN5bmNcIj5cbiAgICAgICAgPGF4LXByZWZpeD48YXgtaWNvbiBpY29uPVwiZmEte3t2bS5hY3RpdmVGaWx0ZXJDb3VudCgpPydzb2xpZCc6J2xpZ2h0J319IGZhLWZpbHRlclwiPjwvYXgtaWNvbj48L2F4LXByZWZpeD5cbiAgICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsICNmaWx0ZXJEcm9wZG93blBhbmVsIChvbk9wZW5lZCk9XCJmaWx0ZXJzQ29tcG9uZW50LnJlc2V0Q29udGV4dFRvVmlld01vZGVsKClcIj5cbiAgICAgICAgICA8YXhtLXRhc2stYm9hcmQtZmlsdGVyc1xuICAgICAgICAgICAgI2ZpbHRlcnNDb21wb25lbnRcbiAgICAgICAgICAgIFtpc1F1ZXJ5UGFyYW1dPVwiaXNRdWVyeVBhcmFtKClcIlxuICAgICAgICAgICAgKGFwcGx5Q2xpY2tlZCk9XCJmaWx0ZXJEcm9wZG93blBhbmVsLmNsb3NlKClcIlxuICAgICAgICAgID48L2F4bS10YXNrLWJvYXJkLWZpbHRlcnM+XG4gICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgQGlmKGRldmljZVNlcnZpY2UuaXNMYXJnZSgpKSB7XG4gICAgICA8YXgtYnV0dG9uIChvbkNsaWNrKT1cInZtLnRvZ2dsZURldGFpbFBhbmVsKClcIj5cbiAgICAgICAgPGF4LWljb24gaWNvbj1cInt7IHZtLmlzRGV0YWlsUGFuZWxPcGVuKCkgPyAnZmEtc29saWQgZmEtc3F1YXJlLWluZm8nIDogJ2ZhLWxpZ2h0IGZhLXNxdWFyZS1pbmZvJyB9fVwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgfVxuICAgIDwvYXhwLWxheW91dC1zdWZmaXg+XG4gIDwvYXhwLXBhZ2UtdG9vbGJhcj5cbiAgPGF4cC1wYWdlLWNvbnRlbnQgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtcm93IGF4LWdhcC0yXCI+XG4gICAgQGlmIChpc1JlYWR5KCkpIHsgQHN3aXRjaCh2bS5jdXJyZW50Vmlld01vZGUoKSkgeyBAY2FzZSgna2FuYmFuJykge1xuICAgIDxheG0tdGFzay1ib2FyZC1rYW5iYW4tdmlld1xuICAgICAgY2xhc3M9XCJheHAta2FuYmFuLWNvbnRhaW5lciBheC1oLWZ1bGwgYXgtdy1mdWxsIGF4LW1pbi13LTBcIlxuICAgICAgW3Rhc2tzXT1cInJlc29sdmVkVGFza3MoKVwiXG4gICAgICAob25UYXNrQ2xpY2spPVwidm0uc2VsZWN0VGFzaygkZXZlbnQpXCJcbiAgICAgIChvbkFjdGlvbkNsaWNrKT1cImhhbmRsZUNvbnRleHRNZW51KCRldmVudClcIlxuICAgID48L2F4bS10YXNrLWJvYXJkLWthbmJhbi12aWV3PlxuICAgIH0gQGNhc2UoJ2dyaWQnKSB7XG4gICAgPGF4bS10YXNrLWJvYXJkLWdyaWQtdmlld1xuICAgICAgY2xhc3M9XCJheC1oLWZ1bGwgYXgtdy1mdWxsIGF4LW1pbi13LTBcIlxuICAgICAgW2RhdGFTb3VyY2VdPVwiZ3JpZERhdGFTb3VyY2VcIlxuICAgICAgKG9uVGFza0NsaWNrKT1cInZtLnNlbGVjdFRhc2soJGV2ZW50KVwiXG4gICAgICAob25BY3Rpb25DbGljayk9XCJoYW5kbGVDb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICA+PC9heG0tdGFzay1ib2FyZC1ncmlkLXZpZXc+XG4gICAgfSBAY2FzZSgnc3RhdHVzLWdyb3VwZWQtZ3JpZCcpIHtcbiAgICA8YXhtLXRhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3XG4gICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtdy1mdWxsIGF4LW1pbi13LTBcIlxuICAgICAgW2RhdGFTb3VyY2VdPVwiZ3JpZERhdGFTb3VyY2VcIlxuICAgICAgKG9uQWN0aW9uQ2xpY2spPVwiaGFuZGxlQ29udGV4dE1lbnUoJGV2ZW50KVwiXG4gICAgPjwvYXhtLXRhc2stYm9hcmQtc3RhdHVzLWdyb3VwZWQtZ3JpZC12aWV3PlxuICAgIH0gQGRlZmF1bHQge1xuICAgIDxheG0tdGFzay1ib2FyZC1jYWxlbmRhci12aWV3XG4gICAgICBjbGFzcz1cImF4cC1zY2hlZHVsZXItY29udGFpbmVyIGF4LWgtZnVsbCBheC13LWZ1bGwgYXgtbWluLXctMFwiXG4gICAgICBbcmVzb3VyY2VzXT1cInJlc291cmNlcygpXCJcbiAgICAgIFtzdGFydGluZ0RhdGVdPVwidm0uY3VycmVudERhdGUoKVwiXG4gICAgICBbZGF0YVNvdXJjZV09XCJzY2hlZHVsZXJEYXRhU291cmNlXCJcbiAgICAgIChvblRhc2tDbGljayk9XCJ2bS5zZWxlY3RUYXNrKCRldmVudClcIlxuICAgICAgW3NlbGVjdGVkVmlld109XCJ2bS5jdXJyZW50Vmlld01vZGUoKVwiXG4gICAgICAob25BY3Rpb25DbGljayk9XCJoYW5kbGVDb250ZXh0TWVudSgkZXZlbnQpXCJcbiAgICAgIChvblRhc2tSaWdodENsaWNrKT1cImhhbmRsZUNvbnRleHRNZW51KCRldmVudClcIlxuICAgICAgKGNvbXBvbmVudCk9XCJzY2hlZHVsZXJDb21wb25lbnRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgKG9uTW9udGhTbG90RGJsQ2xpY2tlZCk9XCJoYW5kbGVNb250aFNsb3REYmxDbGlja2VkKCRldmVudClcIlxuICAgID48L2F4bS10YXNrLWJvYXJkLWNhbGVuZGFyLXZpZXc+XG4gICAgfSB9XG4gICAgPGF4LWNvbnRleHQtbWVudVxuICAgICAgI3Jvb3RDb250ZXh0TWVudVxuICAgICAgW2Nsb3NlT25dPVwiJ2xlYXZlJ1wiXG4gICAgICBbb3JpZW50YXRpb25dPVwiJ3ZlcnRpY2FsJ1wiXG4gICAgICAob25PcGVuaW5nKT1cImhhbmRsZUNvbnRleHRNZW51T25PcGVuaW5nKCRldmVudClcIlxuICAgICAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZUNvbnRleHRNZW51SXRlbUNsaWNrKCRldmVudClcIlxuICAgID5cbiAgICA8L2F4LWNvbnRleHQtbWVudT5cbiAgICBAaWYgKHZtLmlzRGV0YWlsUGFuZWxPcGVuKCkgJiYgZGV2aWNlU2VydmljZS5pc0xhcmdlKCkpIHtcbiAgICA8YXhtLXRhc2stYm9hcmQtZGV0YWlsLXBhbmVsPjwvYXhtLXRhc2stYm9hcmQtZGV0YWlsLXBhbmVsPlxuICAgIH0gfSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LXctZnVsbCBheC1oLWZ1bGxcIj5cbiAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvYXhwLXBhZ2UtY29udGVudD5cbjwvYXhwLXBhZ2UtbGF5b3V0PlxuIl19"],"names":["i2","i1","i4","i8"],"mappings":"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"}
|