{"version":3,"file":"ngx-dashboard-designer.mjs","sources":["../../../projects/dashboard-designer/src/lib/services/dashboard-designer.service.ts","../../../projects/dashboard-designer/src/lib/data-provider/fonts/fonts-collection.ts","../../../projects/dashboard-designer/src/lib/injectors/dashboard-injectors.ts","../../../projects/dashboard-designer/src/lib/@shared/icons-loader/utils/trusted-types.ts","../../../projects/dashboard-designer/src/lib/@shared/icons-loader/utils/dash-registry.ts","../../../projects/dashboard-designer/src/lib/services/dashboard-icon.service.ts","../../../projects/dashboard-designer/src/lib/@shared/icons-loader/components/dash-icon.ts","../../../projects/dashboard-designer/src/lib/data-provider/i18n/i18n-data.ts","../../../projects/dashboard-designer/src/lib/services/translation.service.ts","../../../projects/dashboard-designer/src/lib/@shared/pipes/translate.pipe.ts","../../../projects/dashboard-designer/src/lib/layout/left-block/left-block.component.ts","../../../projects/dashboard-designer/src/lib/layout/left-block/left-block.component.html","../../../projects/dashboard-designer/src/lib/layout/right-block/right-block.component.ts","../../../projects/dashboard-designer/src/lib/layout/right-block/right-block.component.html","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterConfig.interface.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterCompact.service.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterConfig.constant.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterUtils.service.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterEmptyCell.service.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterRenderer.service.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterPreview.component.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridster.component.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridster.html","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterPush.service.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterScroll.service.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterSwap.service.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterDraggable.service.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterPushResize.service.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterResizable.service.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterItem.component.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterItem.html","../../../projects/dashboard-designer/src/lib/@shared/widget-wrapper/components/ngx-dashboard-widget-wrapper.component.ts","../../../projects/dashboard-designer/src/lib/@shared/widget-wrapper/components/ngx-dashboard-widget-wrapper.component.html","../../../projects/dashboard-designer/src/lib/components/ngx-dasboard-designer/components/dashboard-widget-error-view/dashboard-widget-error-view.component.ts","../../../projects/dashboard-designer/src/lib/components/ngx-dasboard-designer/components/dashboard-widget-error-view/dashboard-widget-error-view.component.html","../../../projects/dashboard-designer/src/lib/components/ngx-dasboard-designer/components/dashboard-widget/dashboard-widget.component.ts","../../../projects/dashboard-designer/src/lib/components/ngx-dasboard-designer/components/dashboard-widget/dashboard-widget.component.html","../../../projects/dashboard-designer/src/lib/components/ngx-dasboard-designer/components/dashboard-widget-designer/dashboard-widget-designer.component.ts","../../../projects/dashboard-designer/src/lib/components/ngx-dasboard-designer/components/dashboard-widget-designer/dashboard-widget-designer.component.html","../../../projects/dashboard-designer/src/lib/layout/center-block/center-block.component.ts","../../../projects/dashboard-designer/src/lib/layout/center-block/center-block.component.html","../../../projects/dashboard-designer/src/lib/layout/top-block/top-block.component.ts","../../../projects/dashboard-designer/src/lib/layout/top-block/top-block.component.html","../../../projects/dashboard-designer/src/lib/models/dashboard-layout-config.model.ts","../../../projects/dashboard-designer/src/lib/@shared/dashboard-resizer/resize-element.enum.ts","../../../projects/dashboard-designer/src/lib/@shared/icons-loader/dash-icon.module.ts","../../../projects/dashboard-designer/src/lib/@shared/dashboard-resizer/resize-element.directive.ts","../../../projects/dashboard-designer/src/lib/@shared/dashboard-resizer/resize-element.module.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/io/event-argument.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/util.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/io/io.service.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/io/io-factory.service.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/component-injector/token.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/component-injector/component-outlet-injector.directive.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/component-injector/component-outlet-injector.module.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/dynamic-io/dynamic-io.directive.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/dynamic-io/dynamic-io.module.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/dynamic.component.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/dynamic.module.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/dynamic-attributes/dynamic-attributes.directive.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/dynamic-attributes/dynamic-attributes.module.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/window-ref/window-ref-browser.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/window-ref/window-ref.service.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/dynamic-directives/dynamic-directives.directive.ts","../../../projects/dashboard-designer/src/lib/@shared/dash-dynamic-loader/dynamic-directives/dynamic-directives.module.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridsterItem.interface.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridster.interface.ts","../../../projects/dashboard-designer/src/lib/@shared/angular-gridster-2/gridster.module.ts","../../../projects/dashboard-designer/src/lib/@shared/dashboard-designer-shared.module.ts","../../../projects/dashboard-designer/src/lib/@shared/widget-wrapper/ngx-dashboard-widget-wrapper.module.ts","../../../projects/dashboard-designer/src/lib/models/dashboard.models.ts","../../../projects/dashboard-designer/src/lib/services/dashboard-layout.service.ts","../../../projects/dashboard-designer/src/lib/components/ngx-dasboard-designer/components/ngx-dasboard-designer/ngx-dasboard-designer.component.ts","../../../projects/dashboard-designer/src/lib/components/ngx-dasboard-designer/components/ngx-dasboard-designer/ngx-dasboard-designer.component.html","../../../projects/dashboard-designer/src/lib/components/ngx-dashboard-viewer/dashboardviewer-default-options.ts","../../../projects/dashboard-designer/src/lib/models/observable-events.model.ts","../../../projects/dashboard-designer/src/lib/components/ngx-dashboard-viewer/components/dashboard-widget-view/dashboard-widget-view.component.ts","../../../projects/dashboard-designer/src/lib/components/ngx-dashboard-viewer/components/dashboard-widget-view/dashboard-widget-view.component.html","../../../projects/dashboard-designer/src/lib/components/ngx-dashboard-viewer/components/ngx-dashboard-viewer/ngx-dashboard-viewer.component.ts","../../../projects/dashboard-designer/src/lib/components/ngx-dashboard-viewer/components/ngx-dashboard-viewer/ngx-dashboard-viewer.component.html","../../../projects/dashboard-designer/src/lib/components/ngx-dashboard-viewer/ngx-dashboard-viewer.module.ts","../../../projects/dashboard-designer/src/lib/components/ngx-dasboard-designer/dashboard-widget-designer.module.ts","../../../projects/dashboard-designer/src/lib/interceptor/token-interceptor.ts","../../../projects/dashboard-designer/src/lib/dashboard-designer.module.ts","../../../projects/dashboard-designer/src/public-api.ts","../../../projects/dashboard-designer/src/ngx-dashboard-designer.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport {\r\n  GridLayOutInstance,\r\n  IGridLayOutInstance\r\n} from '../models/dashboard.models';\r\nimport { ObservableEventsModel } from '../models/observable-events.model';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DashboardDesignerService {\r\n  selectedLayoutEvent$: BehaviorSubject<IGridLayOutInstance> =\r\n    new BehaviorSubject<IGridLayOutInstance>(null);\r\n  //this will be updated with latest dashboard config\r\n  dashboardData: IGridLayOutInstance = null;\r\n  //this is for custom dashboard layout option('+' button)\r\n  dynamicDashboardData: IGridLayOutInstance = null;\r\n  isNewLayoutSelected$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(\r\n    false\r\n  );\r\n  isWidgetDragModeEnabled$: BehaviorSubject<boolean> =\r\n    new BehaviorSubject<boolean>(false);\r\n\r\n  dynamicWidgetLoadEvent$: BehaviorSubject<ObservableEventsModel> =\r\n    new BehaviorSubject<ObservableEventsModel>(null);\r\n\r\n  constructor() {}\r\n\r\n  emitSelectedLayoutEvent(data: IGridLayOutInstance) {\r\n    this.dashboardData = data;\r\n    this.selectedLayoutEvent$.next(this.dashboardData);\r\n  }\r\n\r\n  getNewDashboardId(): number {\r\n    let id = -1;\r\n    this.dynamicDashboardData?.dashboardItems?.forEach(item => {\r\n      if (id < item.id) {\r\n        id = item.id;\r\n      }\r\n    });\r\n    return ++id;\r\n  }\r\n\r\n  removeDashboardItem(item) {\r\n    this.dynamicDashboardData.dashboardItems.splice(\r\n      this.dynamicDashboardData.dashboardItems.indexOf(item),\r\n      1\r\n    );\r\n\r\n    this.dashboardData.dashboardItems.splice(\r\n      this.dashboardData.dashboardItems.indexOf(item),\r\n      1\r\n    );\r\n  }\r\n}\r\n","export const fontsToLoad: {\r\n  fontName: string;\r\n  fontUrl: string;\r\n}[] = [\r\n  {\r\n    fontName: 'ADPortsGroup-Regular',\r\n    fontUrl: '/fonts/ADPortsGroup-Regular.woff2'\r\n  },\r\n  {\r\n    fontName: 'ADPortsGroup-Regular',\r\n    fontUrl: '/fonts/ADPortsGroup-Regular.woff'\r\n  },\r\n  {\r\n    fontName: 'dash_layout_icon',\r\n    fontUrl: '/fonts/dash_layout_icon.woff'\r\n  }\r\n];\r\n\r\nexport const externalFonts: {\r\n  fontName: string;\r\n  fontUrl: string;\r\n}[] = [\r\n  {\r\n    fontName: 'Font Awesome 5 Pro',\r\n    fontUrl: '/webfonts/fa-light-300.woff'\r\n  },\r\n  {\r\n    fontName: 'Font Awesome 5 Pro',\r\n    fontUrl: '/webfonts/fa-light-300.woff2'\r\n  }\r\n];\r\n\r\n// export const fontsToLoad: {\r\n//   fontName: string;\r\n//   fontUrl: string;\r\n// }[] = [\r\n//   {\r\n//     fontName: 'Font Awesome 5 Duotone',\r\n//     fontUrl: '/webfonts/fa-duotone-900.woff2'\r\n//   },\r\n//   {\r\n//     fontName: 'Font Awesome 5 Duotone',\r\n//     fontUrl: '/webfonts/fa-duotone-900.woff'\r\n//   },\r\n//   {\r\n//     fontName: 'Font Awesome 5 Pro',\r\n//     fontUrl: '/webfonts/fa-light-300.woff'\r\n//   },\r\n//   {\r\n//     fontName: 'Font Awesome 5 Pro',\r\n//     fontUrl: '/webfonts/fa-light-300.woff2'\r\n//   },\r\n//   {\r\n//     fontName: 'Font Awesome 5 Brands',\r\n//     fontUrl: '/webfonts/fa-brands-400.woff2'\r\n//   },\r\n//   {\r\n//     fontName: 'Font Awesome 5 Brands',\r\n//     fontUrl: '/webfonts/fa-brands-400.woff'\r\n//   },\r\n//   {\r\n//     fontName: 'Font Awesome 5 Pro',\r\n//     fontUrl: '/webfonts/fa-solid-900.woff2'\r\n//   },\r\n//   {\r\n//     fontName: 'Font Awesome 5 Pro',\r\n//     fontUrl: '/webfonts/fa-solid-900.woff'\r\n//   },\r\n//   {\r\n//     fontName: 'ADPortsGroup-Bold',\r\n//     fontUrl: '/fonts/ADPortsGroup-Bold.woff2'\r\n//   },\r\n//   {\r\n//     fontName: 'ADPortsGroup-Bold',\r\n//     fontUrl: '/fonts/ADPortsGroup-Regular.woff'\r\n//   },\r\n//   {\r\n//     fontName: 'Droid-Arabic-Kufi',\r\n//     fontUrl: '/fonts/Droid-Arabic-Kufi.woff'\r\n//   },\r\n//   {\r\n//     fontName: 'ADPortsGroup-Light',\r\n//     fontUrl: '/fonts/ADPortsGroup-Light.woff2'\r\n//   },\r\n//   {\r\n//     fontName: 'ADPortsGroup-Light',\r\n//     fontUrl: '/fonts/ADPortsGroup-Light.woff'\r\n//   },\r\n//   {\r\n//     fontName: 'ADPortsGroup-Regular',\r\n//     fontUrl: '/fonts/ADPortsGroup-Regular.woff2'\r\n//   },\r\n//   {\r\n//     fontName: 'ADPortsGroup-Regular',\r\n//     fontUrl: '/fonts/ADPortsGroup-Regular.woff'\r\n//   },\r\n//   {\r\n//     fontName: 'ADPortsGroup-Bold',\r\n//     fontUrl: '/fonts/ADPortsGroup-Bold.woff2'\r\n//   },\r\n//   {\r\n//     fontName: 'ADPortsGroup-Bold',\r\n//     fontUrl: '/fonts/ADPortsGroup-Regular.woff'\r\n//   },\r\n//   {\r\n//     fontName: 'dash_layout_icon',\r\n//     fontUrl: '/fonts/dash_layout_icon.woff'\r\n//   }\r\n// ];\r\n","import { InjectionToken } from '@angular/core';\r\nimport { DashboardModuleConfigModel } from '../models/dashboard-module-config.model';\r\n\r\nexport const DASHBOARD_CONFIG = new InjectionToken<DashboardModuleConfigModel>(\r\n  'dashBoardConfig'\r\n);\r\n","export declare interface TrustedHTML {\r\n  __brand__: 'TrustedHTML';\r\n}\r\n\r\nexport declare interface TrustedTypePolicyFactory {\r\n  createPolicy(\r\n    policyName: string,\r\n    policyOptions: {\r\n      createHTML?: (input: string) => string;\r\n    }\r\n  ): TrustedTypePolicy;\r\n}\r\n\r\nexport declare interface TrustedTypePolicy {\r\n  createHTML(input: string): TrustedHTML;\r\n}\r\n\r\n/**\r\n * The Trusted Types policy, or null if Trusted Types are not\r\n * enabled/supported, or undefined if the policy has not been created yet.\r\n */\r\nlet policy: TrustedTypePolicy | null | undefined;\r\n\r\n/**\r\n * Returns the Trusted Types policy, or null if Trusted Types are not\r\n * enabled/supported. The first call to this function will create the policy.\r\n */\r\nfunction getPolicy(): TrustedTypePolicy | null {\r\n  if (policy === undefined) {\r\n    policy = null;\r\n    if (typeof window !== 'undefined') {\r\n      const ttWindow = window as unknown as {\r\n        trustedTypes?: TrustedTypePolicyFactory;\r\n      };\r\n      if (ttWindow.trustedTypes !== undefined) {\r\n        policy = ttWindow.trustedTypes.createPolicy('angular#components', {\r\n          createHTML: (s: string) => s\r\n        });\r\n      }\r\n    }\r\n  }\r\n  return policy;\r\n}\r\n\r\n/**\r\n * Unsafely promote a string to a TrustedHTML, falling back to strings when\r\n * Trusted Types are not available.\r\n * @security This is a security-sensitive function; any use of this function\r\n * must go through security review. In particular, it must be assured that the\r\n * provided string will never cause an XSS vulnerability if used in a context\r\n * that will be interpreted as HTML by a browser, e.g. when assigning to\r\n * element.innerHTML.\r\n */\r\nexport function trustedHTMLFromString(html: string): TrustedHTML {\r\n  return getPolicy()?.createHTML(html) || (html as unknown as TrustedHTML);\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport {\r\n  ErrorHandler,\r\n  Inject,\r\n  Injectable,\r\n  OnDestroy,\r\n  Optional,\r\n  SecurityContext\r\n} from '@angular/core';\r\nimport {\r\n  DomSanitizer,\r\n  SafeHtml,\r\n  SafeResourceUrl\r\n} from '@angular/platform-browser';\r\nimport {\r\n  forkJoin,\r\n  Observable,\r\n  of as observableOf,\r\n  throwError as observableThrow\r\n} from 'rxjs';\r\nimport { catchError, finalize, map, share, tap } from 'rxjs/operators';\r\nimport { TrustedHTML, trustedHTMLFromString } from './trusted-types';\r\n\r\n/**\r\n * Returns an exception to be thrown in the case when attempting to\r\n * load an icon with a name that cannot be found.\r\n * @docs-private\r\n */\r\nexport function getDashIconNameNotFoundError(iconName: string): Error {\r\n  return Error(`Unable to find icon with the name \"${iconName}\"`);\r\n}\r\n\r\n/**\r\n * Returns an exception to be thrown when the consumer attempts to use\r\n * `<dash-icon>` without including @angular/common/http.\r\n * @docs-private\r\n */\r\nexport function getDashIconNoHttpProviderError(): Error {\r\n  return Error(\r\n    'Could not find HttpClient provider for use with Angular Dasherial icons. ' +\r\n      'Please include the HttpClientModule from @angular/common/http in your ' +\r\n      'app imports.'\r\n  );\r\n}\r\n\r\n/**\r\n * Returns an exception to be thrown when a URL couldn't be sanitized.\r\n * @param url URL that was attempted to be sanitized.\r\n * @docs-private\r\n */\r\nexport function getDashIconFailedToSanitizeUrlError(\r\n  url: SafeResourceUrl\r\n): Error {\r\n  return Error(\r\n    `The URL provided to DashIconRegistry was not trusted as a resource URL ` +\r\n      `via Angular's DomSanitizer. Attempted URL was \"${url}\".`\r\n  );\r\n}\r\n\r\n/**\r\n * Returns an exception to be thrown when a HTML string couldn't be sanitized.\r\n * @param literal HTML that was attempted to be sanitized.\r\n * @docs-private\r\n */\r\nexport function getDashIconFailedToSanitizeLiteralError(\r\n  literal: SafeHtml\r\n): Error {\r\n  return Error(\r\n    `The literal provided to DashIconRegistry was not trusted as safe HTML by ` +\r\n      `Angular's DomSanitizer. Attempted literal was \"${literal}\".`\r\n  );\r\n}\r\n\r\n/** Options that can be used to configure how an icon or the icons in an icon set are presented. */\r\nexport interface IconOptions {\r\n  /** View box to set on the icon. */\r\n  viewBox?: string;\r\n\r\n  /** Whether or not to fetch the icon or icon set using HTTP credentials. */\r\n  withCredentials?: boolean;\r\n}\r\n\r\n/**\r\n * Function that will be invoked by the icon registry when trying to resolve the\r\n * URL from which to fetch an icon. The returned URL will be used to make a request for the icon.\r\n */\r\nexport type IconResolver = (\r\n  name: string,\r\n  namespace: string\r\n) => SafeResourceUrl | SafeResourceUrlWithIconOptions | null;\r\n\r\n/** Object that specifies a URL from which to fetch an icon and the options to use for it. */\r\nexport interface SafeResourceUrlWithIconOptions {\r\n  url: SafeResourceUrl;\r\n  options: IconOptions;\r\n}\r\n\r\n/**\r\n * Configuration for an icon, including the URL and possibly the cached SVG element.\r\n * @docs-private\r\n */\r\nclass SvgIconConfig {\r\n  svgElement: SVGElement | null;\r\n\r\n  constructor(\r\n    public url: SafeResourceUrl,\r\n    public svgText: TrustedHTML | null,\r\n    public options?: IconOptions\r\n  ) {}\r\n}\r\n\r\n/** Icon configuration whose content has already been loaded. */\r\ntype LoadedSvgIconConfig = SvgIconConfig & { svgText: TrustedHTML };\r\n\r\n/**\r\n * Service to register and display icons used by the `<dash-icon>` component.\r\n * - Registers icon URLs by namespace and name.\r\n * - Registers icon set URLs by namespace.\r\n * - Registers aliases for CSS classes, for use with icon fonts.\r\n * - Loads icons from URLs and extracts individual icons from icon sets.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class DashIconRegistry implements OnDestroy {\r\n  private _document: Document;\r\n\r\n  /**\r\n   * URLs and cached SVG elements for individual icons. Keys are of the format \"[namespace]:[icon]\".\r\n   */\r\n  private _svgIconConfigs = new Map<string, SvgIconConfig>();\r\n\r\n  /**\r\n   * SvgIconConfig objects and cached SVG elements for icon sets, keyed by namespace.\r\n   * Multiple icon sets can be registered under the same namespace.\r\n   */\r\n  private _iconSetConfigs = new Map<string, SvgIconConfig[]>();\r\n\r\n  /** Cache for icons loaded by direct URLs. */\r\n  private _cachedIconsByUrl = new Map<string, SVGElement>();\r\n\r\n  /** In-progress icon fetches. Used to coalesce multiple requests to the same URL. */\r\n  private _inProgressUrlFetches = new Map<string, Observable<TrustedHTML>>();\r\n\r\n  /** Map from font identifiers to their CSS class names. Used for icon fonts. */\r\n  // private _fontCssClassesByAlias = new Map<string, string>();\r\n\r\n  /** Registered icon resolver functions. */\r\n  private _resolvers: IconResolver[] = [];\r\n\r\n  /**\r\n   * The CSS classes to apply when an `<dash-icon>` component has no icon name, url, or font\r\n   * specified. The default 'material-icons' value assumes that the material icon font has been\r\n   */\r\n  private _defaultFontSetClass = ['material-icons', 'dash-ligature-font'];\r\n\r\n  constructor(\r\n    @Optional() private _httpClient: HttpClient,\r\n    private _sanitizer: DomSanitizer,\r\n    @Optional() @Inject(DOCUMENT) document: any,\r\n    private readonly _errorHandler: ErrorHandler\r\n  ) {\r\n    this._document = document;\r\n  }\r\n\r\n  /**\r\n   * Registers an icon by URL in the default namespace.\r\n   * @param iconName Name under which the icon should be registered.\r\n   * @param url\r\n   */\r\n  addSvgIcon(\r\n    iconName: string,\r\n    url: SafeResourceUrl,\r\n    options?: IconOptions\r\n  ): this {\r\n    return this.addSvgIconInNamespace('', iconName, url, options);\r\n  }\r\n\r\n  /**\r\n   * Registers an icon by URL in the specified namespace.\r\n   * @param namespace Namespace in which the icon should be registered.\r\n   * @param iconName Name under which the icon should be registered.\r\n   * @param url\r\n   */\r\n  addSvgIconInNamespace(\r\n    namespace: string,\r\n    iconName: string,\r\n    url: SafeResourceUrl,\r\n    options?: IconOptions\r\n  ): this {\r\n    return this._addSvgIconConfig(\r\n      namespace,\r\n      iconName,\r\n      new SvgIconConfig(url, null, options)\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Sets the CSS classes to be used for icon fonts when an `<dash-icon>` component does not\r\n   * have a fontSet input value, and is not loading an icon by name or URL.\r\n   */\r\n  setDefaultFontSetClass(...classNames: string[]): this {\r\n    this._defaultFontSetClass = classNames;\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Returns the CSS classes to be used for icon fonts when an `<dash-icon>` component does not\r\n   * have a fontSet input value, and is not loading an icon by name or URL.\r\n   */\r\n  getDefaultFontSetClass(): string[] {\r\n    return this._defaultFontSetClass;\r\n  }\r\n\r\n  /**\r\n   * Returns an Observable that produces the icon (as an `<svg>` DOM element) with the given name\r\n   * and namespace. The icon must have been previously registered with addIcon or addIconSet;\r\n   * if not, the Observable will throw an error.\r\n   *\r\n   * @param name Name of the icon to be retrieved.\r\n   * @param namespace Namespace in which to look for the icon.\r\n   */\r\n  getNamedSvgIcon(\r\n    name: string,\r\n    namespace: string = ''\r\n  ): Observable<SVGElement> {\r\n    const key = iconKey(namespace, name);\r\n    let config = this._svgIconConfigs.get(key);\r\n\r\n    // Return (copy of) cached icon if possible.\r\n    if (config) {\r\n      return this._getSvgFromConfig(config);\r\n    }\r\n\r\n    // Otherwise try to resolve the config from one of the resolver functions.\r\n    config = this._getIconConfigFromResolvers(namespace, name);\r\n\r\n    if (config) {\r\n      this._svgIconConfigs.set(key, config);\r\n      return this._getSvgFromConfig(config);\r\n    }\r\n\r\n    // See if we have any icon sets registered for the namespace.\r\n    const iconSetConfigs = this._iconSetConfigs.get(namespace);\r\n\r\n    if (iconSetConfigs) {\r\n      return this._getSvgFromIconSetConfigs(name, iconSetConfigs);\r\n    }\r\n\r\n    return observableThrow(getDashIconNameNotFoundError(key));\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._resolvers = [];\r\n    this._svgIconConfigs.clear();\r\n    this._iconSetConfigs.clear();\r\n    this._cachedIconsByUrl.clear();\r\n  }\r\n\r\n  /**\r\n   * Returns the cached icon for a SvgIconConfig if available, or fetches it from its URL if not.\r\n   */\r\n  private _getSvgFromConfig(config: SvgIconConfig): Observable<SVGElement> {\r\n    if (config.svgText) {\r\n      // We already have the SVG element for this icon, return a copy.\r\n      return observableOf(\r\n        cloneSvg(this._svgElementFromConfig(config as LoadedSvgIconConfig))\r\n      );\r\n    } else {\r\n      // Fetch the icon from the config's URL, cache it, and return a copy.\r\n      return this._loadSvgIconFromConfig(config).pipe(\r\n        map(svg => cloneSvg(svg))\r\n      );\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Attempts to find an icon with the specified name in any of the SVG icon sets.\r\n   * First searches the available cached icons for a nested element with a matching name, and\r\n   * if found copies the element to a new `<svg>` element. If not found, fetches all icon sets\r\n   * that have not been cached, and searches again after all fetches are completed.\r\n   * The returned Observable produces the SVG element if possible, and throws\r\n   * an error if no icon with the specified name can be found.\r\n   */\r\n  private _getSvgFromIconSetConfigs(\r\n    name: string,\r\n    iconSetConfigs: SvgIconConfig[]\r\n  ): Observable<SVGElement> {\r\n    // For all the icon set SVG elements we've fetched, see if any contain an icon with the\r\n    // requested name.\r\n    const namedIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\r\n\r\n    if (namedIcon) {\r\n      // We could cache namedIcon in _svgIconConfigs, but since we have to make a copy every\r\n      // time anyway, there's probably not much advantage compared to just always extracting\r\n      // it from the icon set.\r\n      return observableOf(namedIcon);\r\n    }\r\n\r\n    // Not found in any cached icon sets. If there are icon sets with URLs that we haven't\r\n    // fetched, fetch them now and look for iconName in the results.\r\n    const iconSetFetchRequests: Observable<TrustedHTML | null>[] =\r\n      iconSetConfigs\r\n        .filter(iconSetConfig => !iconSetConfig.svgText)\r\n        .map(iconSetConfig => {\r\n          return this._loadSvgIconSetFromConfig(iconSetConfig).pipe(\r\n            catchError((err: HttpErrorResponse) => {\r\n              const url = this._sanitizer.sanitize(\r\n                SecurityContext.RESOURCE_URL,\r\n                iconSetConfig.url\r\n              );\r\n\r\n              // Swallow errors fetching individual URLs so the\r\n              // combined Observable won't necessarily fail.\r\n              const errorMessage = `Loading icon set URL: ${url} failed: ${err.message}`;\r\n              this._errorHandler.handleError(new Error(errorMessage));\r\n              return observableOf(null);\r\n            })\r\n          );\r\n        });\r\n\r\n    // Fetch all the icon set URLs. When the requests complete, every IconSet should have a\r\n    // cached SVG element (unless the request failed), and we can check again for the icon.\r\n    return forkJoin(iconSetFetchRequests).pipe(\r\n      map(() => {\r\n        const foundIcon = this._extractIconWithNameFromAnySet(\r\n          name,\r\n          iconSetConfigs\r\n        );\r\n\r\n        // TODO: add an ngDevMode check\r\n        if (!foundIcon) {\r\n          throw getDashIconNameNotFoundError(name);\r\n        }\r\n\r\n        return foundIcon;\r\n      })\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Searches the cached SVG elements for the given icon sets for a nested icon element whose \"id\"\r\n   * tag matches the specified name. If found, copies the nested element to a new SVG element and\r\n   * returns it. Returns null if no matching element is found.\r\n   */\r\n  private _extractIconWithNameFromAnySet(\r\n    iconName: string,\r\n    iconSetConfigs: SvgIconConfig[]\r\n  ): SVGElement | null {\r\n    // Iterate backwards, so icon sets added later have precedence.\r\n    for (let i = iconSetConfigs.length - 1; i >= 0; i--) {\r\n      const config = iconSetConfigs[i];\r\n\r\n      // Parsing the icon set's text into an SVG element can be expensive. We can avoid some of\r\n      // the parsing by doing a quick check using `indexOf` to see if there's any chance for the\r\n      // icon to be in the set. This won't be 100% accurate, but it should help us avoid at least\r\n      // some of the parsing.\r\n      if (config.svgText && config.svgText.toString().indexOf(iconName) > -1) {\r\n        const svg = this._svgElementFromConfig(config as LoadedSvgIconConfig);\r\n        const foundIcon = this._extractSvgIconFromSet(\r\n          svg,\r\n          iconName,\r\n          config.options\r\n        );\r\n        if (foundIcon) {\r\n          return foundIcon;\r\n        }\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  /**\r\n   * Loads the content of the icon URL specified in the SvgIconConfig and creates an SVG element\r\n   * from it.\r\n   */\r\n  private _loadSvgIconFromConfig(\r\n    config: SvgIconConfig\r\n  ): Observable<SVGElement> {\r\n    return this._fetchIcon(config).pipe(\r\n      tap(svgText => (config.svgText = svgText)),\r\n      map(() => this._svgElementFromConfig(config as LoadedSvgIconConfig))\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Loads the content of the icon set URL specified in the\r\n   * SvgIconConfig and attaches it to the config.\r\n   */\r\n  private _loadSvgIconSetFromConfig(\r\n    config: SvgIconConfig\r\n  ): Observable<TrustedHTML | null> {\r\n    if (config.svgText) {\r\n      return observableOf(null);\r\n    }\r\n\r\n    return this._fetchIcon(config).pipe(\r\n      tap(svgText => (config.svgText = svgText))\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Searches the cached element of the given SvgIconConfig for a nested icon element whose \"id\"\r\n   * tag matches the specified name. If found, copies the nested element to a new SVG element and\r\n   * returns it. Returns null if no matching element is found.\r\n   */\r\n  private _extractSvgIconFromSet(\r\n    iconSet: SVGElement,\r\n    iconName: string,\r\n    options?: IconOptions\r\n  ): SVGElement | null {\r\n    // Use the `id=\"iconName\"` syntax in order to escape special\r\n    // characters in the ID (versus using the #iconName syntax).\r\n    const iconSource = iconSet.querySelector(`[id=\"${iconName}\"]`);\r\n\r\n    if (!iconSource) {\r\n      return null;\r\n    }\r\n\r\n    // Clone the element and remove the ID to prevent multiple elements from being added\r\n    // to the page with the same ID.\r\n    const iconElement = iconSource.cloneNode(true) as Element;\r\n    iconElement.removeAttribute('id');\r\n\r\n    // If the icon node is itself an <svg> node, clone and return it directly. If not, set it as\r\n    // the content of a new <svg> node.\r\n    if (iconElement.nodeName.toLowerCase() === 'svg') {\r\n      return this._setSvgAttributes(iconElement as SVGElement, options);\r\n    }\r\n\r\n    // If the node is a <symbol>, it won't be rendered so we have to convert it into <svg>. Note\r\n    // that the same could be achieved by referring to it via <use href=\"#id\">, however the <use>\r\n    // tag is problematic on Firefox, because it needs to include the current page path.\r\n    if (iconElement.nodeName.toLowerCase() === 'symbol') {\r\n      return this._setSvgAttributes(this._toSvgElement(iconElement), options);\r\n    }\r\n\r\n    // createElement('SVG') doesn't work as expected; the DOM ends up with\r\n    // the correct nodes, but the SVG content doesn't render. Instead we\r\n    // have to create an empty SVG node using innerHTML and append its content.\r\n    // Elements created using DOMParser.parseFromString have the same problem.\r\n    // http://stackoverflow.com/questions/23003278/svg-innerhtml-in-firefox-can-not-display\r\n    const svg = this._svgElementFromString(\r\n      trustedHTMLFromString('<svg></svg>')\r\n    );\r\n    // Clone the node so we don't remove it from the parent icon set element.\r\n    svg.appendChild(iconElement);\r\n\r\n    return this._setSvgAttributes(svg, options);\r\n  }\r\n\r\n  /**\r\n   * Creates a DOM element from the given SVG string.\r\n   */\r\n  private _svgElementFromString(str: TrustedHTML): SVGElement {\r\n    const div = this._document.createElement('DIV');\r\n    div.innerHTML = str as unknown as string;\r\n    const svg = div.querySelector('svg') as SVGElement;\r\n\r\n    // TODO: add an ngDevMode check\r\n    if (!svg) {\r\n      throw Error('<svg> tag not found');\r\n    }\r\n\r\n    return svg;\r\n  }\r\n\r\n  /**\r\n   * Converts an element into an SVG node by cloning all of its children.\r\n   */\r\n  private _toSvgElement(element: Element): SVGElement {\r\n    const svg = this._svgElementFromString(\r\n      trustedHTMLFromString('<svg></svg>')\r\n    );\r\n    const attributes = element.attributes;\r\n\r\n    // Copy over all the attributes from the `symbol` to the new SVG, except the id.\r\n    for (let i = 0; i < attributes.length; i++) {\r\n      const { name, value } = attributes[i];\r\n\r\n      if (name !== 'id') {\r\n        svg.setAttribute(name, value);\r\n      }\r\n    }\r\n\r\n    for (let i = 0; i < element.childNodes.length; i++) {\r\n      if (element.childNodes[i].nodeType === this._document.ELEMENT_NODE) {\r\n        svg.appendChild(element.childNodes[i].cloneNode(true));\r\n      }\r\n    }\r\n\r\n    return svg;\r\n  }\r\n\r\n  /**\r\n   * Sets the default attributes for an SVG element to be used as an icon.\r\n   */\r\n  private _setSvgAttributes(\r\n    svg: SVGElement,\r\n    options?: IconOptions\r\n  ): SVGElement {\r\n    svg.setAttribute('fit', '');\r\n    svg.setAttribute('height', '100%');\r\n    svg.setAttribute('width', '100%');\r\n    svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\r\n    svg.setAttribute('focusable', 'false'); // Disable IE11 default behavior to make SVGs focusable.\r\n\r\n    if (options && options.viewBox) {\r\n      svg.setAttribute('viewBox', options.viewBox);\r\n    }\r\n\r\n    return svg;\r\n  }\r\n\r\n  /**\r\n   * Returns an Observable which produces the string contents of the given icon. Results may be\r\n   * cached, so future calls with the same URL may not cause another HTTP request.\r\n   */\r\n  private _fetchIcon(iconConfig: SvgIconConfig): Observable<TrustedHTML> {\r\n    const { url: safeUrl, options } = iconConfig;\r\n    const withCredentials = options?.withCredentials ?? false;\r\n\r\n    if (!this._httpClient) {\r\n      throw getDashIconNoHttpProviderError();\r\n    }\r\n\r\n    // TODO: add an ngDevMode check\r\n    if (safeUrl == null) {\r\n      throw Error(`Cannot fetch icon from URL \"${safeUrl}\".`);\r\n    }\r\n\r\n    const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\r\n\r\n    // TODO: add an ngDevMode check\r\n    if (!url) {\r\n      throw getDashIconFailedToSanitizeUrlError(safeUrl);\r\n    }\r\n\r\n    // Store in-progress fetches to avoid sending a duplicate request for a URL when there is\r\n    // already a request in progress for that URL. It's necessary to call share() on the\r\n    // Observable returned by http.get() so that multiple subscribers don't cause multiple XHRs.\r\n    const inProgressFetch = this._inProgressUrlFetches.get(url);\r\n\r\n    if (inProgressFetch) {\r\n      return inProgressFetch;\r\n    }\r\n\r\n    const req = this._httpClient\r\n      .get(url, { responseType: 'text', withCredentials })\r\n      .pipe(\r\n        map(svg => {\r\n          // Security: This SVG is fetched from a SafeResourceUrl, and is thus\r\n          // trusted HTML.\r\n          return trustedHTMLFromString(svg);\r\n        }),\r\n        finalize(() => this._inProgressUrlFetches.delete(url)),\r\n        share()\r\n      );\r\n\r\n    this._inProgressUrlFetches.set(url, req);\r\n    return req;\r\n  }\r\n\r\n  /**\r\n   * Registers an icon config by name in the specified namespace.\r\n   * @param namespace Namespace in which to register the icon config.\r\n   * @param iconName Name under which to register the config.\r\n   * @param config Config to be registered.\r\n   */\r\n  private _addSvgIconConfig(\r\n    namespace: string,\r\n    iconName: string,\r\n    config: SvgIconConfig\r\n  ): this {\r\n    this._svgIconConfigs.set(iconKey(namespace, iconName), config);\r\n    return this;\r\n  }\r\n\r\n  /** Parses a config's text into an SVG element. */\r\n  private _svgElementFromConfig(config: LoadedSvgIconConfig): SVGElement {\r\n    if (!config.svgElement) {\r\n      const svg = this._svgElementFromString(config.svgText);\r\n      this._setSvgAttributes(svg, config.options);\r\n      config.svgElement = svg;\r\n    }\r\n\r\n    return config.svgElement;\r\n  }\r\n\r\n  /** Tries to create an icon config through the registered resolver functions. */\r\n  private _getIconConfigFromResolvers(\r\n    namespace: string,\r\n    name: string\r\n  ): SvgIconConfig | undefined {\r\n    for (let i = 0; i < this._resolvers.length; i++) {\r\n      const result = this._resolvers[i](name, namespace);\r\n\r\n      if (result) {\r\n        return isSafeUrlWithOptions(result)\r\n          ? new SvgIconConfig(result.url, null, result.options)\r\n          : new SvgIconConfig(result, null);\r\n      }\r\n    }\r\n\r\n    return undefined;\r\n  }\r\n}\r\n\r\n/** Clones an SVGElement while preserving type information. */\r\nfunction cloneSvg(svg: SVGElement): SVGElement {\r\n  return svg.cloneNode(true) as SVGElement;\r\n}\r\n\r\n/** Returns the cache key to use for an icon namespace and name. */\r\nfunction iconKey(namespace: string, name: string) {\r\n  return namespace + ':' + name;\r\n}\r\n\r\nfunction isSafeUrlWithOptions(\r\n  value: any\r\n): value is SafeResourceUrlWithIconOptions {\r\n  return !!(value.url && value.options);\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { DashIconRegistry } from '../@shared/icons-loader/utils/dash-registry';\r\nimport {\r\n  externalFonts,\r\n  fontsToLoad\r\n} from '../data-provider/fonts/fonts-collection';\r\nimport { DASHBOARD_CONFIG } from '../injectors/dashboard-injectors';\r\nimport { DashboardModuleConfigModel } from '../models/dashboard-module-config.model';\r\n\r\n@Injectable()\r\nexport class DashboardIconService {\r\n  baseAssetsPath: string = 'assets/dashboard-designer/';\r\n  fontBaseUrl: string = 'assets/dashboard-designer/';\r\n  fontsToLoad: {\r\n    fontName: string;\r\n    fontUrl: string;\r\n  }[] = fontsToLoad;\r\n\r\n  constructor(\r\n    private _iconRegistry: DashIconRegistry,\r\n    private _sanitizer: DomSanitizer,\r\n    @Inject(DASHBOARD_CONFIG)\r\n    private config: DashboardModuleConfigModel\r\n  ) {\r\n    if (this.config?.baseAssetsPath) {\r\n      this.baseAssetsPath = this.config?.baseAssetsPath || this.baseAssetsPath;\r\n    }\r\n    if (this.config?.fontBaseUrl) {\r\n      this.fontBaseUrl = this.config?.fontBaseUrl || this.fontBaseUrl;\r\n    }\r\n\r\n    if (this.config?.isDynamicFontLoading) {\r\n      this.fontsToLoad = this.fontsToLoad.concat(externalFonts);\r\n    }\r\n    this.registerFonts();\r\n  }\r\n\r\n  public registerIcons(icons: Array<string>): void {\r\n    icons.forEach(icon => {\r\n      // @ts-ignore\r\n      this._iconRegistry.addSvgIcon(\r\n        icon,\r\n        this._sanitizer.bypassSecurityTrustResourceUrl(\r\n          `${this.baseAssetsPath}svg/${icon}.svg`\r\n        )\r\n      );\r\n    });\r\n  }\r\n\r\n  registerFonts(): void {\r\n    this.fontsToLoad.forEach(font => {\r\n      this.loadFonts(font.fontName, font.fontUrl);\r\n    });\r\n  }\r\n\r\n  loadFonts(fontName, fontUrl) {\r\n    let fontFaceObj = new FontFace(\r\n      fontName,\r\n      `url(${this.fontBaseUrl}${fontUrl})`\r\n    );\r\n    fontFaceObj\r\n      .load()\r\n      .then(function (loaded_face) {\r\n        //@ts-ignore\r\n        document.fonts.add(loaded_face);\r\n        document.body.style.fontFamily = fontName;\r\n      })\r\n      .catch(function (error) {\r\n        // error occurred\r\n        console.log(error);\r\n      });\r\n  }\r\n}\r\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  AfterViewChecked,\r\n  Attribute,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  ErrorHandler,\r\n  inject,\r\n  Inject,\r\n  InjectionToken,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { DashIconRegistry } from '../utils/dash-registry';\r\n\r\n/**\r\n * Injection token used to provide the current location to `DashIcon`.\r\n * Used to handle server-side rendering and to stub out during unit tests.\r\n * @docs-private\r\n */\r\nexport const DASH_ICON_LOCATION = new InjectionToken<DashIconLocation>(\r\n  'dash-icon-location',\r\n  {\r\n    providedIn: 'root',\r\n    factory: DASH_ICON_LOCATION_FACTORY\r\n  }\r\n);\r\n\r\n/**\r\n * Stubbed out location for `DashIcon`.\r\n * @docs-private\r\n */\r\nexport interface DashIconLocation {\r\n  getPathname: () => string;\r\n}\r\n\r\n// /** @docs-private */\r\nexport function DASH_ICON_LOCATION_FACTORY(): DashIconLocation {\r\n  const _document = inject(DOCUMENT);\r\n  const _location = _document ? _document.location : null;\r\n\r\n  return {\r\n    // Note that this needs to be a function, rather than a property, because Angular\r\n    // will only resolve it once, but we want the current path on each call.\r\n    getPathname: () => (_location ? _location.pathname + _location.search : '')\r\n  };\r\n}\r\n\r\n/** SVG attributes that accept a FuncIRI (e.g. `url(<something>)`). */\r\nconst funcIriAttributes = [\r\n  'clip-path',\r\n  'color-profile',\r\n  'src',\r\n  'cursor',\r\n  'fill',\r\n  'filter',\r\n  'marker',\r\n  'marker-start',\r\n  'marker-mid',\r\n  'marker-end',\r\n  'mask',\r\n  'stroke'\r\n];\r\n\r\n/** Selector that can be used to find all elements that are using a `FuncIRI`. */\r\nconst funcIriAttributeSelector = funcIriAttributes\r\n  .map(attr => `[${attr}]`)\r\n  .join(', ');\r\n\r\n/** Regex that can be used to extract the id out of a FuncIRI. */\r\nconst funcIriPattern = /^url\\(['\"]?#(.*?)['\"]?\\)$/;\r\n\r\n@Component({\r\n  template: '<ng-content></ng-content>',\r\n  selector: 'dash-icon',\r\n  exportAs: 'dashIcon',\r\n  styleUrls: ['dash-icon.scss'],\r\n  inputs: ['color'],\r\n  host: {\r\n    role: 'img',\r\n    class: 'dash-icon notranslate',\r\n    '[attr.data-dash-icon-type]': 'svg',\r\n    '[attr.data-dash-icon-name]': '_svgName',\r\n    '[attr.data-dash-icon-namespace]': '_svgNamespace',\r\n    '[class.dash-icon-inline]': 'inline',\r\n    '[class.dash-icon-no-color]':\r\n      'color !== \"primary\" && color !== \"accent\" && color !== \"warn\"'\r\n  },\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DashIcon implements OnInit, AfterViewChecked, OnDestroy {\r\n  /**\r\n   * Whether the icon should be inlined, automatically sizing the icon to match the font size of\r\n   * the element the icon is contained in.\r\n   */\r\n  @Input()\r\n  get inline(): boolean {\r\n    return this._inline;\r\n  }\r\n  set inline(inline: BooleanInput) {\r\n    this._inline = coerceBooleanProperty(inline);\r\n  }\r\n  private _inline: boolean = false;\r\n\r\n  /** Name of the icon in the SVG icon set. */\r\n  @Input()\r\n  get svgIcon(): string {\r\n    return this._svgIcon;\r\n  }\r\n  set svgIcon(value: string) {\r\n    if (value !== this._svgIcon) {\r\n      if (value) {\r\n        this._updateSvgIcon(value);\r\n      } else if (this._svgIcon) {\r\n        this._clearSvgElement();\r\n      }\r\n      this._svgIcon = value;\r\n    }\r\n  }\r\n  private _svgIcon: string;\r\n\r\n  _svgName: string | null;\r\n  _svgNamespace: string | null;\r\n\r\n  /** Keeps track of the current page path. */\r\n  private _previousPath?: string;\r\n\r\n  /** Keeps track of the elements and attributes that we've prefixed with the current path. */\r\n  private _elementsWithExternalReferences?: Map<\r\n    Element,\r\n    { name: string; value: string }[]\r\n  >;\r\n\r\n  /** Subscription to the current in-progress SVG icon request. */\r\n  private _currentIconFetch = Subscription.EMPTY;\r\n\r\n  constructor(\r\n    elementRef: ElementRef<HTMLElement>,\r\n    private _iconRegistry: DashIconRegistry,\r\n    @Attribute('aria-hidden') ariaHidden: string,\r\n    @Inject(DASH_ICON_LOCATION) private _location: DashIconLocation,\r\n    private readonly _errorHandler: ErrorHandler,\r\n    public _elementRef: ElementRef\r\n  ) {\r\n    // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\r\n    // the right thing to do for the majority of icon use-cases.\r\n    if (!ariaHidden) {\r\n      elementRef.nativeElement.setAttribute('aria-hidden', 'true');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Splits an svgIcon binding value into its icon set and icon name components.\r\n   * Returns a 2-element array of [(icon set), (icon name)].\r\n   * The separator for the two fields is ':'. If there is no separator, an empty\r\n   * string is returned for the icon set and the entire value is returned for\r\n   * the icon name. If the argument is falsy, returns an array of two empty strings.\r\n   * Throws an error if the name contains two or more ':' separators.\r\n   * Examples:\r\n   *   `'social:cake' -> ['social', 'cake']\r\n   *   'penguin' -> ['', 'penguin']\r\n   *   null -> ['', '']\r\n   *   'a:b:c' -> (throws Error)`\r\n   */\r\n  private _splitIconName(iconName: string): [string, string] {\r\n    if (!iconName) {\r\n      return ['', ''];\r\n    }\r\n    const parts = iconName.split(':');\r\n    switch (parts.length) {\r\n      case 1:\r\n        return ['', parts[0]]; // Use default namespace.\r\n      case 2:\r\n        return <[string, string]>parts;\r\n      default:\r\n        throw Error(`Invalid icon name: \"${iconName}\"`); // TODO: add an ngDevMode check\r\n    }\r\n  }\r\n\r\n  ngOnInit() {}\r\n\r\n  ngAfterViewChecked() {\r\n    const cachedElements = this._elementsWithExternalReferences;\r\n\r\n    if (cachedElements && cachedElements.size) {\r\n      const newPath = this._location.getPathname();\r\n\r\n      // We need to check whether the URL has changed on each change detection since\r\n      // the browser doesn't have an API that will let us react on link clicks and\r\n      // we can't depend on the Angular router. The references need to be updated,\r\n      // because while most browsers don't care whether the URL is correct after\r\n      // the first render, Safari will break if the user navigates to a different\r\n      // page and the SVG isn't re-rendered.\r\n      if (newPath !== this._previousPath) {\r\n        this._previousPath = newPath;\r\n        this._prependPathToReferences(newPath);\r\n      }\r\n    }\r\n  }\r\n\r\n  private _setSvgElement(svg: SVGElement) {\r\n    this._clearSvgElement();\r\n\r\n    // Note: we do this fix here, rather than the icon registry, because the\r\n    // references have to point to the URL at the time that the icon was created.\r\n    const path = this._location.getPathname();\r\n    this._previousPath = path;\r\n    this._cacheChildrenWithExternalReferences(svg);\r\n    this._prependPathToReferences(path);\r\n    this._elementRef.nativeElement.appendChild(svg);\r\n  }\r\n\r\n  private _clearSvgElement() {\r\n    const layoutElement: HTMLElement = this._elementRef.nativeElement;\r\n    let childCount = layoutElement.childNodes.length;\r\n\r\n    if (this._elementsWithExternalReferences) {\r\n      this._elementsWithExternalReferences.clear();\r\n    }\r\n\r\n    // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\r\n    // we can't use innerHTML, because IE will throw if the element has a data binding.\r\n    while (childCount--) {\r\n      const child = layoutElement.childNodes[childCount];\r\n\r\n      // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\r\n      // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\r\n      if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\r\n        child.remove();\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Prepends the current path to all elements that have an attribute pointing to a `FuncIRI`\r\n   * reference. This is required because WebKit browsers require references to be prefixed with\r\n   * the current path, if the page has a `base` tag.\r\n   */\r\n  private _prependPathToReferences(path: string) {\r\n    const elements = this._elementsWithExternalReferences;\r\n\r\n    if (elements) {\r\n      elements.forEach((attrs, element) => {\r\n        attrs.forEach(attr => {\r\n          element.setAttribute(attr.name, `url('${path}#${attr.value}')`);\r\n        });\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Caches the children of an SVG element that have `url()`\r\n   * references that we need to prefix with the current path.\r\n   */\r\n  private _cacheChildrenWithExternalReferences(element: SVGElement) {\r\n    const elementsWithFuncIri = element.querySelectorAll(\r\n      funcIriAttributeSelector\r\n    );\r\n    const elements = (this._elementsWithExternalReferences =\r\n      this._elementsWithExternalReferences || new Map());\r\n\r\n    for (let i = 0; i < elementsWithFuncIri.length; i++) {\r\n      funcIriAttributes.forEach(attr => {\r\n        const elementWithReference = elementsWithFuncIri[i];\r\n        const value = elementWithReference.getAttribute(attr);\r\n        const match = value ? value.match(funcIriPattern) : null;\r\n\r\n        if (match) {\r\n          let attributes = elements.get(elementWithReference);\r\n\r\n          if (!attributes) {\r\n            attributes = [];\r\n            elements.set(elementWithReference, attributes);\r\n          }\r\n\r\n          attributes!.push({ name: attr, value: match[1] });\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  /** Sets a new SVG icon with a particular name. */\r\n  private _updateSvgIcon(rawName: string | undefined) {\r\n    this._svgNamespace = null;\r\n    this._svgName = null;\r\n    this._currentIconFetch.unsubscribe();\r\n\r\n    if (rawName) {\r\n      const [namespace, iconName] = this._splitIconName(rawName);\r\n\r\n      if (namespace) {\r\n        this._svgNamespace = namespace;\r\n      }\r\n\r\n      if (iconName) {\r\n        this._svgName = iconName;\r\n      }\r\n\r\n      this._currentIconFetch = this._iconRegistry\r\n        .getNamedSvgIcon(iconName, namespace)\r\n        .pipe(take(1))\r\n        .subscribe(\r\n          svg => this._setSvgElement(svg),\r\n          (err: Error) => {\r\n            const errorMessage = `Error retrieving icon ${namespace}:${iconName}! ${err.message}`;\r\n            this._errorHandler.handleError(new Error(errorMessage));\r\n          }\r\n        );\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._currentIconFetch.unsubscribe();\r\n\r\n    if (this._elementsWithExternalReferences) {\r\n      this._elementsWithExternalReferences.clear();\r\n    }\r\n  }\r\n}\r\n","export const translations = {\r\n  ar: {\r\n    languange: 'ar',\r\n    values: {\r\n      LAYOUTS: 'التخطيطات',\r\n      CREATE_NEW_LAYOUT: 'إنشاء تخطيط جديد',\r\n      WIDGETS: 'الحاجيات',\r\n      SAVED_WIDGETS: 'الحاجيات المحفوظة',\r\n      PROPERTIES: 'الخصائص',\r\n      SAVE_LAYOUT: 'حفظ التخطيط',\r\n      LAYOUT_NAME: 'اسم التصميم',\r\n      LAYOUT_ID: 'معرف التخطيط',\r\n      CANCEL: 'يلغي',\r\n      DRAG_WIDGET_HERE: 'اسحب القطعة هنا',\r\n      DELETE_WIDGET: 'حذف القطعة',\r\n      DASHBOARD_DESIGNER: 'مصمم لوحة القيادة',\r\n      GRID_TYPE: 'نوع الشبكة',\r\n      DISPLAY_GRID_LINES: 'عرض خطوط الشبكة',\r\n      DRAG_ITEMS: 'اسحب العناصر',\r\n      RESIZE_ITEMS: 'تغيير حجم العناصر',\r\n      MARGIN: 'حافة',\r\n      GRIDSIZE: 'حافة',\r\n      OUTER_MARGIN: 'الهامش الخارجي',\r\n      DISABLE_VERTICAL_SCROLL: 'تعطيل التمرير الرأسي',\r\n      DISABLE_HORIZONTAL_SCROLL: 'تعطيل التمرير الأفقي',\r\n      RTL: 'رتل',\r\n      AUTO_HEIGHT: 'ارتفاع تلقائي',\r\n      MULTI_DRAG_WIDGET: 'تم تمكين السحب المتعدد',\r\n      WIDTH: 'عرض',\r\n      HEIGHT: 'ارتفاع',\r\n      ID: 'هوية شخصية',\r\n      ERROR_DETAILS: 'خطأ',\r\n      DO_WANT_TO_SAVE_WIDGET_CONFIG:\r\n        'هل تريد حفظ تكوين عنصر واجهة المستخدم ...؟',\r\n      OK: 'نعم',\r\n      WIDGET_NAMES: 'أسماء القطعة',\r\n      WIDGET_OPTIONS: 'خيارات القطعة'\r\n    }\r\n  },\r\n  en: {\r\n    languange: 'en',\r\n    values: {\r\n      LAYOUTS: 'Layouts',\r\n      CREATE_NEW_LAYOUT: 'Create New Layout',\r\n      WIDGETS: 'Widgets',\r\n      SAVED_WIDGETS: 'Saved Widgets',\r\n      PROPERTIES: 'Properties',\r\n      SAVE_LAYOUT: 'Save Layout',\r\n      LAYOUT_NAME: 'Layout Name',\r\n      LAYOUT_ID: 'Layout ID',\r\n      CANCEL: 'Cancel',\r\n      DRAG_WIDGET_HERE: 'Drag Widget here',\r\n      DELETE_WIDGET: 'Delete Widget',\r\n      DASHBOARD_DESIGNER: 'Dashboard Designer',\r\n      GRID_TYPE: 'Grid Type',\r\n      DISPLAY_GRID_LINES: 'Display Grid Lines',\r\n      DRAG_ITEMS: 'Drag Items',\r\n      RESIZE_ITEMS: 'Resize Items',\r\n      MARGIN: 'Margin',\r\n      GRIDSIZE: 'Grid Size',\r\n      OUTER_MARGIN: 'Outer Margin',\r\n      DISABLE_VERTICAL_SCROLL: 'Disable Vertical Scroll',\r\n      DISABLE_HORIZONTAL_SCROLL: 'Disable Horizontal Scroll',\r\n      RTL: 'Rtl',\r\n      AUTO_HEIGHT: 'Auto Height',\r\n      MULTI_DRAG_WIDGET: 'Multi Drag Enabled',\r\n      WIDTH: 'Width',\r\n      HEIGHT: 'Height',\r\n      ID: 'ID',\r\n      ERROR_DETAILS: 'Error Details',\r\n      DO_WANT_TO_SAVE_WIDGET_CONFIG:\r\n        'Do you want to save widget configuration...?',\r\n      OK: 'Ok',\r\n      WIDGET_NAMES: 'Widget Names',\r\n      WIDGET_OPTIONS: 'Widget Options'\r\n    }\r\n  }\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { translations } from '../data-provider/i18n/i18n-data';\r\n\r\nexport class TranslationSet {\r\n  public languange: string;\r\n  public values: { [key: string]: string } = {};\r\n}\r\n\r\n@Injectable()\r\nexport class TranslationService {\r\n  public languages = ['en', 'ar'];\r\n\r\n  public language = 'en';\r\n\r\n  private dictionary: { [key: string]: TranslationSet } = translations;\r\n\r\n  constructor() {}\r\n\r\n  translate(value: string): string {\r\n    //console.log('translate called with value ' + value + ' and language ' + this.language);\r\n    if (this.dictionary[this.language] != null) {\r\n      return this.dictionary[this.language].values[value];\r\n    } else {\r\n      return value;\r\n    }\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslationService } from '../../services/translation.service';\r\n\r\n@Pipe({\r\n  name: 'dashTranslate',\r\n  pure: false\r\n})\r\nexport class DashboardTranslatePipe implements PipeTransform {\r\n  constructor(private translationService: TranslationService) {}\r\n\r\n  transform(value: any, args?: any): any {\r\n    return this.translationService.translate(value) || value;\r\n  }\r\n}\r\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output\r\n} from '@angular/core';\r\nimport {\r\n  IDashboardWidgetOption,\r\n  MfeWidgetType\r\n} from '../../models/dashboard-widget-options.model';\r\nimport { DashboardDesignerService } from '../../services/dashboard-designer.service';\r\nimport { DashboardIconService } from '../../services/dashboard-icon.service';\r\n\r\n@Component({\r\n  selector: 'app-left-block',\r\n  templateUrl: './left-block.component.html',\r\n  styleUrls: ['./left-block.component.scss']\r\n})\r\nexport class LeftBlockComponent implements OnInit {\r\n  @Input() widgetOptions: IDashboardWidgetOption;\r\n  isEditMode: boolean;\r\n\r\n  @Output() onCreateNewLayoutClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  layoutList: any = [];\r\n  constructor(\r\n    private dashboardDesignerService: DashboardDesignerService,\r\n    private ref: ChangeDetectorRef,\r\n    private _iconsService: DashboardIconService\r\n  ) {\r\n    this._iconsService.registerIcons(this.icons);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    for (let i = 1; i <= 21; i++) {\r\n      this.layoutList.push('layout' + i);\r\n    }\r\n  }\r\n\r\n  createNewLayout(e) {\r\n    this.isEditMode = false;\r\n    this.onCreateNewLayoutClick.emit(e?.target?.id);\r\n  }\r\n\r\n  createNewDynamicLayout(e) {\r\n    this.isEditMode = false;\r\n    this.onCreateNewLayoutClick.emit('new');\r\n  }\r\n\r\n  loadDashboard(item): void {\r\n    this.isEditMode = true;\r\n    setTimeout(() => {\r\n      this.dashboardDesignerService.emitSelectedLayoutEvent(item);\r\n    }, 1000);\r\n  }\r\n\r\n  drop(event: CdkDragDrop<MfeWidgetType[]>) {\r\n    // copyArrayItem(\r\n    //   event.previousContainer.data,\r\n    //   event.container.data,\r\n    //   event.previousIndex,\r\n    //   event.currentIndex\r\n    // );\r\n    // transferArrayItem(\r\n    //   event.previousContainer.data,\r\n    //   event.container.data,\r\n    //   event.previousIndex,\r\n    //   event.currentIndex\r\n    // );\r\n  }\r\n\r\n  toggleWidgetDragMode(val): void {\r\n    this.dashboardDesignerService.isWidgetDragModeEnabled$.next(val);\r\n  }\r\n\r\n  clear() {\r\n    this.onCreateNewLayoutClick.emit(null);\r\n  }\r\n\r\n  confirmClear() {\r\n    if (confirm('Are you sure want clear all ?') == true) {\r\n      this.clear();\r\n    }\r\n  }\r\n\r\n  private get icons(): Array<string> {\r\n    return [\r\n      'layout-svg-ico',\r\n      'widget-layout-ico',\r\n      'bar-chart',\r\n      'down-chevron',\r\n      'plus-icon'\r\n    ];\r\n  }\r\n}\r\n","<div id=\"leftblockComponent\" class=\"inheritSize\">\r\n  <tabset [vertical]=\"true\" type=\"pills\" class=\"v-tabs inheritSize\">\r\n    <tab>\r\n      <ng-template tabHeading>\r\n        <!-- (click)=\"toggleWidgetDragMode(false)\" -->\r\n        <a href=\"javascript:void(0);\">\r\n          <dash-icon svgIcon=\"layout-svg-ico\" aria-hidden=\"false\"></dash-icon\r\n          ><small>{{ 'LAYOUTS' | dashTranslate }}</small></a\r\n        >\r\n      </ng-template>\r\n      <div class=\"dash-designer-accordion\">\r\n        <accordion [isAnimated]=\"true\">\r\n          <accordion-group class=\"accordion-group\" [isOpen]=\"true\">\r\n            <div\r\n              accordion-heading\r\n              class=\"d-flex align-items-center justify-content-between\"\r\n            >\r\n              <span>{{ 'CREATE_NEW_LAYOUT' | dashTranslate }}</span>\r\n              <dash-icon svgIcon=\"down-chevron\" aria-hidden=\"false\"></dash-icon>\r\n              <!-- <span class=\"fa fas fa-chevron-down\"> </span> -->\r\n            </div>\r\n\r\n            <div class=\"accordion-body p-0\">\r\n              <div class=\"layouticonWrap d-flex gap-2 flex-wrap\">\r\n                <ng-container *ngFor=\"let item of layoutList; let idx = index\">\r\n                  <div\r\n                    (click)=\"createNewLayout($event)\"\r\n                    [id]=\"'Layout' + (idx + 1)\"\r\n                    [attr.title]=\"'Layout ' + (idx + 1)\"\r\n                    [attr.class]=\"\r\n                      'svgBgIcon iconSize32 dashicon-layout-' + (idx + 1)\r\n                    \"\r\n                  ></div>\r\n                </ng-container>\r\n                <!-- class=\"fa fas fa-plus svgBgIcon\" -->\r\n                <a\r\n                  href=\"javascript:void(0)\"\r\n                  (click)=\"createNewDynamicLayout($event)\"\r\n                >\r\n                  <dash-icon svgIcon=\"plus-icon\" aria-hidden=\"false\"></dash-icon\r\n                ></a>\r\n              </div>\r\n              <footer style=\"display: flex; justify-content: flex-end\">\r\n                <button\r\n                  (click)=\"confirmClear()\"\r\n                  title=\"Clear All\"\r\n                  style=\"\r\n                    padding: 3px 10px;\r\n                    border: 1px solid #46518d;\r\n                    border-radius: 3px;\r\n                    color: #46518d;\r\n                    background: #e6e8f3;\r\n                  \"\r\n                >\r\n                  Clear\r\n                </button>\r\n              </footer>\r\n            </div>\r\n          </accordion-group>\r\n          <!-- <accordion-group class=\"accordion-group\" [isOpen]=\"true\">\r\n            <div\r\n              accordion-heading\r\n              class=\"d-flex align-items-center justify-content-between\"\r\n            >\r\n              <span>Saved Layout </span>\r\n              <span class=\"fa fas fa-chevron-down\">\r\n              </span>\r\n            </div>\r\n\r\n            <div class=\"accordion-body p-0\">\r\n              <ul>\r\n                <ng-container *ngFor=\"let item of savedDashLayout\">\r\n                  <li>\r\n                    <a (click)=\"loadDashboard(item)\" class=\"cursor-pointer\">\r\n                      <span>{{ item.layoutName }}</span>\r\n                    </a>\r\n                  </li>\r\n                </ng-container>\r\n              </ul>\r\n            </div>\r\n          </accordion-group> -->\r\n        </accordion>\r\n      </div>\r\n    </tab>\r\n    <tab>\r\n      <ng-template tabHeading>\r\n        <a href=\"javascript:void(0);\" (click)=\"toggleWidgetDragMode(true)\">\r\n          <dash-icon\r\n            svgIcon=\"widget-layout-ico\"\r\n            aria-hidden=\"false\"\r\n          ></dash-icon>\r\n          <small> {{ 'WIDGETS' | dashTranslate }}</small></a\r\n        >\r\n      </ng-template>\r\n\r\n      <div class=\"dash-designer-accordion\">\r\n        <accordion [isAnimated]=\"true\">\r\n          <accordion-group class=\"accordion-group\" [isOpen]=\"true\">\r\n            <div\r\n              accordion-heading\r\n              class=\"d-flex align-items-center justify-content-between\"\r\n            >\r\n              <span> {{ 'SAVED_WIDGETS' | dashTranslate }} </span>\r\n              <!-- <span class=\"fa fas fa-chevron-down\"> -->\r\n              <dash-icon svgIcon=\"down-chevron\" aria-hidden=\"false\"></dash-icon>\r\n              <!-- <button  class=\"fas fa-plus btn\"  (click)=\"createNewLayout()\"></button> -->\r\n              <!-- </span> -->\r\n            </div>\r\n            <!-- <cdk-drop> -->\r\n            <div>\r\n              <div\r\n                class=\"accordion-body p-0\"\r\n                cdkDropList\r\n                [cdkDropListData]=\"widgetOptions?.mfeWidgetTypes\"\r\n                (cdkDropListDropped)=\"drop($event)\"\r\n              >\r\n                <ul class=\"widget-list\">\r\n                  <li\r\n                    *ngFor=\"let widgetOption of widgetOptions?.mfeWidgetTypes\"\r\n                    cdkDrag\r\n                  >\r\n                    <a>\r\n                      <dash-icon\r\n                        svgIcon=\"{{ widgetOption.icon }}\"\r\n                        aria-hidden=\"false\"\r\n                      ></dash-icon>\r\n                      <!-- <i class=\"svgBgIcon iconSize32 widget_tab_icon\"></i> -->\r\n                      <small>{{ widgetOption.displayName }}</small>\r\n                    </a>\r\n                  </li>\r\n                </ul>\r\n              </div>\r\n            </div>\r\n            <!-- </cdk-drop> -->\r\n          </accordion-group>\r\n        </accordion>\r\n      </div>\r\n    </tab>\r\n  </tabset>\r\n</div>\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { GridLayOutInstance } from '../../models';\r\nimport { DashboardDesignerService } from '../../services/dashboard-designer.service';\r\nimport { DashboardIconService } from '../../services/dashboard-icon.service';\r\n\r\n@Component({\r\n  selector: 'app-right-block',\r\n  templateUrl: './right-block.component.html',\r\n  styleUrls: ['./right-block.component.scss']\r\n})\r\nexport class RightBlockComponent implements OnInit, OnDestroy {\r\n  private _unsubscribeAll$ = new Subject<any>();\r\n  dashboardLayout: GridLayOutInstance;\r\n\r\n  constructor(\r\n    private dashboardDesignerService: DashboardDesignerService,\r\n    private _iconsService: DashboardIconService\r\n  ) {\r\n    this._iconsService.registerIcons(this.icons);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.dashboardDesignerService.selectedLayoutEvent$\r\n      .pipe(takeUntil(this._unsubscribeAll$))\r\n      .subscribe((griditem: GridLayOutInstance) => {\r\n        if (griditem) {\r\n          this.dashboardLayout = griditem;\r\n        }\r\n      });\r\n  }\r\n\r\n  changeDir(e) {\r\n    if (e == 'rtl') {\r\n      document.body.setAttribute('dir', 'rtl');\r\n    } else {\r\n      document.body.removeAttribute('dir');\r\n    }\r\n    this.changedOptions();\r\n  }\r\n\r\n  changeGridSize(val): void {\r\n    this.dashboardLayout.options.fixedRowHeight = val;\r\n    this.dashboardLayout.options.fixedColWidth = val;\r\n    this.changedOptions();\r\n  }\r\n\r\n  changedOptions(): void {\r\n    if (\r\n      this.dashboardLayout.options.api &&\r\n      this.dashboardLayout.options.api.optionsChanged\r\n    ) {\r\n      this.dashboardLayout.options.api.optionsChanged();\r\n    }\r\n  }\r\n\r\n  private get icons(): Array<string> {\r\n    return ['down-chevron'];\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._unsubscribeAll$.next();\r\n    this._unsubscribeAll$.complete();\r\n  }\r\n}\r\n","<div id=\"rightblockComponent\" class=\"inheritSize p-2\">\r\n  <div class=\"dash-designer-accordion\">\r\n    <accordion [isAnimated]=\"true\">\r\n      <accordion-group class=\"accordion-group\" [isOpen]=\"true\">\r\n        <div\r\n          accordion-heading\r\n          class=\"d-flex align-items-center justify-content-between\"\r\n        >\r\n          <span>{{ 'PROPERTIES' | dashTranslate }}</span>\r\n          <!-- <span class=\"fa fas fa-chevron-down\"> </span> -->\r\n          <dash-icon svgIcon=\"down-chevron\" aria-hidden=\"false\"></dash-icon>\r\n        </div>\r\n        <div class=\"accordion-body p-0\">\r\n          <div class=\"form-row\">\r\n            <small class=\"\">{{ 'GRID_TYPE' | dashTranslate }}</small>\r\n            <select\r\n              aria-label=\"Grid type\"\r\n              [(ngModel)]=\"dashboardLayout.options.gridType\"\r\n              (ngModelChange)=\"changedOptions()\"\r\n              placeholder=\"Grid Type\"\r\n            >\r\n              <option value=\"fit\">Fit to screen</option>\r\n              <option value=\"scrollVertical\">Scroll Vertical</option>\r\n              <option value=\"scrollHorizontal\">Scroll Horizontal</option>\r\n              <option value=\"fixed\">Fixed</option>\r\n              <option value=\"verticalFixed\">Vertical Fixed</option>\r\n              <option value=\"horizontalFixed\">Horizontal Fixed</option>\r\n            </select>\r\n          </div>\r\n          <!-- <div class=\"form-row\">\r\n            <small> {{ 'DISPLAY_GRID_LINES' | dashTranslate }} </small>\r\n            <select\r\n              aria-label=\"Display grid lines\"\r\n              [(ngModel)]=\"dashboardLayout.options.displayGrid\"\r\n              placeholder=\"Display grid lines\"\r\n              (ngModelChange)=\"changedOptions()\"\r\n            >\r\n              <option value=\"always\">Always</option>\r\n              <option value=\"onDrag&Resize\">On Drag & Resize</option>\r\n              <option value=\"none\">None</option>\r\n            </select>\r\n          </div> -->\r\n          <!-- <div class=\"form-row\">\r\n            <small> {{ 'DRAG_ITEMS' | dashTranslate }} </small>\r\n            <input\r\n              type=\"checkbox\"\r\n              [(ngModel)]=\"dashboardLayout.options.draggable.enabled\"\r\n              *ngIf=\"dashboardLayout.options.draggable\"\r\n              (ngModelChange)=\"changedOptions()\"\r\n            />\r\n          </div>\r\n          <div class=\"form-row\">\r\n            <small> {{ 'RESIZE_ITEMS' | dashTranslate }} </small>\r\n            <input\r\n              type=\"checkbox\"\r\n              [(ngModel)]=\"dashboardLayout.options.resizable.enabled\"\r\n              *ngIf=\"dashboardLayout.options.resizable\"\r\n              (ngModelChange)=\"changedOptions()\"\r\n            />\r\n          </div> -->\r\n          <div class=\"form-row\">\r\n            <small> {{ 'MARGIN' | dashTranslate }} </small>\r\n            <input\r\n              matInput\r\n              [(ngModel)]=\"dashboardLayout.options.margin\"\r\n              min=\"0\"\r\n              max=\"30\"\r\n              step=\"1\"\r\n              type=\"number\"\r\n              placeholder=\"Margin\"\r\n              (ngModelChange)=\"changedOptions()\"\r\n            />\r\n          </div>\r\n          <!-- <div class=\"form-row\">\r\n            <small> {{ 'GRIDSIZE' | dashTranslate }} </small>\r\n            <div class=\"d-flex m-0\">\r\n              <input\r\n                class=\"col-10\"\r\n                matInput\r\n                [(ngModel)]=\"dashboardLayout.options.fixedColWidth\"\r\n                min=\"20\"\r\n                max=\"100\"\r\n                step=\"1\"\r\n                type=\"range\"\r\n                placeholder=\"{{ 'GRIDSIZE' | dashTranslate }}\"\r\n                (change)=\"changeGridSize(dashboardLayout.options.fixedColWidth)\"\r\n              />\r\n              <small>({{ dashboardLayout.options.fixedColWidth }})</small>\r\n            </div>\r\n          </div> -->\r\n          <!-- <div class=\"form-row\">\r\n            <small> {{ 'OUTER_MARGIN' | dashTranslate }} </small>\r\n            <input\r\n              type=\"checkbox\"\r\n              [(ngModel)]=\"dashboardLayout.options\"\r\n              (ngModelChange)=\"changedOptions()\"\r\n            />   \r\n          </div> -->\r\n          <!-- \r\n          <div class=\"form-row\">\r\n            <label>Layout Direction</label>\r\n            <select\r\n              [(ngModel)]=\"dashboardLayout.options.dirType\"\r\n              (change)=\"changeDir(dashboardLayout.options.dirType)\"\r\n              placeholder=\"Direction\"\r\n            >\r\n              <option value=\"ltr\">LTR</option>\r\n              <option value=\"rtl\">RTL</option>\r\n            </select>\r\n          </div> -->\r\n        </div>\r\n      </accordion-group>\r\n    </accordion>\r\n  </div>\r\n</div>\r\n","import { GridsterComponentInterface } from './gridster.interface';\r\nimport {\r\n  GridsterItem,\r\n  GridsterItemComponentInterface\r\n} from './gridsterItem.interface';\r\n\r\nexport type gridTypes =\r\n  | 'fit'\r\n  | 'scrollVertical'\r\n  | 'scrollHorizontal'\r\n  | 'fixed'\r\n  | 'verticalFixed'\r\n  | 'horizontalFixed';\r\nexport type displayGrids = 'always' | 'onDrag&Resize' | 'none';\r\nexport type compactTypes =\r\n  | 'none'\r\n  | 'compactUp'\r\n  | 'compactLeft'\r\n  | 'compactUp&Left'\r\n  | 'compactLeft&Up'\r\n  | 'compactRight'\r\n  | 'compactUp&Right'\r\n  | 'compactRight&Up'\r\n  | 'compactDown'\r\n  | 'compactDown&Left'\r\n  | 'compactLeft&Down'\r\n  | 'compactDown&Right'\r\n  | 'compactRight&Down';\r\n\r\nexport enum GridType {\r\n  Fit = 'fit',\r\n  ScrollVertical = 'scrollVertical',\r\n  ScrollHorizontal = 'scrollHorizontal',\r\n  Fixed = 'fixed',\r\n  VerticalFixed = 'verticalFixed',\r\n  HorizontalFixed = 'horizontalFixed'\r\n}\r\n\r\nexport enum DisplayGrid {\r\n  Always = 'always',\r\n  OnDragAndResize = 'onDrag&Resize',\r\n  None = 'none'\r\n}\r\n\r\nexport enum CompactType {\r\n  None = 'none',\r\n  CompactUp = 'compactUp',\r\n  CompactLeft = 'compactLeft',\r\n  CompactUpAndLeft = 'compactUp&Left',\r\n  CompactLeftAndUp = 'compactLeft&Up',\r\n  CompactRight = 'compactRight',\r\n  CompactUpAndRight = 'compactUp&Right',\r\n  CompactRightAndUp = 'compactRight&Up',\r\n  CompactDown = 'compactDown',\r\n  CompactDownAndLeft = 'compactDown&Left',\r\n  CompactLeftAndDown = 'compactLeft&Down',\r\n  CompactDownAndRight = 'compactDown&Right',\r\n  CompactRightAndDown = 'compactRight&Down'\r\n}\r\n\r\nexport enum DirTypes {\r\n  LTR = 'ltr',\r\n  RTL = 'rtl'\r\n}\r\n\r\nexport type dirTypes = 'ltr' | 'rtl';\r\n\r\nexport interface GridsterConfig {\r\n  gridType?: gridTypes;\r\n  scale?: number;\r\n  fixedColWidth?: number;\r\n  fixedRowHeight?: number;\r\n  keepFixedHeightInMobile?: boolean;\r\n  keepFixedWidthInMobile?: boolean;\r\n  setGridSize?: boolean;\r\n  compactType?: compactTypes;\r\n  mobileBreakpoint?: number;\r\n  allowMultiLayer?: boolean;\r\n  defaultLayerIndex?: number;\r\n  maxLayerIndex?: number;\r\n  baseLayerIndex?: number;\r\n  minCols?: number;\r\n  maxCols?: number;\r\n  minRows?: number;\r\n  maxRows?: number;\r\n  defaultItemCols?: number;\r\n  defaultItemRows?: number;\r\n  maxItemCols?: number;\r\n  maxItemRows?: number;\r\n  minItemCols?: number;\r\n  minItemRows?: number;\r\n  minItemArea?: number;\r\n  maxItemArea?: number;\r\n  addEmptyRowsCount?: number;\r\n  rowHeightRatio?: number;\r\n  margin?: number;\r\n  outerMargin?: boolean;\r\n  outerMarginTop?: number | null;\r\n  outerMarginRight?: number | null;\r\n  outerMarginBottom?: number | null;\r\n  outerMarginLeft?: number | null;\r\n  useTransformPositioning?: boolean;\r\n  scrollSensitivity?: number | null;\r\n  scrollSpeed?: number;\r\n  initCallback?: (gridster: GridsterComponentInterface) => void;\r\n  destroyCallback?: (gridster: GridsterComponentInterface) => void;\r\n  gridSizeChangedCallback?: (gridster: GridsterComponentInterface) => void;\r\n  itemChangeCallback?: (\r\n    item: GridsterItem,\r\n    itemComponent: GridsterItemComponentInterface\r\n  ) => void;\r\n  itemResizeCallback?: (\r\n    item: GridsterItem,\r\n    itemComponent: GridsterItemComponentInterface\r\n  ) => void;\r\n  itemInitCallback?: (\r\n    item: GridsterItem,\r\n    itemComponent: GridsterItemComponentInterface\r\n  ) => void;\r\n  itemRemovedCallback?: (\r\n    item: GridsterItem,\r\n    itemComponent: GridsterItemComponentInterface\r\n  ) => void;\r\n  itemValidateCallback?: (item: GridsterItem) => boolean;\r\n  draggable?: Draggable;\r\n  resizable?: Resizable;\r\n  swap?: boolean;\r\n  swapWhileDragging?: boolean;\r\n  pushItems?: boolean;\r\n  disablePushOnDrag?: boolean;\r\n  disablePushOnResize?: boolean;\r\n  disableAutoPositionOnConflict?: boolean;\r\n  pushDirections?: PushDirections;\r\n  pushResizeItems?: boolean;\r\n  displayGrid?: displayGrids;\r\n  disableWindowResize?: boolean;\r\n  disableWarnings?: boolean;\r\n  scrollToNewItems?: boolean;\r\n  disableScrollHorizontal?: boolean;\r\n  disableScrollVertical?: boolean;\r\n  enableBoundaryControl?: boolean;\r\n  enableEmptyCellClick?: boolean;\r\n  enableEmptyCellContextMenu?: boolean;\r\n  enableEmptyCellDrop?: boolean;\r\n  enableEmptyCellDrag?: boolean;\r\n  enableOccupiedCellDrop?: boolean;\r\n  emptyCellClickCallback?: (event: MouseEvent, item: GridsterItem) => void;\r\n  emptyCellContextMenuCallback?: (\r\n    event: MouseEvent,\r\n    item: GridsterItem\r\n  ) => void;\r\n  emptyCellDropCallback?: (event: DragEvent, item: GridsterItem) => void;\r\n  emptyCellDragCallback?: (event: MouseEvent, item: GridsterItem) => void;\r\n  emptyCellDragMaxCols?: number;\r\n  emptyCellDragMaxRows?: number;\r\n  ignoreMarginInRow?: boolean;\r\n  dirType?: dirTypes;\r\n  api?: {\r\n    resize?: () => void;\r\n    optionsChanged?: () => void;\r\n    getNextPossiblePosition?: (newItem: GridsterItem) => boolean;\r\n    getFirstPossiblePosition?: (item: GridsterItem) => GridsterItem;\r\n    getLastPossiblePosition?: (item: GridsterItem) => GridsterItem;\r\n    getItemComponent?: (\r\n      item: GridsterItem\r\n    ) => GridsterItemComponentInterface | undefined;\r\n  };\r\n\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  [propName: string]: any;\r\n}\r\n\r\nexport interface DragBase {\r\n  enabled?: boolean;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  stop?: (\r\n    item: GridsterItem,\r\n    itemComponent: GridsterItemComponentInterface,\r\n    event: MouseEvent\r\n  ) => Promise<any> | void;\r\n  start?: (\r\n    item: GridsterItem,\r\n    itemComponent: GridsterItemComponentInterface,\r\n    event: MouseEvent\r\n  ) => void;\r\n  delayStart?: number;\r\n}\r\n\r\nexport interface Draggable extends DragBase {\r\n  ignoreContentClass?: string;\r\n  ignoreContent?: boolean;\r\n  dragHandleClass?: string;\r\n  dropOverItems?: boolean;\r\n  dropOverItemsCallback?: (\r\n    source: GridsterItem,\r\n    target: GridsterItem,\r\n    grid?: GridsterComponentInterface\r\n  ) => void;\r\n}\r\n\r\nexport interface Resizable extends DragBase {\r\n  handles?: {\r\n    s: boolean;\r\n    e: boolean;\r\n    n: boolean;\r\n    w: boolean;\r\n    se: boolean;\r\n    ne: boolean;\r\n    sw: boolean;\r\n    nw: boolean;\r\n  };\r\n}\r\n\r\nexport interface PushDirections {\r\n  north: boolean;\r\n  east: boolean;\r\n  south: boolean;\r\n  west: boolean;\r\n}\r\n","import { GridsterComponentInterface } from './gridster.interface';\r\nimport {\r\n  GridsterItem,\r\n  GridsterItemComponentInterface\r\n} from './gridsterItem.interface';\r\nimport { CompactType } from './gridsterConfig.interface';\r\n\r\nexport class GridsterCompact {\r\n  constructor(private gridster: GridsterComponentInterface) {}\r\n\r\n  destroy(): void {\r\n    this.gridster = null!;\r\n  }\r\n\r\n  checkCompact(): void {\r\n    if (this.gridster.$options.compactType !== CompactType.None) {\r\n      if (this.gridster.$options.compactType === CompactType.CompactUp) {\r\n        this.checkCompactMovement('y', -1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactLeft\r\n      ) {\r\n        this.checkCompactMovement('x', -1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactUpAndLeft\r\n      ) {\r\n        this.checkCompactMovement('y', -1);\r\n        this.checkCompactMovement('x', -1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactLeftAndUp\r\n      ) {\r\n        this.checkCompactMovement('x', -1);\r\n        this.checkCompactMovement('y', -1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactRight\r\n      ) {\r\n        this.checkCompactMovement('x', 1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactUpAndRight\r\n      ) {\r\n        this.checkCompactMovement('y', -1);\r\n        this.checkCompactMovement('x', 1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactRightAndUp\r\n      ) {\r\n        this.checkCompactMovement('x', 1);\r\n        this.checkCompactMovement('y', -1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactDown\r\n      ) {\r\n        this.checkCompactMovement('y', 1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactDownAndLeft\r\n      ) {\r\n        this.checkCompactMovement('y', 1);\r\n        this.checkCompactMovement('x', -1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactDownAndRight\r\n      ) {\r\n        this.checkCompactMovement('y', 1);\r\n        this.checkCompactMovement('x', 1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactLeftAndDown\r\n      ) {\r\n        this.checkCompactMovement('x', -1);\r\n        this.checkCompactMovement('y', 1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactRightAndDown\r\n      ) {\r\n        this.checkCompactMovement('x', 1);\r\n        this.checkCompactMovement('y', 1);\r\n      }\r\n    }\r\n  }\r\n\r\n  checkCompactItem(item: GridsterItem): void {\r\n    if (this.gridster.$options.compactType !== CompactType.None) {\r\n      if (this.gridster.$options.compactType === CompactType.CompactUp) {\r\n        this.moveTillCollision(item, 'y', -1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactLeft\r\n      ) {\r\n        this.moveTillCollision(item, 'x', -1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactUpAndLeft\r\n      ) {\r\n        this.moveTillCollision(item, 'y', -1);\r\n        this.moveTillCollision(item, 'x', -1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactLeftAndUp\r\n      ) {\r\n        this.moveTillCollision(item, 'x', -1);\r\n        this.moveTillCollision(item, 'y', -1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactUpAndRight\r\n      ) {\r\n        this.moveTillCollision(item, 'y', -1);\r\n        this.moveTillCollision(item, 'x', 1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactDown\r\n      ) {\r\n        this.moveTillCollision(item, 'y', 1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactDownAndLeft\r\n      ) {\r\n        this.moveTillCollision(item, 'y', 1);\r\n        this.moveTillCollision(item, 'x', -1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactLeftAndDown\r\n      ) {\r\n        this.moveTillCollision(item, 'x', -1);\r\n        this.moveTillCollision(item, 'y', 1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactDownAndRight\r\n      ) {\r\n        this.moveTillCollision(item, 'y', 1);\r\n        this.moveTillCollision(item, 'x', 1);\r\n      } else if (\r\n        this.gridster.$options.compactType === CompactType.CompactRightAndDown\r\n      ) {\r\n        this.moveTillCollision(item, 'x', 1);\r\n        this.moveTillCollision(item, 'y', 1);\r\n      }\r\n    }\r\n  }\r\n\r\n  private checkCompactMovement(direction: 'x' | 'y', delta: number): void {\r\n    let widgetMoved = false;\r\n    this.gridster.grid.forEach((widget: GridsterItemComponentInterface) => {\r\n      if (widget.$item.compactEnabled !== false) {\r\n        const moved = this.moveTillCollision(widget.$item, direction, delta);\r\n        if (moved) {\r\n          widgetMoved = true;\r\n          widget.item[direction] = widget.$item[direction];\r\n          widget.itemChanged();\r\n        }\r\n      }\r\n    });\r\n    if (widgetMoved) {\r\n      this.checkCompact();\r\n    }\r\n  }\r\n\r\n  private moveTillCollision(\r\n    item: GridsterItem,\r\n    direction: 'x' | 'y',\r\n    delta: number\r\n  ): boolean {\r\n    item[direction] += delta;\r\n    if (this.gridster.checkCollision(item)) {\r\n      item[direction] -= delta;\r\n      return false;\r\n    } else {\r\n      this.moveTillCollision(item, direction, delta);\r\n      return true;\r\n    }\r\n  }\r\n}\r\n","import {\r\n  CompactType,\r\n  DirTypes,\r\n  DisplayGrid,\r\n  GridsterConfig,\r\n  GridType\r\n} from './gridsterConfig.interface';\r\n\r\nexport const GridsterConfigService: GridsterConfig = {\r\n  gridType: GridType.Fit, // 'fit' will fit the items in the container without scroll;\r\n  scale: 1, // scale param to zoom in/zoom out\r\n  // 'scrollVertical' will fit on width and height of the items will be the same as the width\r\n  // 'scrollHorizontal' will fit on height and width of the items will be the same as the height\r\n  // 'fixed' will set the rows and columns dimensions based on fixedColWidth and fixedRowHeight options\r\n  // 'verticalFixed' will set the rows to fixedRowHeight and columns width will fit the space available\r\n  // 'horizontalFixed' will set the columns to fixedColWidth and rows height will fit the space available\r\n  fixedColWidth: 250, // fixed col width for gridType: 'fixed'\r\n  fixedRowHeight: 250, // fixed row height for gridType: 'fixed'\r\n  keepFixedHeightInMobile: false, // keep the height from fixed gridType in mobile layout\r\n  keepFixedWidthInMobile: false, // keep the width from fixed gridType in mobile layout\r\n  setGridSize: false, // sets grid size depending on content\r\n  compactType: CompactType.None, // compact items: 'none' | 'compactUp' | 'compactLeft' | 'compactUp&Left' | 'compactLeft&Up'\r\n  mobileBreakpoint: 640, // if the screen is not wider that this, remove the grid layout and stack the items\r\n  useBodyForBreakpoint: false, // whether to use the body width to determine the mobile breakpoint. Uses the element width when false.\r\n  allowMultiLayer: false,\r\n  defaultLayerIndex: 0,\r\n  maxLayerIndex: 2,\r\n  baseLayerIndex: 1,\r\n  minCols: 1, // minimum amount of columns in the grid\r\n  maxCols: 100, // maximum amount of columns in the grid\r\n  minRows: 1, // minimum amount of rows in the grid\r\n  maxRows: 100, // maximum amount of rows in the grid\r\n  defaultItemCols: 1, // default width of an item in columns\r\n  defaultItemRows: 1, // default height of an item in rows\r\n  maxItemCols: 50, // max item number of cols\r\n  maxItemRows: 50, // max item number of rows\r\n  minItemCols: 1, // min item number of columns\r\n  minItemRows: 1, // min item number of rows\r\n  minItemArea: 1, // min item area: cols * rows\r\n  maxItemArea: 2500, // max item area: cols * rows\r\n  addEmptyRowsCount: 0, // add a number of extra empty rows at the end\r\n  rowHeightRatio: 1, // row height ratio from column width\r\n  margin: 10, // margin between grid items\r\n  outerMargin: true, // if margins will apply to the sides of the container\r\n  outerMarginTop: null, // override outer margin for grid\r\n  outerMarginRight: null, // override outer margin for grid\r\n  outerMarginBottom: null, // override outer margin for grid\r\n  outerMarginLeft: null, // override outer margin for grid\r\n  useTransformPositioning: true, // toggle between transform or top/left positioning of items\r\n  scrollSensitivity: 10, // margin of the dashboard where to start scrolling\r\n  scrollSpeed: 20, // how much to scroll each mouse move when in the scrollSensitivity zone\r\n  initCallback: undefined, // callback to call after grid has initialized. Arguments: gridsterComponent\r\n  destroyCallback: undefined, // callback to call after grid has destroyed. Arguments: gridsterComponent\r\n  gridSizeChangedCallback: undefined, // callback to call after grid has changed size. Arguments: gridsterComponent\r\n  itemChangeCallback: undefined, // callback to call for each item when is changes x, y, rows, cols.\r\n  // Arguments: gridsterItem, gridsterItemComponent\r\n  itemResizeCallback: undefined, // callback to call for each item when width/height changes.\r\n  // Arguments: gridsterItem, gridsterItemComponent\r\n  itemInitCallback: undefined, // callback to call for each item when is initialized.\r\n  // Arguments: gridsterItem, gridsterItemComponent\r\n  itemRemovedCallback: undefined, // callback to call for each item when is initialized.\r\n  // Arguments: gridsterItem, gridsterItemComponent\r\n  itemValidateCallback: undefined, // callback to call to validate item position/size. Return true if valid.\r\n  // Arguments: gridsterItem\r\n  enableEmptyCellClick: false, // enable empty cell click events\r\n  enableEmptyCellContextMenu: false, // enable empty cell context menu (right click) events\r\n  enableEmptyCellDrop: false, // enable empty cell drop events\r\n  enableEmptyCellDrag: false, // enable empty cell drag events\r\n  enableOccupiedCellDrop: false, // enable occupied cell drop events\r\n  emptyCellClickCallback: undefined, // empty cell click callback\r\n  emptyCellContextMenuCallback: undefined, // empty cell context menu (right click) callback\r\n  emptyCellDropCallback: undefined, // empty cell drag drop callback. HTML5 Drag & Drop\r\n  emptyCellDragCallback: undefined, // empty cell drag and create item like excel cell selection\r\n  emptyCellDragMaxCols: 50, // limit empty cell drag max cols\r\n  emptyCellDragMaxRows: 50, // limit empty cell drag max rows\r\n  // Arguments: event, gridsterItem{x, y, rows: defaultItemRows, cols: defaultItemCols}\r\n  ignoreMarginInRow: false, // ignore the gap between rows for items which span multiple rows (see #162, #224)\r\n  draggable: {\r\n    delayStart: 0, // milliseconds to delay the start of drag, useful for touch interaction\r\n    enabled: false, // enable/disable draggable items\r\n    ignoreContentClass: 'gridster-item-content', // default content class to ignore the drag event from\r\n    ignoreContent: false, // if true drag will start only from elements from `dragHandleClass`\r\n    dragHandleClass: 'drag-handler', // drag event only from this class. If `ignoreContent` is true.\r\n    stop: undefined, // callback when dragging an item stops.  Accepts Promise return to cancel/approve drag.\r\n    start: undefined, // callback when dragging an item starts.\r\n    // Arguments: item, gridsterItem, event\r\n    dropOverItems: false, // enable drop items on top other item\r\n    dropOverItemsCallback: undefined // callback on drop over another item\r\n    // Arguments: source, target, gridComponent\r\n  },\r\n  resizable: {\r\n    delayStart: 0, // milliseconds to delay the start of resize, useful for touch interaction\r\n    enabled: false, // enable/disable resizable items\r\n    handles: {\r\n      s: true,\r\n      e: true,\r\n      n: true,\r\n      w: true,\r\n      se: true,\r\n      ne: true,\r\n      sw: true,\r\n      nw: true\r\n    }, // resizable edges of an item\r\n    stop: undefined, // callback when resizing an item stops. Accepts Promise return to cancel/approve resize.\r\n    start: undefined // callback when resizing an item starts.\r\n    // Arguments: item, gridsterItem, event\r\n  },\r\n  swap: true, // allow items to switch position if drop on top of another\r\n  swapWhileDragging: false, // allow items to switch position while dragging\r\n  pushItems: false, // push items when resizing and dragging\r\n  disablePushOnDrag: false, // disable push on drag\r\n  disablePushOnResize: false, // disable push on resize\r\n  pushDirections: { north: true, east: true, south: true, west: true }, // control the directions items are pushed\r\n  pushResizeItems: false, // on resize of item will shrink adjacent items\r\n  displayGrid: DisplayGrid.OnDragAndResize, // display background grid of rows and columns\r\n  disableWindowResize: false, // disable the window on resize listener. This will stop grid to recalculate on window resize.\r\n  disableWarnings: false, // disable console log warnings about misplacement of grid items\r\n  scrollToNewItems: false, // scroll to new items placed in a scrollable view\r\n  disableScrollHorizontal: false, // disable horizontal scrolling\r\n  disableScrollVertical: false, // disable vertical scrolling\r\n  enableBoundaryControl: false, // enable boundary control while dragging items\r\n  disableAutoPositionOnConflict: false, // disable auto-position of items on conflict state,\r\n  dirType: DirTypes.LTR // page direction, rtl=right to left ltr= left to right, if you use rtl language set dirType to rtl\r\n};\r\n","import { GridsterComponentInterface } from './gridster.interface';\r\n\r\nexport class GridsterUtils {\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  static merge(obj1: any, obj2: any, properties: any): any {\r\n    for (const p in obj2) {\r\n      if (obj2[p] !== void 0 && properties.hasOwnProperty(p)) {\r\n        if (typeof obj2[p] === 'object') {\r\n          obj1[p] = GridsterUtils.merge(obj1[p], obj2[p], properties[p]);\r\n        } else {\r\n          obj1[p] = obj2[p];\r\n        }\r\n      }\r\n    }\r\n\r\n    return obj1;\r\n  }\r\n\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  static checkTouchEvent(e: any): void {\r\n    if (e.clientX === undefined && e.touches) {\r\n      if (e.touches && e.touches.length) {\r\n        e.clientX = e.touches[0].clientX;\r\n        e.clientY = e.touches[0].clientY;\r\n      } else if (e.changedTouches && e.changedTouches.length) {\r\n        e.clientX = e.changedTouches[0].clientX;\r\n        e.clientY = e.changedTouches[0].clientY;\r\n      }\r\n    }\r\n  }\r\n\r\n  static checkContentClassForEvent(\r\n    gridster: GridsterComponentInterface,\r\n    e: MouseEvent\r\n  ): boolean {\r\n    if (gridster.$options.draggable.ignoreContent) {\r\n      if (\r\n        !GridsterUtils.checkDragHandleClass(\r\n          e.target as HTMLElement,\r\n          e.currentTarget as HTMLElement,\r\n          gridster.$options.draggable.dragHandleClass,\r\n          gridster.$options.draggable.ignoreContentClass\r\n        )\r\n      ) {\r\n        return true;\r\n      }\r\n    } else {\r\n      if (\r\n        GridsterUtils.checkContentClass(\r\n          e.target as HTMLElement,\r\n          e.currentTarget as HTMLElement,\r\n          gridster.$options.draggable.ignoreContentClass\r\n        )\r\n      ) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  static checkContentClassForEmptyCellClickEvent(\r\n    gridster: GridsterComponentInterface,\r\n    e: MouseEvent\r\n  ): boolean {\r\n    return (\r\n      GridsterUtils.checkContentClass(\r\n        e.target as HTMLElement,\r\n        e.currentTarget as HTMLElement,\r\n        gridster.$options.draggable.ignoreContentClass\r\n      ) ||\r\n      GridsterUtils.checkContentClass(\r\n        e.target as HTMLElement,\r\n        e.currentTarget as HTMLElement,\r\n        gridster.$options.draggable.dragHandleClass\r\n      )\r\n    );\r\n  }\r\n\r\n  static checkDragHandleClass(\r\n    target: HTMLElement,\r\n    current: HTMLElement,\r\n    dragHandleClass: string,\r\n    ignoreContentClass\r\n  ): boolean {\r\n    if (!target || target === current) {\r\n      return false;\r\n    }\r\n    if (target.hasAttribute('class')) {\r\n      const classnames = target.getAttribute('class')!.split(' ');\r\n      if (classnames.indexOf(dragHandleClass) > -1) {\r\n        return true;\r\n      }\r\n      if (classnames.indexOf(ignoreContentClass) > -1) {\r\n        return false;\r\n      }\r\n    }\r\n    return GridsterUtils.checkDragHandleClass(\r\n      target.parentNode as HTMLElement,\r\n      current,\r\n      dragHandleClass,\r\n      ignoreContentClass\r\n    );\r\n  }\r\n\r\n  static checkContentClass(\r\n    target: HTMLElement,\r\n    current: HTMLElement,\r\n    contentClass: string\r\n  ): boolean {\r\n    if (!target || target === current) {\r\n      return false;\r\n    }\r\n    if (\r\n      target.hasAttribute('class') &&\r\n      target.getAttribute('class')!.split(' ').indexOf(contentClass) > -1\r\n    ) {\r\n      return true;\r\n    } else {\r\n      return GridsterUtils.checkContentClass(\r\n        target.parentNode as HTMLElement,\r\n        current,\r\n        contentClass\r\n      );\r\n    }\r\n  }\r\n\r\n  static compareItems(\r\n    a: { x: number; y: number },\r\n    b: { x: number; y: number }\r\n  ): number {\r\n    if (a.y > b.y) {\r\n      return -1;\r\n    } else if (a.y < b.y) {\r\n      return 1;\r\n    } else if (a.x > b.x) {\r\n      return -1;\r\n    } else {\r\n      return 1;\r\n    }\r\n  }\r\n}\r\n","import { GridsterUtils } from './gridsterUtils.service';\r\nimport { GridsterComponentInterface } from './gridster.interface';\r\nimport { GridsterItem } from './gridsterItem.interface';\r\n\r\nexport class GridsterEmptyCell {\r\n  initialItem: GridsterItem | null;\r\n  removeEmptyCellClickListenerFn: (() => void) | null;\r\n  removeEmptyCellTouchendListenerFn: (() => void) | null;\r\n  removeEmptyCellContextMenuListenerFn: (() => void) | null;\r\n  removeEmptyCellDropListenerFn: (() => void) | null;\r\n  removeEmptyCellMousedownListenerFn: (() => void) | null;\r\n  removeEmptyCellTouchstartListenerFn: (() => void) | null;\r\n  removeWindowMousemoveListenerFn: () => void;\r\n  removeWindowTouchmoveListenerFn: () => void;\r\n  removeWindowMouseupListenerFn: () => void;\r\n  removeWindowTouchendListenerFn: () => void;\r\n  removeEmptyCellDragoverListenerFn: (() => void) | null;\r\n  removeDocumentDragendListenerFn: (() => void) | null;\r\n\r\n  constructor(private gridster: GridsterComponentInterface) {}\r\n\r\n  destroy(): void {\r\n    if (this.gridster.previewStyle) {\r\n      this.gridster.previewStyle();\r\n    }\r\n    this.gridster.movingItem = null;\r\n    this.initialItem = this.gridster = null!;\r\n    if (this.removeDocumentDragendListenerFn) {\r\n      this.removeDocumentDragendListenerFn();\r\n      this.removeDocumentDragendListenerFn = null;\r\n    }\r\n  }\r\n\r\n  updateOptions(): void {\r\n    if (\r\n      this.gridster.$options.enableEmptyCellClick &&\r\n      !this.removeEmptyCellClickListenerFn &&\r\n      this.gridster.options.emptyCellClickCallback\r\n    ) {\r\n      this.removeEmptyCellClickListenerFn = this.gridster.renderer.listen(\r\n        this.gridster.el,\r\n        'click',\r\n        this.emptyCellClickCb\r\n      );\r\n      this.removeEmptyCellTouchendListenerFn = this.gridster.renderer.listen(\r\n        this.gridster.el,\r\n        'touchend',\r\n        this.emptyCellClickCb\r\n      );\r\n    } else if (\r\n      !this.gridster.$options.enableEmptyCellClick &&\r\n      this.removeEmptyCellClickListenerFn &&\r\n      this.removeEmptyCellTouchendListenerFn\r\n    ) {\r\n      this.removeEmptyCellClickListenerFn();\r\n      this.removeEmptyCellTouchendListenerFn();\r\n      this.removeEmptyCellClickListenerFn = null;\r\n      this.removeEmptyCellTouchendListenerFn = null;\r\n    }\r\n    if (\r\n      this.gridster.$options.enableEmptyCellContextMenu &&\r\n      !this.removeEmptyCellContextMenuListenerFn &&\r\n      this.gridster.options.emptyCellContextMenuCallback\r\n    ) {\r\n      this.removeEmptyCellContextMenuListenerFn = this.gridster.renderer.listen(\r\n        this.gridster.el,\r\n        'contextmenu',\r\n        this.emptyCellContextMenuCb\r\n      );\r\n    } else if (\r\n      !this.gridster.$options.enableEmptyCellContextMenu &&\r\n      this.removeEmptyCellContextMenuListenerFn\r\n    ) {\r\n      this.removeEmptyCellContextMenuListenerFn();\r\n      this.removeEmptyCellContextMenuListenerFn = null;\r\n    }\r\n    if (\r\n      this.gridster.$options.enableEmptyCellDrop &&\r\n      !this.removeEmptyCellDropListenerFn &&\r\n      this.gridster.options.emptyCellDropCallback\r\n    ) {\r\n      this.removeEmptyCellDropListenerFn = this.gridster.renderer.listen(\r\n        this.gridster.el,\r\n        'drop',\r\n        this.emptyCellDragDrop\r\n      );\r\n      this.gridster.zone.runOutsideAngular(() => {\r\n        this.removeEmptyCellDragoverListenerFn = this.gridster.renderer.listen(\r\n          this.gridster.el,\r\n          'dragover',\r\n          this.emptyCellDragOver\r\n        );\r\n      });\r\n      this.removeDocumentDragendListenerFn = this.gridster.renderer.listen(\r\n        'document',\r\n        'dragend',\r\n        () => {\r\n          this.gridster.movingItem = null;\r\n          this.gridster.previewStyle();\r\n        }\r\n      );\r\n    } else if (\r\n      !this.gridster.$options.enableEmptyCellDrop &&\r\n      this.removeEmptyCellDropListenerFn &&\r\n      this.removeEmptyCellDragoverListenerFn &&\r\n      this.removeDocumentDragendListenerFn\r\n    ) {\r\n      this.removeEmptyCellDropListenerFn();\r\n      this.removeEmptyCellDragoverListenerFn();\r\n      this.removeDocumentDragendListenerFn();\r\n      this.removeEmptyCellDragoverListenerFn = null;\r\n      this.removeEmptyCellDropListenerFn = null;\r\n      this.removeDocumentDragendListenerFn = null;\r\n    }\r\n    if (\r\n      this.gridster.$options.enableEmptyCellDrag &&\r\n      !this.removeEmptyCellMousedownListenerFn &&\r\n      this.gridster.options.emptyCellDragCallback\r\n    ) {\r\n      this.removeEmptyCellMousedownListenerFn = this.gridster.renderer.listen(\r\n        this.gridster.el,\r\n        'mousedown',\r\n        this.emptyCellMouseDown\r\n      );\r\n      this.removeEmptyCellTouchstartListenerFn = this.gridster.renderer.listen(\r\n        this.gridster.el,\r\n        'touchstart',\r\n        this.emptyCellMouseDown\r\n      );\r\n    } else if (\r\n      !this.gridster.$options.enableEmptyCellDrag &&\r\n      this.removeEmptyCellMousedownListenerFn &&\r\n      this.removeEmptyCellTouchstartListenerFn\r\n    ) {\r\n      this.removeEmptyCellMousedownListenerFn();\r\n      this.removeEmptyCellTouchstartListenerFn();\r\n      this.removeEmptyCellMousedownListenerFn = null;\r\n      this.removeEmptyCellTouchstartListenerFn = null;\r\n    }\r\n  }\r\n\r\n  emptyCellClickCb = (e: MouseEvent): void => {\r\n    if (\r\n      !this.gridster ||\r\n      this.gridster.movingItem ||\r\n      GridsterUtils.checkContentClassForEmptyCellClickEvent(this.gridster, e)\r\n    ) {\r\n      return;\r\n    }\r\n    const item = this.getValidItemFromEvent(e);\r\n    if (!item) {\r\n      return;\r\n    }\r\n    if (this.gridster.options.emptyCellClickCallback) {\r\n      this.gridster.options.emptyCellClickCallback(e, item);\r\n    }\r\n    this.gridster.cdRef.markForCheck();\r\n  };\r\n\r\n  emptyCellContextMenuCb = (e: MouseEvent): void => {\r\n    if (\r\n      this.gridster.movingItem ||\r\n      GridsterUtils.checkContentClassForEmptyCellClickEvent(this.gridster, e)\r\n    ) {\r\n      return;\r\n    }\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n    const item = this.getValidItemFromEvent(e);\r\n    if (!item) {\r\n      return;\r\n    }\r\n    if (this.gridster.options.emptyCellContextMenuCallback) {\r\n      this.gridster.options.emptyCellContextMenuCallback(e, item);\r\n    }\r\n    this.gridster.cdRef.markForCheck();\r\n  };\r\n\r\n  emptyCellDragDrop = (e: DragEvent): void => {\r\n    const item = this.getValidItemFromEvent(e);\r\n    if (!item) {\r\n      return;\r\n    }\r\n    if (this.gridster.options.emptyCellDropCallback) {\r\n      this.gridster.options.emptyCellDropCallback(e, item);\r\n    }\r\n    this.gridster.cdRef.markForCheck();\r\n  };\r\n\r\n  emptyCellDragOver = (e: DragEvent): void => {\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n    const item = this.getValidItemFromEvent(e);\r\n    if (item) {\r\n      if (e.dataTransfer) {\r\n        e.dataTransfer.dropEffect = 'move';\r\n      }\r\n      this.gridster.movingItem = item;\r\n    } else {\r\n      if (e.dataTransfer) {\r\n        e.dataTransfer.dropEffect = 'none';\r\n      }\r\n      this.gridster.movingItem = null;\r\n    }\r\n    this.gridster.previewStyle();\r\n  };\r\n\r\n  emptyCellMouseDown = (e: MouseEvent): void => {\r\n    if (\r\n      GridsterUtils.checkContentClassForEmptyCellClickEvent(this.gridster, e)\r\n    ) {\r\n      return;\r\n    }\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n    const item = this.getValidItemFromEvent(e);\r\n    const leftMouseButtonCode = 1;\r\n    if (\r\n      !item ||\r\n      (e.buttons !== leftMouseButtonCode && !(e instanceof TouchEvent))\r\n    ) {\r\n      return;\r\n    }\r\n    this.initialItem = item;\r\n    this.gridster.movingItem = item;\r\n    this.gridster.previewStyle();\r\n    this.gridster.zone.runOutsideAngular(() => {\r\n      this.removeWindowMousemoveListenerFn = this.gridster.renderer.listen(\r\n        'window',\r\n        'mousemove',\r\n        this.emptyCellMouseMove\r\n      );\r\n      this.removeWindowTouchmoveListenerFn = this.gridster.renderer.listen(\r\n        'window',\r\n        'touchmove',\r\n        this.emptyCellMouseMove\r\n      );\r\n    });\r\n    this.removeWindowMouseupListenerFn = this.gridster.renderer.listen(\r\n      'window',\r\n      'mouseup',\r\n      this.emptyCellMouseUp\r\n    );\r\n    this.removeWindowTouchendListenerFn = this.gridster.renderer.listen(\r\n      'window',\r\n      'touchend',\r\n      this.emptyCellMouseUp\r\n    );\r\n  };\r\n\r\n  emptyCellMouseMove = (e: MouseEvent): void => {\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n    const item = this.getValidItemFromEvent(e, this.initialItem);\r\n    if (!item) {\r\n      return;\r\n    }\r\n\r\n    this.gridster.movingItem = item;\r\n    this.gridster.previewStyle();\r\n  };\r\n\r\n  emptyCellMouseUp = (e: MouseEvent): void => {\r\n    this.removeWindowMousemoveListenerFn();\r\n    this.removeWindowTouchmoveListenerFn();\r\n    this.removeWindowMouseupListenerFn();\r\n    this.removeWindowTouchendListenerFn();\r\n    const item = this.getValidItemFromEvent(e, this.initialItem);\r\n    if (item) {\r\n      this.gridster.movingItem = item;\r\n    }\r\n    if (\r\n      this.gridster.options.emptyCellDragCallback &&\r\n      this.gridster.movingItem\r\n    ) {\r\n      this.gridster.options.emptyCellDragCallback(e, this.gridster.movingItem);\r\n    }\r\n    setTimeout(() => {\r\n      this.initialItem = null;\r\n      if (this.gridster) {\r\n        this.gridster.movingItem = null;\r\n        this.gridster.previewStyle();\r\n      }\r\n    });\r\n    this.gridster.cdRef.markForCheck();\r\n  };\r\n\r\n  getPixelsX(e: MouseEvent, rect: ClientRect): number {\r\n    const scale = this.gridster.options.scale;\r\n    if (scale) {\r\n      return (\r\n        (e.clientX - rect.left) / scale +\r\n        this.gridster.el.scrollLeft -\r\n        this.gridster.gridRenderer.getLeftMargin()\r\n      );\r\n    }\r\n    return (\r\n      e.clientX +\r\n      this.gridster.el.scrollLeft -\r\n      rect.left -\r\n      this.gridster.gridRenderer.getLeftMargin()\r\n    );\r\n  }\r\n\r\n  getPixelsY(e: MouseEvent, rect: ClientRect): number {\r\n    const scale = this.gridster.options.scale;\r\n    if (scale) {\r\n      return (\r\n        (e.clientY - rect.top) / scale +\r\n        this.gridster.el.scrollTop -\r\n        this.gridster.gridRenderer.getTopMargin()\r\n      );\r\n    }\r\n    return (\r\n      e.clientY +\r\n      this.gridster.el.scrollTop -\r\n      rect.top -\r\n      this.gridster.gridRenderer.getTopMargin()\r\n    );\r\n  }\r\n\r\n  getValidItemFromEvent(\r\n    e: MouseEvent,\r\n    oldItem?: GridsterItem | null\r\n  ): GridsterItem | undefined {\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n    GridsterUtils.checkTouchEvent(e);\r\n    const rect = this.gridster.el.getBoundingClientRect();\r\n    const x = this.getPixelsX(e, rect);\r\n    const y = this.getPixelsY(e, rect);\r\n    const item: GridsterItem = {\r\n      x: this.gridster.pixelsToPositionX(x, Math.floor, true),\r\n      y: this.gridster.pixelsToPositionY(y, Math.floor, true),\r\n      cols: this.gridster.$options.defaultItemCols,\r\n      rows: this.gridster.$options.defaultItemRows\r\n    };\r\n    if (oldItem) {\r\n      item.cols = Math.min(\r\n        Math.abs(oldItem.x - item.x) + 1,\r\n        this.gridster.$options.emptyCellDragMaxCols\r\n      );\r\n      item.rows = Math.min(\r\n        Math.abs(oldItem.y - item.y) + 1,\r\n        this.gridster.$options.emptyCellDragMaxRows\r\n      );\r\n      if (oldItem.x < item.x) {\r\n        item.x = oldItem.x;\r\n      } else if (\r\n        oldItem.x - item.x >\r\n        this.gridster.$options.emptyCellDragMaxCols - 1\r\n      ) {\r\n        item.x = this.gridster.movingItem ? this.gridster.movingItem.x : 0;\r\n      }\r\n      if (oldItem.y < item.y) {\r\n        item.y = oldItem.y;\r\n      } else if (\r\n        oldItem.y - item.y >\r\n        this.gridster.$options.emptyCellDragMaxRows - 1\r\n      ) {\r\n        item.y = this.gridster.movingItem ? this.gridster.movingItem.y : 0;\r\n      }\r\n    }\r\n    if (\r\n      !this.gridster.$options.enableOccupiedCellDrop &&\r\n      this.gridster.checkCollision(item)\r\n    ) {\r\n      return undefined;\r\n    }\r\n    return item;\r\n  }\r\n}\r\n","import { Renderer2 } from '@angular/core';\r\n\r\nimport { GridsterComponentInterface } from './gridster.interface';\r\nimport { DirTypes, GridType } from './gridsterConfig.interface';\r\nimport { GridsterItem } from './gridsterItem.interface';\r\n\r\nexport class GridsterRenderer {\r\n  constructor(private gridster: GridsterComponentInterface) {}\r\n\r\n  destroy(): void {\r\n    this.gridster = null!;\r\n  }\r\n\r\n  updateItem(el: Element, item: GridsterItem, renderer: Renderer2): void {\r\n    if (this.gridster.mobile) {\r\n      this.clearCellPosition(renderer, el);\r\n      if (this.gridster.$options.keepFixedHeightInMobile) {\r\n        renderer.setStyle(\r\n          el,\r\n          'height',\r\n          (item.rows - 1) * this.gridster.$options.margin +\r\n            item.rows * this.gridster.$options.fixedRowHeight +\r\n            'px'\r\n        );\r\n      } else {\r\n        renderer.setStyle(\r\n          el,\r\n          'height',\r\n          (item.rows * this.gridster.curWidth) / item.cols + 'px'\r\n        );\r\n      }\r\n      if (this.gridster.$options.keepFixedWidthInMobile) {\r\n        renderer.setStyle(\r\n          el,\r\n          'width',\r\n          this.gridster.$options.fixedColWidth + 'px'\r\n        );\r\n      } else {\r\n        renderer.setStyle(el, 'width', '');\r\n      }\r\n\r\n      renderer.setStyle(\r\n        el,\r\n        'margin-bottom',\r\n        this.gridster.$options.margin + 'px'\r\n      );\r\n      renderer.setStyle(el, DirTypes.LTR ? 'margin-right' : 'margin-left', '');\r\n    } else {\r\n      const x = Math.round(this.gridster.curColWidth * item.x);\r\n      const y = Math.round(this.gridster.curRowHeight * item.y);\r\n      const width =\r\n        this.gridster.curColWidth * item.cols - this.gridster.$options.margin;\r\n      const height =\r\n        this.gridster.curRowHeight * item.rows - this.gridster.$options.margin;\r\n      // set the cell style\r\n      this.setCellPosition(renderer, el, x, y);\r\n      renderer.setStyle(el, 'width', width + 'px');\r\n      renderer.setStyle(el, 'height', height + 'px');\r\n      let marginBottom: string | null = null;\r\n      let marginRight: string | null = null;\r\n      if (this.gridster.$options.outerMargin) {\r\n        if (this.gridster.rows === item.rows + item.y) {\r\n          if (this.gridster.$options.outerMarginBottom !== null) {\r\n            marginBottom = this.gridster.$options.outerMarginBottom + 'px';\r\n          } else {\r\n            marginBottom = this.gridster.$options.margin + 'px';\r\n          }\r\n        }\r\n        if (this.gridster.columns === item.cols + item.x) {\r\n          if (this.gridster.$options.outerMarginBottom !== null) {\r\n            marginRight = this.gridster.$options.outerMarginRight + 'px';\r\n          } else {\r\n            marginRight = this.gridster.$options.margin + 'px';\r\n          }\r\n        }\r\n      }\r\n\r\n      renderer.setStyle(el, 'margin-bottom', marginBottom);\r\n      renderer.setStyle(\r\n        el,\r\n        DirTypes.LTR ? 'margin-right' : 'margin-left',\r\n        marginRight\r\n      );\r\n    }\r\n  }\r\n\r\n  updateGridster(): void {\r\n    let addClass = '';\r\n    let removeClass1 = '';\r\n    let removeClass2 = '';\r\n    let removeClass3 = '';\r\n    if (this.gridster.$options.gridType === GridType.Fit) {\r\n      addClass = GridType.Fit;\r\n      removeClass1 = GridType.ScrollVertical;\r\n      removeClass2 = GridType.ScrollHorizontal;\r\n      removeClass3 = GridType.Fixed;\r\n    } else if (this.gridster.$options.gridType === GridType.ScrollVertical) {\r\n      this.gridster.curRowHeight =\r\n        this.gridster.curColWidth * this.gridster.$options.rowHeightRatio;\r\n      addClass = GridType.ScrollVertical;\r\n      removeClass1 = GridType.Fit;\r\n      removeClass2 = GridType.ScrollHorizontal;\r\n      removeClass3 = GridType.Fixed;\r\n    } else if (this.gridster.$options.gridType === GridType.ScrollHorizontal) {\r\n      const widthRatio = this.gridster.$options.rowHeightRatio;\r\n      const calWidthRatio = widthRatio >= 1 ? widthRatio : widthRatio + 1;\r\n      this.gridster.curColWidth = this.gridster.curRowHeight * calWidthRatio;\r\n      addClass = GridType.ScrollHorizontal;\r\n      removeClass1 = GridType.Fit;\r\n      removeClass2 = GridType.ScrollVertical;\r\n      removeClass3 = GridType.Fixed;\r\n    } else if (this.gridster.$options.gridType === GridType.Fixed) {\r\n      this.gridster.curColWidth =\r\n        this.gridster.$options.fixedColWidth +\r\n        (this.gridster.$options.ignoreMarginInRow\r\n          ? 0\r\n          : this.gridster.$options.margin);\r\n      this.gridster.curRowHeight =\r\n        this.gridster.$options.fixedRowHeight +\r\n        (this.gridster.$options.ignoreMarginInRow\r\n          ? 0\r\n          : this.gridster.$options.margin);\r\n      addClass = GridType.Fixed;\r\n      removeClass1 = GridType.Fit;\r\n      removeClass2 = GridType.ScrollVertical;\r\n      removeClass3 = GridType.ScrollHorizontal;\r\n    } else if (this.gridster.$options.gridType === GridType.VerticalFixed) {\r\n      this.gridster.curRowHeight =\r\n        this.gridster.$options.fixedRowHeight +\r\n        (this.gridster.$options.ignoreMarginInRow\r\n          ? 0\r\n          : this.gridster.$options.margin);\r\n      addClass = GridType.ScrollVertical;\r\n      removeClass1 = GridType.Fit;\r\n      removeClass2 = GridType.ScrollHorizontal;\r\n      removeClass3 = GridType.Fixed;\r\n    } else if (this.gridster.$options.gridType === GridType.HorizontalFixed) {\r\n      this.gridster.curColWidth =\r\n        this.gridster.$options.fixedColWidth +\r\n        (this.gridster.$options.ignoreMarginInRow\r\n          ? 0\r\n          : this.gridster.$options.margin);\r\n      addClass = GridType.ScrollHorizontal;\r\n      removeClass1 = GridType.Fit;\r\n      removeClass2 = GridType.ScrollVertical;\r\n      removeClass3 = GridType.Fixed;\r\n    }\r\n\r\n    if (\r\n      this.gridster.mobile ||\r\n      (this.gridster.$options.setGridSize &&\r\n        this.gridster.$options.gridType !== GridType.Fit)\r\n    ) {\r\n      this.gridster.renderer.removeClass(this.gridster.el, addClass);\r\n    } else {\r\n      this.gridster.renderer.addClass(this.gridster.el, addClass);\r\n    }\r\n    this.gridster.renderer.removeClass(this.gridster.el, removeClass1);\r\n    this.gridster.renderer.removeClass(this.gridster.el, removeClass2);\r\n    this.gridster.renderer.removeClass(this.gridster.el, removeClass3);\r\n  }\r\n\r\n  getGridColumnStyle(i: number): { [key: string]: string } {\r\n    return {\r\n      ...this.getLeftPosition(this.gridster.curColWidth * i),\r\n      width: this.gridster.curColWidth - this.gridster.$options.margin + 'px',\r\n      height:\r\n        this.gridster.gridRows.length * this.gridster.curRowHeight -\r\n        this.gridster.$options.margin +\r\n        'px'\r\n    };\r\n  }\r\n\r\n  getGridRowStyle(i: number): { [key: string]: string } {\r\n    return {\r\n      ...this.getTopPosition(this.gridster.curRowHeight * i),\r\n      width:\r\n        this.gridster.gridColumns.length * this.gridster.curColWidth -\r\n        this.gridster.$options.margin +\r\n        'px',\r\n      height: this.gridster.curRowHeight - this.gridster.$options.margin + 'px'\r\n    };\r\n  }\r\n\r\n  getLeftPosition(d: number): { left: string } | { transform: string } {\r\n    const dPosition = this.gridster.$options.dirType === DirTypes.RTL ? -d : d;\r\n    if (this.gridster.$options.useTransformPositioning) {\r\n      return {\r\n        transform: 'translateX(' + dPosition + 'px)'\r\n      };\r\n    } else {\r\n      return {\r\n        left: this.getLeftMargin() + dPosition + 'px'\r\n      };\r\n    }\r\n  }\r\n\r\n  getTopPosition(d: number): { top: string } | { transform: string } {\r\n    if (this.gridster.$options.useTransformPositioning) {\r\n      return {\r\n        transform: 'translateY(' + d + 'px)'\r\n      };\r\n    } else {\r\n      return {\r\n        top: this.getTopMargin() + d + 'px'\r\n      };\r\n    }\r\n  }\r\n\r\n  clearCellPosition(renderer: Renderer2, el: Element): void {\r\n    if (this.gridster.$options.useTransformPositioning) {\r\n      renderer.setStyle(el, 'transform', '');\r\n    } else {\r\n      renderer.setStyle(el, 'top', '');\r\n      renderer.setStyle(el, 'left', '');\r\n    }\r\n  }\r\n\r\n  setCellPosition(\r\n    renderer: Renderer2,\r\n    el: Element,\r\n    x: number,\r\n    y: number\r\n  ): void {\r\n    const xPosition = this.gridster.$options.dirType === DirTypes.RTL ? -x : x;\r\n    if (this.gridster.$options.useTransformPositioning) {\r\n      const transform = 'translate3d(' + xPosition + 'px, ' + y + 'px, 0)';\r\n      renderer.setStyle(el, 'transform', transform);\r\n    } else {\r\n      renderer.setStyle(el, 'left', this.getLeftMargin() + xPosition + 'px');\r\n      renderer.setStyle(el, 'top', this.getTopMargin() + y + 'px');\r\n    }\r\n  }\r\n\r\n  getLeftMargin(): number {\r\n    if (this.gridster.$options.outerMargin) {\r\n      if (this.gridster.$options.outerMarginLeft !== null) {\r\n        return this.gridster.$options.outerMarginLeft;\r\n      } else {\r\n        return this.gridster.$options.margin;\r\n      }\r\n    } else {\r\n      return 0;\r\n    }\r\n  }\r\n\r\n  getTopMargin(): number {\r\n    if (this.gridster.$options.outerMargin) {\r\n      if (this.gridster.$options.outerMarginTop !== null) {\r\n        return this.gridster.$options.outerMarginTop;\r\n      } else {\r\n        return this.gridster.$options.margin;\r\n      }\r\n    } else {\r\n      return 0;\r\n    }\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { GridsterRenderer } from './gridsterRenderer.service';\r\nimport { GridsterItem } from './gridsterItem.interface';\r\n\r\n@Component({\r\n  selector: 'gridster-preview',\r\n  template: '',\r\n  styleUrls: ['./gridsterPreview.scss'],\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class GridsterPreviewComponent implements OnInit, OnDestroy {\r\n  @Input() previewStyle$: EventEmitter<GridsterItem | null>;\r\n  @Input() gridRenderer: GridsterRenderer;\r\n  private el: HTMLElement;\r\n  private sub: Subscription;\r\n\r\n  constructor(el: ElementRef, private renderer: Renderer2) {\r\n    this.el = el.nativeElement;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.sub = this.previewStyle$.subscribe(options =>\r\n      this.previewStyle(options)\r\n    );\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.sub.unsubscribe();\r\n  }\r\n\r\n  private previewStyle(item: GridsterItem | null): void {\r\n    if (item) {\r\n      this.renderer.setStyle(this.el, 'display', 'block');\r\n      this.gridRenderer.updateItem(this.el, item, this.renderer);\r\n    } else {\r\n      this.renderer.setStyle(this.el, 'display', '');\r\n    }\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subject, timer } from 'rxjs';\r\nimport { debounceTime, takeUntil, switchMap } from 'rxjs/operators';\r\nimport { GridsterComponentInterface } from './gridster.interface';\r\nimport { GridsterCompact } from './gridsterCompact.service';\r\n\r\nimport { GridsterConfigService } from './gridsterConfig.constant';\r\nimport { GridsterConfig, GridType } from './gridsterConfig.interface';\r\nimport { GridsterConfigS } from './gridsterConfigS.interface';\r\nimport { GridsterEmptyCell } from './gridsterEmptyCell.service';\r\nimport {\r\n  GridsterItem,\r\n  GridsterItemComponentInterface\r\n} from './gridsterItem.interface';\r\nimport { GridsterRenderer } from './gridsterRenderer.service';\r\nimport { GridsterUtils } from './gridsterUtils.service';\r\n\r\n@Component({\r\n  // eslint-disable-next-line @angular-eslint/component-selector\r\n  selector: 'gridster',\r\n  templateUrl: './gridster.html',\r\n  styleUrls: ['./gridster.scss'],\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class GridsterComponent\r\n  implements OnInit, OnChanges, OnDestroy, GridsterComponentInterface\r\n{\r\n  @Input() options: GridsterConfig;\r\n  movingItem: GridsterItem | null;\r\n  el: HTMLElement;\r\n  $options: GridsterConfigS;\r\n  mobile: boolean;\r\n  curWidth: number;\r\n  curHeight: number;\r\n  grid: GridsterItemComponentInterface[];\r\n  columns = 0;\r\n  rows = 0;\r\n  curColWidth: number;\r\n  curRowHeight: number;\r\n  gridColumns = [];\r\n  gridRows = [];\r\n  windowResize: (() => void) | null;\r\n  dragInProgress: boolean;\r\n  emptyCell: GridsterEmptyCell;\r\n  compact: GridsterCompact;\r\n  gridRenderer: GridsterRenderer;\r\n  previewStyle$: EventEmitter<GridsterItem | null> =\r\n    new EventEmitter<GridsterItem | null>();\r\n\r\n  calculateLayout$ = new Subject<void>();\r\n\r\n  private resize$ = new Subject<void>();\r\n  private destroy$ = new Subject<void>();\r\n\r\n  constructor(\r\n    @Inject(ElementRef) el: ElementRef,\r\n    @Inject(Renderer2) public renderer: Renderer2,\r\n    @Inject(ChangeDetectorRef) public cdRef: ChangeDetectorRef,\r\n    @Inject(NgZone) public zone: NgZone\r\n  ) {\r\n    this.el = el.nativeElement;\r\n    this.$options = JSON.parse(JSON.stringify(GridsterConfigService));\r\n    this.mobile = false;\r\n    this.curWidth = 0;\r\n    this.curHeight = 0;\r\n    this.grid = [];\r\n    this.curColWidth = 0;\r\n    this.curRowHeight = 0;\r\n    this.dragInProgress = false;\r\n    this.emptyCell = new GridsterEmptyCell(this);\r\n    this.compact = new GridsterCompact(this);\r\n    this.gridRenderer = new GridsterRenderer(this);\r\n  }\r\n\r\n  // ------ Function for swapWhileDragging option\r\n\r\n  // identical to checkCollision() except that here we add boundaries.\r\n  static checkCollisionTwoItemsForSwaping(\r\n    item: GridsterItem,\r\n    item2: GridsterItem\r\n  ): boolean {\r\n    // if the cols or rows of the items are 1 , doesnt make any sense to set a boundary. Only if the item is bigger we set a boundary\r\n    const horizontalBoundaryItem1 = item.cols === 1 ? 0 : 1;\r\n    const horizontalBoundaryItem2 = item2.cols === 1 ? 0 : 1;\r\n    const verticalBoundaryItem1 = item.rows === 1 ? 0 : 1;\r\n    const verticalBoundaryItem2 = item2.rows === 1 ? 0 : 1;\r\n    return (\r\n      item.x + horizontalBoundaryItem1 < item2.x + item2.cols &&\r\n      item.x + item.cols > item2.x + horizontalBoundaryItem2 &&\r\n      item.y + verticalBoundaryItem1 < item2.y + item2.rows &&\r\n      item.y + item.rows > item2.y + verticalBoundaryItem2\r\n    );\r\n  }\r\n\r\n  checkCollisionTwoItems(item: GridsterItem, item2: GridsterItem): boolean {\r\n    const collision =\r\n      item.x < item2.x + item2.cols &&\r\n      item.x + item.cols > item2.x &&\r\n      item.y < item2.y + item2.rows &&\r\n      item.y + item.rows > item2.y;\r\n    if (!collision) {\r\n      return false;\r\n    }\r\n    if (!this.$options.allowMultiLayer) {\r\n      return true;\r\n    }\r\n    const defaultLayerIndex = this.$options.defaultLayerIndex;\r\n    const layerIndex =\r\n      item.layerIndex === undefined ? defaultLayerIndex : item.layerIndex;\r\n    const layerIndex2 =\r\n      item2.layerIndex === undefined ? defaultLayerIndex : item2.layerIndex;\r\n    return layerIndex === layerIndex2;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.options.initCallback) {\r\n      this.options.initCallback(this);\r\n    }\r\n\r\n    this.calculateLayout$\r\n      .pipe(debounceTime(0), takeUntil(this.destroy$))\r\n      .subscribe(() => this.calculateLayout());\r\n\r\n    this.resize$\r\n      .pipe(\r\n        // Cancel previously scheduled DOM timer if `calculateLayout()` has been called\r\n        // within this time range.\r\n        switchMap(() => timer(100)),\r\n        takeUntil(this.destroy$)\r\n      )\r\n      .subscribe(() => this.resize());\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.options) {\r\n      this.setOptions();\r\n      this.options.api = {\r\n        optionsChanged: this.optionsChanged,\r\n        resize: this.onResize,\r\n        getNextPossiblePosition: this.getNextPossiblePosition,\r\n        getFirstPossiblePosition: this.getFirstPossiblePosition,\r\n        getLastPossiblePosition: this.getLastPossiblePosition,\r\n        getItemComponent: (item: GridsterItem) => this.getItemComponent(item)\r\n      };\r\n      this.columns = this.$options.minCols;\r\n      this.rows = this.$options.minRows + this.$options.addEmptyRowsCount;\r\n      this.setGridSize();\r\n      this.calculateLayout();\r\n    }\r\n  }\r\n\r\n  private resize(): void {\r\n    let height;\r\n    let width;\r\n    if (this.$options.gridType === 'fit' && !this.mobile) {\r\n      width = this.el.offsetWidth;\r\n      height = this.el.offsetHeight;\r\n    } else {\r\n      width = this.el.clientWidth;\r\n      height = this.el.clientHeight;\r\n    }\r\n    if (\r\n      (width !== this.curWidth || height !== this.curHeight) &&\r\n      this.checkIfToResize()\r\n    ) {\r\n      this.onResize();\r\n    }\r\n  }\r\n\r\n  setOptions(): void {\r\n    this.$options = GridsterUtils.merge(\r\n      this.$options,\r\n      this.options,\r\n      this.$options\r\n    );\r\n    if (!this.$options.disableWindowResize && !this.windowResize) {\r\n      this.windowResize = this.renderer.listen(\r\n        'window',\r\n        'resize',\r\n        this.onResize\r\n      );\r\n    } else if (this.$options.disableWindowResize && this.windowResize) {\r\n      this.windowResize();\r\n      this.windowResize = null;\r\n    }\r\n    this.emptyCell.updateOptions();\r\n  }\r\n\r\n  optionsChanged = (): void => {\r\n    this.setOptions();\r\n    let widgetsIndex: number = this.grid.length - 1;\r\n    let widget: GridsterItemComponentInterface;\r\n    for (; widgetsIndex >= 0; widgetsIndex--) {\r\n      widget = this.grid[widgetsIndex];\r\n      widget.updateOptions();\r\n    }\r\n    this.calculateLayout();\r\n  };\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.previewStyle$.complete();\r\n    if (this.windowResize) {\r\n      this.windowResize();\r\n    }\r\n    if (this.options && this.options.destroyCallback) {\r\n      this.options.destroyCallback(this);\r\n    }\r\n    if (this.options && this.options.api) {\r\n      this.options.api.resize = undefined;\r\n      this.options.api.optionsChanged = undefined;\r\n      this.options.api.getNextPossiblePosition = undefined;\r\n      this.options.api = undefined;\r\n    }\r\n    this.emptyCell.destroy();\r\n    this.emptyCell = null!;\r\n    this.compact.destroy();\r\n    this.compact = null!;\r\n  }\r\n\r\n  onResize = (): void => {\r\n    if (this.el.clientWidth) {\r\n      if (this.options.setGridSize) {\r\n        // reset width/height so the size is recalculated afterwards\r\n        this.renderer.setStyle(this.el, 'width', '');\r\n        this.renderer.setStyle(this.el, 'height', '');\r\n      }\r\n      this.setGridSize();\r\n      this.calculateLayout();\r\n    }\r\n  };\r\n\r\n  checkIfToResize(): boolean {\r\n    const clientWidth = this.el.clientWidth;\r\n    const offsetWidth = this.el.offsetWidth;\r\n    const scrollWidth = this.el.scrollWidth;\r\n    const clientHeight = this.el.clientHeight;\r\n    const offsetHeight = this.el.offsetHeight;\r\n    const scrollHeight = this.el.scrollHeight;\r\n    const verticalScrollPresent =\r\n      clientWidth < offsetWidth &&\r\n      scrollHeight > offsetHeight &&\r\n      scrollHeight - offsetHeight < offsetWidth - clientWidth;\r\n    const horizontalScrollPresent =\r\n      clientHeight < offsetHeight &&\r\n      scrollWidth > offsetWidth &&\r\n      scrollWidth - offsetWidth < offsetHeight - clientHeight;\r\n    if (verticalScrollPresent) {\r\n      return false;\r\n    }\r\n    return !horizontalScrollPresent;\r\n  }\r\n\r\n  checkIfMobile(): boolean {\r\n    if (this.$options.useBodyForBreakpoint) {\r\n      return this.$options.mobileBreakpoint > document.body.clientWidth;\r\n    } else {\r\n      return this.$options.mobileBreakpoint > this.curWidth;\r\n    }\r\n  }\r\n\r\n  setGridSize(): void {\r\n    const el = this.el;\r\n    let width;\r\n    let height;\r\n    if (\r\n      this.$options.setGridSize ||\r\n      (this.$options.gridType === GridType.Fit && !this.mobile)\r\n    ) {\r\n      width = el.offsetWidth;\r\n      height = el.offsetHeight;\r\n    } else {\r\n      width = el.clientWidth;\r\n      height = el.clientHeight;\r\n    }\r\n    this.curWidth = width;\r\n    this.curHeight = height;\r\n  }\r\n\r\n  setGridDimensions(): void {\r\n    this.setGridSize();\r\n    if (!this.mobile && this.checkIfMobile()) {\r\n      this.mobile = !this.mobile;\r\n      this.renderer.addClass(this.el, 'mobile');\r\n    } else if (this.mobile && !this.checkIfMobile()) {\r\n      this.mobile = !this.mobile;\r\n      this.renderer.removeClass(this.el, 'mobile');\r\n    }\r\n    let rows = this.$options.minRows;\r\n    let columns = this.$options.minCols;\r\n\r\n    let widgetsIndex = this.grid.length - 1;\r\n    let widget;\r\n    for (; widgetsIndex >= 0; widgetsIndex--) {\r\n      widget = this.grid[widgetsIndex];\r\n      if (!widget.notPlaced) {\r\n        rows = Math.max(rows, widget.$item.y + widget.$item.rows);\r\n        columns = Math.max(columns, widget.$item.x + widget.$item.cols);\r\n      }\r\n    }\r\n    rows += this.$options.addEmptyRowsCount;\r\n    if (this.columns !== columns || this.rows !== rows) {\r\n      this.columns = columns;\r\n      this.rows = rows;\r\n      if (this.options.gridSizeChangedCallback) {\r\n        this.options.gridSizeChangedCallback(this);\r\n      }\r\n    }\r\n  }\r\n\r\n  private calculateLayout(): void {\r\n    if (this.compact) {\r\n      this.compact.checkCompact();\r\n    }\r\n\r\n    this.setGridDimensions();\r\n    if (this.$options.outerMargin) {\r\n      let marginWidth = -this.$options.margin;\r\n      if (this.$options.outerMarginLeft !== null) {\r\n        marginWidth += this.$options.outerMarginLeft;\r\n        this.renderer.setStyle(\r\n          this.el,\r\n          'padding-left',\r\n          this.$options.outerMarginLeft + 'px'\r\n        );\r\n      } else {\r\n        marginWidth += this.$options.margin;\r\n        this.renderer.setStyle(\r\n          this.el,\r\n          'padding-left',\r\n          this.$options.margin + 'px'\r\n        );\r\n      }\r\n      if (this.$options.outerMarginRight !== null) {\r\n        marginWidth += this.$options.outerMarginRight;\r\n        this.renderer.setStyle(\r\n          this.el,\r\n          'padding-right',\r\n          this.$options.outerMarginRight + 'px'\r\n        );\r\n      } else {\r\n        marginWidth += this.$options.margin;\r\n        this.renderer.setStyle(\r\n          this.el,\r\n          'padding-right',\r\n          this.$options.margin + 'px'\r\n        );\r\n      }\r\n      this.curColWidth = (this.curWidth - marginWidth) / this.columns;\r\n      let marginHeight = -this.$options.margin;\r\n      if (this.$options.outerMarginTop !== null) {\r\n        marginHeight += this.$options.outerMarginTop;\r\n        this.renderer.setStyle(\r\n          this.el,\r\n          'padding-top',\r\n          this.$options.outerMarginTop + 'px'\r\n        );\r\n      } else {\r\n        marginHeight += this.$options.margin;\r\n        this.renderer.setStyle(\r\n          this.el,\r\n          'padding-top',\r\n          this.$options.margin + 'px'\r\n        );\r\n      }\r\n      if (this.$options.outerMarginBottom !== null) {\r\n        marginHeight += this.$options.outerMarginBottom;\r\n        this.renderer.setStyle(\r\n          this.el,\r\n          'padding-bottom',\r\n          this.$options.outerMarginBottom + 'px'\r\n        );\r\n      } else {\r\n        marginHeight += this.$options.margin;\r\n        this.renderer.setStyle(\r\n          this.el,\r\n          'padding-bottom',\r\n          this.$options.margin + 'px'\r\n        );\r\n      }\r\n      this.curRowHeight =\r\n        ((this.curHeight - marginHeight) / this.rows) *\r\n        this.$options.rowHeightRatio;\r\n    } else {\r\n      this.curColWidth = (this.curWidth + this.$options.margin) / this.columns;\r\n      this.curRowHeight =\r\n        ((this.curHeight + this.$options.margin) / this.rows) *\r\n        this.$options.rowHeightRatio;\r\n      this.renderer.setStyle(this.el, 'padding-left', 0 + 'px');\r\n      this.renderer.setStyle(this.el, 'padding-right', 0 + 'px');\r\n      this.renderer.setStyle(this.el, 'padding-top', 0 + 'px');\r\n      this.renderer.setStyle(this.el, 'padding-bottom', 0 + 'px');\r\n    }\r\n    this.gridRenderer.updateGridster();\r\n\r\n    if (this.$options.setGridSize) {\r\n      this.renderer.addClass(this.el, 'gridSize');\r\n      if (!this.mobile) {\r\n        this.renderer.setStyle(\r\n          this.el,\r\n          'width',\r\n          this.columns * this.curColWidth + this.$options.margin + 'px'\r\n        );\r\n        this.renderer.setStyle(\r\n          this.el,\r\n          'height',\r\n          this.rows * this.curRowHeight + this.$options.margin + 'px'\r\n        );\r\n      }\r\n    } else {\r\n      this.renderer.removeClass(this.el, 'gridSize');\r\n      this.renderer.setStyle(this.el, 'width', '');\r\n      this.renderer.setStyle(this.el, 'height', '');\r\n    }\r\n    this.updateGrid();\r\n\r\n    let widgetsIndex: number = this.grid.length - 1;\r\n    let widget: GridsterItemComponentInterface;\r\n    for (; widgetsIndex >= 0; widgetsIndex--) {\r\n      widget = this.grid[widgetsIndex];\r\n      widget.setSize();\r\n      widget.drag.toggle();\r\n      widget.resize.toggle();\r\n    }\r\n\r\n    this.resize$.next();\r\n  }\r\n\r\n  updateGrid(): void {\r\n    if (this.$options.displayGrid === 'always' && !this.mobile) {\r\n      this.renderer.addClass(this.el, 'display-grid');\r\n    } else if (\r\n      this.$options.displayGrid === 'onDrag&Resize' &&\r\n      this.dragInProgress\r\n    ) {\r\n      this.renderer.addClass(this.el, 'display-grid');\r\n    } else if (\r\n      this.$options.displayGrid === 'none' ||\r\n      !this.dragInProgress ||\r\n      this.mobile\r\n    ) {\r\n      this.renderer.removeClass(this.el, 'display-grid');\r\n    }\r\n    this.setGridDimensions();\r\n    this.gridColumns.length = GridsterComponent.getNewArrayLength(\r\n      this.columns,\r\n      this.curWidth,\r\n      this.curColWidth\r\n    );\r\n    this.gridRows.length = GridsterComponent.getNewArrayLength(\r\n      this.rows,\r\n      this.curHeight,\r\n      this.curRowHeight\r\n    );\r\n    this.cdRef.markForCheck();\r\n  }\r\n\r\n  addItem(itemComponent: GridsterItemComponentInterface): void {\r\n    if (itemComponent.$item.cols === undefined) {\r\n      itemComponent.$item.cols = this.$options.defaultItemCols;\r\n      itemComponent.item.cols = itemComponent.$item.cols;\r\n      itemComponent.itemChanged();\r\n    }\r\n    if (itemComponent.$item.rows === undefined) {\r\n      itemComponent.$item.rows = this.$options.defaultItemRows;\r\n      itemComponent.item.rows = itemComponent.$item.rows;\r\n      itemComponent.itemChanged();\r\n    }\r\n    if (itemComponent.$item.x === -1 || itemComponent.$item.y === -1) {\r\n      this.autoPositionItem(itemComponent);\r\n    } else if (this.checkCollision(itemComponent.$item)) {\r\n      if (!this.$options.disableWarnings) {\r\n        itemComponent.notPlaced = true;\r\n        console.warn(\r\n          \"Can't be placed in the bounds of the dashboard, trying to auto position!/n\" +\r\n            JSON.stringify(itemComponent.item, ['cols', 'rows', 'x', 'y'])\r\n        );\r\n      }\r\n      if (!this.$options.disableAutoPositionOnConflict) {\r\n        this.autoPositionItem(itemComponent);\r\n      } else {\r\n        itemComponent.notPlaced = true;\r\n      }\r\n    }\r\n    this.grid.push(itemComponent);\r\n    this.calculateLayout$.next();\r\n  }\r\n\r\n  removeItem(itemComponent: GridsterItemComponentInterface): void {\r\n    this.grid.splice(this.grid.indexOf(itemComponent), 1);\r\n    this.calculateLayout$.next();\r\n    if (this.options.itemRemovedCallback) {\r\n      this.options.itemRemovedCallback(itemComponent.item, itemComponent);\r\n    }\r\n  }\r\n\r\n  checkCollision(item: GridsterItem): GridsterItemComponentInterface | boolean {\r\n    let collision: GridsterItemComponentInterface | boolean = false;\r\n    if (this.options.itemValidateCallback) {\r\n      collision = !this.options.itemValidateCallback(item);\r\n    }\r\n    if (!collision && this.checkGridCollision(item)) {\r\n      collision = true;\r\n    }\r\n    if (!collision) {\r\n      const c = this.findItemWithItem(item);\r\n      if (c) {\r\n        collision = c;\r\n      }\r\n    }\r\n    return collision;\r\n  }\r\n\r\n  checkGridCollision(item: GridsterItem): boolean {\r\n    const noNegativePosition = item.y > -1 && item.x > -1;\r\n    const maxGridCols = item.cols + item.x <= this.$options.maxCols;\r\n    const maxGridRows = item.rows + item.y <= this.$options.maxRows;\r\n    const maxItemCols =\r\n      item.maxItemCols === undefined\r\n        ? this.$options.maxItemCols\r\n        : item.maxItemCols;\r\n    const minItemCols =\r\n      item.minItemCols === undefined\r\n        ? this.$options.minItemCols\r\n        : item.minItemCols;\r\n    const maxItemRows =\r\n      item.maxItemRows === undefined\r\n        ? this.$options.maxItemRows\r\n        : item.maxItemRows;\r\n    const minItemRows =\r\n      item.minItemRows === undefined\r\n        ? this.$options.minItemRows\r\n        : item.minItemRows;\r\n    const inColsLimits = item.cols <= maxItemCols && item.cols >= minItemCols;\r\n    const inRowsLimits = item.rows <= maxItemRows && item.rows >= minItemRows;\r\n    const minAreaLimit =\r\n      item.minItemArea === undefined\r\n        ? this.$options.minItemArea\r\n        : item.minItemArea;\r\n    const maxAreaLimit =\r\n      item.maxItemArea === undefined\r\n        ? this.$options.maxItemArea\r\n        : item.maxItemArea;\r\n    const area = item.cols * item.rows;\r\n    const inMinArea = minAreaLimit <= area;\r\n    const inMaxArea = maxAreaLimit >= area;\r\n    return !(\r\n      noNegativePosition &&\r\n      maxGridCols &&\r\n      maxGridRows &&\r\n      inColsLimits &&\r\n      inRowsLimits &&\r\n      inMinArea &&\r\n      inMaxArea\r\n    );\r\n  }\r\n\r\n  findItemWithItem(\r\n    item: GridsterItem\r\n  ): GridsterItemComponentInterface | boolean {\r\n    let widgetsIndex = 0;\r\n    let widget: GridsterItemComponentInterface;\r\n    for (; widgetsIndex < this.grid.length; widgetsIndex++) {\r\n      widget = this.grid[widgetsIndex];\r\n      if (\r\n        widget.$item !== item &&\r\n        this.checkCollisionTwoItems(widget.$item, item)\r\n      ) {\r\n        return widget;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  findItemsWithItem(item: GridsterItem): Array<GridsterItemComponentInterface> {\r\n    const a: Array<GridsterItemComponentInterface> = [];\r\n    let widgetsIndex = 0;\r\n    let widget: GridsterItemComponentInterface;\r\n    for (; widgetsIndex < this.grid.length; widgetsIndex++) {\r\n      widget = this.grid[widgetsIndex];\r\n      if (\r\n        widget.$item !== item &&\r\n        this.checkCollisionTwoItems(widget.$item, item)\r\n      ) {\r\n        a.push(widget);\r\n      }\r\n    }\r\n    return a;\r\n  }\r\n\r\n  autoPositionItem(itemComponent: GridsterItemComponentInterface): void {\r\n    if (this.getNextPossiblePosition(itemComponent.$item)) {\r\n      itemComponent.notPlaced = false;\r\n      itemComponent.item.x = itemComponent.$item.x;\r\n      itemComponent.item.y = itemComponent.$item.y;\r\n      itemComponent.itemChanged();\r\n    } else {\r\n      itemComponent.notPlaced = true;\r\n      if (!this.$options.disableWarnings) {\r\n        console.warn(\r\n          \"Can't be placed in the bounds of the dashboard!/n\" +\r\n            JSON.stringify(itemComponent.item, ['cols', 'rows', 'x', 'y'])\r\n        );\r\n      }\r\n    }\r\n  }\r\n\r\n  getNextPossiblePosition = (\r\n    newItem: GridsterItem,\r\n    startingFrom: { y?: number; x?: number } = {}\r\n  ): boolean => {\r\n    if (newItem.cols === -1) {\r\n      newItem.cols = this.$options.defaultItemCols;\r\n    }\r\n    if (newItem.rows === -1) {\r\n      newItem.rows = this.$options.defaultItemRows;\r\n    }\r\n    this.setGridDimensions();\r\n    let rowsIndex = startingFrom.y || 0;\r\n    let colsIndex;\r\n    for (; rowsIndex < this.rows; rowsIndex++) {\r\n      newItem.y = rowsIndex;\r\n      colsIndex = startingFrom.x || 0;\r\n      for (; colsIndex < this.columns; colsIndex++) {\r\n        newItem.x = colsIndex;\r\n        if (!this.checkCollision(newItem)) {\r\n          return true;\r\n        }\r\n      }\r\n    }\r\n    const canAddToRows = this.$options.maxRows >= this.rows + newItem.rows;\r\n    const canAddToColumns =\r\n      this.$options.maxCols >= this.columns + newItem.cols;\r\n    const addToRows = this.rows <= this.columns && canAddToRows;\r\n    if (!addToRows && canAddToColumns) {\r\n      newItem.x = this.columns;\r\n      newItem.y = 0;\r\n      return true;\r\n    } else if (canAddToRows) {\r\n      newItem.y = this.rows;\r\n      newItem.x = 0;\r\n      return true;\r\n    }\r\n    return false;\r\n  };\r\n\r\n  getFirstPossiblePosition = (item: GridsterItem): GridsterItem => {\r\n    const tmpItem = Object.assign({}, item);\r\n    this.getNextPossiblePosition(tmpItem);\r\n    return tmpItem;\r\n  };\r\n\r\n  getLastPossiblePosition = (item: GridsterItem): GridsterItem => {\r\n    let farthestItem: { y: number; x: number } = { y: 0, x: 0 };\r\n    farthestItem = this.grid.reduce(\r\n      (\r\n        prev: { y: number; x: number },\r\n        curr: GridsterItemComponentInterface\r\n      ) => {\r\n        const currCoords = {\r\n          y: curr.$item.y + curr.$item.rows - 1,\r\n          x: curr.$item.x + curr.$item.cols - 1\r\n        };\r\n        if (GridsterUtils.compareItems(prev, currCoords) === 1) {\r\n          return currCoords;\r\n        } else {\r\n          return prev;\r\n        }\r\n      },\r\n      farthestItem\r\n    );\r\n\r\n    const tmpItem = Object.assign({}, item);\r\n    this.getNextPossiblePosition(tmpItem, farthestItem);\r\n    return tmpItem;\r\n  };\r\n\r\n  pixelsToPositionX(\r\n    x: number,\r\n    roundingMethod: (x: number) => number,\r\n    noLimit?: boolean\r\n  ): number {\r\n    const position = roundingMethod(x / this.curColWidth);\r\n    if (noLimit) {\r\n      return position;\r\n    } else {\r\n      return Math.max(position, 0);\r\n    }\r\n  }\r\n\r\n  pixelsToPositionY(\r\n    y: number,\r\n    roundingMethod: (x: number) => number,\r\n    noLimit?: boolean\r\n  ): number {\r\n    const position = roundingMethod(y / this.curRowHeight);\r\n    if (noLimit) {\r\n      return position;\r\n    } else {\r\n      return Math.max(position, 0);\r\n    }\r\n  }\r\n\r\n  positionXToPixels(x: number): number {\r\n    return x * this.curColWidth;\r\n  }\r\n\r\n  positionYToPixels(y: number): number {\r\n    return y * this.curRowHeight;\r\n  }\r\n\r\n  getItemComponent(\r\n    item: GridsterItem\r\n  ): GridsterItemComponentInterface | undefined {\r\n    return this.grid.find(c => c.item === item);\r\n  }\r\n\r\n  // ------ Functions for swapWhileDragging option\r\n\r\n  // identical to checkCollision() except that this function calls findItemWithItemForSwaping() instead of findItemWithItem()\r\n  checkCollisionForSwaping(\r\n    item: GridsterItem\r\n  ): GridsterItemComponentInterface | boolean {\r\n    let collision: GridsterItemComponentInterface | boolean = false;\r\n    if (this.options.itemValidateCallback) {\r\n      collision = !this.options.itemValidateCallback(item);\r\n    }\r\n    if (!collision && this.checkGridCollision(item)) {\r\n      collision = true;\r\n    }\r\n    if (!collision) {\r\n      const c = this.findItemWithItemForSwapping(item);\r\n      if (c) {\r\n        collision = c;\r\n      }\r\n    }\r\n    return collision;\r\n  }\r\n\r\n  // identical to findItemWithItem() except that this function calls checkCollisionTwoItemsForSwaping() instead of checkCollisionTwoItems()\r\n  findItemWithItemForSwapping(\r\n    item: GridsterItem\r\n  ): GridsterItemComponentInterface | boolean {\r\n    let widgetsIndex: number = this.grid.length - 1;\r\n    let widget: GridsterItemComponentInterface;\r\n    for (; widgetsIndex > -1; widgetsIndex--) {\r\n      widget = this.grid[widgetsIndex];\r\n      if (\r\n        widget.$item !== item &&\r\n        GridsterComponent.checkCollisionTwoItemsForSwaping(widget.$item, item)\r\n      ) {\r\n        return widget;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  previewStyle(drag = false): void {\r\n    if (this.movingItem) {\r\n      if (this.compact && drag) {\r\n        this.compact.checkCompactItem(this.movingItem);\r\n      }\r\n      this.previewStyle$.next(this.movingItem);\r\n    } else {\r\n      this.previewStyle$.next(null);\r\n    }\r\n  }\r\n\r\n  // ------ End of functions for swapWhileDragging option\r\n\r\n  // eslint-disable-next-line @typescript-eslint/member-ordering\r\n  private static getNewArrayLength(\r\n    length: number,\r\n    overallSize: number,\r\n    size: number\r\n  ): number {\r\n    const newLength = Math.max(length, Math.floor(overallSize / size));\r\n\r\n    if (newLength < 0) {\r\n      return 0;\r\n    }\r\n\r\n    if (Number.isFinite(newLength)) {\r\n      return Math.floor(newLength);\r\n    }\r\n\r\n    return 0;\r\n  }\r\n}\r\n","<div\r\n  class=\"gridster-column\"\r\n  *ngFor=\"let column of gridColumns; let i = index;\"\r\n  [ngStyle]=\"gridRenderer.getGridColumnStyle(i)\"\r\n></div>\r\n<div\r\n  class=\"gridster-row\"\r\n  *ngFor=\"let row of gridRows; let i = index;\"\r\n  [ngStyle]=\"gridRenderer.getGridRowStyle(i)\"\r\n></div>\r\n<ng-content></ng-content>\r\n<gridster-preview\r\n  [gridRenderer]=\"gridRenderer\"\r\n  [previewStyle$]=\"previewStyle$\"\r\n  class=\"gridster-preview\"\r\n></gridster-preview>\r\n","import { GridsterItemComponentInterface } from './gridsterItem.interface';\r\nimport { GridsterComponentInterface } from './gridster.interface';\r\n\r\nexport class GridsterPush {\r\n  public fromSouth: string;\r\n  public fromNorth: string;\r\n  public fromEast: string;\r\n  public fromWest: string;\r\n  private pushedItems: GridsterItemComponentInterface[];\r\n  private pushedItemsTemp: GridsterItemComponentInterface[];\r\n  private pushedItemsTempPath: { x: number; y: number }[][];\r\n  private pushedItemsPath: { x: number; y: number }[][];\r\n  private gridsterItem: GridsterItemComponentInterface;\r\n  private gridster: GridsterComponentInterface;\r\n  private pushedItemsOrder: GridsterItemComponentInterface[];\r\n  private tryPattern: {\r\n    fromEast: ((\r\n      gridsterItemCollide: GridsterItemComponentInterface,\r\n      gridsterItem: GridsterItemComponentInterface\r\n    ) => boolean)[];\r\n    fromWest: ((\r\n      gridsterItemCollide: GridsterItemComponentInterface,\r\n      gridsterItem: GridsterItemComponentInterface\r\n    ) => boolean)[];\r\n    fromNorth: ((\r\n      gridsterItemCollide: GridsterItemComponentInterface,\r\n      gridsterItem: GridsterItemComponentInterface\r\n    ) => boolean)[];\r\n    fromSouth: ((\r\n      gridsterItemCollide: GridsterItemComponentInterface,\r\n      gridsterItem: GridsterItemComponentInterface\r\n    ) => boolean)[];\r\n  };\r\n  private iteration = 0;\r\n\r\n  constructor(gridsterItem: GridsterItemComponentInterface) {\r\n    this.pushedItems = [];\r\n    this.pushedItemsTemp = [];\r\n    this.pushedItemsTempPath = [];\r\n    this.pushedItemsPath = [];\r\n    this.gridsterItem = gridsterItem;\r\n    this.gridster = gridsterItem.gridster;\r\n    this.tryPattern = {\r\n      fromEast: [this.tryWest, this.trySouth, this.tryNorth, this.tryEast],\r\n      fromWest: [this.tryEast, this.trySouth, this.tryNorth, this.tryWest],\r\n      fromNorth: [this.trySouth, this.tryEast, this.tryWest, this.tryNorth],\r\n      fromSouth: [this.tryNorth, this.tryEast, this.tryWest, this.trySouth]\r\n    };\r\n    this.fromSouth = 'fromSouth';\r\n    this.fromNorth = 'fromNorth';\r\n    this.fromEast = 'fromEast';\r\n    this.fromWest = 'fromWest';\r\n  }\r\n\r\n  destroy(): void {\r\n    this.gridster = this.gridsterItem = null!;\r\n  }\r\n\r\n  pushItems(direction: string, disable?: boolean): boolean {\r\n    if (this.gridster.$options.pushItems && !disable) {\r\n      this.pushedItemsOrder = [];\r\n      this.iteration = 0;\r\n      const pushed = this.push(this.gridsterItem, direction);\r\n      if (!pushed) {\r\n        this.restoreTempItems();\r\n      }\r\n      this.pushedItemsOrder = [];\r\n      this.pushedItemsTemp = [];\r\n      this.pushedItemsTempPath = [];\r\n      return pushed;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  restoreTempItems(): void {\r\n    let i = this.pushedItemsTemp.length - 1;\r\n    for (; i > -1; i--) {\r\n      this.removeFromTempPushed(this.pushedItemsTemp[i]);\r\n    }\r\n  }\r\n\r\n  restoreItems(): void {\r\n    let i = 0;\r\n    const l: number = this.pushedItems.length;\r\n    let pushedItem: GridsterItemComponentInterface;\r\n    for (; i < l; i++) {\r\n      pushedItem = this.pushedItems[i];\r\n      pushedItem.$item.x = pushedItem.item.x || 0;\r\n      pushedItem.$item.y = pushedItem.item.y || 0;\r\n      pushedItem.setSize();\r\n    }\r\n    this.pushedItems = [];\r\n    this.pushedItemsPath = [];\r\n  }\r\n\r\n  setPushedItems(): void {\r\n    let i = 0;\r\n    const l: number = this.pushedItems.length;\r\n    let pushedItem: GridsterItemComponentInterface;\r\n    for (; i < l; i++) {\r\n      pushedItem = this.pushedItems[i];\r\n      pushedItem.checkItemChanges(pushedItem.$item, pushedItem.item);\r\n    }\r\n    this.pushedItems = [];\r\n    this.pushedItemsPath = [];\r\n  }\r\n\r\n  checkPushBack(): void {\r\n    let i: number = this.pushedItems.length - 1;\r\n    let change = false;\r\n    for (; i > -1; i--) {\r\n      if (this.checkPushedItem(this.pushedItems[i], i)) {\r\n        change = true;\r\n      }\r\n    }\r\n    if (change) {\r\n      this.checkPushBack();\r\n    }\r\n  }\r\n\r\n  private push(\r\n    gridsterItem: GridsterItemComponentInterface,\r\n    direction: string\r\n  ): boolean {\r\n    if (this.iteration > 100) {\r\n      console.warn('max iteration reached');\r\n      return false;\r\n    }\r\n    if (this.gridster.checkGridCollision(gridsterItem.$item)) {\r\n      return false;\r\n    }\r\n    if (direction === '') {\r\n      return false;\r\n    }\r\n    const conflicts: GridsterItemComponentInterface[] =\r\n      this.gridster.findItemsWithItem(gridsterItem.$item);\r\n    const invert = direction === this.fromNorth || direction === this.fromWest;\r\n    // sort the list of conflicts in order of [y,x]. Invert when the push is from north and west\r\n    // this is done so they don't conflict witch each other and revert positions, keeping the previous order\r\n    conflicts.sort((a, b) => {\r\n      if (invert) {\r\n        return b.$item.y - a.$item.y || b.$item.x - a.$item.x;\r\n      } else {\r\n        return a.$item.y - b.$item.y || a.$item.x - b.$item.x;\r\n      }\r\n    });\r\n    let i = 0;\r\n    let itemCollision: GridsterItemComponentInterface;\r\n    let makePush = true;\r\n    const pushedItems: GridsterItemComponentInterface[] = [];\r\n    for (; i < conflicts.length; i++) {\r\n      itemCollision = conflicts[i];\r\n      if (itemCollision === this.gridsterItem) {\r\n        continue;\r\n      }\r\n      if (!itemCollision.canBeDragged()) {\r\n        makePush = false;\r\n        break;\r\n      }\r\n      const p = this.pushedItemsTemp.indexOf(itemCollision);\r\n      if (p > -1 && this.pushedItemsTempPath[p].length > 10) {\r\n        // stop if item is pushed more than 10 times to break infinite loops\r\n        makePush = false;\r\n        break;\r\n      }\r\n      if (\r\n        this.tryPattern[direction][0].call(this, itemCollision, gridsterItem)\r\n      ) {\r\n        this.pushedItemsOrder.push(itemCollision);\r\n        pushedItems.push(itemCollision);\r\n      } else if (\r\n        this.tryPattern[direction][1].call(this, itemCollision, gridsterItem)\r\n      ) {\r\n        this.pushedItemsOrder.push(itemCollision);\r\n        pushedItems.push(itemCollision);\r\n      } else if (\r\n        this.tryPattern[direction][2].call(this, itemCollision, gridsterItem)\r\n      ) {\r\n        this.pushedItemsOrder.push(itemCollision);\r\n        pushedItems.push(itemCollision);\r\n      } else if (\r\n        this.tryPattern[direction][3].call(this, itemCollision, gridsterItem)\r\n      ) {\r\n        this.pushedItemsOrder.push(itemCollision);\r\n        pushedItems.push(itemCollision);\r\n      } else {\r\n        makePush = false;\r\n        break;\r\n      }\r\n    }\r\n    if (!makePush) {\r\n      i = this.pushedItemsOrder.lastIndexOf(pushedItems[0]);\r\n      if (i > -1) {\r\n        let j = this.pushedItemsOrder.length - 1;\r\n        for (; j >= i; j--) {\r\n          itemCollision = this.pushedItemsOrder[j];\r\n          this.pushedItemsOrder.pop();\r\n          this.removeFromTempPushed(itemCollision);\r\n          this.removeFromPushedItem(itemCollision);\r\n        }\r\n      }\r\n    }\r\n    this.iteration++;\r\n    return makePush;\r\n  }\r\n\r\n  private trySouth(\r\n    gridsterItemCollide: GridsterItemComponentInterface,\r\n    gridsterItem: GridsterItemComponentInterface\r\n  ): boolean {\r\n    if (!this.gridster.$options.pushDirections.south) {\r\n      return false;\r\n    }\r\n    this.addToTempPushed(gridsterItemCollide);\r\n    gridsterItemCollide.$item.y =\r\n      gridsterItem.$item.y + gridsterItem.$item.rows;\r\n    if (this.push(gridsterItemCollide, this.fromNorth)) {\r\n      gridsterItemCollide.setSize();\r\n      this.addToPushed(gridsterItemCollide);\r\n      return true;\r\n    } else {\r\n      this.removeFromTempPushed(gridsterItemCollide);\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private tryNorth(\r\n    gridsterItemCollide: GridsterItemComponentInterface,\r\n    gridsterItem: GridsterItemComponentInterface\r\n  ): boolean {\r\n    if (!this.gridster.$options.pushDirections.north) {\r\n      return false;\r\n    }\r\n    this.addToTempPushed(gridsterItemCollide);\r\n    gridsterItemCollide.$item.y =\r\n      gridsterItem.$item.y - gridsterItemCollide.$item.rows;\r\n    if (this.push(gridsterItemCollide, this.fromSouth)) {\r\n      gridsterItemCollide.setSize();\r\n      this.addToPushed(gridsterItemCollide);\r\n      return true;\r\n    } else {\r\n      this.removeFromTempPushed(gridsterItemCollide);\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private tryEast(\r\n    gridsterItemCollide: GridsterItemComponentInterface,\r\n    gridsterItem: GridsterItemComponentInterface\r\n  ): boolean {\r\n    if (!this.gridster.$options.pushDirections.east) {\r\n      return false;\r\n    }\r\n    this.addToTempPushed(gridsterItemCollide);\r\n    gridsterItemCollide.$item.x =\r\n      gridsterItem.$item.x + gridsterItem.$item.cols;\r\n    if (this.push(gridsterItemCollide, this.fromWest)) {\r\n      gridsterItemCollide.setSize();\r\n      this.addToPushed(gridsterItemCollide);\r\n      return true;\r\n    } else {\r\n      this.removeFromTempPushed(gridsterItemCollide);\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private tryWest(\r\n    gridsterItemCollide: GridsterItemComponentInterface,\r\n    gridsterItem: GridsterItemComponentInterface\r\n  ): boolean {\r\n    if (!this.gridster.$options.pushDirections.west) {\r\n      return false;\r\n    }\r\n    this.addToTempPushed(gridsterItemCollide);\r\n    gridsterItemCollide.$item.x =\r\n      gridsterItem.$item.x - gridsterItemCollide.$item.cols;\r\n    if (this.push(gridsterItemCollide, this.fromEast)) {\r\n      gridsterItemCollide.setSize();\r\n      this.addToPushed(gridsterItemCollide);\r\n      return true;\r\n    } else {\r\n      this.removeFromTempPushed(gridsterItemCollide);\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private addToTempPushed(gridsterItem: GridsterItemComponentInterface): void {\r\n    let i = this.pushedItemsTemp.indexOf(gridsterItem);\r\n    if (i === -1) {\r\n      i = this.pushedItemsTemp.push(gridsterItem) - 1;\r\n      this.pushedItemsTempPath[i] = [];\r\n    }\r\n    this.pushedItemsTempPath[i].push({\r\n      x: gridsterItem.$item.x,\r\n      y: gridsterItem.$item.y\r\n    });\r\n  }\r\n\r\n  private removeFromTempPushed(\r\n    gridsterItem: GridsterItemComponentInterface\r\n  ): void {\r\n    const i = this.pushedItemsTemp.indexOf(gridsterItem);\r\n    const tempPosition = this.pushedItemsTempPath[i].pop();\r\n    if (!tempPosition) {\r\n      return;\r\n    }\r\n    gridsterItem.$item.x = tempPosition.x;\r\n    gridsterItem.$item.y = tempPosition.y;\r\n    gridsterItem.setSize();\r\n    if (!this.pushedItemsTempPath[i].length) {\r\n      this.pushedItemsTemp.splice(i, 1);\r\n      this.pushedItemsTempPath.splice(i, 1);\r\n    }\r\n  }\r\n\r\n  private addToPushed(gridsterItem: GridsterItemComponentInterface): void {\r\n    if (this.pushedItems.indexOf(gridsterItem) < 0) {\r\n      this.pushedItems.push(gridsterItem);\r\n      this.pushedItemsPath.push([\r\n        { x: gridsterItem.item.x || 0, y: gridsterItem.item.y || 0 },\r\n        { x: gridsterItem.$item.x, y: gridsterItem.$item.y }\r\n      ]);\r\n    } else {\r\n      const i = this.pushedItems.indexOf(gridsterItem);\r\n      this.pushedItemsPath[i].push({\r\n        x: gridsterItem.$item.x,\r\n        y: gridsterItem.$item.y\r\n      });\r\n    }\r\n  }\r\n\r\n  private removeFromPushed(i: number): void {\r\n    if (i > -1) {\r\n      this.pushedItems.splice(i, 1);\r\n      this.pushedItemsPath.splice(i, 1);\r\n    }\r\n  }\r\n\r\n  private removeFromPushedItem(\r\n    gridsterItem: GridsterItemComponentInterface\r\n  ): void {\r\n    const i = this.pushedItems.indexOf(gridsterItem);\r\n    if (i > -1) {\r\n      this.pushedItemsPath[i].pop();\r\n      if (!this.pushedItemsPath.length) {\r\n        this.pushedItems.splice(i, 1);\r\n        this.pushedItemsPath.splice(i, 1);\r\n      }\r\n    }\r\n  }\r\n\r\n  private checkPushedItem(\r\n    pushedItem: GridsterItemComponentInterface,\r\n    i: number\r\n  ): boolean {\r\n    const path = this.pushedItemsPath[i];\r\n    let j = path.length - 2;\r\n    let lastPosition;\r\n    let x;\r\n    let y;\r\n    let change = false;\r\n    for (; j > -1; j--) {\r\n      lastPosition = path[j];\r\n      x = pushedItem.$item.x;\r\n      y = pushedItem.$item.y;\r\n      pushedItem.$item.x = lastPosition.x;\r\n      pushedItem.$item.y = lastPosition.y;\r\n      if (!this.gridster.findItemWithItem(pushedItem.$item)) {\r\n        pushedItem.setSize();\r\n        path.splice(j + 1, path.length - j - 1);\r\n        change = true;\r\n      } else {\r\n        pushedItem.$item.x = x;\r\n        pushedItem.$item.y = y;\r\n      }\r\n    }\r\n    if (path.length < 2) {\r\n      this.removeFromPushed(i);\r\n    }\r\n    return change;\r\n  }\r\n}\r\n","import { GridsterResizeEventType } from './gridsterResizeEventType.interface';\r\nimport { GridsterComponentInterface } from './gridster.interface';\r\n\r\nlet scrollSensitivity: number;\r\nlet scrollSpeed: number;\r\nconst intervalDuration = 50;\r\nlet gridsterElement: HTMLElement | null;\r\nlet resizeEvent: boolean | undefined;\r\nlet resizeEventType: GridsterResizeEventType | undefined;\r\nlet intervalE: number;\r\nlet intervalW: number;\r\nlet intervalN: number;\r\nlet intervalS: number;\r\n\r\ntype Position = Pick<MouseEvent, 'clientX' | 'clientY'>;\r\n\r\ntype CalculatePosition = (position: Position) => void;\r\n\r\nexport function scroll(\r\n  gridster: GridsterComponentInterface,\r\n  left: number,\r\n  top: number,\r\n  width: number,\r\n  height: number,\r\n  event: MouseEvent,\r\n  lastMouse: Position,\r\n  calculateItemPosition: CalculatePosition,\r\n  resize?: boolean,\r\n  resizeEventScrollType?: GridsterResizeEventType\r\n): void {\r\n  scrollSensitivity = gridster.$options.scrollSensitivity;\r\n  scrollSpeed = gridster.$options.scrollSpeed;\r\n  gridsterElement = gridster.el;\r\n  resizeEvent = resize;\r\n  resizeEventType = resizeEventScrollType;\r\n\r\n  const offsetWidth = gridsterElement.offsetWidth;\r\n  const offsetHeight = gridsterElement.offsetHeight;\r\n  const offsetLeft = gridsterElement.scrollLeft;\r\n  const offsetTop = gridsterElement.scrollTop;\r\n  const elemTopOffset = top - offsetTop;\r\n  const elemBottomOffset = offsetHeight + offsetTop - top - height;\r\n\r\n  const { clientX, clientY } = event;\r\n\r\n  if (!gridster.$options.disableScrollVertical) {\r\n    if (lastMouse.clientY < clientY && elemBottomOffset < scrollSensitivity) {\r\n      cancelN();\r\n      if (\r\n        (resizeEvent && resizeEventType && !resizeEventType.south) ||\r\n        intervalS\r\n      ) {\r\n        return;\r\n      }\r\n      intervalS = startVertical(1, calculateItemPosition, lastMouse);\r\n    } else if (\r\n      lastMouse.clientY > clientY &&\r\n      offsetTop > 0 &&\r\n      elemTopOffset < scrollSensitivity\r\n    ) {\r\n      cancelS();\r\n      if (\r\n        (resizeEvent && resizeEventType && !resizeEventType.north) ||\r\n        intervalN\r\n      ) {\r\n        return;\r\n      }\r\n      intervalN = startVertical(-1, calculateItemPosition, lastMouse);\r\n    } else if (lastMouse.clientY !== clientY) {\r\n      cancelVertical();\r\n    }\r\n  }\r\n\r\n  const elemRightOffset = offsetLeft + offsetWidth - left - width;\r\n  const elemLeftOffset = left - offsetLeft;\r\n\r\n  if (!gridster.$options.disableScrollHorizontal) {\r\n    if (lastMouse.clientX < clientX && elemRightOffset <= scrollSensitivity) {\r\n      cancelW();\r\n      if (\r\n        (resizeEvent && resizeEventType && !resizeEventType.east) ||\r\n        intervalE\r\n      ) {\r\n        return;\r\n      }\r\n      intervalE = startHorizontal(1, calculateItemPosition, lastMouse);\r\n    } else if (\r\n      lastMouse.clientX > clientX &&\r\n      offsetLeft > 0 &&\r\n      elemLeftOffset < scrollSensitivity\r\n    ) {\r\n      cancelE();\r\n      if (\r\n        (resizeEvent && resizeEventType && !resizeEventType.west) ||\r\n        intervalW\r\n      ) {\r\n        return;\r\n      }\r\n      intervalW = startHorizontal(-1, calculateItemPosition, lastMouse);\r\n    } else if (lastMouse.clientX !== clientX) {\r\n      cancelHorizontal();\r\n    }\r\n  }\r\n}\r\n\r\nfunction startVertical(\r\n  sign: number,\r\n  calculateItemPosition: CalculatePosition,\r\n  lastMouse: Position\r\n): number {\r\n  let clientY = lastMouse.clientY;\r\n  return window.setInterval(() => {\r\n    if (\r\n      !gridsterElement ||\r\n      (sign === -1 && gridsterElement.scrollTop - scrollSpeed < 0)\r\n    ) {\r\n      cancelVertical();\r\n    }\r\n    gridsterElement!.scrollTop += sign * scrollSpeed;\r\n    clientY += sign * scrollSpeed;\r\n    calculateItemPosition({ clientX: lastMouse.clientX, clientY });\r\n  }, intervalDuration);\r\n}\r\n\r\nfunction startHorizontal(\r\n  sign: number,\r\n  calculateItemPosition: CalculatePosition,\r\n  lastMouse: Position\r\n): number {\r\n  let clientX = lastMouse.clientX;\r\n  return window.setInterval(() => {\r\n    if (\r\n      !gridsterElement ||\r\n      (sign === -1 && gridsterElement.scrollLeft - scrollSpeed < 0)\r\n    ) {\r\n      cancelHorizontal();\r\n    }\r\n    gridsterElement!.scrollLeft += sign * scrollSpeed;\r\n    clientX += sign * scrollSpeed;\r\n    calculateItemPosition({ clientX, clientY: lastMouse.clientY });\r\n  }, intervalDuration);\r\n}\r\n\r\nexport function cancelScroll(): void {\r\n  cancelHorizontal();\r\n  cancelVertical();\r\n  gridsterElement = null;\r\n}\r\n\r\nfunction cancelHorizontal(): void {\r\n  cancelE();\r\n  cancelW();\r\n}\r\n\r\nfunction cancelVertical(): void {\r\n  cancelN();\r\n  cancelS();\r\n}\r\n\r\nfunction cancelE(): void {\r\n  if (intervalE) {\r\n    clearInterval(intervalE);\r\n    intervalE = 0;\r\n  }\r\n}\r\n\r\nfunction cancelW(): void {\r\n  if (intervalW) {\r\n    clearInterval(intervalW);\r\n    intervalW = 0;\r\n  }\r\n}\r\n\r\nfunction cancelS(): void {\r\n  if (intervalS) {\r\n    clearInterval(intervalS);\r\n    intervalS = 0;\r\n  }\r\n}\r\n\r\nfunction cancelN(): void {\r\n  if (intervalN) {\r\n    clearInterval(intervalN);\r\n    intervalN = 0;\r\n  }\r\n}\r\n","import { GridsterItemComponentInterface } from './gridsterItem.interface';\r\nimport { GridsterComponentInterface } from './gridster.interface';\r\n\r\nexport class GridsterSwap {\r\n  private swapedItem: GridsterItemComponentInterface | undefined;\r\n  private gridsterItem: GridsterItemComponentInterface;\r\n  private gridster: GridsterComponentInterface;\r\n\r\n  constructor(gridsterItem: GridsterItemComponentInterface) {\r\n    this.gridsterItem = gridsterItem;\r\n    this.gridster = gridsterItem.gridster;\r\n  }\r\n\r\n  destroy(): void {\r\n    this.gridster = this.gridsterItem = this.swapedItem = null!;\r\n  }\r\n\r\n  swapItems(): void {\r\n    if (this.gridster.$options.swap) {\r\n      this.checkSwapBack();\r\n      this.checkSwap(this.gridsterItem);\r\n    }\r\n  }\r\n\r\n  checkSwapBack(): void {\r\n    if (this.swapedItem) {\r\n      const x: number = this.swapedItem.$item.x;\r\n      const y: number = this.swapedItem.$item.y;\r\n      this.swapedItem.$item.x = this.swapedItem.item.x || 0;\r\n      this.swapedItem.$item.y = this.swapedItem.item.y || 0;\r\n      if (this.gridster.checkCollision(this.swapedItem.$item)) {\r\n        this.swapedItem.$item.x = x;\r\n        this.swapedItem.$item.y = y;\r\n      } else {\r\n        this.swapedItem.setSize();\r\n        this.gridsterItem.$item.x = this.gridsterItem.item.x || 0;\r\n        this.gridsterItem.$item.y = this.gridsterItem.item.y || 0;\r\n        this.swapedItem = undefined;\r\n      }\r\n    }\r\n  }\r\n\r\n  restoreSwapItem(): void {\r\n    if (this.swapedItem) {\r\n      this.swapedItem.$item.x = this.swapedItem.item.x || 0;\r\n      this.swapedItem.$item.y = this.swapedItem.item.y || 0;\r\n      this.swapedItem.setSize();\r\n      this.swapedItem = undefined;\r\n    }\r\n  }\r\n\r\n  setSwapItem(): void {\r\n    if (this.swapedItem) {\r\n      this.swapedItem.checkItemChanges(\r\n        this.swapedItem.$item,\r\n        this.swapedItem.item\r\n      );\r\n      this.swapedItem = undefined;\r\n    }\r\n  }\r\n\r\n  checkSwap(pushedBy: GridsterItemComponentInterface): void {\r\n    let gridsterItemCollision;\r\n    if (this.gridster.$options.swapWhileDragging) {\r\n      gridsterItemCollision = this.gridster.checkCollisionForSwaping(\r\n        pushedBy.$item\r\n      );\r\n    } else {\r\n      gridsterItemCollision = this.gridster.checkCollision(pushedBy.$item);\r\n    }\r\n    if (\r\n      gridsterItemCollision &&\r\n      gridsterItemCollision !== true &&\r\n      gridsterItemCollision.canBeDragged()\r\n    ) {\r\n      const gridsterItemCollide: GridsterItemComponentInterface =\r\n        gridsterItemCollision;\r\n      const copyCollisionX = gridsterItemCollide.$item.x;\r\n      const copyCollisionY = gridsterItemCollide.$item.y;\r\n      const copyX = pushedBy.$item.x;\r\n      const copyY = pushedBy.$item.y;\r\n      const diffX = copyX - copyCollisionX;\r\n      const diffY = copyY - copyCollisionY;\r\n      gridsterItemCollide.$item.x = pushedBy.item.x - diffX;\r\n      gridsterItemCollide.$item.y = pushedBy.item.y - diffY;\r\n      pushedBy.$item.x = gridsterItemCollide.item.x + diffX;\r\n      pushedBy.$item.y = gridsterItemCollide.item.y + diffY;\r\n      if (\r\n        this.gridster.checkCollision(gridsterItemCollide.$item) ||\r\n        this.gridster.checkCollision(pushedBy.$item)\r\n      ) {\r\n        pushedBy.$item.x = copyX;\r\n        pushedBy.$item.y = copyY;\r\n        gridsterItemCollide.$item.x = copyCollisionX;\r\n        gridsterItemCollide.$item.y = copyCollisionY;\r\n      } else {\r\n        gridsterItemCollide.setSize();\r\n        this.swapedItem = gridsterItemCollide;\r\n        if (this.gridster.$options.swapWhileDragging) {\r\n          this.gridsterItem.checkItemChanges(\r\n            this.gridsterItem.$item,\r\n            this.gridsterItem.item\r\n          );\r\n          this.setSwapItem();\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n","import { NgZone } from '@angular/core';\r\nimport { GridsterComponentInterface } from './gridster.interface';\r\nimport { DirTypes } from './gridsterConfig.interface';\r\nimport { GridsterItemComponentInterface } from './gridsterItem.interface';\r\nimport { GridsterPush } from './gridsterPush.service';\r\nimport { cancelScroll, scroll } from './gridsterScroll.service';\r\n\r\nimport { GridsterSwap } from './gridsterSwap.service';\r\nimport { GridsterUtils } from './gridsterUtils.service';\r\n\r\nconst GRIDSTER_ITEM_RESIZABLE_HANDLER_CLASS = 'gridster-item-resizable-handler';\r\n\r\nenum Direction {\r\n  UP = 'UP',\r\n  DOWN = 'DOWN',\r\n  LEFT = 'LEFT',\r\n  RIGHT = 'RIGHT'\r\n}\r\n\r\nexport class GridsterDraggable {\r\n  gridsterItem: GridsterItemComponentInterface;\r\n  gridster: GridsterComponentInterface;\r\n  lastMouse: {\r\n    clientX: number;\r\n    clientY: number;\r\n  };\r\n  offsetLeft: number;\r\n  offsetTop: number;\r\n  margin: number;\r\n  diffTop: number;\r\n  diffLeft: number;\r\n  originalClientX: number;\r\n  originalClientY: number;\r\n  top: number;\r\n  left: number;\r\n  height: number;\r\n  width: number;\r\n  positionX: number;\r\n  positionY: number;\r\n  positionXBackup: number;\r\n  positionYBackup: number;\r\n  enabled: boolean;\r\n  mousemove: () => void;\r\n  mouseup: () => void;\r\n  mouseleave: () => void;\r\n  cancelOnBlur: () => void;\r\n  touchmove: () => void;\r\n  touchend: () => void;\r\n  touchcancel: () => void;\r\n  mousedown: () => void;\r\n  touchstart: () => void;\r\n  push: GridsterPush;\r\n  swap: GridsterSwap;\r\n  path: Array<{ x: number; y: number }>;\r\n  collision: GridsterItemComponentInterface | boolean = false;\r\n\r\n  constructor(\r\n    gridsterItem: GridsterItemComponentInterface,\r\n    gridster: GridsterComponentInterface,\r\n    private zone: NgZone\r\n  ) {\r\n    this.gridsterItem = gridsterItem;\r\n    this.gridster = gridster;\r\n    this.lastMouse = {\r\n      clientX: 0,\r\n      clientY: 0\r\n    };\r\n    this.path = [];\r\n  }\r\n\r\n  destroy(): void {\r\n    if (this.gridster.previewStyle) {\r\n      this.gridster.previewStyle(true);\r\n    }\r\n    this.gridsterItem = this.gridster = this.collision = null!;\r\n    if (this.mousedown) {\r\n      this.mousedown();\r\n      this.touchstart();\r\n    }\r\n  }\r\n\r\n  dragStart(e: MouseEvent): void {\r\n    if (e.which && e.which !== 1) {\r\n      return;\r\n    }\r\n\r\n    if (\r\n      this.gridster.options.draggable &&\r\n      this.gridster.options.draggable.start\r\n    ) {\r\n      this.gridster.options.draggable.start(\r\n        this.gridsterItem.item,\r\n        this.gridsterItem,\r\n        e\r\n      );\r\n    }\r\n\r\n    e.stopPropagation();\r\n    e.preventDefault();\r\n\r\n    this.zone.runOutsideAngular(() => {\r\n      this.mousemove = this.gridsterItem.renderer.listen(\r\n        'document',\r\n        'mousemove',\r\n        this.dragMove\r\n      );\r\n      this.touchmove = this.gridster.renderer.listen(\r\n        this.gridster.el,\r\n        'touchmove',\r\n        this.dragMove\r\n      );\r\n    });\r\n    this.mouseup = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'mouseup',\r\n      this.dragStop\r\n    );\r\n    this.mouseleave = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'mouseleave',\r\n      this.dragStop\r\n    );\r\n    this.cancelOnBlur = this.gridsterItem.renderer.listen(\r\n      'window',\r\n      'blur',\r\n      this.dragStop\r\n    );\r\n    this.touchend = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'touchend',\r\n      this.dragStop\r\n    );\r\n    this.touchcancel = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'touchcancel',\r\n      this.dragStop\r\n    );\r\n    this.gridsterItem.renderer.addClass(\r\n      this.gridsterItem.el,\r\n      'gridster-item-moving'\r\n    );\r\n    this.margin = this.gridster.$options.margin;\r\n    this.offsetLeft = this.gridster.el.scrollLeft - this.gridster.el.offsetLeft;\r\n    this.offsetTop = this.gridster.el.scrollTop - this.gridster.el.offsetTop;\r\n    this.left = this.gridsterItem.left - this.margin;\r\n    this.top = this.gridsterItem.top - this.margin;\r\n    this.originalClientX = e.clientX;\r\n    this.originalClientY = e.clientY;\r\n    this.width = this.gridsterItem.width;\r\n    this.height = this.gridsterItem.height;\r\n    if (this.gridster.$options.dirType === DirTypes.RTL) {\r\n      this.diffLeft =\r\n        e.clientX - this.gridster.el.scrollWidth + this.gridsterItem.left;\r\n    } else {\r\n      this.diffLeft = e.clientX + this.offsetLeft - this.margin - this.left;\r\n    }\r\n    this.diffTop = e.clientY + this.offsetTop - this.margin - this.top;\r\n    this.gridster.movingItem = this.gridsterItem.$item;\r\n    this.gridster.previewStyle(true);\r\n    this.push = new GridsterPush(this.gridsterItem);\r\n    this.swap = new GridsterSwap(this.gridsterItem);\r\n    this.gridster.dragInProgress = true;\r\n    this.gridster.updateGrid();\r\n    this.path.push({\r\n      x: this.gridsterItem.item.x || 0,\r\n      y: this.gridsterItem.item.y || 0\r\n    });\r\n  }\r\n\r\n  dragMove = (e: MouseEvent): void => {\r\n    e.stopPropagation();\r\n    e.preventDefault();\r\n    GridsterUtils.checkTouchEvent(e);\r\n\r\n    // get the directions of the mouse event\r\n    let directions = this.getDirections(e);\r\n\r\n    if (this.gridster.options.enableBoundaryControl) {\r\n      // prevent moving up at the top of gridster\r\n      if (\r\n        directions.includes(Direction.UP) &&\r\n        this.gridsterItem.el.getBoundingClientRect().top <=\r\n          this.gridster.el.getBoundingClientRect().top + this.margin\r\n      ) {\r\n        directions = directions.filter(direction => direction != Direction.UP);\r\n        e = new MouseEvent(e.type, {\r\n          clientX: e.clientX,\r\n          clientY: this.lastMouse.clientY\r\n        });\r\n      }\r\n      // prevent moving left at the leftmost column of gridster\r\n      if (\r\n        directions.includes(Direction.LEFT) &&\r\n        this.gridsterItem.el.getBoundingClientRect().left <=\r\n          this.gridster.el.getBoundingClientRect().left + this.margin\r\n      ) {\r\n        directions = directions.filter(\r\n          direction => direction != Direction.LEFT\r\n        );\r\n        e = new MouseEvent(e.type, {\r\n          clientX: this.lastMouse.clientX,\r\n          clientY: e.clientY\r\n        });\r\n      }\r\n      // prevent moving right at the rightmost column of gridster\r\n      if (\r\n        directions.includes(Direction.RIGHT) &&\r\n        this.gridsterItem.el.getBoundingClientRect().right >=\r\n          this.gridster.el.getBoundingClientRect().right - this.margin\r\n      ) {\r\n        directions = directions.filter(\r\n          direction => direction != Direction.RIGHT\r\n        );\r\n        e = new MouseEvent(e.type, {\r\n          clientX: this.lastMouse.clientX,\r\n          clientY: e.clientY\r\n        });\r\n      }\r\n      // prevent moving down at the bottom of gridster\r\n      if (\r\n        directions.includes(Direction.DOWN) &&\r\n        this.gridsterItem.el.getBoundingClientRect().bottom >=\r\n          this.gridster.el.getBoundingClientRect().bottom - this.margin\r\n      ) {\r\n        directions = directions.filter(\r\n          direction => direction != Direction.DOWN\r\n        );\r\n        e = new MouseEvent(e.type, {\r\n          clientX: e.clientX,\r\n          clientY: this.lastMouse.clientY\r\n        });\r\n      }\r\n    }\r\n\r\n    // do not change item location when there is no direction to go\r\n    if (directions.length) {\r\n      this.offsetLeft =\r\n        this.gridster.el.scrollLeft - this.gridster.el.offsetLeft;\r\n      this.offsetTop = this.gridster.el.scrollTop - this.gridster.el.offsetTop;\r\n      scroll(\r\n        this.gridster,\r\n        this.left,\r\n        this.top,\r\n        this.width,\r\n        this.height,\r\n        e,\r\n        this.lastMouse,\r\n        this.calculateItemPositionFromMousePosition\r\n      );\r\n\r\n      this.calculateItemPositionFromMousePosition(e);\r\n    }\r\n  };\r\n\r\n  calculateItemPositionFromMousePosition = (e: MouseEvent): void => {\r\n    if (this.gridster.options.scale) {\r\n      this.calculateItemPositionWithScale(e, this.gridster.options.scale);\r\n    } else {\r\n      this.calculateItemPositionWithoutScale(e);\r\n    }\r\n    this.calculateItemPosition();\r\n    this.lastMouse.clientX = e.clientX;\r\n    this.lastMouse.clientY = e.clientY;\r\n    this.zone.run(() => {\r\n      this.gridster.updateGrid();\r\n    });\r\n  };\r\n\r\n  calculateItemPositionWithScale(e: MouseEvent, scale: number): void {\r\n    if (this.gridster.$options.dirType === DirTypes.RTL) {\r\n      this.left =\r\n        this.gridster.el.scrollWidth -\r\n        this.originalClientX +\r\n        (e.clientX - this.originalClientX) / scale +\r\n        this.diffLeft;\r\n    } else {\r\n      this.left =\r\n        this.originalClientX +\r\n        (e.clientX - this.originalClientX) / scale +\r\n        this.offsetLeft -\r\n        this.diffLeft;\r\n    }\r\n    this.top =\r\n      this.originalClientY +\r\n      (e.clientY - this.originalClientY) / scale +\r\n      this.offsetTop -\r\n      this.diffTop;\r\n  }\r\n\r\n  calculateItemPositionWithoutScale(e: MouseEvent): void {\r\n    if (this.gridster.$options.dirType === DirTypes.RTL) {\r\n      this.left = this.gridster.el.scrollWidth - e.clientX + this.diffLeft;\r\n    } else {\r\n      this.left = e.clientX + this.offsetLeft - this.diffLeft;\r\n    }\r\n\r\n    this.top = e.clientY + this.offsetTop - this.diffTop;\r\n  }\r\n\r\n  dragStop = (e: MouseEvent): void => {\r\n    e.stopPropagation();\r\n    e.preventDefault();\r\n\r\n    cancelScroll();\r\n    this.cancelOnBlur();\r\n    this.mousemove();\r\n    this.mouseup();\r\n    this.mouseleave();\r\n    this.touchmove();\r\n    this.touchend();\r\n    this.touchcancel();\r\n    this.gridsterItem.renderer.removeClass(\r\n      this.gridsterItem.el,\r\n      'gridster-item-moving'\r\n    );\r\n    this.gridster.dragInProgress = false;\r\n    this.gridster.updateGrid();\r\n    this.path = [];\r\n    if (\r\n      this.gridster.options.draggable &&\r\n      this.gridster.options.draggable.stop\r\n    ) {\r\n      Promise.resolve(\r\n        this.gridster.options.draggable.stop(\r\n          this.gridsterItem.item,\r\n          this.gridsterItem,\r\n          e\r\n        )\r\n      ).then(this.makeDrag, this.cancelDrag);\r\n    } else {\r\n      this.makeDrag();\r\n    }\r\n    setTimeout(() => {\r\n      if (this.gridster) {\r\n        this.gridster.movingItem = null;\r\n        this.gridster.previewStyle(true);\r\n      }\r\n    });\r\n  };\r\n\r\n  cancelDrag = (): void => {\r\n    this.gridsterItem.$item.x = this.gridsterItem.item.x || 0;\r\n    this.gridsterItem.$item.y = this.gridsterItem.item.y || 0;\r\n    this.gridsterItem.setSize();\r\n    if (this.push) {\r\n      this.push.restoreItems();\r\n    }\r\n    if (this.swap) {\r\n      this.swap.restoreSwapItem();\r\n    }\r\n    if (this.push) {\r\n      this.push.destroy();\r\n      this.push = null!;\r\n    }\r\n    if (this.swap) {\r\n      this.swap.destroy();\r\n      this.swap = null!;\r\n    }\r\n  };\r\n\r\n  makeDrag = (): void => {\r\n    if (\r\n      this.gridster.$options.draggable.dropOverItems &&\r\n      this.gridster.options.draggable &&\r\n      this.gridster.options.draggable.dropOverItemsCallback &&\r\n      this.collision &&\r\n      this.collision !== true &&\r\n      this.collision.$item\r\n    ) {\r\n      this.gridster.options.draggable.dropOverItemsCallback(\r\n        this.gridsterItem.item,\r\n        this.collision.item,\r\n        this.gridster\r\n      );\r\n    }\r\n    this.collision = false;\r\n    this.gridsterItem.setSize();\r\n    this.gridsterItem.checkItemChanges(\r\n      this.gridsterItem.$item,\r\n      this.gridsterItem.item\r\n    );\r\n    if (this.push) {\r\n      this.push.setPushedItems();\r\n    }\r\n    if (this.swap) {\r\n      this.swap.setSwapItem();\r\n    }\r\n    if (this.push) {\r\n      this.push.destroy();\r\n      this.push = null!;\r\n    }\r\n    if (this.swap) {\r\n      this.swap.destroy();\r\n      this.swap = null!;\r\n    }\r\n  };\r\n\r\n  calculateItemPosition(): void {\r\n    this.gridster.movingItem = this.gridsterItem.$item;\r\n    this.positionX = this.gridster.pixelsToPositionX(this.left, Math.round);\r\n    this.positionY = this.gridster.pixelsToPositionY(this.top, Math.round);\r\n    this.positionXBackup = this.gridsterItem.$item.x;\r\n    this.positionYBackup = this.gridsterItem.$item.y;\r\n    this.gridsterItem.$item.x = this.positionX;\r\n    if (this.gridster.checkGridCollision(this.gridsterItem.$item)) {\r\n      this.gridsterItem.$item.x = this.positionXBackup;\r\n    }\r\n    this.gridsterItem.$item.y = this.positionY;\r\n    if (this.gridster.checkGridCollision(this.gridsterItem.$item)) {\r\n      this.gridsterItem.$item.y = this.positionYBackup;\r\n    }\r\n    this.gridster.gridRenderer.setCellPosition(\r\n      this.gridsterItem.renderer,\r\n      this.gridsterItem.el,\r\n      this.left,\r\n      this.top\r\n    );\r\n\r\n    if (\r\n      this.positionXBackup !== this.gridsterItem.$item.x ||\r\n      this.positionYBackup !== this.gridsterItem.$item.y\r\n    ) {\r\n      const lastPosition = this.path[this.path.length - 1];\r\n      let direction = '';\r\n      if (lastPosition.x < this.gridsterItem.$item.x) {\r\n        direction = this.push.fromWest;\r\n      } else if (lastPosition.x > this.gridsterItem.$item.x) {\r\n        direction = this.push.fromEast;\r\n      } else if (lastPosition.y < this.gridsterItem.$item.y) {\r\n        direction = this.push.fromNorth;\r\n      } else if (lastPosition.y > this.gridsterItem.$item.y) {\r\n        direction = this.push.fromSouth;\r\n      }\r\n      this.push.pushItems(direction, this.gridster.$options.disablePushOnDrag);\r\n      this.swap.swapItems();\r\n      this.collision = this.gridster.checkCollision(this.gridsterItem.$item);\r\n      if (this.collision) {\r\n        this.gridsterItem.$item.x = this.positionXBackup;\r\n        this.gridsterItem.$item.y = this.positionYBackup;\r\n        if (\r\n          this.gridster.$options.draggable.dropOverItems &&\r\n          this.collision !== true &&\r\n          this.collision.$item\r\n        ) {\r\n          this.gridster.movingItem = null;\r\n        }\r\n      } else {\r\n        this.path.push({\r\n          x: this.gridsterItem.$item.x,\r\n          y: this.gridsterItem.$item.y\r\n        });\r\n      }\r\n      this.push.checkPushBack();\r\n    }\r\n    this.gridster.previewStyle(true);\r\n  }\r\n\r\n  toggle(): void {\r\n    const enableDrag = this.gridsterItem.canBeDragged();\r\n    if (!this.enabled && enableDrag) {\r\n      this.enabled = !this.enabled;\r\n      this.mousedown = this.gridsterItem.renderer.listen(\r\n        this.gridsterItem.el,\r\n        'mousedown',\r\n        this.dragStartDelay\r\n      );\r\n      this.touchstart = this.gridsterItem.renderer.listen(\r\n        this.gridsterItem.el,\r\n        'touchstart',\r\n        this.dragStartDelay\r\n      );\r\n    } else if (this.enabled && !enableDrag) {\r\n      this.enabled = !this.enabled;\r\n      this.mousedown();\r\n      this.touchstart();\r\n    }\r\n  }\r\n\r\n  dragStartDelay = (e: MouseEvent): void => {\r\n    const target = e.target as HTMLElement;\r\n    if (target.classList.contains(GRIDSTER_ITEM_RESIZABLE_HANDLER_CLASS)) {\r\n      return;\r\n    }\r\n    if (GridsterUtils.checkContentClassForEvent(this.gridster, e)) {\r\n      return;\r\n    }\r\n    GridsterUtils.checkTouchEvent(e);\r\n    if (!this.gridster.$options.draggable.delayStart) {\r\n      this.dragStart(e);\r\n      return;\r\n    }\r\n    const timeout = setTimeout(() => {\r\n      this.dragStart(e);\r\n      cancelDrag();\r\n    }, this.gridster.$options.draggable.delayStart);\r\n    const cancelMouse = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'mouseup',\r\n      cancelDrag\r\n    );\r\n    const cancelMouseLeave = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'mouseleave',\r\n      cancelDrag\r\n    );\r\n    const cancelOnBlur = this.gridsterItem.renderer.listen(\r\n      'window',\r\n      'blur',\r\n      cancelDrag\r\n    );\r\n    const cancelTouchMove = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'touchmove',\r\n      cancelMove\r\n    );\r\n    const cancelTouchEnd = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'touchend',\r\n      cancelDrag\r\n    );\r\n    const cancelTouchCancel = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'touchcancel',\r\n      cancelDrag\r\n    );\r\n\r\n    function cancelMove(eventMove: MouseEvent): void {\r\n      GridsterUtils.checkTouchEvent(eventMove);\r\n      if (\r\n        Math.abs(eventMove.clientX - e.clientX) > 9 ||\r\n        Math.abs(eventMove.clientY - e.clientY) > 9\r\n      ) {\r\n        cancelDrag();\r\n      }\r\n    }\r\n\r\n    function cancelDrag(): void {\r\n      clearTimeout(timeout);\r\n      cancelOnBlur();\r\n      cancelMouse();\r\n      cancelMouseLeave();\r\n      cancelTouchMove();\r\n      cancelTouchEnd();\r\n      cancelTouchCancel();\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Returns the list of directions for given mouse event\r\n   * @param e Mouse event\r\n   * */\r\n  private getDirections(e: MouseEvent) {\r\n    const directions: string[] = [];\r\n    if (this.lastMouse.clientY > e.clientY) {\r\n      directions.push(Direction.UP);\r\n    }\r\n    if (this.lastMouse.clientY < e.clientY) {\r\n      directions.push(Direction.DOWN);\r\n    }\r\n    if (this.lastMouse.clientX < e.clientX) {\r\n      directions.push(Direction.RIGHT);\r\n    }\r\n    if (this.lastMouse.clientX > e.clientX) {\r\n      directions.push(Direction.LEFT);\r\n    }\r\n    return directions;\r\n  }\r\n}\r\n","import {\r\n  GridsterItem,\r\n  GridsterItemComponentInterface\r\n} from './gridsterItem.interface';\r\nimport { GridsterComponentInterface } from './gridster.interface';\r\n\r\nexport class GridsterPushResize {\r\n  public fromSouth: string;\r\n  public fromNorth: string;\r\n  public fromEast: string;\r\n  public fromWest: string;\r\n  private pushedItems: Array<GridsterItemComponentInterface>;\r\n  private pushedItemsPath: Array<Array<GridsterItem>>;\r\n  private gridsterItem: GridsterItemComponentInterface;\r\n  private gridster: GridsterComponentInterface;\r\n  private tryPattern: {\r\n    fromEast: (\r\n      gridsterItemCollide: GridsterItemComponentInterface,\r\n      gridsterItem: GridsterItemComponentInterface,\r\n      direction: string\r\n    ) => boolean;\r\n    fromWest: (\r\n      gridsterItemCollide: GridsterItemComponentInterface,\r\n      gridsterItem: GridsterItemComponentInterface,\r\n      direction: string\r\n    ) => boolean;\r\n    fromNorth: (\r\n      gridsterItemCollide: GridsterItemComponentInterface,\r\n      gridsterItem: GridsterItemComponentInterface,\r\n      direction: string\r\n    ) => boolean;\r\n    fromSouth: (\r\n      gridsterItemCollide: GridsterItemComponentInterface,\r\n      gridsterItem: GridsterItemComponentInterface,\r\n      direction: string\r\n    ) => boolean;\r\n  };\r\n\r\n  constructor(gridsterItem: GridsterItemComponentInterface) {\r\n    this.pushedItems = [];\r\n    this.pushedItemsPath = [];\r\n    this.gridsterItem = gridsterItem;\r\n    this.gridster = gridsterItem.gridster;\r\n    this.tryPattern = {\r\n      fromEast: this.tryWest,\r\n      fromWest: this.tryEast,\r\n      fromNorth: this.trySouth,\r\n      fromSouth: this.tryNorth\r\n    };\r\n    this.fromSouth = 'fromSouth';\r\n    this.fromNorth = 'fromNorth';\r\n    this.fromEast = 'fromEast';\r\n    this.fromWest = 'fromWest';\r\n  }\r\n\r\n  destroy(): void {\r\n    this.gridster = this.gridsterItem = null!;\r\n  }\r\n\r\n  pushItems(direction: string): boolean {\r\n    if (this.gridster.$options.pushResizeItems) {\r\n      return this.push(this.gridsterItem, direction);\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  restoreItems(): void {\r\n    let i = 0;\r\n    const l: number = this.pushedItems.length;\r\n    let pushedItem: GridsterItemComponentInterface;\r\n    for (; i < l; i++) {\r\n      pushedItem = this.pushedItems[i];\r\n      pushedItem.$item.x = pushedItem.item.x || 0;\r\n      pushedItem.$item.y = pushedItem.item.y || 0;\r\n      pushedItem.$item.cols = pushedItem.item.cols || 1;\r\n      pushedItem.$item.row = pushedItem.item.row || 1;\r\n      pushedItem.setSize();\r\n    }\r\n    this.pushedItems = [];\r\n    this.pushedItemsPath = [];\r\n  }\r\n\r\n  setPushedItems(): void {\r\n    let i = 0;\r\n    const l: number = this.pushedItems.length;\r\n    let pushedItem: GridsterItemComponentInterface;\r\n    for (; i < l; i++) {\r\n      pushedItem = this.pushedItems[i];\r\n      pushedItem.checkItemChanges(pushedItem.$item, pushedItem.item);\r\n    }\r\n    this.pushedItems = [];\r\n    this.pushedItemsPath = [];\r\n  }\r\n\r\n  checkPushBack(): void {\r\n    let i: number = this.pushedItems.length - 1;\r\n    let change = false;\r\n    for (; i > -1; i--) {\r\n      if (this.checkPushedItem(this.pushedItems[i], i)) {\r\n        change = true;\r\n      }\r\n    }\r\n    if (change) {\r\n      this.checkPushBack();\r\n    }\r\n  }\r\n\r\n  private push(\r\n    gridsterItem: GridsterItemComponentInterface,\r\n    direction: string\r\n  ): boolean {\r\n    const gridsterItemCollision: GridsterItemComponentInterface | boolean =\r\n      this.gridster.checkCollision(gridsterItem.$item);\r\n    if (\r\n      gridsterItemCollision &&\r\n      gridsterItemCollision !== true &&\r\n      gridsterItemCollision !== this.gridsterItem &&\r\n      gridsterItemCollision.canBeResized()\r\n    ) {\r\n      if (\r\n        this.tryPattern[direction].call(\r\n          this,\r\n          gridsterItemCollision,\r\n          gridsterItem,\r\n          direction\r\n        )\r\n      ) {\r\n        return true;\r\n      }\r\n    } else if (gridsterItemCollision === false) {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private trySouth(\r\n    gridsterItemCollide: GridsterItemComponentInterface,\r\n    gridsterItem: GridsterItemComponentInterface,\r\n    direction: string\r\n  ): boolean {\r\n    const backUpY = gridsterItemCollide.$item.y;\r\n    const backUpRows = gridsterItemCollide.$item.rows;\r\n    gridsterItemCollide.$item.y =\r\n      gridsterItem.$item.y + gridsterItem.$item.rows;\r\n    gridsterItemCollide.$item.rows =\r\n      backUpRows + backUpY - gridsterItemCollide.$item.y;\r\n    if (\r\n      !this.gridster.checkCollisionTwoItems(\r\n        gridsterItemCollide.$item,\r\n        gridsterItem.$item\r\n      ) &&\r\n      !this.gridster.checkGridCollision(gridsterItemCollide.$item)\r\n    ) {\r\n      gridsterItemCollide.setSize();\r\n      this.addToPushed(gridsterItemCollide);\r\n      this.push(gridsterItem, direction);\r\n      return true;\r\n    } else {\r\n      gridsterItemCollide.$item.y = backUpY;\r\n      gridsterItemCollide.$item.rows = backUpRows;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private tryNorth(\r\n    gridsterItemCollide: GridsterItemComponentInterface,\r\n    gridsterItem: GridsterItemComponentInterface,\r\n    direction: string\r\n  ): boolean {\r\n    const backUpRows = gridsterItemCollide.$item.rows;\r\n    gridsterItemCollide.$item.rows =\r\n      gridsterItem.$item.y - gridsterItemCollide.$item.y;\r\n    if (\r\n      !this.gridster.checkCollisionTwoItems(\r\n        gridsterItemCollide.$item,\r\n        gridsterItem.$item\r\n      ) &&\r\n      !this.gridster.checkGridCollision(gridsterItemCollide.$item)\r\n    ) {\r\n      gridsterItemCollide.setSize();\r\n      this.addToPushed(gridsterItemCollide);\r\n      this.push(gridsterItem, direction);\r\n      return true;\r\n    } else {\r\n      gridsterItemCollide.$item.rows = backUpRows;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private tryEast(\r\n    gridsterItemCollide: GridsterItemComponentInterface,\r\n    gridsterItem: GridsterItemComponentInterface,\r\n    direction: string\r\n  ): boolean {\r\n    const backUpX = gridsterItemCollide.$item.x;\r\n    const backUpCols = gridsterItemCollide.$item.cols;\r\n    gridsterItemCollide.$item.x =\r\n      gridsterItem.$item.x + gridsterItem.$item.cols;\r\n    gridsterItemCollide.$item.cols =\r\n      backUpCols + backUpX - gridsterItemCollide.$item.x;\r\n    if (\r\n      !this.gridster.checkCollisionTwoItems(\r\n        gridsterItemCollide.$item,\r\n        gridsterItem.$item\r\n      ) &&\r\n      !this.gridster.checkGridCollision(gridsterItemCollide.$item)\r\n    ) {\r\n      gridsterItemCollide.setSize();\r\n      this.addToPushed(gridsterItemCollide);\r\n      this.push(gridsterItem, direction);\r\n      return true;\r\n    } else {\r\n      gridsterItemCollide.$item.x = backUpX;\r\n      gridsterItemCollide.$item.cols = backUpCols;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private tryWest(\r\n    gridsterItemCollide: GridsterItemComponentInterface,\r\n    gridsterItem: GridsterItemComponentInterface,\r\n    direction: string\r\n  ): boolean {\r\n    const backUpCols = gridsterItemCollide.$item.cols;\r\n    gridsterItemCollide.$item.cols =\r\n      gridsterItem.$item.x - gridsterItemCollide.$item.x;\r\n    if (\r\n      !this.gridster.checkCollisionTwoItems(\r\n        gridsterItemCollide.$item,\r\n        gridsterItem.$item\r\n      ) &&\r\n      !this.gridster.checkGridCollision(gridsterItemCollide.$item)\r\n    ) {\r\n      gridsterItemCollide.setSize();\r\n      this.addToPushed(gridsterItemCollide);\r\n      this.push(gridsterItem, direction);\r\n      return true;\r\n    } else {\r\n      gridsterItemCollide.$item.cols = backUpCols;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private addToPushed(gridsterItem: GridsterItemComponentInterface): void {\r\n    if (this.pushedItems.indexOf(gridsterItem) < 0) {\r\n      this.pushedItems.push(gridsterItem);\r\n      this.pushedItemsPath.push([\r\n        {\r\n          x: gridsterItem.item.x || 0,\r\n          y: gridsterItem.item.y || 0,\r\n          cols: gridsterItem.item.cols || 0,\r\n          rows: gridsterItem.item.rows || 0\r\n        },\r\n        {\r\n          x: gridsterItem.$item.x,\r\n          y: gridsterItem.$item.y,\r\n          cols: gridsterItem.$item.cols,\r\n          rows: gridsterItem.$item.rows\r\n        }\r\n      ]);\r\n    } else {\r\n      const i = this.pushedItems.indexOf(gridsterItem);\r\n      this.pushedItemsPath[i].push({\r\n        x: gridsterItem.$item.x,\r\n        y: gridsterItem.$item.y,\r\n        cols: gridsterItem.$item.cols,\r\n        rows: gridsterItem.$item.rows\r\n      });\r\n    }\r\n  }\r\n\r\n  private removeFromPushed(i: number): void {\r\n    if (i > -1) {\r\n      this.pushedItems.splice(i, 1);\r\n      this.pushedItemsPath.splice(i, 1);\r\n    }\r\n  }\r\n\r\n  private checkPushedItem(\r\n    pushedItem: GridsterItemComponentInterface,\r\n    i: number\r\n  ): boolean {\r\n    const path = this.pushedItemsPath[i];\r\n    let j = path.length - 2;\r\n    let lastPosition: { x: number; y: number; cols: number; rows: number };\r\n    let x;\r\n    let y;\r\n    let cols;\r\n    let rows;\r\n    for (; j > -1; j--) {\r\n      lastPosition = path[j];\r\n      x = pushedItem.$item.x;\r\n      y = pushedItem.$item.y;\r\n      cols = pushedItem.$item.cols;\r\n      rows = pushedItem.$item.rows;\r\n      pushedItem.$item.x = lastPosition.x;\r\n      pushedItem.$item.y = lastPosition.y;\r\n      pushedItem.$item.cols = lastPosition.cols;\r\n      pushedItem.$item.rows = lastPosition.rows;\r\n      if (!this.gridster.findItemWithItem(pushedItem.$item)) {\r\n        pushedItem.setSize();\r\n        path.splice(j + 1, path.length - 1 - j);\r\n      } else {\r\n        pushedItem.$item.x = x;\r\n        pushedItem.$item.y = y;\r\n        pushedItem.$item.cols = cols;\r\n        pushedItem.$item.rows = rows;\r\n      }\r\n    }\r\n    if (path.length < 2) {\r\n      this.removeFromPushed(i);\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n}\r\n","import { NgZone } from '@angular/core';\r\nimport { GridsterComponentInterface } from './gridster.interface';\r\nimport { DirTypes } from './gridsterConfig.interface';\r\nimport { GridsterItemComponentInterface } from './gridsterItem.interface';\r\nimport { GridsterPush } from './gridsterPush.service';\r\nimport { GridsterPushResize } from './gridsterPushResize.service';\r\nimport { GridsterResizeEventType } from './gridsterResizeEventType.interface';\r\n\r\nimport { cancelScroll, scroll } from './gridsterScroll.service';\r\nimport { GridsterUtils } from './gridsterUtils.service';\r\n\r\nexport class GridsterResizable {\r\n  gridsterItem: GridsterItemComponentInterface;\r\n  gridster: GridsterComponentInterface;\r\n  lastMouse: {\r\n    clientX: number;\r\n    clientY: number;\r\n  };\r\n  itemBackup: number[];\r\n  resizeEventScrollType: GridsterResizeEventType;\r\n\r\n  /**\r\n   * The direction function may reference any of the `GridsterResizable` class methods, that are\r\n   * responsible for gridster resize when the `dragmove` event is being handled. E.g. it may reference\r\n   * the `handleNorth` method when the north handle is pressed and moved by a mouse.\r\n   */\r\n  private directionFunction:\r\n    | ((event: Pick<MouseEvent, 'clientX' | 'clientY'>) => void)\r\n    | null = null;\r\n\r\n  resizeEnabled: boolean;\r\n  mousemove: () => void;\r\n  mouseup: () => void;\r\n  mouseleave: () => void;\r\n  cancelOnBlur: () => void;\r\n  touchmove: () => void;\r\n  touchend: () => void;\r\n  touchcancel: () => void;\r\n  push: GridsterPush;\r\n  pushResize: GridsterPushResize;\r\n  minHeight: number;\r\n  minWidth: number;\r\n  offsetTop: number;\r\n  offsetLeft: number;\r\n  diffTop: number;\r\n  diffLeft: number;\r\n  diffRight: number;\r\n  diffBottom: number;\r\n  margin: number;\r\n  originalClientX: number;\r\n  originalClientY: number;\r\n  top: number;\r\n  left: number;\r\n  bottom: number;\r\n  right: number;\r\n  width: number;\r\n  height: number;\r\n  newPosition: number;\r\n\r\n  constructor(\r\n    gridsterItem: GridsterItemComponentInterface,\r\n    gridster: GridsterComponentInterface,\r\n    private zone: NgZone\r\n  ) {\r\n    this.gridsterItem = gridsterItem;\r\n    this.gridster = gridster;\r\n    this.lastMouse = {\r\n      clientX: 0,\r\n      clientY: 0\r\n    };\r\n    this.itemBackup = [0, 0, 0, 0];\r\n    this.resizeEventScrollType = {\r\n      west: false,\r\n      east: false,\r\n      north: false,\r\n      south: false\r\n    };\r\n  }\r\n\r\n  destroy(): void {\r\n    this.gridster?.previewStyle();\r\n    this.gridster = this.gridsterItem = null!;\r\n  }\r\n\r\n  dragStart(e: MouseEvent): void {\r\n    if (e.which && e.which !== 1) {\r\n      return;\r\n    }\r\n    if (\r\n      this.gridster.options.resizable &&\r\n      this.gridster.options.resizable.start\r\n    ) {\r\n      this.gridster.options.resizable.start(\r\n        this.gridsterItem.item,\r\n        this.gridsterItem,\r\n        e\r\n      );\r\n    }\r\n    e.stopPropagation();\r\n    e.preventDefault();\r\n\r\n    this.zone.runOutsideAngular(() => {\r\n      this.mousemove = this.gridsterItem.renderer.listen(\r\n        'document',\r\n        'mousemove',\r\n        this.dragMove\r\n      );\r\n      this.touchmove = this.gridster.renderer.listen(\r\n        this.gridster.el,\r\n        'touchmove',\r\n        this.dragMove\r\n      );\r\n    });\r\n    this.mouseup = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'mouseup',\r\n      this.dragStop\r\n    );\r\n    this.mouseleave = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'mouseleave',\r\n      this.dragStop\r\n    );\r\n    this.cancelOnBlur = this.gridsterItem.renderer.listen(\r\n      'window',\r\n      'blur',\r\n      this.dragStop\r\n    );\r\n    this.touchend = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'touchend',\r\n      this.dragStop\r\n    );\r\n    this.touchcancel = this.gridsterItem.renderer.listen(\r\n      'document',\r\n      'touchcancel',\r\n      this.dragStop\r\n    );\r\n\r\n    this.gridsterItem.renderer.addClass(\r\n      this.gridsterItem.el,\r\n      'gridster-item-resizing'\r\n    );\r\n    this.lastMouse.clientX = e.clientX;\r\n    this.lastMouse.clientY = e.clientY;\r\n    this.left = this.gridsterItem.left;\r\n    this.top = this.gridsterItem.top;\r\n    this.originalClientX = e.clientX;\r\n    this.originalClientY = e.clientY;\r\n    this.width = this.gridsterItem.width;\r\n    this.height = this.gridsterItem.height;\r\n    this.bottom = this.gridsterItem.top + this.gridsterItem.height;\r\n    this.right = this.gridsterItem.left + this.gridsterItem.width;\r\n    this.margin = this.gridster.$options.margin;\r\n    this.offsetLeft = this.gridster.el.scrollLeft - this.gridster.el.offsetLeft;\r\n    this.offsetTop = this.gridster.el.scrollTop - this.gridster.el.offsetTop;\r\n    this.diffLeft = e.clientX + this.offsetLeft - this.left;\r\n    this.diffRight = e.clientX + this.offsetLeft - this.right;\r\n    this.diffTop = e.clientY + this.offsetTop - this.top;\r\n    this.diffBottom = e.clientY + this.offsetTop - this.bottom;\r\n    this.minHeight =\r\n      this.gridster.positionYToPixels(\r\n        this.gridsterItem.$item.minItemRows ||\r\n          this.gridster.$options.minItemRows\r\n      ) - this.margin;\r\n    this.minWidth =\r\n      this.gridster.positionXToPixels(\r\n        this.gridsterItem.$item.minItemCols ||\r\n          this.gridster.$options.minItemCols\r\n      ) - this.margin;\r\n    this.gridster.movingItem = this.gridsterItem.$item;\r\n    this.gridster.previewStyle();\r\n    this.push = new GridsterPush(this.gridsterItem);\r\n    this.pushResize = new GridsterPushResize(this.gridsterItem);\r\n    this.gridster.dragInProgress = true;\r\n    this.gridster.updateGrid();\r\n\r\n    const { classList } = e.target as HTMLElement;\r\n\r\n    if (classList.contains('handle-n')) {\r\n      this.resizeEventScrollType.north = true;\r\n      this.directionFunction = this.handleNorth;\r\n    } else if (classList.contains('handle-w')) {\r\n      if (this.gridster.$options.dirType === DirTypes.RTL) {\r\n        this.resizeEventScrollType.east = true;\r\n        this.directionFunction = this.handleEast;\r\n      } else {\r\n        this.resizeEventScrollType.west = true;\r\n        this.directionFunction = this.handleWest;\r\n      }\r\n    } else if (classList.contains('handle-s')) {\r\n      this.resizeEventScrollType.south = true;\r\n      this.directionFunction = this.handleSouth;\r\n    } else if (classList.contains('handle-e')) {\r\n      if (this.gridster.$options.dirType === DirTypes.RTL) {\r\n        this.resizeEventScrollType.west = true;\r\n        this.directionFunction = this.handleWest;\r\n      } else {\r\n        this.resizeEventScrollType.east = true;\r\n        this.directionFunction = this.handleEast;\r\n      }\r\n    } else if (classList.contains('handle-nw')) {\r\n      if (this.gridster.$options.dirType === DirTypes.RTL) {\r\n        this.resizeEventScrollType.north = true;\r\n        this.resizeEventScrollType.east = true;\r\n        this.directionFunction = this.handleNorthEast;\r\n      } else {\r\n        this.resizeEventScrollType.north = true;\r\n        this.resizeEventScrollType.west = true;\r\n        this.directionFunction = this.handleNorthWest;\r\n      }\r\n    } else if (classList.contains('handle-ne')) {\r\n      if (this.gridster.$options.dirType === DirTypes.RTL) {\r\n        this.resizeEventScrollType.north = true;\r\n        this.resizeEventScrollType.west = true;\r\n        this.directionFunction = this.handleNorthWest;\r\n      } else {\r\n        this.resizeEventScrollType.north = true;\r\n        this.resizeEventScrollType.east = true;\r\n        this.directionFunction = this.handleNorthEast;\r\n      }\r\n    } else if (classList.contains('handle-sw')) {\r\n      if (this.gridster.$options.dirType === DirTypes.RTL) {\r\n        this.resizeEventScrollType.south = true;\r\n        this.resizeEventScrollType.east = true;\r\n        this.directionFunction = this.handleSouthEast;\r\n      } else {\r\n        this.resizeEventScrollType.south = true;\r\n        this.resizeEventScrollType.west = true;\r\n        this.directionFunction = this.handleSouthWest;\r\n      }\r\n    } else if (classList.contains('handle-se')) {\r\n      if (this.gridster.$options.dirType === DirTypes.RTL) {\r\n        this.resizeEventScrollType.south = true;\r\n        this.resizeEventScrollType.west = true;\r\n        this.directionFunction = this.handleSouthWest;\r\n      } else {\r\n        this.resizeEventScrollType.south = true;\r\n        this.resizeEventScrollType.east = true;\r\n        this.directionFunction = this.handleSouthEast;\r\n      }\r\n    }\r\n  }\r\n\r\n  dragMove = (e: MouseEvent): void => {\r\n    if (this.directionFunction === null) {\r\n      throw new Error(\r\n        'The `directionFunction` has not been set before calling `dragMove`.'\r\n      );\r\n    }\r\n\r\n    e.stopPropagation();\r\n    e.preventDefault();\r\n    GridsterUtils.checkTouchEvent(e);\r\n    this.offsetTop = this.gridster.el.scrollTop - this.gridster.el.offsetTop;\r\n    this.offsetLeft = this.gridster.el.scrollLeft - this.gridster.el.offsetLeft;\r\n    scroll(\r\n      this.gridster,\r\n      this.left,\r\n      this.top,\r\n      this.width,\r\n      this.height,\r\n      e,\r\n      this.lastMouse,\r\n      this.directionFunction,\r\n      true,\r\n      this.resizeEventScrollType\r\n    );\r\n\r\n    const scale = this.gridster.options.scale || 1;\r\n    this.directionFunction({\r\n      clientX:\r\n        this.originalClientX + (e.clientX - this.originalClientX) / scale,\r\n      clientY: this.originalClientY + (e.clientY - this.originalClientY) / scale\r\n    });\r\n\r\n    this.lastMouse.clientX = e.clientX;\r\n    this.lastMouse.clientY = e.clientY;\r\n    this.zone.run(() => {\r\n      this.gridster.updateGrid();\r\n    });\r\n  };\r\n\r\n  dragStop = (e: MouseEvent): void => {\r\n    e.stopPropagation();\r\n    e.preventDefault();\r\n    cancelScroll();\r\n    this.mousemove();\r\n    this.mouseup();\r\n    this.mouseleave();\r\n    this.cancelOnBlur();\r\n    this.touchmove();\r\n    this.touchend();\r\n    this.touchcancel();\r\n    this.gridster.dragInProgress = false;\r\n    this.gridster.updateGrid();\r\n    if (\r\n      this.gridster.options.resizable &&\r\n      this.gridster.options.resizable.stop\r\n    ) {\r\n      Promise.resolve(\r\n        this.gridster.options.resizable.stop(\r\n          this.gridsterItem.item,\r\n          this.gridsterItem,\r\n          e\r\n        )\r\n      ).then(this.makeResize, this.cancelResize);\r\n    } else {\r\n      this.makeResize();\r\n    }\r\n    setTimeout(() => {\r\n      this.gridsterItem.renderer.removeClass(\r\n        this.gridsterItem.el,\r\n        'gridster-item-resizing'\r\n      );\r\n      if (this.gridster) {\r\n        this.gridster.movingItem = null;\r\n        this.gridster.previewStyle();\r\n      }\r\n    });\r\n  };\r\n\r\n  cancelResize = (): void => {\r\n    this.gridsterItem.$item.cols = this.gridsterItem.item.cols || 1;\r\n    this.gridsterItem.$item.rows = this.gridsterItem.item.rows || 1;\r\n    this.gridsterItem.$item.x = this.gridsterItem.item.x || 0;\r\n    this.gridsterItem.$item.y = this.gridsterItem.item.y || 0;\r\n    this.gridsterItem.setSize();\r\n    this.push.restoreItems();\r\n    this.pushResize.restoreItems();\r\n    this.push.destroy();\r\n    this.push = null!;\r\n    this.pushResize.destroy();\r\n    this.pushResize = null!;\r\n  };\r\n\r\n  makeResize = (): void => {\r\n    this.gridsterItem.setSize();\r\n    this.gridsterItem.checkItemChanges(\r\n      this.gridsterItem.$item,\r\n      this.gridsterItem.item\r\n    );\r\n    this.push.setPushedItems();\r\n    this.pushResize.setPushedItems();\r\n    this.push.destroy();\r\n    this.push = null!;\r\n    this.pushResize.destroy();\r\n    this.pushResize = null!;\r\n  };\r\n\r\n  private handleNorth = (e: MouseEvent): void => {\r\n    this.top = e.clientY + this.offsetTop - this.diffTop;\r\n    this.height = this.bottom - this.top;\r\n    if (this.minHeight > this.height) {\r\n      this.height = this.minHeight;\r\n      this.top = this.bottom - this.minHeight;\r\n    }\r\n    this.newPosition = this.gridster.pixelsToPositionY(\r\n      this.top + this.margin,\r\n      Math.floor\r\n    );\r\n    if (this.gridsterItem.$item.y !== this.newPosition) {\r\n      this.itemBackup[1] = this.gridsterItem.$item.y;\r\n      this.itemBackup[3] = this.gridsterItem.$item.rows;\r\n      this.gridsterItem.$item.rows +=\r\n        this.gridsterItem.$item.y - this.newPosition;\r\n      this.gridsterItem.$item.y = this.newPosition;\r\n      this.pushResize.pushItems(this.pushResize.fromSouth);\r\n      this.push.pushItems(\r\n        this.push.fromSouth,\r\n        this.gridster.$options.disablePushOnResize\r\n      );\r\n      if (this.gridster.checkCollision(this.gridsterItem.$item)) {\r\n        this.gridsterItem.$item.y = this.itemBackup[1];\r\n        this.gridsterItem.$item.rows = this.itemBackup[3];\r\n        this.setItemTop(\r\n          this.gridster.positionYToPixels(this.gridsterItem.$item.y)\r\n        );\r\n        this.setItemHeight(\r\n          this.gridster.positionYToPixels(this.gridsterItem.$item.rows) -\r\n            this.margin\r\n        );\r\n        return;\r\n      } else {\r\n        this.gridster.previewStyle();\r\n      }\r\n      this.pushResize.checkPushBack();\r\n      this.push.checkPushBack();\r\n    }\r\n    this.setItemTop(this.top);\r\n    this.setItemHeight(this.height);\r\n  };\r\n\r\n  private handleWest = (e: MouseEvent): void => {\r\n    const clientX =\r\n      this.gridster.$options.dirType === DirTypes.RTL\r\n        ? this.originalClientX + (this.originalClientX - e.clientX)\r\n        : e.clientX;\r\n    this.left = clientX + this.offsetLeft - this.diffLeft;\r\n\r\n    this.width = this.right - this.left;\r\n    if (this.minWidth > this.width) {\r\n      this.width = this.minWidth;\r\n      this.left = this.right - this.minWidth;\r\n    }\r\n    this.newPosition = this.gridster.pixelsToPositionX(\r\n      this.left + this.margin,\r\n      Math.floor\r\n    );\r\n    if (this.gridsterItem.$item.x !== this.newPosition) {\r\n      this.itemBackup[0] = this.gridsterItem.$item.x;\r\n      this.itemBackup[2] = this.gridsterItem.$item.cols;\r\n      this.gridsterItem.$item.cols +=\r\n        this.gridsterItem.$item.x - this.newPosition;\r\n      this.gridsterItem.$item.x = this.newPosition;\r\n      this.pushResize.pushItems(this.pushResize.fromEast);\r\n      this.push.pushItems(\r\n        this.push.fromEast,\r\n        this.gridster.$options.disablePushOnResize\r\n      );\r\n      if (this.gridster.checkCollision(this.gridsterItem.$item)) {\r\n        this.gridsterItem.$item.x = this.itemBackup[0];\r\n        this.gridsterItem.$item.cols = this.itemBackup[2];\r\n        this.setItemLeft(\r\n          this.gridster.positionXToPixels(this.gridsterItem.$item.x)\r\n        );\r\n        this.setItemWidth(\r\n          this.gridster.positionXToPixels(this.gridsterItem.$item.cols) -\r\n            this.margin\r\n        );\r\n        return;\r\n      } else {\r\n        this.gridster.previewStyle();\r\n      }\r\n      this.pushResize.checkPushBack();\r\n      this.push.checkPushBack();\r\n    }\r\n    this.setItemLeft(this.left);\r\n    this.setItemWidth(this.width);\r\n  };\r\n\r\n  private handleSouth = (e: MouseEvent): void => {\r\n    this.height = e.clientY + this.offsetTop - this.diffBottom - this.top;\r\n    if (this.minHeight > this.height) {\r\n      this.height = this.minHeight;\r\n    }\r\n    this.bottom = this.top + this.height;\r\n    this.newPosition = this.gridster.pixelsToPositionY(this.bottom, Math.ceil);\r\n    if (\r\n      this.gridsterItem.$item.y + this.gridsterItem.$item.rows !==\r\n      this.newPosition\r\n    ) {\r\n      this.itemBackup[3] = this.gridsterItem.$item.rows;\r\n      this.gridsterItem.$item.rows =\r\n        this.newPosition - this.gridsterItem.$item.y;\r\n      this.pushResize.pushItems(this.pushResize.fromNorth);\r\n      this.push.pushItems(\r\n        this.push.fromNorth,\r\n        this.gridster.$options.disablePushOnResize\r\n      );\r\n      if (this.gridster.checkCollision(this.gridsterItem.$item)) {\r\n        this.gridsterItem.$item.rows = this.itemBackup[3];\r\n        this.setItemHeight(\r\n          this.gridster.positionYToPixels(this.gridsterItem.$item.rows) -\r\n            this.margin\r\n        );\r\n        return;\r\n      } else {\r\n        this.gridster.previewStyle();\r\n      }\r\n      this.pushResize.checkPushBack();\r\n      this.push.checkPushBack();\r\n    }\r\n    this.setItemHeight(this.height);\r\n  };\r\n\r\n  private handleEast = (e: MouseEvent): void => {\r\n    const clientX =\r\n      this.gridster.$options.dirType === DirTypes.RTL\r\n        ? this.originalClientX + (this.originalClientX - e.clientX)\r\n        : e.clientX;\r\n    this.width = clientX + this.offsetLeft - this.diffRight - this.left;\r\n\r\n    if (this.minWidth > this.width) {\r\n      this.width = this.minWidth;\r\n    }\r\n    this.right = this.left + this.width;\r\n    this.newPosition = this.gridster.pixelsToPositionX(this.right, Math.ceil);\r\n    if (\r\n      this.gridsterItem.$item.x + this.gridsterItem.$item.cols !==\r\n      this.newPosition\r\n    ) {\r\n      this.itemBackup[2] = this.gridsterItem.$item.cols;\r\n      this.gridsterItem.$item.cols =\r\n        this.newPosition - this.gridsterItem.$item.x;\r\n      this.pushResize.pushItems(this.pushResize.fromWest);\r\n      this.push.pushItems(\r\n        this.push.fromWest,\r\n        this.gridster.$options.disablePushOnResize\r\n      );\r\n      if (this.gridster.checkCollision(this.gridsterItem.$item)) {\r\n        this.gridsterItem.$item.cols = this.itemBackup[2];\r\n        this.setItemWidth(\r\n          this.gridster.positionXToPixels(this.gridsterItem.$item.cols) -\r\n            this.margin\r\n        );\r\n        return;\r\n      } else {\r\n        this.gridster.previewStyle();\r\n      }\r\n      this.pushResize.checkPushBack();\r\n      this.push.checkPushBack();\r\n    }\r\n    this.setItemWidth(this.width);\r\n  };\r\n\r\n  private handleNorthWest = (e: MouseEvent): void => {\r\n    this.handleNorth(e);\r\n    this.handleWest(e);\r\n  };\r\n\r\n  private handleNorthEast = (e: MouseEvent): void => {\r\n    this.handleNorth(e);\r\n    this.handleEast(e);\r\n  };\r\n\r\n  private handleSouthWest = (e: MouseEvent): void => {\r\n    this.handleSouth(e);\r\n    this.handleWest(e);\r\n  };\r\n\r\n  private handleSouthEast = (e: MouseEvent): void => {\r\n    this.handleSouth(e);\r\n    this.handleEast(e);\r\n  };\r\n\r\n  toggle(): void {\r\n    this.resizeEnabled = this.gridsterItem.canBeResized();\r\n  }\r\n\r\n  dragStartDelay(e: MouseEvent | TouchEvent): void {\r\n    GridsterUtils.checkTouchEvent(e);\r\n\r\n    if (!this.gridster.$options.resizable.delayStart) {\r\n      this.dragStart(e as MouseEvent);\r\n      return;\r\n    }\r\n\r\n    const timeout = setTimeout(() => {\r\n      this.dragStart(e as MouseEvent);\r\n      cancelDrag();\r\n    }, this.gridster.$options.resizable.delayStart);\r\n\r\n    const {\r\n      cancelMouse,\r\n      cancelMouseLeave,\r\n      cancelOnBlur,\r\n      cancelTouchMove,\r\n      cancelTouchEnd,\r\n      cancelTouchCancel\r\n    } = this.zone.runOutsideAngular(() => {\r\n      // Note: all of these events are being added within the `<root>` zone since they all\r\n      // don't do any view updates and don't require Angular running change detection.\r\n      // All event listeners call `cancelDrag` once the event is dispatched, the `cancelDrag`\r\n      // is responsible only for removing event listeners.\r\n\r\n      const cancelMouse = this.gridsterItem.renderer.listen(\r\n        'document',\r\n        'mouseup',\r\n        cancelDrag\r\n      );\r\n      const cancelMouseLeave = this.gridsterItem.renderer.listen(\r\n        'document',\r\n        'mouseleave',\r\n        cancelDrag\r\n      );\r\n      const cancelOnBlur = this.gridsterItem.renderer.listen(\r\n        'window',\r\n        'blur',\r\n        cancelDrag\r\n      );\r\n      const cancelTouchMove = this.gridsterItem.renderer.listen(\r\n        'document',\r\n        'touchmove',\r\n        cancelMove\r\n      );\r\n      const cancelTouchEnd = this.gridsterItem.renderer.listen(\r\n        'document',\r\n        'touchend',\r\n        cancelDrag\r\n      );\r\n      const cancelTouchCancel = this.gridsterItem.renderer.listen(\r\n        'document',\r\n        'touchcancel',\r\n        cancelDrag\r\n      );\r\n      return {\r\n        cancelMouse,\r\n        cancelMouseLeave,\r\n        cancelOnBlur,\r\n        cancelTouchMove,\r\n        cancelTouchEnd,\r\n        cancelTouchCancel\r\n      };\r\n    });\r\n\r\n    function cancelMove(eventMove: MouseEvent): void {\r\n      GridsterUtils.checkTouchEvent(eventMove);\r\n      if (\r\n        Math.abs(eventMove.clientX - (e as MouseEvent).clientX) > 9 ||\r\n        Math.abs(eventMove.clientY - (e as MouseEvent).clientY) > 9\r\n      ) {\r\n        cancelDrag();\r\n      }\r\n    }\r\n\r\n    function cancelDrag(): void {\r\n      clearTimeout(timeout);\r\n      cancelOnBlur();\r\n      cancelMouse();\r\n      cancelMouseLeave();\r\n      cancelTouchMove();\r\n      cancelTouchEnd();\r\n      cancelTouchCancel();\r\n    }\r\n  }\r\n\r\n  setItemTop(top: number): void {\r\n    this.gridster.gridRenderer.setCellPosition(\r\n      this.gridsterItem.renderer,\r\n      this.gridsterItem.el,\r\n      this.left,\r\n      top\r\n    );\r\n  }\r\n\r\n  setItemLeft(left: number): void {\r\n    this.gridster.gridRenderer.setCellPosition(\r\n      this.gridsterItem.renderer,\r\n      this.gridsterItem.el,\r\n      left,\r\n      this.top\r\n    );\r\n  }\r\n\r\n  setItemHeight(height: number): void {\r\n    this.gridsterItem.renderer.setStyle(\r\n      this.gridsterItem.el,\r\n      'height',\r\n      height + 'px'\r\n    );\r\n  }\r\n\r\n  setItemWidth(width: number): void {\r\n    this.gridsterItem.renderer.setStyle(\r\n      this.gridsterItem.el,\r\n      'width',\r\n      width + 'px'\r\n    );\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  ElementRef,\r\n  HostBinding,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  ViewEncapsulation,\r\n  EventEmitter\r\n} from '@angular/core';\r\n\r\nimport { GridsterDraggable } from './gridsterDraggable.service';\r\nimport { GridsterResizable } from './gridsterResizable.service';\r\nimport { GridsterUtils } from './gridsterUtils.service';\r\nimport {\r\n  GridsterItem,\r\n  GridsterItemComponentInterface\r\n} from './gridsterItem.interface';\r\nimport { GridsterComponent } from './gridster.component';\r\n\r\n@Component({\r\n  selector: 'gridster-item',\r\n  templateUrl: './gridsterItem.html',\r\n  styleUrls: ['./gridsterItem.scss'],\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class GridsterItemComponent\r\n  implements OnInit, OnDestroy, OnChanges, GridsterItemComponentInterface\r\n{\r\n  @Input() item: GridsterItem;\r\n  @Output() itemInit = new EventEmitter<{\r\n    item: GridsterItem;\r\n    itemComponent: GridsterItemComponentInterface;\r\n  }>();\r\n  @Output() itemChange = new EventEmitter<{\r\n    item: GridsterItem;\r\n    itemComponent: GridsterItemComponentInterface;\r\n  }>();\r\n  @Output() itemResize = new EventEmitter<{\r\n    item: GridsterItem;\r\n    itemComponent: GridsterItemComponentInterface;\r\n  }>();\r\n  $item: GridsterItem;\r\n  el: HTMLElement;\r\n  gridster: GridsterComponent;\r\n  top: number;\r\n  left: number;\r\n  width: number;\r\n  height: number;\r\n  drag: GridsterDraggable;\r\n  resize: GridsterResizable;\r\n  notPlaced: boolean;\r\n  init: boolean;\r\n\r\n  @HostBinding('style.z-index')\r\n  get zIndex(): number {\r\n    return this.getLayerIndex() + this.gridster.$options.baseLayerIndex;\r\n  }\r\n\r\n  constructor(\r\n    @Inject(ElementRef) el: ElementRef,\r\n    gridster: GridsterComponent,\r\n    @Inject(Renderer2) public renderer: Renderer2,\r\n    @Inject(NgZone) private zone: NgZone\r\n  ) {\r\n    this.el = el.nativeElement;\r\n    this.$item = {\r\n      cols: -1,\r\n      rows: -1,\r\n      x: -1,\r\n      y: -1\r\n    };\r\n    this.gridster = gridster;\r\n    this.drag = new GridsterDraggable(this, gridster, this.zone);\r\n    this.resize = new GridsterResizable(this, gridster, this.zone);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.gridster.addItem(this);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.item) {\r\n      this.updateOptions();\r\n\r\n      if (!this.init) {\r\n        this.gridster.calculateLayout$.next();\r\n      }\r\n    }\r\n    if (changes.item && changes.item.previousValue) {\r\n      this.setSize();\r\n    }\r\n  }\r\n\r\n  updateOptions(): void {\r\n    this.$item = GridsterUtils.merge(this.$item, this.item, {\r\n      cols: undefined,\r\n      rows: undefined,\r\n      x: undefined,\r\n      y: undefined,\r\n      layerIndex: undefined,\r\n      dragEnabled: undefined,\r\n      resizeEnabled: undefined,\r\n      compactEnabled: undefined,\r\n      maxItemRows: undefined,\r\n      minItemRows: undefined,\r\n      maxItemCols: undefined,\r\n      minItemCols: undefined,\r\n      maxItemArea: undefined,\r\n      minItemArea: undefined\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.gridster.removeItem(this);\r\n    this.drag.destroy();\r\n    this.resize.destroy();\r\n    this.gridster = this.drag = this.resize = null!;\r\n  }\r\n\r\n  setSize(): void {\r\n    this.renderer.setStyle(this.el, 'display', this.notPlaced ? '' : 'block');\r\n    this.gridster.gridRenderer.updateItem(this.el, this.$item, this.renderer);\r\n    this.updateItemSize();\r\n  }\r\n\r\n  updateItemSize(): void {\r\n    const top = this.$item.y * this.gridster.curRowHeight;\r\n    const left = this.$item.x * this.gridster.curColWidth;\r\n    const width =\r\n      this.$item.cols * this.gridster.curColWidth -\r\n      this.gridster.$options.margin;\r\n    const height =\r\n      this.$item.rows * this.gridster.curRowHeight -\r\n      this.gridster.$options.margin;\r\n\r\n    this.top = top;\r\n    this.left = left;\r\n\r\n    if (!this.init && width > 0 && height > 0) {\r\n      this.init = true;\r\n      if (this.item.initCallback) {\r\n        this.item.initCallback(this.item, this);\r\n      }\r\n      if (this.gridster.options.itemInitCallback) {\r\n        this.gridster.options.itemInitCallback(this.item, this);\r\n      }\r\n      this.itemInit.next({ item: this.item, itemComponent: this });\r\n      if (this.gridster.$options.scrollToNewItems) {\r\n        this.el.scrollIntoView(false);\r\n      }\r\n    }\r\n    if (width !== this.width || height !== this.height) {\r\n      this.width = width;\r\n      this.height = height;\r\n      if (this.gridster.options.itemResizeCallback) {\r\n        this.gridster.options.itemResizeCallback(this.item, this);\r\n      }\r\n      this.itemResize.next({ item: this.item, itemComponent: this });\r\n    }\r\n  }\r\n\r\n  itemChanged(): void {\r\n    if (this.gridster.options.itemChangeCallback) {\r\n      this.gridster.options.itemChangeCallback(this.item, this);\r\n    }\r\n    this.itemChange.next({ item: this.item, itemComponent: this });\r\n  }\r\n\r\n  checkItemChanges(newValue: GridsterItem, oldValue: GridsterItem): void {\r\n    if (\r\n      newValue.rows === oldValue.rows &&\r\n      newValue.cols === oldValue.cols &&\r\n      newValue.x === oldValue.x &&\r\n      newValue.y === oldValue.y\r\n    ) {\r\n      return;\r\n    }\r\n    if (this.gridster.checkCollision(this.$item)) {\r\n      this.$item.x = oldValue.x || 0;\r\n      this.$item.y = oldValue.y || 0;\r\n      this.$item.cols = oldValue.cols || 1;\r\n      this.$item.rows = oldValue.rows || 1;\r\n      this.setSize();\r\n    } else {\r\n      this.item.cols = this.$item.cols;\r\n      this.item.rows = this.$item.rows;\r\n      this.item.x = this.$item.x;\r\n      this.item.y = this.$item.y;\r\n      this.gridster.calculateLayout$.next();\r\n      this.itemChanged();\r\n    }\r\n  }\r\n\r\n  canBeDragged(): boolean {\r\n    const gridDragEnabled = this.gridster.$options.draggable.enabled;\r\n    const itemDragEnabled =\r\n      this.$item.dragEnabled === undefined\r\n        ? gridDragEnabled\r\n        : this.$item.dragEnabled;\r\n    return !this.gridster.mobile && gridDragEnabled && itemDragEnabled;\r\n  }\r\n\r\n  canBeResized(): boolean {\r\n    const gridResizable = this.gridster.$options.resizable.enabled;\r\n    const itemResizable =\r\n      this.$item.resizeEnabled === undefined\r\n        ? gridResizable\r\n        : this.$item.resizeEnabled;\r\n    return !this.gridster.mobile && gridResizable && itemResizable;\r\n  }\r\n\r\n  bringToFront(offset: number): void {\r\n    if (offset && offset <= 0) {\r\n      return;\r\n    }\r\n    const layerIndex = this.getLayerIndex();\r\n    const topIndex = this.gridster.$options.maxLayerIndex;\r\n    if (layerIndex < topIndex) {\r\n      const targetIndex = offset ? layerIndex + offset : topIndex;\r\n      this.item.layerIndex = this.$item.layerIndex =\r\n        targetIndex > topIndex ? topIndex : targetIndex;\r\n    }\r\n  }\r\n\r\n  sendToBack(offset: number): void {\r\n    if (offset && offset <= 0) {\r\n      return;\r\n    }\r\n    const layerIndex = this.getLayerIndex();\r\n    if (layerIndex > 0) {\r\n      const targetIndex = offset ? layerIndex - offset : 0;\r\n      this.item.layerIndex = this.$item.layerIndex =\r\n        targetIndex < 0 ? 0 : targetIndex;\r\n    }\r\n  }\r\n\r\n  private getLayerIndex(): number {\r\n    if (this.item.layerIndex !== undefined) {\r\n      return this.item.layerIndex;\r\n    }\r\n    if (this.gridster.$options.defaultLayerIndex !== undefined) {\r\n      return this.gridster.$options.defaultLayerIndex;\r\n    }\r\n    return 0;\r\n  }\r\n}\r\n","<ng-content></ng-content>\r\n<div\r\n  (mousedown)=\"resize.dragStartDelay($event)\"\r\n  (touchstart)=\"resize.dragStartDelay($event)\"\r\n  *ngIf=\"gridster.$options.resizable.handles.s && resize.resizeEnabled\"\r\n  class=\"gridster-item-resizable-handler handle-s\"\r\n></div>\r\n<div\r\n  (mousedown)=\"resize.dragStartDelay($event)\"\r\n  (touchstart)=\"resize.dragStartDelay($event)\"\r\n  *ngIf=\"gridster.$options.resizable.handles.e && resize.resizeEnabled\"\r\n  class=\"gridster-item-resizable-handler handle-e\"\r\n></div>\r\n<div\r\n  (mousedown)=\"resize.dragStartDelay($event)\"\r\n  (touchstart)=\"resize.dragStartDelay($event)\"\r\n  *ngIf=\"gridster.$options.resizable.handles.n && resize.resizeEnabled\"\r\n  class=\"gridster-item-resizable-handler handle-n\"\r\n></div>\r\n<div\r\n  (mousedown)=\"resize.dragStartDelay($event)\"\r\n  (touchstart)=\"resize.dragStartDelay($event)\"\r\n  *ngIf=\"gridster.$options.resizable.handles.w && resize.resizeEnabled\"\r\n  class=\"gridster-item-resizable-handler handle-w\"\r\n></div>\r\n<div\r\n  (mousedown)=\"resize.dragStartDelay($event)\"\r\n  (touchstart)=\"resize.dragStartDelay($event)\"\r\n  *ngIf=\"gridster.$options.resizable.handles.se && resize.resizeEnabled\"\r\n  class=\"gridster-item-resizable-handler handle-se\"\r\n></div>\r\n<div\r\n  (mousedown)=\"resize.dragStartDelay($event)\"\r\n  (touchstart)=\"resize.dragStartDelay($event)\"\r\n  *ngIf=\"gridster.$options.resizable.handles.ne && resize.resizeEnabled\"\r\n  class=\"gridster-item-resizable-handler handle-ne\"\r\n></div>\r\n<div\r\n  (mousedown)=\"resize.dragStartDelay($event)\"\r\n  (touchstart)=\"resize.dragStartDelay($event)\"\r\n  *ngIf=\"gridster.$options.resizable.handles.sw && resize.resizeEnabled\"\r\n  class=\"gridster-item-resizable-handler handle-sw\"\r\n></div>\r\n<div\r\n  (mousedown)=\"resize.dragStartDelay($event)\"\r\n  (touchstart)=\"resize.dragStartDelay($event)\"\r\n  *ngIf=\"gridster.$options.resizable.handles.nw && resize.resizeEnabled\"\r\n  class=\"gridster-item-resizable-handler handle-nw\"\r\n></div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ngx-dashboard-widget-wrapper',\r\n  templateUrl: './ngx-dashboard-widget-wrapper.component.html',\r\n  styleUrls: ['./ngx-dashboard-widget-wrapper.component.scss']\r\n})\r\nexport class NgxDashboardWidgetWrapperComponent implements OnInit {\r\n  @Input() widgetWrapperOptions: any = {\r\n    vScroll: false,\r\n    hScroll: false,\r\n    showHeader: true,\r\n    showFooter: false\r\n  };\r\n\r\n  constructor() {}\r\n\r\n  ngOnInit(): void {}\r\n}\r\n","<div class=\"widget-wrapper\">\r\n  <div class=\"widget-container\">\r\n    <header class=\"widget-header\" *ngIf=\"widgetWrapperOptions.showHeader\">\r\n      <ng-content select=\"[Header]\"></ng-content>\r\n    </header>\r\n    <main\r\n      class=\"widget-body\"\r\n      [ngClass]=\"{\r\n        'o-Auto': widgetWrapperOptions.vScroll || widgetWrapperOptions.vScroll,\r\n        'o-Hidden':\r\n          !widgetWrapperOptions.vScroll && !widgetWrapperOptions.vScroll,\r\n        noVScroll: !widgetWrapperOptions.vScroll,\r\n        noHScroll: !widgetWrapperOptions.hScroll\r\n      }\"\r\n    >\r\n      <ng-content select=\"[Body]\"></ng-content>\r\n    </main>\r\n\r\n    <footer class=\"widget-footer\" *ngIf=\"widgetWrapperOptions.showFooter\">\r\n      <ng-content select=\"[Footer]\"></ng-content>\r\n    </footer>\r\n  </div>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MfeWidgetType } from '../../../../models/dashboard-widget-options.model';\r\n\r\n@Component({\r\n  selector: 'lib-dashboard-widget-error-view',\r\n  templateUrl: './dashboard-widget-error-view.component.html',\r\n  styleUrls: ['./dashboard-widget-error-view.component.scss']\r\n})\r\nexport class DashboardWidgetErrorViewComponent implements OnInit {\r\n  exceptionDetails: string = '';\r\n  widgetOptions: MfeWidgetType;\r\n  showErr = false;\r\n  constructor() {}\r\n\r\n  ngOnInit(): void {}\r\n\r\n  widgetNames(): string {\r\n    return this.widgetOptions.displayName;\r\n  }\r\n}\r\n","<ngx-dashboard-widget-wrapper\r\n  [widgetWrapperOptions]=\"{\r\n    vScroll: false,\r\n    hScroll: false,\r\n    showHeader: true,\r\n    showFooter: true\r\n  }\"\r\n  style=\"margin-top: -14px !important\"\r\n>\r\n  <div Header class=\"widgetChildItems\">\r\n    <!-- {{ 'WIDGET_NAMES' | dashTranslate }}: <strong>{{ widgetNames() }}</strong> -->\r\n  </div>\r\n  <div Body class=\"inheritWidgetSize\">\r\n    <!-- <strong>{{ 'WIDGET_OPTIONS' | dashTranslate }}:</strong>\r\n    <small>{{ widgetOptions | json }}</small> -->\r\n\r\n    <div class=\"errrowraper content\">\r\n      <div class=\"header\">\r\n        <div class=\"content\">\r\n          <div class=\"warning\">\r\n            <svg\r\n              width=\"24px\"\r\n              height=\"24px\"\r\n              viewBox=\"0 0 24 24\"\r\n              xmlns=\"http://www.w3.org/2000/svg\"\r\n            >\r\n              <path\r\n                d=\"M12.884 2.532c-.346-.654-1.422-.654-1.768 0l-9 17A.999.999 0 0 0 3 21h18a.998.998 0 0 0 .883-1.467L12.884 2.532zM13 18h-2v-2h2v2zm-2-4V9h2l.001 5H11z\"\r\n              />\r\n            </svg>\r\n          </div>\r\n\r\n          <div class=\"animated\">\r\n            <div class=\"avatar\">\r\n              <div class=\"avatar-image\">\r\n                <svg viewBox=\"0 0 10 10\" fill=\"#fff\">\r\n                  <path\r\n                    class=\"hole_path\"\r\n                    d=\"M0,0 L10,0 L10,10 L0,10 L0,0 Z M0,5 C0,7.76142375 2.23857625,10 5,10 C7.76142375,10 10,7.76142375 10,5 C10,2.23857625 7.76142375,2.22044605e-16 5,0 C2.23857625,-2.22044605e-16 0,2.23857625 0,5 L0,5 Z\"\r\n                  ></path>\r\n                </svg>\r\n              </div>\r\n            </div>\r\n            <div class=\"padding\"></div>\r\n            <div class=\"parent\"></div>\r\n            <div class=\"padding\"></div>\r\n            <div class=\"title\"></div>\r\n            <div class=\"padding\"></div>\r\n            <div class=\"followers\"></div>\r\n            <div class=\"padding\"></div>\r\n            <div class=\"description\"></div>\r\n            <div class=\"padding\"></div>\r\n            <div class=\"title\"></div>\r\n            <div class=\"padding\"></div>\r\n            <div class=\"parent\"></div>\r\n            <div class=\"padding\"></div>\r\n            <div class=\"title\"></div>\r\n            <div class=\"padding\"></div>\r\n            <div class=\"description\"></div>\r\n            <div class=\"padding\"></div>\r\n            <div class=\"followers\"></div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div Footer class=\"widgetChildItems\" style=\"margin-top: 10px\">\r\n    <div (click)=\"showErr = !showErr\" class=\"btn-showerr\">Widget Detials</div>\r\n    <div *ngIf=\"showErr\" class=\"warning-block\">\r\n      <div>\r\n        <strong>{{ 'WIDGET_OPTIONS' | dashTranslate }}:</strong>\r\n        <small>{{ widgetOptions | json }}</small>\r\n      </div>\r\n      <div>\r\n        <strong>{{ 'ERROR_DETAILS' | dashTranslate }}:</strong>\r\n        <div>{{ exceptionDetails }}</div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</ngx-dashboard-widget-wrapper>\r\n","import {\r\n  Component,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n  Input,\r\n  ChangeDetectorRef,\r\n  OnInit,\r\n  OnDestroy,\r\n  QueryList,\r\n  ViewChildren,\r\n  ElementRef,\r\n  AfterViewInit,\r\n  TemplateRef\r\n} from '@angular/core';\r\nimport { loadRemoteModule } from '@angular-architects/module-federation';\r\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport {\r\n  IDashboardWidgetOption,\r\n  MfeWidgetType\r\n} from '../../../../models/dashboard-widget-options.model';\r\nimport { SingleGridBoxItem } from '../../../../models/dashboard.models';\r\nimport { DashboardDesignerService } from '../../../../services/dashboard-designer.service';\r\nimport { DashboardIconService } from '../../../../services/dashboard-icon.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { DashboardWidgetErrorViewComponent } from '../dashboard-widget-error-view/dashboard-widget-error-view.component';\r\n\r\n@Component({\r\n  selector: 'dashboard-widget',\r\n  templateUrl: './dashboard-widget.component.html',\r\n  styleUrls: ['./dashboard-widget.component.scss']\r\n})\r\nexport class DashboardWidgetComponent implements OnInit, OnDestroy {\r\n  private _unsubscribeAll$ = new Subject<any>();\r\n  @Input() widgetOptions: IDashboardWidgetOption;\r\n  @ViewChild('vc', { read: ViewContainerRef, static: false })\r\n  viewContainer: ViewContainerRef | undefined;\r\n  widgetOptionDragged: MfeWidgetType[];\r\n  isWidgetDropped: boolean = false;\r\n  selectedWidgetOptions: MfeWidgetType[] = [];\r\n  @Input() singleGridBoxItem: SingleGridBoxItem;\r\n  isNewLayoutSelected: boolean;\r\n  isWidgetDragModeDisabled: boolean = false;\r\n  showMenu = false;\r\n  @Input() numberOfDragableItems: number = 5;\r\n  isMultipleWidgetDragEnabled: boolean = false;\r\n  @ViewChild('confirmModalTemplate', { static: true })\r\n  confirmTemplate: TemplateRef<any>;\r\n  modalRefs?: BsModalRef[] = [];\r\n  isTemplateWidgetOptionNeedsToPush: boolean;\r\n  tempIsWidgetOptionNeedsToPush: boolean;\r\n  tempWidgetOption: MfeWidgetType;\r\n  exceptionDetails: string;\r\n  totalModels: number;\r\n\r\n  constructor(\r\n    private _changeDetectorRef: ChangeDetectorRef,\r\n    private _dashboardDesignerService: DashboardDesignerService,\r\n    private _dashboardIconService: DashboardIconService,\r\n    private modalService: BsModalService\r\n  ) {\r\n    this._dashboardIconService.registerIcons(this.icons);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (\r\n      this.singleGridBoxItem.widgetOptions == null ||\r\n      this.singleGridBoxItem.widgetOptions == undefined\r\n    ) {\r\n      this.singleGridBoxItem.widgetOptions = [];\r\n    }\r\n    this._dashboardDesignerService.isNewLayoutSelected$\r\n      .pipe(takeUntil(this._unsubscribeAll$))\r\n      .subscribe((isNewLayoutSelected: boolean) => {\r\n        this.isNewLayoutSelected = isNewLayoutSelected;\r\n      });\r\n    this._dashboardDesignerService.isWidgetDragModeEnabled$\r\n      .pipe(takeUntil(this._unsubscribeAll$))\r\n      .subscribe((isWidgetDragModeEnabled: boolean) => {\r\n        this.isWidgetDragModeDisabled = isWidgetDragModeEnabled;\r\n        if (!this.isWidgetDragModeDisabled) {\r\n          this.deleteWidget();\r\n        }\r\n      });\r\n    this.applyWideget();\r\n  }\r\n\r\n  applyWideget() {\r\n    if (this.singleGridBoxItem.widgetOptions?.length > 0) {\r\n      this.selectedWidgetOptions = JSON.parse(\r\n        JSON.stringify(this.singleGridBoxItem.widgetOptions)\r\n      );\r\n      this.isWidgetDragModeDisabled = true;\r\n      this.selectedWidgetOptions.forEach(widgetOption => {\r\n        this.loadMfeWidget(widgetOption, false);\r\n      });\r\n    }\r\n  }\r\n\r\n  async loadMfeWidget(\r\n    widgetOption: MfeWidgetType,\r\n    isWidgetOptionNeedsToPush = true\r\n  ): Promise<void> {\r\n    try {\r\n      const m = await loadRemoteModule({\r\n        type: widgetOption.type as any,\r\n        remoteEntry: widgetOption.hostUrl,\r\n        exposedModule: widgetOption.exposedModule\r\n      });\r\n\r\n      this.viewContainer.createComponent(m[widgetOption.componentName]);\r\n      this.setWidgetDropOption(isWidgetOptionNeedsToPush, widgetOption);\r\n    } catch (e) {\r\n      console.error(\r\n        'Error while loading dynamic widget => ID: ',\r\n        this.singleGridBoxItem.id\r\n      );\r\n      console.error(e);\r\n      this.exceptionDetails = e;\r\n      this.tempIsWidgetOptionNeedsToPush = isWidgetOptionNeedsToPush;\r\n      this.tempWidgetOption = widgetOption;\r\n      this.openModal(this.confirmTemplate);\r\n    }\r\n  }\r\n\r\n  setWidgetDropOption(\r\n    isWidgetOptionNeedsToPush: boolean,\r\n    widgetOption: MfeWidgetType,\r\n    isError: boolean = false\r\n  ): void {\r\n    setTimeout(() => {\r\n      this.isWidgetDropped = true;\r\n      if (isWidgetOptionNeedsToPush) {\r\n        if (\r\n          this.singleGridBoxItem.widgetOptions == null ||\r\n          this.singleGridBoxItem.widgetOptions == undefined\r\n        ) {\r\n          this.singleGridBoxItem.widgetOptions = [];\r\n        }\r\n        this.singleGridBoxItem.widgetOptions.push(widgetOption);\r\n      }\r\n      this._changeDetectorRef.markForCheck();\r\n    }, 1000);\r\n    if (isError) {\r\n      const dashboardWidgetErrorViewComponent =\r\n        this.viewContainer.createComponent(DashboardWidgetErrorViewComponent);\r\n      const dashboardWidgetErrorViewComponentInstance =\r\n        dashboardWidgetErrorViewComponent.instance;\r\n      dashboardWidgetErrorViewComponentInstance.exceptionDetails =\r\n        this.exceptionDetails;\r\n      dashboardWidgetErrorViewComponentInstance.widgetOptions =\r\n        this.tempWidgetOption;\r\n      this.closeModel();\r\n    }\r\n  }\r\n\r\n  drop(event: CdkDragDrop<MfeWidgetType[]>) {\r\n    if (!this.isMultipleWidgetDragEnabled) {\r\n      if (this.selectedWidgetOptions.length > 0) {\r\n        alert('Please remove widget, before adding new...!');\r\n        return;\r\n      }\r\n    }\r\n\r\n    if (this.widgetOptions.mfeWidgetTypes[event.previousIndex]) {\r\n      this.selectedWidgetOptions.push(\r\n        this.widgetOptions.mfeWidgetTypes[event.previousIndex]\r\n      );\r\n      this.loadMfeWidget(\r\n        this.widgetOptions.mfeWidgetTypes[event.previousIndex],\r\n        true\r\n      );\r\n    }\r\n  }\r\n\r\n  deleteWidget() {\r\n    if (this.singleGridBoxItem.widgetOptions != null && this.viewContainer) {\r\n      this.selectedWidgetOptions = [];\r\n      this.singleGridBoxItem.widgetOptions = [];\r\n      this.viewContainer.clear();\r\n      this.isWidgetDropped = false;\r\n      setInterval(() => {\r\n        this.singleGridBoxItem.widgetOptions = [];\r\n        this._changeDetectorRef.markForCheck();\r\n      }, 1000);\r\n    }\r\n  }\r\n\r\n  removeItem($event: MouseEvent | TouchEvent): void {\r\n    $event.preventDefault();\r\n    $event.stopPropagation();\r\n    this._dashboardDesignerService.removeDashboardItem(this.singleGridBoxItem);\r\n  }\r\n\r\n  confirmRemoveitem(e) {\r\n    if (confirm('Are you sure want to remove?') == true) {\r\n      this.removeItem(e);\r\n    }\r\n  }\r\n\r\n  enableMultiwidgtDrop(e): void {\r\n    this.singleGridBoxItem['isMultipleWidgetDragEnabled'] =\r\n      this.isMultipleWidgetDragEnabled;\r\n  }\r\n\r\n  openModal(template: TemplateRef<any>) {\r\n    this.modalRefs.push(\r\n      this.modalService.show(\r\n        template,\r\n        Object.assign({}, { class: 'dashDesignerModal', animated: true })\r\n      )\r\n    );\r\n    this.totalModels = this.modalRefs.length - 1;\r\n  }\r\n\r\n  closeModel(): void {\r\n    this.modalRefs[this.totalModels].hide();\r\n    this.totalModels--;\r\n  }\r\n\r\n  private get icons(): Array<string> {\r\n    return ['delete-icon', 'drag-icon', 'settings-icon'];\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._unsubscribeAll$.next();\r\n    this._unsubscribeAll$.complete();\r\n  }\r\n}\r\n","<div\r\n  class=\"card page-wrap dashboard-widget\"\r\n  cdkDropList\r\n  [cdkDropListData]=\"widgetOptionDragged\"\r\n  (cdkDropListDropped)=\"drop($event)\"\r\n>\r\n  <div class=\"sizeIndicator\">\r\n    <small>{{ 'WIDTH' | dashTranslate }}: {{ singleGridBoxItem?.width }}</small>\r\n    <small\r\n      >{{ 'HEIGHT' | dashTranslate }}: {{ singleGridBoxItem?.height }}</small\r\n    >\r\n  </div>\r\n  <div class=\"idHolder\">\r\n    {{ 'ID' | dashTranslate }}: {{ singleGridBoxItem.id }}\r\n  </div>\r\n\r\n  <div class=\"sizeIndicator btm\">\r\n    <small>{{ 'WIDTH' | dashTranslate }}: {{ singleGridBoxItem?.width }}</small>\r\n    <small\r\n      >{{ 'HEIGHT' | dashTranslate }}: {{ singleGridBoxItem?.height }}</small\r\n    >\r\n  </div>\r\n  <div class=\"widgetMenu\" (click)=\"$event.stopPropagation()\">\r\n    <nav>\r\n      <dash-icon\r\n        (click)=\"showMenu = !showMenu\"\r\n        svgIcon=\"settings-icon\"\r\n        aria-hidden=\"false\"\r\n      ></dash-icon>\r\n\r\n      <ul class=\"menublock\" [hidden]=\"!showMenu\">\r\n        <li>\r\n          <span>{{ 'AUTO_HEIGHT' | dashTranslate }} </span>\r\n          <span\r\n            ><input\r\n              type=\"checkbox\"\r\n              [(ngModel)]=\"singleGridBoxItem.autoHeight\"\r\n            />\r\n          </span>\r\n        </li>\r\n        <li>\r\n          <span>{{ 'MULTI_DRAG_WIDGET' | dashTranslate }} </span>\r\n          <span\r\n            ><input\r\n              type=\"checkbox\"\r\n              (change)=\"enableMultiwidgtDrop($event)\"\r\n              [(ngModel)]=\"isMultipleWidgetDragEnabled\"\r\n            />\r\n          </span>\r\n        </li>\r\n      </ul>\r\n    </nav>\r\n\r\n    <a\r\n      title=\"delete\"\r\n      href=\"javascript:void(0)\"\r\n      *ngIf=\"isNewLayoutSelected\"\r\n      class=\"cursor-pointer removeBtn\"\r\n      (mousedown)=\"confirmRemoveitem($event)\"\r\n      (touchstart)=\"removeItem($event)\"\r\n    >\r\n      X\r\n    </a>\r\n  </div>\r\n\r\n  <div *ngIf=\"selectedWidgetOptions?.length > 0\" class=\"card-header d-flex\">\r\n    <div class=\"card-title col-11 p-0 m-0\">\r\n      {{ selectedWidgetOptions[0]?.displayName }}\r\n    </div>\r\n    <div class=\"card-actions delete-btn-wap p-0 col-1 row justify-content-end\">\r\n      <ng-container *ngIf=\"isWidgetDropped\">\r\n        <a\r\n          (click)=\"deleteWidget()\"\r\n          title=\"{{ 'DELETE_WIDGET' | dashTranslate }}\"\r\n          class=\"cursor-pointer\"\r\n        >\r\n          <dash-icon svgIcon=\"delete-icon\" aria-hidden=\"false\"></dash-icon>\r\n        </a>\r\n      </ng-container>\r\n    </div>\r\n  </div>\r\n  <div class=\"card-body-warpper\" *ngIf=\"!isWidgetDragModeDisabled\">\r\n    <div class=\"card-body card-container\">\r\n      <div class=\"drag-container\">\r\n        <a href=\"javascript:void(0)\" title=\"Drag\">\r\n          <dash-icon svgIcon=\"drag-icon\" aria-hidden=\"false\"></dash-icon>\r\n        </a>\r\n        <ng-container #vc></ng-container>\r\n      </div>\r\n      <a\r\n        title=\"Delete Grid\"\r\n        href=\"javascript:void(0)\"\r\n        *ngIf=\"isNewLayoutSelected\"\r\n        class=\"cursor-pointer\"\r\n        (mousedown)=\"removeItem($event)\"\r\n        (touchstart)=\"removeItem($event)\"\r\n      >\r\n        <dash-icon svgIcon=\"delete-icon\" aria-hidden=\"false\"></dash-icon>\r\n      </a>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"card-body\" *ngIf=\"isWidgetDragModeDisabled\">\r\n    <ng-container>\r\n      <div style=\"text-align: center; color: #999\">\r\n        <span *ngIf=\"!isWidgetDropped\">{{\r\n          'DRAG_WIDGET_HERE' | dashTranslate\r\n        }}</span>\r\n        <ng-container #vc></ng-container>\r\n      </div>\r\n    </ng-container>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #confirmModalTemplate>\r\n  <div class=\"confirmationModel\" style=\"font-family: 'ADPortsGroup-Regular'\">\r\n    <div class=\"modal-header\">\r\n      <h4 class=\"modal-title pull-left\">\r\n        {{ 'DO_WANT_TO_SAVE_WIDGET_CONFIG' | dashTranslate }} (ID:\r\n        {{ singleGridBoxItem.id }})\r\n      </h4>\r\n      <button\r\n        type=\"button\"\r\n        class=\"btn-close close pull-right\"\r\n        aria-label=\"Close\"\r\n        (click)=\"closeModel()\"\r\n      >\r\n        <span aria-hidden=\"true\" class=\"visually-hidden\">&times;</span>\r\n      </button>\r\n    </div>\r\n\r\n    <div class=\"modal-body p-3\">\r\n      <div class=\"row\">\r\n        <div class=\"col-md-6\">\r\n          <h4 style=\"margin: 0px; color: darkred\">\r\n            {{ 'ERROR_DETAILS' | dashTranslate }}:\r\n          </h4>\r\n          <div style=\"font-size: 12px\">{{ exceptionDetails }}</div>\r\n          <br />\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"modal-footer p-3\">\r\n      <div\r\n        style=\"\r\n          width: 100%;\r\n          display: flex;\r\n          justify-content: space-between;\r\n          flex-direction: row;\r\n          align-items: center;\r\n        \"\r\n      >\r\n        <div class=\"col-auto\">\r\n          <small>Check console for more details.</small>\r\n        </div>\r\n        <div class=\"col text-right\">\r\n          <button\r\n            class=\"btn btn-primary col-auto p-2\"\r\n            (click)=\"\r\n              setWidgetDropOption(\r\n                tempIsWidgetOptionNeedsToPush,\r\n                tempWidgetOption,\r\n                true\r\n              )\r\n            \"\r\n          >\r\n            {{ 'OK' | dashTranslate }}\r\n          </button>\r\n\r\n          <button class=\"btn btn-danger col-auto p-2\" (click)=\"closeModel()\">\r\n            {{ 'CANCEL' | dashTranslate }}\r\n          </button>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n  GridsterItem,\r\n  GridsterItemComponentInterface\r\n} from '../../../../@shared';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { IDashboardWidgetOption } from '../../../../models/dashboard-widget-options.model';\r\nimport {\r\n  GridLayOutInstance,\r\n  IGridLayOutInstance\r\n} from '../../../../models/dashboard.models';\r\nimport { DashboardDesignerService } from '../../../../services/dashboard-designer.service';\r\n\r\n@Component({\r\n  selector: 'dashboard-widget-designer',\r\n  templateUrl: './dashboard-widget-designer.component.html',\r\n  styleUrls: ['./dashboard-widget-designer.component.scss']\r\n})\r\nexport class DashboardWidgetDesignerComponent implements OnInit, OnDestroy {\r\n  private _unsubscribeAll$ = new Subject<any>();\r\n  @Input() widgetOptions?: IDashboardWidgetOption;\r\n  dashboardLayout: IGridLayOutInstance;\r\n\r\n  constructor(private dashboardDesignerService: DashboardDesignerService) {}\r\n\r\n  ngOnInit(): void {\r\n    this.dashboardDesignerService.selectedLayoutEvent$\r\n      .pipe(takeUntil(this._unsubscribeAll$))\r\n      .subscribe((griditem: GridLayOutInstance) => {\r\n        if (griditem) {\r\n          this.dashboardLayout = griditem;\r\n          this.dashboardLayout.options.itemResizeCallback =\r\n            this.itemResize.bind(this);\r\n        }\r\n      });\r\n  }\r\n\r\n  public itemResize(\r\n    item: GridsterItem,\r\n    itemComponent: GridsterItemComponentInterface\r\n  ): void {\r\n    item.width = Math.round(itemComponent.width);\r\n    item.height = Math.round(itemComponent.height);\r\n  }\r\n\r\n  changedOptions(): void {\r\n    if (\r\n      this.dashboardLayout.options.api &&\r\n      this.dashboardLayout.options.api.optionsChanged\r\n    ) {\r\n      this.dashboardLayout.options.api.optionsChanged();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._unsubscribeAll$.next();\r\n    this._unsubscribeAll$.complete();\r\n  }\r\n}\r\n","<div class=\"card page-wrap\">\r\n  <!-- <div class=\"card-header p-1\" *ngIf=\"activeLayout\">\r\n    <div class=\"row\">\r\n      <div class=\"col-6\">\r\n        <strong\r\n          class=\"d-flex\"\r\n          style=\"color: #fff; font-size: large; margin: 5px 20px\"\r\n          >{{ activeLayout?.layoutName }}</strong\r\n        >\r\n      </div>\r\n\r\n      <div class=\"col-6 d-flex justify-content-end\">\r\n        <button class=\"btn btn-secondary pull-right\">Edit</button>\r\n      </div>\r\n    </div>\r\n  </div> -->\r\n</div>\r\n\r\n<div\r\n  class=\"inheritSize\"\r\n  *ngIf=\"dashboardLayout.dashboardItems?.length > 0\"\r\n  style=\"width: 2000px\"\r\n>\r\n  <gridster class=\"gridster-wrap\" [options]=\"dashboardLayout.options\">\r\n    <gridster-item\r\n      class=\"mgDashGridsterItem\"\r\n      [item]=\"item\"\r\n      *ngFor=\"let item of dashboardLayout.dashboardItems\"\r\n    >\r\n      <dashboard-widget\r\n        [widgetOptions]=\"widgetOptions\"\r\n        [singleGridBoxItem]=\"item\"\r\n      ></dashboard-widget>\r\n    </gridster-item>\r\n  </gridster>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n@Component({\r\n  selector: 'app-center-block',\r\n  templateUrl: './center-block.component.html',\r\n  styleUrls: ['./center-block.component.scss']\r\n})\r\nexport class CenterBlockComponent implements OnInit {\r\n  @Input() widgetOptions: any;\r\n  isEditMode: boolean;\r\n\r\n  constructor() {}\r\n\r\n  ngOnInit(): void {}\r\n}\r\n","<div class=\"inheritSize\">\r\n  <dashboard-widget-designer\r\n    [widgetOptions]=\"widgetOptions\"\r\n  ></dashboard-widget-designer>\r\n</div>\r\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\r\n// import { FormControl, FormGroup } from '@angular/forms';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { DashboardIconService } from '../../services/dashboard-icon.service';\r\n\r\n@Component({\r\n  selector: 'app-top-block',\r\n  templateUrl: './top-block.component.html',\r\n  styleUrls: ['./top-block.component.scss']\r\n})\r\nexport class TopBlockComponent implements OnInit {\r\n  @Input() layout: any;\r\n  modalRef?: BsModalRef;\r\n  // form: FormGroup;\r\n\r\n  constructor(\r\n    private modalService: BsModalService,\r\n    private _iconsService: DashboardIconService\r\n  ) {\r\n    this._iconsService.registerIcons(this.icons);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    // this.form = new FormGroup({\r\n    //   layoutname: new FormControl(),\r\n    //   layoutid: new FormControl()\r\n    // });\r\n  }\r\n\r\n  openModal(template: TemplateRef<any>) {\r\n    this.modalRef = this.modalService.show(\r\n      template,\r\n      Object.assign({}, { class: 'DashboardDesignerModals' })\r\n    );\r\n  }\r\n\r\n  saveLayout(): void {}\r\n\r\n  private get icons(): Array<string> {\r\n    return ['settings-icon'];\r\n  }\r\n}\r\n","<div id=\"topblockComponent\" class=\"inheritSize p-0\">\r\n  <div class=\"row m-0 fit-height\">\r\n    <div class=\"col-md-6 p-0 fit-height d-flex justify-content-start\">\r\n      <ul class=\"col-auto d-flex\">\r\n        <li\r\n          class=\"rightblock-trigger fit-height\"\r\n          [ngClass]=\"{ active: layout.left.show }\"\r\n          (click)=\"layout.left.show = !layout.left.show\"\r\n        >\r\n          <dash-icon svgIcon=\"menu-ico\" aria-hidden=\"false\"></dash-icon>\r\n        </li>\r\n      </ul>\r\n\r\n      <div class=\"layout-title\">\r\n        {{ 'DASHBOARD_DESIGNER' | dashTranslate }}\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"col-md-6 p-0 fit-height d-flex justify-content-end\">\r\n      <ul class=\"col-auto d-flex\">\r\n        <!-- don't delete may need in future -->\r\n        <!-- <li class=\"fit-height\">\r\n          <a\r\n            (click)=\"openModal(saveModalTemplate)\"\r\n            class=\"svgBgIcon inheritSize save_icon\"\r\n          >\r\n          </a>\r\n        </li> -->\r\n        <li\r\n          class=\"rightblock-trigger fit-height\"\r\n          [ngClass]=\"{ active: layout.right.show }\"\r\n          (click)=\"layout.right.show = !layout.right.show\"\r\n          *ngIf=\"layout.right.isShowSettings\"\r\n        >\r\n          <dash-icon\r\n            class=\"\"\r\n            svgIcon=\"settings-icon\"\r\n            aria-hidden=\"false\"\r\n          ></dash-icon>\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n<!-- <ng-template #saveModalTemplate>\r\n  <div class=\"saveModal dashDesignerModal\">\r\n    <div class=\"modal-header\">\r\n      <h4 class=\"modal-title pull-left\">{{ 'SAVE_LAYOUT' | dashTranslate }}</h4>\r\n      <button\r\n        type=\"button\"\r\n        class=\"btn-close close pull-right\"\r\n        aria-label=\"Close\"\r\n        (click)=\"modalRef?.hide()\"\r\n      >\r\n        <span aria-hidden=\"true\" class=\"visually-hidden\">&times;</span>\r\n      </button>\r\n    </div>\r\n\r\n    <div class=\"modal-body p-3\">\r\n      <form [formGroup]=\"form\">\r\n        <div class=\"row\">\r\n          <div class=\"col-md-6\">\r\n            <small>{{ 'LAYOUT_NAME' | dashTranslate }}</small>\r\n            <input\r\n              autocomplete=\"off\"\r\n              placeholder=\"{{ 'LAYOUT_NAME' | dashTranslate }}\"\r\n              formControlName=\"layoutname\"\r\n              class=\"form-control p-2 f-small\"\r\n            />\r\n          </div>\r\n\r\n          <div class=\"col-md-6\">\r\n            <small> {{ 'LAYOUT_ID' | dashTranslate }} </small>\r\n            <input\r\n              autocomplete=\"off\"\r\n              placeholder=\"{{ 'LAYOUT_ID' | dashTranslate }}\"\r\n              formControlName=\"layoutid\"\r\n              class=\"form-control p-2 f-small\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </form>\r\n    </div>\r\n\r\n    <div class=\"modal-footer p-3\">\r\n      <div class=\"row col-lg-12 gap-2 justify-content-end align-items-center\">\r\n        <button class=\"btn btn-primary col-auto p-2\" (click)=\"saveLayout()\">\r\n          Save Layout\r\n        </button>\r\n\r\n        <button class=\"btn btn-dark col-auto p-2\" (click)=\"modalRef?.hide()\">\r\n          {{ 'CANCEL' | dashTranslate }}\r\n        </button>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</ng-template> -->\r\n","import { Subject } from 'rxjs';\r\n\r\nexport interface Left {\r\n  show: boolean;\r\n  slideOut: boolean;\r\n  [key: string]: any;\r\n}\r\n\r\nexport interface Right {\r\n  show: boolean;\r\n  slideOut: boolean;\r\n  isShowSettings: boolean;\r\n  [key: string]: any;\r\n}\r\n\r\nexport interface Top {\r\n  show: boolean;\r\n  slideOut: boolean;\r\n  [key: string]: any;\r\n}\r\n\r\nexport interface Bottom {\r\n  show: boolean;\r\n  slideOut: boolean;\r\n  [key: string]: any;\r\n}\r\n\r\nexport interface Center {\r\n  show: boolean;\r\n  slideOut: boolean;\r\n  [key: string]: any;\r\n}\r\n\r\nexport interface LayoutConfigModel {\r\n  left: Left;\r\n  right: Right;\r\n  top: Top;\r\n  bottom: Bottom;\r\n  center: Center;\r\n  resizeFn$?: any;\r\n  toggleLeft?: any;\r\n  toggleRight?: any;\r\n  [key: string]: any;\r\n}\r\n\r\nexport const defaultLayoutConfig = JSON.parse(\r\n  JSON.stringify({\r\n    left: { show: true, slideOut: false },\r\n    right: { show: false, slideOut: false, isShowSettings: true },\r\n    top: { show: true, slideOut: false },\r\n    bottom: { show: true, slideOut: false },\r\n    center: { show: true, slideOut: false },\r\n    resizeFn$: new Subject()\r\n  })\r\n);\r\n","export enum DashResizeElementDirection {\r\n  TOP = 'top',\r\n  TOP_RIGHT = 'top-right',\r\n  RIGHT = 'right',\r\n  BOTTOM_RIGHT = 'bottom-right',\r\n  BOTTOM = 'bottom',\r\n  BOTTOM_LEFT = 'bottom-left',\r\n  LEFT = 'left',\r\n  TOP_LEFT = 'top-left'\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { DashIcon } from './components/dash-icon';\r\n\r\n@NgModule({\r\n  imports: [],\r\n  declarations: [DashIcon],\r\n  exports: [DashIcon]\r\n})\r\nexport class DashIconModule {}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n  DashResizeElementEvent,\r\n  Position\r\n} from './resize-element-event.interface';\r\nimport { DashResizeElementDirection } from './resize-element.enum';\r\n\r\n@Directive({\r\n  selector: '[resize], [resizeStart], [resizeEnd]'\r\n})\r\nexport class DashResizeElementDirective implements OnChanges, OnDestroy {\r\n  private mouseClickListener: () => void;\r\n  private mouseUpListener: () => void;\r\n  private mouseMoveListener: () => void;\r\n\r\n  private targetElementWidthValue: number;\r\n  private targetElementHeightValue: number;\r\n\r\n  private targetElementTopValue: number;\r\n  private targetElementLeftValue: number;\r\n\r\n  private originalEvent: MouseEvent;\r\n\r\n  @Input()\r\n  public targetElement: HTMLElement | ElementRef;\r\n\r\n  @Input()\r\n  public direction: DashResizeElementDirection;\r\n\r\n  @Input()\r\n  public proportionalResize: boolean;\r\n\r\n  @Input()\r\n  public rect: Position;\r\n\r\n  @Input()\r\n  public applyClass = 'resizing';\r\n\r\n  @Output()\r\n  public readonly resizeStart: EventEmitter<DashResizeElementEvent> = new EventEmitter();\r\n\r\n  @Output()\r\n  public readonly resize: EventEmitter<DashResizeElementEvent> = new EventEmitter();\r\n\r\n  @Output()\r\n  public readonly resizeEnd: EventEmitter<DashResizeElementEvent> = new EventEmitter();\r\n\r\n  @Input()\r\n  @HostBinding('attr.draggable')\r\n  public useDrag;\r\n\r\n  constructor(\r\n    private readonly elementRef: ElementRef,\r\n    private readonly renderer2: Renderer2\r\n  ) {\r\n    this.listenMouseDownEvent();\r\n  }\r\n\r\n  public ngOnChanges(changes: SimpleChanges) {\r\n    if (changes.useDrag) {\r\n      this.listenMouseDownEvent();\r\n    }\r\n  }\r\n\r\n  public ngOnDestroy() {\r\n    if (this.mouseClickListener) {\r\n      this.mouseClickListener();\r\n    }\r\n    if (this.mouseUpListener) {\r\n      this.mouseUpListener();\r\n    }\r\n    if (this.mouseMoveListener) {\r\n      this.mouseMoveListener();\r\n    }\r\n  }\r\n\r\n  public listenMouseDownEvent(): void {\r\n    if (this.mouseClickListener) {\r\n      this.mouseClickListener();\r\n    }\r\n\r\n    const event = this.useDrag ? 'dragstart' : 'mousedown';\r\n    this.mouseClickListener = this.renderer2.listen(\r\n      this.elementRef.nativeElement,\r\n      event,\r\n      evt => this.onMouseDown(evt)\r\n    );\r\n  }\r\n\r\n  public onMouseDown(evt: MouseEvent): void {\r\n    evt.preventDefault();\r\n\r\n    this.setOriginalData(evt);\r\n\r\n    this.resizeStart.emit(this.generateValuesForEvent(evt));\r\n\r\n    this.mouseUpListener = this.renderer2.listen('document', 'mouseup', event =>\r\n      this.onMouseUp(event)\r\n    );\r\n    this.mouseMoveListener = this.renderer2.listen(\r\n      'document',\r\n      'mousemove',\r\n      event => this.onMouseMove(event)\r\n    );\r\n    this.renderer2.addClass(this.targetNativeElement, this.applyClass);\r\n  }\r\n\r\n  private onMouseUp(evt: MouseEvent): void {\r\n    const eventValues = this.generateValuesForEvent(evt);\r\n    this.resize.emit(eventValues);\r\n    this.mouseMoveListener();\r\n    this.mouseUpListener();\r\n\r\n    this.renderer2.removeClass(this.targetNativeElement, this.applyClass);\r\n    this.resizeEnd.emit(eventValues);\r\n  }\r\n\r\n  private onMouseMove(evt: MouseEvent): void {\r\n    this.resize.emit(this.generateValuesForEvent(evt));\r\n  }\r\n\r\n  private setOriginalData(originalEvent: MouseEvent) {\r\n    this.originalEvent = originalEvent;\r\n\r\n    if (this.targetElement) {\r\n      const dataSource = this.targetNativeElement;\r\n      this.targetElementWidthValue = dataSource.offsetWidth;\r\n      this.targetElementHeightValue = dataSource.offsetHeight;\r\n      this.targetElementTopValue = dataSource.offsetTop;\r\n      this.targetElementLeftValue = dataSource.offsetLeft;\r\n    } else {\r\n      this.targetElementWidthValue = 0;\r\n      this.targetElementHeightValue = 0;\r\n      this.targetElementTopValue = 0;\r\n      this.targetElementLeftValue = 0;\r\n    }\r\n  }\r\n\r\n  private get targetNativeElement(): HTMLElement {\r\n    return this.targetElement instanceof ElementRef\r\n      ? this.targetElement.nativeElement\r\n      : this.targetElement;\r\n  }\r\n\r\n  private generateValuesForEvent(evt: MouseEvent): DashResizeElementEvent {\r\n    const originalXValue = this.originalEvent.clientX;\r\n    const originalYValue = this.originalEvent.clientY;\r\n\r\n    let diffWidthValue = evt.clientX - originalXValue;\r\n    let diffHeightValue = evt.clientY - originalYValue;\r\n    let diffTopValue = diffHeightValue;\r\n    let diffLeftValue = diffWidthValue;\r\n\r\n    switch (this.direction) {\r\n      case DashResizeElementDirection.TOP: {\r\n        diffHeightValue *= -1;\r\n        diffWidthValue = 0;\r\n        diffLeftValue = 0;\r\n        break;\r\n      }\r\n      case DashResizeElementDirection.TOP_RIGHT: {\r\n        diffHeightValue *= -1;\r\n        diffLeftValue = 0;\r\n        break;\r\n      }\r\n      case DashResizeElementDirection.RIGHT: {\r\n        diffHeightValue = 0;\r\n        diffTopValue = 0;\r\n        diffLeftValue = 0;\r\n        break;\r\n      }\r\n      case DashResizeElementDirection.BOTTOM_RIGHT: {\r\n        diffTopValue = 0;\r\n        diffLeftValue = 0;\r\n        break;\r\n      }\r\n      case DashResizeElementDirection.BOTTOM: {\r\n        diffWidthValue = 0;\r\n        diffLeftValue = 0;\r\n        diffTopValue = 0;\r\n        break;\r\n      }\r\n      case DashResizeElementDirection.BOTTOM_LEFT: {\r\n        diffWidthValue *= -1;\r\n        diffTopValue = 0;\r\n        break;\r\n      }\r\n      case DashResizeElementDirection.LEFT: {\r\n        diffWidthValue *= -1;\r\n        diffHeightValue = 0;\r\n        diffTopValue = 0;\r\n        break;\r\n      }\r\n      case DashResizeElementDirection.TOP_LEFT: {\r\n        diffHeightValue *= -1;\r\n        diffWidthValue *= -1;\r\n      }\r\n    }\r\n\r\n    let currentWidthValue = this.targetElementWidthValue + diffWidthValue;\r\n    let currentHeightValue = this.targetElementHeightValue + diffHeightValue;\r\n\r\n    if (this.proportionalResize) {\r\n      if (currentWidthValue > currentHeightValue) {\r\n        currentWidthValue = currentHeightValue;\r\n      } else {\r\n        currentHeightValue = currentWidthValue;\r\n      }\r\n    }\r\n\r\n    if (currentHeightValue <= 1) {\r\n      diffTopValue += currentHeightValue;\r\n    }\r\n\r\n    if (currentWidthValue <= 1) {\r\n      diffLeftValue += currentWidthValue;\r\n    }\r\n\r\n    if (currentWidthValue <= 0) {\r\n      currentWidthValue = 0;\r\n    }\r\n\r\n    if (currentHeightValue <= 0) {\r\n      currentHeightValue = 0;\r\n    }\r\n\r\n    let currentTopValue = this.targetElementTopValue + diffTopValue;\r\n    let currentLeftValue = this.targetElementLeftValue + diffLeftValue;\r\n\r\n    if (this.rect) {\r\n      if (currentTopValue < this.rect.top) {\r\n        currentHeightValue =\r\n          this.targetElementHeightValue +\r\n          this.targetElementTopValue -\r\n          this.rect.top;\r\n        currentTopValue = this.rect.top;\r\n      }\r\n      if (currentHeightValue + currentTopValue > this.rect.height) {\r\n        currentHeightValue = this.rect.height - currentTopValue;\r\n      }\r\n\r\n      if (currentLeftValue < this.rect.left) {\r\n        currentWidthValue =\r\n          this.targetElementWidthValue +\r\n          this.targetElementLeftValue -\r\n          this.rect.left;\r\n        currentLeftValue = this.rect.left;\r\n      }\r\n      if (currentWidthValue + currentLeftValue > this.rect.width) {\r\n        currentWidthValue = this.rect.width - currentLeftValue;\r\n      }\r\n    }\r\n\r\n    return {\r\n      originalEvent: this.originalEvent,\r\n      currentWidthValue,\r\n      currentHeightValue,\r\n      currentTopValue,\r\n      currentLeftValue,\r\n      originalWidthValue: this.targetElementWidthValue,\r\n      originalHeightValue: this.targetElementHeightValue,\r\n      originalTopValue: this.targetElementTopValue,\r\n      originalLeftValue: this.targetElementLeftValue,\r\n      differenceWidthValue: currentWidthValue - this.targetElementWidthValue,\r\n      differenceHeightValue: currentHeightValue - this.targetElementHeightValue,\r\n      differenceTopValue: currentTopValue - this.targetElementTopValue,\r\n      differenceLeftValue: currentLeftValue - this.targetElementLeftValue,\r\n      direction: this.direction\r\n    };\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { DashResizeElementDirective } from './resize-element.directive';\r\n\r\n@NgModule({\r\n  declarations: [DashResizeElementDirective],\r\n  imports: [],\r\n  exports: [DashResizeElementDirective]\r\n})\r\nexport class DashResizeElementModule {}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport function defaultEventArgumentFactory() {\r\n  return '$event';\r\n}\r\n\r\nexport const EventArgumentToken = new InjectionToken<string>('EventArgument', {\r\n  providedIn: 'root',\r\n  factory: defaultEventArgumentFactory\r\n});\r\n","import { KeyValueChangeRecord, SimpleChange, Type } from '@angular/core';\r\n\r\nexport type KeyValueChangeRecordAny = KeyValueChangeRecord<any, any>;\r\n\r\nexport function createNewChange(val: any): SimpleChange {\r\n  return new SimpleChange(undefined, val, true);\r\n}\r\n\r\nexport function createChange(val: any, prevVal: any): SimpleChange {\r\n  return new SimpleChange(prevVal, val, false);\r\n}\r\n\r\nexport function noop(): void {}\r\n\r\nexport function getCtorParamTypes(\r\n  ctor: any,\r\n  reflect: { getMetadata: (type: string, obj: object) => any[] }\r\n): any[] {\r\n  return reflect.getMetadata('design:paramtypes', ctor);\r\n}\r\n\r\n/**\r\n * Extract type arguments from Angular Directive/Component\r\n */\r\nexport function extractNgParamTypes(type: Type<any>): any[] | undefined {\r\n  // NOTE: Accessing private APIs of Angular\r\n  return (type as any)?.ctorParameters?.()?.map(param => param.type);\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  ComponentFactory,\r\n  ComponentFactoryResolver,\r\n  Inject,\r\n  Injectable,\r\n  KeyValueChanges,\r\n  KeyValueDiffers,\r\n  OnDestroy,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { DashComponentInjector } from '../component-injector';\r\nimport { createChange, createNewChange, noop } from '../util';\r\nimport { EventArgumentToken } from './event-argument';\r\nimport { EventHandler, InputsType, OutputsType, OutputWithArgs } from './types';\r\n\r\nexport interface IOMapInfo {\r\n  propName: string;\r\n  templateName: string;\r\n}\r\nexport type IOMappingList = IOMapInfo[];\r\nexport type KeyValueChangesAny = KeyValueChanges<any, any>;\r\n\r\nexport interface IoInitOptions {\r\n  trackOutputChanges?: boolean;\r\n}\r\n\r\ninterface OutputsTypeProcessed extends OutputsType {\r\n  [k: string]: EventHandler;\r\n}\r\n\r\n@Injectable()\r\nexport class IoService implements OnDestroy {\r\n  private checkInit = this.failInit;\r\n\r\n  private lastComponentInst: any = null;\r\n  private lastInputChanges: SimpleChanges;\r\n  private inputsDiffer = this.differs.find({}).create();\r\n  private compFactory: ComponentFactory<any> | null = null;\r\n  private outputsShouldDisconnect$ = new Subject<void>();\r\n\r\n  private inputs: InputsType;\r\n  private outputs: OutputsType;\r\n  private compInjector: DashComponentInjector;\r\n  private outputsChanged: (outputs: OutputsType) => boolean = () => false;\r\n\r\n  private get compRef() {\r\n    return this.compInjector.componentRef;\r\n  }\r\n\r\n  private get componentInst() {\r\n    return this.compRef ? this.compRef.instance : null;\r\n  }\r\n\r\n  private get componentInstChanged(): boolean {\r\n    if (this.lastComponentInst !== this.componentInst) {\r\n      this.lastComponentInst = this.componentInst;\r\n      return true;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  private get compCdr(): ChangeDetectorRef {\r\n    return this.compRef ? this.compRef.injector.get(ChangeDetectorRef) : null;\r\n  }\r\n\r\n  constructor(\r\n    private differs: KeyValueDiffers,\r\n    private cfr: ComponentFactoryResolver,\r\n    @Inject(EventArgumentToken)\r\n    private eventArgument: string,\r\n    private cdr: ChangeDetectorRef\r\n  ) {}\r\n\r\n  ngOnDestroy(): void {\r\n    this._disconnectOutputs();\r\n  }\r\n\r\n  init(componentInjector: DashComponentInjector, options: IoInitOptions = {}) {\r\n    this.checkInit = componentInjector ? noop : this.failInit;\r\n    this.compInjector = componentInjector;\r\n\r\n    if (options.trackOutputChanges) {\r\n      const outputsDiffer = this.differs.find({}).create();\r\n      this.outputsChanged = outputs => !!outputsDiffer.diff(outputs);\r\n    }\r\n  }\r\n\r\n  update(\r\n    inputs: InputsType,\r\n    outputs: OutputsType,\r\n    inputsChanged: boolean,\r\n    outputsChanged: boolean\r\n  ) {\r\n    this.checkInit();\r\n    this.updateIO(inputs, outputs);\r\n\r\n    const compChanged = this.componentInstChanged;\r\n\r\n    if (compChanged || inputsChanged) {\r\n      const inputsChanges = this._getInputsChanges();\r\n      if (inputsChanges) {\r\n        this._updateInputChanges(inputsChanges);\r\n      }\r\n      this.updateInputs(compChanged || !this.lastInputChanges);\r\n    }\r\n\r\n    if (compChanged || outputsChanged) {\r\n      this.bindOutputs();\r\n    }\r\n  }\r\n\r\n  maybeUpdate() {\r\n    this.checkInit();\r\n\r\n    if (this.componentInstChanged) {\r\n      this.updateInputs(true);\r\n      this.bindOutputs();\r\n      return;\r\n    }\r\n\r\n    if (this.outputsChanged(this.outputs)) {\r\n      this.bindOutputs();\r\n    }\r\n\r\n    if (!this.inputs) {\r\n      return;\r\n    }\r\n\r\n    const inputsChanges = this._getInputsChanges();\r\n\r\n    if (inputsChanges) {\r\n      const isNotFirstChange = !!this.lastInputChanges;\r\n      this._updateInputChanges(inputsChanges);\r\n\r\n      if (isNotFirstChange) {\r\n        this.updateInputs();\r\n      }\r\n    }\r\n  }\r\n\r\n  private updateIO(inputs: InputsType, outputs: OutputsType) {\r\n    this.inputs = inputs;\r\n    this.outputs = outputs;\r\n  }\r\n\r\n  private updateInputs(isFirstChange = false) {\r\n    if (isFirstChange) {\r\n      this._updateCompFactory();\r\n    }\r\n\r\n    const compInst = this.componentInst;\r\n    let inputs = this.inputs;\r\n\r\n    if (!inputs || !compInst) {\r\n      return;\r\n    }\r\n\r\n    inputs = this._resolveInputs(inputs);\r\n\r\n    Object.keys(inputs).forEach(p => (compInst[p] = inputs[p]));\r\n    // Mark component for check to re-render with new inputs\r\n    if (this.compCdr) {\r\n      this.compCdr.markForCheck();\r\n    }\r\n\r\n    this.notifyOnInputChanges(this.lastInputChanges, isFirstChange);\r\n  }\r\n\r\n  private bindOutputs() {\r\n    this._disconnectOutputs();\r\n\r\n    const compInst = this.componentInst;\r\n    let outputs = this.outputs;\r\n\r\n    if (!outputs || !compInst) {\r\n      return;\r\n    }\r\n\r\n    outputs = this._resolveOutputs(outputs);\r\n\r\n    Object.keys(outputs)\r\n      .filter(p => compInst[p])\r\n      .forEach(p =>\r\n        compInst[p]\r\n          .pipe(takeUntil(this.outputsShouldDisconnect$))\r\n          .subscribe((event: any) => {\r\n            this.cdr.markForCheck();\r\n            return (outputs[p] as EventHandler)(event);\r\n          })\r\n      );\r\n  }\r\n\r\n  private notifyOnInputChanges(\r\n    changes: SimpleChanges = {},\r\n    forceFirstChanges: boolean\r\n  ) {\r\n    // Exit early if component not interested to receive changes\r\n    if (!this.componentInst.ngOnChanges) {\r\n      return;\r\n    }\r\n\r\n    if (forceFirstChanges) {\r\n      changes = this._collectFirstChanges();\r\n    }\r\n\r\n    this.componentInst.ngOnChanges(changes);\r\n  }\r\n\r\n  private _disconnectOutputs() {\r\n    this.outputsShouldDisconnect$.next();\r\n  }\r\n\r\n  private _getInputsChanges(): KeyValueChangesAny {\r\n    return this.inputsDiffer.diff(this.inputs);\r\n  }\r\n\r\n  private _updateInputChanges(differ: KeyValueChangesAny) {\r\n    this.lastInputChanges = this._collectChangesFromDiffer(differ);\r\n  }\r\n\r\n  private _collectFirstChanges(): SimpleChanges {\r\n    const changes = {} as SimpleChanges;\r\n    const inputs = this.inputs;\r\n\r\n    Object.keys(inputs).forEach(\r\n      prop => (changes[prop] = createNewChange(inputs[prop]))\r\n    );\r\n\r\n    return this._resolveChanges(changes);\r\n  }\r\n\r\n  private _collectChangesFromDiffer(differ: KeyValueChangesAny): SimpleChanges {\r\n    const changes: SimpleChanges = {};\r\n\r\n    differ.forEachAddedItem(\r\n      record => (changes[record.key] = createNewChange(record.currentValue))\r\n    );\r\n\r\n    differ.forEachChangedItem(\r\n      record =>\r\n        (changes[record.key] = createChange(\r\n          record.currentValue,\r\n          record.previousValue\r\n        ))\r\n    );\r\n\r\n    return this._resolveChanges(changes);\r\n  }\r\n\r\n  private _resolveCompFactory(): ComponentFactory<any> | null {\r\n    try {\r\n      try {\r\n        return this.cfr.resolveComponentFactory(this.compRef.componentType);\r\n      } catch (e) {\r\n        // Fallback if componentType does not exist (happens on NgComponentOutlet)\r\n        return this.cfr.resolveComponentFactory(\r\n          this.compRef.instance.constructor\r\n        );\r\n      }\r\n    } catch (e) {\r\n      // Factory not available - bailout\r\n      return null;\r\n    }\r\n  }\r\n\r\n  private _updateCompFactory() {\r\n    this.compFactory = this._resolveCompFactory();\r\n  }\r\n\r\n  private _resolveInputs(inputs: InputsType): InputsType {\r\n    if (!this.compFactory) {\r\n      return inputs;\r\n    }\r\n\r\n    return this._remapIO(inputs, this.compFactory.inputs);\r\n  }\r\n\r\n  private _resolveOutputs(outputs: OutputsType): OutputsType {\r\n    outputs = this._processOutputs(outputs);\r\n\r\n    if (!this.compFactory) {\r\n      return outputs;\r\n    }\r\n\r\n    return this._remapIO(outputs, this.compFactory.outputs);\r\n  }\r\n\r\n  private _processOutputs(outputs: OutputsType): OutputsTypeProcessed {\r\n    const processedOutputs: OutputsTypeProcessed = {};\r\n\r\n    Object.keys(outputs).forEach(key => {\r\n      const outputExpr = outputs[key];\r\n\r\n      if (typeof outputExpr === 'function') {\r\n        processedOutputs[key] = outputExpr;\r\n      } else {\r\n        processedOutputs[key] =\r\n          outputExpr && this._processOutputArgs(outputExpr);\r\n      }\r\n    });\r\n\r\n    return processedOutputs;\r\n  }\r\n\r\n  private _processOutputArgs(output: OutputWithArgs): EventHandler {\r\n    const { handler } = output;\r\n    const args = 'args' in output ? output.args || [] : [this.eventArgument];\r\n\r\n    return event =>\r\n      handler(...args.map(arg => (arg === this.eventArgument ? event : arg)));\r\n  }\r\n\r\n  private _resolveChanges(changes: SimpleChanges): SimpleChanges {\r\n    if (!this.compFactory) {\r\n      return changes;\r\n    }\r\n\r\n    return this._remapIO(changes, this.compFactory.inputs);\r\n  }\r\n\r\n  private _remapIO<T extends Record<string, any>>(\r\n    io: T,\r\n    mapping: IOMappingList\r\n  ): T {\r\n    const newIO = {};\r\n\r\n    Object.keys(io).forEach(key => {\r\n      const newKey = this._findPropByTplInMapping(key, mapping) || key;\r\n      newIO[newKey] = io[key];\r\n    });\r\n\r\n    return newIO as T;\r\n  }\r\n\r\n  private _findPropByTplInMapping(\r\n    tplName: string,\r\n    mapping: IOMappingList\r\n  ): string | null {\r\n    for (const map of mapping) {\r\n      if (map.templateName === tplName) {\r\n        return map.propName;\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  private failInit() {\r\n    throw Error(\r\n      'IoService: ComponentInjector was not set! Please call init() method!'\r\n    );\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  ComponentFactoryResolver,\r\n  Inject,\r\n  Injectable,\r\n  KeyValueDiffers\r\n} from '@angular/core';\r\n\r\nimport { EventArgumentToken } from './event-argument';\r\nimport { IoService } from './io.service';\r\n\r\n@Injectable()\r\nexport class IoFactoryService {\r\n  constructor(\r\n    private differs: KeyValueDiffers,\r\n    private cfr: ComponentFactoryResolver,\r\n    @Inject(EventArgumentToken)\r\n    private eventArgument: string,\r\n    private cdr: ChangeDetectorRef\r\n  ) {}\r\n\r\n  create() {\r\n    return new IoService(this.differs, this.cfr, this.eventArgument, this.cdr);\r\n  }\r\n}\r\n","import { ComponentRef, InjectionToken } from '@angular/core';\r\n\r\nexport interface DashComponentInjector {\r\n  componentRef: ComponentRef<any> | null;\r\n}\r\n\r\nexport const DashComponentInjectorToken =\r\n  new InjectionToken<DashComponentInjector>('DynamicComponentInjector');\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport { ComponentRef, Directive, Host } from '@angular/core';\r\n\r\nimport { DashComponentInjector, DashComponentInjectorToken } from './token';\r\n\r\n@Directive({\r\n  // eslint-disable-next-line @angular-eslint/directive-selector\r\n  selector: '[ngComponentOutlet]',\r\n  exportAs: 'ndcComponentOutletInjector',\r\n  providers: [\r\n    {\r\n      provide: DashComponentInjectorToken,\r\n      useExisting: ComponentOutletInjectorDirective\r\n    }\r\n  ]\r\n})\r\nexport class ComponentOutletInjectorDirective implements DashComponentInjector {\r\n  get componentRef(): ComponentRef<any> {\r\n    // NOTE: Accessing private APIs of Angular\r\n    return (this.componentOutlet as any)._componentRef;\r\n  }\r\n\r\n  constructor(@Host() private componentOutlet: NgComponentOutlet) {}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { ComponentOutletInjectorDirective } from './component-outlet-injector.directive';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  exports: [ComponentOutletInjectorDirective],\r\n  declarations: [ComponentOutletInjectorDirective]\r\n})\r\nexport class ComponentOutletInjectorModule {}\r\n","import {\r\n  Directive,\r\n  DoCheck,\r\n  Inject,\r\n  Input,\r\n  OnChanges,\r\n  Optional,\r\n  SimpleChanges\r\n} from '@angular/core';\r\n\r\nimport {\r\n  DashComponentInjector,\r\n  DashComponentInjectorToken\r\n} from '../component-injector';\r\nimport { InputsType, IoService, OutputsType } from '../io';\r\n\r\n/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\r\n\r\n@Directive({\r\n  selector:\r\n    '[dashDynamicInputs],[dashDynamicOutputs],[ngComponentOutletDashDynamicInputs],[ngComponentOutletDashDynamicOutputs]',\r\n  providers: [IoService]\r\n})\r\nexport class DynamicIoDirective implements OnChanges, DoCheck {\r\n  @Input()\r\n  dashDynamicInputs: InputsType;\r\n  @Input()\r\n  ngComponentOutletDashDynamicInputs: InputsType;\r\n  @Input()\r\n  dashDynamicOutputs: OutputsType;\r\n  @Input()\r\n  ngComponentOutletDashDynamicOutputs: OutputsType;\r\n\r\n  private get inputs() {\r\n    return this.dashDynamicInputs || this.ngComponentOutletDashDynamicInputs;\r\n  }\r\n\r\n  private get outputs() {\r\n    return this.dashDynamicOutputs || this.ngComponentOutletDashDynamicOutputs;\r\n  }\r\n\r\n  constructor(\r\n    private ioService: IoService,\r\n    @Inject(DashComponentInjectorToken)\r\n    @Optional()\r\n    private componentInjector?: DashComponentInjector\r\n  ) {\r\n    this.ioService.init(this.componentInjector);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    this.ioService.update(\r\n      this.inputs,\r\n      this.outputs,\r\n      this.inputsChanged(changes),\r\n      this.outputsChanged(changes)\r\n    );\r\n  }\r\n\r\n  ngDoCheck() {\r\n    this.ioService.maybeUpdate();\r\n  }\r\n\r\n  private inputsChanged(changes: SimpleChanges): boolean {\r\n    return (\r\n      'ngComponentOutletDashDynamicInputs' in changes ||\r\n      'dashDynamicInputs' in changes\r\n    );\r\n  }\r\n\r\n  private outputsChanged(changes: SimpleChanges): boolean {\r\n    return (\r\n      'ngComponentOutletDashDynamicOutputs' in changes ||\r\n      'dashDynamicOutputs' in changes\r\n    );\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { ComponentOutletInjectorModule } from '../component-injector';\r\nimport { DynamicIoDirective } from './dynamic-io.directive';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  exports: [DynamicIoDirective, ComponentOutletInjectorModule],\r\n  declarations: [DynamicIoDirective]\r\n})\r\nexport class DynamicIoModule {}\r\n","import {\r\n  Component,\r\n  ComponentRef,\r\n  EventEmitter,\r\n  Injector,\r\n  Input,\r\n  OnChanges,\r\n  Output,\r\n  SimpleChanges,\r\n  StaticProvider,\r\n  Type,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport {\r\n  DashComponentInjector,\r\n  DashComponentInjectorToken\r\n} from './component-injector';\r\n\r\n@Component({\r\n  selector: 'dash-dynamic',\r\n  template: '',\r\n  providers: [\r\n    { provide: DashComponentInjectorToken, useExisting: DynamicComponent }\r\n  ]\r\n})\r\nexport class DynamicComponent<C = any>\r\n  implements OnChanges, DashComponentInjector\r\n{\r\n  private static UpdateOnInputs: (keyof DynamicComponent)[] = [\r\n    'dashDynamicComponent',\r\n    'dashDynamicInjector',\r\n    'dashDynamicProviders',\r\n    'dashDynamicContent'\r\n  ];\r\n\r\n  @Input()\r\n  dashDynamicComponent?: Type<C> | null;\r\n  @Input()\r\n  dashDynamicInjector?: Injector | null;\r\n  @Input()\r\n  dashDynamicProviders?: StaticProvider[] | null;\r\n  @Input()\r\n  dashDynamicContent?: any[][] | null;\r\n\r\n  @Output()\r\n  dashDynamicCreated: EventEmitter<ComponentRef<C>> = new EventEmitter();\r\n\r\n  componentRef: ComponentRef<C> | null = null;\r\n\r\n  constructor(private vcr: ViewContainerRef) {}\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (\r\n      DynamicComponent.UpdateOnInputs.some(input =>\r\n        changes.hasOwnProperty(input)\r\n      )\r\n    ) {\r\n      this.createDynamicComponent();\r\n    }\r\n  }\r\n\r\n  createDynamicComponent() {\r\n    this.vcr.clear();\r\n    this.componentRef = null;\r\n\r\n    if (this.dashDynamicComponent) {\r\n      this.componentRef = this.vcr.createComponent(this.dashDynamicComponent, {\r\n        index: 0,\r\n        injector: this._resolveInjector(),\r\n        projectableNodes: this.dashDynamicContent\r\n      });\r\n      this.dashDynamicCreated.emit(this.componentRef);\r\n    }\r\n  }\r\n\r\n  private _resolveInjector(): Injector {\r\n    let injector = this.dashDynamicInjector || this.vcr.injector;\r\n\r\n    if (this.dashDynamicProviders) {\r\n      injector = Injector.create({\r\n        providers: this.dashDynamicProviders,\r\n        parent: injector\r\n      });\r\n    }\r\n\r\n    return injector;\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { DynamicIoModule } from './dynamic-io';\r\nimport { DynamicComponent } from './dynamic.component';\r\n\r\n@NgModule({\r\n  imports: [CommonModule, DynamicIoModule],\r\n  exports: [DynamicComponent, DynamicIoModule],\r\n  declarations: [DynamicComponent]\r\n})\r\nexport class DynamicModule {}\r\n","import {\r\n  Directive,\r\n  DoCheck,\r\n  Inject,\r\n  Injector,\r\n  Input,\r\n  KeyValueChanges,\r\n  KeyValueDiffers,\r\n  Optional,\r\n  Renderer2,\r\n  Type\r\n} from '@angular/core';\r\n\r\nimport {\r\n  DashComponentInjector,\r\n  DashComponentInjectorToken\r\n} from '../component-injector';\r\n\r\nexport interface AttributesMap {\r\n  [key: string]: string;\r\n}\r\n\r\ninterface AttributeActions {\r\n  set: AttributesMap;\r\n  remove: string[];\r\n}\r\n\r\n@Directive({\r\n  selector: '[dashDynamicAttributes],[ngComponentOutletDashDynamicAttributes]',\r\n  exportAs: 'dashDynamicAttributes'\r\n})\r\nexport class DashAttributesDirective implements DoCheck {\r\n  @Input()\r\n  dashDynamicAttributes: AttributesMap;\r\n  @Input()\r\n  ngComponentOutletDashDynamicAttributes: AttributesMap;\r\n\r\n  private attrsDiffer = this.differs.find({}).create<string, string>();\r\n  private lastCompType: Type<any>;\r\n  private lastAttrActions: AttributeActions;\r\n\r\n  private get _attributes() {\r\n    return (\r\n      this.dashDynamicAttributes || this.ngComponentOutletDashDynamicAttributes\r\n    );\r\n  }\r\n\r\n  private get _nativeElement() {\r\n    return this.componentInjector.componentRef?.location.nativeElement;\r\n  }\r\n\r\n  private get _compType() {\r\n    return this.componentInjector.componentRef?.componentType;\r\n  }\r\n\r\n  private get _isCompChanged() {\r\n    if (this.lastCompType !== this._compType) {\r\n      this.lastCompType = this._compType;\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  constructor(\r\n    private renderer: Renderer2,\r\n    private differs: KeyValueDiffers,\r\n    private injector: Injector,\r\n    @Inject(DashComponentInjectorToken)\r\n    @Optional()\r\n    private componentInjector?: DashComponentInjector\r\n  ) {}\r\n\r\n  ngDoCheck(): void {\r\n    const isCompChanged = this._isCompChanged;\r\n    const changes = this.attrsDiffer.diff(this._attributes);\r\n\r\n    if (changes) {\r\n      this.lastAttrActions = this._changesToAttrActions(changes);\r\n    }\r\n\r\n    if (changes || (isCompChanged && this.lastAttrActions)) {\r\n      this._updateAttributes(this.lastAttrActions);\r\n    }\r\n  }\r\n\r\n  setAttribute(name: string, value: string, namespace?: string) {\r\n    if (this._nativeElement) {\r\n      this.renderer.setAttribute(this._nativeElement, name, value, namespace);\r\n    }\r\n  }\r\n\r\n  removeAttribute(name: string, namespace?: string) {\r\n    if (this._nativeElement) {\r\n      this.renderer.removeAttribute(this._nativeElement, name, namespace);\r\n    }\r\n  }\r\n\r\n  private _updateAttributes(actions: AttributeActions) {\r\n    // ? Early exit if no dynamic component\r\n    if (!this._compType) {\r\n      return;\r\n    }\r\n\r\n    Object.keys(actions.set).forEach(key =>\r\n      this.setAttribute(key, actions.set[key])\r\n    );\r\n\r\n    actions.remove.forEach(key => this.removeAttribute(key));\r\n  }\r\n\r\n  private _changesToAttrActions(\r\n    changes: KeyValueChanges<string, string>\r\n  ): AttributeActions {\r\n    const attrActions: AttributeActions = {\r\n      set: {},\r\n      remove: []\r\n    };\r\n\r\n    changes.forEachAddedItem(r => (attrActions.set[r.key] = r.currentValue));\r\n    changes.forEachChangedItem(r => (attrActions.set[r.key] = r.currentValue));\r\n    changes.forEachRemovedItem(r => attrActions.remove.push(r.key));\r\n\r\n    return attrActions;\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { ComponentOutletInjectorModule } from '../component-injector';\r\nimport { DashAttributesDirective } from './dynamic-attributes.directive';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  exports: [DashAttributesDirective, ComponentOutletInjectorModule],\r\n  declarations: [DashAttributesDirective]\r\n})\r\nexport class DashAttributesModule {}\r\n","export function browserWindowFactory() {\r\n  return window;\r\n}\r\n","import { Injectable, InjectionToken, Injector } from '@angular/core';\r\n\r\nimport { browserWindowFactory } from './window-ref-browser';\r\n\r\nexport const WindowRefToken = new InjectionToken<Window>('WindowRef', {\r\n  providedIn: 'root',\r\n  factory: browserWindowFactory\r\n});\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class WindowRefService {\r\n  nativeWindow = this.injector.get(WindowRefToken, null);\r\n\r\n  constructor(private injector: Injector) {}\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  ComponentRef,\r\n  Directive,\r\n  DoCheck,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Injector,\r\n  Input,\r\n  IterableChanges,\r\n  IterableDiffers,\r\n  OnDestroy,\r\n  Optional,\r\n  Output,\r\n  Type,\r\n  ViewContainerRef,\r\n  ViewRef\r\n} from '@angular/core';\r\n\r\nimport {\r\n  DashComponentInjector,\r\n  DashComponentInjectorToken\r\n} from '../component-injector';\r\nimport { InputsType, IoFactoryService, IoService, OutputsType } from '../io';\r\nimport { extractNgParamTypes, getCtorParamTypes } from '../util';\r\nimport { WindowRefService } from '../window-ref';\r\n\r\nexport interface DynamicDirectiveDef<T> {\r\n  type: Type<T>;\r\n  inputs?: InputsType;\r\n  outputs?: OutputsType;\r\n}\r\n\r\nexport function dynamicDirectiveDef<T>(\r\n  type: Type<T>,\r\n  inputs?: InputsType,\r\n  outputs?: OutputsType\r\n): DynamicDirectiveDef<T> {\r\n  return { type, inputs, outputs };\r\n}\r\n\r\nexport interface DirectiveRef<T> {\r\n  instance: T;\r\n  type: Type<T>;\r\n  injector: Injector;\r\n  hostComponent: Type<any>;\r\n  hostView: ViewRef;\r\n  location: ElementRef;\r\n  changeDetectorRef: ChangeDetectorRef;\r\n  // eslint-disable-next-line @typescript-eslint/ban-types\r\n  onDestroy: (callback: Function) => void;\r\n}\r\n\r\n@Directive({\r\n  selector: '[dashDynamicDirectives],[ngComponentOutletDashDynamicDirectives]',\r\n  providers: [IoFactoryService]\r\n})\r\nexport class DynamicDirectivesDirective implements OnDestroy, DoCheck {\r\n  @Input()\r\n  dashDynamicDirectives: DynamicDirectiveDef<any>[];\r\n  @Input()\r\n  ngComponentOutletDashDynamicDirectives: DynamicDirectiveDef<any>[];\r\n\r\n  @Output()\r\n  dashDynamicDirectivesCreated = new EventEmitter<DirectiveRef<any>[]>();\r\n\r\n  private lastCompInstance: any;\r\n\r\n  private get directives() {\r\n    return (\r\n      this.dashDynamicDirectives || this.ngComponentOutletDashDynamicDirectives\r\n    );\r\n  }\r\n\r\n  private get componentRef() {\r\n    return this.componentInjector.componentRef;\r\n  }\r\n\r\n  private get compInstance() {\r\n    return this.componentRef && this.componentRef.instance;\r\n  }\r\n\r\n  private get isCompChanged() {\r\n    if (this.lastCompInstance !== this.compInstance) {\r\n      this.lastCompInstance = this.compInstance;\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private get hostInjector() {\r\n    return this.componentRef.injector;\r\n  }\r\n\r\n  private get hostVcr(): ViewContainerRef {\r\n    // NOTE: Accessing private APIs of Angular\r\n    // eslint-disable-next-line @typescript-eslint/dot-notation\r\n    return this.componentRef['_viewRef']['_viewContainerRef'];\r\n  }\r\n\r\n  private get reflect() {\r\n    return (this.windowRef.nativeWindow as any).Reflect;\r\n  }\r\n\r\n  private dirRef = new Map<Type<any>, DirectiveRef<any>>();\r\n  private dirIo = new Map<Type<any>, IoService>();\r\n  private dirsDiffer = this.iterableDiffers\r\n    .find([])\r\n    .create<DynamicDirectiveDef<any>>((_, def) => def.type);\r\n\r\n  constructor(\r\n    private iterableDiffers: IterableDiffers,\r\n    private ioFactoryService: IoFactoryService,\r\n    private windowRef: WindowRefService,\r\n    @Inject(DashComponentInjectorToken)\r\n    @Optional()\r\n    private componentInjector?: DashComponentInjector\r\n  ) {}\r\n\r\n  ngDoCheck(): void {\r\n    if (this.maybeDestroyDirectives()) {\r\n      return;\r\n    }\r\n\r\n    const dirsChanges = this.dirsDiffer.diff(this.directives);\r\n\r\n    if (!dirsChanges) {\r\n      return this.updateDirectives();\r\n    }\r\n\r\n    this.processDirChanges(dirsChanges);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroyAllDirectives();\r\n  }\r\n\r\n  private maybeDestroyDirectives() {\r\n    if (this.isCompChanged || !this.componentRef) {\r\n      this.dirsDiffer.diff([]);\r\n      this.destroyAllDirectives();\r\n    }\r\n\r\n    return !this.componentRef;\r\n  }\r\n\r\n  private processDirChanges(\r\n    changes: IterableChanges<DynamicDirectiveDef<any>>\r\n  ) {\r\n    changes.forEachRemovedItem(({ item }) => this.destroyDirective(item));\r\n\r\n    const createdDirs = [];\r\n    changes.forEachAddedItem(({ item }) =>\r\n      createdDirs.push(this.initDirective(item))\r\n    );\r\n\r\n    if (createdDirs.length) {\r\n      this.dashDynamicDirectivesCreated.emit(createdDirs.filter(Boolean));\r\n    }\r\n  }\r\n\r\n  private updateDirectives() {\r\n    this.directives.forEach(dir => this.updateDirective(dir));\r\n  }\r\n\r\n  private updateDirective(dirDef: DynamicDirectiveDef<any>) {\r\n    const io = this.dirIo.get(dirDef.type);\r\n    io.update(dirDef.inputs, dirDef.outputs, false, false);\r\n    io.maybeUpdate();\r\n  }\r\n\r\n  private initDirective(\r\n    dirDef: DynamicDirectiveDef<any>\r\n  ): DirectiveRef<any> | undefined {\r\n    if (this.dirRef.has(dirDef.type)) {\r\n      return null;\r\n    }\r\n\r\n    const instance = this.createDirective(dirDef.type);\r\n    const dir = {\r\n      instance,\r\n      type: dirDef.type,\r\n      injector: this.hostInjector,\r\n      hostComponent: this.componentRef.instance,\r\n      hostView: this.componentRef.hostView,\r\n      location: this.componentRef.location,\r\n      changeDetectorRef: this.componentRef.changeDetectorRef,\r\n      onDestroy: this.componentRef.onDestroy\r\n    };\r\n\r\n    this.initDirIO(dir, dirDef.inputs, dirDef.outputs);\r\n    this.callInitHooks(instance);\r\n\r\n    this.dirRef.set(dir.type, dir);\r\n\r\n    return dir;\r\n  }\r\n\r\n  private destroyAllDirectives() {\r\n    this.dirRef.forEach(dir => this.destroyDirRef(dir));\r\n    this.dirRef.clear();\r\n    this.dirIo.clear();\r\n  }\r\n\r\n  private destroyDirective(dirDef: DynamicDirectiveDef<any>) {\r\n    this.destroyDirRef(this.dirRef.get(dirDef.type));\r\n    this.dirRef.delete(dirDef.type);\r\n    this.dirIo.delete(dirDef.type);\r\n  }\r\n\r\n  private initDirIO(dir: DirectiveRef<any>, inputs?: any, outputs?: any) {\r\n    const io = this.ioFactoryService.create();\r\n    io.init(\r\n      { componentRef: this.dirToCompDef(dir) },\r\n      { trackOutputChanges: true }\r\n    );\r\n    io.update(inputs, outputs, !!inputs, !!outputs);\r\n    this.dirIo.set(dir.type, io);\r\n  }\r\n\r\n  private dirToCompDef(dir: DirectiveRef<any>): ComponentRef<any> {\r\n    return {\r\n      changeDetectorRef: this.componentRef.changeDetectorRef,\r\n      hostView: this.componentRef.hostView,\r\n      location: this.componentRef.location,\r\n      destroy: this.componentRef.destroy,\r\n      onDestroy: this.componentRef.onDestroy,\r\n      injector: this.componentRef.injector,\r\n      instance: dir.instance,\r\n      componentType: dir.type\r\n    };\r\n  }\r\n\r\n  private destroyDirRef(dir: DirectiveRef<any>) {\r\n    const io = this.dirIo.get(dir.type);\r\n    io.ngOnDestroy();\r\n\r\n    if ('ngOnDestroy' in dir.instance) {\r\n      dir.instance.ngOnDestroy();\r\n    }\r\n  }\r\n\r\n  private createDirective<T>(dirType: Type<T>): T {\r\n    const directiveInjector = Injector.create({\r\n      providers: [\r\n        {\r\n          provide: dirType,\r\n          useClass: dirType,\r\n          deps: this.resolveDirParamTypes(dirType)\r\n        },\r\n        { provide: ElementRef, useValue: this.componentRef.location }\r\n      ],\r\n      parent: this.hostInjector,\r\n      name: `DynamicDirectiveInjector:${dirType.name}@${this.componentRef.componentType.name}`\r\n    });\r\n\r\n    return directiveInjector.get(dirType);\r\n  }\r\n\r\n  private resolveDirParamTypes(dirType: Type<any>): any[] {\r\n    return (\r\n      // First try Angular Compiler's metadata\r\n      extractNgParamTypes(dirType) ??\r\n      // Then fallback to Typescript Reflect API\r\n      getCtorParamTypes(dirType, this.reflect) ??\r\n      // Bailout\r\n      []\r\n    );\r\n  }\r\n\r\n  private callInitHooks(obj: any) {\r\n    this.callHook(obj, 'ngOnInit');\r\n    this.callHook(obj, 'ngDoCheck');\r\n    this.callHook(obj, 'ngAfterContentInit');\r\n    this.callHook(obj, 'ngAfterContentChecked');\r\n    this.callHook(obj, 'ngAfterViewInit');\r\n    this.callHook(obj, 'ngAfterViewChecked');\r\n  }\r\n\r\n  private callHook(obj: any, hook: string, args: any[] = []) {\r\n    if (obj[hook]) {\r\n      obj[hook](...args);\r\n    }\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { ComponentOutletInjectorModule } from '../component-injector';\r\nimport { DynamicDirectivesDirective } from './dynamic-directives.directive';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  exports: [DynamicDirectivesDirective, ComponentOutletInjectorModule],\r\n  declarations: [DynamicDirectivesDirective]\r\n})\r\nexport class DynamicDirectivesModule {}\r\n","import { GridsterDraggable } from './gridsterDraggable.service';\r\nimport { Renderer2 } from '@angular/core';\r\nimport { GridsterResizable } from './gridsterResizable.service';\r\nimport { GridsterComponentInterface } from './gridster.interface';\r\n\r\nexport abstract class GridsterItemComponentInterface {\r\n  item: GridsterItem;\r\n  $item: GridsterItem;\r\n  top: number;\r\n  left: number;\r\n  width: number;\r\n  height: number;\r\n  drag: GridsterDraggable;\r\n  resize: GridsterResizable;\r\n  notPlaced: boolean;\r\n  updateOptions: () => void;\r\n  itemChanged: () => void;\r\n  setSize: () => void;\r\n  checkItemChanges: (newValue: GridsterItem, oldValue: GridsterItem) => void;\r\n  canBeDragged: () => boolean;\r\n  canBeResized: () => boolean;\r\n  bringToFront: (offset: number) => void;\r\n  sendToBack: (v: number) => void;\r\n  el: HTMLElement;\r\n  gridster: GridsterComponentInterface;\r\n  renderer: Renderer2;\r\n}\r\n\r\nexport interface GridsterItem {\r\n  x: number;\r\n  y: number;\r\n  rows: number;\r\n  cols: number;\r\n  layerIndex?: number;\r\n  initCallback?: (\r\n    item: GridsterItem,\r\n    itemComponent: GridsterItemComponentInterface\r\n  ) => void;\r\n  dragEnabled?: boolean;\r\n  resizeEnabled?: boolean;\r\n  compactEnabled?: boolean;\r\n  maxItemRows?: number;\r\n  minItemRows?: number;\r\n  maxItemCols?: number;\r\n  minItemCols?: number;\r\n  minItemArea?: number;\r\n  maxItemArea?: number;\r\n\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  [propName: string]: any;\r\n}\r\n","import { GridsterConfigS } from './gridsterConfigS.interface';\r\nimport { ChangeDetectorRef, NgZone, Renderer2 } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { GridsterEmptyCell } from './gridsterEmptyCell.service';\r\nimport { GridsterCompact } from './gridsterCompact.service';\r\nimport { GridsterConfig } from './gridsterConfig.interface';\r\nimport {\r\n  GridsterItem,\r\n  GridsterItemComponentInterface\r\n} from './gridsterItem.interface';\r\nimport { GridsterRenderer } from './gridsterRenderer.service';\r\n\r\nexport abstract class GridsterComponentInterface {\r\n  $options: GridsterConfigS;\r\n  grid: GridsterItemComponentInterface[];\r\n  checkCollision: (\r\n    item: GridsterItem\r\n  ) => GridsterItemComponentInterface | boolean;\r\n  checkCollisionForSwaping: (\r\n    item: GridsterItem\r\n  ) => GridsterItemComponentInterface | boolean;\r\n  positionXToPixels: (x: number) => number;\r\n  pixelsToPositionX: (\r\n    x: number,\r\n    roundingMethod: (x: number) => number,\r\n    noLimit?: boolean\r\n  ) => number;\r\n  positionYToPixels: (y: number) => number;\r\n  pixelsToPositionY: (\r\n    y: number,\r\n    roundingMethod: (x: number) => number,\r\n    noLimit?: boolean\r\n  ) => number;\r\n  findItemWithItem: (\r\n    item: GridsterItem\r\n  ) => GridsterItemComponentInterface | boolean;\r\n  findItemsWithItem: (item: GridsterItem) => GridsterItemComponentInterface[];\r\n  checkGridCollision: (item: GridsterItem) => boolean;\r\n  checkCollisionTwoItems: (item: GridsterItem, item2: GridsterItem) => boolean;\r\n  getItemComponent: (\r\n    item: GridsterItem\r\n  ) => GridsterItemComponentInterface | undefined;\r\n  el: HTMLElement;\r\n  renderer: Renderer2;\r\n  gridRenderer: GridsterRenderer;\r\n  cdRef: ChangeDetectorRef;\r\n  options: GridsterConfig;\r\n  calculateLayout$: Subject<void>;\r\n  updateGrid: () => void;\r\n  movingItem: GridsterItem | null;\r\n  addItem: (item: GridsterItemComponentInterface) => void;\r\n  removeItem: (item: GridsterItemComponentInterface) => void;\r\n  previewStyle: (drag?: boolean) => void;\r\n  mobile: boolean;\r\n  curWidth: number;\r\n  curHeight: number;\r\n  columns: number;\r\n  rows: number;\r\n  curColWidth: number;\r\n  curRowHeight: number;\r\n  windowResize: (() => void) | null;\r\n  setGridDimensions: () => void;\r\n  dragInProgress: boolean;\r\n  emptyCell: GridsterEmptyCell;\r\n  compact: GridsterCompact;\r\n  zone: NgZone;\r\n  gridRows: Array<number>;\r\n  gridColumns: Array<number>;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { GridsterComponent } from './gridster.component';\r\nimport { GridsterItemComponent } from './gridsterItem.component';\r\nimport { GridsterPreviewComponent } from './gridsterPreview.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    GridsterComponent,\r\n    GridsterItemComponent,\r\n    GridsterPreviewComponent\r\n  ],\r\n  imports: [CommonModule],\r\n  exports: [GridsterComponent, GridsterItemComponent]\r\n})\r\nexport class GridsterModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { DashboardTranslatePipe } from './pipes/translate.pipe';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\r\nimport { TabsModule } from 'ngx-bootstrap/tabs';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DashIconModule } from './icons-loader/dash-icon.module';\r\nimport { DashboardIconService } from '../services/dashboard-icon.service';\r\nimport { TranslationService } from '../services/translation.service';\r\nimport { BsModalService, ModalModule } from 'ngx-bootstrap/modal';\r\nimport { DashResizeElementModule } from './dashboard-resizer/resize-element.module';\r\nimport { DynamicModule } from './dash-dynamic-loader';\r\nimport { GridsterModule } from './angular-gridster-2';\r\n\r\n@NgModule({\r\n  declarations: [DashboardTranslatePipe],\r\n  imports: [\r\n    GridsterModule,\r\n    TabsModule.forRoot(),\r\n    AccordionModule,\r\n    DashIconModule,\r\n    DashResizeElementModule,\r\n    DragDropModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    ModalModule.forRoot(),\r\n    DynamicModule\r\n  ],\r\n  exports: [\r\n    GridsterModule,\r\n    TabsModule,\r\n    AccordionModule,\r\n    DashIconModule,\r\n    DashResizeElementModule,\r\n    DragDropModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    DashboardTranslatePipe,\r\n    ModalModule,\r\n    DynamicModule\r\n  ],\r\n  providers: [TranslationService, DashboardIconService, BsModalService]\r\n})\r\nexport class DashboardDesignerSharedModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgxDashboardWidgetWrapperComponent } from './components/ngx-dashboard-widget-wrapper.component';\r\n\r\n@NgModule({\r\n  declarations: [NgxDashboardWidgetWrapperComponent],\r\n  imports: [CommonModule],\r\n  exports: [NgxDashboardWidgetWrapperComponent]\r\n})\r\nexport class NgxDashboardWidgetWrapperModule {}\r\n","import {\r\n  GridsterConfig,\r\n  Draggable,\r\n  Resizable,\r\n  PushDirections,\r\n  GridType,\r\n  CompactType,\r\n  DisplayGrid,\r\n  DirTypes\r\n} from '../@shared';\r\nimport { MfeWidgetType } from './dashboard-widget-options.model';\r\n\r\nexport interface Safe extends GridsterConfig {\r\n  draggable: Draggable;\r\n  resizable: Resizable;\r\n  pushDirections: PushDirections;\r\n}\r\n\r\nexport interface SingleGridBoxItem {\r\n  x: number;\r\n  y: number;\r\n  cols: number;\r\n  rows: number;\r\n  hasContent: boolean;\r\n  widgetOptions?: MfeWidgetType[];\r\n  id: number;\r\n  [key: string]: any;\r\n}\r\n\r\nexport interface IGridLayOutInstance {\r\n  options: Safe;\r\n  layoutName: string;\r\n  layoutDescription: string;\r\n  layoutId: string;\r\n  properties?: { autoHeight?: boolean };\r\n  width?: any;\r\n  height?: any;\r\n  dashboardItems: SingleGridBoxItem[];\r\n}\r\n\r\nexport class GridLayOutInstance implements IGridLayOutInstance {\r\n  options: Safe = {\r\n    gridType: GridType.Fixed,\r\n    compactType: CompactType.None,\r\n    margin: 0,\r\n    outerMargin: false,\r\n    outerMarginTop: null,\r\n    outerMarginRight: null,\r\n    outerMarginBottom: null,\r\n    outerMarginLeft: null,\r\n    useTransformPositioning: true,\r\n    mobileBreakpoint: 650,\r\n    useBodyForBreakpoint: false,\r\n    minCols: 1,\r\n    maxCols: 100,\r\n    minRows: 1,\r\n    maxRows: 100,\r\n    maxItemCols: 100,\r\n    minItemCols: 1,\r\n    maxItemRows: 100,\r\n    minItemRows: 1,\r\n    maxItemArea: 2500,\r\n    minItemArea: 1,\r\n    defaultItemCols: 1,\r\n    defaultItemRows: 1,\r\n    fixedColWidth: 20,\r\n    fixedRowHeight: 20,\r\n    keepFixedHeightInMobile: false,\r\n    keepFixedWidthInMobile: false,\r\n    scrollSensitivity: 10,\r\n    scrollSpeed: 20,\r\n    enableEmptyCellClick: false,\r\n    enableEmptyCellContextMenu: false,\r\n    enableEmptyCellDrop: false,\r\n    enableEmptyCellDrag: false,\r\n    enableOccupiedCellDrop: false,\r\n    emptyCellDragMaxCols: 50,\r\n    emptyCellDragMaxRows: 50,\r\n    ignoreMarginInRow: false,\r\n    draggable: {\r\n      enabled: true\r\n    },\r\n    resizable: {\r\n      enabled: true\r\n    },\r\n    swap: false,\r\n    pushItems: true,\r\n    disablePushOnDrag: true,\r\n    disablePushOnResize: false,\r\n    pushDirections: { north: true, east: true, south: true, west: true },\r\n    pushResizeItems: false,\r\n    displayGrid: DisplayGrid.Always,\r\n    disableWindowResize: false,\r\n    disableWarnings: false,\r\n    scrollToNewItems: false,\r\n    dirType: DirTypes.LTR\r\n  };\r\n\r\n  layoutName = '';\r\n  layoutDescription = '';\r\n  layoutId = null;\r\n  properties = {\r\n    autoHeight: false\r\n  };\r\n  dashboardItems: SingleGridBoxItem[] = [];\r\n\r\n  setValue?(editMode = true, name, id, items, options) {\r\n    this.layoutName = name;\r\n    this.layoutId = id;\r\n    if (items && items.length > 0) {\r\n      this.dashboardItems = items;\r\n    }\r\n    if (!editMode) {\r\n      this.options.draggable = {\r\n        enabled: false\r\n      };\r\n      this.options.resizable = {\r\n        enabled: false\r\n      };\r\n      this.options.displayGrid = DisplayGrid.None;\r\n    }\r\n  }\r\n\r\n  changedOptions?(): void {\r\n    if (this.options.api && this.options.api.optionsChanged) {\r\n      this.options.api.optionsChanged();\r\n    }\r\n  }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { GridType } from '../@shared';\r\nimport {\r\n  GridLayOutInstance,\r\n  SingleGridBoxItem\r\n} from '../models/dashboard.models';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DashboardLayoutService {\r\n  constructor() {}\r\n\r\n  getLayoutconfigByLayoutId(layoutid, id?: number): GridLayOutInstance {\r\n    let layoutJSON: SingleGridBoxItem[] = [];\r\n    const gridItem = new GridLayOutInstance();\r\n    switch (layoutid) {\r\n      case 'new': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: id,\r\n            cols: 20,\r\n            rows: 20,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout1': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout2': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 0,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n\r\n        break;\r\n      }\r\n      case 'Layout3': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 0,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout4': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 2,\r\n            id: 0,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout5': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 2,\r\n            id: 0,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout6': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 0,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 3,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout7': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            cols: 2,\r\n            id: 0,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            cols: 1,\r\n            id: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout8': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 1,\r\n            rows: 2,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 1,\r\n            rows: 2,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 3,\r\n            cols: 1,\r\n            rows: 2,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout9': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout10': {\r\n        //statements;\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout11': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 4,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 3,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 3,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 4,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout12': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout13': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 3,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout14': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout15': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout16': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 4,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 3,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 3,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 4,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout17': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 2,\r\n            widgetOptions: [],\r\n            id: 3,\r\n            cols: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout18': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 2,\r\n            widgetOptions: [],\r\n            id: 3,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 4,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout19': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 2,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 3,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout20': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 2,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 3,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 3,\r\n            cols: 2,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n      case 'Layout21': {\r\n        layoutJSON = [\r\n          {\r\n            x: 0,\r\n            y: 0,\r\n            widgetOptions: [],\r\n            id: 0,\r\n            cols: 4,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 1,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 1,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 2,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 0,\r\n            y: 2,\r\n            widgetOptions: [],\r\n            id: 3,\r\n            cols: 4,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 2,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 4,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          },\r\n          {\r\n            x: 3,\r\n            y: 1,\r\n            widgetOptions: [],\r\n            id: 5,\r\n            cols: 1,\r\n            rows: 1,\r\n            hasContent: true\r\n          }\r\n        ];\r\n        break;\r\n      }\r\n\r\n      default: {\r\n        //statements;\r\n        layoutJSON = [];\r\n      }\r\n    }\r\n\r\n    if (layoutid != 'new') {\r\n      gridItem.options.gridType = GridType.ScrollVertical;\r\n    }\r\n    gridItem.setValue(true, layoutid, layoutid, layoutJSON, null);\r\n    return gridItem;\r\n  }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n  defaultLayoutConfig,\r\n  LayoutConfigModel\r\n} from '../../../..//models/dashboard-layout-config.model';\r\nimport { Subject } from 'rxjs';\r\nimport { DashResizeElementEvent } from '../../../../@shared/dashboard-resizer/resize-element-event.interface';\r\nimport { DashResizeElementDirection } from '../../../../@shared/dashboard-resizer/resize-element.enum';\r\nimport { IDashboardWidgetOption } from '../../../../models/dashboard-widget-options.model';\r\nimport { IGridLayOutInstance } from '../../../../models/dashboard.models';\r\nimport { DashboardDesignerService } from '../../../../services/dashboard-designer.service';\r\nimport { DashboardIconService } from '../../../../services/dashboard-icon.service';\r\nimport { DashboardLayoutService } from '../../../../services/dashboard-layout.service';\r\nimport { TranslationService } from '../../../../services/translation.service';\r\n\r\n@Component({\r\n  selector: 'ngx-dasboard-designer',\r\n  templateUrl: './ngx-dasboard-designer.component.html',\r\n  styleUrls: ['./ngx-dasboard-designer.component.scss']\r\n})\r\nexport class NgxDashboardDesignerComponent implements OnInit, OnDestroy {\r\n  @Input() widgetOptions: IDashboardWidgetOption;\r\n  @Input() editLayoutJSON: IGridLayOutInstance;\r\n  @Input() isEditMode: boolean;\r\n  @Input() isSettings: boolean = true;\r\n  public readonly layoutDirection = DashResizeElementDirection;\r\n  @Input() layoutConfig?: LayoutConfigModel = defaultLayoutConfig;\r\n  layout: LayoutConfigModel;\r\n  @Input() lang: 'en' | 'ar' = 'en';\r\n\r\n  constructor(\r\n    private dashboardDesignerService: DashboardDesignerService,\r\n    private dashboardLayoutService: DashboardLayoutService,\r\n    private translationService: TranslationService,\r\n    private _iconsService: DashboardIconService\r\n  ) {\r\n    this._iconsService.registerIcons(this.icons);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.layout = this.layoutConfig;\r\n    this.layout.resizeFn$ = new Subject();\r\n    this.registerIcons();\r\n    this.dashboardDesignerService.dynamicDashboardData = null;\r\n    this.dashboardDesignerService.isNewLayoutSelected$.next(false);\r\n    this.translationService.language = this.lang;\r\n    this.layout.toggleLeft = () => {\r\n      this.toggleLeft();\r\n    };\r\n    // the gridster picks the old layout of the last added record - added this to create new layout\r\n    if (!this.editLayoutJSON) {\r\n      this.onCreateNewLayoutClick('new');\r\n    }\r\n\r\n    this.layout.toggleRight = () => {\r\n      this.toggleRight();\r\n    };\r\n\r\n    if (this.editLayoutJSON) {\r\n      this.dashboardDesignerService.emitSelectedLayoutEvent(\r\n        this.editLayoutJSON\r\n      );\r\n    }\r\n    if (!this.isSettings) {\r\n      this.layout.right.show = false;\r\n      this.layout.right.isShowSettings = false;\r\n    }\r\n  }\r\n\r\n  registerIcons(): void {\r\n    const icons = [];\r\n    this.widgetOptions.mfeWidgetTypes.forEach(type => {\r\n      icons.push(type.icon);\r\n    });\r\n    this._iconsService.registerIcons(icons);\r\n  }\r\n\r\n  get getDashboardData(): IGridLayOutInstance {\r\n    return this.dashboardDesignerService.dashboardData;\r\n  }\r\n\r\n  public onResize(evt: DashResizeElementEvent, _block: any): void {\r\n    this.layout[_block].width = evt.currentWidthValue;\r\n    this.layout[_block].height = evt.currentHeightValue;\r\n    this.layout[_block].top = evt.currentTopValue;\r\n    this.layout[_block].left = evt.currentLeftValue;\r\n  }\r\n\r\n  public resizeEnd(evt: DashResizeElementEvent, _block: any): void {\r\n    this.layout.resizeFn$.next();\r\n  }\r\n\r\n  toggleLeft(): void {\r\n    this.layout.left.show = !this.layout.left.show;\r\n    this.layout.resizeFn$.next();\r\n  }\r\n\r\n  toggleRight(): void {\r\n    this.layout.right.show = !this.layout.right.show;\r\n    this.layout.resizeFn$.next();\r\n  }\r\n\r\n  onCreateNewLayoutClick(layoutid) {\r\n    //this.dashboardDesignerService.isWidgetDragModeEnabled$.next(false);\r\n    let layoutJSON: IGridLayOutInstance =\r\n      this.dashboardLayoutService.getLayoutconfigByLayoutId(\r\n        layoutid,\r\n        this.dashboardDesignerService.getNewDashboardId()\r\n      );\r\n    if (layoutid == 'new') {\r\n      this.dashboardDesignerService.isNewLayoutSelected$.next(true);\r\n      if (this.dashboardDesignerService.dynamicDashboardData == null) {\r\n        this.dashboardDesignerService.isWidgetDragModeEnabled$.next(false);\r\n        this.dashboardDesignerService.dynamicDashboardData = layoutJSON;\r\n        this.dashboardDesignerService.emitSelectedLayoutEvent(layoutJSON);\r\n      } else {\r\n        this.dashboardDesignerService.isWidgetDragModeEnabled$.next(true);\r\n        this.dashboardDesignerService.dynamicDashboardData =\r\n          this.dashboardDesignerService.dashboardData;\r\n        layoutJSON.dashboardItems =\r\n          this.dashboardDesignerService.dynamicDashboardData.dashboardItems.concat(\r\n            layoutJSON.dashboardItems\r\n          );\r\n        this.dashboardDesignerService.dynamicDashboardData = JSON.parse(\r\n          JSON.stringify(layoutJSON)\r\n        );\r\n      }\r\n      this.dashboardDesignerService.emitSelectedLayoutEvent(layoutJSON);\r\n      // this.dashboardDesignerService.emitSelectedLayoutEvent(\r\n      //   this.dashboardDesignerService.dynamicDashboardData\r\n      // );\r\n    } else {\r\n      this.dashboardDesignerService.isWidgetDragModeEnabled$.next(false);\r\n      this.dashboardDesignerService.isNewLayoutSelected$.next(false);\r\n      this.dashboardDesignerService.dynamicDashboardData = null;\r\n      this.dashboardDesignerService.emitSelectedLayoutEvent(layoutJSON);\r\n    }\r\n  }\r\n\r\n  private get icons(): Array<string> {\r\n    return ['menu-ico'];\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.dashboardDesignerService.emitSelectedLayoutEvent(null);\r\n    this.dashboardDesignerService.dynamicDashboardData = null;\r\n    this.layout.resizeFn$.complete();\r\n  }\r\n}\r\n","<div\r\n  id=\"DashboardDesigner\"\r\n  class=\"inheritSize o-hidden\"\r\n  [ngClass]=\"{ rtl: lang === 'ar', ltr: lang === 'en' }\"\r\n  cdkDropListGroup\r\n>\r\n  <div class=\"mainBlock d-flex flex-column inheritSize o-hidden\">\r\n    <div\r\n      class=\"col-auto topBlock fit-width p-0 o-visible layoutEle\"\r\n      *ngIf=\"layout.top.show\"\r\n    >\r\n      <div class=\"layoutContent o-visible\">\r\n        <app-top-block [layout]=\"layout\"></app-top-block>\r\n        <!-- <button (click)=\"toggleLeft();\">\r\n          Toggle Left\r\n        </button>\r\n\r\n        <button (click)=\"toggleRight();\">\r\n          Toggle Rigth\r\n        </button>\r\n\r\n        <button class=\"btn btn-primary\" (click)=\"layout.right.show = false\">Hide Right</button>\r\n        <button (click)=\"layout.right.show = true\">show Right</button> -->\r\n      </div>\r\n    </div>\r\n    <div class=\"contentBlock o-hidden col d-flex flex-row fit-width p-0 m-0\">\r\n      <div\r\n        #leftBlock\r\n        [style.width.px]=\"layout.left.width\"\r\n        [style.height.px]=\"layout.left.height\"\r\n        class=\"leftBlock fit-height p-relative layoutEle\"\r\n        [class.slideOut]=\"layout?.left?.slideOut === true\"\r\n        *ngIf=\"layout.left.show\"\r\n      >\r\n        <nav\r\n          class=\"resize resize__right\"\r\n          (resize)=\"onResize($event, 'left')\"\r\n          (resizeEnd)=\"resizeEnd($event, 'left')\"\r\n          [targetElement]=\"leftBlock\"\r\n          [direction]=\"layoutDirection?.RIGHT\"\r\n        ></nav>\r\n        <div class=\"layoutContent p-0\">\r\n          <app-left-block\r\n            [widgetOptions]=\"widgetOptions\"\r\n            (onCreateNewLayoutClick)=\"onCreateNewLayoutClick($event)\"\r\n          ></app-left-block>\r\n        </div>\r\n      </div>\r\n\r\n      <div\r\n        class=\"centerBlock o-auto p-3 col fit-height p-relative layoutEle\"\r\n        *ngIf=\"layout.center.show\"\r\n      >\r\n        <div class=\"layoutContent inheritSize\">\r\n          <app-center-block\r\n            #centerblock\r\n            [widgetOptions]=\"widgetOptions\"\r\n          ></app-center-block>\r\n        </div>\r\n      </div>\r\n\r\n      <div\r\n        class=\"rightBlock fit-height p-relative layoutEle\"\r\n        #rightBlock\r\n        [style.width.px]=\"layout.right.width\"\r\n        [style.height.px]=\"layout.right.height\"\r\n        *ngIf=\"layout.right.show\"\r\n      >\r\n        <nav\r\n          class=\"resize resize__left\"\r\n          (resize)=\"onResize($event, 'right')\"\r\n          (resizeEnd)=\"resizeEnd($event, 'left')\"\r\n          [targetElement]=\"rightBlock\"\r\n          [direction]=\"layoutDirection?.LEFT\"\r\n        ></nav>\r\n        <div class=\"layoutContent\">\r\n          <app-right-block></app-right-block>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import {\r\n  CompactType,\r\n  DirTypes,\r\n  GridType\r\n} from '../../@shared/angular-gridster-2';\r\n\r\nexport const defaultViewerOptions: any = {\r\n  // Safe\r\n  gridType: GridType.ScrollVertical,\r\n  compactType: CompactType.None,\r\n  margin: 10,\r\n  outerMargin: false,\r\n  outerMarginTop: null,\r\n  outerMarginRight: null,\r\n  outerMarginBottom: null,\r\n  outerMarginLeft: null,\r\n  useTransformPositioning: true,\r\n  mobileBreakpoint: 640,\r\n  useBodyForBreakpoint: false,\r\n  minCols: 1,\r\n  maxCols: 100,\r\n  minRows: 1,\r\n  maxRows: 100,\r\n  maxItemCols: 100,\r\n  minItemCols: 1,\r\n  maxItemRows: 100,\r\n  minItemRows: 1,\r\n  maxItemArea: 2500,\r\n  minItemArea: 1,\r\n  defaultItemCols: 1,\r\n  defaultItemRows: 1,\r\n  fixedColWidth: 25,\r\n  fixedRowHeight: 25,\r\n  keepFixedHeightInMobile: false,\r\n  keepFixedWidthInMobile: false,\r\n  scrollSensitivity: 10,\r\n  scrollSpeed: 20,\r\n  enableEmptyCellClick: false,\r\n  enableEmptyCellContextMenu: false,\r\n  enableEmptyCellDrop: false,\r\n  enableEmptyCellDrag: false,\r\n  enableOccupiedCellDrop: false,\r\n  emptyCellDragMaxCols: 50,\r\n  emptyCellDragMaxRows: 50,\r\n  ignoreMarginInRow: false,\r\n  draggable: {\r\n    enabled: false\r\n  },\r\n  resizable: {\r\n    enabled: false\r\n  },\r\n  swap: false,\r\n  pushItems: true,\r\n  disablePushOnDrag: false,\r\n  disablePushOnResize: false,\r\n  pushDirections: {\r\n    north: true,\r\n    east: true,\r\n    south: true,\r\n    west: true\r\n  },\r\n  pushResizeItems: false,\r\n  displayGrid: 'always',\r\n  disableWindowResize: true,\r\n  disableWarnings: false,\r\n  scrollToNewItems: false,\r\n  dirType: DirTypes.LTR,\r\n  api: {}\r\n};\r\n","export interface ObservableEventsModel {\r\n  eventsType: MfeEventsTypes;\r\n  data?: any;\r\n}\r\n\r\nexport enum MfeEventsTypes {\r\n  LOAD_WIDGET = 'LOAD_WIDGET',\r\n  GENERIC = 'GENERIC',\r\n  INITIAL_LOAD_WIDGET = 'INITIAL_LOAD_WIDGET'\r\n}\r\n\r\nexport interface IMfeOutputModel {\r\n  loadWidgets?: (data: ObservableEventsModel) => void;\r\n}\r\n\r\nexport interface IMfeInputModel {\r\n  gridData?: {};\r\n  getGridInstance: Function;\r\n}\r\n","import { loadRemoteModule } from '@angular-architects/module-federation';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ComponentRef,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Type,\r\n  ViewChild,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport { SingleGridBoxItem } from '../../../../../lib/models/dashboard.models';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { DashboardDesignerService } from '../../../../../lib/services/dashboard-designer.service';\r\nimport { DASHBOARD_CONFIG } from '../../../../../lib/injectors/dashboard-injectors';\r\nimport {\r\n  DashboardModuleConfigModel,\r\n  IMfeInputModel,\r\n  IMfeOutputModel,\r\n  MfeEventsTypes,\r\n  MfeWidgetType,\r\n  ObservableEventsModel\r\n} from '../../../../../lib/models';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n  selector: 'dashboard-widget-view',\r\n  templateUrl: './dashboard-widget-view.component.html',\r\n  styleUrls: ['./dashboard-widget-view.component.scss']\r\n})\r\nexport class DashboardWidgetViewComponent<C = any>\r\n  implements OnInit, OnDestroy\r\n{\r\n  // @ViewChild('vc', { read: ViewContainerRef, static: false })\r\n  // viewContainer: ViewContainerRef | undefined;\r\n  private _unsubscribeAll$ = new Subject<any>();\r\n  @Input() singleGridBoxItem: SingleGridBoxItem;\r\n  @Input() lang: 'en' | 'ar' = 'en';\r\n  componentInstances: Type<C>[] | null = [];\r\n  inputs: IMfeInputModel = {\r\n    gridData: {},\r\n    getGridInstance: () => {}\r\n  };\r\n  // outputs: IMfeOutputModel = {\r\n  //   loadWidget: (data: ObservableEventsModel) => this.eventsHandler(data)\r\n  // };\r\n  outputs = {\r\n    loadWidget: (data: ObservableEventsModel) => this.eventsHandler(data)\r\n  };\r\n\r\n  constructor(\r\n    private ref: ChangeDetectorRef,\r\n    private dashboardDesignerService: DashboardDesignerService,\r\n    @Inject(DASHBOARD_CONFIG)\r\n    private config: DashboardModuleConfigModel\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.dashboardDesignerService.dynamicWidgetLoadEvent$\r\n      // .pipe(takeUntil(this._unsubscribeAll$))\r\n      .subscribe((mfeConfig: ObservableEventsModel) => {\r\n        if (\r\n          mfeConfig?.data &&\r\n          mfeConfig?.eventsType == MfeEventsTypes.LOAD_WIDGET\r\n        ) {\r\n          if (mfeConfig.data?.location) {\r\n            if (\r\n              this.singleGridBoxItem.x == mfeConfig.data?.location.x &&\r\n              this.singleGridBoxItem.y == mfeConfig.data?.location.y\r\n            ) {\r\n              this.loadMfeWidget(mfeConfig?.data);\r\n            } else {\r\n              console.info(\r\n                'x,y location is not matching...! for loading widget.'\r\n              );\r\n              console.info('current x,y location is: , ', {\r\n                x: mfeConfig.data?.location.x,\r\n                y: mfeConfig.data?.location.y\r\n              });\r\n            }\r\n          } else if (mfeConfig.data?.ID) {\r\n            if (this.singleGridBoxItem.id == mfeConfig.data?.ID) {\r\n              this.loadMfeWidget(mfeConfig?.data);\r\n            } else {\r\n              console.info('ID is not matching...! for loading widget.');\r\n              console.info('current ID is: , ', {\r\n                clickedId: mfeConfig.data?.ID,\r\n                currentId: this.singleGridBoxItem.id\r\n              });\r\n            }\r\n          } else {\r\n            console.error('Location missing...! for loading widget.');\r\n          }\r\n        }\r\n      });\r\n    this.applyWideget();\r\n    this.inputs.gridData = this;\r\n  }\r\n\r\n  applyWideget() {\r\n    if (this.singleGridBoxItem.widgetOptions) {\r\n      this.singleGridBoxItem.widgetOptions.forEach(widgetOption => {\r\n        this.loadMfeWidget(widgetOption);\r\n      });\r\n    }\r\n  }\r\n\r\n  async loadMfeWidget(widgetOption: MfeWidgetType): Promise<void> {\r\n    let hostUrl = widgetOption.hostUrl;\r\n    if (this.config.isRemoteUrlLangEnabled) {\r\n      hostUrl = hostUrl.replace('__lang__', this.lang);\r\n    }\r\n    const moduleRef = await loadRemoteModule({\r\n      type: widgetOption.type as any,\r\n      remoteEntry: hostUrl,\r\n      exposedModule: widgetOption.exposedModule\r\n    });\r\n\r\n    if (widgetOption.isMultiLoadEnabled) {\r\n      this.componentInstances.push(moduleRef[widgetOption.componentName]);\r\n    } else {\r\n      this.componentInstances = [];\r\n      this.componentInstances.push(moduleRef[widgetOption.componentName]);\r\n    }\r\n\r\n    //don't remove'\r\n    // @deprecated\r\n    // const ref = this.viewContainer.createComponent(\r\n    //   m[widgetOption.componentName]\r\n    // );\r\n    // const compInstance: any = ref.instance;\r\n    // compInstance.events$?.forEach((event: Observable<any>) => {\r\n    //   event.subscribe((eventData: ObservableEventsModel) => {\r\n    //     this.eventsHandler(eventData);\r\n    //   });\r\n    // });\r\n    setInterval(() => {\r\n      // this.singleGridBoxItem.widgetOptions.push(widgetOption);\r\n      this.ref.markForCheck();\r\n    }, 1000);\r\n  }\r\n\r\n  onComponentLoaed(comInstance: any) {\r\n    const compInstance: any = comInstance.instance;\r\n    compInstance.events$?.forEach((event: Observable<any>) => {\r\n      event\r\n        .pipe(takeUntil(this._unsubscribeAll$))\r\n        .subscribe((eventData: ObservableEventsModel) => {\r\n          this.eventsHandler(eventData);\r\n        });\r\n    });\r\n    this.inputs.getGridInstance = () => {\r\n      return this;\r\n    };\r\n  }\r\n\r\n  eventsHandler(eventData: ObservableEventsModel): void {\r\n    if (eventData.data) {\r\n      switch (eventData.eventsType) {\r\n        case MfeEventsTypes.LOAD_WIDGET: {\r\n          this.dashboardDesignerService.dynamicWidgetLoadEvent$.next(eventData);\r\n          break;\r\n        }\r\n        case MfeEventsTypes.INITIAL_LOAD_WIDGET: {\r\n          this.dashboardDesignerService.dynamicWidgetLoadEvent$.next(eventData);\r\n          break;\r\n        }\r\n        default:\r\n          break;\r\n      }\r\n    }\r\n    console.log(eventData);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.dashboardDesignerService.dynamicWidgetLoadEvent$.next(null);\r\n    this._unsubscribeAll$.next();\r\n    this._unsubscribeAll$.complete();\r\n  }\r\n}\r\n","<!-- <ng-container>\r\n  <ng-container #vc></ng-container>\r\n</ng-container> -->\r\n<ng-container *ngFor=\"let item of componentInstances\">\r\n  <dash-dynamic\r\n    [dashDynamicComponent]=\"item\"\r\n    [dashDynamicInputs]=\"inputs\"\r\n    [dashDynamicOutputs]=\"outputs\"\r\n    (dashDynamicCreated)=\"onComponentLoaed($event)\"\r\n  ></dash-dynamic>\r\n</ng-container>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DirTypes } from '../../../../@shared';\r\nimport { IGridLayOutInstance } from '../../../../models/dashboard.models';\r\nimport { TranslationService } from '../../../../services/translation.service';\r\nimport {\r\n  defaultLayoutConfig,\r\n  LayoutConfigModel\r\n} from '../../../../models/dashboard-layout-config.model';\r\nimport { Subject } from 'rxjs';\r\nimport { defaultViewerOptions } from '../../dashboardviewer-default-options';\r\n\r\n@Component({\r\n  selector: 'ngx-dashboard-viewer',\r\n  templateUrl: './ngx-dashboard-viewer.component.html',\r\n  styleUrls: ['./ngx-dashboard-viewer.component.scss']\r\n})\r\nexport class NgxDashboardViewerComponent implements OnInit {\r\n  @Input() layoutConfig?: any = defaultLayoutConfig;\r\n  layout: LayoutConfigModel;\r\n  @Input() dashboardLayout: IGridLayOutInstance;\r\n  @Input() lang: 'en' | 'ar' = 'en';\r\n\r\n  constructor(private translationService: TranslationService) {}\r\n\r\n  ngOnInit(): void {\r\n    this.layout = this.layoutConfig;\r\n    this.layout.resizeFn$ = new Subject();\r\n    this.translationService.language = this.lang;\r\n    this.dashboardLayout.options = defaultViewerOptions;\r\n    this.dashboardLayout.options.dirType =\r\n      this.lang == 'ar' ? DirTypes.RTL : DirTypes.LTR;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.layout.resizeFn$.complete();\r\n  }\r\n}\r\n","<div id=\"DashboardViewer\" class=\"inheritSize\">\r\n  <div class=\"inheritSize\" *ngIf=\"dashboardLayout?.dashboardItems?.length > 0\">\r\n    <gridster [options]=\"dashboardLayout?.options\">\r\n      <gridster-item\r\n        class=\"mgDashGridsterItem\"\r\n        [item]=\"item\"\r\n        *ngFor=\"let item of dashboardLayout?.dashboardItems\"\r\n        [ngClass]=\"{\r\n          applyAutoHeight: item?.autoHeight,\r\n          enableMultiitem: item.isMultipleWidgetDragEnabled\r\n        }\"\r\n      >\r\n        <dashboard-widget-view\r\n          [singleGridBoxItem]=\"item\"\r\n          [lang]=\"lang\"\r\n        ></dashboard-widget-view>\r\n      </gridster-item>\r\n    </gridster>\r\n  </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { NgxDashboardViewerComponent } from './components/ngx-dashboard-viewer/ngx-dashboard-viewer.component';\r\nimport { DashboardWidgetViewComponent } from './components/dashboard-widget-view/dashboard-widget-view.component';\r\nimport { DashboardDesignerSharedModule } from '../../@shared/dashboard-designer-shared.module';\r\n\r\n@NgModule({\r\n  declarations: [NgxDashboardViewerComponent, DashboardWidgetViewComponent],\r\n  imports: [CommonModule, DashboardDesignerSharedModule],\r\n  exports: [NgxDashboardViewerComponent],\r\n  providers: []\r\n})\r\nexport class NgxDashboardViewerModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { DashboardWidgetDesignerComponent } from './components/dashboard-widget-designer/dashboard-widget-designer.component';\r\nimport { DashboardWidgetComponent } from './components/dashboard-widget/dashboard-widget.component';\r\nimport { DashboardDesignerSharedModule } from '../../@shared/dashboard-designer-shared.module';\r\nimport { NgxDashboardDesignerComponent } from './components/ngx-dasboard-designer/ngx-dasboard-designer.component';\r\nimport {\r\n  CenterBlockComponent,\r\n  LeftBlockComponent,\r\n  RightBlockComponent,\r\n  TopBlockComponent\r\n} from '../../layout';\r\nimport { DashboardWidgetErrorViewComponent } from './components/dashboard-widget-error-view/dashboard-widget-error-view.component';\r\nimport { NgxDashboardWidgetWrapperModule } from '../../@shared';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    DashboardWidgetDesignerComponent,\r\n    NgxDashboardDesignerComponent,\r\n    DashboardWidgetComponent,\r\n    LeftBlockComponent,\r\n    RightBlockComponent,\r\n    CenterBlockComponent,\r\n    TopBlockComponent,\r\n    DashboardWidgetErrorViewComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    DashboardDesignerSharedModule,\r\n    NgxDashboardWidgetWrapperModule\r\n  ],\r\n  exports: [NgxDashboardDesignerComponent],\r\n  providers: []\r\n})\r\nexport class DashboardWidgetDesignerModule {}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport {\r\n  HttpRequest,\r\n  HttpHandler,\r\n  HttpEvent,\r\n  HttpInterceptor,\r\n  HttpHeaders\r\n} from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { DASHBOARD_CONFIG } from '../injectors/dashboard-injectors';\r\nimport { DashboardModuleConfigModel } from '../models';\r\n\r\n@Injectable()\r\nexport class DashboardDesignerTokenInterceptor implements HttpInterceptor {\r\n  dashboardModuleConfigModel: DashboardModuleConfigModel;\r\n\r\n  constructor(\r\n    @Inject(DASHBOARD_CONFIG)\r\n    private config: DashboardModuleConfigModel\r\n  ) {\r\n    this.dashboardModuleConfigModel = config;\r\n  }\r\n\r\n  intercept(\r\n    request: HttpRequest<any>,\r\n    next: HttpHandler\r\n  ): Observable<HttpEvent<any>> {\r\n    if (request.url && request.url.toLowerCase().includes('/api/')) {\r\n      return next\r\n        .handle(this.addToken(request, this.dashboardModuleConfigModel))\r\n        .pipe(\r\n          catchError(err => {\r\n            if (err.status === 401) {\r\n              // return this.handle401Error(request, next);\r\n            } else if (err.status === 403) {\r\n            }\r\n            return throwError(err);\r\n          })\r\n        );\r\n    } else {\r\n      return next.handle(request);\r\n    }\r\n  }\r\n\r\n  private addToken(\r\n    req: HttpRequest<any>,\r\n    dashboardModuleConfigModel: DashboardModuleConfigModel\r\n  ): HttpRequest<any> {\r\n    let cloneReq: HttpRequest<any> = req;\r\n    try {\r\n      let token = '';\r\n      if (dashboardModuleConfigModel?.headers?.bearerTokenName) {\r\n        token = localStorage.getItem(\r\n          dashboardModuleConfigModel.headers.bearerTokenName\r\n        );\r\n      } else if (dashboardModuleConfigModel?.headers?.token) {\r\n        token = dashboardModuleConfigModel?.headers?.token;\r\n      }\r\n      if (token) {\r\n        cloneReq.clone({ setHeaders: { Authorization: 'Bearer ' + token } });\r\n      }\r\n      if (dashboardModuleConfigModel?.headers) {\r\n        const headers = new HttpHeaders(dashboardModuleConfigModel?.headers);\r\n        cloneReq = cloneReq.clone({ headers });\r\n      }\r\n      return cloneReq;\r\n    } catch (error) {\r\n      console.log('Error from DashboardDesignerTokenInterceptor => ', error);\r\n      return cloneReq;\r\n    }\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { DashboardModuleConfigModel } from './models/dashboard-module-config.model';\r\nimport { DASHBOARD_CONFIG } from './injectors/dashboard-injectors';\r\nimport { NgxDashboardViewerModule } from './components/ngx-dashboard-viewer/ngx-dashboard-viewer.module';\r\nimport { DashboardWidgetDesignerModule } from './components/ngx-dasboard-designer/dashboard-widget-designer.module';\r\nimport { DashboardDesignerSharedModule } from './@shared/dashboard-designer-shared.module';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { DashboardDesignerTokenInterceptor } from './interceptor/token-interceptor';\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  imports: [\r\n    CommonModule,\r\n    NgxDashboardViewerModule,\r\n    DashboardWidgetDesignerModule,\r\n    DashboardDesignerSharedModule\r\n  ],\r\n  exports: [\r\n    NgxDashboardViewerModule,\r\n    DashboardWidgetDesignerModule,\r\n    DashboardDesignerSharedModule\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: HTTP_INTERCEPTORS,\r\n      useClass: DashboardDesignerTokenInterceptor,\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class NgxDashboardDesignerModule {\r\n  static forRoot(\r\n    config?: DashboardModuleConfigModel\r\n  ): ModuleWithProviders<NgxDashboardDesignerModule> {\r\n    return {\r\n      ngModule: NgxDashboardDesignerModule,\r\n      providers: [{ provide: DASHBOARD_CONFIG, useValue: config }]\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of dashboard-designer\r\n */\r\nexport * from './lib/layout';\r\nexport * from './lib/components';\r\nexport * from './lib/services/dashboard-designer.service';\r\nexport * from './lib/services/dashboard-icon.service';\r\nexport * from './lib/models';\r\nexport * from './lib/@shared';\r\nexport * from './lib/dashboard-designer.module';\r\nexport * from './lib/injectors/dashboard-injectors';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableThrow","observableOf","i1.DashIconRegistry","i1.TranslationService","i1.DashboardDesignerService","i2.DashboardIconService","i4.DashIcon","i6","i8.DashboardTranslatePipe","i3","i5","i6.DashboardTranslatePipe","i1.GridsterPreviewComponent","i2","i1.GridsterComponent","i1","i1.NgxDashboardWidgetWrapperComponent","i3.DashboardTranslatePipe","i7","i2.GridsterComponent","i3.GridsterItemComponent","i4.DashboardWidgetComponent","i1.DashboardWidgetDesignerComponent","i3.DashIcon","i4","i5.DashboardTranslatePipe","i2.DashboardLayoutService","i3.TranslationService","i4.DashboardIconService","i5.TopBlockComponent","i6.LeftBlockComponent","i7.CenterBlockComponent","i8.RightBlockComponent","i9","i10","i11.DashResizeElementDirective","i2.DynamicComponent","i4.DynamicIoDirective","i4.DashboardWidgetViewComponent"],"mappings":"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"}