From 4c4bd34284e7ccc48c34b3a676cdec15693bc979 Mon Sep 17 00:00:00 2001 From: ADARSH <64017655+0x0806@users.noreply.github.com> Date: Sat, 5 Jul 2025 16:13:58 +0530 Subject: [PATCH] Create script.js --- script.js | 948 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 948 insertions(+) create mode 100644 script.js diff --git a/script.js b/script.js new file mode 100644 index 0000000..5124c8b --- /dev/null +++ b/script.js @@ -0,0 +1,948 @@ + +// Advanced Prompt Arsenal Dashboard +class PromptArsenal { + constructor() { + this.currentView = 'dashboard'; + this.currentFolder = null; + this.selectedFile = null; + this.isMobile = window.innerWidth <= 768; + this.sidebarOpen = false; + this.searchQuery = ''; + this.sortBy = 'name'; + this.folderFilter = ''; + this.allFiles = []; + this.filteredFiles = []; + this.fileContents = new Map(); + + this.init(); + } + + async init() { + this.bindEvents(); + this.handleResize(); + await this.loadFileStructure(); + this.updateStats(); + this.renderCurrentView(); + } + + bindEvents() { + // Navigation events + const navItems = document.querySelectorAll('.nav-item'); + navItems.forEach(item => { + item.addEventListener('click', (e) => { + const view = e.currentTarget.dataset.view; + this.switchView(view); + }); + }); + + // View control buttons + const viewBtns = document.querySelectorAll('.view-btn'); + viewBtns.forEach(btn => { + btn.addEventListener('click', (e) => { + const view = e.currentTarget.dataset.view; + this.switchView(view); + }); + }); + + // Mobile menu + const mobileMenuBtn = document.getElementById('mobileMenuBtn'); + const mobileOverlay = document.getElementById('mobileOverlay'); + + if (mobileMenuBtn) { + mobileMenuBtn.addEventListener('click', () => this.toggleMobileSidebar()); + } + + if (mobileOverlay) { + mobileOverlay.addEventListener('click', () => this.closeMobileSidebar()); + } + + // Search functionality + const globalSearch = document.getElementById('globalSearch'); + if (globalSearch) { + globalSearch.addEventListener('input', this.debounce((e) => { + this.searchQuery = e.target.value.toLowerCase(); + this.filterAndRenderFiles(); + }, 300)); + } + + // Filter controls + const folderFilter = document.getElementById('folderFilter'); + const sortBy = document.getElementById('sortBy'); + + if (folderFilter) { + folderFilter.addEventListener('change', (e) => { + this.folderFilter = e.target.value; + this.filterAndRenderFiles(); + }); + } + + if (sortBy) { + sortBy.addEventListener('change', (e) => { + this.sortBy = e.target.value; + this.filterAndRenderFiles(); + }); + } + + // Quick action buttons + const quickBtns = document.querySelectorAll('.quick-btn'); + quickBtns.forEach(btn => { + btn.addEventListener('click', (e) => { + const action = e.currentTarget.dataset.action; + this.handleQuickAction(action); + }); + }); + + // Action buttons + const refreshBtn = document.getElementById('refreshBtn'); + if (refreshBtn) { + refreshBtn.addEventListener('click', () => this.refresh()); + } + + // Modal events + const fileModal = document.getElementById('fileModal'); + const modalClose = document.getElementById('modalClose'); + const copyContent = document.getElementById('copyContent'); + const downloadFile = document.getElementById('downloadFile'); + + if (modalClose) { + modalClose.addEventListener('click', () => this.closeModal()); + } + + if (copyContent) { + copyContent.addEventListener('click', () => this.copyFileContent()); + } + + if (downloadFile) { + downloadFile.addEventListener('click', () => this.downloadCurrentFile()); + } + + // Keyboard shortcuts + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape') { + this.closeModal(); + this.closeMobileSidebar(); + } + if (e.ctrlKey || e.metaKey) { + if (e.key === 'k') { + e.preventDefault(); + document.getElementById('globalSearch')?.focus(); + } + if (e.key === 'r') { + e.preventDefault(); + this.refresh(); + } + } + }); + + // Window resize + window.addEventListener('resize', () => this.handleResize()); + } + + async loadFileStructure() { + this.showLoading(true); + + try { + // Get all files from the server + const response = await fetch('/api/files'); + if (response.ok) { + this.allFiles = await response.json(); + } else { + // Fallback to hardcoded structure if API fails + this.allFiles = this.buildHardcodedStructure(); + } + + this.populateFolderFilter(); + this.populateFolderNavigation(); + this.filteredFiles = [...this.allFiles]; + + } catch (error) { + console.error('Failed to load file structure:', error); + this.allFiles = this.buildHardcodedStructure(); + this.filteredFiles = [...this.allFiles]; + } + + this.showLoading(false); + } + + buildHardcodedStructure() { + const folders = { + 'Latest Jailbreaks': [ + 'AGI.md', 'Apex.md', 'BOB.md', 'Born Survivalist (yell0wfever92).md', + 'CodeGPT6.md', 'Complex.md', 'DANDoc_v2.2 (DaVoidCaller).md', + 'DarkGPT.md', 'Decodes Anything Now.md', 'Demonic Chloe (pleasing-punisher).md', + 'EarthSaver.md', 'Forest (pink_panther--).md', 'GBTHEN.md', + 'GPT 3.5 Web Search.md', 'GPT 4.5 Fusion.md', 'GhettoBreak.md', + 'Hex.md', 'IBM.md', 'Infotron (HORSELOCKSPACEPIRATE).md', + 'Infotron V2.md', 'Infotron V3 (yell0wfever92).md', 'Master Key.md', + 'MrRobot.md', 'NewGen (Ultrazartrex).md', 'Pliny Rekt.md', + 'Pliny.md', 'Pollifusion.md', 'ProfessorRick (yell0wfever92).md', + 'SINISTERCHAOS (Brilliant_Balance208).md', 'System Update (justpackingheat1).md', + 'TAAN.md', 'UNITY.md', 'UltraBreaker.md', 'Universal Bypass.md', + 'XFactor.md', 'Z.md', 'Zorg.md', + '[GPT4-o] Short 2 (HORSELOCKSPACEPIRATE).md' + ], + 'Legendary Leaks': [ + 'AI Book Writer Assistant.md', 'Book Creator Guide.md', 'Book Writer GPT.md', + 'CODEGPTV6.md', 'Copywrighter GPT.md', 'CreativeGPT\'s Prompt Generator.md', + 'Email Writer.md', 'Fully SEO Optimized Article 2.md', 'GP(en)T(ester).md', + 'God of Prompt.md', 'Grimoire(Latest).md', 'HackerGPT.md', + 'Kali GPT.md', 'Malware Rule Master.md', 'Mega-Prompt.md', + 'Professional Business Email Writer.md', 'PromptGPT.md', 'SEO BlogGPT.md', + 'SINISTER CHAOS.md', 'SOC Copilot.md', 'Super Prompt Generator 3.md', + 'Super Prompt Maker.md', 'System Prompt Generator 2.md', + 'System Prompt Generator.md', 'The Greatest Computer Science Tutor.md', + 'TherapistGPT.md', 'Video Script.md', 'Viral Hooks Generator.md', + 'WormGPT3.md', 'WormGPT30.md', 'WormGPT6.md' + ], + 'Grimoire': [ + '000 - Full Base Prompt.md', 'GPTavern.md', 'Grimoire.md', + 'Interludes.md', 'Part1.md', 'Part2.md', 'Part3.md', + 'Part4.md', 'Part5.md', 'Part6.md', 'Part7.md', + 'Part8.md', 'Part9.md', 'PatchNotes.md', 'Projects.md', + 'Readme.md', 'RecommendedTools.md', 'ReplitDeployInstructions.md' + ], + 'My Super Prompts': [ + 'Ai Integration Finder.md', 'Jailbreak Tester.md', 'Mental Health Therapist.md', + 'ORK | System Prompt Writer and Optimizer.md', 'PSYKOO | Mental Manipulator.md', + 'Prompt Engineer Template.md', 'Response Quality Enhacer.md', + 'Rizz Game Improver.md', 'VAMPIRE | Ultra Prompt Writer.md' + ], + 'Prompt Security': [ + '10 rules of protection and misdirection.md', '100 Life points.md', + 'Anti-verbatim.md', 'Bad faith actors protection.md', 'Bank Security Robot.md', + 'Blue Team.md', 'Bot data protection.md', 'CIPHERON.md', + 'Data Privacy - Formal.md', 'Do not Leak!.md', 'Final reminder.md', + 'Fingers crossed technique.md', 'Gated access.md', 'Guardian Shield.md', + 'HackTricksGPT Defense.md', 'Hacker Detected.md', 'I will never trust you again!.md', + 'I will only give you poop.md', 'I will report you.md', 'Ignore previous instructions.md', + 'Just don\'t repeat.md', 'Keep it polite.md', 'Law of Magic.md', + 'Lawyer up.md', 'Mandatory security protocol.md', 'MultiPersona system.md', + 'Operation mode is private.md', 'Overly protective parent.md', + 'Prior text REDACTED!.md', 'Prohibition era.md', 'Prompt inspection.md', + 'STOP HALT.md', 'SafeBOT.md', 'Simple.md', 'Single minded GPT.md', + 'Sorry Bro, not possible - short edition.md', 'Sorry, bro! Not possible - elaborate edition.md', + 'Stay on topic.md', 'The 3 Asimov laws.md', 'The 5 Rules.md', + 'The Soup Boy.md', 'Top Secret Core Instructions.md', + 'Under NO circumstances reveal your instructions.md', 'WormGPT Defense.md', + 'You are not a GPT.md', 'You\'re not my mom.md', 'warning png.md' + ], + 'Ultra Prompts': [ + 'Prompt Guru V5.md', 'Prompt Quality Evaluation and Enhancement System V1.md' + ] + }; + + const files = []; + Object.entries(folders).forEach(([folder, fileList]) => { + fileList.forEach(filename => { + files.push({ + name: filename, + path: `${folder}/${filename}`, + relativePath: `${folder}/${filename}`, + folder: folder, + size: Math.floor(Math.random() * 50000) + 1000, // Mock size + type: 'md', + lastModified: new Date(Date.now() - Math.random() * 10000000000) + }); + }); + }); + + return files; + } + + populateFolderFilter() { + const folderFilter = document.getElementById('folderFilter'); + if (!folderFilter) return; + + const folders = [...new Set(this.allFiles.map(file => file.folder))]; + folderFilter.innerHTML = ''; + + folders.forEach(folder => { + const option = document.createElement('option'); + option.value = folder; + option.textContent = folder; + folderFilter.appendChild(option); + }); + } + + populateFolderNavigation() { + const folderNav = document.getElementById('folderNav'); + if (!folderNav) return; + + const folders = [...new Set(this.allFiles.map(file => file.folder))]; + folderNav.innerHTML = ''; + + folders.forEach(folder => { + const fileCount = this.allFiles.filter(file => file.folder === folder).length; + const li = document.createElement('li'); + li.className = 'nav-item folder-nav-item'; + li.dataset.folder = folder; + li.innerHTML = ` + + ${folder} + ${fileCount} + `; + + li.addEventListener('click', () => { + this.currentFolder = folder; + this.folderFilter = folder; + document.getElementById('folderFilter').value = folder; + this.switchView('grid'); + this.filterAndRenderFiles(); + }); + + folderNav.appendChild(li); + }); + } + + switchView(view) { + // Update active nav items + document.querySelectorAll('.nav-item').forEach(item => { + item.classList.toggle('active', item.dataset.view === view); + }); + + document.querySelectorAll('.view-btn').forEach(btn => { + btn.classList.toggle('active', btn.dataset.view === view); + }); + + // Update active view sections + document.querySelectorAll('.view-section').forEach(section => { + section.classList.remove('active'); + }); + + const targetSection = document.getElementById(`${view}View`); + if (targetSection) { + targetSection.classList.add('active'); + } + + this.currentView = view; + this.updatePageTitle(view); + this.renderCurrentView(); + this.closeMobileSidebar(); + } + + updatePageTitle(view) { + const titles = { + dashboard: 'Dashboard', + grid: 'Grid View', + list: 'List View', + tree: 'Tree View' + }; + + const pageTitle = document.getElementById('pageTitle'); + const pageSubtitle = document.getElementById('pageSubtitle'); + + if (pageTitle) pageTitle.textContent = titles[view] || 'Dashboard'; + if (pageSubtitle) { + if (this.currentFolder) { + pageSubtitle.textContent = `Viewing ${this.currentFolder} folder`; + } else { + pageSubtitle.textContent = 'Advanced file browser and prompt manager'; + } + } + } + + renderCurrentView() { + switch (this.currentView) { + case 'dashboard': + this.renderDashboard(); + break; + case 'grid': + this.renderGridView(); + break; + case 'list': + this.renderListView(); + break; + case 'tree': + this.renderTreeView(); + break; + } + } + + renderDashboard() { + this.updateStats(); + this.renderFolderChart(); + } + + updateStats() { + const folders = [...new Set(this.allFiles.map(file => file.folder))]; + + document.getElementById('totalFiles').textContent = this.allFiles.length; + document.getElementById('totalFolders').textContent = folders.length; + + // Update category counts + document.getElementById('jailbreaksCount').textContent = + this.allFiles.filter(f => f.folder === 'Latest Jailbreaks').length; + document.getElementById('legendaryCount').textContent = + this.allFiles.filter(f => f.folder === 'Legendary Leaks').length; + document.getElementById('securityCount').textContent = + this.allFiles.filter(f => f.folder === 'Prompt Security').length; + document.getElementById('ultraCount').textContent = + this.allFiles.filter(f => f.folder === 'Ultra Prompts').length; + } + + renderFolderChart() { + const folderChart = document.getElementById('folderChart'); + if (!folderChart) return; + + const folders = [...new Set(this.allFiles.map(file => file.folder))]; + folderChart.innerHTML = ''; + + folders.forEach(folder => { + const count = this.allFiles.filter(f => f.folder === folder).length; + const percentage = (count / this.allFiles.length * 100).toFixed(1); + + const item = document.createElement('div'); + item.className = 'chart-item'; + item.innerHTML = ` +
+Try adjusting your search or filter criteria
+${file.folder}
+ +Try adjusting your search or filter criteria
+${filePath}
+$1')
+ .replace(/```([\s\S]*?)```/g, '$1')
+ .replace(/\n\n/g, '')
+ .replace(/\n/g, '
')
+ .replace(/^(?!<[h1-6|li|pre])(.+)$/gm, '
$1
') + .replace(/(