diff --git a/package-lock.json b/package-lock.json index b543a39..fac18c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "@0918nobita/obsidian-zhongwen-block", "version": "0.6.0", "dependencies": { + "@fortawesome/free-solid-svg-icons": "6.5.1", "@vanilla-extract/css": "1.14.1", "pinyin-pro": "3.19.6" }, @@ -1015,6 +1016,27 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.1.tgz", + "integrity": "sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.1.tgz", + "integrity": "sha512-S1PPfU3mIJa59biTtXJz1oI0+KAXW6bkAb31XKhxdxtuXDiUIFsih4JR1v5BbxY7hVHsD1RKq+jRkVRaf773NQ==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.5.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -4096,6 +4118,19 @@ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true }, + "@fortawesome/fontawesome-common-types": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.1.tgz", + "integrity": "sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==" + }, + "@fortawesome/free-solid-svg-icons": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.1.tgz", + "integrity": "sha512-S1PPfU3mIJa59biTtXJz1oI0+KAXW6bkAb31XKhxdxtuXDiUIFsih4JR1v5BbxY7hVHsD1RKq+jRkVRaf773NQ==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.5.1" + } + }, "@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", diff --git a/package.json b/package.json index 2ac67b3..4a2b633 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "format:check": "prettier --check ." }, "devDependencies": { + "@fortawesome/free-solid-svg-icons": "6.5.1", "@types/node": "20.11.24", "@vanilla-extract/vite-plugin": "4.0.4", "eslint": "8.57.0", diff --git a/src/icon.ts b/src/icon.ts new file mode 100644 index 0000000..85bf24b --- /dev/null +++ b/src/icon.ts @@ -0,0 +1,19 @@ +export function volumeHigh(): SVGSVGElement { + const svgEl = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + svgEl.setAttribute( + 'viewBox', + `0 0 ${__VOLUME_HIGH_ICON_WIDTH__} ${__VOLUME_HIGH_ICON_HEIGHT__}`, + ); + + const pathEl = document.createElementNS( + 'http://www.w3.org/2000/svg', + 'path', + ); + + pathEl.setAttribute('d', __VOLUME_HIGH_ICON__); + + svgEl.append(pathEl); + + return svgEl; +} diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..cae5e4c --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,3 @@ +declare const __VOLUME_HIGH_ICON__: string; +declare const __VOLUME_HIGH_ICON_WIDTH__: string; +declare const __VOLUME_HIGH_ICON_HEIGHT__: string; diff --git a/vite.config.ts b/vite.config.ts index 70764ee..1ed5cb3 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,3 +1,4 @@ +import { faVolumeHigh } from '@fortawesome/free-solid-svg-icons'; import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin'; import { defineConfig } from 'vite'; @@ -19,6 +20,11 @@ export default defineConfig({ external: ['obsidian'], }, }, + define: { + __VOLUME_HIGH_ICON__: JSON.stringify(faVolumeHigh.icon[4]), + __VOLUME_HIGH_ICON_WIDTH__: JSON.stringify(faVolumeHigh.icon[0]), + __VOLUME_HIGH_ICON_HEIGHT__: JSON.stringify(faVolumeHigh.icon[1]), + }, plugins: [ vanillaExtractPlugin({ identifiers: ({ hash }) => `zhongwenBlock_${hash}`,