reactionview 0.1.2 → 0.1.4

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":"reactionview-dev-tools.esm.js","sources":["../../../node_modules/@herb-tools/dev-tools/dist/herb-dev-tools.esm.js","../../../javascript/packages/dev-tools/src/index.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (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\nvar css_248z = \".herb-overlay-label{background:rgba(0,0,0,.8);border-radius:3px;color:#fff;cursor:pointer;display:block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,monospace;font-size:11px;font-weight:500;left:4px;line-height:1.2;padding:2px 6px;position:absolute;top:-18px;transition:all .2s ease;white-space:nowrap;z-index:1000}.herb-overlay-label:hover{background:rgba(0,0,0,.9);color:#374151;transform:scale(1.02);z-index:1001}[data-herb-debug-outline-type*=view]>.herb-overlay-label{background:#dbeafe;border-color:#93c5fd;color:#1e40af}[data-herb-debug-outline-type*=partial]>.herb-overlay-label{background:#d1fae5;border-color:#6ee7b7;color:#065f46}[data-herb-debug-outline-type*=component]>.herb-overlay-label{background:#fef3c7;border-color:#fcd34d;color:#92400e}[data-herb-debug-outline-type*=erb-output]{transition:all .3s ease}.herb-tooltip{background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,.12),0 2px 8px rgba(0,0,0,.08);display:flex;flex-direction:column;font-family:SF Mono,Monaco,Inconsolata,Fira Code,monospace;font-size:14px;gap:12px;max-width:calc(100vw - 16px);opacity:0;overflow:visible;padding:16px 20px;pointer-events:none;position:fixed;transition:opacity .2s ease,visibility .2s ease;visibility:hidden;white-space:nowrap;z-index:10001}.herb-tooltip.visible{opacity:1;pointer-events:auto;visibility:visible}.herb-tooltip .herb-location{align-items:center;background:#f8f9fa;border-radius:12px 12px 0 0;color:#6b7280;cursor:pointer;display:flex;font-size:13px;font-weight:500;gap:12px;justify-content:space-between;margin:-16px -20px 0;padding:12px 20px;transition:all .2s ease}.herb-tooltip .herb-location:hover{background:#f1f3f4;color:#374151}.herb-copy-path-btn{background:transparent;border:none;border-radius:4px;color:#6b7280;cursor:pointer;flex-shrink:0;font-size:14px;padding:4px;position:relative;transition:all .2s ease}.herb-copy-path-btn:hover{background:hsla(220,9%,46%,.1);color:#374151}.herb-copy-path-btn:active{transform:scale(.95)}.herb-location:after{background:#1f2937;border-radius:6px;bottom:calc(100% + 8px);color:#fff;content:attr(data-tooltip);font-size:12px;padding:6px 10px;pointer-events:none;white-space:nowrap}.herb-location:after,.herb-location:before{left:50%;opacity:0;position:absolute;transform:translateX(-50%);transition:all .2s ease;visibility:hidden;z-index:10002}.herb-location:before{border:4px solid transparent;border-top-color:#1f2937;bottom:calc(100% + 2px);content:\\\"\\\"}.herb-location:hover:after,.herb-location:hover:before{opacity:1;visibility:visible}.herb-location:has(.herb-copy-path-btn:hover):after,.herb-location:has(.herb-copy-path-btn:hover):before{opacity:0!important;visibility:hidden!important}.herb-copy-path-btn:after{background:#1f2937;border-radius:6px;color:#fff;content:attr(data-tooltip);font-size:12px;padding:6px 10px;pointer-events:none;top:-36px;white-space:nowrap}.herb-copy-path-btn:after,.herb-copy-path-btn:before{left:50%;opacity:0;position:absolute;transform:translateX(-50%);transition:all .2s ease;visibility:hidden;z-index:10003}.herb-copy-path-btn:before{border:4px solid transparent;border-bottom-color:#1f2937;content:\\\"\\\";top:-6px}.herb-copy-path-btn:hover:after,.herb-copy-path-btn:hover:before{opacity:1;visibility:visible}.herb-tooltip .herb-erb-code{color:#111827;cursor:text;font-size:16px;font-weight:600;letter-spacing:-.025em;user-select:text}.herb-tooltip:before{bottom:-8px;content:\\\"\\\";height:8px;left:0;pointer-events:auto;position:absolute;right:0}.herb-tooltip:after{border:6px solid transparent;border-top-color:#e5e7eb;bottom:-6px;content:\\\"\\\";left:50%;pointer-events:none;position:absolute;transform:translateX(-50%);z-index:10000}.herb-floating-menu{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;position:fixed;right:0;top:0;z-index:2147483643}.herb-menu-trigger{align-items:center;background:#fff;border:1px solid silver;border-radius:0 0 0 10px;border-right:none;border-top:none;box-shadow:0 1px 3px rgba(0,0,0,.1);cursor:pointer;display:flex;font-size:12px;gap:4px;justify-content:center;padding:4px 7px;position:relative;transition:all .2s ease;z-index:2147483640}.herb-menu-trigger:hover{background:#f9fafb;border-color:#9ca3af;box-shadow:0 4px 12px rgba(0,0,0,.15)}.herb-menu-trigger:active{transform:scale(.98)}.herb-menu-trigger.has-active-options{background:#dbeafe;border-color:#3b82f6}.herb-menu-trigger.has-active-options:hover{background:#bfdbfe;border-color:#2563eb}.herb-menu-trigger.has-active-options .herb-text{color:#1d4ed8}.herb-icon{display:block;font-size:14px;line-height:1}.herb-text{color:#555;font-size:11px;font-weight:600;letter-spacing:.2px}.herb-menu-panel{background:#fff;border:1px solid silver;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-width:280px;opacity:0;padding:0;position:absolute;right:10px;top:28px;transform:translateY(-10px) scale(.95);transform-origin:top right;transition:all .3s cubic-bezier(.4,0,.2,1);visibility:hidden}.herb-menu-panel.open{opacity:1;transform:translateY(0) scale(1);visibility:visible}.herb-menu-header{background:#f9fafb;border-bottom:1px solid #e5e7eb;border-radius:8px 8px 0 0;color:#374151;font-size:14px;font-weight:600;padding:16px 20px}.herb-toggle-item{border-bottom:1px solid #f3f4f6;padding:12px 20px}.herb-toggle-item:last-child{border-bottom:none;border-radius:0 0 8px 8px}.herb-nested-toggle{border-left:2px solid #f3f4f6;margin-top:8px;padding-left:24px;transition:all .3s ease}.herb-nested-label{opacity:.8}.herb-nested-label .herb-toggle-text{color:#6b7280;font-size:13px}.herb-nested-switch{background:#e5e7eb;height:20px;width:36px}.herb-nested-switch:after{height:14px;left:3px;top:3px;width:14px}.herb-toggle-input:checked+.herb-nested-switch:after{transform:translateX(16px)}.herb-toggle-label{align-items:center;cursor:pointer;display:flex;gap:12px;user-select:none}.herb-toggle-input{display:none}.herb-toggle-switch{background:#cbd5e1;border-radius:12px;flex-shrink:0;height:24px;position:relative;transition:background .3s ease;width:44px}.herb-toggle-switch:after{background:#fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2);content:\\\"\\\";height:18px;left:3px;position:absolute;top:3px;transition:transform .3s ease;width:18px}.herb-toggle-input:checked+.herb-toggle-switch{background:#8b5cf6}.herb-toggle-input:checked+.herb-toggle-switch:after{transform:translateX(20px)}.herb-toggle-text{color:#374151;flex:1;font-size:14px}.herb-toggle-label:hover .herb-toggle-switch{background:#94a3b8}.herb-toggle-label:hover .herb-toggle-input:checked+.herb-toggle-switch{background:#7c3aed}.herb-disable-all-section{background:#f9fafb;border-radius:0 0 8px 8px;border-top:1px solid #f3f4f6;padding:16px 20px}.herb-disable-all-btn{background:#ef4444;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;padding:8px 16px;transition:background .2s ease;width:100%}.herb-disable-all-btn:hover{background:#dc2626}.herb-disable-all-btn:active{background:#b91c1c}.herb-validation-overlay{align-items:center;backdrop-filter:blur(4px);background:rgba(0,0,0,.8);bottom:0;color:#e5e5e5;display:flex;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;justify-content:center;left:0;line-height:1.6;overflow-y:auto;padding:20px;position:fixed;right:0;top:0;z-index:2147483640}.herb-validation-panel{background:#000;border:1px solid #374151;border-radius:12px;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);display:flex;flex-direction:column;max-height:80vh;max-width:1200px;overflow:hidden;width:100%}.herb-validation-header{align-items:flex-start;background:linear-gradient(135deg,#dc2626,#b91c1c);border-bottom:1px solid #374151;border-radius:12px 12px 0 0;color:#fff;display:flex;flex-shrink:0;gap:16px;justify-content:space-between;padding:20px 24px}.herb-validation-title{font-size:18px;font-weight:600;margin:0}.herb-validation-close{align-items:center;background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);border-radius:6px;color:#fff;cursor:pointer;display:flex;flex-shrink:0;font-size:16px;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.herb-validation-close:hover{background:hsla(0,0%,100%,.2);border-color:hsla(0,0%,100%,.3)}.herb-file-tabs{background:#262626;border-bottom:1px solid #374151;display:flex;flex-shrink:0;overflow-x:auto}.herb-file-tab{background:none;border:none;border-bottom:3px solid transparent;color:#9ca3af;cursor:pointer;font-size:14px;font-weight:500;padding:12px 16px;transition:all .2s ease;white-space:nowrap}.herb-file-tab:hover{background:#2d2d2d;color:#e5e5e5}.herb-file-tab.active{background:#374151;border-bottom-color:#3b82f6;color:#fff}.herb-validation-content{flex:1;overflow-y:auto;padding:24px}.herb-validator-section{margin-bottom:32px}.herb-validator-section:last-child{margin-bottom:0}.herb-validator-section.hidden{display:none}.herb-validator-header{align-items:center;background:#262626;border-bottom:1px solid #374151;border-radius:8px 8px 0 0;color:#e5e5e5;display:flex;font-size:16px;font-weight:600;justify-content:space-between;padding:12px 16px}.herb-validator-count{background:hsla(0,0%,100%,.2);border-radius:12px;font-size:14px;font-weight:500;padding:2px 8px}.herb-validator-items{background:#111;border:1px solid #374151;border-radius:0 0 8px 8px;border-top:none}.herb-validation-item{background:#111;border-bottom:1px solid #374151;padding:20px}.herb-validation-item:last-child{border-bottom:none;border-radius:0 0 8px 8px}.herb-validation-item.hidden{display:none}.herb-validation-item .herb-validation-header{align-items:center;background:#1a1a1a;border:none;border-bottom:1px solid #374151;color:#9ca3af;display:flex;font-size:13px;gap:12px;margin:-20px -20px 16px;padding:12px 16px}.herb-validation-badge{border-radius:4px;color:#fff;font-size:12px;font-weight:600;letter-spacing:.025em;padding:4px 8px;text-transform:uppercase}.herb-validation-location{color:#9ca3af;font-family:SF Mono,Monaco,Inconsolata,Fira Code,monospace;font-size:13px}.herb-validation-message{background:#1a1a1a;border-bottom:1px solid #374151;color:#fbbf24;font-size:13px;font-weight:500;line-height:1.4;margin:-16px -16px 16px;padding:12px 16px}.herb-code-snippet{background:#1f2937;border-radius:6px;font-family:SF Mono,Monaco,Inconsolata,Fira Code,monospace;margin-bottom:16px;overflow:hidden}.herb-code-line{align-items:stretch;display:flex}.herb-code-line.herb-error-line{background:rgba(239,68,68,.1)}.herb-validation-overlay .herb-line-number{background:#374151;border-right:1px solid #4b5563;color:#9ca3af;flex-shrink:0;font-size:13px;padding:8px 12px;text-align:right;user-select:none;width:40px}.herb-validation-overlay .herb-error-line .herb-line-number{background:#dc2626;color:#fff}.herb-validation-overlay .herb-line-content{color:#e5e7eb;flex:1;font-size:13px;padding:8px 16px;white-space:pre-wrap}.herb-validation-overlay .herb-error-pointer{background:#1f2937;color:#dc2626;font-size:13px;font-weight:700;padding:4px 16px 8px 57px}.herb-validation-suggestion{align-items:flex-start;background:#111;border:1px solid #374151;border-radius:6px;color:#d1d5db;display:flex;font-size:14px;gap:8px;margin-top:16px;padding:12px 16px}.herb-suggestion-icon{color:#10b981;flex-shrink:0;font-size:16px;margin-top:1px}.herb-erb{color:#fbbf24;font-weight:600}.herb-erb-content{color:#34d399}.herb-tag{color:#60a5fa;font-weight:500}.herb-attr{color:#f472b6}.herb-value{color:#a78bfa}.herb-comment{color:#6b7280;font-style:italic}\";\nstyleInject(css_248z);\n\nclass ErrorOverlay {\n constructor() {\n this.overlay = null;\n this.allValidationData = [];\n this.isVisible = false;\n this.init();\n }\n init() {\n this.detectValidationErrors();\n const hasParserErrors = document.querySelector('.herb-parser-error-overlay') !== null;\n if (this.getTotalErrorCount() > 0) {\n this.createOverlay();\n this.setupToggleHandler();\n }\n else if (hasParserErrors) {\n console.log('[ErrorOverlay] Parser error overlay already displayed');\n }\n else {\n console.log('[ErrorOverlay] No errors found, not creating overlay');\n }\n }\n detectValidationErrors() {\n const templatesToRemove = [];\n const validationTemplates = document.querySelectorAll('template[data-herb-validation-error]');\n if (validationTemplates.length > 0) {\n this.processValidationTemplates(validationTemplates, templatesToRemove);\n }\n const jsonTemplates = document.querySelectorAll('template[data-herb-validation-errors]');\n jsonTemplates.forEach((template, _index) => {\n try {\n let jsonData = template.textContent?.trim();\n if (!jsonData) {\n jsonData = template.innerHTML?.trim();\n }\n if (jsonData) {\n const validationData = JSON.parse(jsonData);\n this.allValidationData.push(validationData);\n templatesToRemove.push(template);\n }\n }\n catch (error) {\n console.error('Failed to parse validation errors from template:', error, {\n textContent: template.textContent,\n innerHTML: template.innerHTML\n });\n templatesToRemove.push(template);\n }\n });\n const htmlTemplates = document.querySelectorAll('template[data-herb-parser-error]');\n htmlTemplates.forEach((template, _index) => {\n try {\n let htmlContent = template.innerHTML?.trim() || template.textContent?.trim();\n if (htmlContent) {\n this.displayParserErrorOverlay(htmlContent);\n templatesToRemove.push(template);\n }\n }\n catch (error) {\n console.error('Failed to process parser error template:', error);\n templatesToRemove.push(template);\n }\n });\n templatesToRemove.forEach((template, _index) => template.remove());\n }\n processValidationTemplates(templates, templatesToRemove) {\n const validationFragments = [];\n const errorMap = new Map();\n templates.forEach((template) => {\n try {\n const metadata = {\n severity: template.getAttribute('data-severity') || 'error',\n source: template.getAttribute('data-source') || 'unknown',\n code: template.getAttribute('data-code') || '',\n line: parseInt(template.getAttribute('data-line') || '0'),\n column: parseInt(template.getAttribute('data-column') || '0'),\n filename: template.getAttribute('data-filename') || 'unknown',\n message: template.getAttribute('data-message') || '',\n suggestion: template.getAttribute('data-suggestion') || undefined,\n timestamp: template.getAttribute('data-timestamp') || new Date().toISOString()\n };\n const html = template.innerHTML?.trim() || '';\n if (html) {\n const errorKey = `${metadata.filename}:${metadata.line}:${metadata.column}:${metadata.code}:${metadata.message}`;\n if (errorMap.has(errorKey)) {\n const existing = errorMap.get(errorKey);\n existing.count++;\n }\n else {\n errorMap.set(errorKey, { metadata, html, count: 1 });\n }\n templatesToRemove.push(template);\n }\n }\n catch (error) {\n console.error('Failed to process validation template:', error);\n templatesToRemove.push(template);\n }\n });\n validationFragments.push(...errorMap.values());\n if (validationFragments.length > 0) {\n this.displayValidationOverlay(validationFragments);\n }\n }\n createOverlay() {\n if (this.allValidationData.length === 0)\n return;\n this.overlay = document.createElement('div');\n this.overlay.id = 'herb-error-overlay';\n this.overlay.innerHTML = `\n <style>\n #herb-error-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n z-index: 10000;\n display: none;\n overflow: auto;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .herb-error-content {\n background: #1a1a1a;\n margin: 20px auto;\n padding: 20px;\n border-radius: 8px;\n max-width: 800px;\n color: #fff;\n }\n\n .herb-error-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n border-bottom: 1px solid #333;\n padding-bottom: 10px;\n }\n\n .herb-error-title {\n font-size: 18px;\n font-weight: 600;\n color: #ff6b6b;\n }\n\n .herb-error-close {\n background: none;\n border: none;\n color: #fff;\n font-size: 20px;\n cursor: pointer;\n padding: 5px;\n }\n\n .herb-error-file-section {\n margin-bottom: 20px;\n }\n\n .herb-error-file {\n font-size: 14px;\n color: #888;\n margin-bottom: 10px;\n font-weight: 600;\n }\n\n .herb-error-item {\n background: #2a2a2a;\n border-radius: 6px;\n padding: 15px;\n margin-bottom: 10px;\n border-left: 4px solid #ff6b6b;\n }\n\n .herb-error-item.warning {\n border-left-color: #ffd93d;\n }\n\n .herb-error-item.info {\n border-left-color: #4ecdc4;\n }\n\n .herb-error-item.hint {\n border-left-color: #95a5a6;\n }\n\n .herb-error-message {\n font-size: 14px;\n margin-bottom: 8px;\n line-height: 1.4;\n }\n\n .herb-error-location {\n font-size: 12px;\n color: #888;\n margin-bottom: 8px;\n }\n\n .herb-error-suggestion {\n font-size: 12px;\n color: #4ecdc4;\n font-style: italic;\n }\n\n .herb-error-source {\n font-size: 11px;\n color: #666;\n text-align: right;\n }\n\n .herb-file-separator {\n border-top: 1px solid #444;\n margin: 20px 0;\n }\n </style>\n\n <div class=\"herb-error-content\">\n <div class=\"herb-error-header\">\n <div class=\"herb-error-title\">\n Errors (${this.getTotalErrorCount()})\n </div>\n <button class=\"herb-error-close\">&times;</button>\n </div>\n\n <div class=\"herb-error-files\">\n ${this.allValidationData.map((validationData, index) => `\n ${index > 0 ? '<div class=\"herb-file-separator\"></div>' : ''}\n <div class=\"herb-error-file-section\">\n <div class=\"herb-error-file\">${validationData.filename} (${this.getErrorSummary(validationData.validationErrors)})</div>\n <div class=\"herb-error-list\">\n ${validationData.validationErrors.map(error => `\n <div class=\"herb-error-item ${error.severity}\">\n <div class=\"herb-error-message\">${this.escapeHtml(error.message)}</div>\n ${error.location ? `<div class=\"herb-error-location\">Line ${error.location.line}, Column ${error.location.column}</div>` : ''}\n ${error.suggestion ? `<div class=\"herb-error-suggestion\">💡 ${this.escapeHtml(error.suggestion)}</div>` : ''}\n <div class=\"herb-error-source\">${error.source}${error.code ? ` (${error.code})` : ''}</div>\n </div>\n `).join('')}\n </div>\n </div>\n `).join('')}\n </div>\n </div>\n `;\n document.body.appendChild(this.overlay);\n const closeBtn = this.overlay.querySelector('.herb-error-close');\n closeBtn?.addEventListener('click', () => this.hide());\n this.overlay.addEventListener('click', (e) => {\n if (e.target === this.overlay) {\n this.hide();\n }\n });\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape' && this.isVisible) {\n this.hide();\n }\n });\n }\n setupToggleHandler() {\n document.addEventListener('keydown', (e) => {\n if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'E') {\n e.preventDefault();\n this.toggle();\n }\n });\n if (this.hasErrorSeverity()) {\n setTimeout(() => this.show(), 100);\n }\n }\n getTotalErrorCount() {\n return this.allValidationData.reduce((total, data) => total + data.validationErrors.length, 0);\n }\n getErrorSummary(errors) {\n if (errors.length === 1) {\n return '1 error';\n }\n const errorsBySource = errors.reduce((acc, error) => {\n const source = error.source || 'Unknown';\n acc[source] = (acc[source] || 0) + 1;\n return acc;\n }, {});\n const sourceKeys = Object.keys(errorsBySource);\n if (sourceKeys.length === 1) {\n const source = sourceKeys[0];\n const count = errorsBySource[source];\n const sourceLabel = this.getSourceLabel(source);\n return `${count} ${sourceLabel} error${count === 1 ? '' : 's'}`;\n }\n else {\n const parts = sourceKeys.map(source => {\n const count = errorsBySource[source];\n const sourceLabel = this.getSourceLabel(source);\n return `${count} ${sourceLabel}`;\n });\n return `${errors.length} errors (${parts.join(', ')})`;\n }\n }\n getSourceLabel(source) {\n switch (source) {\n case 'Parser': return 'parser';\n case 'SecurityValidator': return 'security';\n case 'NestingValidator': return 'nesting';\n case 'AccessibilityValidator': return 'accessibility';\n default: return 'validation';\n }\n }\n hasErrorSeverity() {\n return this.allValidationData.some(data => data.validationErrors.some(error => error.severity === 'error'));\n }\n escapeHtml(unsafe) {\n return unsafe\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;');\n }\n show() {\n if (this.overlay) {\n this.overlay.style.display = 'block';\n this.isVisible = true;\n }\n }\n hide() {\n if (this.overlay) {\n this.overlay.style.display = 'none';\n this.isVisible = false;\n }\n }\n toggle() {\n if (this.isVisible) {\n this.hide();\n }\n else {\n this.show();\n }\n }\n hasErrors() {\n return this.getTotalErrorCount() > 0;\n }\n getErrorCount() {\n return this.getTotalErrorCount();\n }\n displayParserErrorOverlay(htmlContent) {\n const existingOverlay = document.querySelector('.herb-parser-error-overlay');\n if (existingOverlay) {\n existingOverlay.remove();\n }\n const container = document.createElement('div');\n container.innerHTML = htmlContent;\n const overlay = container.querySelector('.herb-parser-error-overlay');\n if (overlay) {\n document.body.appendChild(overlay);\n overlay.style.display = 'flex';\n }\n else {\n console.error('[ErrorOverlay] No parser error overlay found in HTML template');\n }\n }\n displayValidationOverlay(fragments) {\n const existingOverlay = document.querySelector('.herb-validation-overlay');\n if (existingOverlay) {\n existingOverlay.remove();\n }\n const errorsBySource = new Map();\n const errorsByFile = new Map();\n fragments.forEach(fragment => {\n const source = fragment.metadata.source;\n if (!errorsBySource.has(source)) {\n errorsBySource.set(source, []);\n }\n errorsBySource.get(source).push(fragment);\n const file = fragment.metadata.filename;\n if (!errorsByFile.has(file)) {\n errorsByFile.set(file, []);\n }\n errorsByFile.get(file).push(fragment);\n });\n const errorCount = fragments.filter(f => f.metadata.severity === 'error').reduce((sum, f) => sum + f.count, 0);\n const warningCount = fragments.filter(f => f.metadata.severity === 'warning').reduce((sum, f) => sum + f.count, 0);\n const totalCount = fragments.reduce((sum, f) => sum + f.count, 0);\n const uniqueCount = fragments.length;\n const overlayHTML = this.buildValidationOverlayHTML(fragments, errorsBySource, errorsByFile, { errorCount, warningCount, totalCount, uniqueCount });\n const overlay = document.createElement('div');\n overlay.className = 'herb-validation-overlay';\n overlay.innerHTML = overlayHTML;\n document.body.appendChild(overlay);\n this.setupValidationOverlayHandlers(overlay);\n }\n buildValidationOverlayHTML(_fragments, errorsBySource, errorsByFile, counts) {\n let title = counts.uniqueCount === 1 ? 'Validation Issue' : `Validation Issues`;\n if (counts.totalCount !== counts.uniqueCount) {\n title += ` (${counts.uniqueCount} unique, ${counts.totalCount} total)`;\n }\n else {\n title += ` (${counts.totalCount})`;\n }\n const subtitle = [];\n if (counts.errorCount > 0)\n subtitle.push(`${counts.errorCount} error${counts.errorCount !== 1 ? 's' : ''}`);\n if (counts.warningCount > 0)\n subtitle.push(`${counts.warningCount} warning${counts.warningCount !== 1 ? 's' : ''}`);\n let fileTabs = '';\n if (errorsByFile.size > 1) {\n const totalErrors = Array.from(errorsByFile.values()).reduce((sum, errors) => sum + errors.length, 0);\n fileTabs = `\n <div class=\"herb-file-tabs\">\n <button class=\"herb-file-tab active\" data-file=\"*\">\n All (${totalErrors})\n </button>\n ${Array.from(errorsByFile.entries()).map(([file, errors]) => `\n <button class=\"herb-file-tab\" data-file=\"${this.escapeAttr(file)}\">\n ${this.escapeHtml(file)} (${errors.length})\n </button>\n `).join('')}\n </div>\n `;\n }\n const contentSections = Array.from(errorsBySource.entries()).map(([source, sourceFragments]) => `\n <div class=\"herb-validator-section\" data-source=\"${this.escapeAttr(source)}\">\n <div class=\"herb-validator-header\">\n <h3>${this.escapeHtml(source.replace('Validator', ''))} Issues (${sourceFragments.length})</h3>\n </div>\n <div class=\"herb-validator-content\">\n ${sourceFragments.map(f => {\n const fileAttribute = `data-error-file=\"${this.escapeAttr(f.metadata.filename)}\"`;\n if (f.count > 1) {\n return `\n <div class=\"herb-validation-item-wrapper\" ${fileAttribute}>\n ${f.html}\n <div class=\"herb-occurrence-badge\" title=\"This error occurs ${f.count} times in the template\">\n <span class=\"herb-occurrence-icon\">⚠</span>\n <span class=\"herb-occurrence-count\">×${f.count}</span>\n </div>\n </div>\n `;\n }\n return `<div class=\"herb-validation-error-container\" ${fileAttribute}>${f.html}</div>`;\n }).join('')}\n </div>\n </div>\n `).join('');\n return `\n <style>${this.getValidationOverlayStyles()}</style>\n <div class=\"herb-validation-container\">\n <div class=\"herb-validation-header\">\n <div class=\"herb-validation-header-content\">\n <div class=\"herb-validation-title\">\n <span class=\"herb-validation-icon\">⚠️</span>\n ${title}\n </div>\n <div class=\"herb-validation-subtitle\">${subtitle.join(', ')}</div>\n </div>\n <button class=\"herb-close-button\" title=\"Close (Esc)\">×</button>\n </div>\n ${fileTabs}\n <div class=\"herb-validation-content\">\n ${contentSections}\n </div>\n <div class=\"herb-dismiss-hint\" style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 12px;\">\n Click outside, press <kbd style=\"display: inline-block; padding: 2px 6px; font-family: monospace; font-size: 0.9em; color: #333; background: #f7f7f7; border: 1px solid #ccc; border-radius: 4px; box-shadow: 0 2px 0 #ccc, 0 2px 3px rgba(0,0,0,0.2) inset;\">Esc</kbd> key, or fix the code to dismiss.<br>\n\n You can also disable this overlay by passing <code style=\"color: #ffeb3b; font-family: monospace; font-size: 12pt;\">validation_mode: :none</code> to <code style=\"color: #ffeb3b; font-family: monospace; font-size: 12pt;\">Herb::Engine</code>.\n </div>\n </div>\n `;\n }\n getValidationOverlayStyles() {\n return `\n .herb-validation-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n backdrop-filter: blur(4px);\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;\n color: #e5e5e5;\n line-height: 1.6;\n }\n\n .herb-validation-container {\n background: #000000;\n border: 1px solid #374151;\n border-radius: 12px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n max-width: 1200px;\n max-height: 80vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .herb-validation-header {\n background: linear-gradient(135deg, #f59e0b, #d97706);\n padding: 20px 24px;\n border-bottom: 1px solid #374151;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n }\n\n .herb-validation-title {\n font-size: 18px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .herb-validation-subtitle {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.9);\n margin-top: 4px;\n }\n\n .herb-file-tabs {\n background: #1a1a1a;\n border-bottom: 1px solid #374151;\n padding: 0;\n display: flex;\n overflow-x: auto;\n }\n\n .herb-file-tab {\n background: transparent;\n border: none;\n color: #9ca3af;\n padding: 12px 20px;\n cursor: pointer;\n font-size: 13px;\n white-space: nowrap;\n transition: all 0.2s;\n border-bottom: 2px solid transparent;\n }\n\n .herb-file-tab:hover {\n background: #262626;\n color: #e5e5e5;\n }\n\n .herb-file-tab.active {\n color: #f59e0b;\n border-bottom-color: #f59e0b;\n background: #262626;\n }\n\n .herb-validation-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n display: flex;\n flex-direction: column;\n gap: 24px;\n }\n\n .herb-validator-section {\n background: #0f0f0f;\n border: 1px solid #2d2d2d;\n border-radius: 8px;\n }\n\n .herb-validator-header {\n background: #1a1a1a;\n padding: 12px 16px;\n border-bottom: 1px solid #2d2d2d;\n }\n\n .herb-validator-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 500;\n color: #e5e5e5;\n }\n\n .herb-validator-content {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .herb-validation-item {\n border-left: 3px solid #4a4a4a;\n padding-left: 16px;\n }\n\n .herb-validation-item[data-severity=\"error\"] {\n border-left-color: #7f1d1d;\n }\n\n .herb-validation-item[data-severity=\"warning\"] {\n border-left-color: #78350f;\n }\n\n .herb-validation-item[data-severity=\"info\"] {\n border-left-color: #1e3a8a;\n }\n\n .herb-validation-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n }\n\n .herb-validation-badge {\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n }\n\n .herb-validation-location {\n font-size: 12px;\n color: #9ca3af;\n }\n\n .herb-validation-message {\n font-size: 14px;\n margin-bottom: 12px;\n line-height: 1.5;\n }\n\n .herb-code-snippet {\n background: #1a1a1a;\n border: 1px solid #2d2d2d;\n border-radius: 4px;\n padding: 12px;\n overflow-x: auto;\n }\n\n .herb-code-line {\n display: flex;\n align-items: flex-start;\n min-height: 20px;\n font-size: 13px;\n line-height: 1.5;\n }\n\n .herb-line-number {\n color: #6b7280;\n width: 40px;\n text-align: right;\n padding-right: 16px;\n user-select: none;\n flex-shrink: 0;\n }\n\n .herb-line-content {\n flex: 1;\n white-space: pre;\n font-family: inherit;\n }\n\n .herb-error-line {\n background: rgba(220, 38, 38, 0.1);\n }\n\n .herb-error-line .herb-line-number {\n color: #dc2626;\n font-weight: 600;\n }\n\n .herb-error-pointer {\n color: #dc2626;\n font-weight: bold;\n margin-left: 56px;\n font-size: 12px;\n }\n\n .herb-validation-suggestion {\n background: #1e3a1e;\n border: 1px solid #10b981;\n border-radius: 4px;\n padding: 8px 12px;\n margin-top: 8px;\n font-size: 13px;\n color: #10b981;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .herb-validation-item-wrapper,\n .herb-validation-error-container {\n position: relative;\n }\n\n .herb-validation-error-container.hidden,\n .herb-validation-item-wrapper.hidden,\n .herb-validator-section.hidden {\n display: none;\n }\n\n .herb-occurrence-badge {\n position: absolute;\n top: 8px;\n right: 8px;\n background: #dc2626;\n color: white;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 4px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n .herb-occurrence-icon {\n font-size: 10px;\n }\n\n .herb-occurrence-count {\n font-weight: bold;\n }\n\n .herb-close-button {\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.2);\n color: white;\n width: 32px;\n height: 32px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n font-size: 16px;\n transition: all 0.2s;\n }\n\n .herb-close-button:hover {\n background: rgba(255, 255, 255, 0.2);\n border-color: rgba(255, 255, 255, 0.3);\n }\n\n /* Syntax highlighting */\n .herb-erb { color: #61dafb; }\n .herb-erb-content { color: #c678dd; }\n .herb-tag { color: #e06c75; }\n .herb-attr { color: #d19a66; }\n .herb-value { color: #98c379; }\n .herb-comment { color: #5c6370; font-style: italic; }\n `;\n }\n setupValidationOverlayHandlers(overlay) {\n const closeBtn = overlay.querySelector('.herb-close-button');\n if (closeBtn) {\n closeBtn.addEventListener('click', () => overlay.remove());\n }\n overlay.addEventListener('click', (e) => {\n if (e.target === overlay) {\n overlay.remove();\n }\n });\n const escHandler = (e) => {\n if (e.key === 'Escape') {\n overlay.remove();\n document.removeEventListener('keydown', escHandler);\n }\n };\n document.addEventListener('keydown', escHandler);\n const fileTabs = overlay.querySelectorAll('.herb-file-tab');\n fileTabs.forEach(tab => {\n tab.addEventListener('click', () => {\n const selectedFile = tab.getAttribute('data-file');\n fileTabs.forEach(t => t.classList.remove('active'));\n tab.classList.add('active');\n const errorContainers = overlay.querySelectorAll('[data-error-file]');\n const validatorSections = overlay.querySelectorAll('.herb-validator-section');\n errorContainers.forEach(container => {\n const containerFile = container.getAttribute('data-error-file');\n if (selectedFile === '*' || containerFile === selectedFile) {\n container.classList.remove('hidden');\n }\n else {\n container.classList.add('hidden');\n }\n });\n validatorSections.forEach(section => {\n const sectionContent = section.querySelector('.herb-validator-content');\n const visibleErrors = sectionContent?.querySelectorAll('[data-error-file]:not(.hidden)').length || 0;\n const header = section.querySelector('h3');\n const source = section.getAttribute('data-source')?.replace('Validator', '') || 'Unknown';\n if (header) {\n header.textContent = `${source} Issues (${visibleErrors})`;\n }\n if (visibleErrors === 0) {\n section.classList.add('hidden');\n }\n else {\n section.classList.remove('hidden');\n }\n });\n });\n });\n }\n escapeAttr(text) {\n return this.escapeHtml(text).replace(/\"/g, '&quot;');\n }\n}\n\nclass HerbOverlay {\n constructor(options = {}) {\n this.options = options;\n this.showingERB = false;\n this.showingERBOutlines = false;\n this.showingERBHoverReveal = false;\n this.showingTooltips = true;\n this.showingViewOutlines = false;\n this.showingPartialOutlines = false;\n this.showingComponentOutlines = false;\n this.menuOpen = false;\n this.projectPath = '';\n this.currentlyHoveredERBElement = null;\n this.errorOverlay = null;\n this.handleRevealedERBClick = (event) => {\n event.stopPropagation();\n event.preventDefault();\n const element = event.currentTarget;\n if (!element)\n return;\n const fullPath = element.getAttribute('data-herb-debug-file-full-path');\n const line = element.getAttribute('data-herb-debug-line');\n const column = element.getAttribute('data-herb-debug-column');\n if (fullPath) {\n this.openFileInEditor(fullPath, line ? parseInt(line) : 1, column ? parseInt(column) : 1);\n }\n };\n if (options.autoInit !== false) {\n this.init();\n }\n }\n init() {\n this.loadProjectPath();\n this.loadSettings();\n this.injectMenu();\n this.setupMenuToggle();\n this.setupToggleSwitches();\n this.initializeErrorOverlay();\n this.setupTurboListeners();\n this.applySettings();\n }\n loadProjectPath() {\n if (this.options.projectPath) {\n this.projectPath = this.options.projectPath;\n return;\n }\n const metaTag = document.querySelector('meta[name=\"herb-project-path\"]');\n if (metaTag?.content) {\n this.projectPath = metaTag.content;\n }\n }\n loadSettings() {\n const savedSettings = localStorage.getItem(HerbOverlay.SETTINGS_KEY);\n if (savedSettings) {\n try {\n const settings = JSON.parse(savedSettings);\n this.showingERB = settings.showingERB || false;\n this.showingERBOutlines = settings.showingERBOutlines || false;\n this.showingERBHoverReveal = settings.showingERBHoverReveal || false;\n this.showingTooltips = settings.showingTooltips !== undefined ? settings.showingTooltips : true;\n this.showingViewOutlines = settings.showingViewOutlines || false;\n this.showingPartialOutlines = settings.showingPartialOutlines || false;\n this.showingComponentOutlines = settings.showingComponentOutlines || false;\n this.menuOpen = settings.menuOpen || false;\n }\n catch (e) {\n console.warn('Failed to load Herb dev tools settings:', e);\n }\n }\n }\n saveSettings() {\n const settings = {\n showingERB: this.showingERB,\n showingERBOutlines: this.showingERBOutlines,\n showingERBHoverReveal: this.showingERBHoverReveal,\n showingTooltips: this.showingTooltips,\n showingViewOutlines: this.showingViewOutlines,\n showingPartialOutlines: this.showingPartialOutlines,\n showingComponentOutlines: this.showingComponentOutlines,\n menuOpen: this.menuOpen\n };\n localStorage.setItem(HerbOverlay.SETTINGS_KEY, JSON.stringify(settings));\n this.updateMenuButtonState();\n }\n updateMenuButtonState() {\n const menuTrigger = document.getElementById('herbMenuTrigger');\n if (menuTrigger) {\n const hasActiveOptions = this.showingERB || this.showingERBOutlines || this.showingViewOutlines || this.showingPartialOutlines || this.showingComponentOutlines;\n if (hasActiveOptions) {\n menuTrigger.classList.add('has-active-options');\n }\n else {\n menuTrigger.classList.remove('has-active-options');\n }\n }\n }\n injectMenu() {\n const existingMenu = document.querySelector('.herb-floating-menu');\n if (existingMenu) {\n return;\n }\n const menuHTML = `\n <div class=\"herb-floating-menu\">\n <button class=\"herb-menu-trigger\" id=\"herbMenuTrigger\">\n <span class=\"herb-icon\">🌿</span>\n <span class=\"herb-text\">Herb</span>\n </button>\n\n <div class=\"herb-menu-panel\" id=\"herbMenuPanel\">\n <div class=\"herb-menu-header\">Herb Debug Tools</div>\n\n <div class=\"herb-toggle-item\">\n <label class=\"herb-toggle-label\">\n <input type=\"checkbox\" id=\"herbToggleViewOutlines\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch\"></span>\n <span class=\"herb-toggle-text\">Show View Outlines</span>\n </label>\n </div>\n\n <div class=\"herb-toggle-item\">\n <label class=\"herb-toggle-label\">\n <input type=\"checkbox\" id=\"herbTogglePartialOutlines\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch\"></span>\n <span class=\"herb-toggle-text\">Show Partial Outlines</span>\n </label>\n </div>\n\n <div class=\"herb-toggle-item\">\n <label class=\"herb-toggle-label\">\n <input type=\"checkbox\" id=\"herbToggleComponentOutlines\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch\"></span>\n <span class=\"herb-toggle-text\">Show Component Outlines</span>\n </label>\n </div>\n\n <div class=\"herb-toggle-item\">\n <label class=\"herb-toggle-label\">\n <input type=\"checkbox\" id=\"herbToggleERBOutlines\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch\"></span>\n <span class=\"herb-toggle-text\">Show ERB Output Outlines</span>\n </label>\n\n <div class=\"herb-nested-toggle\" id=\"herbERBHoverRevealNested\" style=\"display: none;\">\n <label class=\"herb-toggle-label herb-nested-label\">\n <input type=\"checkbox\" id=\"herbToggleERBHoverReveal\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch herb-nested-switch\"></span>\n <span class=\"herb-toggle-text\">Reveal ERB Output tag on hover</span>\n </label>\n </div>\n\n <div class=\"herb-nested-toggle\" id=\"herbTooltipsNested\" style=\"display: none;\">\n <label class=\"herb-toggle-label herb-nested-label\">\n <input type=\"checkbox\" id=\"herbToggleTooltips\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch herb-nested-switch\"></span>\n <span class=\"herb-toggle-text\">Show Tooltips</span>\n </label>\n </div>\n </div>\n\n <div class=\"herb-toggle-item\">\n <label class=\"herb-toggle-label\">\n <input type=\"checkbox\" id=\"herbToggleERB\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch\"></span>\n <span class=\"herb-toggle-text\">Show ERB Output Tags</span>\n </label>\n </div>\n\n <div class=\"herb-disable-all-section\">\n <button id=\"herbDisableAll\" class=\"herb-disable-all-btn\">Disable All</button>\n </div>\n </div>\n </div>\n `;\n document.body.insertAdjacentHTML('beforeend', menuHTML);\n }\n applySettings() {\n this.toggleViewOutlines(this.showingViewOutlines);\n this.togglePartialOutlines(this.showingPartialOutlines);\n this.toggleComponentOutlines(this.showingComponentOutlines);\n this.toggleERBTags(this.showingERB);\n this.toggleERBOutlines(this.showingERBOutlines);\n const menuTrigger = document.getElementById('herbMenuTrigger');\n const menuPanel = document.getElementById('herbMenuPanel');\n if (menuTrigger && menuPanel && this.menuOpen) {\n menuTrigger.classList.add('active');\n menuPanel.classList.add('open');\n }\n }\n setupMenuToggle() {\n const menuTrigger = document.getElementById('herbMenuTrigger');\n const menuPanel = document.getElementById('herbMenuPanel');\n if (menuTrigger && menuPanel) {\n menuTrigger.addEventListener('click', () => {\n this.menuOpen = !this.menuOpen;\n if (this.menuOpen) {\n menuTrigger.classList.add('active');\n menuPanel.classList.add('open');\n }\n else {\n menuTrigger.classList.remove('active');\n menuPanel.classList.remove('open');\n }\n this.saveSettings();\n });\n document.addEventListener('click', (e) => {\n const target = e.target;\n const floatingMenu = document.querySelector('.herb-floating-menu');\n if (floatingMenu && !floatingMenu.contains(target) && this.menuOpen) {\n this.menuOpen = false;\n menuTrigger.classList.remove('active');\n menuPanel.classList.remove('open');\n this.saveSettings();\n }\n });\n }\n }\n setupTurboListeners() {\n document.addEventListener('turbo:load', () => {\n this.reinitializeAfterNavigation();\n });\n document.addEventListener('turbo:render', () => {\n this.reinitializeAfterNavigation();\n });\n document.addEventListener('turbo:visit', () => {\n this.reinitializeAfterNavigation();\n });\n }\n reinitializeAfterNavigation() {\n this.injectMenu();\n this.setupMenuToggle();\n this.setupToggleSwitches();\n this.applySettings();\n this.updateMenuButtonState();\n }\n setupToggleSwitches() {\n const toggleViewOutlinesSwitch = document.getElementById('herbToggleViewOutlines');\n if (toggleViewOutlinesSwitch) {\n toggleViewOutlinesSwitch.checked = this.showingViewOutlines;\n toggleViewOutlinesSwitch.addEventListener('change', () => {\n this.toggleViewOutlines(toggleViewOutlinesSwitch.checked);\n });\n }\n const togglePartialOutlinesSwitch = document.getElementById('herbTogglePartialOutlines');\n if (togglePartialOutlinesSwitch) {\n togglePartialOutlinesSwitch.checked = this.showingPartialOutlines;\n togglePartialOutlinesSwitch.addEventListener('change', () => {\n this.togglePartialOutlines(togglePartialOutlinesSwitch.checked);\n });\n }\n const toggleComponentOutlinesSwitch = document.getElementById('herbToggleComponentOutlines');\n if (toggleComponentOutlinesSwitch) {\n toggleComponentOutlinesSwitch.checked = this.showingComponentOutlines;\n toggleComponentOutlinesSwitch.addEventListener('change', () => {\n this.toggleComponentOutlines(toggleComponentOutlinesSwitch.checked);\n });\n }\n const toggleERBSwitch = document.getElementById('herbToggleERB');\n const toggleERBOutlinesSwitch = document.getElementById('herbToggleERBOutlines');\n if (toggleERBSwitch) {\n toggleERBSwitch.checked = this.showingERB;\n toggleERBSwitch.addEventListener('change', () => {\n if (toggleERBSwitch.checked && toggleERBOutlinesSwitch) {\n toggleERBOutlinesSwitch.checked = false;\n this.toggleERBOutlines(false);\n }\n this.toggleERBTags(toggleERBSwitch.checked);\n });\n }\n if (toggleERBOutlinesSwitch) {\n toggleERBOutlinesSwitch.checked = this.showingERBOutlines;\n toggleERBOutlinesSwitch.addEventListener('change', () => {\n if (toggleERBOutlinesSwitch.checked && toggleERBSwitch) {\n toggleERBSwitch.checked = false;\n this.toggleERBTags(false);\n }\n this.toggleERBOutlines(toggleERBOutlinesSwitch.checked);\n this.updateNestedToggleVisibility();\n });\n }\n else {\n console.warn('ERB outlines toggle switch not found');\n }\n const toggleERBHoverRevealSwitch = document.getElementById('herbToggleERBHoverReveal');\n if (toggleERBHoverRevealSwitch) {\n toggleERBHoverRevealSwitch.checked = this.showingERBHoverReveal;\n toggleERBHoverRevealSwitch.addEventListener('change', () => {\n this.toggleERBHoverReveal(toggleERBHoverRevealSwitch.checked);\n });\n }\n const toggleTooltipsSwitch = document.getElementById('herbToggleTooltips');\n if (toggleTooltipsSwitch) {\n toggleTooltipsSwitch.checked = this.showingTooltips;\n toggleTooltipsSwitch.addEventListener('change', () => {\n this.toggleTooltips(toggleTooltipsSwitch.checked);\n });\n }\n this.updateNestedToggleVisibility();\n const disableAllBtn = document.getElementById('herbDisableAll');\n if (disableAllBtn) {\n disableAllBtn.addEventListener('click', () => {\n this.disableAll();\n });\n }\n }\n toggleViewOutlines(show) {\n this.showingViewOutlines = show !== undefined ? show : !this.showingViewOutlines;\n const viewOutlines = document.querySelectorAll('[data-herb-debug-outline-type=\"view\"], [data-herb-debug-outline-type*=\"view\"]');\n viewOutlines.forEach((outline) => {\n const element = outline;\n if (this.showingViewOutlines) {\n element.style.outline = '2px dotted #3b82f6';\n element.style.outlineOffset = element.tagName.toLowerCase() === 'html' ? '-2px' : '2px';\n element.classList.add('show-outline');\n this.createOverlayLabel(element, 'view');\n }\n else {\n element.style.outline = 'none';\n element.style.outlineOffset = '0';\n element.classList.remove('show-outline');\n this.removeOverlayLabel(element);\n }\n });\n this.saveSettings();\n }\n togglePartialOutlines(show) {\n this.showingPartialOutlines = show !== undefined ? show : !this.showingPartialOutlines;\n const partialOutlines = document.querySelectorAll('[data-herb-debug-outline-type=\"partial\"], [data-herb-debug-outline-type*=\"partial\"]');\n partialOutlines.forEach((outline) => {\n const element = outline;\n if (this.showingPartialOutlines) {\n element.style.outline = '2px dotted #10b981';\n element.style.outlineOffset = element.tagName.toLowerCase() === 'html' ? '-2px' : '2px';\n element.classList.add('show-outline');\n this.createOverlayLabel(element, 'partial');\n }\n else {\n element.style.outline = 'none';\n element.style.outlineOffset = '0';\n element.classList.remove('show-outline');\n this.removeOverlayLabel(element);\n }\n });\n this.saveSettings();\n }\n toggleComponentOutlines(show) {\n this.showingComponentOutlines = show !== undefined ? show : !this.showingComponentOutlines;\n const componentOutlines = document.querySelectorAll('[data-herb-debug-outline-type=\"component\"], [data-herb-debug-outline-type*=\"component\"]');\n componentOutlines.forEach((outline) => {\n const element = outline;\n if (this.showingComponentOutlines) {\n element.style.outline = '2px dotted #f59e0b';\n element.style.outlineOffset = element.tagName.toLowerCase() === 'html' ? '-2px' : '2px';\n element.classList.add('show-outline');\n this.createOverlayLabel(element, 'component');\n }\n else {\n element.style.outline = 'none';\n element.style.outlineOffset = '0';\n element.classList.remove('show-outline');\n this.removeOverlayLabel(element);\n }\n });\n this.saveSettings();\n }\n createOverlayLabel(element, type) {\n if (element.querySelector('.herb-overlay-label')) {\n return;\n }\n const shortName = element.getAttribute('data-herb-debug-file-name') || '';\n const relativePath = element.getAttribute('data-herb-debug-file-relative-path') || shortName;\n const fullPath = element.getAttribute('data-herb-debug-file-full-path') || relativePath;\n const label = document.createElement('div');\n label.className = 'herb-overlay-label';\n label.textContent = shortName;\n label.setAttribute('data-label-setup', 'true');\n label.addEventListener('mouseenter', () => {\n label.textContent = relativePath;\n document.querySelectorAll('.herb-overlay-label').forEach(otherLabel => {\n otherLabel.style.zIndex = '1000';\n });\n label.style.zIndex = '1002';\n });\n label.addEventListener('mouseleave', () => {\n label.textContent = shortName;\n label.style.zIndex = '1000';\n });\n label.addEventListener('click', (e) => {\n e.stopPropagation();\n this.openFileInEditor(fullPath, 1, 1);\n });\n const shouldAttachToParent = element.getAttribute('data-herb-debug-attach-to-parent') === 'true';\n if (shouldAttachToParent && element.parentElement) {\n const parent = element.parentElement;\n element.style.outline = 'none';\n element.classList.remove('show-outline');\n const outlineColor = type === 'component' ? '#f59e0b' : type === 'partial' ? '#10b981' : '#3b82f6';\n parent.style.outline = `2px dotted ${outlineColor}`;\n parent.style.outlineOffset = parent.tagName.toLowerCase() === 'html' ? '-2px' : '2px';\n parent.classList.add('show-outline');\n parent.setAttribute('data-herb-debug-attached-outline-type', type);\n parent.style.position = 'relative';\n label.style.position = 'absolute';\n label.style.top = '0';\n label.style.left = '0';\n parent.appendChild(label);\n return;\n }\n element.style.position = 'relative';\n element.appendChild(label);\n }\n removeOverlayLabel(element) {\n const shouldAttachToParent = element.getAttribute('data-herb-debug-attach-to-parent') === 'true';\n if (shouldAttachToParent && element.parentElement) {\n const parent = element.parentElement;\n const label = parent.querySelector('.herb-overlay-label');\n if (label) {\n label.remove();\n }\n parent.style.outline = 'none';\n parent.style.outlineOffset = '0';\n parent.classList.remove('show-outline');\n parent.removeAttribute('data-herb-debug-attached-outline-type');\n }\n else {\n const label = element.querySelector('.herb-overlay-label');\n if (label) {\n label.remove();\n }\n }\n }\n resetShowingERB() {\n const elements = document.querySelectorAll('[data-herb-debug-showing-erb');\n elements.forEach(element => {\n const originalContent = element.getAttribute('data-herb-debug-original') || \"\";\n element.innerHTML = originalContent;\n element.removeAttribute(\"data-herb-debug-showing-erb\");\n });\n }\n toggleERBTags(show) {\n this.showingERB = show !== undefined ? show : !this.showingERB;\n const erbOutputs = document.querySelectorAll('[data-herb-debug-outline-type*=\"erb-output\"]');\n erbOutputs.forEach((element) => {\n const erbCode = element.getAttribute('data-herb-debug-erb');\n if (this.showingERB && erbCode) {\n // this.resetShowingERB()\n if (!element.hasAttribute('data-herb-debug-original')) {\n element.setAttribute('data-herb-debug-original', element.innerHTML);\n }\n element.textContent = erbCode;\n element.setAttribute(\"data-herb-debug-showing-erb\", \"true\");\n element.style.background = '#f3e8ff';\n element.style.color = '#7c3aed';\n if (this.showingTooltips) {\n this.addTooltipHoverHandler(element);\n }\n }\n else {\n const originalContent = element.getAttribute('data-herb-debug-original') || \"\";\n if (element && element.hasAttribute(\"data-herb-debug-showing-erb\")) {\n element.innerHTML = originalContent;\n element.removeAttribute(\"data-herb-debug-showing-erb\");\n }\n element.style.background = 'transparent';\n element.style.color = 'inherit';\n this.removeTooltipHoverHandler(element);\n this.removeHoverTooltip(element);\n }\n });\n this.saveSettings();\n }\n toggleERBOutlines(show) {\n this.showingERBOutlines = show !== undefined ? show : !this.showingERBOutlines;\n this.clearCurrentHoveredERB();\n const erbOutputs = document.querySelectorAll('[data-herb-debug-outline-type*=\"erb-output\"]');\n erbOutputs.forEach(element => {\n const inserted = element.hasAttribute(\"data-herb-debug-inserted\");\n const needsWrapperToggled = (inserted && !element.children[0]);\n const realElement = element.children[0] || element;\n if (this.showingERBOutlines) {\n realElement.style.outline = '2px dotted #a78bfa';\n realElement.style.outlineOffset = '1px';\n if (needsWrapperToggled) {\n element.style.display = 'inline';\n }\n if (this.showingTooltips) {\n this.addTooltipHoverHandler(element);\n }\n if (this.showingERBHoverReveal) {\n this.addERBHoverReveal(element);\n }\n }\n else {\n realElement.style.outline = 'none';\n realElement.style.outlineOffset = '0';\n if (needsWrapperToggled) {\n element.style.display = 'contents';\n }\n this.removeTooltipHoverHandler(element);\n this.removeHoverTooltip(element);\n this.removeERBHoverReveal(element);\n }\n });\n this.saveSettings();\n }\n updateNestedToggleVisibility() {\n const nestedToggle = document.getElementById('herbERBHoverRevealNested');\n const tooltipsNestedToggle = document.getElementById('herbTooltipsNested');\n if (nestedToggle) {\n nestedToggle.style.display = this.showingERBOutlines ? 'block' : 'none';\n }\n if (tooltipsNestedToggle) {\n tooltipsNestedToggle.style.display = this.showingERBOutlines ? 'block' : 'none';\n }\n }\n toggleERBHoverReveal(show) {\n this.showingERBHoverReveal = show !== undefined ? show : !this.showingERBHoverReveal;\n if (this.showingERBHoverReveal && this.showingTooltips) {\n this.toggleTooltips(false);\n const toggleTooltipsSwitch = document.getElementById('herbToggleTooltips');\n if (toggleTooltipsSwitch) {\n toggleTooltipsSwitch.checked = false;\n }\n }\n this.clearCurrentHoveredERB();\n const erbOutputs = document.querySelectorAll('[data-herb-debug-outline-type*=\"erb-output\"]');\n erbOutputs.forEach((el) => {\n const element = el;\n this.removeERBHoverReveal(element);\n if (this.showingERBHoverReveal && this.showingERBOutlines) {\n this.addERBHoverReveal(element);\n }\n });\n this.saveSettings();\n }\n clearCurrentHoveredERB() {\n if (this.currentlyHoveredERBElement) {\n const handlers = this.currentlyHoveredERBElement._erbHoverHandlers;\n if (handlers) {\n handlers.hideERBCode();\n }\n this.currentlyHoveredERBElement = null;\n }\n }\n addERBHoverReveal(element) {\n const erbCode = element.getAttribute('data-herb-debug-erb');\n if (!erbCode)\n return;\n this.removeERBHoverReveal(element);\n if (!element.hasAttribute('data-herb-debug-original')) {\n element.setAttribute('data-herb-debug-original', element.innerHTML);\n }\n const showERBCode = () => {\n if (!this.showingERBHoverReveal || !this.showingERBOutlines) {\n return;\n }\n if (this.currentlyHoveredERBElement === element) {\n return;\n }\n this.clearCurrentHoveredERB();\n this.currentlyHoveredERBElement = element;\n element.style.background = '#f3e8ff';\n element.style.color = '#7c3aed';\n element.style.fontFamily = 'inherit';\n element.style.fontSize = 'inherit';\n element.style.borderRadius = '3px';\n element.style.cursor = 'pointer';\n element.textContent = erbCode;\n element.addEventListener('click', this.handleRevealedERBClick);\n };\n const hideERBCode = () => {\n if (this.currentlyHoveredERBElement === element) {\n this.currentlyHoveredERBElement = null;\n }\n const originalContent = element.getAttribute('data-herb-debug-original');\n if (originalContent) {\n element.innerHTML = originalContent;\n }\n element.style.background = 'transparent';\n element.style.color = 'inherit';\n element.style.fontFamily = 'inherit';\n element.style.fontSize = 'inherit';\n element.style.borderRadius = '0';\n element.style.cursor = 'default';\n element.removeEventListener('click', this.handleRevealedERBClick);\n };\n element._erbHoverHandlers = { showERBCode, hideERBCode };\n element.addEventListener('mouseenter', showERBCode);\n }\n removeERBHoverReveal(element) {\n const handlers = element._erbHoverHandlers;\n if (handlers) {\n element.removeEventListener('mouseenter', handlers.showERBCode);\n delete element._erbHoverHandlers;\n handlers.hideERBCode();\n }\n }\n createHoverTooltip(element, elementForPosition) {\n this.removeHoverTooltip(element);\n const relativePath = element.getAttribute('data-herb-debug-file-relative-path') || element.getAttribute('data-herb-debug-file-name') || '';\n const fullPath = element.getAttribute('data-herb-debug-file-full-path') || relativePath;\n const line = element.getAttribute('data-herb-debug-line') || '';\n const column = element.getAttribute('data-herb-debug-column') || '';\n const erb = element.getAttribute('data-herb-debug-erb') || '';\n if (!relativePath || !erb)\n return;\n const tooltip = document.createElement('div');\n tooltip.className = 'herb-tooltip';\n tooltip.innerHTML = `\n <div class=\"herb-location\" data-tooltip=\"Open in Editor\">\n <span class=\"herb-file-path\">${relativePath}:${line}:${column}</span>\n <button class=\"herb-copy-path-btn\" data-tooltip=\"Copy file path\">📋</button>\n </div>\n <div class=\"herb-erb-code\">${erb}</div>\n `;\n let hideTimeout = null;\n const showTooltip = () => {\n if (hideTimeout) {\n clearTimeout(hideTimeout);\n hideTimeout = null;\n }\n tooltip.classList.add('visible');\n };\n const hideTooltip = () => {\n hideTimeout = window.setTimeout(() => {\n tooltip.classList.remove('visible');\n }, 100);\n };\n element.addEventListener('mouseenter', showTooltip);\n element.addEventListener('mouseleave', hideTooltip);\n tooltip.addEventListener('mouseenter', showTooltip);\n tooltip.addEventListener('mouseleave', hideTooltip);\n const locationElement = tooltip.querySelector('.herb-location');\n const openInEditor = (e) => {\n if (e.target.closest('.herb-copy-path-btn')) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.openFileInEditor(fullPath, parseInt(line), parseInt(column));\n };\n locationElement?.addEventListener('click', openInEditor);\n const copyButton = tooltip.querySelector('.herb-copy-path-btn');\n const copyFilePath = (e) => {\n e.preventDefault();\n e.stopPropagation();\n const textToCopy = `${relativePath}:${line}:${column}`;\n navigator.clipboard.writeText(textToCopy).then(() => {\n copyButton.textContent = '✅';\n setTimeout(() => {\n copyButton.textContent = '📋';\n }, 1000);\n }).catch((err) => {\n console.error('Failed to copy file path:', err);\n });\n };\n copyButton?.addEventListener('click', copyFilePath);\n const positionTooltip = () => {\n const elementRect = elementForPosition.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n tooltip.style.position = 'fixed';\n tooltip.style.left = '0';\n tooltip.style.top = '0';\n tooltip.style.transform = 'none';\n tooltip.style.bottom = 'auto';\n const actualTooltipRect = tooltip.getBoundingClientRect();\n const tooltipWidth = actualTooltipRect.width;\n const tooltipHeight = actualTooltipRect.height;\n let left = elementRect.left + (elementRect.width / 2) - (tooltipWidth / 2);\n let top = elementRect.top - tooltipHeight - 8;\n if (left < 8) {\n left = 8;\n }\n else if (left + tooltipWidth > viewportWidth - 8) {\n left = viewportWidth - tooltipWidth - 8;\n }\n if (top < 8) {\n top = elementRect.bottom + 8;\n if (top + tooltipHeight > viewportHeight - 8) {\n top = Math.max(8, (viewportHeight - tooltipHeight) / 2);\n }\n }\n if (top + tooltipHeight > viewportHeight - 8) {\n top = viewportHeight - tooltipHeight - 8;\n }\n tooltip.style.position = 'fixed';\n tooltip.style.left = `${left}px`;\n tooltip.style.top = `${top}px`;\n tooltip.style.transform = 'none';\n tooltip.style.bottom = 'auto';\n };\n element._tooltipHandlers = { showTooltip, hideTooltip, openInEditor, copyFilePath, positionTooltip };\n tooltip._tooltipHandlers = { showTooltip, hideTooltip };\n element.appendChild(tooltip);\n setTimeout(positionTooltip, 0);\n window.addEventListener('scroll', positionTooltip, { passive: true });\n window.addEventListener('resize', positionTooltip, { passive: true });\n }\n removeHoverTooltip(element) {\n const tooltip = element.querySelector('.herb-tooltip');\n if (tooltip) {\n const handlers = element._tooltipHandlers;\n const tooltipHandlers = tooltip._tooltipHandlers;\n if (handlers) {\n element.removeEventListener('mouseenter', handlers.showTooltip);\n element.removeEventListener('mouseleave', handlers.hideTooltip);\n const locationElement = tooltip.querySelector('.herb-location');\n locationElement?.removeEventListener('click', handlers.openInEditor);\n const copyButton = tooltip.querySelector('.herb-copy-path-btn');\n copyButton?.removeEventListener('click', handlers.copyFilePath);\n if (handlers.positionTooltip) {\n window.removeEventListener('scroll', handlers.positionTooltip);\n window.removeEventListener('resize', handlers.positionTooltip);\n }\n delete element._tooltipHandlers;\n }\n if (tooltipHandlers) {\n tooltip.removeEventListener('mouseenter', tooltipHandlers.showTooltip);\n tooltip.removeEventListener('mouseleave', tooltipHandlers.hideTooltip);\n delete tooltip._tooltipHandlers;\n }\n tooltip.remove();\n }\n }\n addTooltipHoverHandler(element) {\n this.removeTooltipHoverHandler(element);\n const lazyTooltipHandler = () => {\n if (!this.showingTooltips || !this.showingERBOutlines) {\n return;\n }\n if (element.querySelector('.herb-tooltip')) {\n return;\n }\n this.createHoverTooltip(element, element);\n };\n element._lazyTooltipHandler = lazyTooltipHandler;\n element.addEventListener('mouseenter', lazyTooltipHandler);\n }\n removeTooltipHoverHandler(element) {\n const handler = element._lazyTooltipHandler;\n if (handler) {\n element.removeEventListener('mouseenter', handler);\n delete element._lazyTooltipHandler;\n }\n }\n openFileInEditor(file, line, column) {\n const absolutePath = file.startsWith('/') ? file : (this.projectPath ? `${this.projectPath}/${file}` : file);\n const editors = [\n `vscode://file/${absolutePath}:${line}:${column}`,\n `subl://open?url=file://${absolutePath}&line=${line}&column=${column}`,\n `atom://core/open/file?filename=${absolutePath}&line=${line}&column=${column}`,\n `txmt://open?url=file://${absolutePath}&line=${line}&column=${column}`,\n ];\n try {\n window.open(editors[0], '_self');\n }\n catch (error) {\n console.log(`Open in editor: ${absolutePath}:${line}:${column}`);\n }\n }\n toggleTooltips(show) {\n this.showingTooltips = show !== undefined ? show : !this.showingTooltips;\n if (this.showingTooltips && this.showingERBHoverReveal) {\n this.toggleERBHoverReveal(false);\n const toggleERBHoverRevealSwitch = document.getElementById('herbToggleERBHoverReveal');\n if (toggleERBHoverRevealSwitch) {\n toggleERBHoverRevealSwitch.checked = false;\n }\n }\n const erbOutputs = document.querySelectorAll('[data-herb-debug-outline-type*=\"erb-output\"]');\n erbOutputs.forEach((element) => {\n if (this.showingERBOutlines && this.showingTooltips) {\n this.addTooltipHoverHandler(element);\n }\n else {\n this.removeTooltipHoverHandler(element);\n this.removeHoverTooltip(element);\n }\n });\n this.saveSettings();\n }\n disableAll() {\n this.clearCurrentHoveredERB();\n this.toggleViewOutlines(false);\n this.togglePartialOutlines(false);\n this.toggleComponentOutlines(false);\n this.toggleERBTags(false);\n this.toggleERBOutlines(false);\n this.toggleERBHoverReveal(false);\n this.toggleTooltips(false);\n const toggleViewOutlinesSwitch = document.getElementById('herbToggleViewOutlines');\n const togglePartialOutlinesSwitch = document.getElementById('herbTogglePartialOutlines');\n const toggleComponentOutlinesSwitch = document.getElementById('herbToggleComponentOutlines');\n const toggleERBSwitch = document.getElementById('herbToggleERB');\n const toggleERBOutlinesSwitch = document.getElementById('herbToggleERBOutlines');\n const toggleERBHoverRevealSwitch = document.getElementById('herbToggleERBHoverReveal');\n const toggleTooltipsSwitch = document.getElementById('herbToggleTooltips');\n if (toggleViewOutlinesSwitch)\n toggleViewOutlinesSwitch.checked = false;\n if (togglePartialOutlinesSwitch)\n togglePartialOutlinesSwitch.checked = false;\n if (toggleComponentOutlinesSwitch)\n toggleComponentOutlinesSwitch.checked = false;\n if (toggleERBSwitch)\n toggleERBSwitch.checked = false;\n if (toggleERBOutlinesSwitch)\n toggleERBOutlinesSwitch.checked = false;\n if (toggleERBHoverRevealSwitch)\n toggleERBHoverRevealSwitch.checked = false;\n if (toggleTooltipsSwitch)\n toggleTooltipsSwitch.checked = false;\n }\n initializeErrorOverlay() {\n this.errorOverlay = new ErrorOverlay();\n }\n}\nHerbOverlay.SETTINGS_KEY = 'herb-dev-tools-settings';\n\nfunction initHerbDevTools(options = {}) {\n return new HerbOverlay(options);\n}\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n const hasDebugMode = document.querySelector('meta[name=\"herb-debug-mode\"]')?.getAttribute('content') === 'true';\n const hasDebugErb = document.querySelector('[data-herb-debug-erb]') !== null;\n const hasValidationErrors = document.querySelector('template[data-herb-validation-errors]') !== null;\n const hasValidationError = document.querySelector('template[data-herb-validation-error]') !== null;\n const hasParserErrors = document.querySelector('template[data-herb-parser-error]') !== null;\n const shouldAutoInit = hasDebugMode || hasDebugErb || hasValidationErrors || hasValidationError || hasParserErrors;\n if (shouldAutoInit) {\n document.addEventListener('DOMContentLoaded', () => {\n initHerbDevTools();\n });\n }\n}\nif (typeof window !== 'undefined') {\n window.HerbDevTools = {\n init: initHerbDevTools,\n HerbOverlay\n };\n}\n\nexport { HerbOverlay, initHerbDevTools };\n//# sourceMappingURL=herb-dev-tools.esm.js.map\n","import { initHerbDevTools, HerbOverlay, type HerbDevToolsOptions } from \"@herb-tools/dev-tools\"\n\nexport interface ReActionViewDevToolsOptions extends HerbDevToolsOptions {\n projectPath?: string\n autoInit?: boolean\n}\n\nexport class ReActionViewDevTools {\n private herbOverlay: HerbOverlay | null = null\n private static instance: ReActionViewDevTools | null = null\n\n constructor(private options: ReActionViewDevToolsOptions = {}) {\n if (options.autoInit !== false) {\n this.init()\n }\n }\n\n init(): HerbOverlay {\n if (this.herbOverlay) {\n this.destroy()\n }\n\n this.herbOverlay = initHerbDevTools({\n projectPath: this.options.projectPath,\n ...this.options\n })\n\n return this.herbOverlay\n }\n\n destroy(): void {\n if (this.herbOverlay) {\n const existingMenu = document.querySelector(\".herb-floating-menu\")\n\n if (existingMenu) {\n existingMenu.remove()\n }\n }\n\n this.herbOverlay = null\n }\n\n getHerbOverlay(): HerbOverlay | null {\n return this.herbOverlay\n }\n\n static getInstance(): ReActionViewDevTools | null {\n return ReActionViewDevTools.instance\n }\n\n static setInstance(instance: ReActionViewDevTools | null): void {\n ReActionViewDevTools.instance = instance\n }\n}\n\nexport function initReActionViewDevTools(options: ReActionViewDevToolsOptions = {}): ReActionViewDevTools {\n const existingInstance = ReActionViewDevTools.getInstance()\n\n if (existingInstance) {\n existingInstance.destroy()\n }\n\n const instance = new ReActionViewDevTools(options)\n ReActionViewDevTools.setInstance(instance)\n\n return instance\n}\n\nif (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n let isInitializing = false\n\n const initializeDevTools = () => {\n if (isInitializing) {\n console.log(\"ReActionView dev tools initialization already in progress, skipping...\")\n\n return\n }\n\n const shouldAutoInit = document.querySelector(`meta[name=\"herb-debug-mode\"]`)?.getAttribute(\"content\") === \"true\" || document.querySelector(\"[data-herb-debug-erb]\") !== null\n\n if (!shouldAutoInit) {\n console.log(\"ReActionView debug mode not detected, skipping dev tools initialization\")\n return\n }\n\n isInitializing = true\n\n try {\n let projectPath: string | undefined\n const railsRoot = document.querySelector(`meta[name=\"herb-rails-root\"]`)?.getAttribute(\"content\")\n if (railsRoot) {\n projectPath = railsRoot\n }\n\n initReActionViewDevTools({\n projectPath,\n autoInit: true\n })\n\n } catch (error) {\n console.warn(\"Could not initialize ReActionView dev tools:\", error)\n } finally {\n isInitializing = false\n }\n }\n\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", initializeDevTools, { once: true })\n } else {\n setTimeout(initializeDevTools, 0)\n }\n\n document.addEventListener(\"turbo:load\", initializeDevTools)\n document.addEventListener(\"turbo:render\", initializeDevTools)\n document.addEventListener(\"turbo:visit\", initializeDevTools)\n}\n\ndeclare global {\n interface Window {\n ReActionViewDevTools: {\n init: typeof initReActionViewDevTools\n ReActionViewDevTools: typeof ReActionViewDevTools\n HerbOverlay: typeof HerbOverlay\n }\n }\n}\n\nif (typeof window !== \"undefined\") {\n window.ReActionViewDevTools = {\n init: initReActionViewDevTools,\n ReActionViewDevTools,\n HerbOverlay\n }\n}\n\nexport { HerbOverlay, type HerbDevToolsOptions }\n"],"names":[],"mappings":"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AC,6CAA6C,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAClG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACnB;AACA;AACA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACf,QAAQ,OAAO;AACf,aAAa,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACjD;AACA;AACA;AACA;AACA;AACA,cAAc,EAAE,KAAK;AACrB;AACA,kDAAkD,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE;AACA;AACA;AACA,QAAQ,EAAE,QAAQ;AAClB;AACA,UAAU,EAAE,eAAe;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,CAAC;AACL,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"reactionview-dev-tools.esm.js","sources":["../../../node_modules/@herb-tools/dev-tools/dist/herb-dev-tools.esm.js","../../../javascript/packages/dev-tools/src/index.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (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\nvar css_248z = \".herb-overlay-label{background:rgba(0,0,0,.8);border-radius:3px;color:#fff;cursor:pointer;display:block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,monospace;font-size:11px;font-weight:500;left:4px;line-height:1.2;padding:2px 6px;position:absolute;top:-18px;transition:all .2s ease;white-space:nowrap;z-index:1000}.herb-overlay-label:hover{background:rgba(0,0,0,.9);color:#374151;transform:scale(1.02);z-index:1001}[data-herb-debug-outline-type*=view]>.herb-overlay-label{background:#dbeafe;border-color:#93c5fd;color:#1e40af}[data-herb-debug-outline-type*=partial]>.herb-overlay-label{background:#d1fae5;border-color:#6ee7b7;color:#065f46}[data-herb-debug-outline-type*=component]>.herb-overlay-label{background:#fef3c7;border-color:#fcd34d;color:#92400e}[data-herb-debug-outline-type*=erb-output]{transition:all .3s ease}.herb-tooltip{background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,.12),0 2px 8px rgba(0,0,0,.08);display:flex;flex-direction:column;font-family:SF Mono,Monaco,Inconsolata,Fira Code,monospace;font-size:14px;gap:12px;max-width:calc(100vw - 16px);opacity:0;overflow:visible;padding:16px 20px;pointer-events:none;position:fixed;transition:opacity .2s ease,visibility .2s ease;visibility:hidden;white-space:nowrap;z-index:10001}.herb-tooltip.visible{opacity:1;pointer-events:auto;visibility:visible}.herb-tooltip .herb-location{align-items:center;background:#f8f9fa;border-radius:12px 12px 0 0;color:#6b7280;cursor:pointer;display:flex;font-size:13px;font-weight:500;gap:12px;justify-content:space-between;margin:-16px -20px 0;padding:12px 20px;transition:all .2s ease}.herb-tooltip .herb-location:hover{background:#f1f3f4;color:#374151}.herb-copy-path-btn{background:transparent;border:none;border-radius:4px;color:#6b7280;cursor:pointer;flex-shrink:0;font-size:14px;padding:4px;position:relative;transition:all .2s ease}.herb-copy-path-btn:hover{background:hsla(220,9%,46%,.1);color:#374151}.herb-copy-path-btn:active{transform:scale(.95)}.herb-location:after{background:#1f2937;border-radius:6px;bottom:calc(100% + 8px);color:#fff;content:attr(data-tooltip);font-size:12px;padding:6px 10px;pointer-events:none;white-space:nowrap}.herb-location:after,.herb-location:before{left:50%;opacity:0;position:absolute;transform:translateX(-50%);transition:all .2s ease;visibility:hidden;z-index:10002}.herb-location:before{border:4px solid transparent;border-top-color:#1f2937;bottom:calc(100% + 2px);content:\\\"\\\"}.herb-location:hover:after,.herb-location:hover:before{opacity:1;visibility:visible}.herb-location:has(.herb-copy-path-btn:hover):after,.herb-location:has(.herb-copy-path-btn:hover):before{opacity:0!important;visibility:hidden!important}.herb-copy-path-btn:after{background:#1f2937;border-radius:6px;color:#fff;content:attr(data-tooltip);font-size:12px;padding:6px 10px;pointer-events:none;top:-36px;white-space:nowrap}.herb-copy-path-btn:after,.herb-copy-path-btn:before{left:50%;opacity:0;position:absolute;transform:translateX(-50%);transition:all .2s ease;visibility:hidden;z-index:10003}.herb-copy-path-btn:before{border:4px solid transparent;border-bottom-color:#1f2937;content:\\\"\\\";top:-6px}.herb-copy-path-btn:hover:after,.herb-copy-path-btn:hover:before{opacity:1;visibility:visible}.herb-tooltip .herb-erb-code{color:#111827;cursor:text;font-size:16px;font-weight:600;letter-spacing:-.025em;user-select:text}.herb-tooltip:before{bottom:-8px;content:\\\"\\\";height:8px;left:0;pointer-events:auto;position:absolute;right:0}.herb-tooltip:after{border:6px solid transparent;border-top-color:#e5e7eb;bottom:-6px;content:\\\"\\\";left:50%;pointer-events:none;position:absolute;transform:translateX(-50%);z-index:10000}.herb-floating-menu{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;position:fixed;right:0;top:0;z-index:2147483643}.herb-menu-trigger{align-items:center;background:#fff;border:1px solid silver;border-radius:0 0 0 10px;border-right:none;border-top:none;box-shadow:0 1px 3px rgba(0,0,0,.1);cursor:pointer;display:flex;font-size:12px;gap:4px;justify-content:center;padding:4px 7px;position:relative;transition:all .2s ease;z-index:2147483640}.herb-menu-trigger:hover{background:#f9fafb;border-color:#9ca3af;box-shadow:0 4px 12px rgba(0,0,0,.15)}.herb-menu-trigger:active{transform:scale(.98)}.herb-menu-trigger.has-active-options{background:#dbeafe;border-color:#3b82f6}.herb-menu-trigger.has-active-options:hover{background:#bfdbfe;border-color:#2563eb}.herb-menu-trigger.has-active-options .herb-text{color:#1d4ed8}.herb-icon{display:block;font-size:14px;line-height:1}.herb-text{color:#555;font-size:11px;font-weight:600;letter-spacing:.2px}.herb-menu-panel{background:#fff;border:1px solid silver;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-width:280px;opacity:0;padding:0;position:absolute;right:10px;top:28px;transform:translateY(-10px) scale(.95);transform-origin:top right;transition:all .3s cubic-bezier(.4,0,.2,1);visibility:hidden}.herb-menu-panel.open{opacity:1;transform:translateY(0) scale(1);visibility:visible}.herb-menu-header{background:#f9fafb;border-bottom:1px solid #e5e7eb;border-radius:8px 8px 0 0;color:#374151;font-size:14px;font-weight:600;padding:16px 20px}.herb-toggle-item{border-bottom:1px solid #f3f4f6;padding:12px 20px}.herb-toggle-item:last-child{border-bottom:none;border-radius:0 0 8px 8px}.herb-nested-toggle{border-left:2px solid #f3f4f6;margin-top:8px;padding-left:24px;transition:all .3s ease}.herb-nested-label{opacity:.8}.herb-nested-label .herb-toggle-text{color:#6b7280;font-size:13px}.herb-nested-switch{background:#e5e7eb;height:20px;width:36px}.herb-nested-switch:after{height:14px;left:3px;top:3px;width:14px}.herb-toggle-input:checked+.herb-nested-switch:after{transform:translateX(16px)}.herb-toggle-label{align-items:center;cursor:pointer;display:flex;gap:12px;user-select:none}.herb-toggle-input{display:none}.herb-toggle-switch{background:#cbd5e1;border-radius:12px;flex-shrink:0;height:24px;position:relative;transition:background .3s ease;width:44px}.herb-toggle-switch:after{background:#fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2);content:\\\"\\\";height:18px;left:3px;position:absolute;top:3px;transition:transform .3s ease;width:18px}.herb-toggle-input:checked+.herb-toggle-switch{background:#8b5cf6}.herb-toggle-input:checked+.herb-toggle-switch:after{transform:translateX(20px)}.herb-toggle-text{color:#374151;flex:1;font-size:14px}.herb-toggle-label:hover .herb-toggle-switch{background:#94a3b8}.herb-toggle-label:hover .herb-toggle-input:checked+.herb-toggle-switch{background:#7c3aed}.herb-disable-all-section{background:#f9fafb;border-radius:0 0 8px 8px;border-top:1px solid #f3f4f6;padding:16px 20px}.herb-disable-all-btn{background:#ef4444;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;padding:8px 16px;transition:background .2s ease;width:100%}.herb-disable-all-btn:hover{background:#dc2626}.herb-disable-all-btn:active{background:#b91c1c}.herb-validation-overlay{align-items:center;backdrop-filter:blur(4px);background:rgba(0,0,0,.8);bottom:0;color:#e5e5e5;display:flex;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;justify-content:center;left:0;line-height:1.6;overflow-y:auto;padding:20px;position:fixed;right:0;top:0;z-index:2147483640}.herb-validation-panel{background:#000;border:1px solid #374151;border-radius:12px;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);display:flex;flex-direction:column;max-height:80vh;max-width:1200px;overflow:hidden;width:100%}.herb-validation-header{align-items:flex-start;background:linear-gradient(135deg,#dc2626,#b91c1c);border-bottom:1px solid #374151;border-radius:12px 12px 0 0;color:#fff;display:flex;flex-shrink:0;gap:16px;justify-content:space-between;padding:20px 24px}.herb-validation-title{font-size:18px;font-weight:600;margin:0}.herb-validation-close{align-items:center;background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);border-radius:6px;color:#fff;cursor:pointer;display:flex;flex-shrink:0;font-size:16px;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.herb-validation-close:hover{background:hsla(0,0%,100%,.2);border-color:hsla(0,0%,100%,.3)}.herb-file-tabs{background:#262626;border-bottom:1px solid #374151;display:flex;flex-shrink:0;overflow-x:auto}.herb-file-tab{background:none;border:none;border-bottom:3px solid transparent;color:#9ca3af;cursor:pointer;font-size:14px;font-weight:500;padding:12px 16px;transition:all .2s ease;white-space:nowrap}.herb-file-tab:hover{background:#2d2d2d;color:#e5e5e5}.herb-file-tab.active{background:#374151;border-bottom-color:#3b82f6;color:#fff}.herb-validation-content{flex:1;overflow-y:auto;padding:24px}.herb-validator-section{margin-bottom:32px}.herb-validator-section:last-child{margin-bottom:0}.herb-validator-section.hidden{display:none}.herb-validator-header{align-items:center;background:#262626;border-bottom:1px solid #374151;border-radius:8px 8px 0 0;color:#e5e5e5;display:flex;font-size:16px;font-weight:600;justify-content:space-between;padding:12px 16px}.herb-validator-count{background:hsla(0,0%,100%,.2);border-radius:12px;font-size:14px;font-weight:500;padding:2px 8px}.herb-validator-items{background:#111;border:1px solid #374151;border-radius:0 0 8px 8px;border-top:none}.herb-validation-item{background:#111;border-bottom:1px solid #374151;padding:20px}.herb-validation-item:last-child{border-bottom:none;border-radius:0 0 8px 8px}.herb-validation-item.hidden{display:none}.herb-validation-item .herb-validation-header{align-items:center;background:#1a1a1a;border:none;border-bottom:1px solid #374151;color:#9ca3af;display:flex;font-size:13px;gap:12px;margin:-20px -20px 16px;padding:12px 16px}.herb-validation-badge{border-radius:4px;color:#fff;font-size:12px;font-weight:600;letter-spacing:.025em;padding:4px 8px;text-transform:uppercase}.herb-validation-location{color:#9ca3af;font-family:SF Mono,Monaco,Inconsolata,Fira Code,monospace;font-size:13px}.herb-validation-message{background:#1a1a1a;border-bottom:1px solid #374151;color:#fbbf24;font-size:13px;font-weight:500;line-height:1.4;margin:-16px -16px 16px;padding:12px 16px}.herb-code-snippet{background:#1f2937;border-radius:6px;font-family:SF Mono,Monaco,Inconsolata,Fira Code,monospace;margin-bottom:16px;overflow:hidden}.herb-code-line{align-items:stretch;display:flex}.herb-code-line.herb-error-line{background:rgba(239,68,68,.1)}.herb-validation-overlay .herb-line-number{background:#374151;border-right:1px solid #4b5563;color:#9ca3af;flex-shrink:0;font-size:13px;padding:8px 12px;text-align:right;user-select:none;width:40px}.herb-validation-overlay .herb-error-line .herb-line-number{background:#dc2626;color:#fff}.herb-validation-overlay .herb-line-content{color:#e5e7eb;flex:1;font-size:13px;padding:8px 16px;white-space:pre-wrap}.herb-validation-overlay .herb-error-pointer{background:#1f2937;color:#dc2626;font-size:13px;font-weight:700;padding:4px 16px 8px 57px}.herb-validation-suggestion{align-items:flex-start;background:#111;border:1px solid #374151;border-radius:6px;color:#d1d5db;display:flex;font-size:14px;gap:8px;margin-top:16px;padding:12px 16px}.herb-suggestion-icon{color:#10b981;flex-shrink:0;font-size:16px;margin-top:1px}.herb-erb{color:#fbbf24;font-weight:600}.herb-erb-content{color:#34d399}.herb-tag{color:#60a5fa;font-weight:500}.herb-attr{color:#f472b6}.herb-value{color:#a78bfa}.herb-comment{color:#6b7280;font-style:italic}\";\nstyleInject(css_248z);\n\nclass ErrorOverlay {\n constructor() {\n this.overlay = null;\n this.allValidationData = [];\n this.isVisible = false;\n this.init();\n }\n init() {\n this.detectValidationErrors();\n const hasParserErrors = document.querySelector('.herb-parser-error-overlay') !== null;\n if (this.getTotalErrorCount() > 0) {\n this.createOverlay();\n this.setupToggleHandler();\n }\n else if (hasParserErrors) {\n console.log('[ErrorOverlay] Parser error overlay already displayed');\n }\n else {\n console.log('[ErrorOverlay] No errors found, not creating overlay');\n }\n }\n detectValidationErrors() {\n const templatesToRemove = [];\n const validationTemplates = document.querySelectorAll('template[data-herb-validation-error]');\n if (validationTemplates.length > 0) {\n this.processValidationTemplates(validationTemplates, templatesToRemove);\n }\n const jsonTemplates = document.querySelectorAll('template[data-herb-validation-errors]');\n jsonTemplates.forEach((template, _index) => {\n try {\n let jsonData = template.textContent?.trim();\n if (!jsonData) {\n jsonData = template.innerHTML?.trim();\n }\n if (jsonData) {\n const validationData = JSON.parse(jsonData);\n this.allValidationData.push(validationData);\n templatesToRemove.push(template);\n }\n }\n catch (error) {\n console.error('Failed to parse validation errors from template:', error, {\n textContent: template.textContent,\n innerHTML: template.innerHTML\n });\n templatesToRemove.push(template);\n }\n });\n const htmlTemplates = document.querySelectorAll('template[data-herb-parser-error]');\n htmlTemplates.forEach((template, _index) => {\n try {\n let htmlContent = template.innerHTML?.trim() || template.textContent?.trim();\n if (htmlContent) {\n this.displayParserErrorOverlay(htmlContent);\n templatesToRemove.push(template);\n }\n }\n catch (error) {\n console.error('Failed to process parser error template:', error);\n templatesToRemove.push(template);\n }\n });\n templatesToRemove.forEach((template, _index) => template.remove());\n }\n processValidationTemplates(templates, templatesToRemove) {\n const validationFragments = [];\n const errorMap = new Map();\n templates.forEach((template) => {\n try {\n const metadata = {\n severity: template.getAttribute('data-severity') || 'error',\n source: template.getAttribute('data-source') || 'unknown',\n code: template.getAttribute('data-code') || '',\n line: parseInt(template.getAttribute('data-line') || '0'),\n column: parseInt(template.getAttribute('data-column') || '0'),\n filename: template.getAttribute('data-filename') || 'unknown',\n message: template.getAttribute('data-message') || '',\n suggestion: template.getAttribute('data-suggestion') || undefined,\n timestamp: template.getAttribute('data-timestamp') || new Date().toISOString()\n };\n const html = template.innerHTML?.trim() || '';\n if (html) {\n const errorKey = `${metadata.filename}:${metadata.line}:${metadata.column}:${metadata.code}:${metadata.message}`;\n if (errorMap.has(errorKey)) {\n const existing = errorMap.get(errorKey);\n existing.count++;\n }\n else {\n errorMap.set(errorKey, { metadata, html, count: 1 });\n }\n templatesToRemove.push(template);\n }\n }\n catch (error) {\n console.error('Failed to process validation template:', error);\n templatesToRemove.push(template);\n }\n });\n validationFragments.push(...errorMap.values());\n if (validationFragments.length > 0) {\n this.displayValidationOverlay(validationFragments);\n }\n }\n createOverlay() {\n if (this.allValidationData.length === 0)\n return;\n this.overlay = document.createElement('div');\n this.overlay.id = 'herb-error-overlay';\n this.overlay.innerHTML = `\n <style>\n #herb-error-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n z-index: 10000;\n display: none;\n overflow: auto;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .herb-error-content {\n background: #1a1a1a;\n margin: 20px auto;\n padding: 20px;\n border-radius: 8px;\n max-width: 800px;\n color: #fff;\n }\n\n .herb-error-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n border-bottom: 1px solid #333;\n padding-bottom: 10px;\n }\n\n .herb-error-title {\n font-size: 18px;\n font-weight: 600;\n color: #ff6b6b;\n }\n\n .herb-error-close {\n background: none;\n border: none;\n color: #fff;\n font-size: 20px;\n cursor: pointer;\n padding: 5px;\n }\n\n .herb-error-file-section {\n margin-bottom: 20px;\n }\n\n .herb-error-file {\n font-size: 14px;\n color: #888;\n margin-bottom: 10px;\n font-weight: 600;\n }\n\n .herb-error-item {\n background: #2a2a2a;\n border-radius: 6px;\n padding: 15px;\n margin-bottom: 10px;\n border-left: 4px solid #ff6b6b;\n }\n\n .herb-error-item.warning {\n border-left-color: #ffd93d;\n }\n\n .herb-error-item.info {\n border-left-color: #4ecdc4;\n }\n\n .herb-error-item.hint {\n border-left-color: #95a5a6;\n }\n\n .herb-error-message {\n font-size: 14px;\n margin-bottom: 8px;\n line-height: 1.4;\n }\n\n .herb-error-location {\n font-size: 12px;\n color: #888;\n margin-bottom: 8px;\n }\n\n .herb-error-suggestion {\n font-size: 12px;\n color: #4ecdc4;\n font-style: italic;\n }\n\n .herb-error-source {\n font-size: 11px;\n color: #666;\n text-align: right;\n }\n\n .herb-file-separator {\n border-top: 1px solid #444;\n margin: 20px 0;\n }\n </style>\n\n <div class=\"herb-error-content\">\n <div class=\"herb-error-header\">\n <div class=\"herb-error-title\">\n Errors (${this.getTotalErrorCount()})\n </div>\n <button class=\"herb-error-close\">&times;</button>\n </div>\n\n <div class=\"herb-error-files\">\n ${this.allValidationData.map((validationData, index) => `\n ${index > 0 ? '<div class=\"herb-file-separator\"></div>' : ''}\n <div class=\"herb-error-file-section\">\n <div class=\"herb-error-file\">${validationData.filename} (${this.getErrorSummary(validationData.validationErrors)})</div>\n <div class=\"herb-error-list\">\n ${validationData.validationErrors.map(error => `\n <div class=\"herb-error-item ${error.severity}\">\n <div class=\"herb-error-message\">${this.escapeHtml(error.message)}</div>\n ${error.location ? `<div class=\"herb-error-location\">Line ${error.location.line}, Column ${error.location.column}</div>` : ''}\n ${error.suggestion ? `<div class=\"herb-error-suggestion\">💡 ${this.escapeHtml(error.suggestion)}</div>` : ''}\n <div class=\"herb-error-source\">${error.source}${error.code ? ` (${error.code})` : ''}</div>\n </div>\n `).join('')}\n </div>\n </div>\n `).join('')}\n </div>\n </div>\n `;\n document.body.appendChild(this.overlay);\n const closeBtn = this.overlay.querySelector('.herb-error-close');\n closeBtn?.addEventListener('click', () => this.hide());\n this.overlay.addEventListener('click', (e) => {\n if (e.target === this.overlay) {\n this.hide();\n }\n });\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape' && this.isVisible) {\n this.hide();\n }\n });\n }\n setupToggleHandler() {\n document.addEventListener('keydown', (e) => {\n if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'E') {\n e.preventDefault();\n this.toggle();\n }\n });\n if (this.hasErrorSeverity()) {\n setTimeout(() => this.show(), 100);\n }\n }\n getTotalErrorCount() {\n return this.allValidationData.reduce((total, data) => total + data.validationErrors.length, 0);\n }\n getErrorSummary(errors) {\n if (errors.length === 1) {\n return '1 error';\n }\n const errorsBySource = errors.reduce((acc, error) => {\n const source = error.source || 'Unknown';\n acc[source] = (acc[source] || 0) + 1;\n return acc;\n }, {});\n const sourceKeys = Object.keys(errorsBySource);\n if (sourceKeys.length === 1) {\n const source = sourceKeys[0];\n const count = errorsBySource[source];\n const sourceLabel = this.getSourceLabel(source);\n return `${count} ${sourceLabel} error${count === 1 ? '' : 's'}`;\n }\n else {\n const parts = sourceKeys.map(source => {\n const count = errorsBySource[source];\n const sourceLabel = this.getSourceLabel(source);\n return `${count} ${sourceLabel}`;\n });\n return `${errors.length} errors (${parts.join(', ')})`;\n }\n }\n getSourceLabel(source) {\n switch (source) {\n case 'Parser': return 'parser';\n case 'SecurityValidator': return 'security';\n case 'NestingValidator': return 'nesting';\n case 'AccessibilityValidator': return 'accessibility';\n default: return 'validation';\n }\n }\n hasErrorSeverity() {\n return this.allValidationData.some(data => data.validationErrors.some(error => error.severity === 'error'));\n }\n escapeHtml(unsafe) {\n return unsafe\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;');\n }\n show() {\n if (this.overlay) {\n this.overlay.style.display = 'block';\n this.isVisible = true;\n }\n }\n hide() {\n if (this.overlay) {\n this.overlay.style.display = 'none';\n this.isVisible = false;\n }\n }\n toggle() {\n if (this.isVisible) {\n this.hide();\n }\n else {\n this.show();\n }\n }\n hasErrors() {\n return this.getTotalErrorCount() > 0;\n }\n getErrorCount() {\n return this.getTotalErrorCount();\n }\n displayParserErrorOverlay(htmlContent) {\n const existingOverlay = document.querySelector('.herb-parser-error-overlay');\n if (existingOverlay) {\n existingOverlay.remove();\n }\n const container = document.createElement('div');\n container.innerHTML = htmlContent;\n const overlay = container.querySelector('.herb-parser-error-overlay');\n if (overlay) {\n document.body.appendChild(overlay);\n overlay.style.display = 'flex';\n }\n else {\n console.error('[ErrorOverlay] No parser error overlay found in HTML template');\n }\n }\n displayValidationOverlay(fragments) {\n const existingOverlay = document.querySelector('.herb-validation-overlay');\n if (existingOverlay) {\n existingOverlay.remove();\n }\n const errorsBySource = new Map();\n const errorsByFile = new Map();\n fragments.forEach(fragment => {\n const source = fragment.metadata.source;\n if (!errorsBySource.has(source)) {\n errorsBySource.set(source, []);\n }\n errorsBySource.get(source).push(fragment);\n const file = fragment.metadata.filename;\n if (!errorsByFile.has(file)) {\n errorsByFile.set(file, []);\n }\n errorsByFile.get(file).push(fragment);\n });\n const errorCount = fragments.filter(f => f.metadata.severity === 'error').reduce((sum, f) => sum + f.count, 0);\n const warningCount = fragments.filter(f => f.metadata.severity === 'warning').reduce((sum, f) => sum + f.count, 0);\n const totalCount = fragments.reduce((sum, f) => sum + f.count, 0);\n const uniqueCount = fragments.length;\n const overlayHTML = this.buildValidationOverlayHTML(fragments, errorsBySource, errorsByFile, { errorCount, warningCount, totalCount, uniqueCount });\n const overlay = document.createElement('div');\n overlay.className = 'herb-validation-overlay';\n overlay.innerHTML = overlayHTML;\n document.body.appendChild(overlay);\n this.setupValidationOverlayHandlers(overlay);\n }\n buildValidationOverlayHTML(_fragments, errorsBySource, errorsByFile, counts) {\n let title = counts.uniqueCount === 1 ? 'Validation Issue' : `Validation Issues`;\n if (counts.totalCount !== counts.uniqueCount) {\n title += ` (${counts.uniqueCount} unique, ${counts.totalCount} total)`;\n }\n else {\n title += ` (${counts.totalCount})`;\n }\n const subtitle = [];\n if (counts.errorCount > 0)\n subtitle.push(`${counts.errorCount} error${counts.errorCount !== 1 ? 's' : ''}`);\n if (counts.warningCount > 0)\n subtitle.push(`${counts.warningCount} warning${counts.warningCount !== 1 ? 's' : ''}`);\n let fileTabs = '';\n if (errorsByFile.size > 1) {\n const totalErrors = Array.from(errorsByFile.values()).reduce((sum, errors) => sum + errors.length, 0);\n fileTabs = `\n <div class=\"herb-file-tabs\">\n <button class=\"herb-file-tab active\" data-file=\"*\">\n All (${totalErrors})\n </button>\n ${Array.from(errorsByFile.entries()).map(([file, errors]) => `\n <button class=\"herb-file-tab\" data-file=\"${this.escapeAttr(file)}\">\n ${this.escapeHtml(file)} (${errors.length})\n </button>\n `).join('')}\n </div>\n `;\n }\n const contentSections = Array.from(errorsBySource.entries()).map(([source, sourceFragments]) => `\n <div class=\"herb-validator-section\" data-source=\"${this.escapeAttr(source)}\">\n <div class=\"herb-validator-header\">\n <h3>${this.escapeHtml(source.replace('Validator', ''))} Issues (${sourceFragments.length})</h3>\n </div>\n <div class=\"herb-validator-content\">\n ${sourceFragments.map(f => {\n const fileAttribute = `data-error-file=\"${this.escapeAttr(f.metadata.filename)}\"`;\n if (f.count > 1) {\n return `\n <div class=\"herb-validation-item-wrapper\" ${fileAttribute}>\n ${f.html}\n <div class=\"herb-occurrence-badge\" title=\"This error occurs ${f.count} times in the template\">\n <span class=\"herb-occurrence-icon\">⚠</span>\n <span class=\"herb-occurrence-count\">×${f.count}</span>\n </div>\n </div>\n `;\n }\n return `<div class=\"herb-validation-error-container\" ${fileAttribute}>${f.html}</div>`;\n }).join('')}\n </div>\n </div>\n `).join('');\n return `\n <style>${this.getValidationOverlayStyles()}</style>\n <div class=\"herb-validation-container\">\n <div class=\"herb-validation-header\">\n <div class=\"herb-validation-header-content\">\n <div class=\"herb-validation-title\">\n <span class=\"herb-validation-icon\">⚠️</span>\n ${title}\n </div>\n <div class=\"herb-validation-subtitle\">${subtitle.join(', ')}</div>\n </div>\n <button class=\"herb-close-button\" title=\"Close (Esc)\">×</button>\n </div>\n ${fileTabs}\n <div class=\"herb-validation-content\">\n ${contentSections}\n </div>\n <div class=\"herb-dismiss-hint\" style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 12px;\">\n Click outside, press <kbd style=\"display: inline-block; padding: 2px 6px; font-family: monospace; font-size: 0.9em; color: #333; background: #f7f7f7; border: 1px solid #ccc; border-radius: 4px; box-shadow: 0 2px 0 #ccc, 0 2px 3px rgba(0,0,0,0.2) inset;\">Esc</kbd> key, or fix the code to dismiss.<br>\n\n You can also disable this overlay by passing <code style=\"color: #ffeb3b; font-family: monospace; font-size: 12pt;\">validation_mode: :none</code> to <code style=\"color: #ffeb3b; font-family: monospace; font-size: 12pt;\">Herb::Engine</code>.\n </div>\n </div>\n `;\n }\n getValidationOverlayStyles() {\n return `\n .herb-validation-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n backdrop-filter: blur(4px);\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;\n color: #e5e5e5;\n line-height: 1.6;\n }\n\n .herb-validation-container {\n background: #000000;\n border: 1px solid #374151;\n border-radius: 12px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n max-width: 1200px;\n max-height: 80vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .herb-validation-header {\n background: linear-gradient(135deg, #f59e0b, #d97706);\n padding: 20px 24px;\n border-bottom: 1px solid #374151;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n }\n\n .herb-validation-title {\n font-size: 18px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .herb-validation-subtitle {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.9);\n margin-top: 4px;\n }\n\n .herb-file-tabs {\n background: #1a1a1a;\n border-bottom: 1px solid #374151;\n padding: 0;\n display: flex;\n overflow-x: auto;\n }\n\n .herb-file-tab {\n background: transparent;\n border: none;\n color: #9ca3af;\n padding: 12px 20px;\n cursor: pointer;\n font-size: 13px;\n white-space: nowrap;\n transition: all 0.2s;\n border-bottom: 2px solid transparent;\n }\n\n .herb-file-tab:hover {\n background: #262626;\n color: #e5e5e5;\n }\n\n .herb-file-tab.active {\n color: #f59e0b;\n border-bottom-color: #f59e0b;\n background: #262626;\n }\n\n .herb-validation-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n display: flex;\n flex-direction: column;\n gap: 24px;\n }\n\n .herb-validator-section {\n background: #0f0f0f;\n border: 1px solid #2d2d2d;\n border-radius: 8px;\n }\n\n .herb-validator-header {\n background: #1a1a1a;\n padding: 12px 16px;\n border-bottom: 1px solid #2d2d2d;\n }\n\n .herb-validator-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 500;\n color: #e5e5e5;\n }\n\n .herb-validator-content {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .herb-validation-item {\n border-left: 3px solid #4a4a4a;\n padding-left: 16px;\n }\n\n .herb-validation-item[data-severity=\"error\"] {\n border-left-color: #7f1d1d;\n }\n\n .herb-validation-item[data-severity=\"warning\"] {\n border-left-color: #78350f;\n }\n\n .herb-validation-item[data-severity=\"info\"] {\n border-left-color: #1e3a8a;\n }\n\n .herb-validation-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n }\n\n .herb-validation-badge {\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n text-transform: uppercase;\n }\n\n .herb-validation-location {\n font-size: 12px;\n color: #9ca3af;\n }\n\n .herb-validation-message {\n font-size: 14px;\n margin-bottom: 12px;\n line-height: 1.5;\n }\n\n .herb-code-snippet {\n background: #1a1a1a;\n border: 1px solid #2d2d2d;\n border-radius: 4px;\n padding: 12px;\n overflow-x: auto;\n }\n\n .herb-code-line {\n display: flex;\n align-items: flex-start;\n min-height: 20px;\n font-size: 13px;\n line-height: 1.5;\n }\n\n .herb-line-number {\n color: #6b7280;\n width: 40px;\n text-align: right;\n padding-right: 16px;\n user-select: none;\n flex-shrink: 0;\n }\n\n .herb-line-content {\n flex: 1;\n white-space: pre;\n font-family: inherit;\n }\n\n .herb-error-line {\n background: rgba(220, 38, 38, 0.1);\n }\n\n .herb-error-line .herb-line-number {\n color: #dc2626;\n font-weight: 600;\n }\n\n .herb-error-pointer {\n color: #dc2626;\n font-weight: bold;\n margin-left: 56px;\n font-size: 12px;\n }\n\n .herb-validation-suggestion {\n background: #1e3a1e;\n border: 1px solid #10b981;\n border-radius: 4px;\n padding: 8px 12px;\n margin-top: 8px;\n font-size: 13px;\n color: #10b981;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .herb-validation-item-wrapper,\n .herb-validation-error-container {\n position: relative;\n }\n\n .herb-validation-error-container.hidden,\n .herb-validation-item-wrapper.hidden,\n .herb-validator-section.hidden {\n display: none;\n }\n\n .herb-occurrence-badge {\n position: absolute;\n top: 8px;\n right: 8px;\n background: #dc2626;\n color: white;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 4px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n .herb-occurrence-icon {\n font-size: 10px;\n }\n\n .herb-occurrence-count {\n font-weight: bold;\n }\n\n .herb-close-button {\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.2);\n color: white;\n width: 32px;\n height: 32px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n font-size: 16px;\n transition: all 0.2s;\n }\n\n .herb-close-button:hover {\n background: rgba(255, 255, 255, 0.2);\n border-color: rgba(255, 255, 255, 0.3);\n }\n\n /* Syntax highlighting */\n .herb-erb { color: #61dafb; }\n .herb-erb-content { color: #c678dd; }\n .herb-tag { color: #e06c75; }\n .herb-attr { color: #d19a66; }\n .herb-value { color: #98c379; }\n .herb-comment { color: #5c6370; font-style: italic; }\n `;\n }\n setupValidationOverlayHandlers(overlay) {\n const closeBtn = overlay.querySelector('.herb-close-button');\n if (closeBtn) {\n closeBtn.addEventListener('click', () => overlay.remove());\n }\n overlay.addEventListener('click', (e) => {\n if (e.target === overlay) {\n overlay.remove();\n }\n });\n const escHandler = (e) => {\n if (e.key === 'Escape') {\n overlay.remove();\n document.removeEventListener('keydown', escHandler);\n }\n };\n document.addEventListener('keydown', escHandler);\n const fileTabs = overlay.querySelectorAll('.herb-file-tab');\n fileTabs.forEach(tab => {\n tab.addEventListener('click', () => {\n const selectedFile = tab.getAttribute('data-file');\n fileTabs.forEach(t => t.classList.remove('active'));\n tab.classList.add('active');\n const errorContainers = overlay.querySelectorAll('[data-error-file]');\n const validatorSections = overlay.querySelectorAll('.herb-validator-section');\n errorContainers.forEach(container => {\n const containerFile = container.getAttribute('data-error-file');\n if (selectedFile === '*' || containerFile === selectedFile) {\n container.classList.remove('hidden');\n }\n else {\n container.classList.add('hidden');\n }\n });\n validatorSections.forEach(section => {\n const sectionContent = section.querySelector('.herb-validator-content');\n const visibleErrors = sectionContent?.querySelectorAll('[data-error-file]:not(.hidden)').length || 0;\n const header = section.querySelector('h3');\n const source = section.getAttribute('data-source')?.replace('Validator', '') || 'Unknown';\n if (header) {\n header.textContent = `${source} Issues (${visibleErrors})`;\n }\n if (visibleErrors === 0) {\n section.classList.add('hidden');\n }\n else {\n section.classList.remove('hidden');\n }\n });\n });\n });\n }\n escapeAttr(text) {\n return this.escapeHtml(text).replace(/\"/g, '&quot;');\n }\n}\n\nclass HerbOverlay {\n constructor(options = {}) {\n this.options = options;\n this.showingERB = false;\n this.showingERBOutlines = false;\n this.showingERBHoverReveal = false;\n this.showingTooltips = true;\n this.showingViewOutlines = false;\n this.showingPartialOutlines = false;\n this.showingComponentOutlines = false;\n this.menuOpen = false;\n this.projectPath = '';\n this.currentlyHoveredERBElement = null;\n this.errorOverlay = null;\n this.handleRevealedERBClick = (event) => {\n event.stopPropagation();\n event.preventDefault();\n const element = event.currentTarget;\n if (!element)\n return;\n const fullPath = element.getAttribute('data-herb-debug-file-full-path');\n const line = element.getAttribute('data-herb-debug-line');\n const column = element.getAttribute('data-herb-debug-column');\n if (fullPath) {\n this.openFileInEditor(fullPath, line ? parseInt(line) : 1, column ? parseInt(column) : 1);\n }\n };\n if (options.autoInit !== false) {\n this.init();\n }\n }\n init() {\n this.loadProjectPath();\n this.loadSettings();\n this.injectMenu();\n this.setupMenuToggle();\n this.setupToggleSwitches();\n this.initializeErrorOverlay();\n this.setupTurboListeners();\n this.applySettings();\n }\n loadProjectPath() {\n if (this.options.projectPath) {\n this.projectPath = this.options.projectPath;\n return;\n }\n const metaTag = document.querySelector('meta[name=\"herb-project-path\"]');\n if (metaTag?.content) {\n this.projectPath = metaTag.content;\n }\n }\n loadSettings() {\n const savedSettings = localStorage.getItem(HerbOverlay.SETTINGS_KEY);\n if (savedSettings) {\n try {\n const settings = JSON.parse(savedSettings);\n this.showingERB = settings.showingERB || false;\n this.showingERBOutlines = settings.showingERBOutlines || false;\n this.showingERBHoverReveal = settings.showingERBHoverReveal || false;\n this.showingTooltips = settings.showingTooltips !== undefined ? settings.showingTooltips : true;\n this.showingViewOutlines = settings.showingViewOutlines || false;\n this.showingPartialOutlines = settings.showingPartialOutlines || false;\n this.showingComponentOutlines = settings.showingComponentOutlines || false;\n this.menuOpen = settings.menuOpen || false;\n }\n catch (e) {\n console.warn('Failed to load Herb dev tools settings:', e);\n }\n }\n }\n saveSettings() {\n const settings = {\n showingERB: this.showingERB,\n showingERBOutlines: this.showingERBOutlines,\n showingERBHoverReveal: this.showingERBHoverReveal,\n showingTooltips: this.showingTooltips,\n showingViewOutlines: this.showingViewOutlines,\n showingPartialOutlines: this.showingPartialOutlines,\n showingComponentOutlines: this.showingComponentOutlines,\n menuOpen: this.menuOpen\n };\n localStorage.setItem(HerbOverlay.SETTINGS_KEY, JSON.stringify(settings));\n this.updateMenuButtonState();\n }\n updateMenuButtonState() {\n const menuTrigger = document.getElementById('herbMenuTrigger');\n if (menuTrigger) {\n const hasActiveOptions = this.showingERB || this.showingERBOutlines || this.showingViewOutlines || this.showingPartialOutlines || this.showingComponentOutlines;\n if (hasActiveOptions) {\n menuTrigger.classList.add('has-active-options');\n }\n else {\n menuTrigger.classList.remove('has-active-options');\n }\n }\n }\n injectMenu() {\n const existingMenu = document.querySelector('.herb-floating-menu');\n if (existingMenu) {\n return;\n }\n const menuHTML = `\n <div class=\"herb-floating-menu\">\n <button class=\"herb-menu-trigger\" id=\"herbMenuTrigger\">\n <span class=\"herb-icon\">🌿</span>\n <span class=\"herb-text\">Herb</span>\n </button>\n\n <div class=\"herb-menu-panel\" id=\"herbMenuPanel\">\n <div class=\"herb-menu-header\">Herb Debug Tools</div>\n\n <div class=\"herb-toggle-item\">\n <label class=\"herb-toggle-label\">\n <input type=\"checkbox\" id=\"herbToggleViewOutlines\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch\"></span>\n <span class=\"herb-toggle-text\">Show View Outlines</span>\n </label>\n </div>\n\n <div class=\"herb-toggle-item\">\n <label class=\"herb-toggle-label\">\n <input type=\"checkbox\" id=\"herbTogglePartialOutlines\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch\"></span>\n <span class=\"herb-toggle-text\">Show Partial Outlines</span>\n </label>\n </div>\n\n <div class=\"herb-toggle-item\">\n <label class=\"herb-toggle-label\">\n <input type=\"checkbox\" id=\"herbToggleComponentOutlines\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch\"></span>\n <span class=\"herb-toggle-text\">Show Component Outlines</span>\n </label>\n </div>\n\n <div class=\"herb-toggle-item\">\n <label class=\"herb-toggle-label\">\n <input type=\"checkbox\" id=\"herbToggleERBOutlines\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch\"></span>\n <span class=\"herb-toggle-text\">Show ERB Output Outlines</span>\n </label>\n\n <div class=\"herb-nested-toggle\" id=\"herbERBHoverRevealNested\" style=\"display: none;\">\n <label class=\"herb-toggle-label herb-nested-label\">\n <input type=\"checkbox\" id=\"herbToggleERBHoverReveal\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch herb-nested-switch\"></span>\n <span class=\"herb-toggle-text\">Reveal ERB Output tag on hover</span>\n </label>\n </div>\n\n <div class=\"herb-nested-toggle\" id=\"herbTooltipsNested\" style=\"display: none;\">\n <label class=\"herb-toggle-label herb-nested-label\">\n <input type=\"checkbox\" id=\"herbToggleTooltips\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch herb-nested-switch\"></span>\n <span class=\"herb-toggle-text\">Show Tooltips</span>\n </label>\n </div>\n </div>\n\n <div class=\"herb-toggle-item\">\n <label class=\"herb-toggle-label\">\n <input type=\"checkbox\" id=\"herbToggleERB\" class=\"herb-toggle-input\">\n <span class=\"herb-toggle-switch\"></span>\n <span class=\"herb-toggle-text\">Show ERB Output Tags</span>\n </label>\n </div>\n\n <div class=\"herb-disable-all-section\">\n <button id=\"herbDisableAll\" class=\"herb-disable-all-btn\">Disable All</button>\n </div>\n </div>\n </div>\n `;\n document.body.insertAdjacentHTML('beforeend', menuHTML);\n }\n applySettings() {\n this.toggleViewOutlines(this.showingViewOutlines);\n this.togglePartialOutlines(this.showingPartialOutlines);\n this.toggleComponentOutlines(this.showingComponentOutlines);\n this.toggleERBTags(this.showingERB);\n this.toggleERBOutlines(this.showingERBOutlines);\n const menuTrigger = document.getElementById('herbMenuTrigger');\n const menuPanel = document.getElementById('herbMenuPanel');\n if (menuTrigger && menuPanel && this.menuOpen) {\n menuTrigger.classList.add('active');\n menuPanel.classList.add('open');\n }\n }\n setupMenuToggle() {\n const menuTrigger = document.getElementById('herbMenuTrigger');\n const menuPanel = document.getElementById('herbMenuPanel');\n if (menuTrigger && menuPanel) {\n menuTrigger.addEventListener('click', () => {\n this.menuOpen = !this.menuOpen;\n if (this.menuOpen) {\n menuTrigger.classList.add('active');\n menuPanel.classList.add('open');\n }\n else {\n menuTrigger.classList.remove('active');\n menuPanel.classList.remove('open');\n }\n this.saveSettings();\n });\n document.addEventListener('click', (e) => {\n const target = e.target;\n const floatingMenu = document.querySelector('.herb-floating-menu');\n if (floatingMenu && !floatingMenu.contains(target) && this.menuOpen) {\n this.menuOpen = false;\n menuTrigger.classList.remove('active');\n menuPanel.classList.remove('open');\n this.saveSettings();\n }\n });\n }\n }\n setupTurboListeners() {\n document.addEventListener('turbo:load', () => {\n this.reinitializeAfterNavigation();\n });\n document.addEventListener('turbo:render', () => {\n this.reinitializeAfterNavigation();\n });\n document.addEventListener('turbo:visit', () => {\n this.reinitializeAfterNavigation();\n });\n }\n reinitializeAfterNavigation() {\n this.injectMenu();\n this.setupMenuToggle();\n this.setupToggleSwitches();\n this.applySettings();\n this.updateMenuButtonState();\n }\n setupToggleSwitches() {\n const toggleViewOutlinesSwitch = document.getElementById('herbToggleViewOutlines');\n if (toggleViewOutlinesSwitch) {\n toggleViewOutlinesSwitch.checked = this.showingViewOutlines;\n toggleViewOutlinesSwitch.addEventListener('change', () => {\n this.toggleViewOutlines(toggleViewOutlinesSwitch.checked);\n });\n }\n const togglePartialOutlinesSwitch = document.getElementById('herbTogglePartialOutlines');\n if (togglePartialOutlinesSwitch) {\n togglePartialOutlinesSwitch.checked = this.showingPartialOutlines;\n togglePartialOutlinesSwitch.addEventListener('change', () => {\n this.togglePartialOutlines(togglePartialOutlinesSwitch.checked);\n });\n }\n const toggleComponentOutlinesSwitch = document.getElementById('herbToggleComponentOutlines');\n if (toggleComponentOutlinesSwitch) {\n toggleComponentOutlinesSwitch.checked = this.showingComponentOutlines;\n toggleComponentOutlinesSwitch.addEventListener('change', () => {\n this.toggleComponentOutlines(toggleComponentOutlinesSwitch.checked);\n });\n }\n const toggleERBSwitch = document.getElementById('herbToggleERB');\n const toggleERBOutlinesSwitch = document.getElementById('herbToggleERBOutlines');\n if (toggleERBSwitch) {\n toggleERBSwitch.checked = this.showingERB;\n toggleERBSwitch.addEventListener('change', () => {\n if (toggleERBSwitch.checked && toggleERBOutlinesSwitch) {\n toggleERBOutlinesSwitch.checked = false;\n this.toggleERBOutlines(false);\n }\n this.toggleERBTags(toggleERBSwitch.checked);\n });\n }\n if (toggleERBOutlinesSwitch) {\n toggleERBOutlinesSwitch.checked = this.showingERBOutlines;\n toggleERBOutlinesSwitch.addEventListener('change', () => {\n if (toggleERBOutlinesSwitch.checked && toggleERBSwitch) {\n toggleERBSwitch.checked = false;\n this.toggleERBTags(false);\n }\n this.toggleERBOutlines(toggleERBOutlinesSwitch.checked);\n this.updateNestedToggleVisibility();\n });\n }\n else {\n console.warn('ERB outlines toggle switch not found');\n }\n const toggleERBHoverRevealSwitch = document.getElementById('herbToggleERBHoverReveal');\n if (toggleERBHoverRevealSwitch) {\n toggleERBHoverRevealSwitch.checked = this.showingERBHoverReveal;\n toggleERBHoverRevealSwitch.addEventListener('change', () => {\n this.toggleERBHoverReveal(toggleERBHoverRevealSwitch.checked);\n });\n }\n const toggleTooltipsSwitch = document.getElementById('herbToggleTooltips');\n if (toggleTooltipsSwitch) {\n toggleTooltipsSwitch.checked = this.showingTooltips;\n toggleTooltipsSwitch.addEventListener('change', () => {\n this.toggleTooltips(toggleTooltipsSwitch.checked);\n });\n }\n this.updateNestedToggleVisibility();\n const disableAllBtn = document.getElementById('herbDisableAll');\n if (disableAllBtn) {\n disableAllBtn.addEventListener('click', () => {\n this.disableAll();\n });\n }\n }\n toggleViewOutlines(show) {\n this.showingViewOutlines = show !== undefined ? show : !this.showingViewOutlines;\n const viewOutlines = document.querySelectorAll('[data-herb-debug-outline-type=\"view\"], [data-herb-debug-outline-type*=\"view\"]');\n viewOutlines.forEach((outline) => {\n const element = outline;\n if (this.showingViewOutlines) {\n element.style.outline = '2px dotted #3b82f6';\n element.style.outlineOffset = element.tagName.toLowerCase() === 'html' ? '-2px' : '2px';\n element.classList.add('show-outline');\n this.createOverlayLabel(element, 'view');\n }\n else {\n element.style.outline = 'none';\n element.style.outlineOffset = '0';\n element.classList.remove('show-outline');\n this.removeOverlayLabel(element);\n }\n });\n this.saveSettings();\n }\n togglePartialOutlines(show) {\n this.showingPartialOutlines = show !== undefined ? show : !this.showingPartialOutlines;\n const partialOutlines = document.querySelectorAll('[data-herb-debug-outline-type=\"partial\"], [data-herb-debug-outline-type*=\"partial\"]');\n partialOutlines.forEach((outline) => {\n const element = outline;\n if (this.showingPartialOutlines) {\n element.style.outline = '2px dotted #10b981';\n element.style.outlineOffset = element.tagName.toLowerCase() === 'html' ? '-2px' : '2px';\n element.classList.add('show-outline');\n this.createOverlayLabel(element, 'partial');\n }\n else {\n element.style.outline = 'none';\n element.style.outlineOffset = '0';\n element.classList.remove('show-outline');\n this.removeOverlayLabel(element);\n }\n });\n this.saveSettings();\n }\n toggleComponentOutlines(show) {\n this.showingComponentOutlines = show !== undefined ? show : !this.showingComponentOutlines;\n const componentOutlines = document.querySelectorAll('[data-herb-debug-outline-type=\"component\"], [data-herb-debug-outline-type*=\"component\"]');\n componentOutlines.forEach((outline) => {\n const element = outline;\n if (this.showingComponentOutlines) {\n element.style.outline = '2px dotted #f59e0b';\n element.style.outlineOffset = element.tagName.toLowerCase() === 'html' ? '-2px' : '2px';\n element.classList.add('show-outline');\n this.createOverlayLabel(element, 'component');\n }\n else {\n element.style.outline = 'none';\n element.style.outlineOffset = '0';\n element.classList.remove('show-outline');\n this.removeOverlayLabel(element);\n }\n });\n this.saveSettings();\n }\n createOverlayLabel(element, type) {\n if (element.querySelector('.herb-overlay-label')) {\n return;\n }\n const shortName = element.getAttribute('data-herb-debug-file-name') || '';\n const relativePath = element.getAttribute('data-herb-debug-file-relative-path') || shortName;\n const fullPath = element.getAttribute('data-herb-debug-file-full-path') || relativePath;\n const label = document.createElement('div');\n label.className = 'herb-overlay-label';\n label.textContent = shortName;\n label.setAttribute('data-label-setup', 'true');\n label.addEventListener('mouseenter', () => {\n label.textContent = relativePath;\n document.querySelectorAll('.herb-overlay-label').forEach(otherLabel => {\n otherLabel.style.zIndex = '1000';\n });\n label.style.zIndex = '1002';\n });\n label.addEventListener('mouseleave', () => {\n label.textContent = shortName;\n label.style.zIndex = '1000';\n });\n label.addEventListener('click', (e) => {\n e.stopPropagation();\n this.openFileInEditor(fullPath, 1, 1);\n });\n const shouldAttachToParent = element.getAttribute('data-herb-debug-attach-to-parent') === 'true';\n if (shouldAttachToParent && element.parentElement) {\n const parent = element.parentElement;\n element.style.outline = 'none';\n element.classList.remove('show-outline');\n const outlineColor = type === 'component' ? '#f59e0b' : type === 'partial' ? '#10b981' : '#3b82f6';\n parent.style.outline = `2px dotted ${outlineColor}`;\n parent.style.outlineOffset = parent.tagName.toLowerCase() === 'html' ? '-2px' : '2px';\n parent.classList.add('show-outline');\n parent.setAttribute('data-herb-debug-attached-outline-type', type);\n parent.style.position = 'relative';\n label.style.position = 'absolute';\n label.style.top = '0';\n label.style.left = '0';\n parent.appendChild(label);\n return;\n }\n element.style.position = 'relative';\n element.appendChild(label);\n }\n removeOverlayLabel(element) {\n const shouldAttachToParent = element.getAttribute('data-herb-debug-attach-to-parent') === 'true';\n if (shouldAttachToParent && element.parentElement) {\n const parent = element.parentElement;\n const label = parent.querySelector('.herb-overlay-label');\n if (label) {\n label.remove();\n }\n parent.style.outline = 'none';\n parent.style.outlineOffset = '0';\n parent.classList.remove('show-outline');\n parent.removeAttribute('data-herb-debug-attached-outline-type');\n }\n else {\n const label = element.querySelector('.herb-overlay-label');\n if (label) {\n label.remove();\n }\n }\n }\n resetShowingERB() {\n const elements = document.querySelectorAll('[data-herb-debug-showing-erb');\n elements.forEach(element => {\n const originalContent = element.getAttribute('data-herb-debug-original') || \"\";\n element.innerHTML = originalContent;\n element.removeAttribute(\"data-herb-debug-showing-erb\");\n });\n }\n toggleERBTags(show) {\n this.showingERB = show !== undefined ? show : !this.showingERB;\n const erbOutputs = document.querySelectorAll('[data-herb-debug-outline-type*=\"erb-output\"]');\n erbOutputs.forEach((element) => {\n const erbCode = element.getAttribute('data-herb-debug-erb');\n if (this.showingERB && erbCode) {\n // this.resetShowingERB()\n if (!element.hasAttribute('data-herb-debug-original')) {\n element.setAttribute('data-herb-debug-original', element.innerHTML);\n }\n element.textContent = erbCode;\n element.setAttribute(\"data-herb-debug-showing-erb\", \"true\");\n element.style.background = '#f3e8ff';\n element.style.color = '#7c3aed';\n if (this.showingTooltips) {\n this.addTooltipHoverHandler(element);\n }\n }\n else {\n const originalContent = element.getAttribute('data-herb-debug-original') || \"\";\n if (element && element.hasAttribute(\"data-herb-debug-showing-erb\")) {\n element.innerHTML = originalContent;\n element.removeAttribute(\"data-herb-debug-showing-erb\");\n }\n element.style.background = 'transparent';\n element.style.color = 'inherit';\n this.removeTooltipHoverHandler(element);\n this.removeHoverTooltip(element);\n }\n });\n this.saveSettings();\n }\n toggleERBOutlines(show) {\n this.showingERBOutlines = show !== undefined ? show : !this.showingERBOutlines;\n this.clearCurrentHoveredERB();\n const erbOutputs = document.querySelectorAll('[data-herb-debug-outline-type*=\"erb-output\"]');\n erbOutputs.forEach(element => {\n const inserted = element.hasAttribute(\"data-herb-debug-inserted\");\n const needsWrapperToggled = (inserted && !element.children[0]);\n const realElement = element.children[0] || element;\n if (this.showingERBOutlines) {\n realElement.style.outline = '2px dotted #a78bfa';\n realElement.style.outlineOffset = '1px';\n if (needsWrapperToggled) {\n element.style.display = 'inline';\n }\n if (this.showingTooltips) {\n this.addTooltipHoverHandler(element);\n }\n if (this.showingERBHoverReveal) {\n this.addERBHoverReveal(element);\n }\n }\n else {\n realElement.style.outline = 'none';\n realElement.style.outlineOffset = '0';\n if (needsWrapperToggled) {\n element.style.display = 'contents';\n }\n this.removeTooltipHoverHandler(element);\n this.removeHoverTooltip(element);\n this.removeERBHoverReveal(element);\n }\n });\n this.saveSettings();\n }\n updateNestedToggleVisibility() {\n const nestedToggle = document.getElementById('herbERBHoverRevealNested');\n const tooltipsNestedToggle = document.getElementById('herbTooltipsNested');\n if (nestedToggle) {\n nestedToggle.style.display = this.showingERBOutlines ? 'block' : 'none';\n }\n if (tooltipsNestedToggle) {\n tooltipsNestedToggle.style.display = this.showingERBOutlines ? 'block' : 'none';\n }\n }\n toggleERBHoverReveal(show) {\n this.showingERBHoverReveal = show !== undefined ? show : !this.showingERBHoverReveal;\n if (this.showingERBHoverReveal && this.showingTooltips) {\n this.toggleTooltips(false);\n const toggleTooltipsSwitch = document.getElementById('herbToggleTooltips');\n if (toggleTooltipsSwitch) {\n toggleTooltipsSwitch.checked = false;\n }\n }\n this.clearCurrentHoveredERB();\n const erbOutputs = document.querySelectorAll('[data-herb-debug-outline-type*=\"erb-output\"]');\n erbOutputs.forEach((el) => {\n const element = el;\n this.removeERBHoverReveal(element);\n if (this.showingERBHoverReveal && this.showingERBOutlines) {\n this.addERBHoverReveal(element);\n }\n });\n this.saveSettings();\n }\n clearCurrentHoveredERB() {\n if (this.currentlyHoveredERBElement) {\n const handlers = this.currentlyHoveredERBElement._erbHoverHandlers;\n if (handlers) {\n handlers.hideERBCode();\n }\n this.currentlyHoveredERBElement = null;\n }\n }\n addERBHoverReveal(element) {\n const erbCode = element.getAttribute('data-herb-debug-erb');\n if (!erbCode)\n return;\n this.removeERBHoverReveal(element);\n if (!element.hasAttribute('data-herb-debug-original')) {\n element.setAttribute('data-herb-debug-original', element.innerHTML);\n }\n const showERBCode = () => {\n if (!this.showingERBHoverReveal || !this.showingERBOutlines) {\n return;\n }\n if (this.currentlyHoveredERBElement === element) {\n return;\n }\n this.clearCurrentHoveredERB();\n this.currentlyHoveredERBElement = element;\n element.style.background = '#f3e8ff';\n element.style.color = '#7c3aed';\n element.style.fontFamily = 'inherit';\n element.style.fontSize = 'inherit';\n element.style.borderRadius = '3px';\n element.style.cursor = 'pointer';\n element.textContent = erbCode;\n element.addEventListener('click', this.handleRevealedERBClick);\n };\n const hideERBCode = () => {\n if (this.currentlyHoveredERBElement === element) {\n this.currentlyHoveredERBElement = null;\n }\n const originalContent = element.getAttribute('data-herb-debug-original');\n if (originalContent) {\n element.innerHTML = originalContent;\n }\n element.style.background = 'transparent';\n element.style.color = 'inherit';\n element.style.fontFamily = 'inherit';\n element.style.fontSize = 'inherit';\n element.style.borderRadius = '0';\n element.style.cursor = 'default';\n element.removeEventListener('click', this.handleRevealedERBClick);\n };\n element._erbHoverHandlers = { showERBCode, hideERBCode };\n element.addEventListener('mouseenter', showERBCode);\n }\n removeERBHoverReveal(element) {\n const handlers = element._erbHoverHandlers;\n if (handlers) {\n element.removeEventListener('mouseenter', handlers.showERBCode);\n delete element._erbHoverHandlers;\n handlers.hideERBCode();\n }\n }\n createHoverTooltip(element, elementForPosition) {\n this.removeHoverTooltip(element);\n const relativePath = element.getAttribute('data-herb-debug-file-relative-path') || element.getAttribute('data-herb-debug-file-name') || '';\n const fullPath = element.getAttribute('data-herb-debug-file-full-path') || relativePath;\n const line = element.getAttribute('data-herb-debug-line') || '';\n const column = element.getAttribute('data-herb-debug-column') || '';\n const erb = element.getAttribute('data-herb-debug-erb') || '';\n if (!relativePath || !erb)\n return;\n const tooltip = document.createElement('div');\n tooltip.className = 'herb-tooltip';\n tooltip.innerHTML = `\n <div class=\"herb-location\" data-tooltip=\"Open in Editor\">\n <span class=\"herb-file-path\">${relativePath}:${line}:${column}</span>\n <button class=\"herb-copy-path-btn\" data-tooltip=\"Copy file path\">📋</button>\n </div>\n <div class=\"herb-erb-code\">${erb}</div>\n `;\n let hideTimeout = null;\n const showTooltip = () => {\n if (hideTimeout) {\n clearTimeout(hideTimeout);\n hideTimeout = null;\n }\n tooltip.classList.add('visible');\n };\n const hideTooltip = () => {\n hideTimeout = window.setTimeout(() => {\n tooltip.classList.remove('visible');\n }, 100);\n };\n element.addEventListener('mouseenter', showTooltip);\n element.addEventListener('mouseleave', hideTooltip);\n tooltip.addEventListener('mouseenter', showTooltip);\n tooltip.addEventListener('mouseleave', hideTooltip);\n const locationElement = tooltip.querySelector('.herb-location');\n const openInEditor = (e) => {\n if (e.target.closest('.herb-copy-path-btn')) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.openFileInEditor(fullPath, parseInt(line), parseInt(column));\n };\n locationElement?.addEventListener('click', openInEditor);\n const copyButton = tooltip.querySelector('.herb-copy-path-btn');\n const copyFilePath = (e) => {\n e.preventDefault();\n e.stopPropagation();\n const textToCopy = `${relativePath}:${line}:${column}`;\n navigator.clipboard.writeText(textToCopy).then(() => {\n copyButton.textContent = '✅';\n setTimeout(() => {\n copyButton.textContent = '📋';\n }, 1000);\n }).catch((err) => {\n console.error('Failed to copy file path:', err);\n });\n };\n copyButton?.addEventListener('click', copyFilePath);\n const positionTooltip = () => {\n const elementRect = elementForPosition.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n tooltip.style.position = 'fixed';\n tooltip.style.left = '0';\n tooltip.style.top = '0';\n tooltip.style.transform = 'none';\n tooltip.style.bottom = 'auto';\n const actualTooltipRect = tooltip.getBoundingClientRect();\n const tooltipWidth = actualTooltipRect.width;\n const tooltipHeight = actualTooltipRect.height;\n let left = elementRect.left + (elementRect.width / 2) - (tooltipWidth / 2);\n let top = elementRect.top - tooltipHeight - 8;\n if (left < 8) {\n left = 8;\n }\n else if (left + tooltipWidth > viewportWidth - 8) {\n left = viewportWidth - tooltipWidth - 8;\n }\n if (top < 8) {\n top = elementRect.bottom + 8;\n if (top + tooltipHeight > viewportHeight - 8) {\n top = Math.max(8, (viewportHeight - tooltipHeight) / 2);\n }\n }\n if (top + tooltipHeight > viewportHeight - 8) {\n top = viewportHeight - tooltipHeight - 8;\n }\n tooltip.style.position = 'fixed';\n tooltip.style.left = `${left}px`;\n tooltip.style.top = `${top}px`;\n tooltip.style.transform = 'none';\n tooltip.style.bottom = 'auto';\n };\n element._tooltipHandlers = { showTooltip, hideTooltip, openInEditor, copyFilePath, positionTooltip };\n tooltip._tooltipHandlers = { showTooltip, hideTooltip };\n element.appendChild(tooltip);\n setTimeout(positionTooltip, 0);\n window.addEventListener('scroll', positionTooltip, { passive: true });\n window.addEventListener('resize', positionTooltip, { passive: true });\n }\n removeHoverTooltip(element) {\n const tooltip = element.querySelector('.herb-tooltip');\n if (tooltip) {\n const handlers = element._tooltipHandlers;\n const tooltipHandlers = tooltip._tooltipHandlers;\n if (handlers) {\n element.removeEventListener('mouseenter', handlers.showTooltip);\n element.removeEventListener('mouseleave', handlers.hideTooltip);\n const locationElement = tooltip.querySelector('.herb-location');\n locationElement?.removeEventListener('click', handlers.openInEditor);\n const copyButton = tooltip.querySelector('.herb-copy-path-btn');\n copyButton?.removeEventListener('click', handlers.copyFilePath);\n if (handlers.positionTooltip) {\n window.removeEventListener('scroll', handlers.positionTooltip);\n window.removeEventListener('resize', handlers.positionTooltip);\n }\n delete element._tooltipHandlers;\n }\n if (tooltipHandlers) {\n tooltip.removeEventListener('mouseenter', tooltipHandlers.showTooltip);\n tooltip.removeEventListener('mouseleave', tooltipHandlers.hideTooltip);\n delete tooltip._tooltipHandlers;\n }\n tooltip.remove();\n }\n }\n addTooltipHoverHandler(element) {\n this.removeTooltipHoverHandler(element);\n const lazyTooltipHandler = () => {\n if (!this.showingTooltips || !this.showingERBOutlines) {\n return;\n }\n if (element.querySelector('.herb-tooltip')) {\n return;\n }\n this.createHoverTooltip(element, element);\n };\n element._lazyTooltipHandler = lazyTooltipHandler;\n element.addEventListener('mouseenter', lazyTooltipHandler);\n }\n removeTooltipHoverHandler(element) {\n const handler = element._lazyTooltipHandler;\n if (handler) {\n element.removeEventListener('mouseenter', handler);\n delete element._lazyTooltipHandler;\n }\n }\n openFileInEditor(file, line, column) {\n const absolutePath = file.startsWith('/') ? file : (this.projectPath ? `${this.projectPath}/${file}` : file);\n const editors = [\n `cursor://file/${absolutePath}:${line}:${column}`,\n `vscode://file/${absolutePath}:${line}:${column}`,\n `zed://file/${absolutePath}:${line}:${column}`,\n `subl://open?url=file://${absolutePath}&line=${line}&column=${column}`,\n `atom://core/open/file?filename=${absolutePath}&line=${line}&column=${column}`,\n `txmt://open?url=file://${absolutePath}&line=${line}&column=${column}`,\n `x-mine://open?file=//${absolutePath}&line=${line}&column=${column}`,\n ];\n try {\n window.open(editors[0], '_self');\n }\n catch (error) {\n console.log(`Open in editor: ${absolutePath}:${line}:${column}`);\n }\n }\n toggleTooltips(show) {\n this.showingTooltips = show !== undefined ? show : !this.showingTooltips;\n if (this.showingTooltips && this.showingERBHoverReveal) {\n this.toggleERBHoverReveal(false);\n const toggleERBHoverRevealSwitch = document.getElementById('herbToggleERBHoverReveal');\n if (toggleERBHoverRevealSwitch) {\n toggleERBHoverRevealSwitch.checked = false;\n }\n }\n const erbOutputs = document.querySelectorAll('[data-herb-debug-outline-type*=\"erb-output\"]');\n erbOutputs.forEach((element) => {\n if (this.showingERBOutlines && this.showingTooltips) {\n this.addTooltipHoverHandler(element);\n }\n else {\n this.removeTooltipHoverHandler(element);\n this.removeHoverTooltip(element);\n }\n });\n this.saveSettings();\n }\n disableAll() {\n this.clearCurrentHoveredERB();\n this.toggleViewOutlines(false);\n this.togglePartialOutlines(false);\n this.toggleComponentOutlines(false);\n this.toggleERBTags(false);\n this.toggleERBOutlines(false);\n this.toggleERBHoverReveal(false);\n this.toggleTooltips(false);\n const toggleViewOutlinesSwitch = document.getElementById('herbToggleViewOutlines');\n const togglePartialOutlinesSwitch = document.getElementById('herbTogglePartialOutlines');\n const toggleComponentOutlinesSwitch = document.getElementById('herbToggleComponentOutlines');\n const toggleERBSwitch = document.getElementById('herbToggleERB');\n const toggleERBOutlinesSwitch = document.getElementById('herbToggleERBOutlines');\n const toggleERBHoverRevealSwitch = document.getElementById('herbToggleERBHoverReveal');\n const toggleTooltipsSwitch = document.getElementById('herbToggleTooltips');\n if (toggleViewOutlinesSwitch)\n toggleViewOutlinesSwitch.checked = false;\n if (togglePartialOutlinesSwitch)\n togglePartialOutlinesSwitch.checked = false;\n if (toggleComponentOutlinesSwitch)\n toggleComponentOutlinesSwitch.checked = false;\n if (toggleERBSwitch)\n toggleERBSwitch.checked = false;\n if (toggleERBOutlinesSwitch)\n toggleERBOutlinesSwitch.checked = false;\n if (toggleERBHoverRevealSwitch)\n toggleERBHoverRevealSwitch.checked = false;\n if (toggleTooltipsSwitch)\n toggleTooltipsSwitch.checked = false;\n }\n initializeErrorOverlay() {\n this.errorOverlay = new ErrorOverlay();\n }\n}\nHerbOverlay.SETTINGS_KEY = 'herb-dev-tools-settings';\n\nfunction initHerbDevTools(options = {}) {\n return new HerbOverlay(options);\n}\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n const hasDebugMode = document.querySelector('meta[name=\"herb-debug-mode\"]')?.getAttribute('content') === 'true';\n const hasDebugErb = document.querySelector('[data-herb-debug-erb]') !== null;\n const hasValidationErrors = document.querySelector('template[data-herb-validation-errors]') !== null;\n const hasValidationError = document.querySelector('template[data-herb-validation-error]') !== null;\n const hasParserErrors = document.querySelector('template[data-herb-parser-error]') !== null;\n const shouldAutoInit = hasDebugMode || hasDebugErb || hasValidationErrors || hasValidationError || hasParserErrors;\n if (shouldAutoInit) {\n document.addEventListener('DOMContentLoaded', () => {\n initHerbDevTools();\n });\n }\n}\nif (typeof window !== 'undefined') {\n window.HerbDevTools = {\n init: initHerbDevTools,\n HerbOverlay\n };\n}\n\nexport { HerbOverlay, initHerbDevTools };\n//# sourceMappingURL=herb-dev-tools.esm.js.map\n","import { initHerbDevTools, HerbOverlay, type HerbDevToolsOptions } from \"@herb-tools/dev-tools\"\n\nexport interface ReActionViewDevToolsOptions extends HerbDevToolsOptions {\n projectPath?: string\n autoInit?: boolean\n}\n\nexport class ReActionViewDevTools {\n private herbOverlay: HerbOverlay | null = null\n private static instance: ReActionViewDevTools | null = null\n\n constructor(private options: ReActionViewDevToolsOptions = {}) {\n if (options.autoInit !== false) {\n this.init()\n }\n }\n\n init(): HerbOverlay {\n if (this.herbOverlay) {\n this.destroy()\n }\n\n this.herbOverlay = initHerbDevTools({\n projectPath: this.options.projectPath,\n ...this.options\n })\n\n return this.herbOverlay\n }\n\n destroy(): void {\n if (this.herbOverlay) {\n const existingMenu = document.querySelector(\".herb-floating-menu\")\n\n if (existingMenu) {\n existingMenu.remove()\n }\n }\n\n this.herbOverlay = null\n }\n\n getHerbOverlay(): HerbOverlay | null {\n return this.herbOverlay\n }\n\n static getInstance(): ReActionViewDevTools | null {\n return ReActionViewDevTools.instance\n }\n\n static setInstance(instance: ReActionViewDevTools | null): void {\n ReActionViewDevTools.instance = instance\n }\n}\n\nexport function initReActionViewDevTools(options: ReActionViewDevToolsOptions = {}): ReActionViewDevTools {\n const existingInstance = ReActionViewDevTools.getInstance()\n\n if (existingInstance) {\n existingInstance.destroy()\n }\n\n const instance = new ReActionViewDevTools(options)\n ReActionViewDevTools.setInstance(instance)\n\n return instance\n}\n\nif (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n let isInitializing = false\n\n const initializeDevTools = () => {\n if (isInitializing) {\n console.log(\"ReActionView dev tools initialization already in progress, skipping...\")\n\n return\n }\n\n const shouldAutoInit = document.querySelector(`meta[name=\"herb-debug-mode\"]`)?.getAttribute(\"content\") === \"true\" || document.querySelector(\"[data-herb-debug-erb]\") !== null\n\n if (!shouldAutoInit) {\n console.log(\"ReActionView debug mode not detected, skipping dev tools initialization\")\n return\n }\n\n isInitializing = true\n\n try {\n let projectPath: string | undefined\n const railsRoot = document.querySelector(`meta[name=\"herb-rails-root\"]`)?.getAttribute(\"content\")\n if (railsRoot) {\n projectPath = railsRoot\n }\n\n initReActionViewDevTools({\n projectPath,\n autoInit: true\n })\n\n } catch (error) {\n console.warn(\"Could not initialize ReActionView dev tools:\", error)\n } finally {\n isInitializing = false\n }\n }\n\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", initializeDevTools, { once: true })\n } else {\n setTimeout(initializeDevTools, 0)\n }\n\n document.addEventListener(\"turbo:load\", initializeDevTools)\n document.addEventListener(\"turbo:render\", initializeDevTools)\n document.addEventListener(\"turbo:visit\", initializeDevTools)\n}\n\ndeclare global {\n interface Window {\n ReActionViewDevTools: {\n init: typeof initReActionViewDevTools\n ReActionViewDevTools: typeof ReActionViewDevTools\n HerbOverlay: typeof HerbOverlay\n }\n }\n}\n\nif (typeof window !== \"undefined\") {\n window.ReActionViewDevTools = {\n init: initReActionViewDevTools,\n ReActionViewDevTools,\n HerbOverlay\n }\n}\n\nexport { HerbOverlay, type HerbDevToolsOptions }\n"],"names":[],"mappings":"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AC,6CAA6C,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAClG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACnB;AACA;AACA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACf,QAAQ,OAAO;AACf,aAAa,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACjD;AACA;AACA;AACA;AACA;AACA,cAAc,EAAE,KAAK;AACrB;AACA,kDAAkD,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE;AACA;AACA;AACA,QAAQ,EAAE,QAAQ;AAClB;AACA,UAAU,EAAE,eAAe;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,CAAC;AACL,IAAI;AACJ,IAAI,0BAA0B,GAAG;AACjC,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA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","x_google_ignoreList":[0]}