@dtducas/wh-forge-viewer 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/extensions/ToolbarExtension.js","../src/hooks/useCss.js","../src/hooks/useScript.js","../node_modules/style-inject/dist/style-inject.es.js","../src/components/ViewerForgePDF.jsx"],"sourcesContent":["export function registerToolbarExtension(Autodesk) {\n function ToolbarExtension(viewer, options) {\n Autodesk.Viewing.Extension.call(this, viewer, options);\n this.viewer = viewer;\n this.subToolbar = null;\n this.paginationGroup = null;\n this.viewables = [];\n this.currentIndex = 0;\n this.docBrowserShouldBeOpen = false; // Track if doc browser should remain open\n }\n ToolbarExtension.prototype = Object.create(\n Autodesk.Viewing.Extension.prototype\n );\n ToolbarExtension.prototype.constructor = ToolbarExtension;\n ToolbarExtension.prototype.load = function () {\n return true;\n };\n ToolbarExtension.prototype.unload = function () {\n this.cleanupToolbar();\n return true;\n };\n ToolbarExtension.prototype.cleanupToolbar = function () {\n if (this.viewer.toolbar) {\n if (this.subToolbar) {\n this.viewer.toolbar.removeControl(this.subToolbar);\n this.subToolbar = null;\n }\n if (this.paginationGroup) {\n this.viewer.toolbar.removeControl(this.paginationGroup);\n this.paginationGroup = null;\n }\n }\n };\n ToolbarExtension.prototype.setViewables = function (viewables) {\n this.viewables = viewables;\n this.currentIndex = 0;\n // If multiple pages, document browser will be auto-opened\n if (viewables.length > 1) {\n this.docBrowserShouldBeOpen = true;\n }\n this.updatePaginationState();\n this.viewer.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT, (e) => {\n this.updateCurrentIndexFromModel();\n });\n };\n ToolbarExtension.prototype.updateCurrentIndexFromModel = function () {\n if (!this.viewer.model || this.viewables.length === 0) return;\n const currentNode = this.viewer.model.getDocumentNode();\n if (currentNode) {\n const currentGuid = currentNode.data.guid || currentNode.guid;\n const index = this.viewables.findIndex((v) => {\n const vGuid = v.data && v.data.guid ? v.data.guid : v.guid;\n return vGuid === currentGuid;\n });\n if (index !== -1) {\n this.currentIndex = index;\n }\n this.updatePaginationState();\n }\n };\n ToolbarExtension.prototype.updatePaginationState = function () {\n if (!this.paginationGroup) return;\n\n // Hide pagination group if there's only 1 page or no pages\n if (this.viewables.length <= 1) {\n this.paginationGroup.setVisible(false);\n // Also hide the container via CSS to ensure it's completely hidden\n if (this.paginationGroup.container) {\n this.paginationGroup.container.style.display = 'none';\n }\n return;\n }\n\n // Show pagination group for multi-page documents\n this.paginationGroup.setVisible(true);\n // Ensure container is visible\n if (this.paginationGroup.container) {\n this.paginationGroup.container.style.display = '';\n }\n\n const totalBtn = this.paginationGroup.getControl('total-page-label');\n if (totalBtn) {\n const current = this.viewables.length > 0 ? this.currentIndex + 1 : 0;\n const total = this.viewables.length;\n totalBtn.setToolTip(`Page ${current} of ${total}`);\n const domElem = totalBtn.container;\n if (domElem) {\n domElem.innerHTML = `<div style=\"display: flex; align-items: center; justify-content: center; height: 100%; padding: 0 10px; color: white; font-size: 14px; white-space: nowrap;\">${current} / ${total}</div>`;\n }\n }\n };\n ToolbarExtension.prototype.loadCurrentViewable = function () {\n if (this.viewables.length > 0 && this.viewables[this.currentIndex]) {\n const viewer = this.viewer;\n const toolbar = viewer.toolbar;\n const self = this;\n\n // Store Document Browser panel state before loading new page\n const docBrowserExt = viewer.getExtension('Autodesk.DocumentBrowser');\n const isCurrentlyOpen = docBrowserExt && docBrowserExt.ui && docBrowserExt.ui.panel && docBrowserExt.ui.panel.isVisible();\n\n // Update flag - if currently open or flag is already set, keep it open\n if (isCurrentlyOpen) {\n this.docBrowserShouldBeOpen = true;\n }\n\n // Add one-time listener for geometry loaded to restore states\n const onGeometryLoaded = function () {\n viewer.removeEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, onGeometryLoaded);\n // Restore after geometry is fully loaded\n setTimeout(() => {\n self.restoreButtonStates(self.docBrowserShouldBeOpen);\n }, 200);\n };\n viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, onGeometryLoaded);\n\n viewer\n .loadDocumentNode(\n viewer.model.getDocumentNode().getDocument(),\n this.viewables[this.currentIndex]\n )\n .then(() => {\n const defaultGroups = ['settingsTools', 'modelTools', 'navTools'];\n defaultGroups.forEach((id) => {\n const group = toolbar.getControl(id);\n if (group) group.setVisible(false);\n });\n const toolGroupExists = toolbar.getControl('custom-tool-group');\n const paginationGroupExists = toolbar.getControl(\n 'custom-pagination-group'\n );\n if (!toolGroupExists && this.subToolbar) {\n toolbar.addControl(this.subToolbar);\n }\n if (!paginationGroupExists && this.paginationGroup) {\n toolbar.addControl(this.paginationGroup);\n }\n if (this.subToolbar) this.subToolbar.setVisible(true);\n if (this.paginationGroup) this.paginationGroup.setVisible(true);\n toolbar.setVisible(true);\n this.updatePaginationState();\n\n // Also restore immediately (may work for cached pages)\n this.restoreButtonStates(this.docBrowserShouldBeOpen);\n })\n .catch((err) => console.error('Error loading viewable:', err));\n }\n };\n ToolbarExtension.prototype.restoreButtonStates = function (shouldOpenDocBrowser) {\n const viewer = this.viewer;\n const toolbar = viewer.toolbar;\n if (!toolbar) return;\n\n const self = this;\n\n // Restore Document Browser state\n const openDocBrowser = async function () {\n if (!shouldOpenDocBrowser) {\n return;\n }\n\n let docBrowserExt = viewer.getExtension('Autodesk.DocumentBrowser');\n\n // If extension is null, it was unloaded - we need to reload it\n if (!docBrowserExt) {\n try {\n docBrowserExt = await viewer.loadExtension('Autodesk.DocumentBrowser');\n\n // After loading, we need to wait for the extension to fully initialize\n // and then open the panel\n setTimeout(() => {\n if (docBrowserExt && docBrowserExt.ui) {\n docBrowserExt.ui.togglePanel();\n setTimeout(() => {\n self.applyDocBrowserStyling();\n self.checkButtonState();\n }, 150);\n }\n }, 200);\n return;\n } catch (e) {\n console.error('[ToolbarExt] Failed to reload DocumentBrowser:', e);\n return;\n }\n }\n\n // Extension exists, check if it has ui\n if (!docBrowserExt.ui) {\n return;\n }\n\n // Check if panel exists and is already visible\n if (docBrowserExt.ui.panel) {\n if (docBrowserExt.ui.panel.isVisible()) {\n self.applyDocBrowserStyling();\n self.checkButtonState();\n return;\n }\n\n // Use setVisible(true) directly on the panel\n docBrowserExt.ui.panel.setVisible(true);\n setTimeout(() => {\n self.applyDocBrowserStyling();\n self.checkButtonState();\n }, 100);\n return;\n }\n\n // If panel doesn't exist yet, use togglePanel to create it\n if (typeof docBrowserExt.ui.togglePanel === 'function') {\n docBrowserExt.ui.togglePanel();\n setTimeout(() => {\n self.applyDocBrowserStyling();\n self.checkButtonState();\n }, 150);\n }\n };\n\n // Restore Pan tool active state\n const restorePanTool = function () {\n self.activatePanTool();\n };\n\n // Call restore at multiple intervals to ensure it works\n // Use longer delays since geometry needs to fully load\n setTimeout(openDocBrowser, 300);\n setTimeout(openDocBrowser, 600);\n setTimeout(openDocBrowser, 1000);\n setTimeout(restorePanTool, 100);\n setTimeout(restorePanTool, 300);\n };\n ToolbarExtension.prototype.applyDocBrowserStyling = function () {\n const viewer = this.viewer;\n const ext = viewer.getExtension('Autodesk.DocumentBrowser');\n if (ext && ext.ui && ext.ui.panel && ext.ui.panel.container) {\n ext.ui.panel.container.style.top = '0';\n ext.ui.panel.container.style.left = 'unset';\n ext.ui.panel.container.style.right = '0px';\n ext.ui.panel.container.style.width = '200px';\n ext.ui.panel.container.style.height = '80%';\n }\n\n // Switch to Thumbnail tab\n this.switchToThumbnailTab();\n };\n ToolbarExtension.prototype.switchToThumbnailTab = function () {\n // Try multiple selectors to find the thumbnail tab button\n const thumbnailTab =\n document.querySelector('.docking-panel-thumbnail-view') ||\n document.querySelector('[data-i18n=\"Thumbnails\"]') ||\n Array.from(\n document.querySelectorAll('.adsk-control-group .adsk-button')\n ).find(\n (btn) =>\n btn.textContent.includes('Thumbnails') ||\n btn.title.includes('Thumbnails')\n );\n\n if (thumbnailTab && !thumbnailTab.classList.contains('active')) {\n thumbnailTab.click();\n }\n };\n ToolbarExtension.prototype.activatePanTool = function () {\n const viewer = this.viewer;\n const toolbar = viewer.toolbar;\n if (!toolbar) return;\n\n // Activate pan tool using viewer API\n try {\n viewer.setActiveNavigationTool('pan');\n } catch (e) {\n // Fallback: click the original pan button\n const originalPanBtn = document.getElementById('toolbar-panTool');\n if (originalPanBtn) {\n originalPanBtn.click();\n }\n }\n\n // Update custom pan button visual state\n const toolGroup = toolbar.getControl('custom-tool-group');\n if (toolGroup) {\n const panBtn = toolGroup.getControl('custom-pan-btn');\n if (panBtn) {\n panBtn.setState(Autodesk.Viewing.UI.Button.State.ACTIVE);\n if (panBtn.container) {\n panBtn.container.classList.add('active');\n panBtn.container.classList.remove('inactive');\n }\n }\n }\n };\n ToolbarExtension.prototype.onToolbarCreated = function (toolbar) {\n this.refreshToolbar();\n this.viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, () => {\n setTimeout(() => {\n this.refreshToolbar();\n this.updateCurrentIndexFromModel();\n }, 100);\n });\n this.viewer.addEventListener(Autodesk.Viewing.TOOLBAR_CREATED_EVENT, () => {\n setTimeout(() => {\n this.refreshToolbar();\n }, 10);\n });\n if (this._toolbarInterval) clearInterval(this._toolbarInterval);\n this._toolbarInterval = setInterval(() => {\n if (this.viewer && this.viewer.toolbar) {\n const toolGroup = this.viewer.toolbar.getControl('custom-tool-group');\n const pagGroup = this.viewer.toolbar.getControl(\n 'custom-pagination-group'\n );\n if (!toolGroup || !pagGroup) {\n this.refreshToolbar();\n }\n this.checkButtonState();\n }\n }, 200);\n };\n ToolbarExtension.prototype.checkButtonState = function () {\n const viewer = this.viewer;\n if (!viewer.toolbar) return;\n\n const toolGroup = viewer.toolbar.getControl('custom-tool-group');\n if (!toolGroup) return;\n\n // Check Document Browser button state\n const docBtn = toolGroup.getControl('custom-doc-browser-btn');\n if (docBtn) {\n const ext = viewer.getExtension('Autodesk.DocumentBrowser');\n const isVisible =\n ext && ext.ui && ext.ui.panel && ext.ui.panel.isVisible();\n\n const newState = isVisible\n ? Autodesk.Viewing.UI.Button.State.ACTIVE\n : Autodesk.Viewing.UI.Button.State.INACTIVE;\n\n if (docBtn.getState() !== newState) {\n docBtn.setState(newState);\n }\n\n // Force CSS class update to ensure visual state is correct\n if (docBtn.container) {\n if (isVisible) {\n docBtn.container.classList.add('active');\n docBtn.container.classList.remove('inactive');\n } else {\n docBtn.container.classList.remove('active');\n docBtn.container.classList.add('inactive');\n }\n }\n }\n\n // Check Pan button state - ensure it stays active\n const panBtn = toolGroup.getControl('custom-pan-btn');\n if (panBtn) {\n // Check if pan tool is the active tool\n const activeTool = viewer.getActiveNavigationTool();\n const isPanActive = activeTool === 'pan';\n\n if (isPanActive) {\n panBtn.setState(Autodesk.Viewing.UI.Button.State.ACTIVE);\n if (panBtn.container) {\n panBtn.container.classList.add('active');\n panBtn.container.classList.remove('inactive');\n }\n }\n }\n };\n const originalUnload = ToolbarExtension.prototype.unload;\n ToolbarExtension.prototype.unload = function () {\n if (this._toolbarInterval) {\n clearInterval(this._toolbarInterval);\n this._toolbarInterval = null;\n }\n return originalUnload.call(this);\n };\n ToolbarExtension.prototype.refreshToolbar = function () {\n const viewer = this.viewer;\n const toolbar = viewer.toolbar;\n if (!toolbar) return;\n const defaultGroups = ['settingsTools', 'modelTools', 'navTools'];\n defaultGroups.forEach((id) => {\n const group = toolbar.getControl(id);\n if (group) {\n group.setVisible(false);\n if (group.container) {\n group.container.style.display = 'none';\n }\n }\n });\n let toolGroup = toolbar.getControl('custom-tool-group');\n let pagGroup = toolbar.getControl('custom-pagination-group');\n if (!toolGroup) {\n if (this.subToolbar) {\n this.subToolbar = null;\n }\n this.createToolGroup(toolbar);\n } else {\n toolGroup.setVisible(true);\n this.subToolbar = toolGroup;\n }\n if (!pagGroup) {\n if (this.paginationGroup) {\n this.paginationGroup = null;\n }\n this.createPaginationGroup(toolbar);\n } else {\n // Don't force visibility here - let updatePaginationState handle it\n this.paginationGroup = pagGroup;\n }\n toolbar.setVisible(true);\n this.updatePaginationState();\n };\n ToolbarExtension.prototype.createToolGroup = function (toolbar) {\n const viewer = this.viewer;\n this.subToolbar = new Autodesk.Viewing.UI.ControlGroup('custom-tool-group');\n toolbar.addControl(this.subToolbar);\n const panBtn = new Autodesk.Viewing.UI.Button('custom-pan-btn');\n panBtn.setIcon('adsk-icon-pan');\n panBtn.setToolTip('Pan');\n panBtn.onClick = () => {\n const originalPanBtn = document.getElementById('toolbar-panTool');\n if (originalPanBtn) {\n originalPanBtn.click();\n }\n\n // Set this button to active state\n if (panBtn.container) {\n panBtn.container.classList.add('active');\n panBtn.container.classList.remove('inactive');\n }\n panBtn.setState(Autodesk.Viewing.UI.Button.State.ACTIVE);\n };\n this.subToolbar.addControl(panBtn);\n const docBrowserBtn = new Autodesk.Viewing.UI.Button(\n 'custom-doc-browser-btn'\n );\n docBrowserBtn.setIcon('adsk-icon-documentModels');\n docBrowserBtn.setToolTip('Document Browser');\n const self = this;\n docBrowserBtn.onClick = () => {\n const ext = viewer.getExtension('Autodesk.DocumentBrowser');\n if (ext && ext.ui) {\n ext.ui.togglePanel();\n // Update flag based on new state\n setTimeout(() => {\n self.docBrowserShouldBeOpen = ext.ui.panel && ext.ui.panel.isVisible();\n }, 50);\n }\n };\n this.subToolbar.addControl(docBrowserBtn);\n const downloadBtn = new Autodesk.Viewing.UI.Button('custom-download-btn');\n downloadBtn.setIcon('adsk-icon-custom-download');\n downloadBtn.setToolTip('Download File');\n downloadBtn.onClick = async () => {\n if (this.options && this.options.filePath) {\n try {\n const fileUrl = this.options.filePath;\n const response = await fetch(fileUrl);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const blob = await response.blob();\n const urlPath = new URL(fileUrl).pathname;\n const filename =\n decodeURIComponent(urlPath.split('/').pop()) || 'document.pdf';\n const blobUrl = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = blobUrl;\n anchor.download = filename;\n anchor.style.display = 'none';\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n URL.revokeObjectURL(blobUrl);\n } catch (error) {\n console.error('Download error:', error);\n alert('Unable to download file: ' + error.message);\n }\n } else {\n console.warn('FilePath not available in extension options');\n alert('File path not available for download');\n }\n };\n this.subToolbar.addControl(downloadBtn);\n };\n ToolbarExtension.prototype.createPaginationGroup = function (toolbar) {\n this.paginationGroup = new Autodesk.Viewing.UI.ControlGroup(\n 'custom-pagination-group'\n );\n toolbar.addControl(this.paginationGroup);\n const prevBtn = new Autodesk.Viewing.UI.Button('prev-page-btn');\n prevBtn.setIcon('adsk-icon-custom-prev');\n prevBtn.addClass('custom-prev-btn');\n prevBtn.setToolTip('Previous Page');\n prevBtn.onClick = () => {\n if (this.viewables.length > 0) {\n this.currentIndex =\n (this.currentIndex - 1 + this.viewables.length) %\n this.viewables.length;\n this.loadCurrentViewable();\n }\n };\n this.paginationGroup.addControl(prevBtn);\n const labelBtn = new Autodesk.Viewing.UI.Button('total-page-label');\n labelBtn.setToolTip('Page info');\n this.paginationGroup.addControl(labelBtn);\n const nextBtn = new Autodesk.Viewing.UI.Button('next-page-btn');\n nextBtn.setIcon('adsk-icon-custom-next');\n nextBtn.addClass('custom-next-btn');\n nextBtn.setToolTip('Next Page');\n nextBtn.onClick = () => {\n if (this.viewables.length > 0) {\n this.currentIndex = (this.currentIndex + 1) % this.viewables.length;\n this.loadCurrentViewable();\n }\n };\n this.paginationGroup.addControl(nextBtn);\n };\n Autodesk.Viewing.theExtensionManager.registerExtension(\n 'ToolbarExtension',\n ToolbarExtension\n );\n}\n","import { useEffect } from 'react';\n\nconst useCss = (href) => {\n useEffect(() => {\n if (!href) return;\n const link = document.createElement('link');\n link.href = href;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n\n return () => {\n document.head.removeChild(link);\n };\n }, [href]);\n};\n\nexport default useCss;\n","import { useEffect, useState } from 'react';\nconst scriptCache = new Set();\nconst useScript = (src) => {\n const [status, setStatus] = useState(src ? 'loading' : 'idle');\n useEffect(() => {\n if (!src) {\n setStatus('idle');\n return;\n }\n if (scriptCache.has(src)) {\n setStatus('ready');\n return;\n }\n let script = document.querySelector(`script[src=\"${src}\"]`);\n if (!script) {\n script = document.createElement('script');\n script.src = src;\n script.async = true;\n script.setAttribute('data-status', 'loading');\n document.body.appendChild(script);\n const setAttributeFromEvent = (event) => {\n const attribute = event.type === 'load' ? 'ready' : 'error';\n script?.setAttribute('data-status', attribute);\n if (attribute === 'ready') scriptCache.add(src);\n setStatus(attribute);\n };\n script.addEventListener('load', setAttributeFromEvent);\n script.addEventListener('error', setAttributeFromEvent);\n } else {\n setStatus(script.getAttribute('data-status'));\n }\n const setStateFromEvent = (event) => {\n setStatus(event.type === 'load' ? 'ready' : 'error');\n };\n script.addEventListener('load', setStateFromEvent);\n script.addEventListener('error', setStateFromEvent);\n return () => {\n if (script) {\n script.removeEventListener('load', setStateFromEvent);\n script.removeEventListener('error', setStateFromEvent);\n }\n };\n }, [src]);\n return status;\n};\nexport default useScript;\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { message } from 'antd';\nimport { useEffect } from 'react';\nimport { registerToolbarExtension } from '../extensions/ToolbarExtension';\nimport useCss from '../hooks/useCss';\nimport useScript from '../hooks/useScript';\nimport '../styles/toolbar-custom.css';\nimport '../styles/toolbar-icons.css';\nconst ViewerForgePDF = ({ filePath, fileExt, setViewer }) => {\n useCss(\n 'https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css'\n );\n const status = useScript(\n 'https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js'\n );\n useEffect(() => {\n if (status === 'ready' && window.Autodesk) {\n const Autodesk = window.Autodesk;\n if (!fileExt) {\n message.warning('You need to provide file extension');\n return;\n }\n const validExts = ['pdf', 'dwf', 'dwfx'];\n if (!validExts.includes(fileExt.toLowerCase())) {\n message.warning('Only support pdf, dwf, dwfx format');\n return;\n }\n Autodesk.Viewing.Initializer({ env: 'Local' }, async () => {\n registerToolbarExtension(Autodesk);\n const viewerDiv = document.getElementById('forgeViewerPDF');\n viewerDiv.innerHTML = '';\n const viewer = new Autodesk.Viewing.GuiViewer3D(viewerDiv);\n viewer.start();\n viewer.loadExtension('Autodesk.DocumentBrowser');\n viewer.loadExtension('Autodesk.Viewing.MarkupsCore');\n viewer.loadExtension('Autodesk.Viewing.MarkupsGui');\n viewer.loadExtension('ToolbarExtension', { filePath: filePath });\n viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, (e) => {\n e.target.loadExtension('Autodesk.Viewing.MarkupsCore');\n e.target.loadExtension('Autodesk.Viewing.MarkupsGui');\n });\n const isDWF =\n fileExt.toLowerCase() === 'pdf' ? 'Autodesk.PDF' : 'Autodesk.DWF';\n await viewer.loadExtension(isDWF);\n const handleLoadSuccess = (e) => {\n try {\n viewer.setReverseZoomDirection(true);\n const root = e.getDocumentNode().getRootNode();\n const view3d = root.search(\n { type: 'geometry', role: '3d', progress: 'complete' },\n true\n );\n const view2d = root.search(\n { type: 'geometry', role: '2d', progress: 'complete' },\n true\n );\n const viewables = view3d.concat(view2d);\n const toolbarExt = viewer.getExtension('ToolbarExtension');\n if (toolbarExt && typeof toolbarExt.setViewables === 'function') {\n toolbarExt.setViewables(viewables);\n }\n if (viewer.toolbar) {\n viewer.toolbar.setVisible(true);\n }\n if (viewables.length > 1) {\n // Auto-open Document Browser by clicking the original button\n setTimeout(() => {\n const originalDocBtn = document.getElementById('toolbar-documentModels');\n if (originalDocBtn && !originalDocBtn.classList.contains('active')) {\n originalDocBtn.click();\n }\n\n // Apply custom styling to the panel\n const documentBrowser = viewer.getExtension('Autodesk.DocumentBrowser');\n if (documentBrowser && documentBrowser.ui && documentBrowser.ui.panel) {\n documentBrowser.ui.panel.container.style.top = '0';\n documentBrowser.ui.panel.container.style.left = 'unset';\n documentBrowser.ui.panel.container.style.right = '0px';\n documentBrowser.ui.panel.container.style.width = '200px';\n documentBrowser.ui.panel.container.style.height = '80%';\n documentBrowser.ui.panel.container.style.minHeight = '400px';\n }\n\n // Switch to Thumbnail tab after a short delay\n setTimeout(() => {\n // Try multiple selectors to find the thumbnail tab button\n const thumbnailTab = document.querySelector('.docking-panel-thumbnail-view')\n || document.querySelector('[data-i18n=\"Thumbnails\"]')\n || Array.from(document.querySelectorAll('.adsk-control-group .adsk-button')).find(btn =>\n btn.textContent.includes('Thumbnails') || btn.title.includes('Thumbnails')\n );\n\n if (thumbnailTab && !thumbnailTab.classList.contains('active')) {\n thumbnailTab.click();\n }\n }, 200);\n }, 500);\n }\n\n\n\n\n\n // Ensure Custom Pan tool is active by default\n setTimeout(() => {\n const customPanBtn = document.getElementById('custom-pan-btn');\n if (customPanBtn) {\n customPanBtn.click();\n // Double check visual state\n if (!customPanBtn.classList.contains('active')) {\n customPanBtn.classList.add('active');\n customPanBtn.classList.remove('inactive');\n }\n } else {\n // Fallback if custom button not found immediately, try accessing via viewer toolbar\n const toolGroup = viewer.toolbar?.getControl('custom-tool-group');\n const panBtnConf = toolGroup?.getControl('custom-pan-btn');\n if (panBtnConf) {\n panBtnConf.setState(1); // ACTIVE\n }\n }\n }, 600);\n\n if (setViewer) setViewer(viewer);\n } catch (err) {\n console.error('Error in handleLoadSuccess:', err);\n }\n };\n if (isDWF === 'Autodesk.DWF') {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', filePath, true);\n xhr.responseType = 'blob';\n xhr.onload = function () {\n if (this.status === 200) {\n const myBlob = this.response;\n const url1 = window.URL.createObjectURL(myBlob);\n viewer.loadModel(url1 + '#.dwf', {}, handleLoadSuccess);\n }\n };\n xhr.send();\n } else {\n viewer.loadModel(filePath, {}, handleLoadSuccess);\n }\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [status, filePath, fileExt]);\n return (\n <div style={{ position: 'relative', width: '100%', height: '100%' }}>\n <div id='forgeViewerPDF' style={{ width: '100%', height: '100%' }} />\n </div>\n );\n};\nexport default ViewerForgePDF;\n"],"names":["registerToolbarExtension","Autodesk","ToolbarExtension","viewer","options","Viewing","Extension","call","subToolbar","paginationGroup","viewables","currentIndex","docBrowserShouldBeOpen","prototype","Object","create","constructor","load","unload","cleanupToolbar","toolbar","removeControl","setViewables","_this","length","updatePaginationState","addEventListener","MODEL_ADDED_EVENT","e","updateCurrentIndexFromModel","model","currentNode","getDocumentNode","currentGuid","data","guid","index","findIndex","v","vGuid","setVisible","container","style","display","totalBtn","getControl","current","total","setToolTip","concat","domElem","innerHTML","loadCurrentViewable","_this2","self","docBrowserExt","getExtension","isCurrentlyOpen","ui","panel","isVisible","onGeometryLoaded","removeEventListener","GEOMETRY_LOADED_EVENT","setTimeout","restoreButtonStates","loadDocumentNode","getDocument","then","defaultGroups","forEach","id","group","toolGroupExists","paginationGroupExists","addControl","err","console","error","shouldOpenDocBrowser","openDocBrowser","_ref","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","p","n","a","loadExtension","togglePanel","applyDocBrowserStyling","checkButtonState","apply","arguments","restorePanTool","activatePanTool","ext","top","left","right","width","height","switchToThumbnailTab","thumbnailTab","document","querySelector","Array","from","querySelectorAll","find","btn","textContent","includes","title","classList","contains","click","setActiveNavigationTool","originalPanBtn","getElementById","toolGroup","panBtn","setState","UI","Button","State","ACTIVE","add","remove","onToolbarCreated","_this3","refreshToolbar","TOOLBAR_CREATED_EVENT","_toolbarInterval","clearInterval","setInterval","pagGroup","docBtn","newState","INACTIVE","getState","activeTool","getActiveNavigationTool","isPanActive","originalUnload","createToolGroup","createPaginationGroup","_this4","ControlGroup","setIcon","onClick","docBrowserBtn","downloadBtn","_callee2","fileUrl","response","blob","urlPath","filename","blobUrl","anchor","_t2","_context2","filePath","fetch","ok","Error","status","URL","pathname","decodeURIComponent","split","pop","createObjectURL","createElement","href","download","body","appendChild","removeChild","revokeObjectURL","alert","message","warn","_this5","prevBtn","addClass","labelBtn","nextBtn","theExtensionManager","registerExtension","useCss","useEffect","link","rel","head","scriptCache","Set","useScript","src","_useState","useState","_useState2","_slicedToArray","setStatus","has","script","async","setAttribute","setAttributeFromEvent","event","_script","attribute","type","getAttribute","setStateFromEvent","ViewerForgePDF","fileExt","setViewer","window","warning","validExts","toLowerCase","Initializer","env","viewerDiv","isDWF","handleLoadSuccess","xhr","GuiViewer3D","start","target","setReverseZoomDirection","root","getRootNode","view3d","search","role","progress","view2d","toolbarExt","originalDocBtn","documentBrowser","minHeight","customPanBtn","_viewer$toolbar","panBtnConf","XMLHttpRequest","open","responseType","onload","myBlob","url1","loadModel","send","_jsx","position","children"],"mappings":"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","x_google_ignoreList":[3]}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/constants/document-browser.constants.ts","../src/constants/events.constants.ts","../src/constants/toolbar.constants.ts","../src/constants/viewer.constants.ts","../node_modules/tslib/tslib.es6.js","../src/utils/dom.utils.ts","../src/utils/file.utils.ts","../src/services/DownloadService.ts","../src/services/EventBus.ts","../src/services/FileLoader.ts","../src/managers/DocumentBrowserManager.ts","../src/managers/PaginationManager.ts","../src/managers/ToolbarManager.ts","../src/extensions/ToolbarExtension.js","../src/hooks/useCss.js","../src/hooks/useScript.js","../node_modules/style-inject/dist/style-inject.es.js","../src/components/ViewerForgePDF.jsx"],"sourcesContent":["/**\n * Document Browser Configuration Constants\n *\n * @file document-browser.constants.ts\n * @description Constants for Document Browser panel configuration and styling\n */\nexport const DOCUMENT_BROWSER_DEFAULTS = {\n position: 'right' as const,\n autoOpen: true,\n persistState: true,\n defaultTab: 'thumbnails' as const,\n};\nexport const DOCUMENT_BROWSER_STYLES = {\n top: '0',\n left: 'unset',\n right: '0px',\n};\nexport const THUMBNAIL_TAB_SELECTORS = [\n '.docking-panel-thumbnail-view',\n '[data-i18n=\"Thumbnails\"]',\n '.adsk-control-group .adsk-button',\n];\n","/**\n * Event Names Constants\n *\n * @file events.constants.ts\n * @description Constants for Autodesk Forge events and custom application events\n */\nexport const EVENT_NAMES = {\n // Autodesk Forge Events\n GEOMETRY_LOADED: 'Autodesk.Viewing.GEOMETRY_LOADED_EVENT',\n MODEL_ADDED: 'Autodesk.Viewing.MODEL_ADDED_EVENT',\n TOOLBAR_CREATED: 'Autodesk.Viewing.TOOLBAR_CREATED_EVENT',\n // Custom Application Events\n PAGE_CHANGED: 'page:changed',\n VIEWABLES_SET: 'viewables:set',\n DOC_BROWSER_OPENED: 'docBrowser:opened',\n DOC_BROWSER_CLOSED: 'docBrowser:closed',\n TOOLBAR_BUTTON_CLICKED: 'toolbar:button:clicked',\n PAN_ACTIVATED: 'pan:activated',\n DOWNLOAD_REQUESTED: 'download:requested',\n};\n","/**\n * Toolbar Configuration Constants\n *\n * @file toolbar.constants.ts\n * @description Constants for custom toolbar buttons, groups, and refresh intervals\n */\nexport const DEFAULT_HIDDEN_TOOLBAR_GROUPS = [\n 'settingsTools',\n 'modelTools',\n 'navTools',\n];\nexport const CUSTOM_TOOLBAR_BUTTONS = {\n PAN: {\n id: 'custom-pan-btn',\n icon: 'adsk-icon-pan',\n tooltip: 'Pan',\n },\n DOC_BROWSER: {\n id: 'custom-doc-browser-btn',\n icon: 'adsk-icon-documentModels',\n tooltip: 'Document Browser',\n },\n DOWNLOAD: {\n id: 'custom-download-btn',\n icon: 'adsk-icon-custom-download',\n tooltip: 'Download File',\n },\n};\nexport const PAGINATION_BUTTONS = {\n PREV: {\n id: 'prev-page-btn',\n icon: 'adsk-icon-custom-prev',\n tooltip: 'Previous Page',\n },\n NEXT: {\n id: 'next-page-btn',\n icon: 'adsk-icon-custom-next',\n tooltip: 'Next Page',\n },\n LABEL: {\n id: 'total-page-label',\n tooltip: 'Page info',\n },\n};\nexport const TOOLBAR_REFRESH_INTERVALS = {\n HEALING_POLL: 8,\n BUTTON_STATE_CHECK: 10,\n DOM_SETTLE: 50,\n GEOMETRY_SETTLE: 80,\n EXTENSION_INIT: 150,\n};\nexport const TOOLBAR_CONTROL_GROUP_IDS = {\n TOOLS: 'custom-tool-group',\n PAGINATION: 'custom-pagination-group',\n};\n","/**\n * Autodesk Forge Viewer Configuration Constants\n *\n * @file viewer.constants.ts\n * @description Constants for Forge Viewer initialization, CDN URLs, and file type mappings\n */\nexport const FORGE_VIEWER_VERSION = '7.*';\nexport const FORGE_VIEWER_CDN =\n 'https://developer.api.autodesk.com/modelderivative/v2/viewers';\nexport const FORGE_STYLE_URL = `${FORGE_VIEWER_CDN}/${FORGE_VIEWER_VERSION}/style.min.css`;\nexport const FORGE_SCRIPT_URL = `${FORGE_VIEWER_CDN}/${FORGE_VIEWER_VERSION}/viewer3D.min.js`;\nexport const SUPPORTED_FILE_EXTENSIONS = ['pdf', 'dwf', 'dwfx'] as const;\nexport type TSupportedFileExtension =\n (typeof SUPPORTED_FILE_EXTENSIONS)[number];\nexport const FILE_EXTENSION_TO_VIEWER_EXTENSION: Record<\n TSupportedFileExtension,\n string\n> = {\n pdf: 'Autodesk.PDF',\n dwf: 'Autodesk.DWF',\n dwfx: 'Autodesk.DWF',\n};\nexport const GEOMETRY_SEARCH_CRITERIA = {\n VIEW_3D: { type: 'geometry', role: '3d', progress: 'complete' },\n VIEW_2D: { type: 'geometry', role: '2d', progress: 'complete' },\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\n * DOM Utility Functions\n *\n * @file dom.utils.ts\n * @description Utilities for safe DOM manipulation and querying\n */\n/**\n * Find element by text content\n */\nexport function findElementByText(\n selector: string,\n text: string\n): Element | null {\n const elements = Array.from(document.querySelectorAll(selector));\n return elements.find((el) => el.textContent?.includes(text)) ?? null;\n}\n/**\n * Find thumbnail tab element using multiple selectors\n */\nexport function findThumbnailTab(): Element | null {\n return (\n document.querySelector('.docking-panel-thumbnail-view') ||\n document.querySelector('[data-i18n=\"Thumbnails\"]') ||\n findElementByText('.adsk-control-group .adsk-button', 'Thumbnails')\n );\n}\n/**\n * Safely click an element\n */\nexport function clickElement(element: Element | null): void {\n if (element && 'click' in element) {\n (element as HTMLElement).click();\n }\n}\n/**\n * Apply multiple styles to an element\n */\nexport function applyStyles(\n element: HTMLElement | null,\n styles: Record<string, string>\n): void {\n if (element) {\n Object.assign(element.style, styles);\n }\n}\n/**\n * Toggle CSS class on element\n */\nexport function toggleClass(\n element: HTMLElement | null,\n className: string,\n force?: boolean\n): void {\n element?.classList.toggle(className, force);\n}\n/**\n * Add multiple CSS classes to element\n */\nexport function addClasses(\n element: HTMLElement | null,\n ...classNames: string[]\n): void {\n if (element) {\n element.classList.add(...classNames);\n }\n}\n/**\n * Remove multiple CSS classes from element\n */\nexport function removeClasses(\n element: HTMLElement | null,\n ...classNames: string[]\n): void {\n if (element) {\n element.classList.remove(...classNames);\n }\n}\n","/**\n * File Utility Functions\n *\n * @file file.utils.ts\n * @description Utilities for file handling and path operations\n */\n/**\n * Extract filename from URL or path\n */\nexport function extractFilenameFromPath(path: string): string {\n try {\n const urlPath = new URL(path).pathname;\n const filename = urlPath.split('/').pop();\n return decodeURIComponent(filename || 'document.pdf');\n } catch {\n const parts = path.split('/');\n return parts[parts.length - 1] || 'document.pdf';\n }\n}\n/**\n * Get file extension from filename\n */\nexport function getFileExtension(filename: string): string {\n const parts = filename.split('.');\n return parts.length > 1 ? parts.pop()!.toLowerCase() : '';\n}\n/**\n * Validate if string is a valid URL\n */\nexport function isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n","/**\n * DownloadService\n *\n * @file DownloadService.ts\n * @description Service for downloading files\n * Extracted from ToolbarExtension.js lines 448-477\n */\nimport { extractFilenameFromPath } from '../utils';\nexport class DownloadService {\n /**\n * Download a file from URL\n *\n * @param fileUrl - URL of file to download\n *\n * @example\n * const downloadService = new DownloadService();\n * await downloadService.downloadFile('https://example.com/document.pdf');\n */\n async downloadFile(fileUrl: string): Promise<void> {\n try {\n const response = await fetch(fileUrl);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const blob = await response.blob();\n const filename = extractFilenameFromPath(fileUrl);\n // Create download link\n const blobUrl = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = blobUrl;\n anchor.download = filename;\n anchor.style.display = 'none';\n // Trigger download\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n // Cleanup\n URL.revokeObjectURL(blobUrl);\n } catch (error) {\n throw error;\n }\n }\n}\n","/**\n * EventBus Service\n *\n * @file EventBus.ts\n * @description Singleton service for decoupled event-based communication\n * Implements Observer Pattern for loose coupling between managers\n */\nexport type TEventListener = (data: any) => void;\nexport class EventBus {\n private static instance: EventBus;\n private listeners: Map<string, Set<TEventListener>> = new Map();\n private constructor() {\n // Private constructor for singleton pattern\n }\n /**\n * Get singleton instance of EventBus\n *\n * @example\n * const eventBus = EventBus.getInstance();\n * eventBus.on('myEvent', (data) => console.log(data));\n */\n static getInstance(): EventBus {\n if (!EventBus.instance) {\n EventBus.instance = new EventBus();\n }\n return EventBus.instance;\n }\n /**\n * Subscribe to an event\n *\n * @param eventName - Event name to listen for\n * @param listener - Callback function to execute when event is emitted\n *\n * @example\n * eventBus.on('page:changed', (data) => {\n * console.log('Page changed to:', data.index);\n * });\n */\n on(eventName: string, listener: TEventListener): void {\n if (!this.listeners.has(eventName)) {\n this.listeners.set(eventName, new Set());\n }\n this.listeners.get(eventName)!.add(listener);\n }\n /**\n * Unsubscribe from an event\n *\n * @param eventName - Event name to stop listening for\n * @param listener - Callback function to remove\n *\n * @example\n * const handler = (data) => console.log(data);\n * eventBus.on('myEvent', handler);\n * eventBus.off('myEvent', handler);\n */\n off(eventName: string, listener: TEventListener): void {\n const listeners = this.listeners.get(eventName);\n if (listeners) {\n listeners.delete(listener);\n if (listeners.size === 0) {\n this.listeners.delete(eventName);\n }\n }\n }\n /**\n * Emit an event to all subscribers\n *\n * @param eventName - Event name to emit\n * @param data - Data to pass to subscribers\n *\n * @example\n * eventBus.emit('page:changed', { index: 5, viewable: {...} });\n */\n emit(eventName: string, data?: any): void {\n const listeners = this.listeners.get(eventName);\n if (listeners) {\n listeners.forEach((listener) => {\n try {\n listener(data);\n } catch (error) {\n // Silent error handling\n }\n });\n }\n }\n /**\n * Clear all listeners for an event (or all events if no eventName provided)\n *\n * @param eventName - Optional event name to clear. If not provided, clears all events\n */\n clear(eventName?: string): void {\n if (eventName) {\n this.listeners.delete(eventName);\n } else {\n this.listeners.clear();\n }\n }\n /**\n * Get number of listeners for an event\n *\n * @param eventName - Event name to count listeners for\n * @returns Number of listeners registered for the event\n */\n listenerCount(eventName: string): number {\n return this.listeners.get(eventName)?.size ?? 0;\n }\n}\n","/**\n * FileLoader Service\n *\n * @file FileLoader.ts\n * @description Service for loading documents into Forge Viewer\n * Handles PDF, DWF, and DWFX formats\n *\n * Extracted from ViewerForgePDF.jsx lines 44-139\n */\nimport {\n EVENT_NAMES,\n FILE_EXTENSION_TO_VIEWER_EXTENSION,\n GEOMETRY_SEARCH_CRITERIA,\n} from '../constants';\nimport {\n ILoadModelCallbacks,\n IViewer,\n TSupportedFileExtension,\n TViewable,\n} from '../types';\nimport { EventBus } from './EventBus';\nexport class FileLoader {\n private viewer: IViewer;\n private eventBus: EventBus;\n constructor(viewer: IViewer) {\n this.viewer = viewer;\n this.eventBus = EventBus.getInstance();\n }\n /**\n * Load a file into the viewer\n *\n * @param filePath - Path or URL to the file\n * @param fileExt - File extension (pdf, dwf, dwfx)\n * @param callbacks - Optional success/error callbacks\n *\n * @example\n * const fileLoader = new FileLoader(viewer);\n * await fileLoader.loadFile('document.pdf', 'pdf', {\n * onSuccess: (e) => console.log('Loaded successfully'),\n * onError: (err) => console.error('Load failed', err)\n * });\n */\n async loadFile(\n filePath: string,\n fileExt: TSupportedFileExtension,\n callbacks?: ILoadModelCallbacks\n ): Promise<void> {\n const viewerExtension = FILE_EXTENSION_TO_VIEWER_EXTENSION[fileExt];\n // Load appropriate viewer extension\n await this.viewer.loadExtension(viewerExtension);\n // Determine loading method based on file type\n if (fileExt === 'pdf') {\n await this.loadPDFFile(filePath, callbacks);\n } else {\n await this.loadDWFFile(filePath, callbacks);\n }\n }\n /**\n * Load PDF file directly\n */\n private async loadPDFFile(\n filePath: string,\n callbacks?: ILoadModelCallbacks\n ): Promise<void> {\n const handleLoadSuccess = this.createLoadSuccessHandler(\n callbacks?.onSuccess\n );\n this.viewer.loadModel(filePath, {}, handleLoadSuccess);\n }\n /**\n * Load DWF/DWFX file via blob\n * Extracted from ViewerForgePDF.jsx lines 125-136\n */\n private async loadDWFFile(\n filePath: string,\n callbacks?: ILoadModelCallbacks\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', filePath, true);\n xhr.responseType = 'blob';\n xhr.onload = () => {\n if (xhr.status === 200) {\n const blob = xhr.response;\n const blobUrl = window.URL.createObjectURL(blob);\n const handleLoadSuccess = this.createLoadSuccessHandler(\n callbacks?.onSuccess\n );\n this.viewer.loadModel(blobUrl + '#.dwf', {}, handleLoadSuccess);\n resolve();\n } else {\n const error = new Error(\n `Failed to load DWF file: HTTP ${xhr.status}`\n );\n callbacks?.onError?.(error as any);\n reject(error);\n }\n };\n xhr.onerror = () => {\n const error = new Error('Network error loading DWF file');\n callbacks?.onError?.(error as any);\n reject(error);\n };\n xhr.send();\n });\n }\n /**\n * Create load success handler that extracts viewables\n * Extracted from ViewerForgePDF.jsx lines 44-56\n */\n private createLoadSuccessHandler(userCallback?: Function): Function {\n return (event: any) => {\n try {\n // Enable reverse zoom\n this.viewer.setReverseZoomDirection(true);\n // Extract viewables\n const viewables = this.extractViewables(event);\n // Emit event with viewables\n this.eventBus.emit(EVENT_NAMES.VIEWABLES_SET, { viewables });\n // Show toolbar\n if (this.viewer.toolbar) {\n this.viewer.toolbar.setVisible(true);\n }\n // Call user callback if provided\n userCallback?.(event);\n } catch (error) {\n // Silent error handling\n }\n };\n }\n /**\n * Extract viewables from document\n * Extracted from ViewerForgePDF.jsx lines 47-56\n */\n extractViewables(event: any): TViewable[] {\n const root = event.getDocumentNode().getRootNode();\n const view3d = root.search(GEOMETRY_SEARCH_CRITERIA.VIEW_3D, true);\n const view2d = root.search(GEOMETRY_SEARCH_CRITERIA.VIEW_2D, true);\n return view3d.concat(view2d);\n }\n}\n","/**\n * DocumentBrowserManager\n *\n * @file DocumentBrowserManager.ts\n * @description Manages Document Browser panel operations\n * Extracted from ViewerForgePDF.jsx lines 64-94 and ToolbarExtension.js lines 149-255\n */\nimport {\n DOCUMENT_BROWSER_STYLES,\n EVENT_NAMES,\n TOOLBAR_REFRESH_INTERVALS,\n} from '../constants';\nimport { EventBus } from '../services';\nimport {\n IDocumentBrowserManager,\n IDocumentBrowserManagerConfig,\n IViewer,\n} from '../types';\nimport { applyStyles, clickElement, findThumbnailTab } from '../utils';\nexport class DocumentBrowserManager implements IDocumentBrowserManager {\n private viewer: IViewer;\n private config: IDocumentBrowserManagerConfig;\n private eventBus: EventBus;\n private shouldRemainOpen: boolean = false;\n constructor(\n viewer: IViewer,\n config?: IDocumentBrowserManagerConfig,\n eventBus?: EventBus\n ) {\n this.viewer = viewer;\n this.config = config || {\n autoOpen: true,\n persistState: true,\n defaultTab: 'thumbnails',\n };\n // Use provided EventBus instance or fallback to singleton\n this.eventBus = eventBus || EventBus.getInstance();\n }\n async autoOpenIfMultiPage(isMultiPage: boolean): Promise<void> {\n if (!isMultiPage || !this.config.autoOpen) {\n return;\n }\n setTimeout(() => {\n const originalDocBtn = document.getElementById('toolbar-documentModels');\n if (originalDocBtn && !originalDocBtn.classList.contains('active')) {\n originalDocBtn.click();\n this.shouldRemainOpen = true;\n setTimeout(() => {\n this.applyCustomStyling();\n this.switchToThumbnailTab();\n }, TOOLBAR_REFRESH_INTERVALS.EXTENSION_INIT);\n this.eventBus.emit(EVENT_NAMES.DOC_BROWSER_OPENED);\n } else if (\n originalDocBtn &&\n originalDocBtn.classList.contains('active')\n ) {\n this.shouldRemainOpen = true;\n }\n }, TOOLBAR_REFRESH_INTERVALS.GEOMETRY_SETTLE);\n }\n async openPanel(): Promise<void> {\n let ext = this.viewer.getExtension('Autodesk.DocumentBrowser');\n if (!ext) {\n try {\n await this.viewer.loadExtension('Autodesk.DocumentBrowser');\n ext = this.viewer.getExtension('Autodesk.DocumentBrowser');\n } catch (e) {\n return;\n }\n }\n // Check if already open\n if (ext?.ui?.panel?.isVisible()) {\n this.shouldRemainOpen = true;\n this.applyCustomStyling();\n this.switchToThumbnailTab();\n return;\n }\n // Try to use original button first for proper initialization\n const originalDocBtn = document.getElementById('toolbar-documentModels');\n if (originalDocBtn) {\n originalDocBtn.click();\n this.shouldRemainOpen = true;\n setTimeout(() => {\n this.applyCustomStyling();\n this.switchToThumbnailTab();\n this.eventBus.emit(EVENT_NAMES.DOC_BROWSER_OPENED);\n }, TOOLBAR_REFRESH_INTERVALS.EXTENSION_INIT);\n } else {\n if (ext?.ui?.panel) {\n ext.ui.panel.setVisible(true);\n this.shouldRemainOpen = true;\n setTimeout(() => {\n this.applyCustomStyling();\n this.switchToThumbnailTab();\n this.eventBus.emit(EVENT_NAMES.DOC_BROWSER_OPENED);\n }, TOOLBAR_REFRESH_INTERVALS.EXTENSION_INIT);\n }\n }\n }\n async closePanel(): Promise<void> {\n const ext = this.viewer.getExtension('Autodesk.DocumentBrowser');\n if (!ext?.ui?.panel?.isVisible()) {\n this.shouldRemainOpen = false;\n return;\n }\n const originalDocBtn = document.getElementById('toolbar-documentModels');\n if (originalDocBtn && originalDocBtn.classList.contains('active')) {\n originalDocBtn.click();\n this.shouldRemainOpen = false;\n this.eventBus.emit(EVENT_NAMES.DOC_BROWSER_CLOSED);\n } else {\n if (ext?.ui?.panel) {\n ext.ui.panel.setVisible(false);\n this.shouldRemainOpen = false;\n this.eventBus.emit(EVENT_NAMES.DOC_BROWSER_CLOSED);\n }\n }\n }\n async togglePanel(): Promise<void> {\n const isCurrentlyOpen = this.isOpen();\n if (isCurrentlyOpen) {\n await this.closePanel();\n } else {\n await this.openPanel();\n }\n }\n isOpen(): boolean {\n const ext = this.viewer.getExtension('Autodesk.DocumentBrowser');\n return ext?.ui?.panel?.isVisible() ?? false;\n }\n applyCustomStyling(): void {\n setTimeout(() => {\n const ext = this.viewer.getExtension('Autodesk.DocumentBrowser');\n if (ext?.ui?.panel?.container) {\n applyStyles(ext.ui.panel.container, DOCUMENT_BROWSER_STYLES);\n }\n }, TOOLBAR_REFRESH_INTERVALS.DOM_SETTLE);\n }\n async switchToThumbnailTab(): Promise<void> {\n if (this.config.defaultTab !== 'thumbnails') return;\n setTimeout(() => {\n const thumbnailTab = findThumbnailTab();\n if (thumbnailTab && !thumbnailTab.classList.contains('active')) {\n clickElement(thumbnailTab);\n }\n }, TOOLBAR_REFRESH_INTERVALS.DOM_SETTLE);\n }\n async restoreState(): Promise<void> {\n if (!this.config.persistState || !this.shouldRemainOpen) {\n return;\n }\n const ext = this.viewer.getExtension('Autodesk.DocumentBrowser');\n const isCurrentlyOpen = ext?.ui?.panel?.isVisible() ?? false;\n if (isCurrentlyOpen) {\n this.applyCustomStyling();\n this.switchToThumbnailTab();\n // Emit event MULTIPLE times to ensure button state syncs\n this.eventBus.emit(EVENT_NAMES.DOC_BROWSER_OPENED);\n setTimeout(() => this.eventBus.emit(EVENT_NAMES.DOC_BROWSER_OPENED), 50);\n setTimeout(() => this.eventBus.emit(EVENT_NAMES.DOC_BROWSER_OPENED), 100);\n setTimeout(() => this.eventBus.emit(EVENT_NAMES.DOC_BROWSER_OPENED), 150);\n } else {\n await this.openPanel();\n }\n }\n setShouldRemainOpen(value: boolean): void {\n this.shouldRemainOpen = value;\n }\n getShouldRemainOpen(): boolean {\n return this.shouldRemainOpen;\n }\n}\n","/**\n * PaginationManager\n *\n * @file PaginationManager.ts\n * @description Manages page navigation for multi-page documents\n * Extracted from ToolbarExtension.js lines 34-148\n */\nimport {\n EVENT_NAMES,\n PAGINATION_BUTTONS,\n TOOLBAR_CONTROL_GROUP_IDS,\n TOOLBAR_REFRESH_INTERVALS,\n} from '../constants';\nimport { EventBus, TEventListener } from '../services';\nimport {\n IPaginationManager,\n IPaginationManagerConfig,\n IViewer,\n TViewable,\n} from '../types';\nexport class PaginationManager implements IPaginationManager {\n private viewer: IViewer;\n private config: IPaginationManagerConfig;\n private eventBus: EventBus;\n private Autodesk: any;\n private currentIndex: number = 0;\n private viewables: TViewable[] = [];\n private paginationGroup: any = null;\n private docBrowserShouldBeOpen: boolean = false;\n private modelAddedHandler: TEventListener;\n // Callback for page changes instead of EventBus\n private onPageChangeCallback?: (data: any) => void;\n constructor(\n viewer: IViewer,\n Autodesk: any,\n config?: IPaginationManagerConfig,\n eventBus?: EventBus\n ) {\n this.viewer = viewer;\n this.Autodesk = Autodesk;\n this.config = config || {};\n // Use provided EventBus instance or fallback to singleton\n this.eventBus = eventBus || EventBus.getInstance();\n this.modelAddedHandler = this.updateCurrentIndexFromModel.bind(this);\n // Add MODEL_ADDED_EVENT listener immediately in constructor\n // This ensures it's always listening for page changes\n this.viewer.addEventListener(\n this.Autodesk.Viewing.MODEL_ADDED_EVENT,\n this.modelAddedHandler\n );\n }\n /**\n * Set callback for page changes (alternative to EventBus)\n */\n setPageChangeCallback(callback: (data: any) => void): void {\n this.onPageChangeCallback = callback;\n }\n setViewables(viewables: TViewable[]): void {\n this.viewables = viewables;\n this.currentIndex = 0;\n if (viewables.length > 1) {\n this.docBrowserShouldBeOpen = true;\n }\n this.updatePaginationState();\n // Remove existing listener to avoid duplicates\n if (this.modelAddedHandler) {\n this.viewer.removeEventListener(\n this.Autodesk.Viewing.MODEL_ADDED_EVENT,\n this.modelAddedHandler\n );\n }\n // Add MODEL_ADDED_EVENT listener\n this.viewer.addEventListener(\n this.Autodesk.Viewing.MODEL_ADDED_EVENT,\n this.modelAddedHandler\n );\n }\n nextPage(): void {\n if (this.viewables.length > 0) {\n this.currentIndex = (this.currentIndex + 1) % this.viewables.length;\n this.loadCurrentViewable();\n }\n }\n previousPage(): void {\n if (this.viewables.length > 0) {\n this.currentIndex =\n (this.currentIndex - 1 + this.viewables.length) % this.viewables.length;\n this.loadCurrentViewable();\n }\n }\n goToPage(index: number): void {\n if (index >= 0 && index < this.viewables.length) {\n this.currentIndex = index;\n this.loadCurrentViewable();\n }\n }\n getCurrentPage(): number {\n return this.currentIndex;\n }\n getTotalPages(): number {\n return this.viewables.length;\n }\n isMultiPage(): boolean {\n return this.viewables.length > 1;\n }\n getViewables(): TViewable[] {\n return this.viewables;\n }\n private updateCurrentIndexFromModel(): void {\n if (!this.viewer.model || this.viewables.length === 0) {\n return;\n }\n const currentNode = this.viewer.model.getDocumentNode();\n if (currentNode) {\n const currentGuid = currentNode.data?.guid || currentNode.guid;\n const index = this.viewables.findIndex((v: any) => {\n const vGuid = v.data?.guid || v.guid;\n return vGuid === currentGuid;\n });\n if (index !== -1 && index !== this.currentIndex) {\n // Page changed via Document Browser panel\n this.currentIndex = index;\n // Check if Document Browser is currently open\n const docBrowserExt = this.viewer.getExtension(\n 'Autodesk.DocumentBrowser'\n );\n const isCurrentlyOpen = docBrowserExt?.ui?.panel?.isVisible() ?? false;\n if (isCurrentlyOpen) {\n this.docBrowserShouldBeOpen = true;\n }\n // Emit page changed event to trigger button state sync and toolbar refresh\n const pageData = {\n index: this.currentIndex,\n viewable: this.viewables[this.currentIndex],\n shouldRestoreDocBrowser: this.docBrowserShouldBeOpen,\n fromDocBrowser: true,\n };\n // Use callback first (direct communication)\n if (this.onPageChangeCallback) {\n this.onPageChangeCallback(pageData);\n }\n // Also emit via EventBus as fallback\n this.eventBus.emit(EVENT_NAMES.PAGE_CHANGED, pageData);\n // Update pagination state multiple times to ensure it sticks\n const updateTimes = [10, 50, 100, 150, 200, 250, 300, 350, 400, 500];\n updateTimes.forEach((delay) => {\n setTimeout(() => {\n this.updatePaginationState();\n }, delay);\n });\n } else if (index !== -1) {\n // Same page - but user might have clicked thumbnail while panel is open\n const docBrowserExt = this.viewer.getExtension(\n 'Autodesk.DocumentBrowser'\n );\n const isCurrentlyOpen = docBrowserExt?.ui?.panel?.isVisible() ?? false;\n if (isCurrentlyOpen && !this.docBrowserShouldBeOpen) {\n this.docBrowserShouldBeOpen = true;\n // Emit a \"refresh\" event to ensure button state is synced\n const pageData = {\n index: this.currentIndex,\n viewable: this.viewables[this.currentIndex],\n shouldRestoreDocBrowser: true,\n fromDocBrowser: true,\n refresh: true,\n };\n if (this.onPageChangeCallback) {\n this.onPageChangeCallback(pageData);\n }\n this.eventBus.emit(EVENT_NAMES.PAGE_CHANGED, pageData);\n }\n // Always update pagination state\n this.updatePaginationState();\n }\n }\n }\n updatePaginationState(): void {\n // IMPORTANT: First sync currentIndex with actual loaded model\n this.syncCurrentIndexFromModel();\n if (!this.paginationGroup) {\n return;\n }\n if (this.viewables.length <= 1) {\n this.paginationGroup.setVisible(false);\n if (this.paginationGroup.container) {\n this.paginationGroup.container.style.display = 'none';\n }\n return;\n }\n this.paginationGroup.setVisible(true);\n if (this.paginationGroup.container) {\n this.paginationGroup.container.style.display = '';\n }\n const totalBtn = this.paginationGroup.getControl(\n PAGINATION_BUTTONS.LABEL.id\n );\n if (totalBtn) {\n const current = this.viewables.length > 0 ? this.currentIndex + 1 : 0;\n const total = this.viewables.length;\n totalBtn.setToolTip(`Page ${current} of ${total}`);\n const domElem = totalBtn.container;\n if (domElem) {\n const newContent = `<div style=\"display: flex; align-items: center; justify-content: center; height: 100%; padding: 0 10px; color: white; font-size: 14px; white-space: nowrap;\">${current} / ${total}</div>`;\n domElem.innerHTML = newContent;\n // Use requestAnimationFrame to ensure DOM update\n requestAnimationFrame(() => {\n domElem.innerHTML = newContent;\n });\n // Also try direct text update as fallback\n setTimeout(() => {\n if (domElem.innerHTML !== newContent) {\n domElem.innerHTML = newContent;\n }\n }, 20);\n }\n } else {\n // Try to get the control again in case it was just created\n setTimeout(() => {\n const totalBtnRetry = this.paginationGroup.getControl(\n PAGINATION_BUTTONS.LABEL.id\n );\n if (totalBtnRetry) {\n const current = this.viewables.length > 0 ? this.currentIndex + 1 : 0;\n const total = this.viewables.length;\n totalBtnRetry.setToolTip(`Page ${current} of ${total}`);\n const domElem = totalBtnRetry.container;\n if (domElem) {\n domElem.innerHTML = `<div style=\"display: flex; align-items: center; justify-content: center; height: 100%; padding: 0 10px; color: white; font-size: 14px; white-space: nowrap;\">${current} / ${total}</div>`;\n }\n }\n }, 50);\n }\n }\n /**\n * Sync currentIndex with the actual loaded model (without emitting events)\n * This is used to ensure pagination display shows correct page number\n */\n private syncCurrentIndexFromModel(): void {\n if (!this.viewer.model || this.viewables.length === 0) {\n return;\n }\n const currentNode = this.viewer.model.getDocumentNode();\n if (currentNode) {\n const currentGuid = currentNode.data?.guid || currentNode.guid;\n const index = this.viewables.findIndex((v: any) => {\n const vGuid = v.data?.guid || v.guid;\n return vGuid === currentGuid;\n });\n if (index !== -1 && index !== this.currentIndex) {\n this.currentIndex = index;\n }\n }\n }\n /**\n * Update thumbnail selection in Document Browser panel\n * This ensures the correct thumbnail is highlighted after navigation\n */\n private updateThumbnailSelection(targetViewable: TViewable): void {\n try {\n const targetGuid = targetViewable.data?.guid || targetViewable.guid;\n // Find all thumbnails\n const thumbnails = document.querySelectorAll(\n '.viewer-ext-docbrowser-thumbnail'\n );\n let selectedThumbnail: Element | null = null;\n thumbnails.forEach((thumbnail: Element) => {\n const bubbleGuid = thumbnail.getAttribute('bubble-guid');\n if (bubbleGuid === targetGuid) {\n thumbnail.classList.add('viewer-ext-docbrowser-thumbnail-selected');\n selectedThumbnail = thumbnail;\n } else {\n thumbnail.classList.remove(\n 'viewer-ext-docbrowser-thumbnail-selected'\n );\n }\n });\n // CRITICAL: Scroll to selected thumbnail\n if (selectedThumbnail) {\n this.scrollToThumbnail(selectedThumbnail);\n }\n } catch (error) {\n // Silent error handling\n }\n }\n /**\n * Scroll the Document Browser panel to show the selected thumbnail\n */\n private scrollToThumbnail(thumbnail: Element): void {\n try {\n // Find the scroll container\n const scrollContainer = document.querySelector(\n '.docking-panel-scroll'\n ) as HTMLElement;\n if (!scrollContainer) {\n return;\n }\n // Get thumbnail position relative to container\n const thumbnailRect = thumbnail.getBoundingClientRect();\n const containerRect = scrollContainer.getBoundingClientRect();\n // Calculate scroll position to center the thumbnail in the viewport\n const thumbnailTop =\n thumbnailRect.top - containerRect.top + scrollContainer.scrollTop;\n const containerHeight = scrollContainer.clientHeight;\n const thumbnailHeight = thumbnailRect.height;\n const targetScrollTop =\n thumbnailTop - containerHeight / 2 + thumbnailHeight / 2;\n // Smooth scroll to target position\n scrollContainer.scrollTo({\n top: targetScrollTop,\n behavior: 'smooth',\n });\n } catch (error) {\n // Silent error handling\n }\n }\n /**\n * Try to use DocumentBrowser API to change page without refreshing panel\n * Returns true if successful, false otherwise\n */\n private tryUseDocBrowserAPI(targetIndex: number): boolean {\n const docBrowserExt = this.viewer.getExtension('Autodesk.DocumentBrowser');\n const isOpen = docBrowserExt?.ui?.panel?.isVisible() ?? false;\n if (!isOpen || targetIndex < 0 || targetIndex >= this.viewables.length) {\n return false;\n }\n try {\n const targetViewable = this.viewables[targetIndex];\n if (!targetViewable) {\n return false;\n }\n // Try _changeModelFn (internal method used by DocumentBrowser)\n if (\n docBrowserExt.ui &&\n typeof docBrowserExt.ui._changeModelFn === 'function'\n ) {\n docBrowserExt.ui._changeModelFn(targetViewable);\n // Update thumbnail selection after model change\n setTimeout(() => {\n this.updateThumbnailSelection(targetViewable);\n }, 100);\n return true;\n }\n // Fallback: Try _changeModel\n if (\n docBrowserExt.ui &&\n typeof docBrowserExt.ui._changeModel === 'function'\n ) {\n docBrowserExt.ui._changeModel(targetViewable);\n return true;\n }\n // Fallback: Try setCurrentViewable\n if (\n docBrowserExt &&\n typeof docBrowserExt.setCurrentViewable === 'function'\n ) {\n docBrowserExt.setCurrentViewable(targetViewable);\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n }\n private loadCurrentViewable(): void {\n if (this.viewables.length === 0 || !this.viewables[this.currentIndex]) {\n return;\n }\n const viewer = this.viewer;\n // Check current Document Browser state before loading new page\n const docBrowserExt = viewer.getExtension('Autodesk.DocumentBrowser');\n const isCurrentlyOpen = docBrowserExt?.ui?.panel?.isVisible() ?? false;\n if (isCurrentlyOpen) {\n this.docBrowserShouldBeOpen = true;\n }\n // OPTIMIZATION: If Document Browser is open, try to use its API to navigate\n // This prevents the panel from being refreshed (same behavior as manual thumbnail click)\n if (isCurrentlyOpen) {\n const apiSuccess = this.tryUseDocBrowserAPI(this.currentIndex);\n if (apiSuccess) {\n // Update pagination state after a short delay\n setTimeout(() => {\n this.updatePaginationState();\n }, 100);\n return;\n }\n }\n // FALLBACK: Use traditional loadDocumentNode if Document Browser is closed\n const onGeometryLoaded = () => {\n viewer.removeEventListener(\n this.Autodesk.Viewing.GEOMETRY_LOADED_EVENT,\n onGeometryLoaded\n );\n setTimeout(() => {\n const pageData = {\n index: this.currentIndex,\n viewable: this.viewables[this.currentIndex],\n shouldRestoreDocBrowser: this.docBrowserShouldBeOpen,\n fromPagination: true,\n };\n if (this.onPageChangeCallback) {\n this.onPageChangeCallback(pageData);\n }\n this.eventBus.emit(EVENT_NAMES.PAGE_CHANGED, pageData);\n this.updatePaginationState();\n }, TOOLBAR_REFRESH_INTERVALS.GEOMETRY_SETTLE);\n };\n viewer.addEventListener(\n this.Autodesk.Viewing.GEOMETRY_LOADED_EVENT,\n onGeometryLoaded\n );\n viewer\n .loadDocumentNode(\n viewer.model.getDocumentNode().getDocument(),\n this.viewables[this.currentIndex]\n )\n .then(() => {\n const pageData = {\n index: this.currentIndex,\n viewable: this.viewables[this.currentIndex],\n shouldRestoreDocBrowser: this.docBrowserShouldBeOpen,\n immediate: true,\n fromPagination: true,\n };\n if (this.onPageChangeCallback) {\n this.onPageChangeCallback(pageData);\n }\n this.eventBus.emit(EVENT_NAMES.PAGE_CHANGED, pageData);\n this.updatePaginationState();\n })\n .catch((err: Error) => {\n // Silent error handling\n });\n this.config.onPageChange?.(this.currentIndex);\n }\n createPaginationGroup(toolbar: any): void {\n this.paginationGroup = new this.Autodesk.Viewing.UI.ControlGroup(\n TOOLBAR_CONTROL_GROUP_IDS.PAGINATION\n );\n toolbar.addControl(this.paginationGroup);\n const prevBtn = new this.Autodesk.Viewing.UI.Button(\n PAGINATION_BUTTONS.PREV.id\n );\n prevBtn.setIcon(PAGINATION_BUTTONS.PREV.icon);\n prevBtn.addClass('custom-prev-btn');\n prevBtn.setToolTip(PAGINATION_BUTTONS.PREV.tooltip);\n prevBtn.onClick = () => this.previousPage();\n this.paginationGroup.addControl(prevBtn);\n const labelBtn = new this.Autodesk.Viewing.UI.Button(\n PAGINATION_BUTTONS.LABEL.id\n );\n labelBtn.setToolTip(PAGINATION_BUTTONS.LABEL.tooltip);\n this.paginationGroup.addControl(labelBtn);\n const nextBtn = new this.Autodesk.Viewing.UI.Button(\n PAGINATION_BUTTONS.NEXT.id\n );\n nextBtn.setIcon(PAGINATION_BUTTONS.NEXT.icon);\n nextBtn.addClass('custom-next-btn');\n nextBtn.setToolTip(PAGINATION_BUTTONS.NEXT.tooltip);\n nextBtn.onClick = () => this.nextPage();\n this.paginationGroup.addControl(nextBtn);\n // Immediately update pagination state after creating group\n setTimeout(() => {\n this.updatePaginationState();\n }, 10);\n }\n getPaginationGroup(): any {\n return this.paginationGroup;\n }\n setPaginationGroup(group: any): void {\n this.paginationGroup = group;\n }\n cleanup(): void {\n if (this.modelAddedHandler) {\n this.viewer.removeEventListener(\n this.Autodesk.Viewing.MODEL_ADDED_EVENT,\n this.modelAddedHandler\n );\n }\n if (this.viewer.toolbar && this.paginationGroup) {\n this.viewer.toolbar.removeControl(this.paginationGroup);\n this.paginationGroup = null;\n }\n }\n}\n","/**\n * ToolbarManager\n *\n * @file ToolbarManager.ts\n * @description Manages custom toolbar creation and button state\n * Extracted from ToolbarExtension.js lines 256-479\n */\nimport {\n CUSTOM_TOOLBAR_BUTTONS,\n DEFAULT_HIDDEN_TOOLBAR_GROUPS,\n EVENT_NAMES,\n TOOLBAR_CONTROL_GROUP_IDS,\n} from '../constants';\nimport { EventBus } from '../services';\nimport { IToolbarManager, IToolbarManagerConfig, IViewer } from '../types';\nexport class ToolbarManager implements IToolbarManager {\n private viewer: IViewer;\n private Autodesk: any;\n private config: IToolbarManagerConfig;\n private eventBus: EventBus;\n private subToolbar: any = null;\n constructor(viewer: IViewer, Autodesk: any, config: IToolbarManagerConfig) {\n this.viewer = viewer;\n this.Autodesk = Autodesk;\n this.config = config;\n this.eventBus = EventBus.getInstance();\n }\n createToolbar(): void {\n const toolbar = this.viewer.toolbar;\n if (!toolbar) return;\n this.subToolbar = new this.Autodesk.Viewing.UI.ControlGroup(\n TOOLBAR_CONTROL_GROUP_IDS.TOOLS\n );\n const panBtn = this.createPanButton();\n const docBtn = this.createDocBrowserButton();\n const dlBtn = this.createDownloadButton();\n this.subToolbar.addControl(panBtn);\n this.subToolbar.addControl(docBtn);\n this.subToolbar.addControl(dlBtn);\n toolbar.addControl(this.subToolbar);\n }\n private createPanButton(): any {\n const btn = new this.Autodesk.Viewing.UI.Button(\n CUSTOM_TOOLBAR_BUTTONS.PAN.id\n );\n btn.setIcon(CUSTOM_TOOLBAR_BUTTONS.PAN.icon);\n btn.addClass('custom-pan-btn');\n btn.setToolTip(CUSTOM_TOOLBAR_BUTTONS.PAN.tooltip);\n btn.onClick = () => {\n this.config.onPanClick?.();\n this.activatePanButton();\n };\n return btn;\n }\n private createDocBrowserButton(): any {\n const btn = new this.Autodesk.Viewing.UI.Button(\n CUSTOM_TOOLBAR_BUTTONS.DOC_BROWSER.id\n );\n btn.setIcon(CUSTOM_TOOLBAR_BUTTONS.DOC_BROWSER.icon);\n btn.addClass('custom-doc-browser-btn');\n btn.setToolTip(CUSTOM_TOOLBAR_BUTTONS.DOC_BROWSER.tooltip);\n btn.onClick = () => {\n this.config.onDocBrowserClick?.();\n this.eventBus.emit(EVENT_NAMES.TOOLBAR_BUTTON_CLICKED, {\n buttonId: CUSTOM_TOOLBAR_BUTTONS.DOC_BROWSER.id,\n });\n };\n return btn;\n }\n private createDownloadButton(): any {\n const btn = new this.Autodesk.Viewing.UI.Button(\n CUSTOM_TOOLBAR_BUTTONS.DOWNLOAD.id\n );\n btn.setIcon(CUSTOM_TOOLBAR_BUTTONS.DOWNLOAD.icon);\n btn.addClass('custom-download-btn');\n btn.setToolTip(CUSTOM_TOOLBAR_BUTTONS.DOWNLOAD.tooltip);\n btn.onClick = () => {\n this.config.onDownloadClick?.();\n this.eventBus.emit(EVENT_NAMES.DOWNLOAD_REQUESTED, {\n filePath: this.config.filePath,\n });\n };\n return btn;\n }\n updateButtonState(buttonId: string, isActive: boolean): void {\n if (!this.subToolbar) return;\n const btn = this.subToolbar.getControl(buttonId);\n if (btn) {\n const newState = isActive\n ? this.Autodesk.Viewing.UI.Button.State.ACTIVE\n : this.Autodesk.Viewing.UI.Button.State.INACTIVE;\n btn.setState(newState);\n }\n }\n activatePanButton(): void {\n try {\n this.viewer.setActiveNavigationTool('pan');\n // Note: Removed EVENT_NAMES.PAN_ACTIVATED emit as no listeners were registered\n // If you need this event, add a listener first\n } catch (e) {\n const originalPanBtn = document.getElementById('toolbar-panTool');\n if (originalPanBtn) {\n originalPanBtn.click();\n }\n }\n this.updateButtonState(CUSTOM_TOOLBAR_BUTTONS.PAN.id, true);\n const customPanBtn = document.querySelector('.custom-pan-btn');\n if (customPanBtn) {\n customPanBtn.classList.add('active');\n customPanBtn.classList.remove('inactive');\n }\n }\n hideDefaultGroups(): void {\n const toolbar = this.viewer.toolbar;\n if (!toolbar) return;\n DEFAULT_HIDDEN_TOOLBAR_GROUPS.forEach((id) => {\n const group = toolbar.getControl(id);\n if (group) {\n group.setVisible(false);\n }\n });\n }\n getToolbar(): any {\n return this.subToolbar;\n }\n cleanup(): void {\n if (this.viewer.toolbar && this.subToolbar) {\n this.viewer.toolbar.removeControl(this.subToolbar);\n this.subToolbar = null;\n }\n }\n}\n","/**\n * ToolbarExtension - Refactored with SOLID principles and DI\n *\n * @file ToolbarExtension.js\n * @description Orchestrates managers for custom toolbar functionality\n * Reduced from 517 lines to ~250 lines by delegating to managers\n */\nimport {\n CUSTOM_TOOLBAR_BUTTONS,\n EVENT_NAMES,\n TOOLBAR_REFRESH_INTERVALS,\n} from '../constants';\nimport { DocumentBrowserManager } from '../managers/DocumentBrowserManager';\nimport { PaginationManager } from '../managers/PaginationManager';\nimport { ToolbarManager } from '../managers/ToolbarManager';\nimport { DownloadService } from '../services/DownloadService';\nimport { EventBus } from '../services/EventBus';\n// CRITICAL: Global state to persist across extension unload/reload cycles\n// This is necessary because Forge Viewer unloads extensions when navigating via thumbnails\nconst GLOBAL_STATE = {\n viewables: null,\n docBrowserShouldBeOpen: false,\n currentIndex: 0,\n};\nexport function registerToolbarExtension(Autodesk) {\n function ToolbarExtension(viewer, options) {\n Autodesk.Viewing.Extension.call(this, viewer, options);\n this.viewer = viewer;\n this.Autodesk = Autodesk;\n this.options = options;\n // Initialize EventBus\n this.eventBus = EventBus.getInstance();\n // Initialize Managers (Dependency Injection)\n // CRITICAL: Pass EventBus instance to ensure all managers use the same instance\n this.paginationManager = new PaginationManager(\n viewer,\n Autodesk,\n {},\n this.eventBus\n );\n // Register page change callback (direct communication instead of EventBus)\n this.paginationManager.setPageChangeCallback((data) => {\n this.onPageChanged(data);\n });\n this.toolbarManager = new ToolbarManager(viewer, Autodesk, {\n Autodesk,\n filePath: options.filePath,\n onPanClick: () => this.handlePanClick(),\n onDocBrowserClick: () => this.handleDocBrowserClick(),\n onDownloadClick: () => this.handleDownloadClick(),\n });\n this.docBrowserManager = new DocumentBrowserManager(\n viewer,\n {\n autoOpen: true,\n persistState: true,\n defaultTab: 'thumbnails',\n },\n this.eventBus\n );\n // Initialize Services\n this.downloadService = new DownloadService();\n // Toolbar healing interval\n this._toolbarInterval = null;\n this._buttonStateInterval = null;\n // Store viewables temporarily if toolbar not ready yet\n this._pendingViewables = null;\n this._toolbarReady = false;\n // Track if page change is in progress\n this._isPageChanging = false;\n // Bind event handlers\n this.onToolbarCreatedHandler = this.onToolbarCreated.bind(this);\n this.onGeometryLoadedHandler = this.onGeometryLoaded.bind(this);\n this.onPageChangedHandler = this.onPageChanged.bind(this);\n this.onViewablesSetHandler = this.onViewablesSet.bind(this);\n }\n ToolbarExtension.prototype = Object.create(\n Autodesk.Viewing.Extension.prototype\n );\n ToolbarExtension.prototype.constructor = ToolbarExtension;\n ToolbarExtension.prototype.load = function () {\n this.viewer.addEventListener(\n Autodesk.Viewing.TOOLBAR_CREATED_EVENT,\n this.onToolbarCreatedHandler\n );\n this.viewer.addEventListener(\n Autodesk.Viewing.GEOMETRY_LOADED_EVENT,\n this.onGeometryLoadedHandler\n );\n // Subscribe to EventBus events\n this.eventBus.on(EVENT_NAMES.PAGE_CHANGED, this.onPageChangedHandler);\n this.eventBus.on(EVENT_NAMES.VIEWABLES_SET, this.onViewablesSetHandler);\n // Subscribe to Document Browser open/close events\n this.eventBus.on(EVENT_NAMES.DOC_BROWSER_OPENED, () => {\n GLOBAL_STATE.docBrowserShouldBeOpen = true;\n setTimeout(\n () => this.syncDocBrowserButtonState(),\n TOOLBAR_REFRESH_INTERVALS.DOM_SETTLE\n );\n });\n this.eventBus.on(EVENT_NAMES.DOC_BROWSER_CLOSED, () => {\n GLOBAL_STATE.docBrowserShouldBeOpen = false;\n setTimeout(\n () => this.syncDocBrowserButtonState(),\n TOOLBAR_REFRESH_INTERVALS.DOM_SETTLE\n );\n });\n // CRITICAL: Restore state from GLOBAL_STATE if available\n // This handles the case where extension was unloaded and reloaded (e.g., thumbnail navigation)\n if (GLOBAL_STATE.viewables && GLOBAL_STATE.viewables.length > 0) {\n // Restore viewables to pagination manager\n this._pendingViewables = GLOBAL_STATE.viewables;\n // Restore Document Browser state\n if (GLOBAL_STATE.docBrowserShouldBeOpen) {\n this.docBrowserManager.setShouldRemainOpen(true);\n // CRITICAL: Sync button state immediately and repeatedly after load\n // This ensures button is active when extension reloads after using _changeModelFn\n const syncTimes = [50, 100, 150, 200, 300, 400, 500];\n syncTimes.forEach((delay) => {\n setTimeout(() => {\n this.syncDocBrowserButtonState();\n }, delay);\n });\n }\n }\n return true;\n };\n ToolbarExtension.prototype.unload = function () {\n // CRITICAL: Save state to GLOBAL_STATE before unloading\n // This allows state to persist across unload/reload cycles (e.g., thumbnail navigation)\n const totalPages = this.paginationManager.getTotalPages();\n if (totalPages > 0) {\n GLOBAL_STATE.viewables = this.paginationManager.getViewables();\n GLOBAL_STATE.currentIndex = this.paginationManager.getCurrentPage();\n GLOBAL_STATE.docBrowserShouldBeOpen =\n this.docBrowserManager.getShouldRemainOpen();\n }\n // Cleanup event listeners\n this.viewer.removeEventListener(\n Autodesk.Viewing.TOOLBAR_CREATED_EVENT,\n this.onToolbarCreatedHandler\n );\n this.viewer.removeEventListener(\n Autodesk.Viewing.GEOMETRY_LOADED_EVENT,\n this.onGeometryLoadedHandler\n );\n // Unsubscribe from EventBus\n this.eventBus.off(EVENT_NAMES.PAGE_CHANGED, this.onPageChangedHandler);\n this.eventBus.off(EVENT_NAMES.VIEWABLES_SET, this.onViewablesSetHandler);\n // Cleanup intervals\n if (this._toolbarInterval) {\n clearInterval(this._toolbarInterval);\n this._toolbarInterval = null;\n }\n return true;\n };\n /**\n * Called when toolbar is created\n * Delegates to managers for setup\n */\n ToolbarExtension.prototype.onToolbarCreated = function () {\n // Initial toolbar setup\n this.refreshToolbar();\n // Add listener for geometry loaded to refresh toolbar\n this.viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, () => {\n setTimeout(() => {\n this.refreshToolbar();\n }, TOOLBAR_REFRESH_INTERVALS.GEOMETRY_SETTLE);\n });\n // Add listener for toolbar created event\n this.viewer.addEventListener(Autodesk.Viewing.TOOLBAR_CREATED_EVENT, () => {\n setTimeout(() => {\n this.refreshToolbar();\n }, TOOLBAR_REFRESH_INTERVALS.BUTTON_STATE_CHECK);\n });\n // Start toolbar healing mechanism (also handles button state sync)\n this.startToolbarHealing();\n };\n /**\n * Refresh toolbar - recreate if needed\n * This is the core method that handles toolbar persistence\n */\n ToolbarExtension.prototype.refreshToolbar = function () {\n const toolbar = this.viewer.toolbar;\n if (!toolbar) return;\n // Hide default groups\n this.toolbarManager.hideDefaultGroups();\n // Check and recreate tool group if needed\n let toolGroup = toolbar.getControl('custom-tool-group');\n if (!toolGroup) {\n this.toolbarManager.createToolbar();\n } else {\n toolGroup.setVisible(true);\n }\n // Check and recreate pagination group if needed\n let pagGroup = toolbar.getControl('custom-pagination-group');\n if (!pagGroup) {\n this.paginationManager.createPaginationGroup(toolbar);\n } else {\n // Ensure pagination manager has correct reference to existing group\n this.paginationManager.setPaginationGroup(pagGroup);\n pagGroup.setVisible(true);\n }\n // Mark toolbar as ready\n this._toolbarReady = true;\n // Process pending viewables if any\n if (this._pendingViewables) {\n this.paginationManager.setViewables(this._pendingViewables);\n if (this._pendingViewables.length > 1) {\n this.docBrowserManager.autoOpenIfMultiPage(true);\n }\n this._pendingViewables = null;\n }\n // Show toolbar\n toolbar.setVisible(true);\n // ALWAYS update pagination state after toolbar refresh\n // Use multiple timeouts to ensure it sticks\n const updateTimes = [10, 30, 50, 100];\n updateTimes.forEach((delay) => {\n setTimeout(() => {\n this.paginationManager.updatePaginationState();\n }, delay);\n });\n // CRITICAL: Sync Document Browser button state after toolbar refresh\n // This ensures button is active if panel is open (especially after reload)\n const syncTimes = [50, 100, 150, 200];\n syncTimes.forEach((delay) => {\n setTimeout(() => {\n const isOpen = this.docBrowserManager.isOpen();\n if (isOpen) {\n this.syncDocBrowserButtonState();\n }\n }, delay);\n });\n // Activate pan tool\n this.toolbarManager.activatePanButton();\n };\n /**\n * Called when geometry is loaded\n * Restores button states\n */\n ToolbarExtension.prototype.onGeometryLoaded = function () {\n setTimeout(() => {\n this.toolbarManager.activatePanButton();\n this.paginationManager.updatePaginationState();\n }, TOOLBAR_REFRESH_INTERVALS.GEOMETRY_SETTLE);\n };\n /**\n * Called when page changes\n * Restores Document Browser and toolbar states\n */\n ToolbarExtension.prototype.onPageChanged = function (data) {\n if (!data || data.test) {\n return;\n }\n // Mark that page change is in progress to prevent premature pagination updates\n this._isPageChanging = true;\n // CRITICAL FIX: If page changed from Document Browser (thumbnails), sync button state IMMEDIATELY\n // This ensures the button is active when user navigates via thumbnails\n if (data.fromDocBrowser) {\n // Sync button state right away (before any other operations)\n this.syncDocBrowserButtonState();\n // Force recreate pagination group to ensure display updates\n const toolbar = this.viewer.toolbar;\n if (toolbar) {\n const pagGroup = toolbar.getControl('custom-pagination-group');\n if (pagGroup) {\n toolbar.removeControl(pagGroup);\n this.paginationManager.setPaginationGroup(null);\n }\n }\n }\n // Refresh toolbar to ensure both tool and pagination groups are restored\n this.refreshToolbar();\n // Restore Document Browser panel if needed\n if (data.shouldRestoreDocBrowser) {\n this.docBrowserManager.restoreState();\n // Force sync button state multiple times after restore\n const syncDelays = data.fromDocBrowser\n ? [10, 30, 50, 80, 100, 150, 200, 250, 300]\n : [50, 100, 150, 200, 250, 300];\n syncDelays.forEach((delay) => {\n setTimeout(() => {\n this.syncDocBrowserButtonState();\n }, delay);\n });\n }\n // Sync Document Browser button state and update pagination display at multiple intervals\n const syncIntervals = data.fromDocBrowser\n ? [10, 30, 50, 80, 100, 150, 200, 250, 300]\n : [50, 100, 150, 200, 250, 300];\n syncIntervals.forEach((delay, index) => {\n setTimeout(() => {\n this.syncDocBrowserButtonState();\n this.paginationManager.updatePaginationState();\n if (index === 0) {\n this._isPageChanging = false;\n }\n }, delay);\n });\n // Additional pagination updates at various intervals to handle race conditions\n const updateIntervals = data.fromDocBrowser\n ? [60, 100, 120, 150, 180, 200, 250, 300, 350, 400, 500]\n : [100, 150, 200, 300];\n updateIntervals.forEach((delay) => {\n setTimeout(() => {\n this.paginationManager.updatePaginationState();\n }, delay);\n });\n };\n /**\n * Called when viewables are set (from FileLoader)\n * Sets viewables to pagination manager and auto-opens Document Browser\n */\n ToolbarExtension.prototype.onViewablesSet = function (data) {\n if (data && data.viewables) {\n // CRITICAL: Save viewables to GLOBAL_STATE for persistence across unload/reload\n GLOBAL_STATE.viewables = data.viewables;\n // Check if toolbar is ready\n if (this._toolbarReady) {\n // Toolbar ready - set viewables immediately\n this.paginationManager.setViewables(data.viewables);\n // Auto-open Document Browser if multi-page\n if (data.viewables.length > 1) {\n GLOBAL_STATE.docBrowserShouldBeOpen = true;\n this.docBrowserManager.autoOpenIfMultiPage(true);\n }\n } else {\n // Toolbar not ready yet - store viewables for later\n this._pendingViewables = data.viewables;\n }\n }\n };\n /**\n * Start toolbar healing mechanism\n * Polls every 8ms to check if toolbar needs recreation\n */\n ToolbarExtension.prototype.startToolbarHealing = function () {\n if (this._toolbarInterval) {\n clearInterval(this._toolbarInterval);\n }\n // Store last known Document Browser state to detect changes\n this._lastDocBrowserState = null;\n this._healingCounter = 0;\n this._toolbarInterval = setInterval(() => {\n if (this.viewer && this.viewer.toolbar) {\n this._healingCounter++;\n const toolbar = this.viewer.toolbar;\n const toolGroup = toolbar.getControl('custom-tool-group');\n const pagGroup = toolbar.getControl('custom-pagination-group');\n // Refresh toolbar if either group is missing\n if (!toolGroup || !pagGroup) {\n this.refreshToolbar();\n }\n // Check if Document Browser panel state changed\n const currentDocBrowserState = this.docBrowserManager.isOpen();\n if (\n this._lastDocBrowserState !== null &&\n this._lastDocBrowserState !== currentDocBrowserState\n ) {\n // Update shouldRemainOpen flag based on current state\n if (currentDocBrowserState) {\n this.docBrowserManager.setShouldRemainOpen(true);\n }\n // Sync button state immediately when state changes\n this.syncDocBrowserButtonState();\n }\n this._lastDocBrowserState = currentDocBrowserState;\n // CRITICAL: Sync button state periodically (every ~50ms = every 6 healing cycles)\n // This catches thumbnail navigation where panel stays open but button might lose active state\n if (this._healingCounter % 6 === 0) {\n this.syncDocBrowserButtonState();\n }\n // ADDITIONAL: If panel is currently open, ensure button is always active\n // This is the ultimate fallback to handle thumbnail navigation\n if (currentDocBrowserState && this._healingCounter % 3 === 0) {\n // Check button state and force sync if needed (every ~24ms = every 3 healing cycles)\n const toolGroup = toolbar.getControl('custom-tool-group');\n if (toolGroup) {\n const docBtn = toolGroup.getControl('custom-doc-browser-btn');\n if (docBtn) {\n const currentBtnState = docBtn.getState();\n const ACTIVE_STATE = this.Autodesk.Viewing.UI.Button.State.ACTIVE;\n // If panel is open but button is not active, force sync\n if (currentBtnState !== ACTIVE_STATE) {\n this.syncDocBrowserButtonState();\n }\n }\n }\n }\n }\n }, TOOLBAR_REFRESH_INTERVALS.HEALING_POLL);\n };\n /**\n * Start button state synchronization\n * Polls to keep custom button states in sync with actual states\n */\n ToolbarExtension.prototype.startButtonStateSync = function () {\n if (this._buttonStateInterval) {\n clearInterval(this._buttonStateInterval);\n }\n this._buttonStateInterval = setInterval(() => {\n this.syncDocBrowserButtonState();\n }, TOOLBAR_REFRESH_INTERVALS.BUTTON_STATE_CHECK);\n };\n /**\n * Set Document Browser button active state\n */\n ToolbarExtension.prototype.setDocBrowserButtonActive = function (isActive) {\n const toolbar = this.viewer.toolbar;\n if (!toolbar) return;\n const toolGroup = toolbar.getControl('custom-tool-group');\n if (!toolGroup) return;\n const docBtn = toolGroup.getControl(CUSTOM_TOOLBAR_BUTTONS.DOC_BROWSER.id);\n if (!docBtn) return;\n const newState = isActive\n ? Autodesk.Viewing.UI.Button.State.ACTIVE\n : Autodesk.Viewing.UI.Button.State.INACTIVE;\n docBtn.setState(newState);\n };\n /**\n * Sync Document Browser button state with panel visibility\n */\n ToolbarExtension.prototype.syncDocBrowserButtonState = function () {\n const toolbar = this.viewer.toolbar;\n if (!toolbar) return;\n const toolGroup = toolbar.getControl('custom-tool-group');\n if (!toolGroup) return;\n const docBtn = toolGroup.getControl(CUSTOM_TOOLBAR_BUTTONS.DOC_BROWSER.id);\n if (!docBtn) return;\n const isOpen = this.docBrowserManager.isOpen();\n const ACTIVE_STATE = Autodesk.Viewing.UI.Button.State.ACTIVE;\n const INACTIVE_STATE = Autodesk.Viewing.UI.Button.State.INACTIVE;\n const expectedState = isOpen ? ACTIVE_STATE : INACTIVE_STATE;\n // Set button state via API\n docBtn.setState(expectedState);\n // Also update DOM class directly to ensure visual state\n const btnElement = docBtn.container;\n if (btnElement) {\n if (isOpen) {\n btnElement.classList.add('active');\n btnElement.classList.remove('inactive');\n } else {\n btnElement.classList.remove('active');\n btnElement.classList.add('inactive');\n }\n }\n };\n /**\n * Handle Pan button click\n */\n ToolbarExtension.prototype.handlePanClick = function () {\n this.toolbarManager.activatePanButton();\n };\n /**\n * Handle Document Browser button click\n */\n ToolbarExtension.prototype.handleDocBrowserClick = function () {\n this.docBrowserManager.togglePanel();\n // Sync button state with new panel state at multiple intervals\n [50, 100, 150, 200].forEach((delay) => {\n setTimeout(() => {\n this.syncDocBrowserButtonState();\n }, delay);\n });\n };\n /**\n * Handle Download button click\n */\n ToolbarExtension.prototype.handleDownloadClick = async function () {\n try {\n await this.downloadService.downloadFile(this.options.filePath);\n } catch (error) {\n console.error('Download failed:', error);\n }\n };\n // Register extension\n Autodesk.Viewing.theExtensionManager.registerExtension(\n 'ToolbarExtension',\n ToolbarExtension\n );\n}\n","import { useEffect } from 'react';\nconst useCss = (href) => {\n useEffect(() => {\n if (!href) return;\n const link = document.createElement('link');\n link.href = href;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n return () => {\n document.head.removeChild(link);\n };\n }, [href]);\n};\nexport default useCss;\n","import { useEffect, useState } from 'react';\nconst scriptCache = new Set();\nconst useScript = (src) => {\n const [status, setStatus] = useState(src ? 'loading' : 'idle');\n useEffect(() => {\n if (!src) {\n setStatus('idle');\n return;\n }\n if (scriptCache.has(src)) {\n setStatus('ready');\n return;\n }\n let script = document.querySelector(`script[src=\"${src}\"]`);\n if (!script) {\n script = document.createElement('script');\n script.src = src;\n script.async = true;\n script.setAttribute('data-status', 'loading');\n document.body.appendChild(script);\n const setAttributeFromEvent = (event) => {\n const attribute = event.type === 'load' ? 'ready' : 'error';\n script?.setAttribute('data-status', attribute);\n if (attribute === 'ready') scriptCache.add(src);\n setStatus(attribute);\n };\n script.addEventListener('load', setAttributeFromEvent);\n script.addEventListener('error', setAttributeFromEvent);\n } else {\n setStatus(script.getAttribute('data-status'));\n }\n const setStateFromEvent = (event) => {\n setStatus(event.type === 'load' ? 'ready' : 'error');\n };\n script.addEventListener('load', setStateFromEvent);\n script.addEventListener('error', setStateFromEvent);\n return () => {\n if (script) {\n script.removeEventListener('load', setStateFromEvent);\n script.removeEventListener('error', setStateFromEvent);\n }\n };\n }, [src]);\n return status;\n};\nexport default useScript;\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/**\n * ViewerForgePDF Component - Refactored\n *\n * @file ViewerForgePDF.jsx\n * @description React component for Forge Viewer - UI only, business logic delegated to services\n * Reduced from 150 lines to ~90 lines by using FileLoader service\n */\nimport { message } from 'antd';\nimport { useEffect } from 'react';\nimport {\n FORGE_SCRIPT_URL,\n FORGE_STYLE_URL,\n SUPPORTED_FILE_EXTENSIONS,\n} from '../constants';\nimport { registerToolbarExtension } from '../extensions/ToolbarExtension';\nimport useCss from '../hooks/useCss';\nimport useScript from '../hooks/useScript';\nimport { FileLoader } from '../services/FileLoader';\nimport '../styles/toolbar-custom.css';\nimport '../styles/toolbar-icons.css';\nconst ViewerForgePDF = ({ filePath, fileExt, setViewer }) => {\n // Load Forge Viewer CSS and JS from CDN\n useCss(FORGE_STYLE_URL);\n const status = useScript(FORGE_SCRIPT_URL);\n useEffect(() => {\n if (status !== 'ready' || !window.Autodesk || !filePath || !fileExt) return;\n const initializeViewer = async () => {\n try {\n const Autodesk = window.Autodesk;\n // Validate file extension\n if (!SUPPORTED_FILE_EXTENSIONS.includes(fileExt.toLowerCase())) {\n message.warning('Only support pdf, dwf, dwfx format');\n return;\n }\n // Initialize Forge Viewer\n Autodesk.Viewing.Initializer({ env: 'Local' }, async () => {\n // Register custom toolbar extension\n registerToolbarExtension(Autodesk);\n // Create viewer instance\n const viewerDiv = document.getElementById('forgeViewerPDF');\n if (!viewerDiv) {\n return;\n }\n viewerDiv.innerHTML = '';\n const viewer = new Autodesk.Viewing.GuiViewer3D(viewerDiv);\n viewer.start();\n // Load required extensions\n await viewer.loadExtension('Autodesk.DocumentBrowser');\n await viewer.loadExtension('Autodesk.Viewing.MarkupsCore');\n await viewer.loadExtension('Autodesk.Viewing.MarkupsGui');\n await viewer.loadExtension('ToolbarExtension', { filePath });\n // Initialize FileLoader service\n const fileLoader = new FileLoader(viewer);\n // Note: ToolbarExtension now subscribes to VIEWABLES_SET directly\n // No need to forward events here - prevents infinite recursion\n // Load the document using FileLoader service\n await fileLoader.loadFile(filePath, fileExt.toLowerCase(), {\n onSuccess: () => {\n // Pass viewer instance to parent component\n if (setViewer) {\n setViewer(viewer);\n }\n },\n onError: (error) => {\n message.error('Failed to load document');\n },\n });\n });\n } catch (error) {\n message.error('Failed to initialize viewer');\n }\n };\n initializeViewer();\n // No cleanup needed - ToolbarExtension handles its own subscriptions\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [status, filePath, fileExt]);\n return (\n <div style={{ position: 'relative', width: '100%', height: '100%' }}>\n <div id='forgeViewerPDF' style={{ width: '100%', height: '100%' }} />\n </div>\n );\n};\nexport default ViewerForgePDF;\n"],"names":["GLOBAL_STATE","viewables","docBrowserShouldBeOpen","currentIndex","registerToolbarExtension","Autodesk","ToolbarExtension","viewer","options","_this","Viewing","Extension","call","eventBus","EventBus","getInstance","paginationManager","PaginationManager","setPageChangeCallback","data","onPageChanged","toolbarManager","ToolbarManager","filePath","onPanClick","handlePanClick","onDocBrowserClick","handleDocBrowserClick","onDownloadClick","handleDownloadClick","docBrowserManager","DocumentBrowserManager","autoOpen","persistState","defaultTab","downloadService","DownloadService","_toolbarInterval","_buttonStateInterval","_pendingViewables","_toolbarReady","_isPageChanging","onToolbarCreatedHandler","onToolbarCreated","bind","onGeometryLoadedHandler","onGeometryLoaded","onPageChangedHandler","onViewablesSetHandler","onViewablesSet","prototype","Object","create","constructor","load","_this2","addEventListener","TOOLBAR_CREATED_EVENT","GEOMETRY_LOADED_EVENT","on","EVENT_NAMES","PAGE_CHANGED","VIEWABLES_SET","DOC_BROWSER_OPENED","setTimeout","syncDocBrowserButtonState","TOOLBAR_REFRESH_INTERVALS","DOM_SETTLE","DOC_BROWSER_CLOSED","length","setShouldRemainOpen","syncTimes","forEach","delay","unload","totalPages","getTotalPages","getViewables","getCurrentPage","getShouldRemainOpen","removeEventListener","off","clearInterval","_this3","refreshToolbar","GEOMETRY_SETTLE","BUTTON_STATE_CHECK","startToolbarHealing","_this4","toolbar","hideDefaultGroups","toolGroup","getControl","createToolbar","setVisible","pagGroup","createPaginationGroup","setPaginationGroup","setViewables","autoOpenIfMultiPage","updateTimes","updatePaginationState","isOpen","activatePanButton","_this5","_this6","test","fromDocBrowser","removeControl","shouldRestoreDocBrowser","restoreState","syncDelays","syncIntervals","index","updateIntervals","_this7","_lastDocBrowserState","_healingCounter","setInterval","currentDocBrowserState","docBtn","currentBtnState","getState","ACTIVE_STATE","UI","Button","State","ACTIVE","HEALING_POLL","startButtonStateSync","_this8","setDocBrowserButtonActive","isActive","CUSTOM_TOOLBAR_BUTTONS","DOC_BROWSER","id","newState","INACTIVE","setState","INACTIVE_STATE","expectedState","btnElement","container","classList","add","remove","_this9","togglePanel","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","p","n","downloadFile","v","console","error","a","theExtensionManager","registerExtension","useCss","href","useEffect","link","document","createElement","rel","head","appendChild","removeChild","scriptCache","Set","useScript","src","_useState","useState","_useState2","_slicedToArray","status","setStatus","has","script","querySelector","concat","async","setAttribute","body","setAttributeFromEvent","event","_script","attribute","type","getAttribute","setStateFromEvent","ViewerForgePDF","_ref","fileExt","setViewer","FORGE_STYLE_URL","FORGE_SCRIPT_URL","window","initializeViewer","_ref2","_callee2","_context2","SUPPORTED_FILE_EXTENSIONS","includes","toLowerCase","message","warning","Initializer","env","viewerDiv","fileLoader","getElementById","innerHTML","GuiViewer3D","start","loadExtension","FileLoader","loadFile","onSuccess","onError","apply","arguments","_jsx","style","position","width","height","children"],"mappings":"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","x_google_ignoreList":[4,16]}