Migrate to pnpm, refactor DOM helpers to Obsidian APIs, and use activeWindow/activeDocument globals

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
tcyeee 2026-05-24 13:30:22 +08:00
parent 277c09263a
commit dd83b99bfb
12 changed files with 331 additions and 2733 deletions

View file

@ -10,6 +10,8 @@ jobs:
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
attestations: write
steps:
- uses: actions/checkout@v3
@ -23,6 +25,13 @@ jobs:
npm install
npm run build
- name: Attest build provenance
uses: actions/attest-build-provenance@v2
with:
subject-path: |
main.js
styles.css
- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -1,6 +1,6 @@
import esbuild from "esbuild";
import process from "process";
import builtins from "builtin-modules";
import { builtinModules } from "module";
const banner =
`/*
@ -31,7 +31,7 @@ const context = await esbuild.context({
"@lezer/common",
"@lezer/highlight",
"@lezer/lr",
...builtins],
...builtinModules],
format: "cjs",
target: "es2018",
logLevel: "info",

View file

@ -18,7 +18,7 @@ export default class ImgRowPlugin extends Plugin {
}
async loadSettings() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
this.settings = Object.assign({}, DEFAULT_SETTINGS, (await this.loadData()) as Partial<ImgRowPluginSettings>);
// 将已保存的设置同步写入 config使默认值即刻生效
applySettingsToConfig(this.settings);
}

View file

@ -3,7 +3,7 @@
"name": "Image Cluster",
"version": "1.3.2",
"minAppVersion": "0.15.0",
"description": "Image Cluster helps you easily combine multiple images together in your notes, making your note interface more beautiful and organized.",
"description": "Combine multiple images together in your notes for a more beautiful and organized layout.",
"author": "tcyeee",
"authorUrl": "https://tcyeee.top",
"isDesktopOnly": false

2406
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -13,10 +13,9 @@
"license": "MIT",
"devDependencies": {
"@types/node": "^16.11.6",
"@typescript-eslint/eslint-plugin": "5.29.0",
"@typescript-eslint/parser": "5.29.0",
"builtin-modules": "3.3.0",
"esbuild": "0.17.3",
"@typescript-eslint/eslint-plugin": "5.62.0",
"@typescript-eslint/parser": "5.62.0",
"esbuild": "0.25.0",
"obsidian": "latest",
"tslib": "2.4.0",
"typescript": "4.7.4"

View file

@ -4,6 +4,14 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
overrides:
brace-expansion: ^1.1.13
picomatch: ^2.3.2
minimatch: ^3.1.4
flatted: ^3.4.2
js-yaml: ^4.1.1
ajv: ^6.14.0
importers:
.:
@ -12,17 +20,14 @@ importers:
specifier: ^16.11.6
version: 16.18.126
'@typescript-eslint/eslint-plugin':
specifier: 5.29.0
version: 5.29.0(@typescript-eslint/parser@5.29.0(eslint@8.57.1)(typescript@4.7.4))(eslint@8.57.1)(typescript@4.7.4)
specifier: 5.62.0
version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.7.4))(eslint@8.57.1)(typescript@4.7.4)
'@typescript-eslint/parser':
specifier: 5.29.0
version: 5.29.0(eslint@8.57.1)(typescript@4.7.4)
builtin-modules:
specifier: 3.3.0
version: 3.3.0
specifier: 5.62.0
version: 5.62.0(eslint@8.57.1)(typescript@4.7.4)
esbuild:
specifier: 0.17.3
version: 0.17.3
specifier: 0.25.0
version: 0.25.0
obsidian:
specifier: latest
version: 1.8.7(@codemirror/state@6.5.2)(@codemirror/view@6.37.2)
@ -41,135 +46,153 @@ packages:
'@codemirror/view@6.37.2':
resolution: {integrity: sha512-XD3LdgQpxQs5jhOOZ2HRVT+Rj59O4Suc7g2ULvZ+Yi8eCkickrkZ5JFuoDhs2ST1mNI5zSsNYgR3NGa4OUrbnw==}
'@esbuild/android-arm64@0.17.3':
resolution: {integrity: sha512-XvJsYo3dO3Pi4kpalkyMvfQsjxPWHYjoX4MDiB/FUM4YMfWcXa5l4VCwFWVYI1+92yxqjuqrhNg0CZg3gSouyQ==}
engines: {node: '>=12'}
'@esbuild/aix-ppc64@0.25.0':
resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
'@esbuild/android-arm64@0.25.0':
resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
'@esbuild/android-arm@0.17.3':
resolution: {integrity: sha512-1Mlz934GvbgdDmt26rTLmf03cAgLg5HyOgJN+ZGCeP3Q9ynYTNMn2/LQxIl7Uy+o4K6Rfi2OuLsr12JQQR8gNg==}
engines: {node: '>=12'}
'@esbuild/android-arm@0.25.0':
resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
'@esbuild/android-x64@0.17.3':
resolution: {integrity: sha512-nuV2CmLS07Gqh5/GrZLuqkU9Bm6H6vcCspM+zjp9TdQlxJtIe+qqEXQChmfc7nWdyr/yz3h45Utk1tUn8Cz5+A==}
engines: {node: '>=12'}
'@esbuild/android-x64@0.25.0':
resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
'@esbuild/darwin-arm64@0.17.3':
resolution: {integrity: sha512-01Hxaaat6m0Xp9AXGM8mjFtqqwDjzlMP0eQq9zll9U85ttVALGCGDuEvra5Feu/NbP5AEP1MaopPwzsTcUq1cw==}
engines: {node: '>=12'}
'@esbuild/darwin-arm64@0.25.0':
resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-x64@0.17.3':
resolution: {integrity: sha512-Eo2gq0Q/er2muf8Z83X21UFoB7EU6/m3GNKvrhACJkjVThd0uA+8RfKpfNhuMCl1bKRfBzKOk6xaYKQZ4lZqvA==}
engines: {node: '>=12'}
'@esbuild/darwin-x64@0.25.0':
resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
'@esbuild/freebsd-arm64@0.17.3':
resolution: {integrity: sha512-CN62ESxaquP61n1ZjQP/jZte8CE09M6kNn3baos2SeUfdVBkWN5n6vGp2iKyb/bm/x4JQzEvJgRHLGd5F5b81w==}
engines: {node: '>=12'}
'@esbuild/freebsd-arm64@0.25.0':
resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-x64@0.17.3':
resolution: {integrity: sha512-feq+K8TxIznZE+zhdVurF3WNJ/Sa35dQNYbaqM/wsCbWdzXr5lyq+AaTUSER2cUR+SXPnd/EY75EPRjf4s1SLg==}
engines: {node: '>=12'}
'@esbuild/freebsd-x64@0.25.0':
resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
'@esbuild/linux-arm64@0.17.3':
resolution: {integrity: sha512-JHeZXD4auLYBnrKn6JYJ0o5nWJI9PhChA/Nt0G4MvLaMrvXuWnY93R3a7PiXeJQphpL1nYsaMcoV2QtuvRnF/g==}
engines: {node: '>=12'}
'@esbuild/linux-arm64@0.25.0':
resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm@0.17.3':
resolution: {integrity: sha512-CLP3EgyNuPcg2cshbwkqYy5bbAgK+VhyfMU7oIYyn+x4Y67xb5C5ylxsNUjRmr8BX+MW3YhVNm6Lq6FKtRTWHQ==}
engines: {node: '>=12'}
'@esbuild/linux-arm@0.25.0':
resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
'@esbuild/linux-ia32@0.17.3':
resolution: {integrity: sha512-FyXlD2ZjZqTFh0sOQxFDiWG1uQUEOLbEh9gKN/7pFxck5Vw0qjWSDqbn6C10GAa1rXJpwsntHcmLqydY9ST9ZA==}
engines: {node: '>=12'}
'@esbuild/linux-ia32@0.25.0':
resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
'@esbuild/linux-loong64@0.17.3':
resolution: {integrity: sha512-OrDGMvDBI2g7s04J8dh8/I7eSO+/E7nMDT2Z5IruBfUO/RiigF1OF6xoH33Dn4W/OwAWSUf1s2nXamb28ZklTA==}
engines: {node: '>=12'}
'@esbuild/linux-loong64@0.25.0':
resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
'@esbuild/linux-mips64el@0.17.3':
resolution: {integrity: sha512-DcnUpXnVCJvmv0TzuLwKBC2nsQHle8EIiAJiJ+PipEVC16wHXaPEKP0EqN8WnBe0TPvMITOUlP2aiL5YMld+CQ==}
engines: {node: '>=12'}
'@esbuild/linux-mips64el@0.25.0':
resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
'@esbuild/linux-ppc64@0.17.3':
resolution: {integrity: sha512-BDYf/l1WVhWE+FHAW3FzZPtVlk9QsrwsxGzABmN4g8bTjmhazsId3h127pliDRRu5674k1Y2RWejbpN46N9ZhQ==}
engines: {node: '>=12'}
'@esbuild/linux-ppc64@0.25.0':
resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
'@esbuild/linux-riscv64@0.17.3':
resolution: {integrity: sha512-WViAxWYMRIi+prTJTyV1wnqd2mS2cPqJlN85oscVhXdb/ZTFJdrpaqm/uDsZPGKHtbg5TuRX/ymKdOSk41YZow==}
engines: {node: '>=12'}
'@esbuild/linux-riscv64@0.25.0':
resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
'@esbuild/linux-s390x@0.17.3':
resolution: {integrity: sha512-Iw8lkNHUC4oGP1O/KhumcVy77u2s6+KUjieUqzEU3XuWJqZ+AY7uVMrrCbAiwWTkpQHkr00BuXH5RpC6Sb/7Ug==}
engines: {node: '>=12'}
'@esbuild/linux-s390x@0.25.0':
resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
'@esbuild/linux-x64@0.17.3':
resolution: {integrity: sha512-0AGkWQMzeoeAtXQRNB3s4J1/T2XbigM2/Mn2yU1tQSmQRmHIZdkGbVq2A3aDdNslPyhb9/lH0S5GMTZ4xsjBqg==}
engines: {node: '>=12'}
'@esbuild/linux-x64@0.25.0':
resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
'@esbuild/netbsd-x64@0.17.3':
resolution: {integrity: sha512-4+rR/WHOxIVh53UIQIICryjdoKdHsFZFD4zLSonJ9RRw7bhKzVyXbnRPsWSfwybYqw9sB7ots/SYyufL1mBpEg==}
engines: {node: '>=12'}
'@esbuild/netbsd-arm64@0.25.0':
resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
'@esbuild/netbsd-x64@0.25.0':
resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
'@esbuild/openbsd-x64@0.17.3':
resolution: {integrity: sha512-cVpWnkx9IYg99EjGxa5Gc0XmqumtAwK3aoz7O4Dii2vko+qXbkHoujWA68cqXjhh6TsLaQelfDO4MVnyr+ODeA==}
engines: {node: '>=12'}
'@esbuild/openbsd-arm64@0.25.0':
resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
'@esbuild/openbsd-x64@0.25.0':
resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
'@esbuild/sunos-x64@0.17.3':
resolution: {integrity: sha512-RxmhKLbTCDAY2xOfrww6ieIZkZF+KBqG7S2Ako2SljKXRFi+0863PspK74QQ7JpmWwncChY25JTJSbVBYGQk2Q==}
engines: {node: '>=12'}
'@esbuild/sunos-x64@0.25.0':
resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
'@esbuild/win32-arm64@0.17.3':
resolution: {integrity: sha512-0r36VeEJ4efwmofxVJRXDjVRP2jTmv877zc+i+Pc7MNsIr38NfsjkQj23AfF7l0WbB+RQ7VUb+LDiqC/KY/M/A==}
engines: {node: '>=12'}
'@esbuild/win32-arm64@0.25.0':
resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
'@esbuild/win32-ia32@0.17.3':
resolution: {integrity: sha512-wgO6rc7uGStH22nur4aLFcq7Wh86bE9cOFmfTr/yxN3BXvDEdCSXyKkO+U5JIt53eTOgC47v9k/C1bITWL/Teg==}
engines: {node: '>=12'}
'@esbuild/win32-ia32@0.25.0':
resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
'@esbuild/win32-x64@0.17.3':
resolution: {integrity: sha512-FdVl64OIuiKjgXBjwZaJLKp0eaEckifbhn10dXWhysMJkWblg3OEEGKSIyhiD5RSgAya8WzP3DNkngtIg3Nt7g==}
engines: {node: '>=12'}
'@esbuild/win32-x64@0.25.0':
resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
@ -231,11 +254,14 @@ packages:
'@types/node@16.18.126':
resolution: {integrity: sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==}
'@types/semver@7.7.1':
resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
'@types/tern@0.23.9':
resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==}
'@typescript-eslint/eslint-plugin@5.29.0':
resolution: {integrity: sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w==}
'@typescript-eslint/eslint-plugin@5.62.0':
resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
'@typescript-eslint/parser': ^5.0.0
@ -245,8 +271,8 @@ packages:
typescript:
optional: true
'@typescript-eslint/parser@5.29.0':
resolution: {integrity: sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==}
'@typescript-eslint/parser@5.62.0':
resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
@ -255,12 +281,12 @@ packages:
typescript:
optional: true
'@typescript-eslint/scope-manager@5.29.0':
resolution: {integrity: sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==}
'@typescript-eslint/scope-manager@5.62.0':
resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@typescript-eslint/type-utils@5.29.0':
resolution: {integrity: sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg==}
'@typescript-eslint/type-utils@5.62.0':
resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: '*'
@ -269,12 +295,12 @@ packages:
typescript:
optional: true
'@typescript-eslint/types@5.29.0':
resolution: {integrity: sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==}
'@typescript-eslint/types@5.62.0':
resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@typescript-eslint/typescript-estree@5.29.0':
resolution: {integrity: sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==}
'@typescript-eslint/typescript-estree@5.62.0':
resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
typescript: '*'
@ -282,14 +308,14 @@ packages:
typescript:
optional: true
'@typescript-eslint/utils@5.29.0':
resolution: {integrity: sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==}
'@typescript-eslint/utils@5.62.0':
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
'@typescript-eslint/visitor-keys@5.29.0':
resolution: {integrity: sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==}
'@typescript-eslint/visitor-keys@5.62.0':
resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@ungap/structured-clone@1.3.0':
@ -305,8 +331,8 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
ajv@6.15.0:
resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
@ -326,17 +352,13 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
brace-expansion@1.1.12:
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
brace-expansion@1.1.14:
resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==}
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
builtin-modules@3.3.0:
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
engines: {node: '>=6'}
callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
@ -382,9 +404,9 @@ packages:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
esbuild@0.17.3:
resolution: {integrity: sha512-9n3AsBRe6sIyOc6kmoXg2ypCLgf3eZSraWFRpnkto+svt8cZNuKTkb1bhQcitBcvIqjNiK7K0J3KPmwGSfkA8g==}
engines: {node: '>=12'}
esbuild@0.25.0:
resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==}
engines: {node: '>=18'}
hasBin: true
escape-string-regexp@4.0.0:
@ -399,16 +421,6 @@ packages:
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
eslint-utils@3.0.0:
resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
peerDependencies:
eslint: '>=5'
eslint-visitor-keys@2.1.0:
resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
engines: {node: '>=10'}
eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -416,6 +428,7 @@ packages:
eslint@8.57.1:
resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
hasBin: true
espree@9.6.1:
@ -474,15 +487,12 @@ packages:
resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
engines: {node: ^10.12.0 || >=12.0.0}
flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
flatted@3.4.2:
resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
functional-red-black-tree@1.0.1:
resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=}
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@ -493,7 +503,7 @@ packages:
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
globals@13.24.0:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
@ -519,17 +529,18 @@ packages:
engines: {node: '>=6'}
imurmurhash@0.1.4:
resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=}
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
inflight@1.0.6:
resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=}
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
is-extglob@2.1.1:
resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
is-glob@4.0.3:
@ -547,8 +558,8 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
js-yaml@4.1.1:
resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
hasBin: true
json-buffer@3.0.1:
@ -558,7 +569,7 @@ packages:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=}
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
@ -582,8 +593,8 @@ packages:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
minimatch@3.1.5:
resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
moment@2.29.4:
resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==}
@ -591,6 +602,9 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
natural-compare-lite@1.4.0:
resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
@ -635,8 +649,8 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
picomatch@2.3.2:
resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
engines: {node: '>=8.6'}
prelude-ls@1.2.1:
@ -650,10 +664,6 @@ packages:
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
regexpp@3.2.0:
resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
engines: {node: '>=8'}
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@ -703,7 +713,7 @@ packages:
engines: {node: '>=8'}
text-table@0.2.0:
resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=}
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
@ -769,70 +779,79 @@ snapshots:
style-mod: 4.1.2
w3c-keyname: 2.2.8
'@esbuild/android-arm64@0.17.3':
'@esbuild/aix-ppc64@0.25.0':
optional: true
'@esbuild/android-arm@0.17.3':
'@esbuild/android-arm64@0.25.0':
optional: true
'@esbuild/android-x64@0.17.3':
'@esbuild/android-arm@0.25.0':
optional: true
'@esbuild/darwin-arm64@0.17.3':
'@esbuild/android-x64@0.25.0':
optional: true
'@esbuild/darwin-x64@0.17.3':
'@esbuild/darwin-arm64@0.25.0':
optional: true
'@esbuild/freebsd-arm64@0.17.3':
'@esbuild/darwin-x64@0.25.0':
optional: true
'@esbuild/freebsd-x64@0.17.3':
'@esbuild/freebsd-arm64@0.25.0':
optional: true
'@esbuild/linux-arm64@0.17.3':
'@esbuild/freebsd-x64@0.25.0':
optional: true
'@esbuild/linux-arm@0.17.3':
'@esbuild/linux-arm64@0.25.0':
optional: true
'@esbuild/linux-ia32@0.17.3':
'@esbuild/linux-arm@0.25.0':
optional: true
'@esbuild/linux-loong64@0.17.3':
'@esbuild/linux-ia32@0.25.0':
optional: true
'@esbuild/linux-mips64el@0.17.3':
'@esbuild/linux-loong64@0.25.0':
optional: true
'@esbuild/linux-ppc64@0.17.3':
'@esbuild/linux-mips64el@0.25.0':
optional: true
'@esbuild/linux-riscv64@0.17.3':
'@esbuild/linux-ppc64@0.25.0':
optional: true
'@esbuild/linux-s390x@0.17.3':
'@esbuild/linux-riscv64@0.25.0':
optional: true
'@esbuild/linux-x64@0.17.3':
'@esbuild/linux-s390x@0.25.0':
optional: true
'@esbuild/netbsd-x64@0.17.3':
'@esbuild/linux-x64@0.25.0':
optional: true
'@esbuild/openbsd-x64@0.17.3':
'@esbuild/netbsd-arm64@0.25.0':
optional: true
'@esbuild/sunos-x64@0.17.3':
'@esbuild/netbsd-x64@0.25.0':
optional: true
'@esbuild/win32-arm64@0.17.3':
'@esbuild/openbsd-arm64@0.25.0':
optional: true
'@esbuild/win32-ia32@0.17.3':
'@esbuild/openbsd-x64@0.25.0':
optional: true
'@esbuild/win32-x64@0.17.3':
'@esbuild/sunos-x64@0.25.0':
optional: true
'@esbuild/win32-arm64@0.25.0':
optional: true
'@esbuild/win32-ia32@0.25.0':
optional: true
'@esbuild/win32-x64@0.25.0':
optional: true
'@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)':
@ -844,14 +863,14 @@ snapshots:
'@eslint/eslintrc@2.1.4':
dependencies:
ajv: 6.12.6
ajv: 6.15.0
debug: 4.4.1
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.2
import-fresh: 3.3.1
js-yaml: 4.1.0
minimatch: 3.1.2
js-yaml: 4.1.1
minimatch: 3.1.5
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
@ -862,7 +881,7 @@ snapshots:
dependencies:
'@humanwhocodes/object-schema': 2.0.3
debug: 4.4.1
minimatch: 3.1.2
minimatch: 3.1.5
transitivePeerDependencies:
- supports-color
@ -894,21 +913,24 @@ snapshots:
'@types/node@16.18.126': {}
'@types/semver@7.7.1': {}
'@types/tern@0.23.9':
dependencies:
'@types/estree': 1.0.8
'@typescript-eslint/eslint-plugin@5.29.0(@typescript-eslint/parser@5.29.0(eslint@8.57.1)(typescript@4.7.4))(eslint@8.57.1)(typescript@4.7.4)':
'@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.7.4))(eslint@8.57.1)(typescript@4.7.4)':
dependencies:
'@typescript-eslint/parser': 5.29.0(eslint@8.57.1)(typescript@4.7.4)
'@typescript-eslint/scope-manager': 5.29.0
'@typescript-eslint/type-utils': 5.29.0(eslint@8.57.1)(typescript@4.7.4)
'@typescript-eslint/utils': 5.29.0(eslint@8.57.1)(typescript@4.7.4)
'@eslint-community/regexpp': 4.12.1
'@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.7.4)
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@4.7.4)
'@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.7.4)
debug: 4.4.1
eslint: 8.57.1
functional-red-black-tree: 1.0.1
graphemer: 1.4.0
ignore: 5.3.2
regexpp: 3.2.0
natural-compare-lite: 1.4.0
semver: 7.7.2
tsutils: 3.21.0(typescript@4.7.4)
optionalDependencies:
@ -916,11 +938,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@5.29.0(eslint@8.57.1)(typescript@4.7.4)':
'@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.7.4)':
dependencies:
'@typescript-eslint/scope-manager': 5.29.0
'@typescript-eslint/types': 5.29.0
'@typescript-eslint/typescript-estree': 5.29.0(typescript@4.7.4)
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.7.4)
debug: 4.4.1
eslint: 8.57.1
optionalDependencies:
@ -928,14 +950,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/scope-manager@5.29.0':
'@typescript-eslint/scope-manager@5.62.0':
dependencies:
'@typescript-eslint/types': 5.29.0
'@typescript-eslint/visitor-keys': 5.29.0
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/visitor-keys': 5.62.0
'@typescript-eslint/type-utils@5.29.0(eslint@8.57.1)(typescript@4.7.4)':
'@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@4.7.4)':
dependencies:
'@typescript-eslint/utils': 5.29.0(eslint@8.57.1)(typescript@4.7.4)
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.7.4)
'@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.7.4)
debug: 4.4.1
eslint: 8.57.1
tsutils: 3.21.0(typescript@4.7.4)
@ -944,12 +967,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/types@5.29.0': {}
'@typescript-eslint/types@5.62.0': {}
'@typescript-eslint/typescript-estree@5.29.0(typescript@4.7.4)':
'@typescript-eslint/typescript-estree@5.62.0(typescript@4.7.4)':
dependencies:
'@typescript-eslint/types': 5.29.0
'@typescript-eslint/visitor-keys': 5.29.0
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/visitor-keys': 5.62.0
debug: 4.4.1
globby: 11.1.0
is-glob: 4.0.3
@ -960,22 +983,24 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@5.29.0(eslint@8.57.1)(typescript@4.7.4)':
'@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@4.7.4)':
dependencies:
'@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1)
'@types/json-schema': 7.0.15
'@typescript-eslint/scope-manager': 5.29.0
'@typescript-eslint/types': 5.29.0
'@typescript-eslint/typescript-estree': 5.29.0(typescript@4.7.4)
'@types/semver': 7.7.1
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.7.4)
eslint: 8.57.1
eslint-scope: 5.1.1
eslint-utils: 3.0.0(eslint@8.57.1)
semver: 7.7.2
transitivePeerDependencies:
- supports-color
- typescript
'@typescript-eslint/visitor-keys@5.29.0':
'@typescript-eslint/visitor-keys@5.62.0':
dependencies:
'@typescript-eslint/types': 5.29.0
'@typescript-eslint/types': 5.62.0
eslint-visitor-keys: 3.4.3
'@ungap/structured-clone@1.3.0': {}
@ -986,7 +1011,7 @@ snapshots:
acorn@8.15.0: {}
ajv@6.12.6:
ajv@6.15.0:
dependencies:
fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0
@ -1005,7 +1030,7 @@ snapshots:
balanced-match@1.0.2: {}
brace-expansion@1.1.12:
brace-expansion@1.1.14:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
@ -1014,8 +1039,6 @@ snapshots:
dependencies:
fill-range: 7.1.1
builtin-modules@3.3.0: {}
callsites@3.1.0: {}
chalk@4.1.2:
@ -1053,30 +1076,33 @@ snapshots:
dependencies:
esutils: 2.0.3
esbuild@0.17.3:
esbuild@0.25.0:
optionalDependencies:
'@esbuild/android-arm': 0.17.3
'@esbuild/android-arm64': 0.17.3
'@esbuild/android-x64': 0.17.3
'@esbuild/darwin-arm64': 0.17.3
'@esbuild/darwin-x64': 0.17.3
'@esbuild/freebsd-arm64': 0.17.3
'@esbuild/freebsd-x64': 0.17.3
'@esbuild/linux-arm': 0.17.3
'@esbuild/linux-arm64': 0.17.3
'@esbuild/linux-ia32': 0.17.3
'@esbuild/linux-loong64': 0.17.3
'@esbuild/linux-mips64el': 0.17.3
'@esbuild/linux-ppc64': 0.17.3
'@esbuild/linux-riscv64': 0.17.3
'@esbuild/linux-s390x': 0.17.3
'@esbuild/linux-x64': 0.17.3
'@esbuild/netbsd-x64': 0.17.3
'@esbuild/openbsd-x64': 0.17.3
'@esbuild/sunos-x64': 0.17.3
'@esbuild/win32-arm64': 0.17.3
'@esbuild/win32-ia32': 0.17.3
'@esbuild/win32-x64': 0.17.3
'@esbuild/aix-ppc64': 0.25.0
'@esbuild/android-arm': 0.25.0
'@esbuild/android-arm64': 0.25.0
'@esbuild/android-x64': 0.25.0
'@esbuild/darwin-arm64': 0.25.0
'@esbuild/darwin-x64': 0.25.0
'@esbuild/freebsd-arm64': 0.25.0
'@esbuild/freebsd-x64': 0.25.0
'@esbuild/linux-arm': 0.25.0
'@esbuild/linux-arm64': 0.25.0
'@esbuild/linux-ia32': 0.25.0
'@esbuild/linux-loong64': 0.25.0
'@esbuild/linux-mips64el': 0.25.0
'@esbuild/linux-ppc64': 0.25.0
'@esbuild/linux-riscv64': 0.25.0
'@esbuild/linux-s390x': 0.25.0
'@esbuild/linux-x64': 0.25.0
'@esbuild/netbsd-arm64': 0.25.0
'@esbuild/netbsd-x64': 0.25.0
'@esbuild/openbsd-arm64': 0.25.0
'@esbuild/openbsd-x64': 0.25.0
'@esbuild/sunos-x64': 0.25.0
'@esbuild/win32-arm64': 0.25.0
'@esbuild/win32-ia32': 0.25.0
'@esbuild/win32-x64': 0.25.0
escape-string-regexp@4.0.0: {}
@ -1090,13 +1116,6 @@ snapshots:
esrecurse: 4.3.0
estraverse: 5.3.0
eslint-utils@3.0.0(eslint@8.57.1):
dependencies:
eslint: 8.57.1
eslint-visitor-keys: 2.1.0
eslint-visitor-keys@2.1.0: {}
eslint-visitor-keys@3.4.3: {}
eslint@8.57.1:
@ -1109,7 +1128,7 @@ snapshots:
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
'@ungap/structured-clone': 1.3.0
ajv: 6.12.6
ajv: 6.15.0
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.4.1
@ -1130,11 +1149,11 @@ snapshots:
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
js-yaml: 4.1.0
js-yaml: 4.1.1
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
minimatch: 3.1.5
natural-compare: 1.4.0
optionator: 0.9.4
strip-ansi: 6.0.1
@ -1195,16 +1214,14 @@ snapshots:
flat-cache@3.2.0:
dependencies:
flatted: 3.3.3
flatted: 3.4.2
keyv: 4.5.4
rimraf: 3.0.2
flatted@3.3.3: {}
flatted@3.4.2: {}
fs.realpath@1.0.0: {}
functional-red-black-tree@1.0.1: {}
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@ -1218,7 +1235,7 @@ snapshots:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.2
minimatch: 3.1.5
once: 1.4.0
path-is-absolute: 1.0.1
@ -1267,7 +1284,7 @@ snapshots:
isexe@2.0.0: {}
js-yaml@4.1.0:
js-yaml@4.1.1:
dependencies:
argparse: 2.0.1
@ -1297,16 +1314,18 @@ snapshots:
micromatch@4.0.8:
dependencies:
braces: 3.0.3
picomatch: 2.3.1
picomatch: 2.3.2
minimatch@3.1.2:
minimatch@3.1.5:
dependencies:
brace-expansion: 1.1.12
brace-expansion: 1.1.14
moment@2.29.4: {}
ms@2.1.3: {}
natural-compare-lite@1.4.0: {}
natural-compare@1.4.0: {}
obsidian@1.8.7(@codemirror/state@6.5.2)(@codemirror/view@6.37.2):
@ -1349,7 +1368,7 @@ snapshots:
path-type@4.0.0: {}
picomatch@2.3.1: {}
picomatch@2.3.2: {}
prelude-ls@1.2.1: {}
@ -1357,8 +1376,6 @@ snapshots:
queue-microtask@1.2.3: {}
regexpp@3.2.0: {}
resolve-from@4.0.0: {}
reusify@1.1.0: {}

7
pnpm-workspace.yaml Normal file
View file

@ -0,0 +1,7 @@
overrides:
brace-expansion: "^1.1.13"
picomatch: "^2.3.2"
minimatch: "^3.1.4"
flatted: "^3.4.2"
js-yaml: "^4.1.1"
ajv: "^6.14.0"

View file

@ -54,8 +54,7 @@ export function addImageLayoutMarkdownProcessor(plugin: ImgRowPlugin) {
// 列表中展示缩略图,点击后仍然使用 srcList 中的原图
const imgEl = createImage(option, thumbSrc, srcList, imgIdx);
const wrapper = document.createElement("div");
wrapper.classList.add("plugin-image-wrapper");
const wrapper = createDiv({ cls: "plugin-image-wrapper" });
wrapper.dataset.imgLine = line.trim(); // 保存原始 markdown 行,供拖拽排序写回使用
wrapper.appendChild(imgEl);
container.appendChild(wrapper);
@ -109,7 +108,7 @@ export function addImageLayoutMarkdownProcessor(plugin: ImgRowPlugin) {
* @returns
*/
function createImage(option: SettingOptions, src: string, srcList?: string[], idx?: number): HTMLImageElement {
const img = document.createElement("img");
const img = createEl("img");
img.src = src;
img.classList.add("plugin-image");
img.style.setProperty("--plugin-image-size", `${option.size}px`);
@ -117,10 +116,9 @@ function createImage(option: SettingOptions, src: string, srcList?: string[], id
const openOverlay = () => {
let curIdx = idx || 0;
const overlay = document.createElement("div");
overlay.classList.add("plugin-image-overlay");
const overlay = createDiv({ cls: "plugin-image-overlay" });
const largeImg = document.createElement("img");
const largeImg = createEl("img");
largeImg.src = srcList?.[curIdx] || src;
largeImg.classList.add("plugin-image-large");
@ -138,10 +136,10 @@ function createImage(option: SettingOptions, src: string, srcList?: string[], id
largeImg.addEventListener("load", applyTallMode);
if (largeImg.complete && largeImg.naturalWidth > 0) applyTallMode();
const prevBtn = document.createElement("button");
const prevBtn = createEl("button");
prevBtn.textContent = "←";
prevBtn.className = "plugin-image-nav-btn plugin-image-nav-btn-prev";
const nextBtn = document.createElement("button");
const nextBtn = createEl("button");
nextBtn.textContent = "→";
nextBtn.className = "plugin-image-nav-btn plugin-image-nav-btn-next";
@ -306,7 +304,7 @@ function createImage(option: SettingOptions, src: string, srcList?: string[], id
setCssProps(largeImg, { transform: `translate(${exitX}px, 0) scale(${scale})` });
setCssProps(largeImg, { opacity: "0" });
setTimeout(() => {
activeWindow.setTimeout(() => {
// 阶段二:切换图源,瞬间移到入场起始位置(不触发 transition
curIdx = newIdx;
largeImg.src = srcList[curIdx];
@ -324,7 +322,7 @@ function createImage(option: SettingOptions, src: string, srcList?: string[], id
setCssProps(largeImg, { transform: "translate(0, 0) scale(1)" });
setCssProps(largeImg, { opacity: "1" });
setTimeout(() => {
activeWindow.setTimeout(() => {
largeImg.style.removeProperty("transition"); // 还原 CSS 默认 transition
isAnimating = false;
}, ANIM_MS);
@ -352,7 +350,7 @@ function createImage(option: SettingOptions, src: string, srcList?: string[], id
updateBtnState();
overlay.appendChild(largeImg);
document.body.appendChild(overlay);
activeDocument.body.appendChild(overlay);
requestAnimationFrame(() => {
overlay.classList.add("plugin-image-overlay-visible");
@ -375,11 +373,11 @@ function createImage(option: SettingOptions, src: string, srcList?: string[], id
}
}
};
document.addEventListener("keydown", handleKeydown);
activeDocument.addEventListener("keydown", handleKeydown);
function closePreview() {
overlay.classList.remove("plugin-image-overlay-visible");
setTimeout(() => { overlay.remove() }, 300);
document.removeEventListener("keydown", handleKeydown);
activeWindow.setTimeout(() => { overlay.remove() }, 300);
activeDocument.removeEventListener("keydown", handleKeydown);
}
};
@ -421,8 +419,7 @@ export function createContainer(option: SettingOptions, plugin: ImgRowPlugin, ct
const container = createImageContainerElement(option);
// 外层包装:统一承载 setting 按钮 + 面板,便于整体迁移到 .cm-preview-code-block
const settingWrapper = document.createElement("div");
settingWrapper.className = "plugin-image-setting-outer";
const settingWrapper = createDiv({ cls: "plugin-image-setting-outer" });
container.appendChild(settingWrapper);
const settingBtn = createSettingButtonElement();
@ -432,10 +429,10 @@ export function createContainer(option: SettingOptions, plugin: ImgRowPlugin, ct
const sizeGroupName = `imgs-size-${Math.random().toString(36).slice(2, 8)}`;
// setting 面板由 setupSettingPanel 创建;
// 挂到 document.body 以彻底脱离 CodeMirror 渲染树,
// 挂到 activeDocument.body 以彻底脱离 CodeMirror 渲染树,
// 避免祖先元素的 transform/will-change 干扰 position:fixed 定位
const { panel, persistIfNeeded, limitCheckbox } = setupSettingPanel(option, plugin, ctx, el, container, sizeGroupName);
document.body.appendChild(panel);
activeDocument.body.appendChild(panel);
// 关联 limitCheckbox供蒙版点击时同步 UI 状态
if (limitCheckbox) containerLimitCheckboxMap.set(container, limitCheckbox);
@ -462,7 +459,7 @@ export function createContainer(option: SettingOptions, plugin: ImgRowPlugin, ct
// 点击 wrapper 或 panel 之外时自动关闭panel 已移至 body需单独判断
// 使用 AbortController 以便在容器销毁时移除监听器,避免泄漏
const clickAbortCtrl = new AbortController();
document.addEventListener("click", (e: MouseEvent) => {
activeDocument.addEventListener("click", (e: MouseEvent) => {
// 容器已从 DOM 中移除时,顺带清理 panel 和监听器
if (!container.isConnected) {
panel.remove();
@ -482,8 +479,7 @@ export function createContainer(option: SettingOptions, plugin: ImgRowPlugin, ct
});
// 安全区域:面板顶部透明块,覆盖按钮与面板之间的间隙,防止鼠标经过间隙时面板提前消失
const safeZone = document.createElement("div");
safeZone.classList.add("plugin-image-panel-safe-zone");
const safeZone = createDiv({ cls: "plugin-image-panel-safe-zone" });
panel.appendChild(safeZone);
// 鼠标移入/移出图片容器:控制阅读模式下按钮的可见性
@ -745,7 +741,7 @@ function applyLimitRows(container: HTMLDivElement, option: SettingOptions, onLim
// 如果容器还没有正确布局(宽度为 0稍后重试一次
if (container.offsetWidth === 0 && retryCount < config.LIMIT_MAX_RETRY) {
retryCount++;
setTimeout(runLimit, config.LIMIT_DELAY);
activeWindow.setTimeout(runLimit, config.LIMIT_DELAY);
return;
}
@ -810,11 +806,8 @@ function applyLimitRows(container: HTMLDivElement, option: SettingOptions, onLim
el.classList.remove("plugin-image-row-hidden");
el.classList.add("plugin-image-more-wrapper");
const mask = document.createElement("div");
mask.className = "plugin-image-more-mask";
const text = document.createElement("span");
text.className = "plugin-image-more-text";
text.textContent = `+ ${remainingCount}`;
const mask = createDiv({ cls: "plugin-image-more-mask" });
const text = createSpan({ cls: "plugin-image-more-text", text: `+ ${remainingCount}` });
mask.appendChild(text);
// 点击蒙版:关闭 limit同步 UI 复选框,并持久化。

View file

@ -4,8 +4,7 @@ import { SettingOptions, SettingPanelDom } from "./domain";
*
*/
export function createImageContainerElement(option: SettingOptions): HTMLDivElement {
const container = document.createElement("div");
container.classList.add("plugin-image-container");
const container = createDiv({ cls: "plugin-image-container" });
container.style.setProperty("--plugin-container-gap", `${option.gap}px`);
return container;
}
@ -14,12 +13,10 @@ export function createImageContainerElement(option: SettingOptions): HTMLDivElem
* setting
*/
export function createSettingButtonElement(): HTMLDivElement {
const settingBtn = document.createElement("div");
settingBtn.className = "plugin-image-setting-btn-container clickable-icon";
const settingBtn = createDiv({ cls: "plugin-image-setting-btn-container clickable-icon" });
settingBtn.setAttribute("aria-label", "Image group settings");
const settingIcon = document.createElement("div");
settingIcon.className = "icon--settings";
const settingIcon = createDiv({ cls: "icon--settings" });
settingBtn.appendChild(settingIcon);
@ -32,21 +29,18 @@ export function createSettingButtonElement(): HTMLDivElement {
*/
export function createSettingPanelDom(sizeGroupName: string): SettingPanelDom {
// 尺寸选项分组(滑块样式的按钮组)
const sizeGroup = document.createElement("div");
sizeGroup.className = "plugin-image-setting-size-group";
const sizeGroup = createDiv({ cls: "plugin-image-setting-size-group" });
sizeGroup.dataset.size = "medium";
// 背景滑块条
const slider = document.createElement("div");
slider.className = "plugin-image-setting-size-slider";
const slider = createDiv({ cls: "plugin-image-setting-size-slider" });
sizeGroup.appendChild(slider);
sizeGroup.appendChild(createSizeRadio("small", "S", sizeGroupName));
sizeGroup.appendChild(createSizeRadio("medium", "M", sizeGroupName));
sizeGroup.appendChild(createSizeRadio("large", "L", sizeGroupName));
const panel = document.createElement("div");
panel.className = "plugin-image-setting-panel";
const panel = createDiv({ cls: "plugin-image-setting-panel" });
panel.appendChild(sizeGroup);
panel.appendChild(createSettingCheckbox("border", "border"));
panel.appendChild(createSettingCheckbox("shadow", "shadow"));
@ -66,18 +60,13 @@ export function createSettingPanelDom(sizeGroupName: string): SettingPanelDom {
// 尺寸选项单选(内部仍然使用 radio外观是按钮组
function createSizeRadio(sizeKey: "small" | "medium" | "large", labelText: string, sizeGroupName: string) {
const label = document.createElement("label");
label.className = "plugin-image-setting-size-radio";
const label = createEl("label", { cls: "plugin-image-setting-size-radio" });
const input = document.createElement("input");
input.type = "radio";
input.className = "plugin-image-setting-size-radio-input";
const input = createEl("input", { cls: "plugin-image-setting-size-radio-input", type: "radio" });
input.dataset.size = sizeKey;
input.name = sizeGroupName;
const textSpan = document.createElement("span");
textSpan.className = "plugin-image-setting-size-radio-text";
textSpan.textContent = labelText;
const textSpan = createSpan({ cls: "plugin-image-setting-size-radio-text", text: labelText });
label.appendChild(input);
label.appendChild(textSpan);
@ -93,23 +82,16 @@ function createSizeRadio(sizeKey: "small" | "medium" | "large", labelText: strin
* @returns
*/
function createSettingCheckbox(settingKey: "border" | "shadow" | "hidden" | "limit", text: string) {
const label = document.createElement("label");
label.className = "plugin-image-setting-checkbox";
const label = createEl("label", { cls: "plugin-image-setting-checkbox" });
const textSpan = document.createElement("span");
textSpan.className = "plugin-image-setting-checkbox-label";
textSpan.textContent = text;
const textSpan = createSpan({ cls: "plugin-image-setting-checkbox-label", text });
const switchWrapper = document.createElement("div");
switchWrapper.className = "plugin-image-setting-switch";
const switchWrapper = createDiv({ cls: "plugin-image-setting-switch" });
const input = document.createElement("input");
input.type = "checkbox";
input.className = "plugin-image-setting-switch-input";
const input = createEl("input", { cls: "plugin-image-setting-switch-input", type: "checkbox" });
input.dataset.setting = settingKey;
const track = document.createElement("span");
track.className = "plugin-image-setting-switch-track";
const track = createSpan({ cls: "plugin-image-setting-switch-track" });
switchWrapper.appendChild(input);
switchWrapper.appendChild(track);
@ -128,14 +110,11 @@ function createSettingCheckbox(settingKey: "border" | "shadow" | "hidden" | "lim
* @returns
*/
export function createErrorDiv(option: SettingOptions): HTMLDivElement {
const errorDiv = document.createElement("div");
errorDiv.classList.add("plugin-image-error", "plugin-image");
const errorDiv = createDiv({ cls: ["plugin-image-error", "plugin-image"] });
const icon = document.createElement("div");
icon.className = "icon--error-picture";
const icon = createDiv({ cls: "icon--error-picture" });
const text = document.createElement("span");
text.textContent = "404";
const text = createSpan({ text: "404" });
errorDiv.appendChild(icon);
errorDiv.appendChild(text);

View file

@ -150,7 +150,7 @@ export async function ensureThumbnailForFile(plugin: ImgRowPlugin, file: TFile,
const sx = (width - cropSize) / 2;
const sy = (height - cropSize) / 2;
const canvas = document.createElement("canvas");
const canvas = createEl("canvas");
canvas.width = targetSide;
canvas.height = targetSide;
const ctx = canvas.getContext("2d");

View file

@ -66,7 +66,7 @@
.plugin-image-overlay {
position: fixed;
top: 0;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
@ -77,8 +77,6 @@
z-index: 9999;
opacity: 0;
transition: opacity 0.3s ease;
/* 新增:让内部按钮绝对定位参照本身容器 */
position: fixed;
}
.plugin-image-nav-btn {
width: 48px;
@ -103,7 +101,7 @@
}
.plugin-image-nav-btn:disabled {
background: rgba(180,180,180,0.5);
color: #aaa;
color: #aaaaaa;
cursor: not-allowed;
}
.plugin-image-nav-btn-prev { left:32px; }
@ -137,26 +135,26 @@
}
.plugin-image-border-large {
border: 1px solid #ccc;
border: 1px solid #cccccc;
}
.plugin-image-more-wrapper {
position: relative;
}
.plugin-image-row-hidden {
display: none !important;
.workspace .plugin-image-row-hidden {
display: none;
}
.plugin-image-more-mask {
pointer-events: all !important ;
.workspace .plugin-image-more-mask {
pointer-events: all;
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
background: rgba(0, 0, 0, 0.45);
color: #fff;
color: #ffffff;
font-size: 18px;
font-weight: 600;
border-radius: inherit;
@ -187,7 +185,7 @@
position: fixed;
min-width: 160px;
display: none;
background: #fff;
background: #ffffff;
border-radius: 10px;
box-shadow: 0 6px 24px rgba(0,0,0,0.13);
padding: 17px 26px 16px 18px;
@ -217,7 +215,7 @@
color: #575757;
}
.plugin-image-setting-panel input[type="checkbox"] {
accent-color: #888;
accent-color: #888888;
}
.plugin-image-setting-checkbox-label {
user-select: none;
@ -251,7 +249,7 @@
width: 14px;
height: 14px;
border-radius: 999px;
background: #fff;
background: #ffffff;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
transition: transform 0.18s ease;
}
@ -292,15 +290,17 @@
.plugin-image-setting-size-group[data-size="large"] .plugin-image-setting-size-slider {
transform: translateX(200%);
}
.workspace .plugin-image-setting-size-radio {
display: flex;
align-items: center;
justify-content: center;
}
.plugin-image-setting-size-radio {
position: relative;
flex: 1 1 0;
display: flex !important;
align-items: center !important;
justify-content: center !important;
cursor: pointer;
font-size: 12.5px;
color: #555;
color: #555555;
z-index: 1;
}
.plugin-image-setting-size-radio-input {
@ -317,7 +317,7 @@
border-radius: 999px;
}
.plugin-image-setting-size-radio-input:checked + .plugin-image-setting-size-radio-text {
color: #fff;
color: #ffffff;
font-weight: 500;
}