{"_id":"@bytetrade/files-picker-wc","_rev":"4-269aebf3a84358dfd121ace4769b5697","name":"@bytetrade/files-picker-wc","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@bytetrade/files-picker-wc","version":"0.1.0","keywords":["olares","files","file-picker","web-component","custom-element"],"license":"GPL-3.0-or-later","_id":"@bytetrade/files-picker-wc@0.1.0","maintainers":[{"name":"pengpeng1985","email":"pengpeng@bytetrade.io"},{"name":"yyh_yongheng","email":"yangyongheng@bytetrade.io"},{"name":"icebergtsn","email":"zhangyuhang@bytetrade.io"},{"name":"luz33c","email":"33cluz@gmail.com"},{"name":"guojianmin_123","email":"guojianmin@bytetrade.io"}],"homepage":"https://github.com/beclab/olares-files-picker/tree/main/packages/files-picker-wc#readme","bugs":{"url":"https://github.com/beclab/olares-files-picker/issues"},"dist":{"shasum":"24b2c0a0a29423bdce0a79857957435d64c19170","tarball":"https://registry.npmjs.org/@bytetrade/files-picker-wc/-/files-picker-wc-0.1.0.tgz","fileCount":10,"integrity":"sha512-4/HZ62fDijaNFh+aE86K/NyWmHFYA+j2jx46P1Zz6hiCNhB5fiEfmvcr7Ul92+8p5Y2zQVRHP2HYb/B6h0rbRQ==","signatures":[{"sig":"MEUCIA5LuZJcKK9DX+hl566uQxmoFt4r7F0qx/eTJPRPax5eAiEAgBfS3uODtXywgV5EAFTjRTSBFj6EvCNLZRx202yyiwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1936126},"main":"./dist/olares-folder-picker.umd.js","types":"./types/index.d.ts","module":"./dist/olares-folder-picker.mjs","exports":{".":{"types":"./types/index.d.ts","import":"./dist/olares-folder-picker.mjs","default":"./dist/olares-folder-picker.mjs","require":"./dist/olares-folder-picker.umd.js"},"./standalone":{"types":"./types/index.d.ts","import":"./dist/olares-folder-picker.standalone.mjs","default":"./dist/olares-folder-picker.standalone.mjs"}},"gitHead":"74b79678a0f97540509e81a49979fc34a0b62a6c","scripts":{"dev":"vite build --watch","lint":"eslint --ext .js,.ts,.vue ./src","build":"vite build && STANDALONE=1 vite build","smoke":"node smoke.mjs","prepack":"npm run build"},"_npmUser":{"name":"guojianmin_123","email":"guojianmin@bytetrade.io"},"repository":{"url":"git+https://github.com/beclab/olares-files-picker.git","type":"git","directory":"packages/files-picker-wc"},"_npmVersion":"10.9.8","description":"Olares folder picker Web Component","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","vite":"^5.4.11","jsdom":"^30.0.1","eslint":"^8.57.1","prettier":"^2.8.8","typescript":"^4.9.5","eslint-plugin-vue":"^9.33.0","vue-eslint-parser":"^9.4.3","@vitejs/plugin-vue":"^5.2.1","@bytetrade/files-core":"^0.1.0","eslint-config-prettier":"^8.10.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.52.0","@typescript-eslint/eslint-plugin":"^5.52.0"},"peerDependencies":{"vue":"^3.5.0","@bytetrade/files-core":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/files-picker-wc_0.1.0_1787319867323_0.36180318306485404","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bytetrade/files-picker-wc","version":"0.1.1","keywords":["olares","files","file-picker","web-component","custom-element"],"license":"GPL-3.0-or-later","_id":"@bytetrade/files-picker-wc@0.1.1","maintainers":[{"name":"pengpeng1985","email":"pengpeng@bytetrade.io"},{"name":"yyh_yongheng","email":"yangyongheng@bytetrade.io"},{"name":"icebergtsn","email":"zhangyuhang@bytetrade.io"},{"name":"luz33c","email":"33cluz@gmail.com"},{"name":"guojianmin_123","email":"guojianmin@bytetrade.io"}],"homepage":"https://github.com/beclab/olares-files-picker/tree/main/packages/files-picker-wc#readme","bugs":{"url":"https://github.com/beclab/olares-files-picker/issues"},"dist":{"shasum":"33f7e2dcf91f8140299cd0c24b8f8532e6d5e63d","tarball":"https://registry.npmjs.org/@bytetrade/files-picker-wc/-/files-picker-wc-0.1.1.tgz","fileCount":10,"integrity":"sha512-FhuvYUgRYSOx7MrNFrVanPPgpdbuuS4iExZ+V498OQsNcziCpahaqVQaob9o5jZCDxpV/AKW/LgujW81gZdVBQ==","signatures":[{"sig":"MEYCIQDovM4E7ZkFnwWXeJa5Uq74ZvLWXCrce/dgi+zUYt8m8AIhAJDBjFet6sFJp3dJHeVR0lJzLjNofVD0p+/xe3CZJfwL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1936312},"main":"./dist/olares-folder-picker.umd.js","types":"./types/index.d.ts","module":"./dist/olares-folder-picker.mjs","exports":{".":{"types":"./types/index.d.ts","import":"./dist/olares-folder-picker.mjs","default":"./dist/olares-folder-picker.mjs","require":"./dist/olares-folder-picker.umd.js"},"./standalone":{"types":"./types/index.d.ts","import":"./dist/olares-folder-picker.standalone.mjs","default":"./dist/olares-folder-picker.standalone.mjs"}},"gitHead":"583d5f9ee6b21ceceac70abb6cbfafeaa5786dc4","scripts":{"dev":"vite build --watch","lint":"eslint --ext .js,.ts,.vue ./src","build":"vite build && STANDALONE=1 vite build","smoke":"node smoke.mjs","prepack":"npm run build"},"_npmUser":{"name":"guojianmin_123","email":"guojianmin@bytetrade.io"},"repository":{"url":"git+https://github.com/beclab/olares-files-picker.git","type":"git","directory":"packages/files-picker-wc"},"_npmVersion":"10.9.8","description":"Olares folder picker Web Component","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","vite":"^5.4.11","jsdom":"^30.0.1","eslint":"^8.57.1","prettier":"^2.8.8","typescript":"^4.9.5","eslint-plugin-vue":"^9.33.0","vue-eslint-parser":"^9.4.3","@vitejs/plugin-vue":"^5.2.1","@bytetrade/files-core":"^0.1.0","eslint-config-prettier":"^8.10.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.52.0","@typescript-eslint/eslint-plugin":"^5.52.0"},"peerDependencies":{"vue":"^3.5.0","@bytetrade/files-core":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/files-picker-wc_0.1.1_1787322418339_0.9120543427841645","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bytetrade/files-picker-wc","version":"0.1.2","keywords":["olares","files","file-picker","web-component","custom-element"],"license":"GPL-3.0-or-later","_id":"@bytetrade/files-picker-wc@0.1.2","maintainers":[{"name":"pengpeng1985","email":"pengpeng@bytetrade.io"},{"name":"yyh_yongheng","email":"yangyongheng@bytetrade.io"},{"name":"icebergtsn","email":"zhangyuhang@bytetrade.io"},{"name":"luz33c","email":"33cluz@gmail.com"},{"name":"guojianmin_123","email":"guojianmin@bytetrade.io"}],"homepage":"https://github.com/beclab/olares-files-picker/tree/main/packages/files-picker-wc#readme","bugs":{"url":"https://github.com/beclab/olares-files-picker/issues"},"dist":{"shasum":"a53de837d7de0e98e24a69a51efeb105f0bd1740","tarball":"https://registry.npmjs.org/@bytetrade/files-picker-wc/-/files-picker-wc-0.1.2.tgz","fileCount":10,"integrity":"sha512-Ql0jyd9d/iTPdoQG8zKnYt17JtS2wVag9+xpPWpLesBmD7jLP5vvlXSyieGvtx2JGJ2kj7j19guJAXKg0Skn4w==","signatures":[{"sig":"MEUCIQD2zbZbo7G7qkfQEqmF9OfT3r6tdAy9mq/7CPY0Y7uidwIgdmsf/jlY4rNjvJFSAOu/O+9Hgjhcn/cGUEmx4jR0p0w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1936312},"main":"./dist/olares-folder-picker.umd.js","types":"./types/index.d.ts","module":"./dist/olares-folder-picker.mjs","exports":{".":{"types":"./types/index.d.ts","import":"./dist/olares-folder-picker.mjs","default":"./dist/olares-folder-picker.mjs","require":"./dist/olares-folder-picker.umd.js"},"./standalone":{"types":"./types/index.d.ts","import":"./dist/olares-folder-picker.standalone.mjs","default":"./dist/olares-folder-picker.standalone.mjs"}},"gitHead":"dff6edab282542c8f403c7cf91bae946e2ec4049","scripts":{"dev":"vite build --watch","lint":"eslint --ext .js,.ts,.vue ./src","build":"vite build && STANDALONE=1 vite build","smoke":"node smoke.mjs","prepack":"npm run build"},"_npmUser":{"name":"guojianmin_123","email":"guojianmin@bytetrade.io"},"repository":{"url":"git+https://github.com/beclab/olares-files-picker.git","type":"git","directory":"packages/files-picker-wc"},"_npmVersion":"10.9.8","description":"Olares folder picker Web Component","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","vite":"^5.4.11","jsdom":"^30.0.1","eslint":"^8.57.1","prettier":"^2.8.8","typescript":"^4.9.5","eslint-plugin-vue":"^9.33.0","vue-eslint-parser":"^9.4.3","@vitejs/plugin-vue":"^5.2.1","@bytetrade/files-core":"^0.1.0","eslint-config-prettier":"^8.10.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.52.0","@typescript-eslint/eslint-plugin":"^5.52.0"},"peerDependencies":{"vue":"^3.5.0","@bytetrade/files-core":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/files-picker-wc_0.1.2_1788246271198_0.282462618372322","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"_id":"@bytetrade/files-picker-wc@0.1.3","bugs":{"url":"https://github.com/beclab/olares-files-picker/issues"},"dist":{"shasum":"4f225f341cb8799d3f4ea4bf25f88eeb94b5a588","tarball":"https://registry.npmjs.org/@bytetrade/files-picker-wc/-/files-picker-wc-0.1.3.tgz","fileCount":10,"integrity":"sha512-UlkTSSPbKf7ZR6gKSlHeb4+r24BeOtlubxUXiAYPPG9eciTLaX1HCtlMfCukKmUcgF/8c/xeJ+cjl3h/eSaLgw==","signatures":[{"sig":"MEUCIQDQu7V0Gv/AsgwzVDA9hrI2OaVeB5newybVmgGjKyI8qAIgID4zhATrRNbpQn1qaeU6OUJxibxHkgIamnc2bUjVbwM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDy0zRSCTl9pWAS5rhjJqw+/Z2PMFu9PcIn2hu3XyuHIAiEAwAAI3wZm0BQLccIT/MYIWgOGDozs7rl22/7QDmnQ7ts="}],"unpackedSize":1966392},"main":"./dist/olares-folder-picker.umd.js","name":"@bytetrade/files-picker-wc","types":"./types/index.d.ts","module":"./dist/olares-folder-picker.mjs","exports":{".":{"types":"./types/index.d.ts","import":"./dist/olares-folder-picker.mjs","default":"./dist/olares-folder-picker.mjs","require":"./dist/olares-folder-picker.umd.js"},"./standalone":{"types":"./types/index.d.ts","import":"./dist/olares-folder-picker.standalone.mjs","default":"./dist/olares-folder-picker.standalone.mjs"}},"gitHead":"42476dfa645ef33790cc4fb86a73a1227790340b","license":"GPL-3.0-or-later","scripts":{"dev":"vite build --watch","lint":"eslint --ext .js,.ts,.vue ./src","build":"vite build && STANDALONE=1 vite build","smoke":"node smoke.mjs","prepack":"npm run build"},"version":"0.1.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c912e9fa-9f4f-4dc2-ab37-65e18855400e"}},"homepage":"https://github.com/beclab/olares-files-picker/tree/main/packages/files-picker-wc#readme","keywords":["olares","files","file-picker","web-component","custom-element"],"repository":{"url":"git+https://github.com/beclab/olares-files-picker.git","type":"git","directory":"packages/files-picker-wc"},"_npmVersion":"11.19.0","description":"Olares folder picker Web Component","directories":{},"maintainers":[{"name":"pengpeng1985","email":"pengpeng@bytetrade.io"},{"name":"yyh_yongheng","email":"yangyongheng@bytetrade.io"},{"name":"icebergtsn","email":"zhangyuhang@bytetrade.io"},{"name":"luz33c","email":"33cluz@gmail.com"},{"name":"guojianmin_123","email":"guojianmin@bytetrade.io"}],"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","vite":"^5.4.11","jsdom":"^30.0.1","eslint":"^8.57.1","prettier":"^2.8.8","typescript":"^4.9.5","eslint-plugin-vue":"^9.33.0","vue-eslint-parser":"^9.4.3","@vitejs/plugin-vue":"^5.2.1","@bytetrade/files-core":"^0.1.0","eslint-config-prettier":"^8.10.2","eslint-plugin-prettier":"^4.0.0","@typescript-eslint/parser":"^5.52.0","@typescript-eslint/eslint-plugin":"^5.52.0"},"peerDependencies":{"vue":"^3.5.0","@bytetrade/files-core":"^0.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/files-picker-wc_0.1.3_1789894196714_0.42122387429818287"}}},"time":{"created":"2026-08-21T13:44:27.104Z","modified":"2026-09-20T08:49:57.015Z","0.1.0":"2026-08-21T13:44:27.476Z","0.1.1":"2026-08-21T14:26:58.578Z","0.1.2":"2026-09-01T07:04:31.389Z","0.1.3":"2026-09-20T08:49:56.852Z"},"bugs":{"url":"https://github.com/beclab/olares-files-picker/issues"},"license":"GPL-3.0-or-later","homepage":"https://github.com/beclab/olares-files-picker/tree/main/packages/files-picker-wc#readme","keywords":["olares","files","file-picker","web-component","custom-element"],"repository":{"url":"git+https://github.com/beclab/olares-files-picker.git","type":"git","directory":"packages/files-picker-wc"},"description":"Olares folder picker Web Component","maintainers":[{"name":"pengpeng1985","email":"pengpeng@bytetrade.io"},{"name":"yyh_yongheng","email":"yangyongheng@bytetrade.io"},{"name":"icebergtsn","email":"zhangyuhang@bytetrade.io"},{"name":"luz33c","email":"33cluz@gmail.com"},{"name":"guojianmin_123","email":"guojianmin@bytetrade.io"}],"readme":"# @bytetrade/files-picker-wc\n\nSelf-contained `<olares-folder-picker>` custom element for picking a folder (or files) from an Olares Files tree. Built with Vue 3 custom elements and a Shadow DOM; styles are injected via the `styles` option so any host bundler works.\n\n## Two build entries\n\n| Import | Bundle | When to use |\n| --- | --- | --- |\n| `@bytetrade/files-picker-wc` | Peer build (~58 kB). Externalises `vue` and `@bytetrade/files-core`. | Hosts that already own those packages (the Quasar app). **Required** so `configureFiles({ browser })` and the picker's `getFilesConfig().browser` share one files-core singleton. |\n| `@bytetrade/files-picker-wc/standalone` | Fully self-contained (~323 kB). | Hosts without Vue / files-core (e.g. React). |\n\nRun these from the repository root; `files-core` must be built first because\nthe peer build compiles against its output.\n\n```bash\nnpm install\nnpm run build     # files-core, then this package's peer + standalone bundles\nnpm run smoke     # jsdom checklist against the standalone artefact\nnpm run lint\n```\n\n## Attributes\n\n| Attribute | Prop | Default | Notes |\n| --- | --- | --- | --- |\n| `origins` | `origins` | Drive,Sync,External,Cache,Data,Common | Comma-separated `DriveType` values |\n| `pick-type` | `pickType` | `FOLDER` | `FOLDER` or `FILE` |\n| `icon-base` | `iconBase` | `/img` | Base URL for file/folder SVG artwork |\n| `locale` | `locale` | `en-US` | Hot-updates labels when changed |\n| `theme` | `theme` | `light` | `light` / `dark` (`data-theme`) |\n| `mobile` | `mobile` | `auto` | `auto` picks the layout from a `max-width: 720px` query; `true` / `false` force the mobile page stack or the desktop dialog. See [MOBILE_SHARD.md](./MOBILE_SHARD.md) |\n| `master-node` | `masterNode` | false | Restricts to master-node drives |\n| `base-url` | `baseUrl` | (config) | Optional override |\n| — | `token` | (config) | Property, not attribute |\n| — | `transport` | (config) | Property, not attribute |\n\n## Events\n\n| Event | Detail |\n| --- | --- |\n| `pick` | `FOLDER`: a `FilePath` (Vue may wrap as `[FilePath]`). `FILE`: `FileItem[]`. |\n| `cancel` | none |\n\n## Required: inject `FilesBrowserClient`\n\nThe element never talks to the Files HTTP API itself. Before opening it, the host must configure files-core:\n\n```ts\nimport { configureFiles } from '@bytetrade/files-core/base';\nimport { registerOlaresFolderPicker } from '@bytetrade/files-picker-wc';\n\nconfigureFiles({ browser: myClient /* + token, transport, … */ });\nregisterOlaresFolderPicker();\n\nconst el = document.createElement('olares-folder-picker');\nel.setAttribute('pick-type', 'FOLDER');\nel.setAttribute('locale', 'zh-CN');\nel.addEventListener('pick', e => {\n  /* … */\n});\ndocument.body.appendChild(el);\n```\n\nIf `browser` is missing, the picker boots empty (`boot()` returns early).\n\n## Two layouts\n\nThe desktop layout is a resizable dialog (side menu + breadcrumb + sortable columns). The mobile layout is a full-screen bottom sheet with a page stack: the drive list first, then the listing. A tap opens folders there (touch has no `dblclick`), so only files toggle selection. Choose with `mobile`.\n\n## Icon font\n\nIcons are Material Symbols ligatures rendered through a document-level `@font-face` that aliases whatever the host has installed (`local(...)`). Hosts that **subset** their icon font must keep the ligatures the picker uses — `close`, `arrow_back`, `arrow_forward`, `arrow_back_ios_new`, `keyboard_arrow_right`, `check_circle` — or those glyphs render as raw text. A subset script that only scans the host's own sources will not see them, since they live in this package's bundle. In TermiPass they are listed in `packages/app/scripts/icons/icons.allowlist.txt`.\n\n## i18n\n\nStandalone catalogs cover **en** and **zh** only. Inside the Quasar app, `setFilesI18n` forwards to the app translator so every language works.\n\n## Peer vs second Vue / files-core copy\n\nDo **not** ship the peer build into a host that resolves a _different_ `@bytetrade/files-core` than the one `configureFiles` was called on — the picker will see `browser === undefined`. The TermiPass Quasar app consumes the peer entry and installs `@bytetrade/files-core` itself, so both resolve to one copy; external React apps should use `./standalone` and call `configureFiles` from that same module graph (re-exported from the package).\n","readmeFilename":"README.md"}