{"version":3,"file":"app-79bb5069.e99792903309c3a6.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/administration/whitelists/list/whitelists.scss","webpack://client-app/./src/app/administration/whitelists/manage/manage-whitelist.scss","webpack://client-app/./src/app/administration/whitelists/list/whitelists.html","webpack://client-app/./src/app/administration/whitelists/manage/manage-whitelist.html","webpack://client-app/./src/app/administration/whitelists/list/whitelists.ts","webpack://client-app/./src/app/administration/whitelists/manage/manage-whitelist.ts","webpack://client-app/./src/app/aox/RouteTypings_Ajour.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".whitelists .headers{grid-template-columns:6ch minmax(320px, 400px) repeat(2, minmax(75px, 280px)) minmax(200px, 400px) minmax(320px, 1fr)}.whitelists .main .element{grid-template-columns:6ch minmax(320px, 400px) repeat(2, minmax(75px, 280px)) minmax(200px, 400px) minmax(320px, 1fr)}.whitelists .main .element .project{margin-right:calc(15px / 2);padding:calc(15px / 2) calc(15px / 1.5);user-select:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/administration/whitelists/list/whitelists.scss\"],\"names\":[],\"mappings\":\"AAKC,qBACC,qHAJsB,CAQtB,2BACC,qHATqB,CAWrB,oCACC,2BAAA,CACA,uCAAA,CACA,gBAAA\",\"sourcesContent\":[\"@import \\\"src/resources/customized-styles/variables\\\";\\r\\n\\r\\n$grid-template-columns: 6ch minmax(320px, 400px) repeat(2, minmax(min(75px), 280px)) minmax(200px, 400px) minmax(320px, 1fr);\\r\\n\\r\\n.whitelists {\\r\\n\\t.headers {\\r\\n\\t\\tgrid-template-columns: $grid-template-columns;\\r\\n\\t}\\r\\n\\r\\n\\t.main {\\r\\n\\t\\t.element {\\r\\n\\t\\t\\tgrid-template-columns: $grid-template-columns;\\r\\n\\r\\n\\t\\t\\t.project {\\r\\n\\t\\t\\t\\tmargin-right: calc(#{$gutter} / 2);\\r\\n\\t\\t\\t\\tpadding: calc(#{$gutter} / 2) calc(#{$gutter} / 1.5);\\r\\n\\t\\t\\t\\tuser-select: none;\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t}\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".revit-types-lists .headers{grid-template-columns:calc(16px + 15px * 2) repeat(4, minmax(200px, 1fr))}.revit-types-lists .main .element{grid-template-columns:calc(16px + 15px * 2) repeat(4, minmax(200px, 1fr))}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/administration/whitelists/manage/manage-whitelist.scss\"],\"names\":[],\"mappings\":\"AAKC,4BACC,yEAJsB,CAQtB,kCACC,yEATqB\",\"sourcesContent\":[\"@import \\\"src/resources/customized-styles/variables\\\";\\r\\n\\r\\n$grid-template-columns: calc(16px + #{$gutter} * 2) repeat(4, minmax(200px, 1fr));\\r\\n\\r\\n.revit-types-lists {\\r\\n\\t.headers {\\r\\n\\t\\tgrid-template-columns: $grid-template-columns;\\r\\n\\t}\\r\\n\\r\\n\\t.main {\\r\\n\\t\\t.element {\\r\\n\\t\\t\\tgrid-template-columns: $grid-template-columns;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = \"\\r\\n\";","module.exports = \"\\r\\n\";","import { ListService } from 'app/services/list-service';\r\nimport { WhitelistDto } from 'app/models/whitelist-dto';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport { Subscription, EventAggregator } from \"aurelia-event-aggregator\";\r\nimport { autoinject } from \"aurelia-framework\";\r\nimport { ApiClient } from \"../../../services/api-client\";\r\nimport { ModalService } from 'app/services/modal-service';\r\nimport { ContextMenuService } from 'app/services/context-menu-service';\r\n\r\n@autoinject\r\nexport class Whitelists {\r\n\tpublic whitelists: WhitelistDto[] = [];\r\n\tpublic selectedWhitelists: WhitelistDto[] = [];\r\n\tprivate allSelected: boolean = false;\r\n\tpublic column: string = \"name\";\r\n\tpublic displayState: { icon: string, direction: string } | undefined;\r\n\tpublic searchTerm: string = \"\";\r\n\tpublic viewContext: string;\r\n\tprivate subscriptions: Subscription[] = [];\r\n\r\n\r\n\tconstructor(private events: EventAggregator, private i18n: I18N, private modal: ModalService, private router: Router, private apiClient: ApiClient, private contextMenuService: ContextMenuService, private listService: ListService) {\r\n\t\tthis.viewContext = \"TopBar\";\r\n\t}\r\n\r\n\tasync activate() {\r\n\t\tawait this.getWhitelists();\r\n\t\tthis.displayState = { icon: \"fa-sort-up\", direction: \"ascending\" };\r\n\r\n\t\tconst searchHandler = (data: any) => this.handleSearchEvent(data);\r\n\t\tthis.subscriptions = [\r\n\t\t\tthis.events.subscribe(this.viewContext + \":SearchTermChanged\", searchHandler),\r\n\t\t\tthis.events.subscribe(\"global:org-changed\", async () => this.reloadPage())\r\n\r\n\t\t];\r\n\t}\r\n\tasync reloadPage(): Promise {\r\n\t\tawait this.getWhitelists();\r\n\t}\r\n\r\n\tdetached() {\r\n\t\tthis.subscriptions.forEach(subscription => (\r\n\t\t\tsubscription.dispose()\r\n\t\t));\r\n\t}\r\n\r\n\tpublic copy(whitelist: WhitelistDto) {\r\n\t\tthis.router.navigate('administration/whitelists/' + whitelist.id + '/copy/');\r\n\t}\r\n\r\n\tpublic edit(whitelist: WhitelistDto, event?: Event): boolean {\r\n\t\tif ((event?.target)?.tagName === 'INPUT') {\r\n\t\t\treturn true; //We actually clicked a checkbox and therefore returns\r\n\t\t}\r\n\t\tthis.router.navigate('administration/whitelists/' + whitelist.id + '/edit/');\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic delete(whitelist: WhitelistDto) {\r\n\t\tthis.modal.OpenConfirm('Delete', `Are you sure you wish to delete \"${whitelist.name}\"?`).whenClosed(x => {\r\n\t\t\tif (!x.wasCancelled) {\r\n\t\t\t\tthis.apiClient.orgByToken\r\n\t\t\t\t\t.postJson('Whitelist/Delete/', whitelist.id)\r\n\t\t\t\t\t.handleError(this.i18n.tr('Delete failed'), this.i18n.tr('Could not delete whitelist. Make sure the whitelist has been removed from all projects before deleting.'))\r\n\t\t\t\t\t.jsonResult()\r\n\t\t\t\t\t.finally(() => {\r\n\t\t\t\t\t\tthis.getWhitelists();\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tpublic openContextMenu(event: Event, whitelist: WhitelistDto) {\r\n\t\tlet actions = [\r\n\t\t\t{ viewKey: \"button\", setup: { textKey: \"Edit\", actionKey: \"editWhitelist\", service: { editWhitelist: () => { this.edit(whitelist) } } } },\r\n\t\t\t{ viewKey: \"button\", setup: { textKey: \"Copy\", actionKey: \"copyWhitelist\", service: { copyWhitelist: () => { this.copy(whitelist) } } } },\r\n\t\t\t{ viewKey: \"button\", setup: { textKey: \"Delete\", actionKey: \"deleteWhitelist\", service: { deleteWhitelist: () => { this.delete(whitelist) } } } },\r\n\t\t];\r\n\t\tthis.contextMenuService.open(event, actions);\r\n\t}\r\n\r\n\tprivate async getWhitelists() {\r\n\t\tthis.whitelists = [];\r\n\t\tthis.whitelists = await this.apiClient.orgByToken.get('Whitelist/GetWhitelists').jsonResult();\r\n\t}\r\n\r\n\tprivate handleSearchEvent(data: string) {\r\n\t\tthis.searchTerm = data;\r\n\t}\r\n\r\n\tpublic async sortBy(columnName: string) {\r\n\t\tawait this.listService.sortBy(columnName).then(result => {\r\n\t\t\tthis.column = result.column;\r\n\t\t\tthis.displayState = result.displayState;\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async toggleWhitelist() {\r\n\t\tawait this.listService.toggleElement(this.whitelists).then(result => {\r\n\t\t\tthis.selectedWhitelists = result.selected;\r\n\t\t\tthis.allSelected = result.allSelected;\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async toggleAll() {\r\n\t\tawait this.listService.toggleAll(this.whitelists).then(result => {\r\n\t\t\tif (result) {\r\n\t\t\t\tthis.selectedWhitelists = result.selected;\r\n\t\t\t\tthis.allSelected = result.allSelected;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { ListService, SelectResult } from 'app/services/list-service';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { AoObjectDetailService } from './../../../services/object-services/ao-object-detail-service';\r\nimport { ObjectDetails } from './../../../models/object-details';\r\nimport { WhitelistDto } from \"../../../models/whitelist-dto\";\r\nimport { ApiClient } from \"../../../services/api-client\";\r\nimport { Router } from \"aurelia-router\";\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { ModalService } from \"app/services/modal-service\";\r\n\r\n@autoinject\r\nexport class ManageWhitelist {\r\n\tprivate mode: string | undefined; //undefined = create\r\n\tpublic isEditing: boolean = false;\r\n\tpublic isSaving: boolean = false;\r\n\tpublic displayState: { icon: string, direction: string } | undefined;\r\n\tpublic column: string = \"categoryName\";\r\n\tpublic whitelist: WhitelistDto | undefined;\r\n\tprivate originalWhitelist: WhitelistDto | undefined;\r\n\tpublic whitelistId: string | undefined;\r\n\tprivate includedRevitTypeIds: string[] = [];\r\n\tpublic revitTypes: ObjectDetails[] = [];\r\n\tpublic searchTerm: string = \"\";\r\n\tpublic viewContext: string;\r\n\tprivate subscriptions: Subscription[] = [];\r\n\tprivate allSelected: boolean = false; // hmm, bruges faktisk aldrig til noget?\r\n\r\n\tpublic selectedRevitTypes: ObjectDetails[] = [];\r\n\t/* JG, NB: selectedRevitTypes ser ud til at have en lidt mærkelig semantik.\r\n\tMan kan først tro, at der mangler initialisering for den,\r\n\tenten til 'nul elementer', eller til 'det hidtidigt udvalgte'.\r\n\t Det viser sig, dens semantik istedet var:\r\n\t\"Kun hvis brugeren har foretaget ændringer, bliver den sat til noget.\"\r\n\tDvs., det at den IKKE er initialiseret,\r\n\ter et signal om at der IKKE skal gemmes ÆNDRINGER.\r\n\t For at det så kan fungere, har jeg tilføjet en if-sætning til create().\r\n\t*/\r\n\r\n\tconstructor(private apiClient: ApiClient, private modal: ModalService, private router: Router, private aoObjectDetailService: AoObjectDetailService, private element: Element, private events: EventAggregator, private listService: ListService) {\r\n\t\tconsole.log('manage-WL.constructor');\r\n\t\tthis.viewContext = \"TopBar\";\r\n\t}\r\n\r\n\tasync activate(input: any) {\r\n\t\tconsole.log('manage-WL.activate');\r\n\t\tthis.whitelistId = input.whitelistId;\r\n\t\tthis.mode = input.mode;\r\n\t\t\r\n\t\tthis.revitTypes = await this.getRevitTypes();\r\n\t\tthis.displayState = { icon: \"fa-sort-up\", direction: \"ascending\" };\r\n\t\t\r\n\t\tif (this.mode === \"edit\") {\r\n\t\t\tthis.isEditing = true;\r\n\t\t}\r\n\r\n\t\tif (this.whitelistId) {\r\n\t\t\tthis.fetchWhitelist(this.whitelistId);\r\n\t\t\tthis.fetchRevitTypeIds(this.whitelistId);\r\n\t\t} else {\r\n\t\t\tthis.resetInputs();\r\n\t\t}\r\n\r\n\t\tconst searchHandler = (data: any) => this.handleSearchEvent(data);\r\n\t\tthis.subscriptions = [\r\n\t\t\tthis.events.subscribe(this.viewContext + \":SearchTermChanged\", searchHandler),\r\n\t\t\tthis.events.subscribe(\"global:org-changed\", async () => this.backToList())\r\n\t\t];\r\n\t}\r\n\tbackToList() {\r\n\t\tthis.router.navigate('administration/whitelists/');\r\n\t}\r\n\r\n\tdeactivate() {\r\n\t\tconsole.log('manage-WL.deactivate');\r\n\t\tthis.subscriptions.forEach(subscription => (\r\n\t\t\tsubscription.dispose()\r\n\t\t));\r\n\t}\r\n\r\n\tprivate handleSearchEvent(data: string) {\r\n\t\tconsole.log('manage-WL.handleSearchEvent');\r\n\t\tthis.searchTerm = data;\r\n }\r\n\r\n\tasync fetchRevitTypeIds(whitelistId: string) {\r\n\t\tconsole.log('manage-WL.fetchRevitTypeIds');\r\n\t\tthis.includedRevitTypeIds = await this.apiClient.orgByToken.get(`Whitelist/GetRevitTypeIdsInWhitelist?id=${whitelistId}`).jsonResult();\r\n\t\tif (this.includedRevitTypeIds !== undefined && this.includedRevitTypeIds.length > 0) {\r\n\t\t\tthis.revitTypes.forEach(t => {\r\n\t\t\t\tif (this.includedRevitTypeIds.includes(t.typeId)) {\r\n\t\t\t\t\tt.selected = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getRevitTypes(): Promise {\r\n\t\tconsole.log('manage-WL.getRevitTypes');\r\n\t\tthis.revitTypes = [];\r\n\t\treturn await this.aoObjectDetailService.queryObjectTypes('GRT', 0, 100000, []);\r\n\t}\r\n\r\n\tprivate async fetchWhitelist(whitelistId: string) {\r\n\t\tconsole.log('manage-WL.fetchWhitelist');\r\n\t\tthis.originalWhitelist = await this.apiClient.orgByToken.get(`Whitelist/GetWhitelistById?id=${whitelistId}`).jsonResult();\r\n\t\tthis.whitelist = Object.assign({}, this.originalWhitelist);\r\n\t\tif (this.mode === \"copy\") {\r\n\t\t\tthis.whitelist.name += \" - copy\";\r\n\t\t}\r\n\t}\r\n\r\n\tprivate resetInputs() {\r\n\t\tconsole.log('manage-WL.resetInputs');\r\n\t\tthis.isEditing = false;\r\n\t\tthis.whitelist = undefined;\r\n\t\tthis.allSelected = false;\r\n\t\tthis.revitTypes.forEach(x => {\r\n\t\t\tx.selected = false;\r\n\t\t});\r\n\t}\r\n\r\n\tpublic reset() {\r\n\t\tconsole.log('manage-WL.reset');\r\n\t\tif (this.isEditing) {\r\n\t\t\tthis.router.navigateToRoute('whitelists');\r\n\t\t} else {\r\n\t\t\tthis.whitelist = this.originalWhitelist;\r\n\t\t\tthis.whitelistId = \"\";\r\n\t\t\tthis.resetInputs();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic submit() {\r\n\t\tconsole.log('manage-WL.submit');\r\n\t\tthis.isSaving = true;\r\n\t\tif (this.isEditing) {\r\n\t\t\tthis.update();\r\n\t\t} else {\r\n\t\t\tthis.create();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate update() {\r\n\t\tconsole.log('manage-WL.update');\r\n\t\tlet promises = [];\r\n\r\n\t\tif (Boolean(this.whitelist) && this.originalWhitelist?.name.trim() !== this.whitelist?.name.trim()) {\r\n\t\t\tpromises.push(this.apiClient.orgByToken\r\n\t\t\t\t.postJson('Whitelist/Rename/' + this.whitelistId, this.whitelist?.name.trim())\r\n\t\t\t\t.response().catch(async reason => console.error(await reason.json())));\r\n\t\t}\r\n\t\t\r\n\t\tlet selectedTypeIds_local: string[] = [];\r\n\r\n\t\tif (this.selectedRevitTypes !== undefined) { // in update.\r\n\t\t\tselectedTypeIds_local = this.selectedRevitTypes.map(t => t.typeId); // in update.\r\n\t\t}\r\n\t\t\r\n\t\tif (selectedTypeIds_local.length !== this.includedRevitTypeIds.length || selectedTypeIds_local.some(t => !this.includedRevitTypeIds.includes(t))) {\r\n\t\t\tpromises.push(this.apiClient.orgByToken\r\n\t\t\t\t.postJson('Whitelist/UpdateRevitTypesInWhitelist/' + this.whitelistId, selectedTypeIds_local)\r\n\t\t\t\t.response().catch(async reason => console.error(await reason.json())));\r\n\t\t}\r\n\t\t\r\n\t\tPromise.all(promises).finally(() => {\r\n\t\t\tthis.isSaving = false;\r\n\t\t\tthis.router.navigate('administration/whitelists');\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async create() {\r\n\t\tconsole.log('manage-WL.create');\r\n\t\tlet trimmedWhitelistName = (this.whitelist && this.whitelist.name) ? this.whitelist.name : '';\r\n\r\n\t\tif (Boolean(trimmedWhitelistName)) {\r\n\t\t\tawait this.apiClient.orgByToken.postJson('Whitelist/Create', trimmedWhitelistName).jsonResult().then(result => {\r\n\t\t\t\tthis.whitelistId = result;\r\n\t\t\t\tif (this.whitelist) {\r\n\t\t\t\t\tthis.whitelist.id = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (this.selectedRevitTypes !== undefined) {\r\n\t\t\t\t// would otherwise complain this.selectedRevitTypes is undefined.\r\n\t\t\t\tlet selectedTypeIds_local = this.selectedRevitTypes.map(t => t.typeId); // in create.\r\n\t\t\t\tlet rsp = await this.apiClient.orgByToken\r\n\t\t\t\t\t.postJson('Whitelist/UpdateRevitTypesInWhitelist/' + this.whitelistId, selectedTypeIds_local)\r\n\t\t\t\t\t.response()\r\n\t\t\t\t\t.catch(async reason => this.modal.OpenMessage(\"Error\", await reason.json(),true))\r\n\t\t\t\t\t.finally(() => {\r\n\t\t\t\t\t\tthis.isSaving = false;\r\n\t\t\t\t\t});\r\n\t\t\t\t// JG: I've introduced an await here,\r\n\t\t\t\t// because we don't want to proceed with navigation,\r\n\t\t\t\t// if we fail to store the whitelist to the db.\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log('nb, zero selected types to store.');\r\n\t\t\t}\r\n\r\n\t\t\tthis.router.navigate('administration/whitelists');\r\n\t\t} else {\r\n\t\t\tthis.modal.OpenMessage(\"Error\", \"The whitelist was not created because the name contained only whitespaces! Please try again\").whenClosed(() => this.isSaving = false);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async sortBy(columnName: string) {\r\n\t\tconsole.log('manage-WL.sortBy');\r\n\t\tawait this.listService.sortBy(columnName).then(result => {\r\n\t\t\tthis.column = result.column;\r\n\t\t\tthis.displayState = result.displayState;\r\n\t\t});\r\n\t}\r\n\r\n\t//Revit types stuff\r\n\tpublic async toggleRevitType() {\r\n\t\tconsole.log('manage-WL.toggleRevitType');\r\n\t\tawait this.listService.toggleElement(this.revitTypes).then( (result:SelectResult) => {\r\n\t\t\tthis.selectedRevitTypes = result.selected; // in toggleRevitType.\r\n\t\t\tthis.allSelected = result.allSelected;\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async toggleAll() {\r\n\t\tconsole.log('manage-WL.toggleAll');\r\n\t\tawait this.listService.toggleAll(this.revitTypes).then( (result:SelectResult | undefined) => {\r\n\t\t\tif (result) {\r\n\t\t\t\tthis.selectedRevitTypes = result.selected; // in toggleAll.\r\n\t\t\t\tthis.allSelected = result.allSelected;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","\r\nimport { OrgRole } from 'app/models/org-role';\r\nimport { ProjectRole, ProjectRoleAccess } from 'app/models/project-role';\r\nimport { ActivationStrategyType, RouteConfig } from 'aurelia-router';\r\n\r\n/* JG: I added these typing-scaffolds,\r\nso AOX.configureRouter can describe what on earth it is configuring.\r\nIE, all those random arrays and dicts are actually\r\ninstances of, and adhering to, concrete types.\r\n\r\nIn particular, I put a type facade in front of interface aurelia-router:RouteConfig,\r\nbecause otherwise it would accept any field you would throw at it.\r\n */\r\n\r\nexport class RouteSettingAjour {\r\n\t/* (These routeSettings are 'how Ajour uses it',\r\n\t Aurelia only prescribes the type 'any' for RouteConfig.settings.)\r\n\t*/\r\n\tisSection: boolean = false;\r\n\tsectionName?: string;\r\n\tsectionNameNoSpace?: string;\r\n\tsectionIconClass?: string;\r\n\tisProjectSelector?: boolean; // This makes navigation.html enable a select-project-menu pop-up.\t\r\n\tsectionUserRolesAllowed?: string[];\r\n\t// prjMemberRoleLevel?: ProjectRoleAccess;\r\n\t// selectedOrgRoleLevel?: OrgRole;\r\n\tchildren?: IRouteConfig_Child[];\r\n\r\n}\r\n\r\nexport interface IRouteConfig_Child {\r\n\thref?: string;\r\n\ttitle?: string;//MENU-LABELS - these are actually menu labels!\r\n\tchildren?: IRouteConfig_Child[];\r\n\tsettings?: RouteSettingAjour;\r\n\r\n\tmenuAccessLevel?: MenuAccessLevel;\r\n}\r\n\r\nexport class RouteConfig_Root implements RouteConfig {\r\n\t/* This is a SUBSET of Aurelia's RouteConfig.\r\n\t If you need more parts, just add/include them. \r\n */\r\n\troute: string | string[] = \"Not set yet\";\r\n\tname?: string;\r\n\tmoduleId?: string;\r\n\tredirect?: string;\r\n\tnav?: boolean | number;\r\n\tactivationStrategy?: ActivationStrategyType;\r\n\thref?: string;\r\n\ttitle?: string;\r\n\tsettings?: RouteSettingAjour; //any;\r\n\r\n\tmenuAccessLevel?: MenuAccessLevel;\r\n}\r\n\r\nexport enum MenuAccessLevel {\r\n\tPrjUser,\r\n\tPrjSettings, // settings-user OR prjAdmin.\r\n\tPrjAdmin, // may-admin-prj - either PrjAdmin OR orgAdmin\r\n\tOrgAdmin,\r\n\tAOCRoles,\r\n\tAOCRolesOrPrjUser,\r\n\tAOCRolesOrOrgUser,\r\n\tAOCRolesOrOrgAdmin,\r\n}"],"names":["___CSS_LOADER_EXPORT___","push","module","id","exports","Whitelists","constructor","events","i18n","modal","router","apiClient","contextMenuService","listService","whitelists","selectedWhitelists","allSelected","column","searchTerm","subscriptions","this","viewContext","async","getWhitelists","displayState","icon","direction","subscribe","data","handleSearchEvent","reloadPage","detached","forEach","subscription","dispose","copy","whitelist","navigate","edit","event","target","tagName","delete","OpenConfirm","name","whenClosed","x","wasCancelled","orgByToken","postJson","handleError","tr","jsonResult","finally","openContextMenu","actions","viewKey","setup","textKey","actionKey","service","editWhitelist","copyWhitelist","deleteWhitelist","open","get","columnName","sortBy","then","result","toggleElement","selected","toggleAll","autoinject","I18N","ManageWhitelist","aoObjectDetailService","element","isEditing","isSaving","includedRevitTypeIds","revitTypes","selectedRevitTypes","console","log","input","whitelistId","mode","getRevitTypes","fetchWhitelist","fetchRevitTypeIds","resetInputs","backToList","deactivate","undefined","length","t","includes","typeId","queryObjectTypes","originalWhitelist","Object","assign","reset","navigateToRoute","submit","update","create","promises","Boolean","trim","response","catch","reason","error","json","selectedTypeIds_local","map","some","Promise","all","trimmedWhitelistName","OpenMessage","Element","MenuAccessLevel"],"sourceRoot":""}