From 3f0621ad9cdc1e06d9ea34a0603dd8563cf3913d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:35:23 +0000 Subject: [PATCH 1/6] Initial plan From 6fb6aac26623f6a65755d7bc969b6b817041ad2f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:39:01 +0000 Subject: [PATCH 2/6] Initial exploration completed Co-authored-by: ChronosSF <2188411+ChronosSF@users.noreply.github.com> --- package-lock.json | 406 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 398 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0e56351e2..8be629b60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2753,6 +2753,330 @@ "node": ">= 8" } }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/@shikijs/core": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.15.0.tgz", @@ -4627,7 +4951,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, + "devOptional": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -7349,7 +7673,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, + "devOptional": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9555,6 +9879,13 @@ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true }, + "node_modules/immutable": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", + "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", + "license": "MIT", + "peer": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -9845,7 +10176,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -9863,7 +10194,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, + "devOptional": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -9916,7 +10247,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.12.0" } @@ -11577,7 +11908,7 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, + "devOptional": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -11857,6 +12188,14 @@ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "dev": true }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -12539,7 +12878,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8.6" }, @@ -13620,6 +13959,57 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "node_modules/sass": { + "version": "1.94.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.94.0.tgz", + "integrity": "sha512-Dqh7SiYcaFtdv5Wvku6QgS5IGPm281L+ZtVD1U2FJa7Q0EFRlq8Z3sjYtz6gYObsYThUOz9ArwFqPZx+1azILQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/sax": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", @@ -15037,7 +15427,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, + "devOptional": true, "dependencies": { "is-number": "^7.0.0" }, From 4a39c7f572aee09df1bdd59c0826121e4b3bb03c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:44:32 +0000 Subject: [PATCH 3/6] Add initial Vite-based samples browser structure Co-authored-by: ChronosSF <2188411+ChronosSF@users.noreply.github.com> --- browser-vite/.gitignore | 23 + browser-vite/README.md | 101 ++ browser-vite/index.html | 212 +++++ browser-vite/package-lock.json | 1307 ++++++++++++++++++++++++++ browser-vite/package.json | 30 + browser-vite/scripts/copy-samples.js | 107 +++ browser-vite/src/main.ts | 216 +++++ browser-vite/tsconfig.json | 24 + browser-vite/vite.config.js | 25 + 9 files changed, 2045 insertions(+) create mode 100644 browser-vite/.gitignore create mode 100644 browser-vite/README.md create mode 100644 browser-vite/index.html create mode 100644 browser-vite/package-lock.json create mode 100644 browser-vite/package.json create mode 100644 browser-vite/scripts/copy-samples.js create mode 100644 browser-vite/src/main.ts create mode 100644 browser-vite/tsconfig.json create mode 100644 browser-vite/vite.config.js diff --git a/browser-vite/.gitignore b/browser-vite/.gitignore new file mode 100644 index 000000000..874a6bc07 --- /dev/null +++ b/browser-vite/.gitignore @@ -0,0 +1,23 @@ +# Dependencies +node_modules/ + +# Build output +dist/ + +# Generated files +src/samples/ +src/samples-metadata.json + +# Logs +*.log +npm-debug.log* + +# IDE +.vscode/ +.idea/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db diff --git a/browser-vite/README.md b/browser-vite/README.md new file mode 100644 index 000000000..4e2f34aaa --- /dev/null +++ b/browser-vite/README.md @@ -0,0 +1,101 @@ +# Vite-Based Samples Browser + +This is a Vite-powered samples browser for Ignite UI Web Components. It provides a fast development experience with hot module replacement (HMR) and efficient builds. + +## Features + +- **Fast Development**: Powered by Vite for instant server start and lightning-fast HMR +- **Sample Navigation**: Browse samples organized by component groups and categories +- **Standalone Sample View**: Each sample can be accessed via a direct URL +- **Simple Copy Process**: No complex build tools - samples are copied from the `/samples` folder using a simple Node.js script + +## Getting Started + +### Prerequisites + +- Node.js 16+ and npm + +### Installation + +```bash +cd browser-vite +npm install +``` + +### Development + +Run the development server: + +```bash +npm run dev +``` + +This will: +1. Copy samples from the `/samples` folder +2. Start the Vite development server +3. Open the browser at `http://localhost:3000` + +### Building for Production + +Build the application: + +```bash +npm run build +``` + +Preview the production build: + +```bash +npm run preview +``` + +## How It Works + +### Sample Copying + +The `scripts/copy-samples.js` script: +1. Scans the `/samples` directory for all sample folders (identified by `package.json`) +2. Copies the `src` directory from each sample to `browser-vite/src/samples` +3. Generates a `samples-metadata.json` file with sample information + +### Routing + +The browser supports two routing modes: + +1. **Browser View**: Access samples with navigation sidebar at `http://localhost:3000/` +2. **Standalone Sample View**: Access individual samples directly at `http://localhost:3000/{group}/{category}/{sample-name}` + +Examples: +- `http://localhost:3000/grids/tree-grid/custom-filtering` +- `http://localhost:3000/charts/category-chart/overview` + +### Structure + +``` +browser-vite/ +├── scripts/ +│ └── copy-samples.js # Simple script to copy samples +├── src/ +│ ├── main.ts # Main application entry point +│ ├── samples/ # Copied samples (generated) +│ └── samples-metadata.json # Sample metadata (generated) +├── public/ # Static assets +├── index.html # Main HTML file +├── vite.config.js # Vite configuration +├── tsconfig.json # TypeScript configuration +└── package.json # Dependencies and scripts +``` + +## Sample Requirements + +Samples are expected to have minimal changes from their original structure: +- Each sample must have a `src` directory with TypeScript files +- The main entry point should be `src/index.ts` +- Samples should be self-contained (all dependencies imported) + +## Development Notes + +- The copy script runs automatically before `dev` and `build` commands +- To manually copy samples: `npm run copy-samples` +- Samples are copied as-is from the `/samples` folder +- HMR works for the browser UI, but sample changes require re-running the copy script diff --git a/browser-vite/index.html b/browser-vite/index.html new file mode 100644 index 000000000..301ccf58b --- /dev/null +++ b/browser-vite/index.html @@ -0,0 +1,212 @@ + + + + + + Ignite UI Web Components - Samples Browser (Vite) + + + + + + + + + +
+
+ + Select a sample from the sidebar +
+
+
+

Welcome to Ignite UI Web Components Samples

+

+ Select a sample from the sidebar to view it. This browser is powered by Vite + for fast development and hot module replacement. +

+
+
+
+ + + + diff --git a/browser-vite/package-lock.json b/browser-vite/package-lock.json new file mode 100644 index 000000000..760be6727 --- /dev/null +++ b/browser-vite/package-lock.json @@ -0,0 +1,1307 @@ +{ + "name": "browser-vite", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "browser-vite", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "igniteui-webcomponents": "^6.3.6", + "igniteui-webcomponents-charts": "^6.2.1", + "igniteui-webcomponents-core": "^6.2.1", + "igniteui-webcomponents-gauges": "^6.2.1", + "igniteui-webcomponents-grids": "^6.2.1", + "igniteui-webcomponents-inputs": "^6.2.1", + "igniteui-webcomponents-layouts": "^6.2.1", + "igniteui-webcomponents-maps": "^6.2.1", + "lit-html": "^3.3.1" + }, + "devDependencies": { + "typescript": "^5.9.3", + "vite": "^7.2.2" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz", + "integrity": "sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==", + "license": "BSD-3-Clause" + }, + "node_modules/@lit-labs/virtualizer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@lit-labs/virtualizer/-/virtualizer-2.1.1.tgz", + "integrity": "sha512-JWxMwnlouLdwpw8spLTuax53WMnSP3xt0dCyxAS7GJr5Otda9MGgR/ghAdfwhSY75TmjbE1T2TqChwoGCw3ggw==", + "license": "BSD-3-Clause", + "dependencies": { + "lit": "^3.2.0", + "tslib": "^2.0.3" + } + }, + "node_modules/@lit/context": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.6.tgz", + "integrity": "sha512-M26qDE6UkQbZA2mQ3RjJ3Gzd8TxP+/0obMgE5HfkfLhEEyYE3Bui4A5XHiGPjy0MUGAyxB3QgVuw2ciS0kHn6A==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^1.6.2 || ^2.1.0" + } + }, + "node_modules/@lit/reactive-element": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.1.tgz", + "integrity": "sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.4.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", + "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", + "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", + "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", + "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", + "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", + "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", + "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", + "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", + "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", + "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", + "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", + "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", + "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", + "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", + "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", + "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", + "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", + "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", + "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", + "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", + "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", + "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/igniteui-webcomponents": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents/-/igniteui-webcomponents-6.3.6.tgz", + "integrity": "sha512-MRCCD204AE/0H2WRWiZHdRnpuldn/pjzk+3VGAtOvJ03+22HlmE3/7sMhnfNqsxqn/SHFTTFzBV56f3FEFu1+w==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.0", + "@lit-labs/virtualizer": "^2.1.0", + "@lit/context": "^1.1.0", + "lit": "^3.3.0" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "dompurify": "^3.2.0", + "marked": "^16.3.0", + "marked-shiki": "^1.2.0", + "shiki": "^3.12.0" + }, + "peerDependenciesMeta": { + "dompurify": { + "optional": true + }, + "marked": { + "optional": true + }, + "marked-shiki": { + "optional": true + }, + "shiki": { + "optional": true + } + } + }, + "node_modules/igniteui-webcomponents-charts": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-charts/-/igniteui-webcomponents-charts-6.2.1.tgz", + "integrity": "sha512-sS917RJyJeYCbTqb2KZn72SThZ88abqxA8tCsJITtPCdqrcwmBhPFJpftWuBm7lLVPDBB4DYEFohwRGE/qUo6Q==", + "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "igniteui-webcomponents-core": "6.2.1" + } + }, + "node_modules/igniteui-webcomponents-core": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-core/-/igniteui-webcomponents-core-6.2.1.tgz", + "integrity": "sha512-Y7dzkXjND62//9XrJQ9RdEl7S8OUoDyxWtuPpH+7jqs46su0/IbRRY8MgPeETDLS6v2LFXZIt57mJJXz73M9zQ==", + "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "lit-html": "^3.2.0" + } + }, + "node_modules/igniteui-webcomponents-gauges": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-gauges/-/igniteui-webcomponents-gauges-6.2.1.tgz", + "integrity": "sha512-k2v1xSSvJcf/KXrfyhL7vOrUVrvxR6W3+jEcS7LRFOBHIG2Fvqrh84y4EBA1m5itdmxjdX1v+Ssu40jsrfPZ0w==", + "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "igniteui-webcomponents-core": "6.2.1" + } + }, + "node_modules/igniteui-webcomponents-grids": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-grids/-/igniteui-webcomponents-grids-6.2.1.tgz", + "integrity": "sha512-0+di4MvXLyzyKNlTudJawNBzi6eHuySRd/m/KCkb+baJIJ4asBFRPTKCbQzKbQE/+2H4OmjayhZqwaTo19hzpQ==", + "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "dependencies": { + "lit": "^3.3.0", + "tslib": "^2.3.1" + } + }, + "node_modules/igniteui-webcomponents-inputs": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-inputs/-/igniteui-webcomponents-inputs-6.2.1.tgz", + "integrity": "sha512-aRc3ior3zuuunvQfmDo5NLOz4yODBxq+fcTNFc767fXM0eW65nTOFWPsVnlicXtrTwSULcWul6208PrqeXFISg==", + "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "igniteui-webcomponents-core": "6.2.1" + } + }, + "node_modules/igniteui-webcomponents-layouts": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-layouts/-/igniteui-webcomponents-layouts-6.2.1.tgz", + "integrity": "sha512-JlJy4rCPJ+HvXkXurAUEIzRSvPO/PNLZyLQj4wmpFVcRmqUkuAQOpLriz/VbR37hEDBAYBS9ZKdBlrXBUovyKA==", + "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "igniteui-webcomponents-core": "6.2.1", + "igniteui-webcomponents-inputs": "6.2.1" + } + }, + "node_modules/igniteui-webcomponents-maps": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-maps/-/igniteui-webcomponents-maps-6.2.1.tgz", + "integrity": "sha512-yB+rZZlmPP6MkIvON67/XD9s4N7Ee113nK2zqps02PnxsUAsASad9YIaibaTLPORp0MwyZVxCJBdxw3Jmlp2/A==", + "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "igniteui-webcomponents-charts": "6.2.1", + "igniteui-webcomponents-core": "6.2.1" + } + }, + "node_modules/lit": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.1.tgz", + "integrity": "sha512-Ksr/8L3PTapbdXJCk+EJVB78jDodUMaP54gD24W186zGRARvwrsPfS60wae/SSCTCNZVPd1chXqio1qHQmu4NA==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^2.1.0", + "lit-element": "^4.2.0", + "lit-html": "^3.3.0" + } + }, + "node_modules/lit-element": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.1.tgz", + "integrity": "sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.4.0", + "@lit/reactive-element": "^2.1.0", + "lit-html": "^3.3.0" + } + }, + "node_modules/lit-html": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.1.tgz", + "integrity": "sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", + "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.2", + "@rollup/rollup-android-arm64": "4.53.2", + "@rollup/rollup-darwin-arm64": "4.53.2", + "@rollup/rollup-darwin-x64": "4.53.2", + "@rollup/rollup-freebsd-arm64": "4.53.2", + "@rollup/rollup-freebsd-x64": "4.53.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", + "@rollup/rollup-linux-arm-musleabihf": "4.53.2", + "@rollup/rollup-linux-arm64-gnu": "4.53.2", + "@rollup/rollup-linux-arm64-musl": "4.53.2", + "@rollup/rollup-linux-loong64-gnu": "4.53.2", + "@rollup/rollup-linux-ppc64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-musl": "4.53.2", + "@rollup/rollup-linux-s390x-gnu": "4.53.2", + "@rollup/rollup-linux-x64-gnu": "4.53.2", + "@rollup/rollup-linux-x64-musl": "4.53.2", + "@rollup/rollup-openharmony-arm64": "4.53.2", + "@rollup/rollup-win32-arm64-msvc": "4.53.2", + "@rollup/rollup-win32-ia32-msvc": "4.53.2", + "@rollup/rollup-win32-x64-gnu": "4.53.2", + "@rollup/rollup-win32-x64-msvc": "4.53.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vite": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", + "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/browser-vite/package.json b/browser-vite/package.json new file mode 100644 index 000000000..f883ee69d --- /dev/null +++ b/browser-vite/package.json @@ -0,0 +1,30 @@ +{ + "name": "browser-vite", + "version": "1.0.0", + "description": "Vite-based Samples Browser for Ignite UI Web Components", + "type": "module", + "scripts": { + "copy-samples": "node scripts/copy-samples.js", + "dev": "npm run copy-samples && vite", + "build": "npm run copy-samples && vite build", + "preview": "vite preview" + }, + "keywords": [], + "author": "Infragistics", + "license": "ISC", + "devDependencies": { + "typescript": "^5.9.3", + "vite": "^7.2.2" + }, + "dependencies": { + "igniteui-webcomponents": "^6.3.6", + "igniteui-webcomponents-charts": "^6.2.1", + "igniteui-webcomponents-core": "^6.2.1", + "igniteui-webcomponents-gauges": "^6.2.1", + "igniteui-webcomponents-grids": "^6.2.1", + "igniteui-webcomponents-inputs": "^6.2.1", + "igniteui-webcomponents-layouts": "^6.2.1", + "igniteui-webcomponents-maps": "^6.2.1", + "lit-html": "^3.3.1" + } +} diff --git a/browser-vite/scripts/copy-samples.js b/browser-vite/scripts/copy-samples.js new file mode 100644 index 000000000..feb3aba78 --- /dev/null +++ b/browser-vite/scripts/copy-samples.js @@ -0,0 +1,107 @@ +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const projectRoot = path.resolve(__dirname, '../..'); +const samplesDir = path.join(projectRoot, 'samples'); +const targetDir = path.join(__dirname, '..', 'src', 'samples'); + +// Function to recursively copy directory +function copyDirectory(src, dest) { + if (!fs.existsSync(dest)) { + fs.mkdirSync(dest, { recursive: true }); + } + + const entries = fs.readdirSync(src, { withFileTypes: true }); + + for (const entry of entries) { + const srcPath = path.join(src, entry.name); + const destPath = path.join(dest, entry.name); + + if (entry.isDirectory()) { + copyDirectory(srcPath, destPath); + } else { + fs.copyFileSync(srcPath, destPath); + } + } +} + +// Function to find all samples +function findSamples(dir, basePath = '') { + const samples = []; + const entries = fs.readdirSync(dir, { withFileTypes: true }); + + for (const entry of entries) { + if (!entry.isDirectory()) continue; + + const fullPath = path.join(dir, entry.name); + const relativePath = path.join(basePath, entry.name); + + // Check if this directory contains a package.json (indicating it's a sample) + const packageJsonPath = path.join(fullPath, 'package.json'); + if (fs.existsSync(packageJsonPath)) { + samples.push({ + name: entry.name, + path: fullPath, + relativePath: relativePath + }); + } else { + // Recurse into subdirectories + samples.push(...findSamples(fullPath, relativePath)); + } + } + + return samples; +} + +// Clean target directory +console.log('Cleaning samples directory...'); +if (fs.existsSync(targetDir)) { + fs.rmSync(targetDir, { recursive: true, force: true }); +} +fs.mkdirSync(targetDir, { recursive: true }); + +// Find all samples +console.log('Finding samples...'); +const samples = findSamples(samplesDir); +console.log(`Found ${samples.length} samples`); + +// Copy samples +console.log('Copying samples...'); +let copiedCount = 0; +const sampleMetadata = []; + +for (const sample of samples) { + const targetPath = path.join(targetDir, sample.relativePath); + const srcPath = path.join(sample.path, 'src'); + + // Copy only the src directory content + if (fs.existsSync(srcPath)) { + copyDirectory(srcPath, targetPath); + copiedCount++; + + // Read package.json for metadata + const packageJsonPath = path.join(sample.path, 'package.json'); + try { + const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')); + + sampleMetadata.push({ + name: sample.name, + path: sample.relativePath, + description: packageJson.description || sample.name + }); + } catch (e) { + console.warn(`Warning: Could not read package.json for ${sample.name}`); + } + } +} + +// Generate samples metadata file +const metadataPath = path.join(__dirname, '..', 'src', 'samples-metadata.json'); +fs.writeFileSync(metadataPath, JSON.stringify(sampleMetadata, null, 2)); + +console.log(`Copied ${copiedCount} samples to ${targetDir}`); +console.log('Sample metadata written to:', metadataPath); diff --git a/browser-vite/src/main.ts b/browser-vite/src/main.ts new file mode 100644 index 000000000..92948e42a --- /dev/null +++ b/browser-vite/src/main.ts @@ -0,0 +1,216 @@ +// @ts-nocheck +import samplesMetadata from './samples-metadata.json'; + +interface SampleInfo { + name: string; + path: string; + description: string; +} + +class SamplesBrowser { + private navSidebar: HTMLElement; + private navContent: HTMLElement; + private sampleContainer: HTMLElement; + private sampleTitle: HTMLElement; + private toggleNavBtn: HTMLElement; + private samples: SampleInfo[] = []; + private currentSample: string | null = null; + + constructor() { + this.navSidebar = document.getElementById('nav-sidebar')!; + this.navContent = document.getElementById('nav-content')!; + this.sampleContainer = document.getElementById('sample-container')!; + this.sampleTitle = document.getElementById('sample-title')!; + this.toggleNavBtn = document.getElementById('toggle-nav')!; + + this.samples = samplesMetadata as SampleInfo[]; + + this.init(); + } + + private init() { + // Setup navigation toggle + this.toggleNavBtn.addEventListener('click', () => { + this.navSidebar.classList.toggle('hidden'); + }); + + // Build navigation + this.buildNavigation(); + + // Setup routing + this.setupRouting(); + + // Load initial route + this.navigateToRoute(window.location.pathname); + } + + private buildNavigation() { + const groupedSamples = this.groupSamples(); + + for (const [group, categories] of Object.entries(groupedSamples)) { + const groupDiv = document.createElement('div'); + groupDiv.className = 'nav-group'; + groupDiv.textContent = group.toUpperCase(); + this.navContent.appendChild(groupDiv); + + for (const [category, samples] of Object.entries(categories)) { + const categoryDiv = document.createElement('div'); + categoryDiv.className = 'nav-category'; + categoryDiv.textContent = this.formatCategoryName(category); + categoryDiv.dataset.category = `${group}/${category}`; + + const samplesDiv = document.createElement('div'); + samplesDiv.className = 'nav-samples'; + + for (const sample of samples) { + const sampleDiv = document.createElement('div'); + sampleDiv.className = 'nav-sample'; + sampleDiv.textContent = this.formatSampleName(sample.name); + sampleDiv.dataset.samplePath = sample.path; + + sampleDiv.addEventListener('click', () => { + this.navigateTo(`/${sample.path}`); + }); + + samplesDiv.appendChild(sampleDiv); + } + + categoryDiv.addEventListener('click', () => { + categoryDiv.classList.toggle('expanded'); + samplesDiv.classList.toggle('visible'); + }); + + this.navContent.appendChild(categoryDiv); + this.navContent.appendChild(samplesDiv); + } + } + } + + private groupSamples(): Record> { + const grouped: Record> = {}; + + for (const sample of this.samples) { + const parts = sample.path.split(/[/\\]/); + + if (parts.length >= 2) { + const group = parts[0]; + const category = parts[1]; + + if (!grouped[group]) { + grouped[group] = {}; + } + + if (!grouped[group][category]) { + grouped[group][category] = []; + } + + grouped[group][category].push(sample); + } + } + + return grouped; + } + + private formatCategoryName(name: string): string { + return name + .split('-') + .map(word => word.charAt(0).toUpperCase() + word.slice(1)) + .join(' '); + } + + private formatSampleName(name: string): string { + return name + .split('-') + .map(word => word.charAt(0).toUpperCase() + word.slice(1)) + .join(' '); + } + + private setupRouting() { + window.addEventListener('popstate', () => { + this.navigateToRoute(window.location.pathname); + }); + } + + private navigateTo(path: string) { + window.history.pushState({}, '', path); + this.navigateToRoute(path); + } + + private async navigateToRoute(route: string) { + // Remove leading slash and normalize + const normalizedRoute = route.replace(/^\//, '').replace(/\/$/, ''); + + if (!normalizedRoute) { + this.showWelcome(); + return; + } + + // Find the sample + const sample = this.samples.find(s => s.path === normalizedRoute); + + if (sample) { + await this.loadSample(sample); + } else { + this.showWelcome(); + } + } + + private async loadSample(sample: SampleInfo) { + this.currentSample = sample.path; + this.sampleTitle.textContent = this.formatSampleName(sample.name); + + // Update active state in nav + document.querySelectorAll('.nav-sample').forEach(el => { + if (el.dataset.samplePath === sample.path) { + el.classList.add('active'); + } else { + el.classList.remove('active'); + } + }); + + // Show loading state + this.sampleContainer.innerHTML = '
Loading sample...
'; + + try { + // Dynamically import the sample module + const modulePath = `/src/samples/${sample.path}/index.ts`; + + // Create a container for the sample + this.sampleContainer.innerHTML = '
'; + + // Import and initialize the sample + await import(/* @vite-ignore */ modulePath); + + } catch (error) { + console.error('Error loading sample:', error); + this.sampleContainer.innerHTML = ` +
+

Error Loading Sample

+

Could not load sample: ${sample.name}

+
${error}
+
+ `; + } + } + + private showWelcome() { + this.currentSample = null; + this.sampleTitle.textContent = 'Select a sample from the sidebar'; + this.sampleContainer.innerHTML = ` +
+

Welcome to Ignite UI Web Components Samples

+

+ Select a sample from the sidebar to view it. This browser is powered by Vite + for fast development and hot module replacement. +

+
+ `; + + document.querySelectorAll('.nav-sample').forEach(el => { + el.classList.remove('active'); + }); + } +} + +// Initialize the browser when DOM is ready +new SamplesBrowser(); diff --git a/browser-vite/tsconfig.json b/browser-vite/tsconfig.json new file mode 100644 index 000000000..7efa6502b --- /dev/null +++ b/browser-vite/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "strict": false, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "paths": { + "@samples/*": ["./src/samples/*"] + } + }, + "include": ["src/**/*"], + "exclude": ["node_modules"] +} diff --git a/browser-vite/vite.config.js b/browser-vite/vite.config.js new file mode 100644 index 000000000..99e76499e --- /dev/null +++ b/browser-vite/vite.config.js @@ -0,0 +1,25 @@ +import { defineConfig } from 'vite'; +import path from 'path'; + +export default defineConfig({ + root: '.', + base: './', + publicDir: 'public', + build: { + outDir: 'dist', + rollupOptions: { + input: { + main: path.resolve(__dirname, 'index.html') + } + } + }, + server: { + port: 3000, + open: true + }, + resolve: { + alias: { + '@samples': path.resolve(__dirname, 'src/samples') + } + } +}); From c1368b8ba3fcb9b61440bbb2c918fd0f0b21ca90 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:56:57 +0000 Subject: [PATCH 4/6] Complete Vite-based samples browser with navigation and routing Co-authored-by: ChronosSF <2188411+ChronosSF@users.noreply.github.com> --- browser-vite/.gitignore | 2 +- browser-vite/README.md | 27 ++++++++++++++---- browser-vite/scripts/copy-samples.js | 42 +++++++++++++++++++++++++++- browser-vite/src/main.ts | 7 +++-- browser-vite/vite.config.js | 5 ++-- 5 files changed, 71 insertions(+), 12 deletions(-) diff --git a/browser-vite/.gitignore b/browser-vite/.gitignore index 874a6bc07..e71c9d71c 100644 --- a/browser-vite/.gitignore +++ b/browser-vite/.gitignore @@ -20,4 +20,4 @@ npm-debug.log* # OS .DS_Store -Thumbs.db +Thumbs.db \ No newline at end of file diff --git a/browser-vite/README.md b/browser-vite/README.md index 4e2f34aaa..a9f97b2b2 100644 --- a/browser-vite/README.md +++ b/browser-vite/README.md @@ -56,7 +56,8 @@ npm run preview The `scripts/copy-samples.js` script: 1. Scans the `/samples` directory for all sample folders (identified by `package.json`) 2. Copies the `src` directory from each sample to `browser-vite/src/samples` -3. Generates a `samples-metadata.json` file with sample information +3. Extracts HTML content from each sample's `index.html` file +4. Generates a `samples-metadata.json` file with sample information including HTML structure ### Routing @@ -88,14 +89,30 @@ browser-vite/ ## Sample Requirements -Samples are expected to have minimal changes from their original structure: +Samples work with their original structure: - Each sample must have a `src` directory with TypeScript files - The main entry point should be `src/index.ts` -- Samples should be self-contained (all dependencies imported) +- Each sample's `index.html` provides the component structure (extracted automatically) +- Samples are self-contained with all dependencies imported ## Development Notes - The copy script runs automatically before `dev` and `build` commands - To manually copy samples: `npm run copy-samples` -- Samples are copied as-is from the `/samples` folder -- HMR works for the browser UI, but sample changes require re-running the copy script +- Samples are copied as-is from the `/samples` folder with HTML structure extracted +- Navigation and routing work in both development and production builds +- The browser successfully displays 936 samples organized by component groups + +## Current Limitations + +This is an initial implementation focusing on the browser structure and navigation. The sample loading mechanism uses dynamic imports which work well in development mode but may require additional configuration for production deployments. The core functionality (navigation, routing, sample organization) is fully operational. + +## Comparison with Original Browser + +This Vite-based browser: +- ✅ Uses a simple Node.js script instead of Gulp for copying samples +- ✅ Provides the same navigation structure with collapsible categories +- ✅ Supports both browser view and standalone sample URLs +- ✅ Extracts and uses HTML content from original samples +- ✅ Maintains the same sample organization (by group/category/name) +- ✅ Requires minimal or no changes to sample source files diff --git a/browser-vite/scripts/copy-samples.js b/browser-vite/scripts/copy-samples.js index feb3aba78..698c38f66 100644 --- a/browser-vite/scripts/copy-samples.js +++ b/browser-vite/scripts/copy-samples.js @@ -29,6 +29,40 @@ function copyDirectory(src, dest) { } } +// Extract HTML content from body div#root +function extractHtmlContent(htmlFilePath) { + try { + const htmlContent = fs.readFileSync(htmlFilePath, 'utf-8'); + + // Extract content between
and
before + const rootStartMatch = htmlContent.match(/
/i); + + if (!rootStartMatch) { + return ''; + } + + const startIndex = rootStartMatch.index + rootStartMatch[0].length; + const bodyEndIndex = htmlContent.indexOf('', startIndex); + + if (bodyEndIndex === -1) { + return ''; + } + + // Find the last
before + const beforeBody = htmlContent.substring(startIndex, bodyEndIndex); + const lastDivIndex = beforeBody.lastIndexOf(''); + + if (lastDivIndex === -1) { + return ''; + } + + return beforeBody.substring(0, lastDivIndex).trim(); + } catch (e) { + console.warn(`Could not extract HTML content from ${htmlFilePath}`); + return ''; + } +} + // Function to find all samples function findSamples(dir, basePath = '') { const samples = []; @@ -88,10 +122,15 @@ for (const sample of samples) { try { const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')); + // Extract HTML content from index.html + const htmlFilePath = path.join(sample.path, 'index.html'); + const htmlContent = extractHtmlContent(htmlFilePath); + sampleMetadata.push({ name: sample.name, path: sample.relativePath, - description: packageJson.description || sample.name + description: packageJson.description || sample.name, + htmlContent: htmlContent }); } catch (e) { console.warn(`Warning: Could not read package.json for ${sample.name}`); @@ -105,3 +144,4 @@ fs.writeFileSync(metadataPath, JSON.stringify(sampleMetadata, null, 2)); console.log(`Copied ${copiedCount} samples to ${targetDir}`); console.log('Sample metadata written to:', metadataPath); + diff --git a/browser-vite/src/main.ts b/browser-vite/src/main.ts index 92948e42a..de1d75742 100644 --- a/browser-vite/src/main.ts +++ b/browser-vite/src/main.ts @@ -5,6 +5,7 @@ interface SampleInfo { name: string; path: string; description: string; + htmlContent: string; } class SamplesBrowser { @@ -172,12 +173,12 @@ class SamplesBrowser { this.sampleContainer.innerHTML = '
Loading sample...
'; try { + // Create container with the HTML content + this.sampleContainer.innerHTML = sample.htmlContent || '
'; + // Dynamically import the sample module const modulePath = `/src/samples/${sample.path}/index.ts`; - // Create a container for the sample - this.sampleContainer.innerHTML = '
'; - // Import and initialize the sample await import(/* @vite-ignore */ modulePath); diff --git a/browser-vite/vite.config.js b/browser-vite/vite.config.js index 99e76499e..261a2cba5 100644 --- a/browser-vite/vite.config.js +++ b/browser-vite/vite.config.js @@ -3,7 +3,7 @@ import path from 'path'; export default defineConfig({ root: '.', - base: './', + base: '/', publicDir: 'public', build: { outDir: 'dist', @@ -15,7 +15,8 @@ export default defineConfig({ }, server: { port: 3000, - open: true + host: '0.0.0.0', + open: false }, resolve: { alias: { From f00db7d9999146ee5256b51711c5c5e13468d8f8 Mon Sep 17 00:00:00 2001 From: Stamen Stoychev Date: Mon, 17 Nov 2025 18:40:44 +0200 Subject: [PATCH 5/6] fix(vite-browser): adding some vite browser fixes --- browser-vite/package-lock.json | 9 ++- browser-vite/package.json | 7 +- browser-vite/src/main.ts | 126 ++++++++++++++++++++++++--------- browser-vite/vite.config.js | 5 +- 4 files changed, 110 insertions(+), 37 deletions(-) diff --git a/browser-vite/package-lock.json b/browser-vite/package-lock.json index 760be6727..d26d0674e 100644 --- a/browser-vite/package-lock.json +++ b/browser-vite/package-lock.json @@ -17,7 +17,8 @@ "igniteui-webcomponents-inputs": "^6.2.1", "igniteui-webcomponents-layouts": "^6.2.1", "igniteui-webcomponents-maps": "^6.2.1", - "lit-html": "^3.3.1" + "lit-html": "^3.3.1", + "navigo": "^8.11.1" }, "devDependencies": { "typescript": "^5.9.3", @@ -1090,6 +1091,12 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/navigo": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/navigo/-/navigo-8.11.1.tgz", + "integrity": "sha512-e3sc1UzakF+bWquC8/dbPCgo7LgPEW1ekgwb4pmEcl8tOc/I7lML8r7HBql+b0VRk7tJWTZqtkeObwJAVR1pxg==", + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", diff --git a/browser-vite/package.json b/browser-vite/package.json index f883ee69d..42a5138f9 100644 --- a/browser-vite/package.json +++ b/browser-vite/package.json @@ -4,9 +4,9 @@ "description": "Vite-based Samples Browser for Ignite UI Web Components", "type": "module", "scripts": { - "copy-samples": "node scripts/copy-samples.js", + "copy-samples": "node --max-old-space-size=4096 scripts/copy-samples.js", "dev": "npm run copy-samples && vite", - "build": "npm run copy-samples && vite build", + "build": "npm run copy-samples && node --max-old-space-size=8192 ./node_modules/vite/bin/vite.js build", "preview": "vite preview" }, "keywords": [], @@ -25,6 +25,7 @@ "igniteui-webcomponents-inputs": "^6.2.1", "igniteui-webcomponents-layouts": "^6.2.1", "igniteui-webcomponents-maps": "^6.2.1", - "lit-html": "^3.3.1" + "lit-html": "^3.3.1", + "navigo": "^8.11.1" } } diff --git a/browser-vite/src/main.ts b/browser-vite/src/main.ts index de1d75742..80ab3142a 100644 --- a/browser-vite/src/main.ts +++ b/browser-vite/src/main.ts @@ -1,5 +1,7 @@ // @ts-nocheck -import samplesMetadata from './samples-metadata.json'; +import Navigo from 'navigo'; +import { html, render } from 'lit'; +import samplesMetadata from './samples-metadata.json?url'; interface SampleInfo { name: string; @@ -15,7 +17,9 @@ class SamplesBrowser { private sampleTitle: HTMLElement; private toggleNavBtn: HTMLElement; private samples: SampleInfo[] = []; - private currentSample: string | null = null; + private router: Navigo; + private sampleModules = import.meta.glob('/src/samples/**/index.ts'); + private isEmbeddedMode = false; constructor() { this.navSidebar = document.getElementById('nav-sidebar')!; @@ -23,10 +27,19 @@ class SamplesBrowser { this.sampleContainer = document.getElementById('sample-container')!; this.sampleTitle = document.getElementById('sample-title')!; this.toggleNavBtn = document.getElementById('toggle-nav')!; - - this.samples = samplesMetadata as SampleInfo[]; - this.init(); + this.router = new Navigo('/', { hash: false }); + this.loadMetadata(); + } + + private async loadMetadata() { + try { + const response = await fetch(samplesMetadata); + this.samples = await response.json(); + this.init(); + } catch (error) { + console.error('Failed to load samples metadata:', error); + } } private init() { @@ -38,11 +51,25 @@ class SamplesBrowser { // Build navigation this.buildNavigation(); - // Setup routing - this.setupRouting(); + // Setup router + this.setupRouter(); - // Load initial route - this.navigateToRoute(window.location.pathname); + // Preserve route on Vite reload + window.addEventListener('beforeunload', () => { + const currentPath = this.router.getCurrentLocation().url; + if (currentPath && currentPath !== '/') { + sessionStorage.setItem('vite-current-route', currentPath); + } + }); + + // Restore saved route or resolve current + const savedRoute = sessionStorage.getItem('vite-current-route'); + if (savedRoute) { + sessionStorage.removeItem('vite-current-route'); + this.router.navigate(savedRoute); + } else { + this.router.resolve(); + } } private buildNavigation() { @@ -70,7 +97,8 @@ class SamplesBrowser { sampleDiv.dataset.samplePath = sample.path; sampleDiv.addEventListener('click', () => { - this.navigateTo(`/${sample.path}`); + const normalizedPath = sample.path.replace(/\\/g, '/'); + this.router.navigate(`/samples/${normalizedPath}`); }); samplesDiv.appendChild(sampleDiv); @@ -126,29 +154,59 @@ class SamplesBrowser { .join(' '); } - private setupRouting() { - window.addEventListener('popstate', () => { - this.navigateToRoute(window.location.pathname); + private setupRouter() { + // Home route + this.router.on('/', () => { + this.setEmbeddedMode(false); + this.showWelcome(); + }); + + // Sample route with navigation panel (default) + this.router.on('/samples/:category/:subcategory/:sample', ({ data }) => { + this.setEmbeddedMode(false); + const samplePath = `${data.category}/${data.subcategory}/${data.sample}`; + this.loadSampleByPath(samplePath); }); - } - private navigateTo(path: string) { - window.history.pushState({}, '', path); - this.navigateToRoute(path); + // Sample route without navigation panel (embedded mode) + this.router.on('/:category/:subcategory/:sample', ({ data }) => { + this.setEmbeddedMode(true); + const samplePath = `${data.category}/${data.subcategory}/${data.sample}`; + this.loadSampleByPath(samplePath); + }); + + // Fallback for other path structures + this.router.notFound(() => { + this.setEmbeddedMode(false); + this.showWelcome(); + }); } - private async navigateToRoute(route: string) { - // Remove leading slash and normalize - const normalizedRoute = route.replace(/^\//, '').replace(/\/$/, ''); + private setEmbeddedMode(enabled: boolean) { + this.isEmbeddedMode = enabled; - if (!normalizedRoute) { - this.showWelcome(); - return; + const toolbar = document.getElementById('toolbar'); + + if (enabled) { + this.navSidebar.style.display = 'none'; + if (toolbar) { + toolbar.style.display = 'none'; + } + } else { + this.navSidebar.style.display = ''; + if (toolbar) { + toolbar.style.display = ''; + } } + } + + private async loadSampleByPath(path: string) { + // Find sample with normalized path + const sample = this.samples.find(s => { + const normalizedSamplePath = s.path.replace(/\\/g, '/'); + return normalizedSamplePath === path; + }); - // Find the sample - const sample = this.samples.find(s => s.path === normalizedRoute); - if (sample) { await this.loadSample(sample); } else { @@ -157,12 +215,13 @@ class SamplesBrowser { } private async loadSample(sample: SampleInfo) { - this.currentSample = sample.path; this.sampleTitle.textContent = this.formatSampleName(sample.name); // Update active state in nav + const normalizedPath = sample.path.replace(/\\/g, '/'); document.querySelectorAll('.nav-sample').forEach(el => { - if (el.dataset.samplePath === sample.path) { + const elPath = el.dataset.samplePath?.replace(/\\/g, '/'); + if (elPath === normalizedPath) { el.classList.add('active'); } else { el.classList.remove('active'); @@ -176,11 +235,14 @@ class SamplesBrowser { // Create container with the HTML content this.sampleContainer.innerHTML = sample.htmlContent || '
'; - // Dynamically import the sample module - const modulePath = `/src/samples/${sample.path}/index.ts`; + // Load the sample module + const modulePath = `/src/samples/${normalizedPath}/index.ts`; - // Import and initialize the sample - await import(/* @vite-ignore */ modulePath); + if (this.sampleModules[modulePath]) { + await this.sampleModules[modulePath](); + } else { + throw new Error(`Module not found: ${modulePath}`); + } } catch (error) { console.error('Error loading sample:', error); diff --git a/browser-vite/vite.config.js b/browser-vite/vite.config.js index 261a2cba5..9f0a1a67c 100644 --- a/browser-vite/vite.config.js +++ b/browser-vite/vite.config.js @@ -3,7 +3,7 @@ import path from 'path'; export default defineConfig({ root: '.', - base: '/', + base: './', publicDir: 'public', build: { outDir: 'dist', @@ -11,6 +11,9 @@ export default defineConfig({ input: { main: path.resolve(__dirname, 'index.html') } + }, + modulePreload: { + polyfill: false } }, server: { From b0c72227e8d70900a554951816e6653357389027 Mon Sep 17 00:00:00 2001 From: Radoslav Karaivanov Date: Wed, 26 Nov 2025 11:06:24 +0200 Subject: [PATCH 6/6] refactor: Copy samples script and SamplesBrowser component - Moved build pipeline to vite-rolldown for faster builds. - Updated copy-samples script to use fs/promises and improved error handling. - Minor cleanups in main.ts for better readability. --- browser-vite/package-lock.json | 1410 +++++++++++++------------- browser-vite/package.json | 6 +- browser-vite/postcss.config.js | 6 + browser-vite/scripts/copy-samples.js | 257 ++--- browser-vite/src/main.ts | 318 +++--- 5 files changed, 998 insertions(+), 999 deletions(-) create mode 100644 browser-vite/postcss.config.js diff --git a/browser-vite/package-lock.json b/browser-vite/package-lock.json index d26d0674e..87ae1b4b0 100644 --- a/browser-vite/package-lock.json +++ b/browser-vite/package-lock.json @@ -17,275 +17,216 @@ "igniteui-webcomponents-inputs": "^6.2.1", "igniteui-webcomponents-layouts": "^6.2.1", "igniteui-webcomponents-maps": "^6.2.1", - "lit-html": "^3.3.1", "navigo": "^8.11.1" }, "devDependencies": { + "autoprefixer": "^10.4.22", + "postcss": "^8.5.6", + "tailwindcss": "^4.1.17", "typescript": "^5.9.3", - "vite": "^7.2.2" + "vite": "npm:rolldown-vite@7.2.7" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", - "cpu": [ - "ppc64" - ], + "node_modules/@emnapi/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", - "cpu": [ - "arm" - ], + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", - "cpu": [ - "arm64" - ], + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@floating-ui/utils": "^0.2.10" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz", + "integrity": "sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==", + "license": "BSD-3-Clause" + }, + "node_modules/@lit-labs/virtualizer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@lit-labs/virtualizer/-/virtualizer-2.1.1.tgz", + "integrity": "sha512-JWxMwnlouLdwpw8spLTuax53WMnSP3xt0dCyxAS7GJr5Otda9MGgR/ghAdfwhSY75TmjbE1T2TqChwoGCw3ggw==", + "license": "BSD-3-Clause", + "dependencies": { + "lit": "^3.2.0", + "tslib": "^2.0.3" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "node_modules/@lit/context": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.6.tgz", + "integrity": "sha512-M26qDE6UkQbZA2mQ3RjJ3Gzd8TxP+/0obMgE5HfkfLhEEyYE3Bui4A5XHiGPjy0MUGAyxB3QgVuw2ciS0kHn6A==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^1.6.2 || ^2.1.0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "node_modules/@lit/reactive-element": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.1.tgz", + "integrity": "sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.4.0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", - "cpu": [ - "arm" - ], + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", + "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@tybys/wasm-util": "^0.10.1" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", - "cpu": [ - "arm64" - ], + "node_modules/@oxc-project/runtime": { + "version": "0.98.0", + "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.98.0.tgz", + "integrity": "sha512-F0ldlBv2orG2YqNL0w77deq9yCaO4zEHbanGnW/jaJxGBR8ImekvZb8x42zAHvdzr8J76psibijvHtXfSjbEIQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", - "cpu": [ - "ia32" - ], + "node_modules/@oxc-project/types": { + "version": "0.98.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.98.0.tgz", + "integrity": "sha512-Vzmd6FsqVuz5HQVcRC/hrx7Ujo3WEVeQP7C2UNP5uy1hUY4SQvMB+93jxkI1KRHz9a/6cni3glPOtvteN+zpsw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://github.com/sponsors/Boshen" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.51.tgz", + "integrity": "sha512-Ctn8FUXKWWQI9pWC61P1yumS9WjQtelNS9riHwV7oCkknPGaAry4o7eFx2KgoLMnI2BgFJYpW7Im8/zX3BuONg==", "cpu": [ - "loong64" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "android" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.51.tgz", + "integrity": "sha512-EL1aRW2Oq15ShUEkBPsDtLMO8GTqfb/ktM/dFaVzXKQiEE96Ss6nexMgfgQrg8dGnNpndFyffVDb5IdSibsu1g==", "cpu": [ - "mips64el" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.51.tgz", + "integrity": "sha512-uGtYKlFen9pMIPvkHPWZVDtmYhMQi5g5Ddsndg1gf3atScKYKYgs5aDP4DhHeTwGXQglhfBG7lEaOIZ4UAIWww==", "cpu": [ - "ppc64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.51.tgz", + "integrity": "sha512-JRoVTQtHYbZj1P07JLiuTuXjiBtIa7ag7/qgKA6CIIXnAcdl4LrOf7nfDuHPJcuRKaP5dzecMgY99itvWfmUFQ==", "cpu": [ - "riscv64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "freebsd" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.51.tgz", + "integrity": "sha512-BKATVnpPZ0TYBW9XfDwyd4kPGgvf964HiotIwUgpMrFOFYWqpZ+9ONNzMV4UFAYC7Hb5C2qgYQk/qj2OnAd4RQ==", "cpu": [ - "s390x" + "arm" ], "dev": true, "license": "MIT", @@ -294,15 +235,15 @@ "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.51.tgz", + "integrity": "sha512-xLd7da5jkfbVsBCm1buIRdWtuXY8+hU3+6ESXY/Tk5X5DPHaifrUblhYDgmA34dQt6WyNC2kfXGgrduPEvDI6Q==", "cpu": [ - "x64" + "arm64" ], "dev": true, "license": "MIT", @@ -311,13 +252,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.51.tgz", + "integrity": "sha512-EQFXTgHxxTzv3t5EmjUP/DfxzFYx9sMndfLsYaAY4DWF6KsK1fXGYsiupif6qPTViPC9eVmRm78q0pZU/kuIPg==", "cpu": [ "arm64" ], @@ -325,16 +266,16 @@ "license": "MIT", "optional": true, "os": [ - "netbsd" + "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.51.tgz", + "integrity": "sha512-p5P6Xpa68w3yFaAdSzIZJbj+AfuDnMDqNSeglBXM7UlJT14Q4zwK+rV+8Mhp9MiUb4XFISZtbI/seBprhkQbiQ==", "cpu": [ "x64" ], @@ -342,33 +283,16 @@ "license": "MIT", "optional": true, "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" + "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.51.tgz", + "integrity": "sha512-sNVVyLa8HB8wkFipdfz1s6i0YWinwpbMWk5hO5S+XAYH2UH67YzUT13gs6wZTKg2x/3gtgXzYnHyF5wMIqoDAw==", "cpu": [ "x64" ], @@ -376,16 +300,16 @@ "license": "MIT", "optional": true, "os": [ - "openbsd" + "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.51.tgz", + "integrity": "sha512-e/JMTz9Q8+T3g/deEi8DK44sFWZWGKr9AOCW5e8C8SCVWzAXqYXAG7FXBWBNzWEZK0Rcwo9TQHTQ9Q0gXgdCaA==", "cpu": [ "arm64" ], @@ -396,30 +320,30 @@ "openharmony" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.51.tgz", + "integrity": "sha512-We3LWqSu6J9s5Y0MK+N7fUiiu37aBGPG3Pc347EoaROuAwkCS2u9xJ5dpIyLW4B49CIbS3KaPmn4kTgPb3EyPw==", "cpu": [ - "x64" + "wasm32" ], "dev": true, "license": "MIT", "optional": true, - "os": [ - "sunos" - ], + "dependencies": { + "@napi-rs/wasm-runtime": "^1.0.7" + }, "engines": { - "node": ">=18" + "node": ">=14.0.0" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.51.tgz", + "integrity": "sha512-fj56buHRuMM+r/cb6ZYfNjNvO/0xeFybI6cTkTROJatdP4fvmQ1NS8D/Lm10FCSDEOkqIz8hK3TGpbAThbPHsA==", "cpu": [ "arm64" ], @@ -430,13 +354,13 @@ "win32" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "node_modules/@rolldown/binding-win32-ia32-msvc": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0-beta.51.tgz", + "integrity": "sha512-fkqEqaeEx8AySXiDm54b/RdINb3C0VovzJA3osMhZsbn6FoD73H0AOIiaVAtGr6x63hefruVKTX8irAm4Jkt2w==", "cpu": [ "ia32" ], @@ -447,13 +371,13 @@ "win32" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.51.tgz", + "integrity": "sha512-CWuLG/HMtrVcjKGa0C4GnuxONrku89g0+CsH8nT0SNhOtREXuzwgjIXNJImpE/A/DMf9JF+1Xkrq/YRr+F/rCg==", "cpu": [ "x64" ], @@ -464,429 +388,161 @@ "win32" ], "engines": { - "node": ">=18" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", - "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", - "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.3", - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", - "license": "MIT" - }, - "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz", - "integrity": "sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==", - "license": "BSD-3-Clause" - }, - "node_modules/@lit-labs/virtualizer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@lit-labs/virtualizer/-/virtualizer-2.1.1.tgz", - "integrity": "sha512-JWxMwnlouLdwpw8spLTuax53WMnSP3xt0dCyxAS7GJr5Otda9MGgR/ghAdfwhSY75TmjbE1T2TqChwoGCw3ggw==", - "license": "BSD-3-Clause", - "dependencies": { - "lit": "^3.2.0", - "tslib": "^2.0.3" - } - }, - "node_modules/@lit/context": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.6.tgz", - "integrity": "sha512-M26qDE6UkQbZA2mQ3RjJ3Gzd8TxP+/0obMgE5HfkfLhEEyYE3Bui4A5XHiGPjy0MUGAyxB3QgVuw2ciS0kHn6A==", - "license": "BSD-3-Clause", - "dependencies": { - "@lit/reactive-element": "^1.6.2 || ^2.1.0" - } - }, - "node_modules/@lit/reactive-element": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.1.tgz", - "integrity": "sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==", - "license": "BSD-3-Clause", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.4.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", - "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", - "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", - "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", - "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", - "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", - "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", - "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", - "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", - "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", - "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", - "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", - "cpu": [ - "loong64" - ], + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.51.tgz", + "integrity": "sha512-51/8cNXMrqWqX3o8DZidhwz1uYq0BhHDDSfVygAND1Skx5s1TDw3APSSxCMcFFedwgqGcx34gRouwY+m404BBQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", - "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", - "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "MIT" }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", - "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", - "cpu": [ - "riscv64" - ], + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", - "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "tslib": "^2.4.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", - "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", - "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", - "cpu": [ - "x64" - ], + "node_modules/autoprefixer": { + "version": "10.4.22", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", + "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", - "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", - "cpu": [ - "arm64" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], - "dev": true, "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] + "dependencies": { + "browserslist": "^4.27.0", + "caniuse-lite": "^1.0.30001754", + "fraction.js": "^5.3.4", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", - "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", - "cpu": [ - "arm64" - ], + "node_modules/baseline-browser-mapping": { + "version": "2.8.31", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz", + "integrity": "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", - "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", - "cpu": [ - "ia32" - ], + "node_modules/browserslist": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", - "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", - "cpu": [ - "x64" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], - "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", - "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", - "cpu": [ - "x64" - ], + "node_modules/caniuse-lite": { + "version": "1.0.30001757", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", + "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT" + "node_modules/electron-to-chromium": { + "version": "1.5.260", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.260.tgz", + "integrity": "sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==", + "dev": true, + "license": "ISC" }, - "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" + "node": ">=6" } }, "node_modules/fdir": { @@ -907,6 +563,20 @@ } } }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -958,21 +628,21 @@ } }, "node_modules/igniteui-webcomponents-charts": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-charts/-/igniteui-webcomponents-charts-6.2.1.tgz", - "integrity": "sha512-sS917RJyJeYCbTqb2KZn72SThZ88abqxA8tCsJITtPCdqrcwmBhPFJpftWuBm7lLVPDBB4DYEFohwRGE/qUo6Q==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-charts/-/igniteui-webcomponents-charts-6.3.0.tgz", + "integrity": "sha512-o6XZ6TodIL8jEnLt52KLm2i8dLsJOIYH59Kp9T240zLR6mGMETHnJ7L9pCqgvA8E0ZnV653R0Tucc7UGLiENAw==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "dependencies": { "tslib": "^2.3.1" }, "peerDependencies": { - "igniteui-webcomponents-core": "6.2.1" + "igniteui-webcomponents-core": "6.3.0" } }, "node_modules/igniteui-webcomponents-core": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-core/-/igniteui-webcomponents-core-6.2.1.tgz", - "integrity": "sha512-Y7dzkXjND62//9XrJQ9RdEl7S8OUoDyxWtuPpH+7jqs46su0/IbRRY8MgPeETDLS6v2LFXZIt57mJJXz73M9zQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-core/-/igniteui-webcomponents-core-6.3.0.tgz", + "integrity": "sha512-o6fRDUch3sKZD5TDlGZU6jxUS9kpqXv3VL1quijaYvhhpVYJvr53lWs6CyxzbWxpri4f1Anp92iH7zGPafuQ1Q==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "dependencies": { "tslib": "^2.3.1" @@ -982,15 +652,15 @@ } }, "node_modules/igniteui-webcomponents-gauges": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-gauges/-/igniteui-webcomponents-gauges-6.2.1.tgz", - "integrity": "sha512-k2v1xSSvJcf/KXrfyhL7vOrUVrvxR6W3+jEcS7LRFOBHIG2Fvqrh84y4EBA1m5itdmxjdX1v+Ssu40jsrfPZ0w==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-gauges/-/igniteui-webcomponents-gauges-6.3.0.tgz", + "integrity": "sha512-SJm3CLmTCYLmijUFzMOCdUl4e/B6oFSq71l0BgOR2VgUg32Z90T/9+Gg8OgZ0XEsYgIgX9MprXQI4EXNQVWwEA==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "dependencies": { "tslib": "^2.3.1" }, "peerDependencies": { - "igniteui-webcomponents-core": "6.2.1" + "igniteui-webcomponents-core": "6.3.0" } }, "node_modules/igniteui-webcomponents-grids": { @@ -1004,41 +674,302 @@ } }, "node_modules/igniteui-webcomponents-inputs": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-inputs/-/igniteui-webcomponents-inputs-6.2.1.tgz", - "integrity": "sha512-aRc3ior3zuuunvQfmDo5NLOz4yODBxq+fcTNFc767fXM0eW65nTOFWPsVnlicXtrTwSULcWul6208PrqeXFISg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-inputs/-/igniteui-webcomponents-inputs-6.3.0.tgz", + "integrity": "sha512-d+uPxPG1zo3rN+8AU5CWz3k83FNnS+m5llebYe93yCrKQbnSTq/Y/ZsH2jdjk59+2M7wfFrWErowbQTLqYye9A==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "dependencies": { "tslib": "^2.3.1" }, "peerDependencies": { - "igniteui-webcomponents-core": "6.2.1" + "igniteui-webcomponents-core": "6.3.0" } }, "node_modules/igniteui-webcomponents-layouts": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-layouts/-/igniteui-webcomponents-layouts-6.2.1.tgz", - "integrity": "sha512-JlJy4rCPJ+HvXkXurAUEIzRSvPO/PNLZyLQj4wmpFVcRmqUkuAQOpLriz/VbR37hEDBAYBS9ZKdBlrXBUovyKA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-layouts/-/igniteui-webcomponents-layouts-6.3.0.tgz", + "integrity": "sha512-MoPxLFIhlnDaGs9XATbXbYMngHjN9z9WPIk4s6wfUDdnGjuvtwo9h5mPojWL3jfH8HENb2U+JSS8avBMhGTsyw==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "dependencies": { "tslib": "^2.3.1" }, "peerDependencies": { - "igniteui-webcomponents-core": "6.2.1", - "igniteui-webcomponents-inputs": "6.2.1" + "igniteui-webcomponents-core": "6.3.0", + "igniteui-webcomponents-inputs": "6.3.0" } }, "node_modules/igniteui-webcomponents-maps": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/igniteui-webcomponents-maps/-/igniteui-webcomponents-maps-6.2.1.tgz", - "integrity": "sha512-yB+rZZlmPP6MkIvON67/XD9s4N7Ee113nK2zqps02PnxsUAsASad9YIaibaTLPORp0MwyZVxCJBdxw3Jmlp2/A==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/igniteui-webcomponents-maps/-/igniteui-webcomponents-maps-6.3.0.tgz", + "integrity": "sha512-8XCulW+nstREyPKHxpAb2Mt45QMWag1V1z2oM+o1dGa8E8zDMAoG2k3MERhcpnUwDw7kA7C4CI370LJMXDD2tA==", "license": "Infragistics(R) Ultimate license (http://www.infragistics.com/legal/ultimate/license/)", "dependencies": { "tslib": "^2.3.1" }, "peerDependencies": { - "igniteui-webcomponents-charts": "6.2.1", - "igniteui-webcomponents-core": "6.2.1" + "igniteui-webcomponents-charts": "6.3.0", + "igniteui-webcomponents-core": "6.3.0" + } + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/lit": { @@ -1097,6 +1028,23 @@ "integrity": "sha512-e3sc1UzakF+bWquC8/dbPCgo7LgPEW1ekgwb4pmEcl8tOc/I7lML8r7HBql+b0VRk7tJWTZqtkeObwJAVR1pxg==", "license": "MIT" }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -1146,46 +1094,44 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/rollup": { - "version": "4.53.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", - "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/rolldown": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.51.tgz", + "integrity": "sha512-ZRLgPlS91l4JztLYEZnmMcd3Umcla1hkXJgiEiR4HloRJBBoeaX8qogTu5Jfu36rRMVLndzqYv0h+M5gJAkUfg==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@oxc-project/types": "=0.98.0", + "@rolldown/pluginutils": "1.0.0-beta.51" }, "bin": { - "rollup": "dist/bin/rollup" + "rolldown": "bin/cli.mjs" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.53.2", - "@rollup/rollup-android-arm64": "4.53.2", - "@rollup/rollup-darwin-arm64": "4.53.2", - "@rollup/rollup-darwin-x64": "4.53.2", - "@rollup/rollup-freebsd-arm64": "4.53.2", - "@rollup/rollup-freebsd-x64": "4.53.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", - "@rollup/rollup-linux-arm-musleabihf": "4.53.2", - "@rollup/rollup-linux-arm64-gnu": "4.53.2", - "@rollup/rollup-linux-arm64-musl": "4.53.2", - "@rollup/rollup-linux-loong64-gnu": "4.53.2", - "@rollup/rollup-linux-ppc64-gnu": "4.53.2", - "@rollup/rollup-linux-riscv64-gnu": "4.53.2", - "@rollup/rollup-linux-riscv64-musl": "4.53.2", - "@rollup/rollup-linux-s390x-gnu": "4.53.2", - "@rollup/rollup-linux-x64-gnu": "4.53.2", - "@rollup/rollup-linux-x64-musl": "4.53.2", - "@rollup/rollup-openharmony-arm64": "4.53.2", - "@rollup/rollup-win32-arm64-msvc": "4.53.2", - "@rollup/rollup-win32-ia32-msvc": "4.53.2", - "@rollup/rollup-win32-x64-gnu": "4.53.2", - "@rollup/rollup-win32-x64-msvc": "4.53.2", - "fsevents": "~2.3.2" + "@rolldown/binding-android-arm64": "1.0.0-beta.51", + "@rolldown/binding-darwin-arm64": "1.0.0-beta.51", + "@rolldown/binding-darwin-x64": "1.0.0-beta.51", + "@rolldown/binding-freebsd-x64": "1.0.0-beta.51", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.51", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.51", + "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.51", + "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.51", + "@rolldown/binding-linux-x64-musl": "1.0.0-beta.51", + "@rolldown/binding-openharmony-arm64": "1.0.0-beta.51", + "@rolldown/binding-wasm32-wasi": "1.0.0-beta.51", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.51", + "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.51", + "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.51" } }, "node_modules/source-map-js": { @@ -1198,6 +1144,13 @@ "node": ">=0.10.0" } }, + "node_modules/tailwindcss": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz", + "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==", + "dev": true, + "license": "MIT" + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -1235,18 +1188,51 @@ "node": ">=14.17" } }, + "node_modules/update-browserslist-db": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/vite": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", - "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", + "name": "rolldown-vite", + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/rolldown-vite/-/rolldown-vite-7.2.7.tgz", + "integrity": "sha512-N6a9KgNZ0xgCJ6/Ej2FQ7W8D3fOzDwFw7CLWZ2ubZknVrs9NdNkx25AFEuNbSwQO76VEHp4N7YatsZwp/ST1Gg==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.25.0", + "@oxc-project/runtime": "0.98.0", "fdir": "^6.5.0", + "lightningcss": "^1.30.2", "picomatch": "^4.0.3", "postcss": "^8.5.6", - "rollup": "^4.43.0", + "rolldown": "1.0.0-beta.51", "tinyglobby": "^0.2.15" }, "bin": { @@ -1263,9 +1249,9 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", + "esbuild": "^0.25.0", "jiti": ">=1.21.0", "less": "^4.0.0", - "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", @@ -1278,13 +1264,13 @@ "@types/node": { "optional": true }, - "jiti": { + "esbuild": { "optional": true }, - "less": { + "jiti": { "optional": true }, - "lightningcss": { + "less": { "optional": true }, "sass": { diff --git a/browser-vite/package.json b/browser-vite/package.json index 42a5138f9..6b2638518 100644 --- a/browser-vite/package.json +++ b/browser-vite/package.json @@ -13,8 +13,11 @@ "author": "Infragistics", "license": "ISC", "devDependencies": { + "autoprefixer": "^10.4.22", + "postcss": "^8.5.6", + "tailwindcss": "^4.1.17", "typescript": "^5.9.3", - "vite": "^7.2.2" + "vite": "npm:rolldown-vite@7.2.7" }, "dependencies": { "igniteui-webcomponents": "^6.3.6", @@ -25,7 +28,6 @@ "igniteui-webcomponents-inputs": "^6.2.1", "igniteui-webcomponents-layouts": "^6.2.1", "igniteui-webcomponents-maps": "^6.2.1", - "lit-html": "^3.3.1", "navigo": "^8.11.1" } } diff --git a/browser-vite/postcss.config.js b/browser-vite/postcss.config.js new file mode 100644 index 000000000..c67bb7769 --- /dev/null +++ b/browser-vite/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + autoprefixer: {}, + "@tailwindcss/postcss": {}, + }, +}; diff --git a/browser-vite/scripts/copy-samples.js b/browser-vite/scripts/copy-samples.js index 698c38f66..17913185e 100644 --- a/browser-vite/scripts/copy-samples.js +++ b/browser-vite/scripts/copy-samples.js @@ -1,147 +1,164 @@ -import fs from 'fs'; -import path from 'path'; -import { fileURLToPath } from 'url'; +import fs from "fs/promises"; +import { existsSync } from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const projectRoot = path.resolve(__dirname, '../..'); -const samplesDir = path.join(projectRoot, 'samples'); -const targetDir = path.join(__dirname, '..', 'src', 'samples'); +const PATHS = { + projectRoot: path.resolve(__dirname, "../.."), + get samples() { + return path.join(this.projectRoot, "samples"); + }, + get target() { + return path.join(__dirname, "..", "src", "samples"); + }, + get metadata() { + return path.join(__dirname, "..", "src", "samples-metadata.json"); + }, +}; + +async function copyDirectory(src, dest) { + await fs.mkdir(dest, { recursive: true }); + const entries = await fs.readdir(src, { withFileTypes: true }); + + await Promise.all( + entries.map(async (entry) => { + const srcPath = path.join(src, entry.name); + const destPath = path.join(dest, entry.name); + + if (entry.isDirectory()) { + await copyDirectory(srcPath, destPath); + } else { + await fs.copyFile(srcPath, destPath); + } + }) + ); +} -// Function to recursively copy directory -function copyDirectory(src, dest) { - if (!fs.existsSync(dest)) { - fs.mkdirSync(dest, { recursive: true }); +async function cleanDirectory(dir) { + if (existsSync(dir)) { + await fs.rm(dir, { recursive: true, force: true }); } + await fs.mkdir(dir, { recursive: true }); +} - const entries = fs.readdirSync(src, { withFileTypes: true }); - - for (const entry of entries) { - const srcPath = path.join(src, entry.name); - const destPath = path.join(dest, entry.name); +async function readJsonFile(filePath) { + const content = await fs.readFile(filePath, "utf-8"); + return JSON.parse(content); +} - if (entry.isDirectory()) { - copyDirectory(srcPath, destPath); - } else { - fs.copyFileSync(srcPath, destPath); - } - } +async function writeJsonFile(filePath, data) { + await fs.writeFile(filePath, JSON.stringify(data, null, 2)); } -// Extract HTML content from body div#root -function extractHtmlContent(htmlFilePath) { +async function extractHtmlContent(htmlFilePath) { try { - const htmlContent = fs.readFileSync(htmlFilePath, 'utf-8'); - - // Extract content between
and
before + const htmlContent = await fs.readFile(htmlFilePath, "utf-8"); + const rootStartMatch = htmlContent.match(/
/i); - - if (!rootStartMatch) { - return ''; - } - + if (!rootStartMatch) return ""; + const startIndex = rootStartMatch.index + rootStartMatch[0].length; - const bodyEndIndex = htmlContent.indexOf('', startIndex); - - if (bodyEndIndex === -1) { - return ''; - } - - // Find the last
before + const bodyEndIndex = htmlContent.indexOf("", startIndex); + if (bodyEndIndex === -1) return ""; + const beforeBody = htmlContent.substring(startIndex, bodyEndIndex); - const lastDivIndex = beforeBody.lastIndexOf(''); - - if (lastDivIndex === -1) { - return ''; - } - + const lastDivIndex = beforeBody.lastIndexOf(""); + if (lastDivIndex === -1) return ""; + return beforeBody.substring(0, lastDivIndex).trim(); - } catch (e) { + } catch { console.warn(`Could not extract HTML content from ${htmlFilePath}`); - return ''; + return ""; } } -// Function to find all samples -function findSamples(dir, basePath = '') { - const samples = []; - const entries = fs.readdirSync(dir, { withFileTypes: true }); - - for (const entry of entries) { - if (!entry.isDirectory()) continue; - - const fullPath = path.join(dir, entry.name); - const relativePath = path.join(basePath, entry.name); - - // Check if this directory contains a package.json (indicating it's a sample) - const packageJsonPath = path.join(fullPath, 'package.json'); - if (fs.existsSync(packageJsonPath)) { - samples.push({ - name: entry.name, - path: fullPath, - relativePath: relativePath - }); - } else { - // Recurse into subdirectories - samples.push(...findSamples(fullPath, relativePath)); - } +async function findSamples(dir, basePath = "") { + const entries = await fs.readdir(dir, { withFileTypes: true }); + const directories = entries.filter((entry) => entry.isDirectory()); + + const nestedSamples = await Promise.all( + directories.map(async (entry) => { + const fullPath = path.join(dir, entry.name); + const relativePath = path.join(basePath, entry.name); + const packageJsonPath = path.join(fullPath, "package.json"); + + // If package.json exists, this is a sample directory + if (existsSync(packageJsonPath)) { + return [ + { + name: entry.name, + path: fullPath, + relativePath, + }, + ]; + } + + // Otherwise, recurse into subdirectory + return findSamples(fullPath, relativePath); + }) + ); + + return nestedSamples.flat(); +} + +async function processSample(sample) { + const srcPath = path.join(sample.path, "src"); + + if (!existsSync(srcPath)) { + return null; } - return samples; -} + const targetPath = path.join(PATHS.target, sample.relativePath); -// Clean target directory -console.log('Cleaning samples directory...'); -if (fs.existsSync(targetDir)) { - fs.rmSync(targetDir, { recursive: true, force: true }); -} -fs.mkdirSync(targetDir, { recursive: true }); - -// Find all samples -console.log('Finding samples...'); -const samples = findSamples(samplesDir); -console.log(`Found ${samples.length} samples`); - -// Copy samples -console.log('Copying samples...'); -let copiedCount = 0; -const sampleMetadata = []; - -for (const sample of samples) { - const targetPath = path.join(targetDir, sample.relativePath); - const srcPath = path.join(sample.path, 'src'); - - // Copy only the src directory content - if (fs.existsSync(srcPath)) { - copyDirectory(srcPath, targetPath); - copiedCount++; - - // Read package.json for metadata - const packageJsonPath = path.join(sample.path, 'package.json'); - try { - const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')); - - // Extract HTML content from index.html - const htmlFilePath = path.join(sample.path, 'index.html'); - const htmlContent = extractHtmlContent(htmlFilePath); - - sampleMetadata.push({ - name: sample.name, - path: sample.relativePath, - description: packageJson.description || sample.name, - htmlContent: htmlContent - }); - } catch (e) { - console.warn(`Warning: Could not read package.json for ${sample.name}`); - } + // Copy sample source files + await copyDirectory(srcPath, targetPath); + + // Build metadata + try { + const packageJsonPath = path.join(sample.path, "package.json"); + const htmlFilePath = path.join(sample.path, "index.html"); + + const [packageJson, htmlContent] = await Promise.all([ + readJsonFile(packageJsonPath), + extractHtmlContent(htmlFilePath), + ]); + + return { + name: sample.name, + path: sample.relativePath, + description: packageJson.description || sample.name, + htmlContent, + }; + } catch { + console.warn(`Warning: Could not read package.json for ${sample.name}`); + return null; } } -// Generate samples metadata file -const metadataPath = path.join(__dirname, '..', 'src', 'samples-metadata.json'); -fs.writeFileSync(metadataPath, JSON.stringify(sampleMetadata, null, 2)); +async function main() { + console.log("Cleaning samples directory..."); + await cleanDirectory(PATHS.target); -console.log(`Copied ${copiedCount} samples to ${targetDir}`); -console.log('Sample metadata written to:', metadataPath); + console.log("Finding samples..."); + const samples = await findSamples(PATHS.samples); + console.log(`Found ${samples.length} samples`); + + console.log("Copying samples..."); + const results = await Promise.all(samples.map(processSample)); + + // Filter out null results (samples without src directories or failed reads) + const sampleMetadata = results.filter(Boolean); + + await writeJsonFile(PATHS.metadata, sampleMetadata); + + console.log(`Copied ${sampleMetadata.length} samples to ${PATHS.target}`); + console.log("Sample metadata written to:", PATHS.metadata); +} +main().catch((error) => { + console.error("Error:", error); + process.exit(1); +}); diff --git a/browser-vite/src/main.ts b/browser-vite/src/main.ts index 80ab3142a..b653825c2 100644 --- a/browser-vite/src/main.ts +++ b/browser-vite/src/main.ts @@ -1,7 +1,5 @@ -// @ts-nocheck -import Navigo from 'navigo'; -import { html, render } from 'lit'; -import samplesMetadata from './samples-metadata.json?url'; +import Navigo from "navigo"; +import samplesMetadata from "./samples-metadata.json?url"; interface SampleInfo { name: string; @@ -10,25 +8,81 @@ interface SampleInfo { htmlContent: string; } +const welcomeHtml = ` +
+

Welcome to Ignite UI Web Components Samples

+

+ Select a sample from the sidebar to view it. This browser is powered by + Vite for fast development and hot module replacement. +

+
+`; + +const loadingHtml = `
Loading sample...
`; + +const errorHtml = (sampleName: string, error: unknown) => ` +
+

Error Loading Sample

+

Could not load sample: ${sampleName}

+
${String(
+      error
+    )}
+
+`; + +const defaultSampleHtml = `
`; + +function formatName(name: string): string { + return name + .split("-") + .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) + .join(" "); +} + +function normalizePath(path: string): string { + return path.replace(/\\/g, "/"); +} + +function groupSamples( + samples: SampleInfo[] +): Record> { + const grouped: Record> = {}; + + for (const sample of samples) { + const parts = sample.path.split(/[/\\]/); + + if (parts.length >= 2) { + const [group, category] = parts; + grouped[group] ??= {}; + grouped[group][category] ??= []; + grouped[group][category].push(sample); + } + } + + return grouped; +} + class SamplesBrowser { private navSidebar: HTMLElement; private navContent: HTMLElement; private sampleContainer: HTMLElement; private sampleTitle: HTMLElement; private toggleNavBtn: HTMLElement; + private toolbar: HTMLElement | null; private samples: SampleInfo[] = []; private router: Navigo; - private sampleModules = import.meta.glob('/src/samples/**/index.ts'); + private sampleModules = import.meta.glob("/src/samples/**/index.ts"); private isEmbeddedMode = false; constructor() { - this.navSidebar = document.getElementById('nav-sidebar')!; - this.navContent = document.getElementById('nav-content')!; - this.sampleContainer = document.getElementById('sample-container')!; - this.sampleTitle = document.getElementById('sample-title')!; - this.toggleNavBtn = document.getElementById('toggle-nav')!; - - this.router = new Navigo('/', { hash: false }); + this.navSidebar = document.getElementById("nav-sidebar")!; + this.navContent = document.getElementById("nav-content")!; + this.sampleContainer = document.getElementById("sample-container")!; + this.sampleTitle = document.getElementById("sample-title")!; + this.toggleNavBtn = document.getElementById("toggle-nav")!; + this.toolbar = document.getElementById("toolbar"); + + this.router = new Navigo("/", { hash: false }); this.loadMetadata(); } @@ -38,34 +92,34 @@ class SamplesBrowser { this.samples = await response.json(); this.init(); } catch (error) { - console.error('Failed to load samples metadata:', error); + console.error("Failed to load samples metadata:", error); } } private init() { - // Setup navigation toggle - this.toggleNavBtn.addEventListener('click', () => { - this.navSidebar.classList.toggle('hidden'); + this.toggleNavBtn.addEventListener("click", () => { + this.navSidebar.classList.toggle("hidden"); }); - // Build navigation this.buildNavigation(); - - // Setup router this.setupRouter(); + this.setupRoutePreservation(); + this.restoreOrResolveRoute(); + } - // Preserve route on Vite reload - window.addEventListener('beforeunload', () => { + private setupRoutePreservation() { + window.addEventListener("beforeunload", () => { const currentPath = this.router.getCurrentLocation().url; - if (currentPath && currentPath !== '/') { - sessionStorage.setItem('vite-current-route', currentPath); + if (currentPath && currentPath !== "/") { + sessionStorage.setItem("vite-current-route", currentPath); } }); + } - // Restore saved route or resolve current - const savedRoute = sessionStorage.getItem('vite-current-route'); + private restoreOrResolveRoute() { + const savedRoute = sessionStorage.getItem("vite-current-route"); if (savedRoute) { - sessionStorage.removeItem('vite-current-route'); + sessionStorage.removeItem("vite-current-route"); this.router.navigate(savedRoute); } else { this.router.resolve(); @@ -73,109 +127,77 @@ class SamplesBrowser { } private buildNavigation() { - const groupedSamples = this.groupSamples(); - + const groupedSamples = groupSamples(this.samples); + for (const [group, categories] of Object.entries(groupedSamples)) { - const groupDiv = document.createElement('div'); - groupDiv.className = 'nav-group'; + const groupDiv = document.createElement("div"); + groupDiv.className = "nav-group"; groupDiv.textContent = group.toUpperCase(); this.navContent.appendChild(groupDiv); for (const [category, samples] of Object.entries(categories)) { - const categoryDiv = document.createElement('div'); - categoryDiv.className = 'nav-category'; - categoryDiv.textContent = this.formatCategoryName(category); - categoryDiv.dataset.category = `${group}/${category}`; - - const samplesDiv = document.createElement('div'); - samplesDiv.className = 'nav-samples'; - - for (const sample of samples) { - const sampleDiv = document.createElement('div'); - sampleDiv.className = 'nav-sample'; - sampleDiv.textContent = this.formatSampleName(sample.name); - sampleDiv.dataset.samplePath = sample.path; - - sampleDiv.addEventListener('click', () => { - const normalizedPath = sample.path.replace(/\\/g, '/'); - this.router.navigate(`/samples/${normalizedPath}`); - }); - - samplesDiv.appendChild(sampleDiv); - } - - categoryDiv.addEventListener('click', () => { - categoryDiv.classList.toggle('expanded'); - samplesDiv.classList.toggle('visible'); - }); - - this.navContent.appendChild(categoryDiv); - this.navContent.appendChild(samplesDiv); + this.createCategoryNav(group, category, samples); } } } - private groupSamples(): Record> { - const grouped: Record> = {}; - - for (const sample of this.samples) { - const parts = sample.path.split(/[/\\]/); - - if (parts.length >= 2) { - const group = parts[0]; - const category = parts[1]; - - if (!grouped[group]) { - grouped[group] = {}; - } - - if (!grouped[group][category]) { - grouped[group][category] = []; - } - - grouped[group][category].push(sample); - } + private createCategoryNav( + group: string, + category: string, + samples: SampleInfo[] + ) { + const categoryDiv = document.createElement("div"); + categoryDiv.className = "nav-category"; + categoryDiv.textContent = formatName(category); + categoryDiv.dataset.category = `${group}/${category}`; + + const samplesDiv = document.createElement("div"); + samplesDiv.className = "nav-samples"; + + for (const sample of samples) { + const sampleDiv = document.createElement("div"); + sampleDiv.className = "nav-sample"; + sampleDiv.textContent = formatName(sample.name); + sampleDiv.dataset.samplePath = sample.path; + + sampleDiv.addEventListener("click", () => { + this.router.navigate(`/samples/${normalizePath(sample.path)}`); + }); + + samplesDiv.appendChild(sampleDiv); } - - return grouped; - } - private formatCategoryName(name: string): string { - return name - .split('-') - .map(word => word.charAt(0).toUpperCase() + word.slice(1)) - .join(' '); - } + categoryDiv.addEventListener("click", () => { + categoryDiv.classList.toggle("expanded"); + samplesDiv.classList.toggle("visible"); + }); - private formatSampleName(name: string): string { - return name - .split('-') - .map(word => word.charAt(0).toUpperCase() + word.slice(1)) - .join(' '); + this.navContent.appendChild(categoryDiv); + this.navContent.appendChild(samplesDiv); } private setupRouter() { - // Home route - this.router.on('/', () => { + this.router.on("/", () => { this.setEmbeddedMode(false); this.showWelcome(); }); // Sample route with navigation panel (default) - this.router.on('/samples/:category/:subcategory/:sample', ({ data }) => { + this.router.on("/samples/:category/:subcategory/:sample", ({ data }) => { this.setEmbeddedMode(false); - const samplePath = `${data.category}/${data.subcategory}/${data.sample}`; - this.loadSampleByPath(samplePath); + this.loadSampleByPath( + `${data.category}/${data.subcategory}/${data.sample}` + ); }); // Sample route without navigation panel (embedded mode) - this.router.on('/:category/:subcategory/:sample', ({ data }) => { + this.router.on("/:category/:subcategory/:sample", ({ data }) => { this.setEmbeddedMode(true); - const samplePath = `${data.category}/${data.subcategory}/${data.sample}`; - this.loadSampleByPath(samplePath); + this.loadSampleByPath( + `${data.category}/${data.subcategory}/${data.sample}` + ); }); - // Fallback for other path structures this.router.notFound(() => { this.setEmbeddedMode(false); this.showWelcome(); @@ -184,28 +206,14 @@ class SamplesBrowser { private setEmbeddedMode(enabled: boolean) { this.isEmbeddedMode = enabled; - - const toolbar = document.getElementById('toolbar'); - - if (enabled) { - this.navSidebar.style.display = 'none'; - if (toolbar) { - toolbar.style.display = 'none'; - } - } else { - this.navSidebar.style.display = ''; - if (toolbar) { - toolbar.style.display = ''; - } + this.navSidebar.style.display = enabled ? "none" : ""; + if (this.toolbar) { + this.toolbar.style.display = enabled ? "none" : ""; } } private async loadSampleByPath(path: string) { - // Find sample with normalized path - const sample = this.samples.find(s => { - const normalizedSamplePath = s.path.replace(/\\/g, '/'); - return normalizedSamplePath === path; - }); + const sample = this.samples.find((s) => normalizePath(s.path) === path); if (sample) { await this.loadSample(sample); @@ -215,64 +223,44 @@ class SamplesBrowser { } private async loadSample(sample: SampleInfo) { - this.sampleTitle.textContent = this.formatSampleName(sample.name); - - // Update active state in nav - const normalizedPath = sample.path.replace(/\\/g, '/'); - document.querySelectorAll('.nav-sample').forEach(el => { - const elPath = el.dataset.samplePath?.replace(/\\/g, '/'); - if (elPath === normalizedPath) { - el.classList.add('active'); - } else { - el.classList.remove('active'); - } - }); - - // Show loading state - this.sampleContainer.innerHTML = '
Loading sample...
'; - + const normalizedPath = normalizePath(sample.path); + + this.sampleTitle.textContent = formatName(sample.name); + this.updateActiveNavItem(normalizedPath); + this.sampleContainer.innerHTML = loadingHtml; + try { - // Create container with the HTML content - this.sampleContainer.innerHTML = sample.htmlContent || '
'; - - // Load the sample module + // Render HTML content from the sample + this.sampleContainer.innerHTML = sample.htmlContent || defaultSampleHtml; + + // Load and execute the sample module const modulePath = `/src/samples/${normalizedPath}/index.ts`; - + if (this.sampleModules[modulePath]) { await this.sampleModules[modulePath](); } else { throw new Error(`Module not found: ${modulePath}`); } - } catch (error) { - console.error('Error loading sample:', error); - this.sampleContainer.innerHTML = ` -
-

Error Loading Sample

-

Could not load sample: ${sample.name}

-
${error}
-
- `; + console.error("Error loading sample:", error); + this.sampleContainer.innerHTML = errorHtml(sample.name, error); } } - private showWelcome() { - this.currentSample = null; - this.sampleTitle.textContent = 'Select a sample from the sidebar'; - this.sampleContainer.innerHTML = ` -
-

Welcome to Ignite UI Web Components Samples

-

- Select a sample from the sidebar to view it. This browser is powered by Vite - for fast development and hot module replacement. -

-
- `; - - document.querySelectorAll('.nav-sample').forEach(el => { - el.classList.remove('active'); + private updateActiveNavItem(normalizedPath: string) { + document.querySelectorAll(".nav-sample").forEach((el) => { + const elPath = normalizePath( + (el as HTMLElement).dataset.samplePath ?? "" + ); + el.classList.toggle("active", elPath === normalizedPath); }); } + + private showWelcome() { + this.sampleTitle.textContent = "Select a sample from the sidebar"; + this.sampleContainer.innerHTML = welcomeHtml; + this.updateActiveNavItem(""); + } } // Initialize the browser when DOM is ready