diff --git a/resources/views/components/template-preview.blade.php b/resources/views/components/template-preview.blade.php index 55da1e8..e028835 100644 --- a/resources/views/components/template-preview.blade.php +++ b/resources/views/components/template-preview.blade.php @@ -15,7 +15,24 @@ -
+ +
+ +
-
+
-
-

- Yükleniyor... - Önizleme hazırlanıyor -

-

- İçerik işleniyor - Önizleme için HTML içeriği girin -

-
+
@@ -60,9 +68,7 @@
-

- {{ __('Önizleme gerçek zamanlı olarak güncellenir') }} -

+
@push('scripts') @@ -75,8 +81,6 @@ function templatePreview(previewUrl, type, fieldName) { iframeSrc: '', isLoading: false, content: '', - debounceTimer: null, - intervalId: null, codeMirrorView: null, init() { @@ -86,8 +90,6 @@ function templatePreview(previewUrl, type, fieldName) { this.$nextTick(() => { setTimeout(() => { this.findCodeMirror(); - this.setupWatchers(); - this.updatePreview(); }, 1500); }); }, @@ -215,13 +217,18 @@ function templatePreview(previewUrl, type, fieldName) { if (cmContent) { console.log('[Preview] Found .cm-content element'); - // Watch for changes + // Get initial content (no watcher, only on demand) + this.content = cmContent.textContent || ''; + console.log('[Preview] Initial content from .cm-content, length:', this.content.length); + + // Watch for content changes to update internal content variable + // but don't trigger preview update automatically const observer = new MutationObserver(() => { const newContent = cmContent.textContent || ''; if (newContent !== this.content) { this.content = newContent; console.log('[Preview] Content changed, length:', this.content.length); - this.debouncedUpdate(); + // Don't auto-update, wait for Run button } }); observer.observe(cmContent, { @@ -230,10 +237,6 @@ function templatePreview(previewUrl, type, fieldName) { characterData: true, }); - // Get initial content - this.content = cmContent.textContent || ''; - console.log('[Preview] Initial content from .cm-content, length:', this.content.length); - if (this.content) { return; // Success! } @@ -247,12 +250,13 @@ function templatePreview(previewUrl, type, fieldName) { console.log('[Preview] Found CodeMirror 6 View, content length:', this.content.length); if (view.dispatch) { - // Watch for changes + // Watch for changes to update internal content variable + // but don't trigger preview update automatically const originalDispatch = view.dispatch; view.dispatch = (tr) => { originalDispatch.call(view, tr); this.content = view.state.doc.toString(); - this.debouncedUpdate(); + // Don't auto-update, wait for Run button }; } @@ -270,7 +274,7 @@ function templatePreview(previewUrl, type, fieldName) { this.content = cmInstance.getValue(); cmInstance.on('change', () => { this.content = cmInstance.getValue(); - this.debouncedUpdate(); + // Don't auto-update, wait for Run button }); console.log('[Preview] CodeMirror 5 content length:', this.content.length); if (this.content) { @@ -286,7 +290,7 @@ function templatePreview(previewUrl, type, fieldName) { this.content = textarea.value || ''; textarea.addEventListener('input', () => { this.content = textarea.value; - this.debouncedUpdate(); + // Don't auto-update, wait for Run button }); console.log('[Preview] Textarea content length:', this.content.length); } else { @@ -295,34 +299,12 @@ function templatePreview(previewUrl, type, fieldName) { } }, - setupWatchers() { - // Watch for Livewire updates - if (window.Livewire) { - document.addEventListener('livewire:update', () => { - this.findCodeMirror(); - this.debouncedUpdate(); - }); - } - - // Periodic update - this.intervalId = setInterval(() => { - this.findCodeMirror(); - this.updatePreview(); - }, 3000); - }, - - debouncedUpdate() { - clearTimeout(this.debounceTimer); - this.debounceTimer = setTimeout(() => { - this.updatePreview(); - }, 800); - }, - async updatePreview() { - // Try to refresh content - if (!this.content) { - this.findCodeMirror(); - } + // Refresh content from editor before updating + this.findCodeMirror(); + + // Give a moment for content to be refreshed + await new Promise(resolve => setTimeout(resolve, 100)); if (!this.content || !this.content.trim()) { console.log('[Preview] No content, skipping update'); @@ -372,12 +354,6 @@ function templatePreview(previewUrl, type, fieldName) { }, destroy() { - if (this.intervalId) { - clearInterval(this.intervalId); - } - if (this.debounceTimer) { - clearTimeout(this.debounceTimer); - } if (this.iframeSrc) { URL.revokeObjectURL(this.iframeSrc); }