$base = "g:\.vibe\SciFiSS\SciFiAmbientDisplay_v3co.html" $dest = "g:\.vibe\SciFiSS\SciFi-XZBT" $lines = [System.IO.File]::ReadAllLines($base) # 1. CSS: lines 19 to 2335 (0-based) [System.IO.File]::WriteAllLines("$dest\css\style.css", $lines[19..2335]) # 2. HTML: Head (0..18), link css, Body (2338..2676), script tags, Tail (13628..13629) $html = [System.Collections.Generic.List[string]]::new() for ($i = 0; $i -le 17; $i++) { $html.Add($lines[$i]) } $html.Add(' ') $html.Add('') for ($i = 2338; $i -le 2676; $i++) { $html.Add($lines[$i]) } $scripts = @( 'js/audio.js', 'js/config.js', 'js/visualizer.js', 'js/observation-bezels.js', 'js/observation-engine.js', 'js/app.js' ) foreach ($s in $scripts) { $html.Add(" ") } $html.Add($lines[13628]) $html.Add($lines[13629]) [System.IO.File]::WriteAllLines("$dest\index.html", $html) # 3. js/audio.js: 2683 to 4940 [System.IO.File]::WriteAllLines("$dest\js\audio.js", $lines[2683..4940]) # 4. js/config.js: 4941 to 5979 [System.IO.File]::WriteAllLines("$dest\js\config.js", $lines[4941..5979]) # 5. js/visualizer.js: 5980 to 6622 [System.IO.File]::WriteAllLines("$dest\js\visualizer.js", $lines[5980..6622]) # 6. Viewport bezels extracted into js/observation-bezels.js # In lines 9397..9661: getViewportFrameSvg $bezels = [System.Collections.Generic.List[string]]::new() $bezels.Add('/**') $bezels.Add(' * Procedural SVG Viewport Frames & Bezels for Observation Mode') $bezels.Add(' */') $bezels.Add('window.ObservationBezels = {') $bezels.Add(' getViewportFrameSvg(universeId, presetId, engine) {') for ($i = 9398; $i -le 9660; $i++) { $l = $lines[$i] # replace "this.showPillars" with "(engine ? engine.showPillars : false)" $l = $l -replace 'this\.showPillars', '(engine ? engine.showPillars : false)' $bezels.Add(' ' + $l) } $bezels.Add(' }') $bezels.Add('};') [System.IO.File]::WriteAllLines("$dest\js\observation-bezels.js", $bezels) # 7. js/observation-engine.js: 6623 to 9396, delegate getViewportFrameSvg, then lines 9662..9664 $obs = [System.Collections.Generic.List[string]]::new() for ($i = 6623; $i -le 9396; $i++) { $obs.Add($lines[$i]) } $obs.Add(' getViewportFrameSvg(universeId, presetId) {') $obs.Add(' if (window.ObservationBezels && typeof window.ObservationBezels.getViewportFrameSvg === "function") {') $obs.Add(' return window.ObservationBezels.getViewportFrameSvg(universeId, presetId, this);') $obs.Add(' }') $obs.Add(' return "";') $obs.Add(' }') for ($i = 9662; $i -le 9664; $i++) { $obs.Add($lines[$i]) } [System.IO.File]::WriteAllLines("$dest\js\observation-engine.js", $obs) # 8. js/app.js: 9666 to 13626 $app = [System.Collections.Generic.List[string]]::new() for ($i = 9666; $i -le 13626; $i++) { $app.Add($lines[$i]) } [System.IO.File]::WriteAllLines("$dest\js\app.js", $app) Write-Output "Extraction complete!"