{"version":3,"file":"c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RdLW5nde.mjs","sources":["../../context-dashboard/dashboard-availability.component.ts","../../context-dashboard/dashboard-availability.component.html","../../context-dashboard/dashboard-settings/typed-dashboard-settings.component.ts","../../context-dashboard/dashboard-settings/typed-dashboard-settings.component.html","../../context-dashboard/dashboard-settings/dashboard-general-settings.component.ts","../../context-dashboard/dashboard-settings/dashboard-general-settings.component.html"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IUserGroup, UserGroupService } from '@c8y/client';\nimport {\n  C8yTranslatePipe,\n  FormsModule,\n  GainsightService,\n  Item,\n  Permissions,\n  SelectModule\n} from '@c8y/ngx-components';\nimport {\n  DashboardGlobalRoles,\n  ALL_GLOBAL_ROLES_SELECTED,\n  PRODUCT_EXPERIENCE\n} from './context-dashboard.model';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { NgIf } from '@angular/common';\n\n@Component({\n  selector: 'c8y-dashboard-availability',\n  templateUrl: './dashboard-availability.component.html',\n  standalone: true,\n  imports: [C8yTranslatePipe, ReactiveFormsModule, PopoverModule, FormsModule, NgIf, SelectModule]\n})\nexport class DashboardAvailabilityComponent implements OnInit {\n  /**\n   * Ids of global roles assigned to the dashboard or a string \"all\" indicating the selection of all global roles.\n   * The value undefined is treated as equivalent to 'all'.\n   */\n  @Input()\n  get globalRolesIds(): DashboardGlobalRoles {\n    return this._globalRolesIds;\n  }\n  set globalRolesIds(ids: DashboardGlobalRoles) {\n    if (!ids || ids === ALL_GLOBAL_ROLES_SELECTED) {\n      this._globalRolesIds = ALL_GLOBAL_ROLES_SELECTED;\n      return;\n    }\n    this._globalRolesIds = [...ids];\n  }\n  @Output() globalRolesIdsChange = new EventEmitter<DashboardGlobalRoles>();\n  globalRolesItems: Item[] = [];\n  globalRolesItemsSelected: Item[] = [];\n  selectHidden = false;\n  private globalRoles: IUserGroup[] = [];\n  private PAGE_SIZE = 100;\n  private _globalRolesIds: DashboardGlobalRoles;\n\n  constructor(\n    private userGroupService: UserGroupService,\n    private gainsightService: GainsightService,\n    private permissions: Permissions\n  ) {}\n\n  async ngOnInit() {\n    if (this.permissions.hasRole(Permissions.ROLE_USER_MANAGEMENT_READ)) {\n      this.globalRoles = await this.getGlobalRoles();\n      this.globalRolesItems = this.mapGlobalRolesToItems();\n      this.globalRolesItemsSelected = this.getSelectedGlobalRolesItems();\n    } else {\n      this.selectHidden = true;\n    }\n  }\n\n  onSelected(items: Item[]) {\n    if (!items || !Array.isArray(items)) {\n      return;\n    }\n\n    const allItemsSelected = items.length === this.globalRolesItems.length;\n    this.globalRolesItemsSelected = items;\n\n    if (allItemsSelected) {\n      this.globalRolesIdsChange.emit(ALL_GLOBAL_ROLES_SELECTED);\n      this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {\n        component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_AVAILABILITY,\n        action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.APPLY_GLOBAL_ROLES_CHANGES,\n        globalRoles: ALL_GLOBAL_ROLES_SELECTED\n      });\n    } else {\n      const selectedGlobalRolesIds = items.map(i => i.id);\n      this.globalRolesIdsChange.emit([...selectedGlobalRolesIds]);\n\n      this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {\n        component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_AVAILABILITY,\n        action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.APPLY_GLOBAL_ROLES_CHANGES,\n        globalRoles: selectedGlobalRolesIds?.sort()?.join()\n      });\n    }\n  }\n\n  private async getGlobalRoles() {\n    return (await this.userGroupService.list({ pageSize: this.PAGE_SIZE })).data;\n  }\n\n  private mapGlobalRolesToItems(): Item[] {\n    return this.globalRoles.map(({ name, id }) => ({\n      name,\n      id\n    }));\n  }\n\n  private getSelectedGlobalRolesItems(): Item[] {\n    if (!this.globalRolesIds || this.globalRolesIds === ALL_GLOBAL_ROLES_SELECTED) {\n      return this.globalRolesItems;\n    }\n    return this.globalRolesIds\n      .map(globalRoleId => this.globalRolesItems.find(gR => gR.id === globalRoleId))\n      .filter(Boolean);\n  }\n}\n","<fieldset class=\"c8y-fieldset c8y-fieldset--lg\">\n  <legend>{{ 'Availability`of dashboard based on permissions`' | translate }}</legend>\n  <c8y-form-group>\n    <label for=\"availability\">\n      <span\n        class=\"m-r-4\"\n        id=\"availability\"\n      >\n        {{ 'Global roles' | translate }}\n      </span>\n      <button\n        class=\"btn-help btn-help--sm\"\n        [attr.aria-label]=\"'Help' | translate\"\n        popover=\"{{\n          'Select the global roles for which the dashboard will be available' | translate\n        }}\"\n        placement=\"right\"\n        triggers=\"focus\"\n        container=\"body\"\n        type=\"button\"\n      ></button>\n    </label>\n    <c8y-select-legacy\n      *ngIf=\"!selectHidden\"\n      [items]=\"globalRolesItems\"\n      [selected]=\"globalRolesItemsSelected\"\n      (onChange)=\"onSelected($event)\"\n    ></c8y-select-legacy>\n    <p\n      class=\"form-control-static\"\n      *ngIf=\"selectHidden\"\n    >\n      {{ \"You don't have permission to change global roles.\" | translate }}\n    </p>\n  </c8y-form-group>\n</fieldset>\n","import { Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  InterAppService,\n  SupportedApps,\n  SupportedAppKey,\n  CoreModule,\n  C8yTranslatePipe,\n  ProductExperienceDirective\n} from '@c8y/ngx-components';\nimport { IApplication, InventoryService } from '@c8y/client';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n  AllowTypeDashboard,\n  ContextDashboardManagedObject,\n  PRODUCT_EXPERIENCE\n} from '../context-dashboard.model';\nimport { Observable } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\nimport { TypeDashboardInfoComponent } from '../type-dashboard-info/type-dashboard-info.component';\n\n@Component({\n  selector: 'c8y-typed-dashboard-settings',\n  templateUrl: './typed-dashboard-settings.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TypedDashboardSettingsComponent),\n      multi: true\n    }\n  ],\n  standalone: true,\n  imports: [C8yTranslatePipe, CoreModule, TypeDashboardInfoComponent, ProductExperienceDirective]\n})\nexport class TypedDashboardSettingsComponent implements ControlValueAccessor, OnInit {\n  value: boolean;\n  touched = false;\n  disabled = false;\n\n  @Input() deviceTypeValue: string;\n  @Input() displayDeviceTypeValue: string;\n  @Input() formInvalid: boolean;\n  @Input() mo: ContextDashboardManagedObject;\n  @Input() isDevice: boolean;\n  @Input() allowTypeDashboard: AllowTypeDashboard;\n  @Output() onDuplicateWithoutType = new EventEmitter<void>();\n  typedDashboardStatus: string;\n  infoText: string;\n  deviceTypeInstancesCount: number;\n  showSourceNavigationLink$: Observable<boolean>;\n  userDeviceManagementApp$: Observable<IApplication>;\n  context: any;\n  deviceManagementAppKey: SupportedAppKey = SupportedApps.devicemanagement;\n  deviceManagementLinkTitle = gettext('Device Info page in {{ deviceManagementAppName }}');\n  PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;\n\n  constructor(\n    private inventory: InventoryService,\n    private interAppService: InterAppService,\n    private route: ActivatedRoute\n  ) {}\n\n  async ngOnInit() {\n    this.userDeviceManagementApp$ = this.interAppService.getApp$(this.deviceManagementAppKey);\n    this.context = this.route.parent.snapshot.data.contextData;\n    this.showSourceNavigationLink$ = this.interAppService.shouldShowAppLink$(\n      this.deviceManagementAppKey\n    );\n  }\n\n  async goToDeviceView(): Promise<void> {\n    await this.interAppService.navigateToApp(\n      this.deviceManagementAppKey,\n      `#/device/${this.context.id}/device-info`\n    );\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onChange = _ => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onTouched = () => {};\n\n  writeValue(value: boolean): void {\n    this.value = value;\n    this.updateTexts();\n    if (value) {\n      this.updateDeviceTypeCount();\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(onTouched: any): void {\n    this.onTouched = onTouched;\n  }\n\n  markAsTouched(): void {\n    if (!this.touched) {\n      this.onTouched();\n      this.touched = true;\n    }\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n\n  async toggle(): Promise<void> {\n    this.value = !this.value;\n    this.onChange(this.value);\n    if (this.value && this.deviceTypeInstancesCount == null) {\n      this.setDisabledState(true);\n      await this.updateDeviceTypeCount();\n    }\n    this.updateTexts();\n    this.setDisabledState(false);\n  }\n\n  private updateTexts(): void {\n    this.typedDashboardStatus = this.value\n      ? gettext('Enabled`typed dashboard`')\n      : gettext('Disabled`typed dashboard`');\n\n    if (this.allowTypeDashboard === 'allow_if_type_filled') {\n      this.infoText = gettext(\n        `<p class=\"p-b-8\">Enabling this option uses the layout and configuration of this dashboard to create dashboard instances for all devices based on the device type.</p>\n             <p class=\"p-b-16\">The current device doesn't have a device type assigned to it. Assign a device type to the device via the \"Asset properties\" widget in the <strong>Info</strong> tab of the device.</p>`\n      );\n      return;\n    }\n\n    if (this.value) {\n      if (this.isDevice) {\n        this.infoText = gettext(\n          `<p class=\"p-b-8\">\n            The layout and configuration of this dashboard is used by all devices based on device type <span class=\"tag tag--info text-12\">{{ displayDeviceTypeValue }}</span>.\n          </p>\n          <p class=\"p-b-16\">\n            Disabling this option removes it from all devices based on the same type and makes it available only for the current instance.\n          </p>`\n        );\n      } else {\n        this.infoText = gettext(\n          `<p class=\"p-b-8\">\n              The layout and configuration of this dashboard is used by all assets based on asset model <span class=\"tag tag--info text-12\">{{ displayDeviceTypeValue }}</span>.\n            </p>\n            <p class=\"p-b-16\">\n              Disabling this option removes it from all assets based on the same model and makes it available only for the current instance.\n            </p>`\n        );\n      }\n    } else {\n      if (this.isDevice) {\n        this.infoText = gettext(\n          `<p>Enabling this option uses the layout and configuration of this dashboard to create dashboard instances for all devices based on the type <span class=\"tag tag--info text-12\">{{ displayDeviceTypeValue }}</span>.</p>`\n        );\n      } else {\n        this.infoText = gettext(\n          `<p>Enabling this option uses the layout and configuration of this dashboard to create dashboard instances for all assets based on the model <span class=\"tag tag--info text-12\">{{ displayDeviceTypeValue }}</span>.</p>`\n        );\n      }\n    }\n  }\n\n  private async updateDeviceTypeCount(): Promise<void> {\n    const count = await this.inventory.count({\n      type: this.deviceTypeValue\n    });\n    this.deviceTypeInstancesCount = count.data;\n  }\n}\n","<fieldset class=\"c8y-fieldset c8y-fieldset--lg\">\n  <legend>{{ 'Dashboard template' | translate }}</legend>\n  <div class=\"d-flex p-b-16 gap-16\">\n    <label class=\"c8y-switch flex-no-shrink\">\n      <input\n        type=\"checkbox\"\n        [checked]=\"value\"\n        [disabled]=\"disabled\"\n        (click)=\"toggle()\"\n      />\n      <span></span>\n      <span>{{ typedDashboardStatus | translate }}</span>\n    </label>\n    <div class=\"flex-grow d-flex d-col\">\n      <div\n        class=\"flex-grow\"\n        [innerHtml]=\"infoText | translate: { displayDeviceTypeValue: displayDeviceTypeValue }\"\n      ></div>\n      <button\n        class=\"btn-link p-0 m-r-auto\"\n        type=\"button\"\n        *ngIf=\"allowTypeDashboard === 'allow_if_type_filled' && showSourceNavigationLink$ | async\"\n        (click)=\"goToDeviceView()\"\n      >\n        {{\n          deviceManagementLinkTitle\n            | translate\n              : {\n                  deviceManagementAppName:\n                    userDeviceManagementApp$ | async | humanizeAppName | async\n                }\n        }}\n        <i c8yIcon=\"external-link\"></i>\n      </button>\n    </div>\n  </div>\n\n  <c8y-type-dashboard-info\n    *ngIf=\"allowTypeDashboard === 'allow'\"\n    [context]=\"mo\"\n    [deviceTypeValue]=\"deviceTypeValue\"\n    [displayDeviceTypeValue]=\"displayDeviceTypeValue\"\n  ></c8y-type-dashboard-info>\n\n  <div\n    class=\"p-t-8 p-b-16\"\n    *ngIf=\"mo?.c8y_Dashboard && value\"\n  >\n    <button\n      class=\"btn btn-default btn-sm\"\n      type=\"button\"\n      c8yProductExperience\n      [actionName]=\"PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARD_TEMPLATE\"\n      [actionData]=\"{\n        component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.TYPED_DASHBOARD_SETTINGS,\n        action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.DUPLICATE_AS_REGULAR_DASHBOARD\n      }\"\n      (click)=\"onDuplicateWithoutType.emit()\"\n      [disabled]=\"formInvalid\"\n    >\n      {{ 'Duplicate as regular dashboard' | translate }}\n    </button>\n  </div>\n</fieldset>\n","import { Component } from '@angular/core';\nimport {\n  AllowTypeDashboard,\n  ContextDashboard,\n  ContextDashboardManagedObject,\n  DashboardGlobalRoles,\n  DashboardMetadata\n} from '../context-dashboard.model';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { C8yTranslatePipe, CoreModule, NavigatorNode, NavigatorService } from '@c8y/ngx-components';\nimport { Observable } from 'rxjs';\nimport { DashboardDetailService } from '../dashboard-detail.service';\nimport { IconSelectorModule } from '@c8y/ngx-components/icon-selector';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { DashboardAvailabilityComponent } from '../dashboard-availability.component';\nimport { TypedDashboardSettingsComponent } from './typed-dashboard-settings.component';\n\n@Component({\n  selector: 'c8y-dashboard-general-settings',\n  templateUrl: './dashboard-general-settings.component.html',\n  standalone: true,\n  imports: [\n    CoreModule,\n    IconSelectorModule,\n    C8yTranslatePipe,\n    PopoverModule,\n    DashboardAvailabilityComponent,\n    TypedDashboardSettingsComponent\n  ]\n})\nexport class DashboardGeneralSettingsComponent implements Omit<DashboardMetadata, 'context'> {\n  isReport: boolean;\n  isNamedDashboard: boolean;\n  hideAvailability: boolean;\n  dashboard: ContextDashboard;\n  deviceTypeValue: string;\n  displayDeviceTypeValue: string;\n  allowTypeDashboard: AllowTypeDashboard;\n  isDevice: boolean;\n  mo: ContextDashboardManagedObject;\n\n  generalSettingsForm: DashboardDetailService['generalSettingsForm'];\n  dashboardName: string;\n  navigatorNodes$: Observable<NavigatorNode[]>;\n  globalRolesIds: DashboardGlobalRoles;\n  readonly priorityExampleLabel = gettext('e.g. {{ example }}');\n  readonly positionInTabsExampleLabel = gettext('Position in tabs (10000 first, -10000 last)');\n  namePlaceholder: string;\n  constructor(\n    private navigatorService: NavigatorService,\n    private dashboardDetailService: DashboardDetailService\n  ) {}\n\n  ngOnInit() {\n    this.generalSettingsForm = this.dashboardDetailService.generalSettingsForm;\n    Object.assign(this, this.dashboardDetailService.details);\n    this.namePlaceholder = this.isReport ? gettext('e.g. My report') : gettext('e.g. My dashboard');\n    this.navigatorNodes$ = this.navigatorService.items$;\n    this.globalRolesIds = this.generalSettingsForm.value.globalRolesIds;\n  }\n\n  changeGlobalRoleIds() {\n    this.generalSettingsForm.get('globalRolesIds').setValue(this.globalRolesIds);\n    this.generalSettingsForm.markAsDirty();\n  }\n\n  async duplicateWithoutType() {\n    await this.dashboardDetailService.duplicateWithoutTypeFn();\n  }\n}\n","<div\n  class=\"row\"\n  [formGroup]=\"generalSettingsForm\"\n>\n  <div\n    class=\"col-xs-12 p-b-24\"\n    [ngClass]=\"{ 'col-md-6': !isReport, 'col-md-8': isReport }\"\n    *ngIf=\"!isNamedDashboard || isReport\"\n  >\n    <fieldset class=\"c8y-fieldset c8y-fieldset--lg m-b-24\">\n      <legend>{{ 'Navigation' | translate }}</legend>\n      <div class=\"d-flex gap-16\">\n        <c8y-form-group>\n          <label>{{ 'Icon' | translate }}</label>\n          <c8y-icon-selector-wrapper\n            [iconSize]=\"24\"\n            name=\"icon\"\n            formControlName=\"icon\"\n          ></c8y-icon-selector-wrapper>\n        </c8y-form-group>\n        <c8y-form-group class=\"flex-grow\">\n          <label for=\"menuLabel\">\n            {{ 'Menu label' | translate }}\n            <button\n              class=\"btn-help btn-help--sm\"\n              [attr.aria-label]=\"'Help' | translate\"\n              popover=\"{{\n                'Menu label to display in submenu when dashboard is attached' | translate\n              }}\"\n              placement=\"right\"\n              triggers=\"focus\"\n              container=\"body\"\n              type=\"button\"\n            ></button>\n          </label>\n          <input\n            class=\"form-control\"\n            id=\"menuLabel\"\n            placeholder=\"{{ namePlaceholder | translate }}\"\n            name=\"name\"\n            type=\"text\"\n            formControlName=\"name\"\n          />\n        </c8y-form-group>\n      </div>\n\n      <c8y-form-group>\n        <label for=\"description\">{{ 'Description ' | translate }}</label>\n        <textarea\n          class=\"form-control\"\n          id=\"description\"\n          name=\"description\"\n          c8y-textarea-autoresize\n          formControlName=\"description\"\n        ></textarea>\n      </c8y-form-group>\n\n      <div class=\"row\">\n        <div\n          class=\"col-lg-7 col-xs-12\"\n          *ngIf=\"!isReport\"\n        >\n          <c8y-form-group>\n            <label for=\"position\">\n              {{ 'Position in tabs' | translate }}\n              <button\n                class=\"btn-help btn-help--sm\"\n                [attr.aria-label]=\"'Help' | translate\"\n                popover=\"{{ positionInTabsExampleLabel | translate }}\"\n                placement=\"right\"\n                triggers=\"focus\"\n                container=\"body\"\n                type=\"button\"\n              ></button>\n            </label>\n            <input\n              class=\"form-control\"\n              id=\"positionNav\"\n              placeholder=\"{{ priorityExampleLabel | translate: { example: '500' } }}\"\n              name=\"priority\"\n              for=\"position\"\n              type=\"number\"\n              formControlName=\"priority\"\n            />\n          </c8y-form-group>\n        </div>\n\n        <div\n          class=\"col-xs-6\"\n          *ngIf=\"isReport\"\n        >\n          <label translate>Navigator menu item</label>\n          <c8y-form-group>\n            <label\n              class=\"c8y-switch\"\n              title=\"{{ 'Show in navigator' | translate }}\"\n            >\n              <input\n                type=\"checkbox\"\n                formControlName=\"c8y_IsNavigatorNode\"\n              />\n              <span></span>\n              <span>{{ 'Show in navigator' | translate }}</span>\n            </label>\n          </c8y-form-group>\n        </div>\n\n        <div\n          class=\"col-xs-6\"\n          *ngIf=\"isReport && generalSettingsForm.value.c8y_IsNavigatorNode\"\n        >\n          <c8y-form-group>\n            <label\n              class=\"d-block\"\n              for=\"position\"\n            >\n              {{ 'Position in navigator' | translate }}\n              <ng-template #positionInNavPop>\n                <span>\n                  {{ positionInTabsExampleLabel | translate }}&nbsp;\n                  {{ 'Existing nodes:' | translate }}\n                </span>\n                <ul class=\"list-unstyled m-t-16 m-b-0\">\n                  <li\n                    class=\"p-t-4 p-b-4\"\n                    title=\"{{ node.label | translate }}\"\n                    *ngFor=\"let node of navigatorNodes$ | async\"\n                  >\n                    <div class=\"icon-flex fit-w\">\n                      <i [c8yIcon]=\"node.icon\"></i>\n                      <span class=\"text-truncate m-l-4 m-r-16 flex-grow\">\n                        {{ node.label | translate }}\n                      </span>\n                      <span class=\"text-medium flex-no-shrink\">{{ node.priority }}</span>\n                    </div>\n                  </li>\n                </ul>\n              </ng-template>\n              <button\n                class=\"btn-help btn-help--sm\"\n                [attr.aria-label]=\"'Help' | translate\"\n                [popover]=\"positionInNavPop\"\n                placement=\"right\"\n                triggers=\"focus\"\n                container=\"body\"\n                type=\"button\"\n              ></button>\n            </label>\n            <input\n              class=\"form-control\"\n              placeholder=\"{{ priorityExampleLabel | translate: { example: '500' } }}\"\n              name=\"priority\"\n              for=\"position\"\n              type=\"number\"\n              formControlName=\"priority\"\n            />\n          </c8y-form-group>\n        </div>\n      </div>\n    </fieldset>\n    <c8y-dashboard-availability\n      *ngIf=\"\n        !!isReport === false &&\n        allowTypeDashboard &&\n        deviceTypeValue &&\n        generalSettingsForm.get('deviceType') &&\n        !hideAvailability\n      \"\n      [(globalRolesIds)]=\"globalRolesIds\"\n      (globalRolesIdsChange)=\"changeGlobalRoleIds()\"\n    ></c8y-dashboard-availability>\n  </div>\n\n  <div class=\"col-xs-12 col-md-6 p-b-24\">\n    <c8y-typed-dashboard-settings\n      *ngIf=\"allowTypeDashboard !== 'disallow'\"\n      formControlName=\"deviceType\"\n      [deviceTypeValue]=\"deviceTypeValue\"\n      [displayDeviceTypeValue]=\"displayDeviceTypeValue\"\n      [formInvalid]=\"generalSettingsForm.invalid\"\n      [mo]=\"mo\"\n      [isDevice]=\"isDevice\"\n      [allowTypeDashboard]=\"allowTypeDashboard\"\n      (onDuplicateWithoutType)=\"duplicateWithoutType()\"\n    ></c8y-typed-dashboard-settings>\n    <c8y-dashboard-availability\n      *ngIf=\"\n        !!isReport === false &&\n        (!allowTypeDashboard || !deviceTypeValue || !generalSettingsForm.get('deviceType')) &&\n        !hideAvailability\n      \"\n      [(globalRolesIds)]=\"globalRolesIds\"\n      (globalRolesIdsChange)=\"changeGlobalRoleIds()\"\n    ></c8y-dashboard-availability>\n  </div>\n</div>\n"],"names":["i3","i4","i1","i2.DashboardDetailService","i5","i6"],"mappings":"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"}