{"_id":"pennsieve-dashboard","_rev":"31-eae5981d302eeb2f6abf5bc8105cf3ac","name":"pennsieve-dashboard","dist-tags":{"latest":"1.2.0"},"versions":{"0.0.2":{"name":"pennsieve-dashboard","version":"0.0.2","_id":"pennsieve-dashboard@0.0.2","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"2a33e8e16d780203ba887b2f53a5d57fbe423351","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.0.2.tgz","fileCount":6,"integrity":"sha512-WW3aYzogz7ddjKo7aKri0+66C/qkHFbVME7cXXiJEmKSq0D+TvL71Fg/1a4nLOPfAeiTxkuHTLTIo4lUeCIoTg==","signatures":[{"sig":"MEUCIQCIUf420ZdStB25wxY1spmSrZI0mXsL7HUTpQrrhN0PkwIgfmEhTPH1DEtikwKHv3Ng5A6laqFfgEmIki60JQqLlbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":567092},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"47d58bacb64856f125d6266407f7b4d578994959","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"11.5.1","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.6.0","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^16.2.0","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.2","vue-tsc":"^3.0.5","typescript":"~5.8.3","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^6.0.1"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.0.2_1755900785000_0.6097912472369407","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"pennsieve-dashboard","version":"0.0.3","_id":"pennsieve-dashboard@0.0.3","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"9553fe75af877a12b6835aea3ebca2e5fa574a90","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.0.3.tgz","fileCount":6,"integrity":"sha512-ifcH1d4rJ+iRDgiMHgnV0eOPvNkJVJj4joPgkVcAW4lMUs6iy4l2eytJtA5hE4cAaKvSUIAGSDvENOuC63toOQ==","signatures":[{"sig":"MEUCIQDU4195+K7HZpME4XLPKWQEQ0U9hiALsX+WhtlUimOwSQIgUD06H4rvZTom4O5DK8JG7XjTf+hDjaDsKmo2WiNKa9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":567446},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"bb780efb35db67e0b971acccc8c01c7432f1f55d","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"11.5.1","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.6.0","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^16.2.0","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.2","vue-tsc":"^3.0.5","typescript":"~5.8.3","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^6.0.1"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.0.3_1756134378364_0.9656269641799193","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"pennsieve-dashboard","version":"0.0.4","_id":"pennsieve-dashboard@0.0.4","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"c8e5f815e94a07f9b41964a47069364dcfa17054","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.0.4.tgz","fileCount":6,"integrity":"sha512-d0wIMk2+tHNMtBdRUlAateOA97LJowRfJo4Sm8tilAEZeGAjXPk2G1/sZl1MwmAVNBZJLs5dbn2vBW0cvwzVoA==","signatures":[{"sig":"MEYCIQDW5NIcb0Pp0xrfLnolsUY0u8Xsauc6fLinzHo3tfwm2gIhANyavpBoWvsVhXqe6gUUCFgmCSBmiaCGlGQhN2rnQ3WV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415250},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"bb780efb35db67e0b971acccc8c01c7432f1f55d","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"11.5.1","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.6.0","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^16.2.0","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.2","vue-tsc":"^3.0.5","typescript":"~5.8.3","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^6.0.1"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.0.4_1756138776328_0.45394194312386893","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"pennsieve-dashboard","version":"0.1.0","_id":"pennsieve-dashboard@0.1.0","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"afe48290c088c4c4a78fa948d762760f09a0d095","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.1.0.tgz","fileCount":6,"integrity":"sha512-Yvd5tvJBC0QVHYTpwRZUJI+DoII8gggNthIn0xZvvwi5PKx8wXq3HO+196/cWFt2MKL/i8XwIRkA1oQDFXBK2A==","signatures":[{"sig":"MEYCIQDmYcXLaxfq0f09MCG9jXdLfjoYAqTuyGcMuFjpMp/24AIhAJqeSqxYivYvfH6U2i+Bj8VC3xANBCnGK+bjY7lfNTcL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415255},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"649c4156218df8357f3d489b3b076e19c5dfa746","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"11.5.1","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.6.0","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^16.2.0","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.2","vue-tsc":"^3.0.5","typescript":"~5.8.3","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^6.0.1"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.1.0_1756234498429_0.5759551169180135","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"pennsieve-dashboard","version":"0.1.1","_id":"pennsieve-dashboard@0.1.1","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"4124f9350951f2e59cfada0ae00f3df02ea0cffa","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.1.1.tgz","fileCount":6,"integrity":"sha512-Ets/loQrywCI7r10eiAlwXwMSAMJpsJkjcKTl1yMhb47MXZ54guDGPPYqQ5kd/1vkCG3kP6s4MTbv9Frt6UiWA==","signatures":[{"sig":"MEQCIF1gPULnY5tSh3xIO5zMAMt2ceF40wJT/XXaSKuh2lnJAiAdYgvbrMUIVc9teb24nfDYdNyq95nkwEwwq8D6J21CYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421110},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"0375bf3d9a0c6a78e0c53e3012cd21567d0585b5","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.1.1_1756310158914_0.45375047164874727","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"pennsieve-dashboard","version":"0.1.2","_id":"pennsieve-dashboard@0.1.2","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"a5fc6d9d88d587a5fe8a08257aa3783ef7c78cac","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.1.2.tgz","fileCount":6,"integrity":"sha512-qizIYxhCb8lK2ixgYiaswQkaINfzpeN3sR/ThqcV3k3HG3HtAJuvVxQpRPJwgQg38lFtFo834HK6Im8RTUzweA==","signatures":[{"sig":"MEYCIQCzEpRLJ34MserfJ9S27FXVsNxuSnMMWq2sz4Yq978b4gIhAJraTpM1W+zHRhzcRCMKg8FrpP+fhIs84z5h1h2iZAcg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421110},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"a28b6d85974a5aaca32aaf2286372b3232d06313","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.1.2_1756312624873_0.17951121299292883","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"pennsieve-dashboard","version":"0.1.3","_id":"pennsieve-dashboard@0.1.3","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"8700ac0526c94638c01c74357800961baa41f9bf","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.1.3.tgz","fileCount":6,"integrity":"sha512-m+sv3phEw1Bnz/kLGIMhhWY3y3afBJcgBcnX5iIgrVj5uWNZIEV+2Fpu0SQai+g9kxWek6P2cE6A+HzQbg31/w==","signatures":[{"sig":"MEUCIEXSgN58CCGhInqLa+fsajFuApclEBP+sAKaw/PvoZZEAiEAz1kMviFN5x4eeJy8Jp9eaVpDaNjrTQdIrIiWi1ypW0I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421134},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"a28b6d85974a5aaca32aaf2286372b3232d06313","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.1.3_1756313083123_0.13535419289460804","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"pennsieve-dashboard","version":"0.1.4","_id":"pennsieve-dashboard@0.1.4","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"de5eeb73e5264940f4af6d25a75f602f9a7f785b","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.1.4.tgz","fileCount":10,"integrity":"sha512-rBOgrZvn2EHhW+l+SH/v2LSpCuVSogp0tveOrGiZ9+i3VYyVsoN3Qp3OSXc3kHop2eRMbn4IbRXIALLln+hQtA==","signatures":[{"sig":"MEUCIDKieQ8l6vkr2DJG0ILWAotPsawOa9ni+KE50QAFNagXAiEArZq1pkXru2hML6osdB1fu0ZnjahTfALnY0y9kbsv46E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72018261},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"a28b6d85974a5aaca32aaf2286372b3232d06313","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.1.4_1756403738177_0.27402281288993424","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"pennsieve-dashboard","version":"0.1.5","_id":"pennsieve-dashboard@0.1.5","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"c41d768eaa4dd4fac288a26e4a9e41fd772529b7","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.1.5.tgz","fileCount":10,"integrity":"sha512-Q5mZAhwZEHl28PjihDxtBfW5bmRtOj4LcGKu6fez/NvW5q3lC1+uJi2uuFNPmbgEr8CAFyA3Z26wZ0LuydWTLg==","signatures":[{"sig":"MEUCIQDXiMBs5z/VdTSZqkUY/C/UttDNOoId6+ZMZyB8KCfJUAIgYPh4JckGk2nzF3Zy0OuRsVUEhRSWM/X8PQldBr1regs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72018259},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"a28b6d85974a5aaca32aaf2286372b3232d06313","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.1.5_1756489765811_0.20027349476694956","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"pennsieve-dashboard","version":"0.1.6","_id":"pennsieve-dashboard@0.1.6","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"e21b614022a2046cc8b3fe9387742838fe93d4b6","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.1.6.tgz","fileCount":5,"integrity":"sha512-Nc9CwGoXSNTxQXXewBgk0OmJP8i34uj2cT9t35q6MjTj7n3ZTzK2wOXC4sIdWzCpalTznORU1u/P80wyZMdW1A==","signatures":[{"sig":"MEUCIBe9GAbIUlCbjctUJvlf4zCzHLDtGoH5BlghXkCE8kBWAiEA1+k2l2j4Bo5prZH/oNVEb9wXGVr8K9mc+4bzi/rD4KY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":419935},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"a28b6d85974a5aaca32aaf2286372b3232d06313","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.1.6_1756831642216_0.5714328902027024","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"pennsieve-dashboard","version":"0.1.7","_id":"pennsieve-dashboard@0.1.7","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"1af89c24ce25f4787febb8de188cdfc1c9bb3c1d","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.1.7.tgz","fileCount":5,"integrity":"sha512-vzTNzvxDQsRfLD/UBbqBfAsjnEmMibKCsu7MtnMMxmb2dKd6K7e55FCfcA+UXTMilLMAomMYQfx+qNRKSgflmw==","signatures":[{"sig":"MEYCIQDhSX3ZZtCvGLlbe4GLW5iRD0LJwgvcqd6YM0THdn75ngIhAIgtx6pk7VTAKVFFvvdQW47dEMCpJjCPz5W6BTGXXN1d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":419972},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"e2663dd5cf0ceb77f66450b0baf9a951fcfbc490","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","precision-dashwidgets":"0.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.1.7_1756926984347_0.606094520901336","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"pennsieve-dashboard","version":"0.1.8","_id":"pennsieve-dashboard@0.1.8","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"5dcf34a2f9a7722aad5665f639ff8573ea870d01","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.1.8.tgz","fileCount":5,"integrity":"sha512-5Ak+l2Ek/KgYVXRuBpZsdyum8NHM34UpclKzAYWOUvZNINReMUJlpXMiUywNtCcvlAYpBuiltMBU9cOw59JK0Q==","signatures":[{"sig":"MEUCIQCQ/9RSrP5YK08CCwqBno5OUbzT9hClIVYTm2MU/ZWZsAIgZk+6ZtiEROM6c1+PB50PeIDijOk1CUTRsjgu5TXAT28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421870},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"e2663dd5cf0ceb77f66450b0baf9a951fcfbc490","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","pinia":"^3.0.3","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","element-plus":"^2.11.0","sparc-dashwidgets":"0.1.0","precision-dashwidgets":"0.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.1.8_1757446702385_0.3954188413849782","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"pennsieve-dashboard","version":"0.2.0","_id":"pennsieve-dashboard@0.2.0","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"a57602e2972f6d72244329a4110b51504d496a28","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.2.0.tgz","fileCount":5,"integrity":"sha512-hhv0xr4oB3pknNZzxLFP2JU3qnazJfOj0Yidcm0mktu07UPhaEJK1o2vOsKYYeAnMHkzlEEmWPsA+EA1GyVGDg==","signatures":[{"sig":"MEYCIQDAOyqr7V4M2efZ1aotg5dcmQqU11flL91hMgwwNe1IygIhAIXC5m2y9NUdqbnBxzWQP3S+TD7Z2eESOUwZ9cP3bAFb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421828},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"e2663dd5cf0ceb77f66450b0baf9a951fcfbc490","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.2.0_1757447479688_0.6683160960570735","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"pennsieve-dashboard","version":"0.2.1","_id":"pennsieve-dashboard@0.2.1","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"a922b5f16f264463cad17585e712927f5b834bc1","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.2.1.tgz","fileCount":5,"integrity":"sha512-AZZKyQZMpG4lYgBY5UlKmUGp67NI5M6CoyVwi8HZNP9oqp4kvOpMwcFdUXondNy3kRAakvvQdnN2cUhXFv88rw==","signatures":[{"sig":"MEUCIAqBgjo3NmiaDZV67vDu/ucoMEznkjkFbp+crKn4lLfiAiEAsRDzvzvzeqbz2T+gg4MaE2B/BngF02BwQQEEetK+c2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421870},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"e2663dd5cf0ceb77f66450b0baf9a951fcfbc490","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.2.1_1757610394951_0.38084868469003075","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"pennsieve-dashboard","version":"0.2.2","_id":"pennsieve-dashboard@0.2.2","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"ea86bb76000c8fe5e3f0cc3d1824cc40851ea501","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.2.2.tgz","fileCount":5,"integrity":"sha512-8Nn+a3NdD3fUZpA7hRwJMO9Z5two+sYTp9K6xP7o5xB75+tjJ08K5Bavnj/1G/jchw7tuaf3agYy7WZ8iYpPMg==","signatures":[{"sig":"MEYCIQDcyaIfGtSQnoIeiuFHQXI0senKY6O2drgBS0jzDsrgFwIhAI1hV9Na1gix3bEDXHcKuhkONCwXmpge2Xc8wuGbzIaF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421846},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"bf47c9c8551602a15f3a7909492b0b73fad857ec","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.2.2_1758830690589_0.5846374096468641","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"pennsieve-dashboard","version":"0.2.3","_id":"pennsieve-dashboard@0.2.3","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"d16a15ed2fea6fc316d31682a2786677a1edb22e","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.2.3.tgz","fileCount":5,"integrity":"sha512-ssYCiup5jcvmT7nPAHFYqQ4kvPkAmt5dhiBYLNVF+NNynmE63x79SvvSL0rXUNa26OpqjG2nSJrPiyed7cvrCA==","signatures":[{"sig":"MEQCICMjQr+NOr6HXr+reDtY83ZhAwu1emq6ma+YP2W8kOCKAiA4L9UbMGkSkzW6HqqBMHgXbYxhiXwikbvILx0hKI9flg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":440313},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"e6a1be46ff3973dceba8d89e110b890a3f8c0028","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.2.3_1759873632398_0.9700397984053448","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"pennsieve-dashboard","version":"0.3.0","_id":"pennsieve-dashboard@0.3.0","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"fc8d376e08c4c6ce147140c76e7e1c61556ca8d8","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.3.0.tgz","fileCount":5,"integrity":"sha512-0mzuWG/8mtkjFmTlI5hSkkZhnEKK7pCjrp18Uqi4H5n/MqZy45fQ2o3pncC3vaSQjNIKLEkDHAuPt1HvBN9NLw==","signatures":[{"sig":"MEQCIBN/IDD6QDKSUCpMfa9Y0n68NfDJwzFul45uGvWQrrBXAiARFxyi6LlNGjl9PownUzuZIBN3yFg3iMxhwKerHznsKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":445162},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"0c39deaf458b4134a812ab91d5bbf110712daa04","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.3.0_1761759078716_0.955375558601667","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"pennsieve-dashboard","version":"0.3.1","_id":"pennsieve-dashboard@0.3.1","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"3310602e159945d926388e7bbb2d6d6af6465994","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.3.1.tgz","fileCount":5,"integrity":"sha512-O0AgwlTAdyXZT1Ep3DWvhReU0+rLaO4Tgc8kjJCixf7aWLsorr+zB/S4DeWXNWxlkFiMKKnMyc+6hvg6K8pTHw==","signatures":[{"sig":"MEUCID1yvn55XOx3f1OOGmFwSNOomdo6l6iYpy1HB1Or5WWVAiEA6TWAI7swbDtQqPrlsAFbomu9QXb1qpHm28zEaHZ2j4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":445131},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"0c39deaf458b4134a812ab91d5bbf110712daa04","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.3.1_1761919932196_0.1436610641977587","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"pennsieve-dashboard","version":"0.3.2","_id":"pennsieve-dashboard@0.3.2","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"14d48b34595b8bfab78ae4f612a19984fb9f7d48","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.3.2.tgz","fileCount":5,"integrity":"sha512-KL0GY+tgGagN/PDwi2X7MTEuaSBtyE3whJXhYcXr55C7LEi+aGm3Fxmsvx4de4TilKawiwIfrOJNQIqXkw8DPw==","signatures":[{"sig":"MEQCIFfeFebFAOwugTTgrGZPFc43SFgEjRvtsblaqMXTVE6SAiAxJJKEJTBt7OpqZJhwRKf8vWfkGyNZJ84T5RmtBQd7hQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":445990},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"0c302682959f0da752582b481600c0d3eef6e0c9","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^9.5.0","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.3.2_1763147235800_0.924710855444016","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"pennsieve-dashboard","version":"0.3.3","_id":"pennsieve-dashboard@0.3.3","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"8a6cd1bd9d1e15eeea90324b48586c27d71d37ce","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.3.3.tgz","fileCount":5,"integrity":"sha512-XGPO0dZFH0LvTlEdWpZ+u538yjfzcgV6E2s5wKFOmGoPFcc3A7qKcS80kHUWnr3C8wdxD7OMbhlVBB/LS6pNhA==","signatures":[{"sig":"MEUCIQDf0+xDm9tXBAKcnqvIb3+DlSMPwupr2wmWKlGBed4I1QIgUotmz4IyzLB8infTtJZV1Tulu5YgXnChNQm2SAEoYDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":482154},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"0c302682959f0da752582b481600c0d3eef6e0c9","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^12.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.3.3_1764701847276_0.00965603047601693","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"pennsieve-dashboard","version":"0.3.4","_id":"pennsieve-dashboard@0.3.4","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"61630927e5058cac1d886c69f94fae6e3289e9eb","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.3.4.tgz","fileCount":5,"integrity":"sha512-tGo7IUeP5K8lv6N+khR9rVgbzaBtd4tG5vXV6BOrmyDj9TWedSGJVPImztAMIGmQk/eTSoxqZc7QiDSV+zJrcg==","signatures":[{"sig":"MEQCIAvtb+03t0Diob0rXaYqJ/lseNZXM7aSc2D1sz1dCyw1AiBk3/MddgOCAo3LvhEzE6HHSOZf2kCdx4phupm82Yo5uw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":482154},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"763f90b69570fe817447c3af8d30598a51e9b839","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^12.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0-alpha.24","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.3.4_1768343982166_0.2514839628733312","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"pennsieve-dashboard","version":"0.3.5","_id":"pennsieve-dashboard@0.3.5","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"e95535ff35c6aaa4fccd25db250b8f940aa8d058","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.3.5.tgz","fileCount":5,"integrity":"sha512-0K0dGQ6KrRBoFK3PA9hUOt+u5DJCViJo7EecN7kS0opw8Nwo+N8mpcSXnXKcGHaNd0b66xxZ5Xrpa4hnCYiCoA==","signatures":[{"sig":"MEUCIQCW4u2gPeRJpNkTIFETsjTUnYnKqNc3zIUgag5KPeYlAAIgDA/LxWjnmTHyl4HJ++QYrc73OcP/R+UhdDZb0DvRoz0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":487710},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"7e89061507b254d5b6c186dee5568812a208d532","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^12.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.3.5_1772132676313_0.9073549872942848","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"pennsieve-dashboard","version":"0.3.6","_id":"pennsieve-dashboard@0.3.6","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"ddb0b6ee5367094b95f0a2ba33bc02923bfcfcd8","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.3.6.tgz","fileCount":5,"integrity":"sha512-/7SeS2WL8/VUHggVfiS5yqVmD3MOheGOjt+TWVHvJ/47AkYypSzJ5X1NPXOedp5+n7ae0G33ts8S95zt/jnIog==","signatures":[{"sig":"MEQCIGviyKHo+gShuUGZPD9QGWNyiD/U/Fcm/rOH/8D7OAVlAiBc9A2mQK4UGXAVtyn6PQhtchnMT22WD3+pyJQTpDip8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":488863},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"018e2ecb4be0f88edb787c8685caf25c8f18d212","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.8.2","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.20.8","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^12.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.3.6_1772576140160_0.013250715049213602","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"pennsieve-dashboard","version":"0.3.7","_id":"pennsieve-dashboard@0.3.7","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"1dd909da2c0b1595fd862faee6458056d8120d0b","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.3.7.tgz","fileCount":5,"integrity":"sha512-K9phSb7oaH4JlcTxrm8LPV8hur8/l9sgx7oF6hzvkorZ5WA0gx4eQ+Ay2V3S95UsNeSr0LT9oM3MFORoYwRIYA==","signatures":[{"sig":"MEUCIDMtzp2RApg+/PmlYPS1muhcT6lvX9J1Wjt77RB5JHWTAiEAhQjm+5pwDkVqBdBw8WwUNBCN+syw6SVSm+QKjBd29jo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":489979},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"018e2ecb4be0f88edb787c8685caf25c8f18d212","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.8.2","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.20.8","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^12.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.3.7_1772651996434_0.6777459040012741","host":"s3://npm-registry-packages-npm-production"}},"0.3.71":{"name":"pennsieve-dashboard","version":"0.3.71","_id":"pennsieve-dashboard@0.3.71","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"0f3b0b98064ea9048eda9c90abb9cbfde7ed9cc7","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-0.3.71.tgz","fileCount":5,"integrity":"sha512-Y2Kc4xovWkaMwemjmH0E9fY6qzFSO44i3PJxZPpU9UN5Q8Owkrt63U8cLlDPdnpvMO1GvjP73VPqerxuGZsuxw==","signatures":[{"sig":"MEUCIQCFJmErgaIahCqzRiA9+lqNteYgp4KtRKlCxlKyJuj4YQIgISr/5gDqHBojycnUTQwZ5v5gTmBHL7lxDEpY0gGRxng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":490174},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"018e2ecb4be0f88edb787c8685caf25c8f18d212","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.8.2","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.20.8","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^12.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_0.3.71_1772652925933_0.4679402592129458","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"pennsieve-dashboard","version":"1.0.0","_id":"pennsieve-dashboard@1.0.0","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"}],"dist":{"shasum":"4bf48c3f5939fa819057d635cf5a551f06641731","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-1.0.0.tgz","fileCount":5,"integrity":"sha512-mgp2HtqfjSTBZ9LS1s4KP19FiPRXkeRheI7nrtD3X4vSybxfUZeJdJKrH9xaFiZ0cHh8t3vkuM5eO1n5DQ0Zwg==","signatures":[{"sig":"MEQCIAHUOJFKmcZ73nNJx6pgp5PWouwov84u2EWw5eLYHWZVAiBjPUDU6t/WcKgr8ZcAIkSLKMijnIxMJj8F4Jxcy8QMVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":492644},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"5967350892132284d4fb3aa2decaa8b5d933e52a","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.8.2","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.20.8","dependencies":{"vue":"^3.5.18","sass":"^1.90.0","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^12.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.11","vue-tsc":"^2","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.7.0","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_1.0.0_1773951708034_0.4586845093270122","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"pennsieve-dashboard","version":"1.0.1","_id":"pennsieve-dashboard@1.0.1","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"},{"name":"vijay-samayamantula","email":"vijay@sparc.science"}],"dist":{"shasum":"3133ab34c7ce9f83c5d36870c5071f5c6076ab24","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-1.0.1.tgz","fileCount":5,"integrity":"sha512-ITJrr7D6c9+SQr3QV3YGv22Tabt4Wz03lzbiCGSTvQGKtyr1BGXvpCsTwAuEPa3+fKYZT3LZay7lBbnuhn3B8Q==","signatures":[{"sig":"MEUCIQCmKAH6Fd/Wn36Shq167ANqsCjnfC0Z33pAjHM1iGddUgIgYyw8tr4rFjLxQyx9e5tVoHJoKviczRGMR5/fitMa2tg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":496462},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"2ff5434c4d288ff8179a4ed384deafcbe66d20c1","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"vijay-samayamantula","email":"vijay@sparc.science"},"_npmVersion":"10.9.4","description":"[![Latest Build NPM](https://www.npmjs.com/package/pennsieve-dashboard)]()   [![This Repo Is Part of the Pennsieve Platform](https://app.pennsieve.io)]()","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.21.1","dependencies":{"vue":"^3.5.18","marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^12.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"sass":"^1.90.0","vite":"^5.4.11","vue-tsc":"^2.2.0","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.9.1","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_1.0.1_1778511444845_0.876074073671318","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"pennsieve-dashboard","version":"1.0.2","_id":"pennsieve-dashboard@1.0.2","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"},{"name":"vijay-samayamantula","email":"vijay@sparc.science"}],"dist":{"shasum":"12f00f93f5225a0a1b7b96115b62dd619b4a4cf7","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-1.0.2.tgz","fileCount":5,"integrity":"sha512-zjIHx/cHXRqY34qnap4MYb4kF4tyH0Z6aa1j/esTZwOYgixTh8o8SAEWhdco9ogkVnlOaORdvreQHekOrTc1ZA==","signatures":[{"sig":"MEQCIEOWfr4O8+o26XBbLz7UFOMfnuGIhHoKH+N05lcuca58AiAmlC7drtO8iuE38PvwSbLATjjdNjPL84YLcW52pYlGCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":496462},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"f4f1f1a61f93855f96ca0bb14d03b36b32eb386a","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"vijay-samayamantula","email":"vijay@sparc.science"},"_npmVersion":"10.9.4","description":"[![Latest Build NPM](https://www.npmjs.com/package/pennsieve-dashboard)]()   [![This Repo Is Part of the Pennsieve Platform](https://app.pennsieve.io)]()","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.21.1","dependencies":{"marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^12.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"sass":"^1.90.0","vite":"^5.4.11","vue-tsc":"^2.2.0","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.9.1","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"vue":"^3.5.18","pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_1.0.2_1778516259278_0.11270598810772259","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"pennsieve-dashboard","version":"1.1.0","_id":"pennsieve-dashboard@1.1.0","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"},{"name":"vijay-samayamantula","email":"vijay@sparc.science"}],"dist":{"shasum":"174926d7e457fecfcf48d04e753504106a960c87","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-1.1.0.tgz","fileCount":5,"integrity":"sha512-0qxu9EHmHNNxi+LumrBfLOpCoixWLgCj05O1ryQdnf/Rc8vyY4LiftfK7xth3K1BR18xDlJtR4Ht0qmrSMQ05g==","signatures":[{"sig":"MEYCIQC+2mCE6N8IXeKb/CKAkp8ATa5QD5pZZjq1sAglEdnYKQIhAPXuOFoZhROqto1hWj5+id11sFWDxtQwglg2WWqsMqSO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":506554},"main":"./dist/pennsieve-dashboard.umd.js","type":"module","style":"dist/style.css","module":"./dist/pennsieve-dashboard.es.js","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"c07e5117f8772835f30979278b8981c8ba1066dc","private":false,"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"_npmVersion":"10.5.0","description":"# PennsieveDashboard","directories":{},"sideEffects":["*.css"],"_nodeVersion":"18.17.1","dependencies":{"marked":"^15.0.7","dompurify":"^3.2.6","gridstack":"^12.3.3","@element-plus/icons-vue":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"sass":"^1.90.0","vite":"^5.4.11","vue-tsc":"^2.2.0","typescript":"^5.4.0","autoprefixer":"^10.4.21","@vue/tsconfig":"^0.9.1","@vitejs/plugin-vue":"^5.1.4"},"peerDependencies":{"vue":"^3.5.18","pinia":"^3.0.3","element-plus":"^2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/pennsieve-dashboard_1.1.0_1779295743809_0.09216322676513466","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"pennsieve-dashboard","private":false,"version":"1.2.0","type":"module","main":"./dist/pennsieve-dashboard.umd.js","module":"./dist/pennsieve-dashboard.es.js","style":"dist/style.css","exports":{".":{"import":"./dist/pennsieve-dashboard.es.js","require":"./dist/pennsieve-dashboard.umd.js"},"./style.css":"./dist/style.css"},"sideEffects":["*.css"],"scripts":{"dev":"vite","build":"vite build","preview":"vite preview"},"dependencies":{"dompurify":"^3.2.6","gridstack":"^12.3.3","marked":"^15.0.7","@element-plus/icons-vue":"^2.3.2"},"devDependencies":{"@vitejs/plugin-vue":"^5.1.4","sass":"^1.90.0","@vue/tsconfig":"^0.9.1","autoprefixer":"^10.4.21","typescript":"^5.4.0","vite":"^5.4.11","vue-tsc":"^2.2.0"},"peerDependencies":{"vue":"^3.4.0","element-plus":"^2.11.0","pinia":"^2.0.0 || ^3.0.0"},"_id":"pennsieve-dashboard@1.2.0","gitHead":"beaedd74c0e854c78008fb08e0aadd2315fb34b8","description":"# PennsieveDashboard","_nodeVersion":"18.17.1","_npmVersion":"10.5.0","dist":{"integrity":"sha512-eMdmk+qSzxfmyeR37qSUzEcU6p92YfQRjptjSf+TC7Y/iLvwFFo7UAhsQr1/BaxoiYhL5aKdz2pzb8EsO0QhtQ==","shasum":"09a4329454bd2151b6e822ac3d9ac82792280f40","tarball":"https://registry.npmjs.org/pennsieve-dashboard/-/pennsieve-dashboard-1.2.0.tgz","fileCount":5,"unpackedSize":502976,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDt4M5JUTDeNy1j8I9OYL4DURSN7zFZb8UApgc3QYMDmAIgcqIcuqtanw6AGQTdplApzHM2GbwuF/zfi3dOR36LmDI="}]},"_npmUser":{"name":"smashmantha","email":"kraftsam@gmail.com"},"directories":{},"maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"},{"name":"vijay-samayamantula","email":"vijay@sparc.science"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pennsieve-dashboard_1.2.0_1786999782396_0.830064048152837"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-22T22:13:05.000Z","modified":"2026-08-17T20:49:42.787Z","0.0.2":"2025-08-22T22:13:05.310Z","0.0.3":"2025-08-25T15:06:18.659Z","0.0.4":"2025-08-25T16:19:36.585Z","0.1.0":"2025-08-26T18:54:58.651Z","0.1.1":"2025-08-27T15:55:59.189Z","0.1.2":"2025-08-27T16:37:05.119Z","0.1.3":"2025-08-27T16:44:43.309Z","0.1.4":"2025-08-28T17:55:38.543Z","0.1.5":"2025-08-29T17:49:26.180Z","0.1.6":"2025-09-02T16:47:22.423Z","0.1.7":"2025-09-03T19:16:24.536Z","0.1.8":"2025-09-09T19:38:22.586Z","0.2.0":"2025-09-09T19:51:19.891Z","0.2.1":"2025-09-11T17:06:35.164Z","0.2.2":"2025-09-25T20:04:50.785Z","0.2.3":"2025-10-07T21:47:12.617Z","0.3.0":"2025-10-29T17:31:18.918Z","0.3.1":"2025-10-31T14:12:12.431Z","0.3.2":"2025-11-14T19:07:16.026Z","0.3.3":"2025-12-02T18:57:27.529Z","0.3.4":"2026-01-13T22:39:42.351Z","0.3.5":"2026-02-26T19:04:36.499Z","0.3.6":"2026-03-03T22:15:40.353Z","0.3.7":"2026-03-04T19:19:56.698Z","0.3.71":"2026-03-04T19:35:26.133Z","1.0.0":"2026-03-19T20:21:48.242Z","1.0.1":"2026-05-11T14:57:25.085Z","1.0.2":"2026-05-11T16:17:39.430Z","1.1.0":"2026-05-20T16:49:04.004Z","1.2.0":"2026-08-17T20:49:42.570Z"},"description":"# PennsieveDashboard","maintainers":[{"name":"smashmantha","email":"kraftsam@gmail.com"},{"name":"vijay-samayamantula","email":"vijay@sparc.science"}],"readme":"# Vue 3 + TypeScript + Vite\n\n# PennsieveDashboard\n\n[![Latest Build NPM](https://www.npmjs.com/package/pennsieve-dashboard)]()  \n[![This Repo Is Part of the Pennsieve Platform](https://app.pennsieve.io)]()\n\nThe **PennsieveDashboard** is a web application that provides a user interface for interacting with Pennsieve data, visualizing metrics, and managing dashboards relevant to scientific datasets.\n\n---\n\n## Breaking Changes\n\n### v1.0.0 — `s3Url` and `apiUrl` removed from `dashboard:globalVars`\n\nThe dashboard no longer provides `s3Url` or `apiUrl` as top-level properties in the injected `dashboard:globalVars` context. These values now live exclusively in `services` (e.g. `services.s3Url`, `services.ApiUrl`).\n\n**Widget libraries must update `useGlobalVars.ts`** to remove `s3Url`/`apiUrl` from `GlobalVarsShape` and read them from `services` instead.\n\n| PennsieveDashboard | SparcDashWidgets | PrecisionDashWidgets |\n|--------------------|------------------|----------------------|\n| >= 1.0.0           | >= 1.0.0         | >= 1.0.0             |\n\nPre-1.0 versions of these packages are not compatible with 1.0+. If you're building a custom widget library, use the `services` pattern described in [Building a Component Library](#3-building-a-component-library).\n\n---\n\n## Table of Contents\n\n- [Features](#features)  \n- [Getting Started](#getting-started)  \n  - [Prerequisites](#prerequisites)  \n  - [Installation](#installation)  \n- [Usage](#usage)  \n\n- [Contributing](#contributing)  \n- [Contact / Support](#contact-support)\n\n---\n\n## Features\n\n- Dashboard views for Pennsieve, Sparc, and Percision  \n- Visual metrics and charts (e.g. usage, growth)  \n- Authentication and role-based access  \n- Publishing and versioning support  \n- Tag filtering and search  \n\n---\n\n## Getting Started\n\n### Prerequisites\n\nBefore you begin, ensure you have the following installed:\n\n- [Node.js](https://nodejs.org/) (version ≥ 14)  \n- npm or Yarn\n- Element Plus (^2.11.0)\n- Pinia (^3.0.3)\n\n### Installation\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/Pennsieve/PennsieveDashboard.git\n   cd PennsieveDashboard\n\n2. Install\n    ```\n    npm install\n    # or\n    yarn install\n    ```\n3. Run\n```\nnpm run dev\n```\n## Usage\n## Using the Dashboard and Widgets\n\nThe **Pennsieve Dashboard** can be used in two ways:\n\n1. **Standalone** – with its built-in widgets.  \n2. **Extended** – by integrating with external widget libraries, such as the [SPARC Widgets Library](https://github.com/nih-sparc/SparcDashWidgets).  \n   - You can see a demo of the SPARC dashboard in action here: [SPARC Dashboard Demo](https://staging.sparc.science/apps/sparc-dashboard).\n\n---\n\n### Built-in Widgets\n\nThe dashboard ships with a small set of widgets out of the box. These can be used immediately to create dashboards without adding external libraries.\n\n- **Markdown Widget**  \n  Displays formatted text using Markdown syntax. Useful for adding documentation, context, or descriptive notes directly in the dashboard.  \n\n- **Text Widget**  \n  Displays plain or bound text values (e.g., counts, statuses, labels). Useful for lightweight metrics and quick information displays.  \n\n---\n\n### Adding Widgets to the Dashboard\n\nWidgets are registered in the `availableWidgets` array, and their default layout is defined in the `defaultLayout` configuration. Each widget requires:\n\n- A unique `id`\n- Position and size (`x`, `y`, `w`, `h`)\n- `componentKey` (must match the widget’s registration name)\n- `componentName`\n- Props (e.g., `displayText`, `markdownText`, `bindedKey`)\n\n---\n\n### Example: Embedding the Dashboard in Your Application\n\nThe following example shows how to embed the **Pennsieve Dashboard** into a Vue 3 application.  \nThe example is broken down into six key parts so developers can understand how each piece works and how to extend it.\n\n---\n\n\n#### 1. Imports\n```js\nimport { computed, ref } from 'vue';\nimport { PennsieveDashboard, MarkdownWidget, TextWidget } from 'pennsieve-dashboard';\nimport 'element-plus/dist/index.css';\nimport 'pennsieve-dashboard/style.css';\n```\n\n- **Vue imports**:  \n  - `ref` – for reactive state.  \n  - `computed` – for derived or dynamic values you want to expose to widgets.  \n- **Dashboard & widgets**: import the core `PennsieveDashboard` component along with any widgets you want to use (in this case, `MarkdownWidget` and `TextWidget`).  \n- **Styles**:  \n  - `element-plus/dist/index.css` – required styles for the Element Plus UI library.  \n  - `pennsieve-dashboard/style.css` – base dashboard styling.  \n\nWithout these, the dashboard and widgets will not render correctly.\n\n---\n\n#### 2. Available Widgets\n```js\nimport { markRaw } from ‘vue’\n\nconst availableWidgets = [\n  { name: ‘TextWidget’, component: markRaw(TextWidget) },\n  { name: ‘MarkdownWidget’, component: markRaw(MarkdownWidget) }\n];\n```\n\n- This array **registers which widgets the dashboard can use**.\n- Each widget entry must define:\n  - `name` – must match the widget’s `componentKey` in the layout.\n  - `component` – the imported Vue component.\n- **Wrap components with `markRaw()`** to prevent Vue reactivity warnings. This is needed because Vue will attempt to make component objects reactive when they’re stored in reactive state (like `ref()` or `reactive()`), which is unnecessary and triggers console warnings. `markRaw()` tells Vue to skip reactivity for these objects.\n- You can extend this list with custom widgets or external widget libraries.  \n\n---\n\n#### 3. Default Layout\n```js\nconst defaultLayout = [\n  {\n    id: 'MarkdownWidget-6',\n    x: 0, y: 0, w: 3, h: 9,\n    componentKey: 'MarkdownWidget',\n    componentName: 'Markdown Widget',\n    component: MarkdownWidget,\n    Props: {\n      markdownText: \"# Human DRG Dataset Dashboard\\n...\"\n    }\n  },\n  {\n    id: \"TextWidget-1\",\n    x: 0, y: 0, h: 1, w: 4,\n    componentName: \"Text\",\n    componentKey: \"TextWidget\",\n    component: TextWidget,\n    hideHeader: true,\n    Props: { displayText: \"Dataset Overview\" }\n  }\n  // additional TextWidget entries...\n];\n```\n\n- Controls **how widgets are arranged on the grid**.  \n- Each widget requires:  \n  - `id` – unique identifier for the widget instance.  \n  - `x, y, w, h` – grid position and size.  \n  - `componentKey` – must match the `name` from `availableWidgets`.  \n  - `componentName` – display label for the widget.  \n  - `Props` – configuration for the widget (text content, markdown, or bound keys).  \n- Developers can define multiple widgets and fine-tune their placement.  \n\n---\n\n#### 4. Dashboard Options\n```js\nconst publicationStatus = computed(() => \"foobar\");\nconst filesCount = computed(() => \"b\");\nconst collaboratorCounts = computed(() => \"a\");\n\nconst services = {\n  s3Url: \"https://your-bucket.s3.amazonaws.com/your-data\",\n  ApiUrl: \"https://api.pennsieve.net\",\n  // Add any other configurables your widgets need (API keys, endpoints, etc.)\n};\n\nconst dashboardOptions = ref({\n  globalData: {\n    FileCount: filesCount.value,\n    Status: publicationStatus.value,\n    CollaboratorCounts: collaboratorCounts.value\n  },\n  availableWidgets,\n  defaultLayout,\n  services,\n});\n```\n\n- **Computed values**: hold live data you want to expose inside the dashboard. These could come from an API call or another reactive source.\n- **globalData**: key/value pairs accessible to widgets. For example, a `TextWidget` can bind to `FileCount` or `Status`.\n- **services**: key/value map of configurables (data URLs, API endpoints, API keys) that the dashboard provides to all widgets via `useDashboardGlobalVars().services`. Widgets read values like `services.s3Url` or `services.ScicrunchApiKey` from this object.\n- **dashboardOptions**: combines global data, available widgets, layout, and services into a single configuration object that powers the dashboard.  \n\n---\n\n#### 5. Template\n```vue\n<template>\n  <PennsieveDashboard class=\"dashboard-app\" :options=\"dashboardOptions\" />\n</template>\n```\n\n- Renders the `PennsieveDashboard` component.  \n- The `:options` prop passes in the configuration created above.  \n- Any widget defined in `defaultLayout` will be rendered automatically.  \n\n---\n\n#### 6. Styles\n```css\n<style scoped>\n.dashboard-app {\n  --el-color-primary: #243d8e;\n  --el-color-primary-light-3: #fbfdff;\n  --el-color-primary-dark-2: #546085;\n  --color: #243d8e;\n  --el-dialog-width: 90%;\n  --dash-secondary: #243d8e;\n}\n</style>\n```\n\n- Dashboard styling can be overridden using **CSS variables**.  \n- Customize colors, spacing, and UI elements to match your application’s theme.\n\n### URL Parameters (Multi-Dashboard)\n\nWhen using `DashboardWrap` (the multi-tab dashboard), you can pass URL query parameters to deep-link to a specific tab and pre-select genes. This is useful for sharing direct links to a particular view.\n\n| Parameter   | Required | Description |\n|-------------|----------|-------------|\n| `dashboard` | No       | Name of the dashboard tab to activate (matched case-insensitively, spaces ignored) |\n| `gene`      | No       | Initial gene for widgets that accept `initialGene` / `initialGene1` |\n| `gene2`     | No       | Initial second gene for widgets that accept `initialGene2` (e.g. co-expression) |\n\n**Examples:**\n\n```\n# Open the \"Side By Side\" tab (spaces are ignored, so all of these work)\n?dashboard=SideBySide\n?dashboard=sidebyside\n?dashboard=Side%20By%20Side\n\n# Pre-select a gene across all widgets\n?gene=TAC1\n\n# Open a specific tab with a pre-selected gene\n?dashboard=GeneDistribution&gene=SCN10A\n\n# Pre-select two genes for co-expression views\n?gene=SCN10A&gene2=TRPV1\n```\n\nWhen no URL parameters are present, behavior is unchanged — the dashboard uses its default tab and widget configuration.\n\n---\n\n## Contributing\n\nWe welcome contributions from developers and the community. There are two main ways you can get involved:\n\n### 1. Reporting Bugs or Issues\nIf you encounter a bug, performance problem, or unexpected behavior in the dashboard:\n- Please report it through the official support channels.\n- Include as much detail as possible (steps to reproduce, screenshots, browser/OS version, etc.) so we can investigate and resolve quickly.\n\n### 2. Adding a Custom Component to an Existing Widget Library\n\nEach widget library (e.g. SparcDashWidgets, PrecisionDashWidgets) follows the same component convention. Below is a real-world example — the **BiolucidaViewer** from SparcDashWidgets — showing how a component connects to the dashboard’s shared state via `useDashboardGlobalVars()`.\n\n```vue\n<template>\n  <!-- Scoped slot exposes the widget name and header icons to the dashboard shell -->\n  <slot :widgetName=\"widgetName\" :childIcons=\"childIcons\"></slot>\n\n  <div v-bind=\"$attrs\" class=\"tw-flex tw-flex-col\">\n    <div v-if=\"selectedImage\" class=\"bv-metadata\">\n      <div><b>Sex:</b> {{ selectedImage.sex }}</div>\n      <div><b>Age:</b> {{ selectedImage.ageRange }}</div>\n      <div><b>Sample Path:</b> {{ selectedImage.relativePath }}</div>\n    </div>\n    <div class=\"tw-h-screen tw-flex tw-justify-center\">\n      <iframe class=\"tw-p-1 tw-w-screen\" :src=\"biolucidaPath\"></iframe>\n    </div>\n  </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch, shallowRef } from \"vue\";\nimport { useDashboardGlobalVars } from ‘../../useGlobalVars’\nimport { InfoFilled } from \"@element-plus/icons-vue\";\n\nconst widgetName = ref(‘MBF Image Viewer’);\nconst childIcons = shallowRef([\n  { comp: InfoFilled, tooltip: \"Lock Biolucida Viewer\" }\n]);\n\nconst props = defineProps({\n  imageID: 0,\n  isLocked: { default: false, type: Boolean }\n});\n\n// Access the dashboard’s injected global vars (services, filters, etc.)\nconst GlobalVars = useDashboardGlobalVars();\n\n// Read a filter value reactively\nconst selectedImage = computed(() => {\n  return GlobalVars?.filters?.SELECTED_IMAGE;\n});\n\nconst biolucidaPath = ref(\"\");\n\nwatch(selectedImage, (newVal, oldVal) => {\n  if (newVal?.biolucidaID !== oldVal?.biolucidaID) {\n    biolucidaPath.value = `https://sparc.biolucida.net/image?c=${newVal?.biolucidaID}`;\n  }\n}, { immediate: true });\n</script>\n```\n\nThe key takeaway: call `useDashboardGlobalVars()` in your component to access the dashboard’s shared state — `services` (data URLs, API keys), `filters`, and filter-setting methods — without any extra wiring. See the [Building a Component Library](#3-building-a-component-library) section below for a full explanation of this composable.\n\n---\n\n### 3. Building a Component Library\n\nIf you’re building a **new widget library** (rather than adding to an existing one), you need to understand how the PennsieveDashboard communicates with widget components.\n\n#### How the Dashboard Provides Context\n\nWhen the `PennsieveDashboard` component mounts, it calls `provide(\"dashboard:globalVars\", ...)` to inject a shared context object into the component tree. Any descendant component — including widgets from external libraries — can access this context using Vue’s `inject`.\n\n#### The `useGlobalVars.ts` Composable\n\nTo access the injected context, your library should include a `useGlobalVars.ts` file (you can copy this directly from [SparcDashWidgets](https://github.com/nih-sparc/SparcDashWidgets)):\n\n```ts\n// src/useGlobalVars.ts\nimport { inject } from ‘vue’\n\nexport const DASHBOARD_GLOBAL_VARS_KEY = ‘dashboard:globalVars’ as const\nexport type FilterValue = string | number | boolean | null | string[] | number[]\nexport type Filters = Record<string, FilterValue>\nexport type Services = Record<string, any>\n\nexport type GlobalVarsShape = {\n  services: Services | import(‘vue’).Ref<Services>  // All configurables (URLs, API keys, etc.)\n  filters: Filters | import(‘vue’).Ref<Filters>     // Shared reactive filter state\n  setFilter: (key: string, value: FilterValue, isDisplayed?: boolean) => void\n  clearFilter: (key: string) => void\n  resetFilters?: (next?: Filters) => void\n}\n\nexport function useDashboardGlobalVars(required = false) {\n  const gv = inject<GlobalVarsShape | null>(DASHBOARD_GLOBAL_VARS_KEY, null)\n  if (!gv && required) {\n    console.warn(‘[Widget] dashboard:globalVars not provided.’)\n  }\n  return gv\n}\n```\n\n#### What Each Property Does\n\n| Property | Description |\n|----------|-------------|\n| `services` | Key-value map of configurables passed in from the host application — data URLs, API endpoints, API keys, etc. For example: `services.s3Url`, `services.ApiUrl`, `services.ScicrunchApiKey`. |\n| `filters` | Reactive key-value object representing the current dashboard filter state. Widgets read from this to stay in sync. |\n| `setFilter(key, value, isDisplayed?)` | Set a filter value. `isDisplayed` controls whether the filter chip appears in the dashboard header. |\n| `clearFilter(key)` | Remove a single filter by key. |\n| `resetFilters(next?)` | Clear all filters, optionally replacing them with `next`. |\n\n#### Using Filters for Cross-Widget Communication\n\nFilters are the primary mechanism for widgets to communicate. One widget sets a filter, and other widgets react to the change:\n\n```ts\nconst GlobalVars = useDashboardGlobalVars();\n\n// Read a service configurable (e.g. data URL, API key)\nconst dataUrl = unref(GlobalVars?.services)?.s3Url;\nconst apiKey = unref(GlobalVars?.services)?.ScicrunchApiKey;\n\n// Set a filter (other widgets will see this reactively)\nGlobalVars?.setFilter(‘SELECTED_GENE’, ‘CDH9’, true);\n\n// Read a filter\nconst gene = GlobalVars?.filters?.SELECTED_GENE;\n\n// Clear a filter\nGlobalVars?.clearFilter(‘SELECTED_GENE’);\n\n// Reset all filters\nGlobalVars?.resetFilters();\n```\n\n#### Library Structure\n\nA typical widget library follows this structure:\n\n```\nyour-widget-library/\n├── src/\n│   ├── components/          # Widget components (public API)\n│   │   ├── MyWidget/\n│   │   │   └── MyWidget.vue\n│   │   └── index.js         # Barrel export\n│   ├── useGlobalVars.ts     # Copy from SparcDashWidgets\n│   └── main.ts              # Dev entry point\n├── package.json\n└── vite.config.ts           # Build in library mode\n```\n\nYour `vite.config.ts` should build in library mode with `vue`, `pinia`, and `element-plus` as externals. See SparcDashWidgets or PrecisionDashWidgets for working examples.\n\n## Contact Support\n\nThere are several ways to get in contact with our support team. \n**support page**\nhttps://discover.pennsieve.io/about/support\n","readmeFilename":"README.md"}