All files / src/compiled-templates index-template.ts

55.17% Statements 16/29
48.07% Branches 25/52
62.5% Functions 5/8
48% Lines 12/25

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75                      2x   2x 8x                 64x 32x   32x     16x                   16x                           2x 8x             8x                       2x  
// Auto-generated from index.html
// Do not edit this file directly - edit the template file instead
/* eslint-disable */
// @ts-nocheck
 
/**
 * Precompiled Handlebars template for index
 * This template function works without requiring Handlebars at runtime
 */
 
// Minimal Handlebars runtime for precompiled templates
const HandlebarsRuntime = {
  template: function(spec: any) {
    return function(context: any) {
      return spec.main(HandlebarsRuntime, context, {}, {}, {});
    };
  },
  hooks: {
    helperMissing: function() {
      return '';
    }
  },
  lookupProperty: function(parent: any, propertyName: string) {
    if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
      return parent[propertyName];
    }
    return undefined;
  },
  escapeExpression: function(string: any) {
    Iif (typeof string !== 'string') {
      if (string && string.toHTML) {
        return string.toHTML();
      } else if (string == null) {
        return '';
      } else Iif (!string) {
        return string + '';
      }
      string = '' + string;
    }
    return string.replace(/[&<>"']/g, function(match: string) {
      const escape: { [key: string]: string } = {
        '&': '&amp;',
        '<': '&lt;',
        '>': '&gt;',
        '"': '&quot;',
        "'": '&#x27;'
      };
      return escape[match];
    });
  }
};
 
// Precompiled template function
const templateSpec: any = {"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
        Iif (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
          return parent[propertyName];
        }
        return undefined
    };
 
  return "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>"
    + alias4(((helper = (helper = lookupProperty(helpers,"title") || (depth0 != null ? lookupProperty(depth0,"title") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"title","hash":{},"data":data,"loc":{"start":{"line":6,"column":11},"end":{"line":6,"column":20}}}) : helper)))
    + "</title>\n    <style>\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n        \n        body {\n            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n            line-height: 1.6;\n            color: #333;\n            background-color: #f8f9fa;\n            padding: 20px;\n        }\n        \n        .container {\n            max-width: 1200px;\n            margin: 0 auto;\n            background: white;\n            border-radius: 8px;\n            box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n            overflow: hidden;\n        }\n        \n        .header {\n            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n            color: white;\n            padding: 20px 30px;\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            gap: 20px;\n        }\n        \n        .header h1 {\n            font-size: 1.8rem;\n            margin: 0;\n            font-weight: 400;\n        }\n        \n        .metadata {\n            background: #f8f9fa;\n            padding: 15px 30px;\n            border-bottom: 1px solid #e9ecef;\n            font-size: 0.9rem;\n            color: #6c757d;\n            text-align: center;\n        }\n        \n        .metadata span {\n            margin-right: 20px;\n        }\n        \n        .metadata span:last-child {\n            margin-right: 0;\n        }\n        \n        .content {\n            padding: 30px;\n        }\n        \n        .search-container {\n            margin-bottom: 25px;\n            padding: 20px;\n            background: #f8f9fa;\n            border-radius: 8px;\n            border: 1px solid #e9ecef;\n        }\n        \n        .search-input-wrapper {\n            position: relative;\n            display: flex;\n            align-items: center;\n            min-width: 300px;\n            max-width: 400px;\n        }\n        \n        .search-input {\n            width: 100%;\n            padding: 8px 12px;\n            padding-right: 35px;\n            font-size: 0.9rem;\n            border: 1px solid #dee2e6;\n            border-radius: 4px;\n            background: white;\n            transition: border-color 0.15s ease;\n            font-family: inherit;\n        }\n        \n        .search-clear-btn {\n            position: absolute;\n            right: 12px;\n            background: none;\n            border: none;\n            font-size: 1.2rem;\n            color: #6c757d;\n            cursor: pointer;\n            padding: 4px;\n            border-radius: 3px;\n            transition: all 0.15s ease;\n            display: none;\n        }\n        \n        .search-clear-btn:hover {\n            background: #e9ecef;\n            color: #495057;\n        }\n        \n        .search-clear-btn.visible {\n            display: block;\n        }\n        \n        .search-input:focus {\n            outline: none;\n            border-color: #007bff;\n            box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.1);\n        }\n        \n        .search-info {\n            margin-top: 10px;\n            font-size: 0.9rem;\n            color: #6c757d;\n        }\n        \n        .file-tree {\n            background: #f8f9fa;\n            border-radius: 6px;\n            padding: 20px;\n            margin-bottom: 30px;\n        }\n        \n        .file-item.hidden {\n            display: none;\n        }\n        \n        .directory-section.hidden {\n            display: none;\n        }\n        \n        .file-list {\n            list-style: none;\n        }\n        \n        .file-item {\n            margin: 2px 0;\n            padding: 6px 12px;\n            background: white;\n            border-radius: 4px;\n            border-left: 3px solid #007bff;\n            box-shadow: 0 1px 2px rgba(0,0,0,0.08);\n            transition: all 0.15s ease;\n        }\n        \n        .file-item:hover {\n            transform: translateY(-1px);\n            box-shadow: 0 2px 6px rgba(0,0,0,0.12);\n            border-left-width: 4px;\n        }\n        \n        .file-item.directory {\n            border-left-color: #28a745;\n            background: #f8fff9;\n        }\n        \n        .file-item a {\n            text-decoration: none;\n            color: #333;\n            font-weight: 500;\n            display: flex;\n            align-items: center;\n            min-height: 24px;\n        }\n        \n        .file-item a:hover {\n            color: #007bff;\n        }\n        \n        .file-icon {\n            margin-right: 8px;\n            font-size: 1rem;\n            flex-shrink: 0;\n        }\n        \n        .file-info {\n            flex: 1;\n            min-width: 0;\n        }\n        \n        .file-name {\n            font-size: 0.9rem;\n            line-height: 1.3;\n            margin: 0;\n        }\n        \n        .file-path {\n            font-size: 0.75rem;\n            color: #6c757d;\n            margin-top: 1px;\n            line-height: 1.2;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            white-space: nowrap;\n        }\n        \n        .directory-section {\n            margin-bottom: 25px;\n        }\n        \n        .directory-title {\n            font-size: 1.3rem;\n            font-weight: 600;\n            color: #495057;\n            margin-bottom: 15px;\n            padding-bottom: 8px;\n            border-bottom: 2px solid #e9ecef;\n        }\n        \n        .footer {\n            text-align: center;\n            padding: 20px;\n            color: #6c757d;\n            font-size: 0.9rem;\n            border-top: 1px solid #e9ecef;\n        }\n        \n        @media (max-width: 768px) {\n            body {\n                padding: 10px;\n            }\n            \n            .header {\n                flex-direction: column;\n                align-items: stretch;\n                gap: 15px;\n                text-align: center;\n            }\n            \n            .header h1 {\n                font-size: 1.5rem;\n            }\n            \n            .content {\n                padding: 20px;\n            }\n            \n            .search-input-wrapper {\n                min-width: auto;\n                max-width: none;\n            }\n        }\n    </style>\n</head>\n<body>\n    <div class=\"container\">\n        <div class=\"header\">\n            <h1>"
    + alias4(((helper = (helper = lookupProperty(helpers,"title") || (depth0 != null ? lookupProperty(depth0,"title") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"title","hash":{},"data":data,"loc":{"start":{"line":262,"column":16},"end":{"line":262,"column":25}}}) : helper)))
    + "</h1>\n            <div class=\"search-input-wrapper\">\n                <input type=\"text\" id=\"searchInput\" placeholder=\"Filter files by path...\" class=\"search-input\">\n                <button type=\"button\" id=\"searchClearBtn\" class=\"search-clear-btn\" title=\"Clear search (ESC)\">×</button>\n            </div>\n        </div>\n        \n        <div class=\"metadata\">\n            "
    + ((stack1 = ((helper = (helper = lookupProperty(helpers,"metadata") || (depth0 != null ? lookupProperty(depth0,"metadata") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"metadata","hash":{},"data":data,"loc":{"start":{"line":270,"column":12},"end":{"line":270,"column":26}}}) : helper))) != null ? stack1 : "")
    + "\n        </div>\n        \n        <div class=\"content\">\n            "
    + ((stack1 = ((helper = (helper = lookupProperty(helpers,"fileList") || (depth0 != null ? lookupProperty(depth0,"fileList") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"fileList","hash":{},"data":data,"loc":{"start":{"line":274,"column":12},"end":{"line":274,"column":26}}}) : helper))) != null ? stack1 : "")
    + "\n        </div>\n        \n        <div class=\"footer\">\n            Generated by <strong>GitHub Pages Quick Index</strong> \n            <a href=\"https://github.com/ykmr1224/github-pages-quick-index\" target=\"_blank\" style=\"color: #6c757d; text-decoration: none; margin-left: 8px;\">\n                <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" style=\"vertical-align: middle; margin-right: 4px;\">\n                    <path d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z\"/>\n                </svg>\n            </a>\n        </div>\n    </div>\n    \n    <script>\n        document.addEventListener('DOMContentLoaded', function() {\n            const searchInput = document.getElementById('searchInput');\n            const searchClearBtn = document.getElementById('searchClearBtn');\n            const fileItems = document.querySelectorAll('.file-item');\n            const directorySections = document.querySelectorAll('.directory-section');\n            \n            function filterFiles() {\n                const searchTerm = searchInput.value.toLowerCase().trim();\n                \n                // Show/hide clear button based on input content\n                if (searchTerm === '') {\n                    searchClearBtn.classList.remove('visible');\n                } else {\n                    searchClearBtn.classList.add('visible');\n                }\n                \n                // Show/hide individual file items\n                fileItems.forEach(function(item) {\n                    const filePath = item.getAttribute('data-path').toLowerCase();\n                    const isVisible = searchTerm === '' || filePath.includes(searchTerm);\n                    \n                    if (isVisible) {\n                        item.classList.remove('hidden');\n                    } else {\n                        item.classList.add('hidden');\n                    }\n                });\n                \n                // Show/hide directory sections based on whether they have visible files\n                directorySections.forEach(function(section) {\n                    const visibleFilesInSection = section.querySelectorAll('.file-item:not(.hidden)');\n                    if (visibleFilesInSection.length > 0) {\n                        section.classList.remove('hidden');\n                    } else {\n                        section.classList.add('hidden');\n                    }\n                });\n                \n                // Handle root level files (not in directory sections)\n                const rootFileList = document.querySelector('.file-list');\n                if (rootFileList && !rootFileList.closest('.directory-section')) {\n                    const visibleRootFiles = rootFileList.querySelectorAll('.file-item:not(.hidden)');\n                    if (visibleRootFiles.length === 0 && searchTerm !== '') {\n                        rootFileList.style.display = 'none';\n                    } else {\n                        rootFileList.style.display = '';\n                    }\n                }\n            }\n            \n            function clearSearch() {\n                searchInput.value = '';\n                filterFiles();\n                searchInput.focus();\n            }\n            \n            // Add event listener for real-time filtering\n            searchInput.addEventListener('input', filterFiles);\n            \n            // Add clear button click handler\n            searchClearBtn.addEventListener('click', clearSearch);\n            \n            // Add keyboard shortcuts\n            document.addEventListener('keydown', function(e) {\n                // Ctrl/Cmd + K to focus search\n                if ((e.ctrlKey || e.metaKey) && e.key === 'k') {\n                    e.preventDefault();\n                    searchInput.focus();\n                    searchInput.select();\n                }\n                // ESC to clear search (only when search input is focused)\n                else if (e.key === 'Escape' && document.activeElement === searchInput) {\n                    e.preventDefault();\n                    clearSearch();\n                }\n            });\n        });\n    </script>\n</body>\n</html>\n";
},"useData":true};
 
// Export the template function
export const indexTemplate = HandlebarsRuntime.template(templateSpec);