@geminilight/mindos 0.6.71 → 0.6.73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +27 -27
- package/_standalone/.next/build-manifest.json +3 -3
- package/_standalone/.next/cache/.previewinfo +1 -1
- package/_standalone/.next/cache/.rscinfo +1 -1
- package/_standalone/.next/cache/config.json +3 -3
- package/_standalone/.next/prerender-manifest.json +3 -3
- package/_standalone/.next/react-loadable-manifest.json +4 -4
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/page.js +1 -1
- package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/connect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changelog/page.js +1 -1
- package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +1 -1
- package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/page.js +1 -1
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/explore/page.js +1 -1
- package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/help/page.js +1 -1
- package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/login/page.js +1 -1
- package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/page.js +1 -1
- package/_standalone/.next/server/app/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/setup/page.js +1 -1
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/trash/page.js +2 -2
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
- package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app-paths-manifest.json +27 -27
- package/_standalone/.next/server/chunks/{3311.js → 2449.js} +2 -2
- package/_standalone/.next/server/chunks/5299.js +1 -1
- package/_standalone/.next/server/chunks/6022.js +34 -34
- package/_standalone/.next/server/middleware-build-manifest.js +1 -1
- package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/_standalone/.next/server/pages/500.html +2 -2
- package/_standalone/.next/server/server-reference-manifest.js +1 -1
- package/_standalone/.next/server/server-reference-manifest.json +1 -1
- package/_standalone/.next/static/chunks/{7143.879daa87569c5b02.js → 4094.09364c01df411380.js} +1 -1
- package/_standalone/.next/static/chunks/{5795.d9099a1afecd6047.js → 5331.c89084fd7f67887d.js} +2 -2
- package/_standalone/.next/static/chunks/app/{layout-a344709b8447be75.js → layout-fcbde5bee626d21a.js} +63 -63
- package/_standalone/.next/static/chunks/app/trash/page-e623ff0ab35de002.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-49c4eff6ffdb5168.js +12 -0
- package/_standalone/.next/static/chunks/{webpack-2f2787d3469d3df1.js → webpack-dc486b68118d1328.js} +1 -1
- package/_standalone/.next/trace +72 -72
- package/_standalone/package-lock.json +2 -2
- package/_standalone/package.json +1 -1
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/_standalone/.next/static/chunks/app/trash/page-0907fdd06a4467de.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-f53ce199b4a4bbb5.js +0 -12
- package/browser-extension/README.md +0 -160
- package/browser-extension/build.mjs +0 -63
- package/browser-extension/extension/background/service-worker.js +0 -1
- package/browser-extension/extension/content/extractor.js +0 -2
- package/browser-extension/extension/icons/icon-128.png +0 -0
- package/browser-extension/extension/icons/icon-128.svg +0 -4
- package/browser-extension/extension/icons/icon-16.png +0 -0
- package/browser-extension/extension/icons/icon-16.svg +0 -4
- package/browser-extension/extension/icons/icon-32.png +0 -0
- package/browser-extension/extension/icons/icon-32.svg +0 -4
- package/browser-extension/extension/icons/icon-48.png +0 -0
- package/browser-extension/extension/icons/icon-48.svg +0 -4
- package/browser-extension/extension/manifest.json +0 -47
- package/browser-extension/extension/popup/popup.css +0 -510
- package/browser-extension/extension/popup/popup.html +0 -128
- package/browser-extension/extension/popup/popup.js +0 -73
- package/browser-extension/package-lock.json +0 -617
- package/browser-extension/package.json +0 -21
- package/browser-extension/scripts/gen-icons.sh +0 -38
- package/browser-extension/src/background/service-worker.ts +0 -27
- package/browser-extension/src/content/extractor.ts +0 -44
- package/browser-extension/src/icons/icon-128.png +0 -0
- package/browser-extension/src/icons/icon-128.svg +0 -4
- package/browser-extension/src/icons/icon-16.png +0 -0
- package/browser-extension/src/icons/icon-16.svg +0 -4
- package/browser-extension/src/icons/icon-32.png +0 -0
- package/browser-extension/src/icons/icon-32.svg +0 -4
- package/browser-extension/src/icons/icon-48.png +0 -0
- package/browser-extension/src/icons/icon-48.svg +0 -4
- package/browser-extension/src/lib/api.ts +0 -146
- package/browser-extension/src/lib/markdown.ts +0 -68
- package/browser-extension/src/lib/storage.ts +0 -37
- package/browser-extension/src/lib/types.ts +0 -42
- package/browser-extension/src/manifest.json +0 -47
- package/browser-extension/src/popup/popup.css +0 -510
- package/browser-extension/src/popup/popup.html +0 -128
- package/browser-extension/src/popup/popup.ts +0 -416
- package/browser-extension/tsconfig.json +0 -16
- package/tests/e2e/README.md +0 -25
- package/tests/e2e/navigation.spec.ts +0 -14
- package/tests/e2e/playwright.config.ts +0 -14
- package/tests/integration/README.md +0 -25
- package/tests/integration/mcp-contract.test.ts +0 -57
- package/tests/integration/mcp-transport.test.ts +0 -361
- package/tests/integration/package-lock.json +0 -1463
- package/tests/integration/package.json +0 -8
- package/tests/integration/vitest.config.ts +0 -11
- package/tests/security-hardening.test.ts +0 -456
- package/tests/unit/build-integrity.test.ts +0 -137
- package/tests/unit/cli-build.test.ts +0 -180
- package/tests/unit/cli-config.test.ts +0 -257
- package/tests/unit/cli-mcp-install-toml.test.ts +0 -586
- package/tests/unit/cli-mcp-install.test.ts +0 -123
- package/tests/unit/cli-mcp-stdio-default.test.ts +0 -180
- package/tests/unit/cli-modules-load.test.ts +0 -64
- package/tests/unit/cli-port.test.ts +0 -87
- package/tests/unit/cli-skill-auto-copy.test.ts +0 -260
- package/tests/unit/cli-smoke.test.ts +0 -88
- package/tests/unit/cli-uninstall.test.ts +0 -218
- package/tests/unit/cli-update-root.test.ts +0 -89
- package/tests/unit/cli-user-flow-sim.test.ts +0 -506
- package/tests/unit/cli-wait-hint.test.ts +0 -86
- package/tests/unit/custom-agents.test.ts +0 -478
- package/tests/unit/dep-safety.test.ts +0 -126
- package/tests/unit/detect-system-lang.test.ts +0 -122
- package/tests/unit/mcp-build.test.ts +0 -162
- package/tests/unit/setup-needs-restart.test.ts +0 -139
- package/tests/unit/stop-restart.test.ts +0 -393
- package/tests/unit/vitest.config.ts +0 -8
- /package/_standalone/.next/static/{w5bqzZbd2_vdoPRB0JQ_I → Dn8EHqUedSzanCfrM8WWS}/_buildManifest.js +0 -0
- /package/_standalone/.next/static/{w5bqzZbd2_vdoPRB0JQ_I → Dn8EHqUedSzanCfrM8WWS}/_ssgManifest.js +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(()=>{var ue=Object.create;var ee=Object.defineProperty;var ge=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,me=Object.prototype.hasOwnProperty;var V=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ne=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of fe(t))!me.call(e,l)&&l!==i&&ee(e,l,{get:()=>t[l],enumerable:!(r=ge(t,l))||r.enumerable});return e};var ve=(e,t,i)=>(i=e!=null?ue(_e(e)):{},Ne(t||!e||!e.__esModule?ee(i,"default",{value:e,enumerable:!0}):i,e));var ie=V((pe,j)=>{function te(e,t){if(t&&t.documentElement)e=t,t=arguments[2];else if(!e||!e.documentElement)throw new Error("First argument to Readability constructor should be a document object.");if(t=t||{},this._doc=e,this._docJSDOMParser=this._doc.firstChild.__JSDOMParser__,this._articleTitle=null,this._articleByline=null,this._articleDir=null,this._articleSiteName=null,this._attempts=[],this._debug=!!t.debug,this._maxElemsToParse=t.maxElemsToParse||this.DEFAULT_MAX_ELEMS_TO_PARSE,this._nbTopCandidates=t.nbTopCandidates||this.DEFAULT_N_TOP_CANDIDATES,this._charThreshold=t.charThreshold||this.DEFAULT_CHAR_THRESHOLD,this._classesToPreserve=this.CLASSES_TO_PRESERVE.concat(t.classesToPreserve||[]),this._keepClasses=!!t.keepClasses,this._serializer=t.serializer||function(i){return i.innerHTML},this._disableJSONLD=!!t.disableJSONLD,this._allowedVideoRegex=t.allowedVideoRegex||this.REGEXPS.videos,this._flags=this.FLAG_STRIP_UNLIKELYS|this.FLAG_WEIGHT_CLASSES|this.FLAG_CLEAN_CONDITIONALLY,this._debug){let i=function(r){if(r.nodeType==r.TEXT_NODE)return`${r.nodeName} ("${r.textContent}")`;let l=Array.from(r.attributes||[],function(a){return`${a.name}="${a.value}"`}).join(" ");return`<${r.localName} ${l}>`};this.log=function(){if(typeof console<"u"){let l=Array.from(arguments,a=>a&&a.nodeType==this.ELEMENT_NODE?i(a):a);l.unshift("Reader: (Readability)"),console.log.apply(console,l)}else if(typeof dump<"u"){var r=Array.prototype.map.call(arguments,function(l){return l&&l.nodeName?i(l):l}).join(" ");dump("Reader: (Readability) "+r+`
|
|
2
|
-
`)}}}else this.log=function(){}}te.prototype={FLAG_STRIP_UNLIKELYS:1,FLAG_WEIGHT_CLASSES:2,FLAG_CLEAN_CONDITIONALLY:4,ELEMENT_NODE:1,TEXT_NODE:3,DEFAULT_MAX_ELEMS_TO_PARSE:0,DEFAULT_N_TOP_CANDIDATES:5,DEFAULT_TAGS_TO_SCORE:"section,h2,h3,h4,h5,h6,p,td,pre".toUpperCase().split(","),DEFAULT_CHAR_THRESHOLD:500,REGEXPS:{unlikelyCandidates:/-ad-|ai2html|banner|breadcrumbs|combx|comment|community|cover-wrap|disqus|extra|footer|gdpr|header|legends|menu|related|remark|replies|rss|shoutbox|sidebar|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote/i,okMaybeItsACandidate:/and|article|body|column|content|main|shadow/i,positive:/article|body|content|entry|hentry|h-entry|main|page|pagination|post|text|blog|story/i,negative:/-ad-|hidden|^hid$| hid$| hid |^hid |banner|combx|comment|com-|contact|foot|footer|footnote|gdpr|masthead|media|meta|outbrain|promo|related|scroll|share|shoutbox|sidebar|skyscraper|sponsor|shopping|tags|tool|widget/i,extraneous:/print|archive|comment|discuss|e[\-]?mail|share|reply|all|login|sign|single|utility/i,byline:/byline|author|dateline|writtenby|p-author/i,replaceFonts:/<(\/?)font[^>]*>/gi,normalize:/\s{2,}/g,videos:/\/\/(www\.)?((dailymotion|youtube|youtube-nocookie|player\.vimeo|v\.qq)\.com|(archive|upload\.wikimedia)\.org|player\.twitch\.tv)/i,shareElements:/(\b|_)(share|sharedaddy)(\b|_)/i,nextLink:/(next|weiter|continue|>([^\|]|$)|»([^\|]|$))/i,prevLink:/(prev|earl|old|new|<|«)/i,tokenize:/\W+/g,whitespace:/^\s*$/,hasContent:/\S$/,hashUrl:/^#.+/,srcsetUrl:/(\S+)(\s+[\d.]+[xw])?(\s*(?:,|$))/g,b64DataUrl:/^data:\s*([^\s;,]+)\s*;\s*base64\s*,/i,commas:/\u002C|\u060C|\uFE50|\uFE10|\uFE11|\u2E41|\u2E34|\u2E32|\uFF0C/g,jsonLdArticleTypes:/^Article|AdvertiserContentArticle|NewsArticle|AnalysisNewsArticle|AskPublicNewsArticle|BackgroundNewsArticle|OpinionNewsArticle|ReportageNewsArticle|ReviewNewsArticle|Report|SatiricalArticle|ScholarlyArticle|MedicalScholarlyArticle|SocialMediaPosting|BlogPosting|LiveBlogPosting|DiscussionForumPosting|TechArticle|APIReference$/},UNLIKELY_ROLES:["menu","menubar","complementary","navigation","alert","alertdialog","dialog"],DIV_TO_P_ELEMS:new Set(["BLOCKQUOTE","DL","DIV","IMG","OL","P","PRE","TABLE","UL"]),ALTER_TO_DIV_EXCEPTIONS:["DIV","ARTICLE","SECTION","P"],PRESENTATIONAL_ATTRIBUTES:["align","background","bgcolor","border","cellpadding","cellspacing","frame","hspace","rules","style","valign","vspace"],DEPRECATED_SIZE_ATTRIBUTE_ELEMS:["TABLE","TH","TD","HR","PRE"],PHRASING_ELEMS:["ABBR","AUDIO","B","BDO","BR","BUTTON","CITE","CODE","DATA","DATALIST","DFN","EM","EMBED","I","IMG","INPUT","KBD","LABEL","MARK","MATH","METER","NOSCRIPT","OBJECT","OUTPUT","PROGRESS","Q","RUBY","SAMP","SCRIPT","SELECT","SMALL","SPAN","STRONG","SUB","SUP","TEXTAREA","TIME","VAR","WBR"],CLASSES_TO_PRESERVE:["page"],HTML_ESCAPE_MAP:{lt:"<",gt:">",amp:"&",quot:'"',apos:"'"},_postProcessContent:function(e){this._fixRelativeUris(e),this._simplifyNestedElements(e),this._keepClasses||this._cleanClasses(e)},_removeNodes:function(e,t){if(this._docJSDOMParser&&e._isLiveNodeList)throw new Error("Do not pass live node lists to _removeNodes");for(var i=e.length-1;i>=0;i--){var r=e[i],l=r.parentNode;l&&(!t||t.call(this,r,i,e))&&l.removeChild(r)}},_replaceNodeTags:function(e,t){if(this._docJSDOMParser&&e._isLiveNodeList)throw new Error("Do not pass live node lists to _replaceNodeTags");for(let i of e)this._setNodeTag(i,t)},_forEachNode:function(e,t){Array.prototype.forEach.call(e,t,this)},_findNode:function(e,t){return Array.prototype.find.call(e,t,this)},_someNode:function(e,t){return Array.prototype.some.call(e,t,this)},_everyNode:function(e,t){return Array.prototype.every.call(e,t,this)},_concatNodeLists:function(){var e=Array.prototype.slice,t=e.call(arguments),i=t.map(function(r){return e.call(r)});return Array.prototype.concat.apply([],i)},_getAllNodesWithTag:function(e,t){return e.querySelectorAll?e.querySelectorAll(t.join(",")):[].concat.apply([],t.map(function(i){var r=e.getElementsByTagName(i);return Array.isArray(r)?r:Array.from(r)}))},_cleanClasses:function(e){var t=this._classesToPreserve,i=(e.getAttribute("class")||"").split(/\s+/).filter(function(r){return t.indexOf(r)!=-1}).join(" ");for(i?e.setAttribute("class",i):e.removeAttribute("class"),e=e.firstElementChild;e;e=e.nextElementSibling)this._cleanClasses(e)},_fixRelativeUris:function(e){var t=this._doc.baseURI,i=this._doc.documentURI;function r(s){if(t==i&&s.charAt(0)=="#")return s;try{return new URL(s,t).href}catch{}return s}var l=this._getAllNodesWithTag(e,["a"]);this._forEachNode(l,function(s){var h=s.getAttribute("href");if(h)if(h.indexOf("javascript:")===0)if(s.childNodes.length===1&&s.childNodes[0].nodeType===this.TEXT_NODE){var o=this._doc.createTextNode(s.textContent);s.parentNode.replaceChild(o,s)}else{for(var n=this._doc.createElement("span");s.firstChild;)n.appendChild(s.firstChild);s.parentNode.replaceChild(n,s)}else s.setAttribute("href",r(h))});var a=this._getAllNodesWithTag(e,["img","picture","figure","video","audio","source"]);this._forEachNode(a,function(s){var h=s.getAttribute("src"),o=s.getAttribute("poster"),n=s.getAttribute("srcset");if(h&&s.setAttribute("src",r(h)),o&&s.setAttribute("poster",r(o)),n){var u=n.replace(this.REGEXPS.srcsetUrl,function(m,y,N,E){return r(y)+(N||"")+E});s.setAttribute("srcset",u)}})},_simplifyNestedElements:function(e){for(var t=e;t;){if(t.parentNode&&["DIV","SECTION"].includes(t.tagName)&&!(t.id&&t.id.startsWith("readability"))){if(this._isElementWithoutContent(t)){t=this._removeAndGetNext(t);continue}else if(this._hasSingleTagInsideElement(t,"DIV")||this._hasSingleTagInsideElement(t,"SECTION")){for(var i=t.children[0],r=0;r<t.attributes.length;r++)i.setAttribute(t.attributes[r].name,t.attributes[r].value);t.parentNode.replaceChild(i,t),t=i;continue}}t=this._getNextNode(t)}},_getArticleTitle:function(){var e=this._doc,t="",i="";try{t=i=e.title.trim(),typeof t!="string"&&(t=i=this._getInnerText(e.getElementsByTagName("title")[0]))}catch{}var r=!1;function l(u){return u.split(/\s+/).length}if(/ [\|\-\\\/>»] /.test(t))r=/ [\\\/>»] /.test(t),t=i.replace(/(.*)[\|\-\\\/>»] .*/gi,"$1"),l(t)<3&&(t=i.replace(/[^\|\-\\\/>»]*[\|\-\\\/>»](.*)/gi,"$1"));else if(t.indexOf(": ")!==-1){var a=this._concatNodeLists(e.getElementsByTagName("h1"),e.getElementsByTagName("h2")),s=t.trim(),h=this._someNode(a,function(u){return u.textContent.trim()===s});h||(t=i.substring(i.lastIndexOf(":")+1),l(t)<3?t=i.substring(i.indexOf(":")+1):l(i.substr(0,i.indexOf(":")))>5&&(t=i))}else if(t.length>150||t.length<15){var o=e.getElementsByTagName("h1");o.length===1&&(t=this._getInnerText(o[0]))}t=t.trim().replace(this.REGEXPS.normalize," ");var n=l(t);return n<=4&&(!r||n!=l(i.replace(/[\|\-\\\/>»]+/g,""))-1)&&(t=i),t},_prepDocument:function(){var e=this._doc;this._removeNodes(this._getAllNodesWithTag(e,["style"])),e.body&&this._replaceBrs(e.body),this._replaceNodeTags(this._getAllNodesWithTag(e,["font"]),"SPAN")},_nextNode:function(e){for(var t=e;t&&t.nodeType!=this.ELEMENT_NODE&&this.REGEXPS.whitespace.test(t.textContent);)t=t.nextSibling;return t},_replaceBrs:function(e){this._forEachNode(this._getAllNodesWithTag(e,["br"]),function(t){for(var i=t.nextSibling,r=!1;(i=this._nextNode(i))&&i.tagName=="BR";){r=!0;var l=i.nextSibling;i.parentNode.removeChild(i),i=l}if(r){var a=this._doc.createElement("p");for(t.parentNode.replaceChild(a,t),i=a.nextSibling;i;){if(i.tagName=="BR"){var s=this._nextNode(i.nextSibling);if(s&&s.tagName=="BR")break}if(!this._isPhrasingContent(i))break;var h=i.nextSibling;a.appendChild(i),i=h}for(;a.lastChild&&this._isWhitespace(a.lastChild);)a.removeChild(a.lastChild);a.parentNode.tagName==="P"&&this._setNodeTag(a.parentNode,"DIV")}})},_setNodeTag:function(e,t){if(this.log("_setNodeTag",e,t),this._docJSDOMParser)return e.localName=t.toLowerCase(),e.tagName=t.toUpperCase(),e;for(var i=e.ownerDocument.createElement(t);e.firstChild;)i.appendChild(e.firstChild);e.parentNode.replaceChild(i,e),e.readability&&(i.readability=e.readability);for(var r=0;r<e.attributes.length;r++)try{i.setAttribute(e.attributes[r].name,e.attributes[r].value)}catch{}return i},_prepArticle:function(e){this._cleanStyles(e),this._markDataTables(e),this._fixLazyImages(e),this._cleanConditionally(e,"form"),this._cleanConditionally(e,"fieldset"),this._clean(e,"object"),this._clean(e,"embed"),this._clean(e,"footer"),this._clean(e,"link"),this._clean(e,"aside");var t=this.DEFAULT_CHAR_THRESHOLD;this._forEachNode(e.children,function(i){this._cleanMatchedNodes(i,function(r,l){return this.REGEXPS.shareElements.test(l)&&r.textContent.length<t})}),this._clean(e,"iframe"),this._clean(e,"input"),this._clean(e,"textarea"),this._clean(e,"select"),this._clean(e,"button"),this._cleanHeaders(e),this._cleanConditionally(e,"table"),this._cleanConditionally(e,"ul"),this._cleanConditionally(e,"div"),this._replaceNodeTags(this._getAllNodesWithTag(e,["h1"]),"h2"),this._removeNodes(this._getAllNodesWithTag(e,["p"]),function(i){var r=i.getElementsByTagName("img").length,l=i.getElementsByTagName("embed").length,a=i.getElementsByTagName("object").length,s=i.getElementsByTagName("iframe").length,h=r+l+a+s;return h===0&&!this._getInnerText(i,!1)}),this._forEachNode(this._getAllNodesWithTag(e,["br"]),function(i){var r=this._nextNode(i.nextSibling);r&&r.tagName=="P"&&i.parentNode.removeChild(i)}),this._forEachNode(this._getAllNodesWithTag(e,["table"]),function(i){var r=this._hasSingleTagInsideElement(i,"TBODY")?i.firstElementChild:i;if(this._hasSingleTagInsideElement(r,"TR")){var l=r.firstElementChild;if(this._hasSingleTagInsideElement(l,"TD")){var a=l.firstElementChild;a=this._setNodeTag(a,this._everyNode(a.childNodes,this._isPhrasingContent)?"P":"DIV"),i.parentNode.replaceChild(a,i)}}})},_initializeNode:function(e){switch(e.readability={contentScore:0},e.tagName){case"DIV":e.readability.contentScore+=5;break;case"PRE":case"TD":case"BLOCKQUOTE":e.readability.contentScore+=3;break;case"ADDRESS":case"OL":case"UL":case"DL":case"DD":case"DT":case"LI":case"FORM":e.readability.contentScore-=3;break;case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"TH":e.readability.contentScore-=5;break}e.readability.contentScore+=this._getClassWeight(e)},_removeAndGetNext:function(e){var t=this._getNextNode(e,!0);return e.parentNode.removeChild(e),t},_getNextNode:function(e,t){if(!t&&e.firstElementChild)return e.firstElementChild;if(e.nextElementSibling)return e.nextElementSibling;do e=e.parentNode;while(e&&!e.nextElementSibling);return e&&e.nextElementSibling},_textSimilarity:function(e,t){var i=e.toLowerCase().split(this.REGEXPS.tokenize).filter(Boolean),r=t.toLowerCase().split(this.REGEXPS.tokenize).filter(Boolean);if(!i.length||!r.length)return 0;var l=r.filter(s=>!i.includes(s)),a=l.join(" ").length/r.join(" ").length;return 1-a},_checkByline:function(e,t){if(this._articleByline)return!1;if(e.getAttribute!==void 0)var i=e.getAttribute("rel"),r=e.getAttribute("itemprop");return(i==="author"||r&&r.indexOf("author")!==-1||this.REGEXPS.byline.test(t))&&this._isValidByline(e.textContent)?(this._articleByline=e.textContent.trim(),!0):!1},_getNodeAncestors:function(e,t){t=t||0;for(var i=0,r=[];e.parentNode&&(r.push(e.parentNode),!(t&&++i===t));)e=e.parentNode;return r},_grabArticle:function(e){this.log("**** grabArticle ****");var t=this._doc,i=e!==null;if(e=e||this._doc.body,!e)return this.log("No body found in document. Abort."),null;for(var r=e.innerHTML;;){this.log("Starting grabArticle loop");var l=this._flagIsActive(this.FLAG_STRIP_UNLIKELYS),a=[],s=this._doc.documentElement;let Q=!0;for(;s;){s.tagName==="HTML"&&(this._articleLang=s.getAttribute("lang"));var h=s.className+" "+s.id;if(!this._isProbablyVisible(s)){this.log("Removing hidden node - "+h),s=this._removeAndGetNext(s);continue}if(s.getAttribute("aria-modal")=="true"&&s.getAttribute("role")=="dialog"){s=this._removeAndGetNext(s);continue}if(this._checkByline(s,h)){s=this._removeAndGetNext(s);continue}if(Q&&this._headerDuplicatesTitle(s)){this.log("Removing header: ",s.textContent.trim(),this._articleTitle.trim()),Q=!1,s=this._removeAndGetNext(s);continue}if(l){if(this.REGEXPS.unlikelyCandidates.test(h)&&!this.REGEXPS.okMaybeItsACandidate.test(h)&&!this._hasAncestorTag(s,"table")&&!this._hasAncestorTag(s,"code")&&s.tagName!=="BODY"&&s.tagName!=="A"){this.log("Removing unlikely candidate - "+h),s=this._removeAndGetNext(s);continue}if(this.UNLIKELY_ROLES.includes(s.getAttribute("role"))){this.log("Removing content with role "+s.getAttribute("role")+" - "+h),s=this._removeAndGetNext(s);continue}}if((s.tagName==="DIV"||s.tagName==="SECTION"||s.tagName==="HEADER"||s.tagName==="H1"||s.tagName==="H2"||s.tagName==="H3"||s.tagName==="H4"||s.tagName==="H5"||s.tagName==="H6")&&this._isElementWithoutContent(s)){s=this._removeAndGetNext(s);continue}if(this.DEFAULT_TAGS_TO_SCORE.indexOf(s.tagName)!==-1&&a.push(s),s.tagName==="DIV"){for(var o=null,n=s.firstChild;n;){var u=n.nextSibling;if(this._isPhrasingContent(n))o!==null?o.appendChild(n):this._isWhitespace(n)||(o=t.createElement("p"),s.replaceChild(o,n),o.appendChild(n));else if(o!==null){for(;o.lastChild&&this._isWhitespace(o.lastChild);)o.removeChild(o.lastChild);o=null}n=u}if(this._hasSingleTagInsideElement(s,"P")&&this._getLinkDensity(s)<.25){var m=s.children[0];s.parentNode.replaceChild(m,s),s=m,a.push(s)}else this._hasChildBlockElement(s)||(s=this._setNodeTag(s,"P"),a.push(s))}s=this._getNextNode(s)}var y=[];this._forEachNode(a,function(d){if(!(!d.parentNode||typeof d.parentNode.tagName>"u")){var b=this._getInnerText(d);if(!(b.length<25)){var Z=this._getNodeAncestors(d,5);if(Z.length!==0){var B=0;B+=1,B+=b.split(this.REGEXPS.commas).length,B+=Math.min(Math.floor(b.length/100),3),this._forEachNode(Z,function(S,F){if(!(!S.tagName||!S.parentNode||typeof S.parentNode.tagName>"u")){if(typeof S.readability>"u"&&(this._initializeNode(S),y.push(S)),F===0)var X=1;else F===1?X=2:X=F*3;S.readability.contentScore+=B/X}})}}}});for(var N=[],E=0,A=y.length;E<A;E+=1){var v=y[E],T=v.readability.contentScore*(1-this._getLinkDensity(v));v.readability.contentScore=T,this.log("Candidate:",v,"with score "+T);for(var p=0;p<this._nbTopCandidates;p++){var x=N[p];if(!x||T>x.readability.contentScore){N.splice(p,0,v),N.length>this._nbTopCandidates&&N.pop();break}}}var c=N[0]||null,L=!1,g;if(c===null||c.tagName==="BODY"){for(c=t.createElement("DIV"),L=!0;e.firstChild;)this.log("Moving child out:",e.firstChild),c.appendChild(e.firstChild);e.appendChild(c),this._initializeNode(c)}else if(c){for(var R=[],P=1;P<N.length;P++)N[P].readability.contentScore/c.readability.contentScore>=.75&&R.push(this._getNodeAncestors(N[P]));var O=3;if(R.length>=O)for(g=c.parentNode;g.tagName!=="BODY";){for(var G=0,M=0;M<R.length&&G<O;M++)G+=Number(R[M].includes(g));if(G>=O){c=g;break}g=g.parentNode}c.readability||this._initializeNode(c),g=c.parentNode;for(var H=c.readability.contentScore,he=H/3;g.tagName!=="BODY";){if(!g.readability){g=g.parentNode;continue}var Y=g.readability.contentScore;if(Y<he)break;if(Y>H){c=g;break}H=g.readability.contentScore,g=g.parentNode}for(g=c.parentNode;g.tagName!="BODY"&&g.children.length==1;)c=g,g=c.parentNode;c.readability||this._initializeNode(c)}var _=t.createElement("DIV");i&&(_.id="readability-content");var oe=Math.max(10,c.readability.contentScore*.2);g=c.parentNode;for(var k=g.children,w=0,q=k.length;w<q;w++){var f=k[w],I=!1;if(this.log("Looking at sibling node:",f,f.readability?"with score "+f.readability.contentScore:""),this.log("Sibling has score",f.readability?f.readability.contentScore:"Unknown"),f===c)I=!0;else{var z=0;if(f.className===c.className&&c.className!==""&&(z+=c.readability.contentScore*.2),f.readability&&f.readability.contentScore+z>=oe)I=!0;else if(f.nodeName==="P"){var J=this._getLinkDensity(f),K=this._getInnerText(f),U=K.length;(U>80&&J<.25||U<80&&U>0&&J===0&&K.search(/\.( |$)/)!==-1)&&(I=!0)}}I&&(this.log("Appending node:",f),this.ALTER_TO_DIV_EXCEPTIONS.indexOf(f.nodeName)===-1&&(this.log("Altering sibling:",f,"to div."),f=this._setNodeTag(f,"DIV")),_.appendChild(f),k=g.children,w-=1,q-=1)}if(this._debug&&this.log("Article content pre-prep: "+_.innerHTML),this._prepArticle(_),this._debug&&this.log("Article content post-prep: "+_.innerHTML),L)c.id="readability-page-1",c.className="page";else{var C=t.createElement("DIV");for(C.id="readability-page-1",C.className="page";_.firstChild;)C.appendChild(_.firstChild);_.appendChild(C)}this._debug&&this.log("Article content after paging: "+_.innerHTML);var W=!0,D=this._getInnerText(_,!0).length;if(D<this._charThreshold)if(W=!1,e.innerHTML=r,this._flagIsActive(this.FLAG_STRIP_UNLIKELYS))this._removeFlag(this.FLAG_STRIP_UNLIKELYS),this._attempts.push({articleContent:_,textLength:D});else if(this._flagIsActive(this.FLAG_WEIGHT_CLASSES))this._removeFlag(this.FLAG_WEIGHT_CLASSES),this._attempts.push({articleContent:_,textLength:D});else if(this._flagIsActive(this.FLAG_CLEAN_CONDITIONALLY))this._removeFlag(this.FLAG_CLEAN_CONDITIONALLY),this._attempts.push({articleContent:_,textLength:D});else{if(this._attempts.push({articleContent:_,textLength:D}),this._attempts.sort(function(d,b){return b.textLength-d.textLength}),!this._attempts[0].textLength)return null;_=this._attempts[0].articleContent,W=!0}if(W){var ce=[g,c].concat(this._getNodeAncestors(g));return this._someNode(ce,function(d){if(!d.tagName)return!1;var b=d.getAttribute("dir");return b?(this._articleDir=b,!0):!1}),_}}},_isValidByline:function(e){return typeof e=="string"||e instanceof String?(e=e.trim(),e.length>0&&e.length<100):!1},_unescapeHtmlEntities:function(e){if(!e)return e;var t=this.HTML_ESCAPE_MAP;return e.replace(/&(quot|amp|apos|lt|gt);/g,function(i,r){return t[r]}).replace(/&#(?:x([0-9a-z]{1,4})|([0-9]{1,4}));/gi,function(i,r,l){var a=parseInt(r||l,r?16:10);return String.fromCharCode(a)})},_getJSONLD:function(e){var t=this._getAllNodesWithTag(e,["script"]),i;return this._forEachNode(t,function(r){if(!i&&r.getAttribute("type")==="application/ld+json")try{var l=r.textContent.replace(/^\s*<!\[CDATA\[|\]\]>\s*$/g,""),a=JSON.parse(l);if(!a["@context"]||!a["@context"].match(/^https?\:\/\/schema\.org$/)||(!a["@type"]&&Array.isArray(a["@graph"])&&(a=a["@graph"].find(function(n){return(n["@type"]||"").match(this.REGEXPS.jsonLdArticleTypes)})),!a||!a["@type"]||!a["@type"].match(this.REGEXPS.jsonLdArticleTypes)))return;if(i={},typeof a.name=="string"&&typeof a.headline=="string"&&a.name!==a.headline){var s=this._getArticleTitle(),h=this._textSimilarity(a.name,s)>.75,o=this._textSimilarity(a.headline,s)>.75;o&&!h?i.title=a.headline:i.title=a.name}else typeof a.name=="string"?i.title=a.name.trim():typeof a.headline=="string"&&(i.title=a.headline.trim());a.author&&(typeof a.author.name=="string"?i.byline=a.author.name.trim():Array.isArray(a.author)&&a.author[0]&&typeof a.author[0].name=="string"&&(i.byline=a.author.filter(function(n){return n&&typeof n.name=="string"}).map(function(n){return n.name.trim()}).join(", "))),typeof a.description=="string"&&(i.excerpt=a.description.trim()),a.publisher&&typeof a.publisher.name=="string"&&(i.siteName=a.publisher.name.trim()),typeof a.datePublished=="string"&&(i.datePublished=a.datePublished.trim());return}catch(n){this.log(n.message)}}),i||{}},_getArticleMetadata:function(e){var t={},i={},r=this._doc.getElementsByTagName("meta"),l=/\s*(article|dc|dcterm|og|twitter)\s*:\s*(author|creator|description|published_time|title|site_name)\s*/gi,a=/^\s*(?:(dc|dcterm|og|twitter|weibo:(article|webpage))\s*[\.:]\s*)?(author|creator|description|title|site_name)\s*$/i;return this._forEachNode(r,function(s){var h=s.getAttribute("name"),o=s.getAttribute("property"),n=s.getAttribute("content");if(n){var u=null,m=null;o&&(u=o.match(l),u&&(m=u[0].toLowerCase().replace(/\s/g,""),i[m]=n.trim())),!u&&h&&a.test(h)&&(m=h,n&&(m=m.toLowerCase().replace(/\s/g,"").replace(/\./g,":"),i[m]=n.trim()))}}),t.title=e.title||i["dc:title"]||i["dcterm:title"]||i["og:title"]||i["weibo:article:title"]||i["weibo:webpage:title"]||i.title||i["twitter:title"],t.title||(t.title=this._getArticleTitle()),t.byline=e.byline||i["dc:creator"]||i["dcterm:creator"]||i.author,t.excerpt=e.excerpt||i["dc:description"]||i["dcterm:description"]||i["og:description"]||i["weibo:article:description"]||i["weibo:webpage:description"]||i.description||i["twitter:description"],t.siteName=e.siteName||i["og:site_name"],t.publishedTime=e.datePublished||i["article:published_time"]||null,t.title=this._unescapeHtmlEntities(t.title),t.byline=this._unescapeHtmlEntities(t.byline),t.excerpt=this._unescapeHtmlEntities(t.excerpt),t.siteName=this._unescapeHtmlEntities(t.siteName),t.publishedTime=this._unescapeHtmlEntities(t.publishedTime),t},_isSingleImage:function(e){return e.tagName==="IMG"?!0:e.children.length!==1||e.textContent.trim()!==""?!1:this._isSingleImage(e.children[0])},_unwrapNoscriptImages:function(e){var t=Array.from(e.getElementsByTagName("img"));this._forEachNode(t,function(r){for(var l=0;l<r.attributes.length;l++){var a=r.attributes[l];switch(a.name){case"src":case"srcset":case"data-src":case"data-srcset":return}if(/\.(jpg|jpeg|png|webp)/i.test(a.value))return}r.parentNode.removeChild(r)});var i=Array.from(e.getElementsByTagName("noscript"));this._forEachNode(i,function(r){var l=e.createElement("div");if(l.innerHTML=r.innerHTML,!!this._isSingleImage(l)){var a=r.previousElementSibling;if(a&&this._isSingleImage(a)){var s=a;s.tagName!=="IMG"&&(s=a.getElementsByTagName("img")[0]);for(var h=l.getElementsByTagName("img")[0],o=0;o<s.attributes.length;o++){var n=s.attributes[o];if(n.value!==""&&(n.name==="src"||n.name==="srcset"||/\.(jpg|jpeg|png|webp)/i.test(n.value))){if(h.getAttribute(n.name)===n.value)continue;var u=n.name;h.hasAttribute(u)&&(u="data-old-"+u),h.setAttribute(u,n.value)}}r.parentNode.replaceChild(l.firstElementChild,a)}}})},_removeScripts:function(e){this._removeNodes(this._getAllNodesWithTag(e,["script","noscript"]))},_hasSingleTagInsideElement:function(e,t){return e.children.length!=1||e.children[0].tagName!==t?!1:!this._someNode(e.childNodes,function(i){return i.nodeType===this.TEXT_NODE&&this.REGEXPS.hasContent.test(i.textContent)})},_isElementWithoutContent:function(e){return e.nodeType===this.ELEMENT_NODE&&e.textContent.trim().length==0&&(e.children.length==0||e.children.length==e.getElementsByTagName("br").length+e.getElementsByTagName("hr").length)},_hasChildBlockElement:function(e){return this._someNode(e.childNodes,function(t){return this.DIV_TO_P_ELEMS.has(t.tagName)||this._hasChildBlockElement(t)})},_isPhrasingContent:function(e){return e.nodeType===this.TEXT_NODE||this.PHRASING_ELEMS.indexOf(e.tagName)!==-1||(e.tagName==="A"||e.tagName==="DEL"||e.tagName==="INS")&&this._everyNode(e.childNodes,this._isPhrasingContent)},_isWhitespace:function(e){return e.nodeType===this.TEXT_NODE&&e.textContent.trim().length===0||e.nodeType===this.ELEMENT_NODE&&e.tagName==="BR"},_getInnerText:function(e,t){t=typeof t>"u"?!0:t;var i=e.textContent.trim();return t?i.replace(this.REGEXPS.normalize," "):i},_getCharCount:function(e,t){return t=t||",",this._getInnerText(e).split(t).length-1},_cleanStyles:function(e){if(!(!e||e.tagName.toLowerCase()==="svg")){for(var t=0;t<this.PRESENTATIONAL_ATTRIBUTES.length;t++)e.removeAttribute(this.PRESENTATIONAL_ATTRIBUTES[t]);this.DEPRECATED_SIZE_ATTRIBUTE_ELEMS.indexOf(e.tagName)!==-1&&(e.removeAttribute("width"),e.removeAttribute("height"));for(var i=e.firstElementChild;i!==null;)this._cleanStyles(i),i=i.nextElementSibling}},_getLinkDensity:function(e){var t=this._getInnerText(e).length;if(t===0)return 0;var i=0;return this._forEachNode(e.getElementsByTagName("a"),function(r){var l=r.getAttribute("href"),a=l&&this.REGEXPS.hashUrl.test(l)?.3:1;i+=this._getInnerText(r).length*a}),i/t},_getClassWeight:function(e){if(!this._flagIsActive(this.FLAG_WEIGHT_CLASSES))return 0;var t=0;return typeof e.className=="string"&&e.className!==""&&(this.REGEXPS.negative.test(e.className)&&(t-=25),this.REGEXPS.positive.test(e.className)&&(t+=25)),typeof e.id=="string"&&e.id!==""&&(this.REGEXPS.negative.test(e.id)&&(t-=25),this.REGEXPS.positive.test(e.id)&&(t+=25)),t},_clean:function(e,t){var i=["object","embed","iframe"].indexOf(t)!==-1;this._removeNodes(this._getAllNodesWithTag(e,[t]),function(r){if(i){for(var l=0;l<r.attributes.length;l++)if(this._allowedVideoRegex.test(r.attributes[l].value))return!1;if(r.tagName==="object"&&this._allowedVideoRegex.test(r.innerHTML))return!1}return!0})},_hasAncestorTag:function(e,t,i,r){i=i||3,t=t.toUpperCase();for(var l=0;e.parentNode;){if(i>0&&l>i)return!1;if(e.parentNode.tagName===t&&(!r||r(e.parentNode)))return!0;e=e.parentNode,l++}return!1},_getRowAndColumnCount:function(e){for(var t=0,i=0,r=e.getElementsByTagName("tr"),l=0;l<r.length;l++){var a=r[l].getAttribute("rowspan")||0;a&&(a=parseInt(a,10)),t+=a||1;for(var s=0,h=r[l].getElementsByTagName("td"),o=0;o<h.length;o++){var n=h[o].getAttribute("colspan")||0;n&&(n=parseInt(n,10)),s+=n||1}i=Math.max(i,s)}return{rows:t,columns:i}},_markDataTables:function(e){for(var t=e.getElementsByTagName("table"),i=0;i<t.length;i++){var r=t[i],l=r.getAttribute("role");if(l=="presentation"){r._readabilityDataTable=!1;continue}var a=r.getAttribute("datatable");if(a=="0"){r._readabilityDataTable=!1;continue}var s=r.getAttribute("summary");if(s){r._readabilityDataTable=!0;continue}var h=r.getElementsByTagName("caption")[0];if(h&&h.childNodes.length>0){r._readabilityDataTable=!0;continue}var o=["col","colgroup","tfoot","thead","th"],n=function(m){return!!r.getElementsByTagName(m)[0]};if(o.some(n)){this.log("Data table because found data-y descendant"),r._readabilityDataTable=!0;continue}if(r.getElementsByTagName("table")[0]){r._readabilityDataTable=!1;continue}var u=this._getRowAndColumnCount(r);if(u.rows>=10||u.columns>4){r._readabilityDataTable=!0;continue}r._readabilityDataTable=u.rows*u.columns>10}},_fixLazyImages:function(e){this._forEachNode(this._getAllNodesWithTag(e,["img","picture","figure"]),function(t){if(t.src&&this.REGEXPS.b64DataUrl.test(t.src)){var i=this.REGEXPS.b64DataUrl.exec(t.src);if(i[1]==="image/svg+xml")return;for(var r=!1,l=0;l<t.attributes.length;l++){var a=t.attributes[l];if(a.name!=="src"&&/\.(jpg|jpeg|png|webp)/i.test(a.value)){r=!0;break}}if(r){var s=t.src.search(/base64\s*/i)+7,h=t.src.length-s;h<133&&t.removeAttribute("src")}}if(!((t.src||t.srcset&&t.srcset!="null")&&t.className.toLowerCase().indexOf("lazy")===-1)){for(var o=0;o<t.attributes.length;o++)if(a=t.attributes[o],!(a.name==="src"||a.name==="srcset"||a.name==="alt")){var n=null;if(/\.(jpg|jpeg|png|webp)\s+\d/.test(a.value)?n="srcset":/^\s*\S+\.(jpg|jpeg|png|webp)\S*\s*$/.test(a.value)&&(n="src"),n){if(t.tagName==="IMG"||t.tagName==="PICTURE")t.setAttribute(n,a.value);else if(t.tagName==="FIGURE"&&!this._getAllNodesWithTag(t,["img","picture"]).length){var u=this._doc.createElement("img");u.setAttribute(n,a.value),t.appendChild(u)}}}}})},_getTextDensity:function(e,t){var i=this._getInnerText(e,!0).length;if(i===0)return 0;var r=0,l=this._getAllNodesWithTag(e,t);return this._forEachNode(l,a=>r+=this._getInnerText(a,!0).length),r/i},_cleanConditionally:function(e,t){this._flagIsActive(this.FLAG_CLEAN_CONDITIONALLY)&&this._removeNodes(this._getAllNodesWithTag(e,[t]),function(i){var r=function(g){return g._readabilityDataTable},l=t==="ul"||t==="ol";if(!l){var a=0,s=this._getAllNodesWithTag(i,["ul","ol"]);this._forEachNode(s,g=>a+=this._getInnerText(g).length),l=a/this._getInnerText(i).length>.9}if(t==="table"&&r(i)||this._hasAncestorTag(i,"table",-1,r)||this._hasAncestorTag(i,"code"))return!1;var h=this._getClassWeight(i);this.log("Cleaning Conditionally",i);var o=0;if(h+o<0)return!0;if(this._getCharCount(i,",")<10){for(var n=i.getElementsByTagName("p").length,u=i.getElementsByTagName("img").length,m=i.getElementsByTagName("li").length-100,y=i.getElementsByTagName("input").length,N=this._getTextDensity(i,["h1","h2","h3","h4","h5","h6"]),E=0,A=this._getAllNodesWithTag(i,["object","embed","iframe"]),v=0;v<A.length;v++){for(var T=0;T<A[v].attributes.length;T++)if(this._allowedVideoRegex.test(A[v].attributes[T].value))return!1;if(A[v].tagName==="object"&&this._allowedVideoRegex.test(A[v].innerHTML))return!1;E++}var p=this._getLinkDensity(i),x=this._getInnerText(i).length,c=u>1&&n/u<.5&&!this._hasAncestorTag(i,"figure")||!l&&m>n||y>Math.floor(n/3)||!l&&N<.9&&x<25&&(u===0||u>2)&&!this._hasAncestorTag(i,"figure")||!l&&h<25&&p>.2||h>=25&&p>.5||E===1&&x<75||E>1;if(l&&c){for(var L=0;L<i.children.length;L++)if(i.children[L].children.length>1)return c;let g=i.getElementsByTagName("li").length;if(u==g)return!1}return c}return!1})},_cleanMatchedNodes:function(e,t){for(var i=this._getNextNode(e,!0),r=this._getNextNode(e);r&&r!=i;)t.call(this,r,r.className+" "+r.id)?r=this._removeAndGetNext(r):r=this._getNextNode(r)},_cleanHeaders:function(e){let t=this._getAllNodesWithTag(e,["h1","h2"]);this._removeNodes(t,function(i){let r=this._getClassWeight(i)<0;return r&&this.log("Removing header with low class weight:",i),r})},_headerDuplicatesTitle:function(e){if(e.tagName!="H1"&&e.tagName!="H2")return!1;var t=this._getInnerText(e,!1);return this.log("Evaluating similarity of header:",t,this._articleTitle),this._textSimilarity(this._articleTitle,t)>.75},_flagIsActive:function(e){return(this._flags&e)>0},_removeFlag:function(e){this._flags=this._flags&~e},_isProbablyVisible:function(e){return(!e.style||e.style.display!="none")&&(!e.style||e.style.visibility!="hidden")&&!e.hasAttribute("hidden")&&(!e.hasAttribute("aria-hidden")||e.getAttribute("aria-hidden")!="true"||e.className&&e.className.indexOf&&e.className.indexOf("fallback-image")!==-1)},parse:function(){if(this._maxElemsToParse>0){var e=this._doc.getElementsByTagName("*").length;if(e>this._maxElemsToParse)throw new Error("Aborting parsing document; "+e+" elements found")}this._unwrapNoscriptImages(this._doc);var t=this._disableJSONLD?{}:this._getJSONLD(this._doc);this._removeScripts(this._doc),this._prepDocument();var i=this._getArticleMetadata(t);this._articleTitle=i.title;var r=this._grabArticle();if(!r)return null;if(this.log("Grabbed: "+r.innerHTML),this._postProcessContent(r),!i.excerpt){var l=r.getElementsByTagName("p");l.length>0&&(i.excerpt=l[0].textContent.trim())}var a=r.textContent;return{title:this._articleTitle,byline:i.byline||this._articleByline,dir:this._articleDir,lang:this._articleLang,content:this._serializer(r),textContent:a,length:a.length,excerpt:i.excerpt,siteName:i.siteName||this._articleSiteName,publishedTime:i.publishedTime}}};typeof j=="object"&&(j.exports=te)});var ae=V((Se,$)=>{var re={unlikelyCandidates:/-ad-|ai2html|banner|breadcrumbs|combx|comment|community|cover-wrap|disqus|extra|footer|gdpr|header|legends|menu|related|remark|replies|rss|shoutbox|sidebar|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote/i,okMaybeItsACandidate:/and|article|body|column|content|main|shadow/i};function Ee(e){return(!e.style||e.style.display!="none")&&!e.hasAttribute("hidden")&&(!e.hasAttribute("aria-hidden")||e.getAttribute("aria-hidden")!="true"||e.className&&e.className.indexOf&&e.className.indexOf("fallback-image")!==-1)}function de(e,t={}){typeof t=="function"&&(t={visibilityChecker:t});var i={minScore:20,minContentLength:140,visibilityChecker:Ee};t=Object.assign(i,t);var r=e.querySelectorAll("p, pre, article"),l=e.querySelectorAll("div > br");if(l.length){var a=new Set(r);[].forEach.call(l,function(h){a.add(h.parentNode)}),r=Array.from(a)}var s=0;return[].some.call(r,function(h){if(!t.visibilityChecker(h))return!1;var o=h.className+" "+h.id;if(re.unlikelyCandidates.test(o)&&!re.okMaybeItsACandidate.test(o)||h.matches("li p"))return!1;var n=h.textContent.trim().length;return n<t.minContentLength?!1:(s+=Math.sqrt(n-t.minContentLength),s>t.minScore)})}typeof $=="object"&&($.exports=de)});var le=V((Le,se)=>{var be=ie(),ye=ae();se.exports={Readability:be,isProbablyReaderable:ye}});var ne=ve(le());function Ae(){let e=document.cloneNode(!0),i=new ne.Readability(e,{charThreshold:100}).parse(),r=i?.title||document.title||"Untitled",l=i?.content||document.body.innerHTML,a=i?.textContent||document.body.textContent||"",s=a.split(/\s+/).filter(Boolean).length,h=(a.match(/[\u4e00-\u9fff\u3400-\u4dbf\uac00-\ud7af]/g)||[]).length,o=h>s?h:s;return{title:r,byline:i?.byline||null,excerpt:i?.excerpt||null,content:l,textContent:a,siteName:i?.siteName||null,url:window.location.href,savedAt:new Date().toISOString(),wordCount:o}}window.__mindosClipResult=Ae();})();
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
|
|
2
|
-
<rect width="128" height="128" rx="20" fill="#c8873a"/>
|
|
3
|
-
<text x="64" y="96" font-family="Arial,Helvetica,sans-serif" font-weight="bold" font-size="96" fill="#ffffff" text-anchor="middle">M</text>
|
|
4
|
-
</svg>
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
|
2
|
-
<rect width="16" height="16" rx="3" fill="#c8873a"/>
|
|
3
|
-
<text x="8" y="12.5" font-family="Arial,Helvetica,sans-serif" font-weight="bold" font-size="12" fill="#ffffff" text-anchor="middle">M</text>
|
|
4
|
-
</svg>
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
|
2
|
-
<rect width="32" height="32" rx="6" fill="#c8873a"/>
|
|
3
|
-
<text x="16" y="24" font-family="Arial,Helvetica,sans-serif" font-weight="bold" font-size="24" fill="#ffffff" text-anchor="middle">M</text>
|
|
4
|
-
</svg>
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48">
|
|
2
|
-
<rect width="48" height="48" rx="8" fill="#c8873a"/>
|
|
3
|
-
<text x="24" y="36" font-family="Arial,Helvetica,sans-serif" font-weight="bold" font-size="36" fill="#ffffff" text-anchor="middle">M</text>
|
|
4
|
-
</svg>
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"manifest_version": 3,
|
|
3
|
-
"name": "MindOS Web Clipper",
|
|
4
|
-
"version": "0.1.2",
|
|
5
|
-
"description": "Save any web page to your MindOS knowledge base — one click, beautifully formatted Markdown.",
|
|
6
|
-
"icons": {
|
|
7
|
-
"16": "icons/icon-16.png",
|
|
8
|
-
"32": "icons/icon-32.png",
|
|
9
|
-
"48": "icons/icon-48.png",
|
|
10
|
-
"128": "icons/icon-128.png"
|
|
11
|
-
},
|
|
12
|
-
"action": {
|
|
13
|
-
"default_popup": "popup/popup.html",
|
|
14
|
-
"default_icon": {
|
|
15
|
-
"16": "icons/icon-16.png",
|
|
16
|
-
"32": "icons/icon-32.png"
|
|
17
|
-
},
|
|
18
|
-
"default_title": "Clip to MindOS"
|
|
19
|
-
},
|
|
20
|
-
"background": {
|
|
21
|
-
"service_worker": "background/service-worker.js",
|
|
22
|
-
"type": "module"
|
|
23
|
-
},
|
|
24
|
-
"permissions": [
|
|
25
|
-
"storage",
|
|
26
|
-
"activeTab",
|
|
27
|
-
"scripting",
|
|
28
|
-
"contextMenus"
|
|
29
|
-
],
|
|
30
|
-
"host_permissions": [
|
|
31
|
-
"http://localhost:*/*",
|
|
32
|
-
"http://127.0.0.1:*/*",
|
|
33
|
-
"http://[::1]:*/*",
|
|
34
|
-
"http://10.*.*.*:*/*",
|
|
35
|
-
"http://172.16.*.*:*/*",
|
|
36
|
-
"http://192.168.*.*:*/*"
|
|
37
|
-
],
|
|
38
|
-
"commands": {
|
|
39
|
-
"clip-page": {
|
|
40
|
-
"suggested_key": {
|
|
41
|
-
"default": "Ctrl+Shift+M",
|
|
42
|
-
"mac": "Command+Shift+M"
|
|
43
|
-
},
|
|
44
|
-
"description": "Clip current page to MindOS"
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
@@ -1,510 +0,0 @@
|
|
|
1
|
-
/* ── MindOS Web Clipper — Popup Styles ── */
|
|
2
|
-
/* Design: warm amber accent, low-saturation grey, Warm Industrial aesthetic */
|
|
3
|
-
|
|
4
|
-
:root {
|
|
5
|
-
--bg: #fafaf8;
|
|
6
|
-
--bg-card: #ffffff;
|
|
7
|
-
--bg-muted: #f3f2ef;
|
|
8
|
-
--bg-elevated: #ffffff;
|
|
9
|
-
--fg: #1a1a18;
|
|
10
|
-
--fg-secondary: #4a4944;
|
|
11
|
-
--fg-muted: #6b6a66;
|
|
12
|
-
--fg-hint: #9c9b96;
|
|
13
|
-
--border: #e5e4e0;
|
|
14
|
-
--border-subtle: #edece8;
|
|
15
|
-
--amber: #c8873a;
|
|
16
|
-
--amber-hover: #b5762f;
|
|
17
|
-
--amber-fg: #ffffff;
|
|
18
|
-
--amber-subtle: rgba(200, 135, 58, 0.08);
|
|
19
|
-
--amber-light: rgba(200, 135, 58, 0.15);
|
|
20
|
-
--amber-text: #a06b2c;
|
|
21
|
-
--success: #22a06b;
|
|
22
|
-
--success-subtle: rgba(34, 160, 107, 0.08);
|
|
23
|
-
--success-light: rgba(34, 160, 107, 0.12);
|
|
24
|
-
--error: #e34935;
|
|
25
|
-
--error-subtle: rgba(227, 73, 53, 0.08);
|
|
26
|
-
--radius: 10px;
|
|
27
|
-
--radius-sm: 6px;
|
|
28
|
-
--radius-xs: 4px;
|
|
29
|
-
--shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
|
|
30
|
-
--shadow-md: 0 2px 8px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
|
|
31
|
-
--shadow-lg: 0 4px 16px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.04);
|
|
32
|
-
--font-sans: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
33
|
-
--font-mono: 'IBM Plex Mono', 'SF Mono', monospace;
|
|
34
|
-
--ease-out: cubic-bezier(0.16, 1, 0.3, 1);
|
|
35
|
-
--ease-in-out: cubic-bezier(0.45, 0, 0.55, 1);
|
|
36
|
-
--transition: 150ms var(--ease-out);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/* Dark mode */
|
|
40
|
-
@media (prefers-color-scheme: dark) {
|
|
41
|
-
:root {
|
|
42
|
-
--bg: #161614;
|
|
43
|
-
--bg-card: #1e1e1c;
|
|
44
|
-
--bg-muted: #262623;
|
|
45
|
-
--bg-elevated: #2a2a27;
|
|
46
|
-
--fg: #e8e7e3;
|
|
47
|
-
--fg-secondary: #c5c4c0;
|
|
48
|
-
--fg-muted: #9c9b96;
|
|
49
|
-
--fg-hint: #6b6a66;
|
|
50
|
-
--border: #333330;
|
|
51
|
-
--border-subtle: #2d2d2a;
|
|
52
|
-
--amber-hover: #d9954a;
|
|
53
|
-
--amber-subtle: rgba(200, 135, 58, 0.12);
|
|
54
|
-
--amber-light: rgba(200, 135, 58, 0.18);
|
|
55
|
-
--amber-text: #d9a45e;
|
|
56
|
-
--success-subtle: rgba(34, 160, 107, 0.12);
|
|
57
|
-
--success-light: rgba(34, 160, 107, 0.16);
|
|
58
|
-
--error: #f87171;
|
|
59
|
-
--error-subtle: rgba(248, 113, 113, 0.12);
|
|
60
|
-
--error-subtle: rgba(227, 73, 53, 0.12);
|
|
61
|
-
--shadow-sm: 0 1px 2px rgba(0,0,0,0.2);
|
|
62
|
-
--shadow-md: 0 2px 8px rgba(0,0,0,0.25), 0 1px 2px rgba(0,0,0,0.15);
|
|
63
|
-
--shadow-lg: 0 4px 16px rgba(0,0,0,0.35), 0 2px 4px rgba(0,0,0,0.2);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/* Reset */
|
|
68
|
-
*, *::before, *::after {
|
|
69
|
-
margin: 0;
|
|
70
|
-
padding: 0;
|
|
71
|
-
box-sizing: border-box;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
body {
|
|
75
|
-
width: 360px;
|
|
76
|
-
min-height: 200px;
|
|
77
|
-
max-height: 520px;
|
|
78
|
-
font-family: var(--font-sans);
|
|
79
|
-
font-size: 13px;
|
|
80
|
-
line-height: 1.5;
|
|
81
|
-
color: var(--fg);
|
|
82
|
-
background: var(--bg);
|
|
83
|
-
overflow-y: auto;
|
|
84
|
-
-webkit-font-smoothing: antialiased;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
#app {
|
|
88
|
-
padding: 16px;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/* ── Views ── */
|
|
92
|
-
|
|
93
|
-
.view {
|
|
94
|
-
display: flex;
|
|
95
|
-
flex-direction: column;
|
|
96
|
-
gap: 12px;
|
|
97
|
-
animation: fadeIn 200ms var(--ease-out);
|
|
98
|
-
}
|
|
99
|
-
.view[hidden] { display: none !important; }
|
|
100
|
-
|
|
101
|
-
@keyframes fadeIn {
|
|
102
|
-
from { opacity: 0; transform: translateY(4px); }
|
|
103
|
-
to { opacity: 1; transform: translateY(0); }
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/* ── Header ── */
|
|
107
|
-
|
|
108
|
-
.header { display: flex; flex-direction: column; gap: 4px; }
|
|
109
|
-
.header.compact {
|
|
110
|
-
flex-direction: row;
|
|
111
|
-
align-items: center;
|
|
112
|
-
justify-content: space-between;
|
|
113
|
-
padding-bottom: 4px;
|
|
114
|
-
border-bottom: 1px solid var(--border-subtle);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
.logo {
|
|
118
|
-
display: flex;
|
|
119
|
-
align-items: center;
|
|
120
|
-
gap: 8px;
|
|
121
|
-
}
|
|
122
|
-
.logo img { border-radius: var(--radius-xs); }
|
|
123
|
-
.logo-text {
|
|
124
|
-
font-size: 14px;
|
|
125
|
-
font-weight: 600;
|
|
126
|
-
letter-spacing: -0.02em;
|
|
127
|
-
color: var(--fg);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
.subtitle {
|
|
131
|
-
font-size: 12px;
|
|
132
|
-
color: var(--fg-muted);
|
|
133
|
-
margin-top: 2px;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/* ── Buttons ── */
|
|
137
|
-
|
|
138
|
-
.btn-primary {
|
|
139
|
-
display: flex;
|
|
140
|
-
align-items: center;
|
|
141
|
-
justify-content: center;
|
|
142
|
-
gap: 6px;
|
|
143
|
-
width: 100%;
|
|
144
|
-
height: 40px;
|
|
145
|
-
border: none;
|
|
146
|
-
border-radius: var(--radius);
|
|
147
|
-
background: var(--amber);
|
|
148
|
-
color: var(--amber-fg);
|
|
149
|
-
font-family: var(--font-sans);
|
|
150
|
-
font-size: 13px;
|
|
151
|
-
font-weight: 600;
|
|
152
|
-
cursor: pointer;
|
|
153
|
-
transition: background var(--transition), box-shadow var(--transition), transform 100ms var(--ease-out);
|
|
154
|
-
box-shadow: var(--shadow-sm);
|
|
155
|
-
}
|
|
156
|
-
.btn-primary:hover { background: var(--amber-hover); box-shadow: var(--shadow-md); }
|
|
157
|
-
.btn-primary:active { transform: scale(0.98); }
|
|
158
|
-
.btn-primary:disabled { opacity: 0.5; cursor: not-allowed; transform: none; box-shadow: none; }
|
|
159
|
-
.btn-primary:focus-visible { outline: 2px solid var(--amber); outline-offset: 2px; }
|
|
160
|
-
|
|
161
|
-
.btn-primary .btn-text,
|
|
162
|
-
.btn-primary .btn-loading {
|
|
163
|
-
display: flex;
|
|
164
|
-
align-items: center;
|
|
165
|
-
gap: 6px;
|
|
166
|
-
}
|
|
167
|
-
.btn-primary .btn-loading[hidden] { display: none; }
|
|
168
|
-
|
|
169
|
-
.btn-secondary {
|
|
170
|
-
display: flex;
|
|
171
|
-
align-items: center;
|
|
172
|
-
justify-content: center;
|
|
173
|
-
width: 100%;
|
|
174
|
-
height: 36px;
|
|
175
|
-
border: 1px solid var(--border);
|
|
176
|
-
border-radius: var(--radius);
|
|
177
|
-
background: transparent;
|
|
178
|
-
color: var(--fg);
|
|
179
|
-
font-family: var(--font-sans);
|
|
180
|
-
font-size: 13px;
|
|
181
|
-
font-weight: 500;
|
|
182
|
-
cursor: pointer;
|
|
183
|
-
transition: background var(--transition), border-color var(--transition);
|
|
184
|
-
}
|
|
185
|
-
.btn-secondary:hover { background: var(--bg-muted); border-color: var(--fg-hint); }
|
|
186
|
-
.btn-secondary:focus-visible { outline: 2px solid var(--amber); outline-offset: 2px; }
|
|
187
|
-
|
|
188
|
-
.btn-icon {
|
|
189
|
-
display: flex;
|
|
190
|
-
align-items: center;
|
|
191
|
-
justify-content: center;
|
|
192
|
-
width: 28px;
|
|
193
|
-
height: 28px;
|
|
194
|
-
border: 1px solid transparent;
|
|
195
|
-
border-radius: var(--radius-sm);
|
|
196
|
-
background: transparent;
|
|
197
|
-
color: var(--fg-hint);
|
|
198
|
-
cursor: pointer;
|
|
199
|
-
transition: color var(--transition), background var(--transition), border-color var(--transition);
|
|
200
|
-
}
|
|
201
|
-
.btn-icon:hover { color: var(--fg-muted); background: var(--bg-muted); border-color: var(--border); }
|
|
202
|
-
.btn-icon:focus-visible { outline: 2px solid var(--amber); outline-offset: 2px; }
|
|
203
|
-
|
|
204
|
-
/* ── Forms ── */
|
|
205
|
-
|
|
206
|
-
.form-group {
|
|
207
|
-
display: flex;
|
|
208
|
-
flex-direction: column;
|
|
209
|
-
gap: 4px;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
.form-group label {
|
|
213
|
-
font-size: 11px;
|
|
214
|
-
font-weight: 600;
|
|
215
|
-
text-transform: uppercase;
|
|
216
|
-
letter-spacing: 0.04em;
|
|
217
|
-
color: var(--fg-muted);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
.form-group input {
|
|
221
|
-
height: 38px;
|
|
222
|
-
padding: 0 12px;
|
|
223
|
-
border: 1px solid var(--border);
|
|
224
|
-
border-radius: var(--radius-sm);
|
|
225
|
-
background: var(--bg-card);
|
|
226
|
-
color: var(--fg);
|
|
227
|
-
font-family: var(--font-sans);
|
|
228
|
-
font-size: 13px;
|
|
229
|
-
transition: border-color var(--transition), box-shadow var(--transition);
|
|
230
|
-
}
|
|
231
|
-
.form-group input:focus-visible {
|
|
232
|
-
outline: none;
|
|
233
|
-
border-color: var(--amber);
|
|
234
|
-
box-shadow: 0 0 0 3px var(--amber-subtle);
|
|
235
|
-
}
|
|
236
|
-
.form-group input::placeholder { color: var(--fg-hint); }
|
|
237
|
-
|
|
238
|
-
.hint {
|
|
239
|
-
font-size: 11px;
|
|
240
|
-
color: var(--fg-hint);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/* ── Clip Preview Card ── */
|
|
244
|
-
|
|
245
|
-
.clip-preview {
|
|
246
|
-
display: flex;
|
|
247
|
-
flex-direction: column;
|
|
248
|
-
gap: 8px;
|
|
249
|
-
padding: 16px;
|
|
250
|
-
border: 1px solid var(--border);
|
|
251
|
-
border-radius: var(--radius);
|
|
252
|
-
background: var(--bg-card);
|
|
253
|
-
box-shadow: var(--shadow-sm);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
.title-input {
|
|
257
|
-
border: none !important;
|
|
258
|
-
padding: 0 !important;
|
|
259
|
-
height: auto !important;
|
|
260
|
-
font-size: 15px;
|
|
261
|
-
font-weight: 600;
|
|
262
|
-
line-height: 1.3;
|
|
263
|
-
color: var(--fg);
|
|
264
|
-
background: transparent;
|
|
265
|
-
outline: none;
|
|
266
|
-
box-shadow: none !important;
|
|
267
|
-
}
|
|
268
|
-
.title-input::placeholder { color: var(--fg-hint); }
|
|
269
|
-
|
|
270
|
-
.meta-row {
|
|
271
|
-
display: flex;
|
|
272
|
-
gap: 6px;
|
|
273
|
-
flex-wrap: wrap;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
.meta-badge {
|
|
277
|
-
display: inline-flex;
|
|
278
|
-
align-items: center;
|
|
279
|
-
gap: 4px;
|
|
280
|
-
padding: 2px 8px;
|
|
281
|
-
font-size: 11px;
|
|
282
|
-
color: var(--fg-muted);
|
|
283
|
-
background: var(--bg-muted);
|
|
284
|
-
border-radius: 99px;
|
|
285
|
-
line-height: 1.4;
|
|
286
|
-
}
|
|
287
|
-
.meta-badge svg { flex-shrink: 0; }
|
|
288
|
-
|
|
289
|
-
/* ── Error Bar ── */
|
|
290
|
-
|
|
291
|
-
.error-bar {
|
|
292
|
-
display: flex;
|
|
293
|
-
align-items: flex-start;
|
|
294
|
-
gap: 8px;
|
|
295
|
-
padding: 8px 12px;
|
|
296
|
-
border-radius: var(--radius-sm);
|
|
297
|
-
background: var(--error-subtle);
|
|
298
|
-
color: var(--error);
|
|
299
|
-
font-size: 12px;
|
|
300
|
-
line-height: 1.4;
|
|
301
|
-
}
|
|
302
|
-
.error-bar[hidden] { display: none; }
|
|
303
|
-
|
|
304
|
-
/* ── Success View ── */
|
|
305
|
-
|
|
306
|
-
.success-card {
|
|
307
|
-
display: flex;
|
|
308
|
-
flex-direction: column;
|
|
309
|
-
align-items: center;
|
|
310
|
-
gap: 8px;
|
|
311
|
-
padding: 24px 16px 20px;
|
|
312
|
-
border-radius: var(--radius);
|
|
313
|
-
background: var(--success-subtle);
|
|
314
|
-
border: 1px solid var(--success-light);
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
.success-icon {
|
|
318
|
-
display: flex;
|
|
319
|
-
align-items: center;
|
|
320
|
-
justify-content: center;
|
|
321
|
-
width: 36px;
|
|
322
|
-
height: 36px;
|
|
323
|
-
border-radius: 50%;
|
|
324
|
-
background: var(--success);
|
|
325
|
-
color: white;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
.success-title {
|
|
329
|
-
font-size: 15px;
|
|
330
|
-
font-weight: 700;
|
|
331
|
-
color: var(--fg);
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
.success-detail {
|
|
335
|
-
font-size: 11px;
|
|
336
|
-
font-family: var(--font-mono);
|
|
337
|
-
color: var(--fg-muted);
|
|
338
|
-
word-break: break-all;
|
|
339
|
-
text-align: center;
|
|
340
|
-
line-height: 1.4;
|
|
341
|
-
padding: 4px 8px;
|
|
342
|
-
border-radius: var(--radius-xs);
|
|
343
|
-
background: var(--bg-muted);
|
|
344
|
-
max-width: 100%;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
.success-actions {
|
|
348
|
-
display: flex;
|
|
349
|
-
gap: 8px;
|
|
350
|
-
width: 100%;
|
|
351
|
-
}
|
|
352
|
-
.success-actions .btn-secondary { flex: 1; }
|
|
353
|
-
|
|
354
|
-
/* ── Loading ── */
|
|
355
|
-
|
|
356
|
-
.loading-state {
|
|
357
|
-
display: flex;
|
|
358
|
-
flex-direction: column;
|
|
359
|
-
align-items: center;
|
|
360
|
-
gap: 16px;
|
|
361
|
-
padding: 40px 0;
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
.loading-brand {
|
|
365
|
-
display: flex;
|
|
366
|
-
align-items: center;
|
|
367
|
-
gap: 8px;
|
|
368
|
-
}
|
|
369
|
-
.loading-brand img { border-radius: var(--radius-xs); }
|
|
370
|
-
.loading-text {
|
|
371
|
-
color: var(--fg-muted);
|
|
372
|
-
font-size: 13px;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
/* ── Spinner ── */
|
|
376
|
-
|
|
377
|
-
.spinner {
|
|
378
|
-
width: 18px;
|
|
379
|
-
height: 18px;
|
|
380
|
-
animation: spin 0.9s var(--ease-in-out) infinite;
|
|
381
|
-
color: var(--amber);
|
|
382
|
-
}
|
|
383
|
-
.spinner.large { width: 28px; height: 28px; }
|
|
384
|
-
|
|
385
|
-
@keyframes spin {
|
|
386
|
-
to { transform: rotate(360deg); }
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
/* ── DirPicker ── */
|
|
390
|
-
|
|
391
|
-
.dir-trigger {
|
|
392
|
-
display: flex;
|
|
393
|
-
align-items: center;
|
|
394
|
-
gap: 8px;
|
|
395
|
-
width: 100%;
|
|
396
|
-
height: 38px;
|
|
397
|
-
padding: 0 12px;
|
|
398
|
-
border: 1px solid var(--border);
|
|
399
|
-
border-radius: var(--radius-sm);
|
|
400
|
-
background: var(--bg-card);
|
|
401
|
-
color: var(--fg);
|
|
402
|
-
font-family: var(--font-sans);
|
|
403
|
-
font-size: 13px;
|
|
404
|
-
text-align: left;
|
|
405
|
-
cursor: pointer;
|
|
406
|
-
transition: border-color var(--transition), box-shadow var(--transition);
|
|
407
|
-
}
|
|
408
|
-
.dir-trigger:hover { border-color: var(--fg-hint); }
|
|
409
|
-
.dir-trigger:focus-visible { outline: none; border-color: var(--amber); box-shadow: 0 0 0 3px var(--amber-subtle); }
|
|
410
|
-
.dir-trigger.active { border-color: var(--amber); box-shadow: 0 0 0 3px var(--amber-subtle); }
|
|
411
|
-
.dir-trigger .dir-icon { color: var(--amber); flex-shrink: 0; }
|
|
412
|
-
.dir-trigger .dir-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
413
|
-
.dir-trigger .dir-chevron { flex-shrink: 0; color: var(--fg-hint); transition: transform var(--transition); }
|
|
414
|
-
.dir-trigger.active .dir-chevron { transform: rotate(180deg); }
|
|
415
|
-
|
|
416
|
-
.dir-panel {
|
|
417
|
-
border: 1px solid var(--amber);
|
|
418
|
-
border-radius: var(--radius-sm);
|
|
419
|
-
background: var(--bg-card);
|
|
420
|
-
overflow: hidden;
|
|
421
|
-
margin-top: 4px;
|
|
422
|
-
box-shadow: var(--shadow-md);
|
|
423
|
-
animation: slideDown 150ms var(--ease-out);
|
|
424
|
-
}
|
|
425
|
-
.dir-panel[hidden] { display: none; }
|
|
426
|
-
|
|
427
|
-
@keyframes slideDown {
|
|
428
|
-
from { opacity: 0; transform: translateY(-4px); }
|
|
429
|
-
to { opacity: 1; transform: translateY(0); }
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
.dir-breadcrumb {
|
|
433
|
-
display: flex;
|
|
434
|
-
align-items: center;
|
|
435
|
-
gap: 2px;
|
|
436
|
-
padding: 6px 10px;
|
|
437
|
-
background: var(--bg-muted);
|
|
438
|
-
border-bottom: 1px solid var(--border);
|
|
439
|
-
overflow-x: auto;
|
|
440
|
-
font-size: 11px;
|
|
441
|
-
}
|
|
442
|
-
.dir-breadcrumb button {
|
|
443
|
-
flex-shrink: 0;
|
|
444
|
-
padding: 2px 6px;
|
|
445
|
-
border: none;
|
|
446
|
-
border-radius: var(--radius-xs);
|
|
447
|
-
background: transparent;
|
|
448
|
-
color: var(--fg-muted);
|
|
449
|
-
font-family: var(--font-sans);
|
|
450
|
-
font-size: 11px;
|
|
451
|
-
cursor: pointer;
|
|
452
|
-
transition: color var(--transition), background var(--transition);
|
|
453
|
-
}
|
|
454
|
-
.dir-breadcrumb button:hover { color: var(--fg); background: var(--amber-subtle); }
|
|
455
|
-
.dir-breadcrumb button.active { color: var(--amber); font-weight: 600; }
|
|
456
|
-
.dir-breadcrumb .crumb-sep {
|
|
457
|
-
color: var(--fg-hint);
|
|
458
|
-
font-size: 9px;
|
|
459
|
-
flex-shrink: 0;
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
.dir-list {
|
|
463
|
-
max-height: 180px;
|
|
464
|
-
overflow-y: auto;
|
|
465
|
-
}
|
|
466
|
-
.dir-list:empty::after {
|
|
467
|
-
content: 'No subdirectories';
|
|
468
|
-
display: block;
|
|
469
|
-
padding: 12px;
|
|
470
|
-
text-align: center;
|
|
471
|
-
color: var(--fg-hint);
|
|
472
|
-
font-size: 11px;
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
.dir-item {
|
|
476
|
-
display: flex;
|
|
477
|
-
align-items: center;
|
|
478
|
-
gap: 8px;
|
|
479
|
-
width: 100%;
|
|
480
|
-
padding: 7px 10px;
|
|
481
|
-
border: none;
|
|
482
|
-
background: transparent;
|
|
483
|
-
color: var(--fg);
|
|
484
|
-
font-family: var(--font-sans);
|
|
485
|
-
font-size: 12px;
|
|
486
|
-
text-align: left;
|
|
487
|
-
cursor: pointer;
|
|
488
|
-
transition: background var(--transition);
|
|
489
|
-
}
|
|
490
|
-
.dir-item:hover { background: var(--amber-subtle); }
|
|
491
|
-
.dir-item .dir-item-icon { color: var(--amber); flex-shrink: 0; }
|
|
492
|
-
.dir-item .dir-item-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
493
|
-
.dir-item .dir-item-arrow { color: var(--fg-hint); flex-shrink: 0; }
|
|
494
|
-
|
|
495
|
-
.dir-confirm {
|
|
496
|
-
display: flex;
|
|
497
|
-
align-items: center;
|
|
498
|
-
justify-content: center;
|
|
499
|
-
width: 100%;
|
|
500
|
-
padding: 6px;
|
|
501
|
-
border: none;
|
|
502
|
-
border-top: 1px solid var(--border);
|
|
503
|
-
background: transparent;
|
|
504
|
-
color: var(--amber);
|
|
505
|
-
font-weight: 600;
|
|
506
|
-
font-size: 12px;
|
|
507
|
-
cursor: pointer;
|
|
508
|
-
transition: background var(--transition);
|
|
509
|
-
}
|
|
510
|
-
.dir-confirm:hover { background: var(--amber-subtle); }
|