{
  "manifest_version": 3,
  "name": "Previewer",
  "description": "Preview supported local files opened with file:// in Tabbit.",
  "version": "2.2026.1021.1300",
  "permissions": [
    "storage",
    "contextMenus",
    "readingList",
    "tabReadingSpace",
    "tabThemeColor",
    "scripting",
    "webNavigation",
    "tabs",
    "favicon",
    "tabMessaging",
    "tabInstance",
    "tabAnalytics",
    "tabContentExtractor",
    "tabLocalFilePreview",
    "tabLocalWorkspace",
    "tabCDPBridge"
  ],
  "tab_local_file_preview": {
    "extensions": [
      ".md",
      ".markdown",
      ".svg",
      ".png",
      ".jpg",
      ".jpeg",
      ".webp",
      ".gif",
      ".bmp",
      ".avif",
      ".ico",
      ".apng",
      ".doc",
      ".docx",
      ".ppt",
      ".pptx",
      ".xls",
      ".xlsx",
      ".txt",
      ".text",
      ".csv",
      ".tsv",
      ".rtf",
      ".tex",
      ".bib",
      ".srt",
      ".ass",
      ".ssa",
      ".vtt",
      ".sbv",
      ".sub",
      ".mpl",
      ".lrc",
      ".smi",
      ".ttml",
      ".dfxp",
      ".idx",
      ".mdx",
      ".js",
      ".cjs",
      ".mjs",
      ".ts",
      ".jsx",
      ".tsx",
      ".vue",
      ".py",
      ".rb",
      ".java",
      ".swift",
      ".go",
      ".rs",
      ".cpp",
      ".cc",
      ".cxx",
      ".c",
      ".h",
      ".hh",
      ".hpp",
      ".hxx",
      ".css",
      ".less",
      ".scss",
      ".json",
      ".jsonc",
      ".jsonl",
      ".ndjson",
      ".xml",
      ".yaml",
      ".yml",
      ".toml",
      ".ini",
      ".sh",
      ".sql",
      ".log",
      ".zip",
      ".skill"
    ],
    "fileTypeCatalog": [
      {
        "id": "markdown",
        "labelKey": "settings.type.markdown",
        "extensions": [
          ".md",
          ".markdown"
        ],
        "defaultOpenMode": "previewer",
        "chromeNativeRenderable": true,
        "osAssociation": "associate"
      },
      {
        "id": "svg",
        "labelKey": "settings.type.svg",
        "extensions": [
          ".svg"
        ],
        "defaultOpenMode": "previewer",
        "chromeNativeRenderable": true,
        "osAssociation": "associate"
      },
      {
        "id": "pdf",
        "labelKey": "settings.type.pdf",
        "extensions": [
          ".pdf"
        ],
        "defaultOpenMode": "native",
        "chromeNativeRenderable": true,
        "osAssociation": "associate"
      },
      {
        "id": "office",
        "labelKey": "settings.type.office",
        "extensions": [
          ".doc",
          ".docx",
          ".ppt",
          ".pptx",
          ".xls",
          ".xlsx"
        ],
        "defaultOpenMode": "previewer",
        "chromeNativeRenderable": false,
        "osAssociation": "none"
      },
      {
        "id": "html",
        "labelKey": "settings.type.html",
        "extensions": [
          ".html",
          ".htm",
          ".xhtml",
          ".xht",
          ".xhtm"
        ],
        "defaultOpenMode": "native",
        "chromeNativeRenderable": true,
        "osAssociation": "associate",
        "osAssociationOverrides": {
          ".xhtml": "none",
          ".xht": "none",
          ".xhtm": "none"
        }
      },
      {
        "id": "subtitle",
        "labelKey": "settings.type.subtitle",
        "extensions": [
          ".srt",
          ".vtt",
          ".ass",
          ".ssa",
          ".ttml",
          ".dfxp",
          ".smi",
          ".sbv",
          ".sub",
          ".mpl",
          ".lrc",
          ".idx"
        ],
        "defaultOpenMode": "previewer",
        "chromeNativeRenderable": true,
        "chromeNativeRenderableOverrides": {
          ".sub": false
        },
        "osAssociation": "none"
      },
      {
        "id": "code-text",
        "labelKey": "settings.type.codeText",
        "extensions": [
          ".txt",
          ".text",
          ".csv",
          ".tsv",
          ".rtf",
          ".tex",
          ".bib",
          ".mdx",
          ".js",
          ".cjs",
          ".mjs",
          ".ts",
          ".jsx",
          ".tsx",
          ".vue",
          ".py",
          ".rb",
          ".java",
          ".swift",
          ".go",
          ".rs",
          ".cpp",
          ".cc",
          ".cxx",
          ".c",
          ".h",
          ".hh",
          ".hpp",
          ".hxx",
          ".css",
          ".less",
          ".scss",
          ".json",
          ".jsonc",
          ".jsonl",
          ".ndjson",
          ".xml",
          ".yaml",
          ".yml",
          ".toml",
          ".ini",
          ".sh",
          ".sql",
          ".log"
        ],
        "defaultOpenMode": "previewer",
        "chromeNativeRenderable": true,
        "osAssociation": "associate",
        "osAssociationOverrides": {
          ".text": "none",
          ".rtf": "none",
          ".mdx": "none",
          ".cjs": "none",
          ".mjs": "none",
          ".vue": "none",
          ".rb": "none",
          ".swift": "none",
          ".cc": "none",
          ".cxx": "none",
          ".hh": "none",
          ".hxx": "none",
          ".less": "none",
          ".scss": "none",
          ".jsonc": "none",
          ".jsonl": "none",
          ".ndjson": "none",
          ".toml": "none",
          ".ini": "none"
        }
      },
      {
        "id": "zip",
        "labelKey": "settings.type.archive",
        "extensions": [
          ".zip",
          ".jar",
          ".apk",
          ".crx",
          ".epub",
          ".skill",
          ".xpi",
          ".vsix",
          ".whl",
          ".nupkg",
          ".odt",
          ".ods",
          ".odp"
        ],
        "defaultOpenMode": "previewer",
        "chromeNativeRenderable": false,
        "osAssociation": "none"
      },
      {
        "id": "image",
        "labelKey": "settings.type.image",
        "extensions": [
          ".png",
          ".jpg",
          ".jpeg",
          ".webp",
          ".gif",
          ".bmp",
          ".avif",
          ".ico",
          ".apng"
        ],
        "defaultOpenMode": "previewer",
        "chromeNativeRenderable": true,
        "osAssociation": "associate",
        "osAssociationOverrides": {
          ".avif": "none",
          ".ico": "none",
          ".apng": "none"
        }
      },
      {
        "id": "media",
        "labelKey": "settings.type.media",
        "extensions": [
          ".webm",
          ".mp4",
          ".m4v",
          ".mkv",
          ".ogv",
          ".ogm",
          ".mp3",
          ".wav",
          ".flac",
          ".ogg",
          ".oga",
          ".opus",
          ".weba",
          ".m4a",
          ".mka"
        ],
        "defaultOpenMode": "native",
        "chromeNativeRenderable": true,
        "osAssociation": "none"
      }
    ]
  },
  "content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
  },
  "host_permissions": [
    "file:///*",
    "<all_urls>"
  ],
  "externally_connectable": {
    "matches": [
      "http://localhost/*",
      "https://tabai-test.meituan.com/*",
      "https://tab-browser-test-sg.meituan.com/*",
      "https://web.tabbit.com/*",
      "https://staging.tabbit.com/*",
      "https://web.tabbit.ai/*",
      "https://staging.tabbit.ai/*"
    ]
  },
  "action": {
    "default_title": "Previewer",
    "default_popup": "popup.html"
  },
  "options_page": "settings.html",
  "background": {
    "service_worker": "background.js"
  },
  "content_scripts": [
    {
      "matches": [
        "file:///*"
      ],
      "js": [
        "vendor/jszip.min.js",
        "vendor/docx-preview.min.js",
        "vendor/chart.umd.min.js",
        "vendor/PptxViewJS.min.js",
        "vendor/pptxviewjs-fixes.js",
        "vendor/marked.umd.js",
        "vendor/speed-highlight.js",
        "vendor/markdown-mermaid.js",
        "vendor/markdown-markmap.js",
        "content.js"
      ],
      "run_at": "document_idle"
    }
  ],
  "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx+0nYNy1arepK9pGfTpx3L8GkQUmLWRHjWrfLVFIC1Z7zvGHBwfMCoVoWc2sl2lBzoJuuaSjmtWg4emb7s0ypCiaeyWzpIfyQG4uAySBP+qilrP5hhlu24v3MkHIhIJk8QeTYogApnAIVURGmbRUIZFqebYD5c69r0F+TPQ3J6hdW73dOqQSD/+rtbowTKmNHIHUJtnQoNIS1YDLSXFxC2NyqLKBegTYRxPDkkw2Is2jcuVvBqVNWTh6JZrivdnOt21xQPcwwNqHgFU9Jo20S6mc7XtyH3GjoyayNqjvZWYNkufOvcS+f6eB/YO39MxOKw0ZBXWaBG6p6aWzN/y42wIDAQAB",
  "web_accessible_resources": [
    {
      "resources": [
        "viewer.html",
        "styles.css"
      ],
      "matches": [
        "file:///*",
        "<all_urls>"
      ],
      "extension_ids": [
        "mhjfbmdgcfjbbpaeojofohoefgiehjai"
      ]
    },
    {
      "resources": [
        "vendor/pdfjs/*.mjs",
        "vendor/pdfjs/cmaps/*.bcmap",
        "vendor/pdfjs/standard_fonts/*",
        "vendor/pdfjs/wasm/*",
        "vendor/pdfjs/iccs/*"
      ],
      "matches": [
        "file:///*",
        "<all_urls>"
      ]
    },
    {
      "resources": [
        "vendor/katex/katex.min.js",
        "vendor/katex/katex.min.css",
        "vendor/katex/fonts/*"
      ],
      "matches": [
        "file:///*",
        "<all_urls>"
      ]
    },
    {
      "resources": [
        "icons/phosphor/*.svg",
        "icons/phosphor_light/*.svg",
        "icons/phosphor_dark/*.svg"
      ],
      "matches": [
        "file:///*",
        "<all_urls>"
      ]
    }
  ],
  "icons": {
    "16": "icons/tab-local-files-16.png",
    "32": "icons/tab-local-files-32.png",
    "48": "icons/tab-local-files-48.png",
    "128": "icons/tab-local-files-128.png"
  }
}
