{"version":3,"file":"ng2-adsk-forge-viewer.mjs","sources":["../../../projects/ng2-adsk-forge-viewer/src/lib/extensions/extension.ts","../../../projects/ng2-adsk-forge-viewer/src/lib/extensions/basic-extension.ts","../../../projects/ng2-adsk-forge-viewer/src/lib/service/script.service.ts","../../../projects/ng2-adsk-forge-viewer/src/lib/component/viewer.component.ts","../../../projects/ng2-adsk-forge-viewer/src/lib/component/viewer.component.html","../../../projects/ng2-adsk-forge-viewer/src/lib/component/thumbnail.component.ts","../../../projects/ng2-adsk-forge-viewer/src/lib/component/thumbnail.component.html","../../../projects/ng2-adsk-forge-viewer/src/lib/ng2-adsk-forge-viewer.module.ts","../../../projects/ng2-adsk-forge-viewer/src/public-api.ts","../../../projects/ng2-adsk-forge-viewer/src/ng2-adsk-forge-viewer.ts"],"sourcesContent":["/// <reference types=\"forge-viewer\" />\nexport abstract class ViewerEventArgs {\n  target?: Autodesk.Viewing.Viewer3D;\n  model!: Autodesk.Viewing.ViewerItem;\n  type!: string;\n  [key: string]: any;\n}\nexport class AggregationSelectionChangedEventArgs extends ViewerEventArgs {\n  selections!: Autodesk.Viewing.ViewerItem[];\n  override type = Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT;\n}\nexport class AnimationReadyEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.ANIMATION_READY_EVENT;\n}\nexport class CameraChangedEventArgs extends ViewerEventArgs {\n  camera!: THREE.Camera;\n  override type = Autodesk.Viewing.CAMERA_CHANGE_EVENT;\n}\nexport class CutplanesChangedEventArgs extends ViewerEventArgs {\n  cutplanes!: Object[];\n  override type = Autodesk.Viewing.CUTPLANES_CHANGE_EVENT;\n}\nexport class EscapeEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.ESCAPE_EVENT;\n}\nexport class ExplodeChangedEventArgs extends ViewerEventArgs {\n  scale!: number;\n  override type = Autodesk.Viewing.EXPLODE_CHANGE_EVENT;\n}\nexport abstract class ExtensionLoadedUnloadedEventArgs extends ViewerEventArgs {\n  extensionId!: string;\n}\nexport class ExtensionLoadedEventArgs extends ExtensionLoadedUnloadedEventArgs {\n  override type = Autodesk.Viewing.EXTENSION_LOADED_EVENT;\n}\nexport class ExtensionUnloadedEventArgs extends ExtensionLoadedUnloadedEventArgs {\n  override type = Autodesk.Viewing.EXTENSION_UNLOADED_EVENT;\n}\nexport class FinalFrameRenderedChangedEventArgs extends ViewerEventArgs {\n  planes!: Object[];\n  override type = Autodesk.Viewing.FINAL_FRAME_RENDERED_CHANGED_EVENT;\n}\nexport class FitToViewEventArgs extends ViewerEventArgs {\n  immediate!: boolean;\n  nodeIdArray!: number[];\n  override type = Autodesk.Viewing.FIT_TO_VIEW_EVENT;\n}\nexport class FragmentsLoadedEventArgs extends ViewerEventArgs {\n  getFragIds!: () => void;\n  data!: Object;\n  override type = Autodesk.Viewing.FRAGMENTS_LOADED_EVENT;\n}\nexport class FullscreenEventArgs extends ViewerEventArgs {\n  mode!: Autodesk.Viewing.ScreenMode;\n  override type = Autodesk.Viewing.FULLSCREEN_MODE_EVENT;\n}\nexport class GeometryLoadedEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.GEOMETRY_LOADED_EVENT;\n}\nexport class HideEventArgs extends ViewerEventArgs {\n  nodeIdArray!: number[];\n  override type = Autodesk.Viewing.HIDE_EVENT;\n}\nexport class HyperlinkEventArgs extends ViewerEventArgs {\n  data!: Object; // TODO: Can his be stronger?\n  override type = Autodesk.Viewing.HYPERLINK_EVENT;\n}\nexport class IsolateEventArgs extends ViewerEventArgs {\n  nodeIdArray?: number[];\n  override type = Autodesk.Viewing.ISOLATE_EVENT;\n}\nexport class LayerVisibilityEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.LAYER_VISIBILITY_CHANGED_EVENT;\n}\nexport class LoadMissingGeometryEventArgs extends ViewerEventArgs {\n  delay!: boolean;\n  override type = Autodesk.Viewing.LOAD_MISSING_GEOMETRY;\n}\nexport class ModelRootLoadedEventArgs extends ViewerEventArgs {\n  svf!: Object; // TODO: can this be stronger\n  override type = Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT;\n}\nexport class ModelUnloadedEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.MODEL_UNLOADED_EVENT;\n}\nexport class NavigationModeChangedEventArgs extends ViewerEventArgs {\n  id!: string;\n  override type = Autodesk.Viewing.NAVIGATION_MODE_CHANGED_EVENT;\n}\nexport abstract class ObjectTreeEventArgs extends ViewerEventArgs {\n  svf!: Object; // TODO: can this be stronger\n}\nexport class ObjectTreeCreatedEventArgs extends ObjectTreeEventArgs {\n  override type = Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT;\n}\nexport class ObjectTreeUnavailableEventArgs extends ObjectTreeEventArgs {\n  override type = Autodesk.Viewing.OBJECT_TREE_UNAVAILABLE_EVENT;\n}\nexport abstract class PrefEventArgs extends ViewerEventArgs {\n  name!: string;\n  value!: Object;\n}\nexport class PrefChangedEventArgs extends PrefEventArgs {\n  override type = Autodesk.Viewing.PREF_CHANGED_EVENT;\n}\nexport class PrefResetEventArgs extends PrefEventArgs {\n  override type = Autodesk.Viewing.PREF_RESET_EVENT;\n}\nexport class ProgressUpdateEventArgs extends ViewerEventArgs {\n  percent!: number;\n  state!: Autodesk.Viewing.ProgressState;\n  override type = Autodesk.Viewing.PROGRESS_UPDATE_EVENT;\n}\nexport class RenderOptionChangedEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT;\n}\nexport class RenderPresentedEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.RENDER_PRESENTED_EVENT;\n}\nexport class ResetEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.RESET_EVENT;\n}\nexport class RestoreDefaultSettingsEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.RESTORE_DEFAULT_SETTINGS_EVENT;\n}\nexport class SelectionChangedEventArgs extends ViewerEventArgs {\n  fragIdsArray!: number[];\n  dbIdArray!: number[];\n  nodeArray!: number[];\n  override type = Autodesk.Viewing.SELECTION_CHANGED_EVENT;\n}\nexport class ShowEventArgs extends ViewerEventArgs {\n  nodeArrayId!: number[];\n  override type = Autodesk.Viewing.SHOW_EVENT;\n}\nexport class TexturesLoadedEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.TEXTURES_LOADED_EVENT;\n}\nexport class ToolChangedEventArgs extends ViewerEventArgs {\n  toolName!: string;\n  tool!: Object;\n  active!: boolean;\n  override type = Autodesk.Viewing.TOOL_CHANGE_EVENT;\n}\nexport class ViewerInitializedEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.VIEWER_INITIALIZED;\n}\nexport class ViewerResizeEventArgs extends ViewerEventArgs {\n  width!: number;\n  height!: number;\n  override type = Autodesk.Viewing.VIEWER_RESIZE_EVENT;\n}\nexport class ViewerStateRestoredEventArgs extends ViewerEventArgs {\n  value!: boolean;\n  override type = Autodesk.Viewing.VIEWER_STATE_RESTORED_EVENT;\n}\nexport class ViewerUnInitializedEventArgs extends ViewerEventArgs {\n  override type = Autodesk.Viewing.VIEWER_UNINITIALIZED;\n}\n\n/**\n * Base extension that all other extensions can inherit from\n */\nexport abstract class Extension {\n  public static extensionName: string = '';\n\n  protected viewer: Autodesk.Viewing.Viewer3D;\n  protected extOptions: Autodesk.Viewing.ExtensionOptions | undefined = undefined;\n\n  protected eventArgsTypeMap: { [key: string]: Function } = {};\n\n  public static registerExtension(extensionName: string, extension: Object) {\n    Autodesk.Viewing.theExtensionManager.registerExtension(extensionName, extension);\n  }\n\n  public static unregisterExtension(extensionName: string) {\n    Autodesk.Viewing.theExtensionManager.unregisterExtension(extensionName);\n  }\n\n  constructor(viewer: Autodesk.Viewing.Viewer3D,\n              options?: Autodesk.Viewing.ExtensionOptions) {\n    this.viewer = viewer;\n    this.extOptions = options;\n\n    this.registerEventTypes();\n  }\n\n  /** Called by Autodesk extension manager when extension is loaded */\n  public abstract load(): boolean | Promise<boolean>;\n  /** Called by Autodesk extension manager when extension is unloaded */\n  public abstract unload(): boolean;\n  /** Called by Autodesk extension manager when extension is activated - return true */\n  public abstract activate(): boolean;\n  /** Called by Autodesk extension manager when extension is activated - return true */\n  public abstract deactivate(): boolean;\n\n  /** Register event args types that we will cast to 'proper' objects */\n  protected registerEventTypes() {\n    // tslint:disable:max-line-length\n    this.eventArgsTypeMap[Autodesk.Viewing.AGGREGATE_SELECTION_CHANGED_EVENT] = AggregationSelectionChangedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.ANIMATION_READY_EVENT] = AnimationReadyEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.CAMERA_CHANGE_EVENT] = CameraChangedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.CUTPLANES_CHANGE_EVENT] = CutplanesChangedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.ESCAPE_EVENT] = EscapeEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.EXPLODE_CHANGE_EVENT] = ExplodeChangedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.EXTENSION_LOADED_EVENT] = ExtensionLoadedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.EXTENSION_UNLOADED_EVENT] = ExtensionUnloadedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.FINAL_FRAME_RENDERED_CHANGED_EVENT] = FinalFrameRenderedChangedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.FIT_TO_VIEW_EVENT] = FitToViewEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.FRAGMENTS_LOADED_EVENT] = FragmentsLoadedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.FULLSCREEN_MODE_EVENT] = FullscreenEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.GEOMETRY_LOADED_EVENT] = GeometryLoadedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.HIDE_EVENT] = HideEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.HYPERLINK_EVENT] = HyperlinkEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.ISOLATE_EVENT] = IsolateEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.LAYER_VISIBILITY_CHANGED_EVENT] = LayerVisibilityEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.LOAD_MISSING_GEOMETRY] = LoadMissingGeometryEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT] = ModelRootLoadedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.MODEL_UNLOADED_EVENT] = ModelUnloadedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.NAVIGATION_MODE_CHANGED_EVENT] = NavigationModeChangedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT] = ObjectTreeCreatedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.OBJECT_TREE_UNAVAILABLE_EVENT] = ObjectTreeUnavailableEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.PREF_CHANGED_EVENT] = PrefChangedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.PREF_RESET_EVENT] = PrefResetEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.PROGRESS_UPDATE_EVENT] = ProgressUpdateEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT] = RenderOptionChangedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.RENDER_PRESENTED_EVENT] = RenderPresentedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.RESET_EVENT] = ResetEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.RESTORE_DEFAULT_SETTINGS_EVENT] = RestoreDefaultSettingsEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.SELECTION_CHANGED_EVENT] = SelectionChangedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.SHOW_EVENT] = ShowEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.TEXTURES_LOADED_EVENT] = TexturesLoadedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.TOOL_CHANGE_EVENT] = ToolChangedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_INITIALIZED] = ViewerInitializedEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_RESIZE_EVENT] = ViewerResizeEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_STATE_RESTORED_EVENT] = ViewerStateRestoredEventArgs;\n    this.eventArgsTypeMap[Autodesk.Viewing.VIEWER_UNINITIALIZED] = ViewerUnInitializedEventArgs;\n    // tslint:enable:max-line-length\n  }\n\n  /** Cast Viewer event args to class */\n  protected castArgs(args: any): any {\n    if (Array.isArray(args)) {\n      return args.map(this.castArgs);\n    }\n\n    if (!args || typeof args !== 'object' || !args.hasOwnProperty('type')) {\n      // Can't cast this object\n      return args;\n    }\n\n    // Create new object of appropriate type\n    const clazz = this.eventArgsTypeMap[args.type];\n    const typedItem = Object.create(clazz.prototype);\n\n    // Cast any properties\n    for (const k of Object.keys(args)) {\n      typedItem[k] = this.castArgs(args[k]);\n    }\n\n    return typedItem;\n  }\n}\n","import { Observable, fromEvent, merge } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { Extension, ViewerEventArgs } from './extension';\n\nexport class BasicExtension extends Extension {\n  public static override extensionName: string = 'BasicExtension';\n  public static debugMessages: boolean = false;\n\n  private static callback: null | ((ext: BasicExtension) => void) = null;\n\n  public viewerEvents: Observable<ViewerEventArgs> | undefined;\n  protected eventStreams: Observable<ViewerEventArgs>[] = [];\n\n  protected readonly events: string[] = [\n    Autodesk.Viewing.FIT_TO_VIEW_EVENT,\n    Autodesk.Viewing.FULLSCREEN_MODE_EVENT,\n    Autodesk.Viewing.GEOMETRY_LOADED_EVENT,\n    Autodesk.Viewing.HIDE_EVENT,\n    Autodesk.Viewing.ISOLATE_EVENT,\n    Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT,\n    Autodesk.Viewing.OBJECT_TREE_UNAVAILABLE_EVENT,\n    Autodesk.Viewing.RESET_EVENT,\n    Autodesk.Viewing.SELECTION_CHANGED_EVENT,\n    Autodesk.Viewing.SHOW_EVENT,\n  ];\n\n  public static override registerExtension(extensionName: string, callback: (ext: BasicExtension) => void) {\n    BasicExtension.callback = callback;\n    super.registerExtension(BasicExtension.extensionName, BasicExtension);\n  }\n\n  public load() {\n    this.events.forEach((eventName) => {\n      const obs = fromEvent(this.viewer, eventName).pipe(map(args => this.castArgs(args)));\n      this.eventStreams.push(obs);\n    });\n\n    this.viewerEvents = merge(...this.eventStreams);\n\n    if (BasicExtension.debugMessages) console.log(BasicExtension.extensionName, 'loaded!');\n    if (BasicExtension.callback) BasicExtension.callback(this);\n    return true;\n  }\n\n  public unload() {\n    this.eventStreams = [];\n    this.viewerEvents = undefined;\n\n    if (BasicExtension.debugMessages) console.log(BasicExtension.extensionName, 'unloaded!');\n    return true;\n  }\n\n  public activate() {\n    return true;\n  }\n\n  public deactivate() {\n    return true;\n  }\n}\n","import { Injectable } from '@angular/core';\n\ndeclare var document: any;\n\nexport interface ScriptInfoLookup {\n  [key: string]: ScriptInfo;\n}\n\nexport interface ScriptInfo {\n  src: string;\n  loaded: boolean;\n  status?: string;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ScriptService {\n\n  private scripts: ScriptInfoLookup = {};\n\n  constructor() {\n    // Nothing to do\n  }\n\n  public load(...urls: string[]): Promise<ScriptInfo[]> {\n    const promises: Promise<ScriptInfo>[] = [];\n\n    urls.forEach((src) => {\n      if (this.scripts[src] && this.scripts[src].loaded) {\n        return;\n      }\n\n      this.scripts[src] = { src, loaded: false };\n      return promises.push(this.loadScript(src));\n    });\n\n    return Promise.all(promises);\n  }\n\n  public loadScript(name: string): Promise<ScriptInfo> {\n    return new Promise((resolve, reject) => {\n      // resolve if already loaded\n      if (this.scripts[name] && this.scripts[name].loaded) {\n        resolve({ src: name, loaded: true, status: 'Already Loaded' });\n        return;\n      }\n\n      // load script\n      const script = document.createElement('script');\n      script.type = 'text/javascript';\n      script.src = this.scripts[name].src;\n\n      if (script.readyState) {  // IE\n        script.onreadystatechange = () => {\n          if (script.readyState === 'loaded' || script.readyState === 'complete') {\n            script.onreadystatechange = null;\n            this.scripts[name].loaded = true;\n\n            resolve({ src: name, loaded: true, status: 'Loaded' });\n          }\n        };\n      } else {  // Others\n        script.onload = () => {\n          this.scripts[name].loaded = true;\n\n          resolve({ src: name, loaded: true, status: 'Loaded' });\n        };\n      }\n\n      script.onerror = (error: any) => resolve({ src: name, loaded: false, status: 'Loaded' });\n      document.getElementsByTagName('head')[0].appendChild(script);\n    });\n  }\n}\n","/// <reference types=\"forge-viewer\" />\nimport { takeUntil } from 'rxjs/operators';\n\ndeclare const Autodesk: any;\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnDestroy,\n  Output } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\n\nimport { ScriptService } from '../service/script.service';\nimport {\n  FitToViewEventArgs,\n  FullscreenEventArgs,\n  GeometryLoadedEventArgs,\n  HideEventArgs,\n  IsolateEventArgs,\n  ObjectTreeCreatedEventArgs,\n  ObjectTreeUnavailableEventArgs, ResetEventArgs,\n  SelectionChangedEventArgs,\n  ShowEventArgs,\n  ViewerEventArgs,\n} from '../extensions/extension';\nimport { BasicExtension } from '../extensions/basic-extension';\n\nexport interface DocumentChangedEvent {\n  document: Autodesk.Viewing.Document;\n  viewerComponent: ViewerComponent;\n  viewer: Autodesk.Viewing.Viewer3D;\n}\n\nexport interface ItemLoadedEvent {\n  item: Autodesk.Viewing.ViewerItem;\n  viewer: Autodesk.Viewing.Viewer3D;\n  viewerComponent: ViewerComponent;\n}\n\nexport interface ViewerInitializedEvent {\n  viewerComponent: ViewerComponent;\n  viewer: Autodesk.Viewing.Viewer3D;\n}\n\nexport interface ViewerOptions {\n  initializerOptions: Autodesk.Viewing.InitializerOptions;\n  viewerConfig?: Autodesk.Viewing.ViewerConfig;\n  headlessViewer?: boolean;\n  showFirstViewable?: boolean;\n  enableMemoryManagement?: boolean;\n  onViewerScriptsLoaded?: () => void;\n  onViewerInitialized: (args: ViewerInitializedEvent) => void;\n  version?: string | number;\n}\n\n\n@Component({\n  selector: 'adsk-forge-viewer',\n  templateUrl: './viewer.component.html',\n  styleUrls: ['./viewer.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViewerComponent implements OnDestroy {\n  public containerId: string;\n\n  @Output() public onDocumentChanged = new EventEmitter<DocumentChangedEvent>();\n  @Output() public onItemLoaded = new EventEmitter<ItemLoadedEvent>();\n  @Output() public onError = new EventEmitter<Autodesk.Viewing.ErrorCodes>();\n\n  // Viewer events\n  @Output() public onFitToView = new EventEmitter<FitToViewEventArgs>();\n  @Output() public onFullscreen = new EventEmitter<FullscreenEventArgs>();\n  @Output() public onGeometryLoaded = new EventEmitter<GeometryLoadedEventArgs>();\n  @Output() public onHide = new EventEmitter<HideEventArgs>();\n  @Output() public onIsolate = new EventEmitter<IsolateEventArgs>();\n  @Output() public onObjectTreeCreated = new EventEmitter<ObjectTreeCreatedEventArgs>();\n  @Output() public onObjectTreeUnavailable = new EventEmitter<ObjectTreeUnavailableEventArgs>();\n  @Output() public onReset = new EventEmitter<ResetEventArgs>();\n  @Output() public onSelectionChanged = new EventEmitter<SelectionChangedEventArgs>();\n  @Output() public onShow = new EventEmitter<ShowEventArgs>();\n\n  // Debugging\n  @Input() public showDebugMessages = false;\n\n  private _viewerOptions: ViewerOptions | null = null;\n  private viewerInitialized = false;\n  private viewer!: Autodesk.Viewing.Viewer3D | null;\n  private documentId!: string;\n  private unsubscribe: Subject<void> = new Subject();\n  private basicExt!: BasicExtension;\n\n  /**\n   * Helper to allow callers to specify documentId with or without the required urn: prefix\n   */\n  private static verifyUrn(documentId: string): string {\n    return (documentId.startsWith('urn:')) ? documentId : `urn:${documentId}`;\n  }\n\n  constructor(private script: ScriptService) {\n    this.containerId = this.getDivName();\n  }\n\n  @Input() public set viewerOptions(options: ViewerOptions) {\n    if (!this.viewerInitialized && options) {\n      this._viewerOptions = options;\n      void this.initialiseViewer();\n    }\n  }\n\n  public get viewerOptions() {\n    return this._viewerOptions as ViewerOptions;\n  }\n\n  ngOnDestroy() {\n    this.unregisterBasicExtension();\n\n    if (this.viewer) {\n      this.viewer.tearDown();\n      this.viewer.uninitialize();\n    }\n\n    this.viewer = null;\n    this.viewerInitialized = false;\n\n    this.unsubscribe.next();\n    this.unsubscribe.complete();\n  }\n\n  /**\n   * Helper method to get some default viewer options\n   */\n  public getDefaultViewerOptions(\n    onViewerInitialized: (args: ViewerInitializedEvent) => void,\n    getAccessToken: (onGetAccessToken: (token: string, expire: number) => void) => void,\n  ): ViewerOptions {\n    return {\n      initializerOptions: {\n        env: 'AutodeskProduction',\n        getAccessToken,\n        api: 'derivativeV2',\n      },\n      onViewerInitialized,\n    };\n  }\n\n  /**\n   * Get a reference to the current 3D viewer\n   */\n  public get Viewer3D(): Autodesk.Viewing.Viewer3D {\n    return this.viewer as Autodesk.Viewing.Viewer3D;\n  }\n\n  /**\n   * Get the document urn that has been loaded\n   */\n  public get DocumentId() {\n    return this.documentId;\n  }\n\n  /**\n   * Set the document urn, which triggers the viewer to load the document\n   */\n  public set DocumentId(value: string) {\n    this.documentId = value;\n    this.loadModel(this.documentId);\n  }\n\n  /**\n   * Get the container element\n   */\n  public get Container(): HTMLElement {\n    return document.getElementById(this.containerId) as HTMLElement;\n  }\n\n  /**\n   * Get the id assigned to the viewer\n   */\n  public get ContainerId() {\n    return this.containerId;\n  }\n\n  public get basicExtension() {\n    return this.basicExt;\n  }\n\n  public get extensionEvents(): Observable<ViewerEventArgs> | undefined {\n    if (this.basicExt) {\n      return this.basicExt.viewerEvents;\n    }\n\n    return undefined;\n  }\n\n  public loadDocumentNode(document: Autodesk.Viewing.Document,\n                          bubbleNode: Autodesk.Viewing.BubbleNode,\n                          options?: object): Promise<Autodesk.Viewing.Model> {\n    return this.viewer!.loadDocumentNode(document, bubbleNode, options);\n  }\n\n  /**\n   * We don't bundle Autodesk's scripts with the component, and we don't really want users to have\n   * to add the scripts to their index.html pages. So we'll load them when required.\n   */\n  private loadScripts(): Promise<void> {\n    const version = this.viewerOptions.version || '7.*';\n    const url = `https://developer.api.autodesk.com/modelderivative/v2/viewers/${version}/viewer3D.min.js`;\n    return this.script.load(\n      url,\n    )\n      .then((data) => {\n        this.log('script loaded ', data);\n      })\n      .catch(error => this.error(error));\n  }\n\n  /**\n   * Initialises the viewer\n   */\n  private async initialiseViewer() {\n    // Load scripts first\n    await this.loadScripts();\n    if (this.viewerOptions.onViewerScriptsLoaded) this.viewerOptions.onViewerScriptsLoaded();\n\n    // Check if the viewer has already been initialised - this isn't the nicest, but we've set the env in our\n    // options above so we at least know that it was us who did this!\n    if (!Autodesk.Viewing.Private.env) {\n      Autodesk.Viewing.Initializer(this.viewerOptions.initializerOptions, () => {\n        this.initialized();\n      });\n    } else {\n      // We need to give an initialised viewing application a tick to allow the DOM element\n      // to be established before we re-draw\n      setTimeout(() => {\n        this.initialized();\n      });\n    }\n  }\n\n  private initialized() {\n    // Register an extension to help us raise events\n    const extName = this.registerBasicExtension();\n    const config = this.addBasicExtensionConfig(extName);\n\n    // Support large models\n    if (this.viewerOptions.enableMemoryManagement) {\n      config['loaderExtensions'] = { svf: 'Autodesk.MemoryLimited' };\n    }\n\n    // Create a new viewer\n    if (this.viewerOptions.headlessViewer) {\n      this.viewer = new Autodesk.Viewing.Viewer3D(this.Container, config);\n    } else {\n      this.viewer = new Autodesk.Viewing.GuiViewer3D(this.Container, config);\n    }\n\n    // set a document url if environment set to Local\n    let url: string;\n    if (this.viewerOptions.initializerOptions?.env === 'Local') {\n      url = this.viewerOptions.initializerOptions?.['document'];\n    }\n    // Start the viewer\n    this.viewer!.start(url!);\n\n    // Viewer is ready - scripts are loaded and we've created a new viewing application\n    this.viewerInitialized = true;\n    this.viewerOptions.onViewerInitialized({ viewerComponent: this, viewer: this.viewer! });\n  }\n\n  /**\n   * Loads a model in to the viewer via it's urn\n   */\n  private loadModel(documentId: string) {\n    if (!documentId) {\n      return;\n    }\n\n    // Add urn: to the beginning of document id if needed\n    Autodesk.Viewing.Document.load(ViewerComponent.verifyUrn(documentId),\n                                   this.onDocumentLoadSuccess.bind(this),\n                                   this.onDocumentLoadFailure.bind(this));\n  }\n\n  /**\n   * Document successfully loaded\n   */\n  private onDocumentLoadSuccess(document: Autodesk.Viewing.Document) {\n    if (!document.getRoot()) return;\n\n    // Emit an event so the caller can do something\n    // TODO: config option to specify which viewable to display (how?)\n    this.onDocumentChanged.emit({ document, viewerComponent: this, viewer: this.viewer! });\n\n    if (this.viewerOptions.showFirstViewable === undefined || this.viewerOptions.showFirstViewable) {\n      let model: Autodesk.Viewing.BubbleNode = (document.getRoot() as any).getDefaultGeometry();\n      if (!model) {\n        const allModels = document.getRoot().search({ type: 'geometry' });\n        model = allModels[0];\n      }\n\n      void this.viewer?.loadDocumentNode(document, model, undefined);\n    }\n  }\n\n  /**\n   * Failed to load document\n   */\n  private onDocumentLoadFailure(errorCode: Autodesk.Viewing.ErrorCodes) {\n    this.error('onDocumentLoadFailure() - errorCode:' + errorCode);\n    this.onError.emit(errorCode);\n  }\n\n  /**\n   * Register our BasicExtension with the Forge Viewer\n   */\n  private registerBasicExtension(): string {\n    BasicExtension.registerExtension(BasicExtension.extensionName, this.extensionLoaded.bind(this));\n    return BasicExtension.extensionName;\n  }\n\n  /**\n   * Subscript to BasicExtension events when the extension has been\n   * succesfully loaded by the viewer.\n   */\n  private extensionLoaded(ext: BasicExtension) {\n    this.basicExt = ext;\n    ext.viewerEvents?.pipe(takeUntil(this.unsubscribe))\n      .subscribe((item: ViewerEventArgs) => {\n        this.log(item);\n\n        if (item instanceof FitToViewEventArgs) {\n          this.onFitToView.emit(item);\n        } else if (item instanceof FullscreenEventArgs) {\n          this.onFullscreen.emit(item);\n        } else if (item instanceof GeometryLoadedEventArgs) {\n          this.onGeometryLoaded.emit(item);\n        } else if (item instanceof HideEventArgs) {\n          this.onHide.emit(item);\n        } else if (item instanceof IsolateEventArgs) {\n          this.onIsolate.emit(item);\n        } else if (item instanceof ObjectTreeCreatedEventArgs) {\n          this.onObjectTreeCreated.emit(item);\n        } else if (item instanceof ObjectTreeUnavailableEventArgs) {\n          this.onObjectTreeUnavailable.emit(item);\n        } else if (item instanceof ResetEventArgs) {\n          this.onReset.emit(item);\n        } else if (item instanceof SelectionChangedEventArgs) {\n          this.onSelectionChanged.emit(item);\n        } else if (item instanceof ShowEventArgs) {\n          this.onShow.emit(item);\n        }\n      });\n  }\n\n  private unregisterBasicExtension() {\n    BasicExtension.unregisterExtension(BasicExtension.extensionName);\n    this.basicExt = null as any;\n  }\n\n  /**\n   * Add list of extensions to the viewer config that has been provided\n   * The allows the user to register their own extensions.\n   */\n  private addBasicExtensionConfig(extName: string): Autodesk.Viewing.ViewerConfig {\n    const config: Autodesk.Viewing.ViewerConfig = Object.assign(\n      {},\n      this.viewerOptions.viewerConfig,\n      { extensions: [] },\n    );\n\n    // We will always load our basic extension with any others specified by the caller\n    if (this.viewerOptions.viewerConfig && this.viewerOptions.viewerConfig.extensions) {\n      config.extensions = [...this.viewerOptions.viewerConfig.extensions, extName];\n    } else {\n      config.extensions = [extName];\n    }\n\n    return config;\n  }\n\n  private log(message?: any, ...optionalParams: any[]) {\n    if (!this.showDebugMessages) return;\n    console.log(message, optionalParams);\n  }\n\n  private error(message?: any, ...optionalParams: any[]) {\n    if (!this.showDebugMessages) return;\n    console.error(message, optionalParams);\n  }\n\n  private getDivName() {\n    const S4 = () => {\n      // tslint:disable-next-line:no-bitwise\n      return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n    };\n\n    const guid = (S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4());\n    return `viewer_${guid}`;\n  }\n}\n","<div [id]=\"containerId\" class=\"forge-viewer-container\"></div>\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\nexport interface ThumbnailOptions {\n  getAccessToken?: (onGetAccessToken: (token: string, expire: number) => void) => void;\n  documentId: string;\n  width?: 100|200|400;\n  height?: 100|200|400;\n  defaultImageSrc?: string;\n}\n\n@Component({\n  selector: 'adsk-forge-thumbnail',\n  templateUrl: './thumbnail.component.html',\n})\nexport class ThumbnailComponent implements OnChanges {\n  @Input() public thumbnailOptions!: ThumbnailOptions;\n  public imageSrc!: SafeUrl;\n\n  private token!: string;\n  private expire!: number;   // tslint:disable-line\n\n  constructor(\n    private http: HttpClient,\n    private sanitizer: DomSanitizer,\n  ) { }\n\n  public ngOnChanges() {\n    if (this.thumbnailOptions) {\n      this.setImageSrc(this.thumbnailOptions.defaultImageSrc);\n      this.getThumbnail(this.thumbnailOptions.documentId);\n    }\n  }\n\n  private getThumbnail(documentId: string) {\n    let url = `https://developer.api.autodesk.com/modelderivative/v2/designdata/${documentId}/thumbnail`;\n\n    let opts: string = '';\n    if (this.thumbnailOptions.width) opts += `width=${this.thumbnailOptions.width}&`;\n    if (this.thumbnailOptions.height) opts += `height=${this.thumbnailOptions.height}&`;\n    if (opts) url += `?${opts.slice(0, -1)}`;\n\n    if (this.thumbnailOptions?.getAccessToken) {\n      this.thumbnailOptions.getAccessToken(this.setAccessToken.bind(this));\n    }\n    const headers = {\n      Authorization: `Bearer ${this.token}`,\n      'Content-Type': 'image/png',\n    };\n\n    this.http.get(url, { headers, responseType: 'arraybuffer' })\n      .subscribe(\n        data => (data) ? this.setImageSrc(`data:image/png;base64,${this.toBase64(data)}`)\n          : this.setImageSrc(),\n        error => this.setImageSrc(),\n      );\n  }\n\n  private setAccessToken(accessToken: string, expiryTime: number) {\n    this.token = accessToken;\n    this.expire = expiryTime;\n  }\n\n  private toBase64(data: ArrayBuffer) {\n    return btoa(String.fromCharCode(...new Uint8Array(data) as any));\n  }\n\n  private setImageSrc(src: string = '') {\n    let imageSrc = '';\n\n    if (src) {\n      imageSrc = src;\n    } else {\n      imageSrc = (this.thumbnailOptions && this.thumbnailOptions.defaultImageSrc) || '';\n    }\n\n    this.imageSrc = this.sanitizer.bypassSecurityTrustUrl(imageSrc);\n  }\n}\n","<img [src]=\"imageSrc\" />\n","import { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { ViewerComponent } from './component/viewer.component';\nimport { ThumbnailComponent } from './component/thumbnail.component';\n\n@NgModule({\n  declarations: [ViewerComponent, ThumbnailComponent],\n  imports: [HttpClientModule],\n  exports: [ViewerComponent, ThumbnailComponent],\n  providers: [],\n})\nexport class ViewerModule { }\n","/*\n * Public API Surface of ng2-adsk-forge-viewer\n */\n\nexport * from './lib/ng2-adsk-forge-viewer.module';\n\nexport * from './lib/extensions/extension';\nexport { BasicExtension } from './lib/extensions/basic-extension';\nexport { ScriptService } from './lib/service/script.service';\n\nexport * from './lib/component/viewer.component';\nexport * from './lib/component/thumbnail.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ScriptService"],"mappings":"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"}