{"_id":"@aarongustafson/table-sortable","_rev":"7-e53cdaa4acc7d353b3f22bf6aa66971d","name":"@aarongustafson/table-sortable","dist-tags":{"latest":"2.0.4"},"versions":{"0.0.1":{"name":"@aarongustafson/table-sortable","version":"0.0.1","keywords":["html","custom element","web component"],"author":{"url":"https://www.aaron-gustafson.com/","name":"Aaron Gustafson","email":"aaron@easy-designs.net"},"license":"MIT","_id":"@aarongustafson/table-sortable@0.0.1","maintainers":[{"name":"aarongustafson","email":"aaron@easy-designs.net"}],"homepage":"https://github.com/aarongustafson/table-sortable#readme","bugs":{"url":"https://github.com/aarongustafson/table-sortable/issues"},"dist":{"shasum":"59d605ba8eaf88ef119744d3df4ec3eac0874322","tarball":"https://registry.npmjs.org/@aarongustafson/table-sortable/-/table-sortable-0.0.1.tgz","fileCount":7,"integrity":"sha512-JJvN56blgZtJpyh0UKP+aAggclgXna+WWXvHOtYYYv1grazLTtPF2NZ8OVAWaatoa/sVFCX2i+a3pB7gaHjmCA==","signatures":[{"sig":"MEYCIQD4Gw5wHL9t+2k8Hn5u8GI4X+My4ajW0e8WmJuiVLtGzAIhAO27e0N0UHV3gkPy0jdfcrVmm5GCvUxOZN47Fl5TH0x1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28497},"main":"index.js","type":"module","module":"table-sortable.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./index.js"},"./define.js":{"import":"./define.js"},"./table-sortable.js":{"import":"./table-sortable.js"},"./custom-elements.json":"./custom-elements.json"},"gitHead":"8537b719a0ade9a7dbeb53c0202f22183c5bc1aa","scripts":{"lint":"npm run lint:eslint && npm run lint:prettier","test":"vitest","setup":"node scripts/setup.js","format":"npm run format:eslint && npm run format:prettier","test:ui":"vitest --ui","test:run":"vitest run","lint:eslint":"eslint .","format:eslint":"eslint . --fix","lint:prettier":"prettier \"**/*.js\" --check --ignore-path .gitignore","test:coverage":"vitest run --coverage","format:prettier":"prettier \"**/*.js\" --write --ignore-path .gitignore"},"_npmUser":{"name":"aarongustafson","email":"aaron@easy-designs.net"},"repository":{"url":"git+https://github.com/aarongustafson/table-sortable.git","type":"git"},"_npmVersion":"10.8.2","description":"A web component to enable users to sort the data in a table based on table cell values.","directories":{},"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","devDependencies":{"eslint":"^9.39.1","vitest":"^4.0.10","prettier":"^3.6.2","happy-dom":"^20.0.10","@vitest/ui":"^4.0.10","@vitest/coverage-v8":"^4.0.10","@testing-library/dom":"^10.4.1","@open-wc/eslint-config":"^13.0.0","eslint-config-prettier":"^10.1.8","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/table-sortable_0.0.1_1764817690651_0.00752973347648056","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@aarongustafson/table-sortable","version":"1.0.0","keywords":["html","custom element","web component"],"author":{"url":"https://www.aaron-gustafson.com/","name":"Aaron Gustafson","email":"aaron@easy-designs.net"},"license":"MIT","_id":"@aarongustafson/table-sortable@1.0.0","maintainers":[{"name":"aarongustafson","email":"aaron@easy-designs.net"}],"homepage":"https://github.com/aarongustafson/table-sortable#readme","bugs":{"url":"https://github.com/aarongustafson/table-sortable/issues"},"dist":{"shasum":"736dfa81e02cd29d6e7f37bf1f3ece917b4869a9","tarball":"https://registry.npmjs.org/@aarongustafson/table-sortable/-/table-sortable-1.0.0.tgz","fileCount":7,"integrity":"sha512-7X5OGBQn210FJLE2H8LoEPWh7bD5sjTF5JYEOO1ut5hwqUEFrCwBq403Mp5MYO2coNfx6oOh8GULM72DbmhMPw==","signatures":[{"sig":"MEYCIQDOz27C7k+b6qdlTD/Nq7It8zq/LvSBZmeMqF0UY5DNjwIhAO5WqeZbZ8BNwObktcwH+r038+mHKdYzibsrSh20cRmf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aarongustafson%2ftable-sortable@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28497},"main":"index.js","type":"module","module":"table-sortable.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./index.js"},"./define.js":{"import":"./define.js"},"./table-sortable.js":{"import":"./table-sortable.js"},"./custom-elements.json":"./custom-elements.json"},"gitHead":"a37bd1a8da1f0c6ef7cc17fff577dbd6108078b9","scripts":{"lint":"npm run lint:eslint && npm run lint:prettier","test":"vitest","setup":"node scripts/setup.js","format":"npm run format:eslint && npm run format:prettier","test:ui":"vitest --ui","test:run":"vitest run","lint:eslint":"eslint .","format:eslint":"eslint . --fix","lint:prettier":"prettier \"**/*.js\" --check --ignore-path .gitignore","test:coverage":"vitest run --coverage","format:prettier":"prettier \"**/*.js\" --write --ignore-path .gitignore"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f720f389-050b-4a42-bdb9-e7f0576c621b"}},"repository":{"url":"git+https://github.com/aarongustafson/table-sortable.git","type":"git"},"_npmVersion":"11.6.4","description":"A web component to enable users to sort the data in a table based on table cell values.","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","devDependencies":{"eslint":"^9.39.1","vitest":"^4.0.10","prettier":"^3.6.2","happy-dom":"^20.0.10","@vitest/ui":"^4.0.10","@vitest/coverage-v8":"^4.0.10","@testing-library/dom":"^10.4.1","@open-wc/eslint-config":"^13.0.0","eslint-config-prettier":"^10.1.8","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/table-sortable_1.0.0_1764817809780_0.7523953963764578","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@aarongustafson/table-sortable","version":"2.0.0","keywords":["html","custom element","web component"],"author":{"url":"https://www.aaron-gustafson.com/","name":"Aaron Gustafson","email":"aaron@easy-designs.net"},"license":"MIT","_id":"@aarongustafson/table-sortable@2.0.0","maintainers":[{"name":"aarongustafson","email":"aaron@easy-designs.net"}],"homepage":"https://github.com/aarongustafson/table-sortable#readme","bugs":{"url":"https://github.com/aarongustafson/table-sortable/issues"},"dist":{"shasum":"aaf8a1095557a2baec7c968ec1e22c6aa8cc72fb","tarball":"https://registry.npmjs.org/@aarongustafson/table-sortable/-/table-sortable-2.0.0.tgz","fileCount":7,"integrity":"sha512-IdZCFVSybDe77I8aYM08sBKxJolT+NzCIIYUQxmMcH4x+jUkC+IgS/pO7zayg8nTPAdljYzykYQVX0eI0lc41g==","signatures":[{"sig":"MEUCIDaJ4bRwV4YFDCparLX/tWRQR6J/mcooo6DEdQukxqZaAiEAupbI8F8n1LaA87a6ucl3izg9mDjw0phMR2974EBanV0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aarongustafson%2ftable-sortable@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29039},"main":"index.js","type":"module","module":"table-sortable.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./index.js"},"./define.js":{"import":"./define.js"},"./table-sortable.js":{"import":"./table-sortable.js"},"./custom-elements.json":"./custom-elements.json"},"gitHead":"d8715266b5de35c163696e7c6ace514ddcf4f3da","scripts":{"lint":"npm run lint:eslint && npm run lint:prettier","test":"vitest","setup":"node scripts/setup.js","format":"npm run format:eslint && npm run format:prettier","test:ui":"vitest --ui","test:run":"vitest run","lint:eslint":"eslint .","format:eslint":"eslint . --fix","lint:prettier":"prettier \"**/*.js\" --check --ignore-path .gitignore","test:coverage":"vitest run --coverage","format:prettier":"prettier \"**/*.js\" --write --ignore-path .gitignore"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f720f389-050b-4a42-bdb9-e7f0576c621b"}},"repository":{"url":"git+https://github.com/aarongustafson/table-sortable.git","type":"git"},"_npmVersion":"11.6.4","description":"A web component to enable users to sort the data in a table based on table cell values.","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","devDependencies":{"eslint":"^9.39.1","vitest":"^4.0.10","prettier":"^3.6.2","happy-dom":"^20.0.10","@vitest/ui":"^4.0.10","@vitest/coverage-v8":"^4.0.10","@testing-library/dom":"^10.4.1","@open-wc/eslint-config":"^13.0.0","eslint-config-prettier":"^10.1.8","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/table-sortable_2.0.0_1765213959675_0.46430940332001813","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@aarongustafson/table-sortable","version":"2.0.1","keywords":["html","custom element","web component"],"author":{"url":"https://www.aaron-gustafson.com/","name":"Aaron Gustafson","email":"aaron@easy-designs.net"},"license":"MIT","_id":"@aarongustafson/table-sortable@2.0.1","maintainers":[{"name":"aarongustafson","email":"aaron@easy-designs.net"}],"homepage":"https://github.com/aarongustafson/table-sortable#readme","bugs":{"url":"https://github.com/aarongustafson/table-sortable/issues"},"dist":{"shasum":"1f4ee87895c6a6b167a7cf6372c808121b273987","tarball":"https://registry.npmjs.org/@aarongustafson/table-sortable/-/table-sortable-2.0.1.tgz","fileCount":7,"integrity":"sha512-POnI95PG00Axaa8I0osWUfF6YebLNaUNnREPEX7OqHNqr4Asn14QNlveXYo+y7ihuOAGCdapuh96No4fK3ScdA==","signatures":[{"sig":"MEYCIQDJz8JwBPyD9sekBZ4+QkshSAerciFII+Suu896+3vVwAIhANQH0k4nNPVafUC/ybCcj0qirwZr536k8QilbNhi6y4y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aarongustafson%2ftable-sortable@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29344},"main":"index.js","type":"module","module":"table-sortable.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":"./index.js"},"./define.js":{"import":"./define.js"},"./table-sortable.js":{"import":"./table-sortable.js"},"./custom-elements.json":"./custom-elements.json"},"gitHead":"39a55ef654d360c2b97af16bf6087041c8d393ea","scripts":{"lint":"npm run lint:eslint && npm run lint:prettier","test":"vitest","setup":"node scripts/setup.js","format":"npm run format:eslint && npm run format:prettier","test:ui":"vitest --ui","version":"node scripts/update-demo-versions.js && git add demo/esm.html","test:run":"vitest run","lint:eslint":"eslint .","format:eslint":"eslint . --fix","lint:prettier":"prettier \"**/*.js\" --check --ignore-path .gitignore","test:coverage":"vitest run --coverage","format:prettier":"prettier \"**/*.js\" --write --ignore-path .gitignore"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f720f389-050b-4a42-bdb9-e7f0576c621b"}},"repository":{"url":"git+https://github.com/aarongustafson/table-sortable.git","type":"git"},"_npmVersion":"11.7.0","description":"A web component to enable users to sort the data in a table based on table cell values.","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","devDependencies":{"eslint":"^9.39.1","vitest":"^4.0.10","prettier":"^3.6.2","happy-dom":"^20.0.10","@vitest/ui":"^4.0.10","@vitest/coverage-v8":"^4.0.10","@testing-library/dom":"^10.4.1","@open-wc/eslint-config":"^13.0.0","eslint-config-prettier":"^10.1.8","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/table-sortable_2.0.1_1765310439639_0.7642948202610733","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@aarongustafson/table-sortable","version":"2.0.2","keywords":["html","custom element","web component"],"author":{"url":"https://www.aaron-gustafson.com/","name":"Aaron Gustafson","email":"aaron@easy-designs.net"},"license":"MIT","_id":"@aarongustafson/table-sortable@2.0.2","maintainers":[{"name":"aarongustafson","email":"aaron@easy-designs.net"}],"homepage":"https://github.com/aarongustafson/table-sortable#readme","bugs":{"url":"https://github.com/aarongustafson/table-sortable/issues"},"dist":{"shasum":"58dee7e3e02483ae948a4e40105976f596c2adf8","tarball":"https://registry.npmjs.org/@aarongustafson/table-sortable/-/table-sortable-2.0.2.tgz","fileCount":8,"integrity":"sha512-uVpuFluWey9QFT3GwimQZaEs8l/Je1cF7ytpDH8NPga11+OV5rLG3Al+x5Jr+bYafc6zluaIrTWj4Lcg49QV3A==","signatures":[{"sig":"MEUCIQC8Ec/lSGO/PR0S6AHA+ycgTNeLahysfk1kICNUaKShpQIgMTwaYUZNd7nYhkLuKwPzO3VuKGS5QzOWBbG565uxXks=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aarongustafson%2ftable-sortable@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32033},"main":"index.js","type":"module","types":"table-sortable.d.ts","module":"table-sortable.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":"./index.js"},"./define.js":{"import":"./define.js"},"./table-sortable.js":{"types":"./table-sortable.d.ts","import":"./table-sortable.js"},"./custom-elements.json":"./custom-elements.json"},"gitHead":"7ac33d882251b298f4153ff3139170ba85595eff","scripts":{"lint":"npm run lint:eslint && npm run lint:prettier","test":"vitest","setup":"node scripts/setup.js","format":"npm run format:eslint && npm run format:prettier","test:ui":"vitest --ui","version":"node scripts/update-demo-versions.js && git add demo/esm.html","test:run":"vitest run","lint:eslint":"eslint .","postversion":"git push --follow-tags","format:eslint":"eslint . --fix","lint:prettier":"prettier \"**/*.js\" --check --ignore-path .gitignore","test:coverage":"vitest run --coverage","format:prettier":"prettier \"**/*.js\" --write --ignore-path .gitignore"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f720f389-050b-4a42-bdb9-e7f0576c621b"}},"repository":{"url":"git+https://github.com/aarongustafson/table-sortable.git","type":"git"},"_npmVersion":"11.7.0","description":"A web component to enable users to sort the data in a table based on table cell values.","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","devDependencies":{"eslint":"^9.39.1","vitest":"^4.0.10","prettier":"^3.6.2","happy-dom":"^20.0.10","@vitest/ui":"^4.0.10","@vitest/coverage-v8":"^4.0.10","@testing-library/dom":"^10.4.1","@open-wc/eslint-config":"^13.0.0","eslint-config-prettier":"^10.1.8","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/table-sortable_2.0.2_1765774826824_0.7160602779784293","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@aarongustafson/table-sortable","version":"2.0.3","keywords":["html","custom element","web component"],"author":{"url":"https://www.aaron-gustafson.com/","name":"Aaron Gustafson","email":"aaron@easy-designs.net"},"license":"MIT","_id":"@aarongustafson/table-sortable@2.0.3","maintainers":[{"name":"aarongustafson","email":"aaron@easy-designs.net"}],"homepage":"https://github.com/aarongustafson/table-sortable#readme","bugs":{"url":"https://github.com/aarongustafson/table-sortable/issues"},"dist":{"shasum":"9b3de4dab8eee5e83b7989ac6efef6e8e3c2fe43","tarball":"https://registry.npmjs.org/@aarongustafson/table-sortable/-/table-sortable-2.0.3.tgz","fileCount":8,"integrity":"sha512-u2gng9Q0x7+jnqIPqfwwPy9HeG3hrPKIJ3ahC6ETWk+H0O7JNEt93kM9c6XNLLAp23iiLb2VHPfaw2XfA6f2yw==","signatures":[{"sig":"MEUCIQDjL4cvfRYb9GQ3pb1nwtTHjZYyJUjRY5TkG4uQs/bq9gIgVR4HIBgjh6fujm9rSbAAl0AW1r0htZ2xizl7hKLl+iI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aarongustafson%2ftable-sortable@2.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32033},"main":"index.js","type":"module","types":"table-sortable.d.ts","module":"table-sortable.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":"./index.js"},"./define.js":{"import":"./define.js"},"./table-sortable.js":{"types":"./table-sortable.d.ts","import":"./table-sortable.js"},"./custom-elements.json":"./custom-elements.json"},"gitHead":"85891f8eec588aa8a17500b43acec56a81ddf866","scripts":{"lint":"npm run lint:eslint && npm run lint:prettier","test":"vitest","setup":"node scripts/setup.js","format":"npm run format:eslint && npm run format:prettier","test:ui":"vitest --ui","version":"node scripts/update-demo-versions.js && git add demo/esm.html","test:run":"vitest run","lint:eslint":"eslint .","postversion":"git push --follow-tags","format:eslint":"eslint . --fix","lint:prettier":"prettier \"**/*.js\" --check --ignore-path .gitignore","test:coverage":"vitest run --coverage","format:prettier":"prettier \"**/*.js\" --write --ignore-path .gitignore"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f720f389-050b-4a42-bdb9-e7f0576c621b"}},"repository":{"url":"git+https://github.com/aarongustafson/table-sortable.git","type":"git"},"_npmVersion":"11.7.0","description":"A web component to enable users to sort the data in a table based on table cell values.","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"customElements":"custom-elements.json","devDependencies":{"eslint":"^9.39.1","vitest":"^4.0.10","prettier":"^3.6.2","happy-dom":"^20.0.10","@vitest/ui":"^4.0.10","@vitest/coverage-v8":"^4.0.10","@testing-library/dom":"^10.4.1","@open-wc/eslint-config":"^13.0.0","eslint-config-prettier":"^10.1.8","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/table-sortable_2.0.3_1765862129976_0.10368738292416713","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@aarongustafson/table-sortable","version":"2.0.4","description":"A web component to enable users to sort the data in a table based on table cell values.","keywords":["html","custom element","web component"],"author":{"name":"Aaron Gustafson","email":"aaron@easy-designs.net","url":"https://www.aaron-gustafson.com/"},"license":"MIT","homepage":"https://github.com/aarongustafson/table-sortable#readme","repository":{"type":"git","url":"git+https://github.com/aarongustafson/table-sortable.git"},"bugs":{"url":"https://github.com/aarongustafson/table-sortable/issues"},"type":"module","main":"index.js","module":"table-sortable.js","customElements":"custom-elements.json","types":"table-sortable.d.ts","exports":{".":{"import":"./index.js"},"./table-sortable.js":{"import":"./table-sortable.js","types":"./table-sortable.d.ts"},"./define.js":{"import":"./define.js"},"./custom-elements.json":"./custom-elements.json"},"engines":{"node":">=22.0.0"},"packageManager":"npm@11.15.0","scripts":{"setup":"node scripts/setup.js","test":"vitest","test:ui":"vitest --ui","test:run":"vitest run","test:coverage":"vitest run --coverage","lint":"npm run lint:eslint && npm run lint:prettier","format":"npm run format:eslint && npm run format:prettier","lint:eslint":"eslint .","format:eslint":"eslint . --fix","lint:prettier":"prettier \"**/*.js\" --check --ignore-path .gitignore","format:prettier":"prettier \"**/*.js\" --write --ignore-path .gitignore","version":"node scripts/update-demo-versions.js && git add demo/esm.html","postversion":"git push --follow-tags"},"devDependencies":{"@open-wc/eslint-config":"^13.0.0","@testing-library/dom":"^10.4.1","@testing-library/user-event":"^14.6.1","@vitest/coverage-v8":"^4.1.7","@vitest/ui":"^4.1.7","eslint":"^9.39.4","eslint-config-prettier":"^10.1.8","happy-dom":"^20.9.0","marked":"16.4.1","prettier":"^3.8.3","vitest":"^4.1.7"},"publishConfig":{"access":"public"},"gitHead":"17784e98bc1c050799675419ac9808ed4fae95d4","_id":"@aarongustafson/table-sortable@2.0.4","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-Au+Mz0s10gJiZ33AOokXhoDMK3wvzMwnP1s2qsUMq8UPu6KqV3GwhYQb8R7TsiG0Np7qP3NnOa0lq27i2bExRg==","shasum":"1aa7e495e6e196cae96f1ee127fb4f31741bc28c","tarball":"https://registry.npmjs.org/@aarongustafson/table-sortable/-/table-sortable-2.0.4.tgz","fileCount":8,"unpackedSize":32190,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aarongustafson%2ftable-sortable@2.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCtTFIe9cmnBMdwBDlXGLUwCHmSIPioiCGqwqQi6hZNFQIhANAPWJA+DkTNbZAe8et9tGim1jCvJdbP1e0bvGA9cfzQ"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f720f389-050b-4a42-bdb9-e7f0576c621b"}},"directories":{},"maintainers":[{"name":"aarongustafson","email":"aaron@easy-designs.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/table-sortable_2.0.4_1779747057645_0.9322274580625021"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-04T03:08:10.554Z","modified":"2026-05-25T22:10:58.061Z","0.0.1":"2025-12-04T03:08:10.809Z","1.0.0":"2025-12-04T03:10:09.997Z","2.0.0":"2025-12-08T17:12:39.822Z","2.0.1":"2025-12-09T20:00:39.804Z","2.0.2":"2025-12-15T05:00:26.962Z","2.0.3":"2025-12-16T05:15:30.120Z","2.0.4":"2026-05-25T22:10:57.790Z"},"bugs":{"url":"https://github.com/aarongustafson/table-sortable/issues"},"author":{"name":"Aaron Gustafson","email":"aaron@easy-designs.net","url":"https://www.aaron-gustafson.com/"},"license":"MIT","homepage":"https://github.com/aarongustafson/table-sortable#readme","keywords":["html","custom element","web component"],"repository":{"type":"git","url":"git+https://github.com/aarongustafson/table-sortable.git"},"description":"A web component to enable users to sort the data in a table based on table cell values.","maintainers":[{"name":"aarongustafson","email":"aaron@easy-designs.net"}],"readme":"# table-sortable Web Component\n\n[![npm version](https://img.shields.io/npm/v/@aarongustafson/table-sortable.svg)](https://www.npmjs.com/package/@aarongustafson/table-sortable) [![Build Status](https://img.shields.io/github/actions/workflow/status/aarongustafson/table-sortable/ci.yml?branch=main)](https://github.com/aarongustafson/table-sortable/actions)\n\nA web component to enable users to sort table data by clicking on column headers. Built with accessibility in mind, featuring keyboard navigation, screen reader announcements, and light DOM manipulation.\n\nBased on the original [jquery.easy-sortable-tables.js](https://github.com/easy-designs/jquery.easy-sortable-tables.js) by Aaron Gustafson.\n\n## Features\n\n- ✅ **Accessible**: Full keyboard navigation support with Enter/Space activation\n- ✅ **Screen Reader Friendly**: Announces sort changes via ARIA live regions\n- ✅ **Light DOM**: No Shadow DOM - works with your existing table markup\n- ✅ **Flexible Sorting**: Supports text, numeric, and custom sort keys\n- ✅ **Grouped Tables**: Maintains grouped `tbody` elements when sorting\n- ✅ **No Dependencies**: Pure vanilla JavaScript web component\n- ✅ **Small Footprint**: Lightweight and performant\n\n## Demo\n\n- [Full Demo](https://aarongustafson.github.io/table-sortable/demo/) ([Source](./demo/index.html))\n- [unpkg CDN Demo](https://aarongustafson.github.io/table-sortable/demo/unpkg.html) ([Source](./demo/unpkg.html))\n- [esm.sh CDN Demo](https://aarongustafson.github.io/table-sortable/demo/esm.html) ([Source](./demo/esm.html))\n\n## Installation\n\n```bash\nnpm install @aarongustafson/table-sortable\n```\n\n## Usage\n\n> **TypeScript ready**\n>\n> The package ships with `table-sortable.d.ts`. Importing either the class (`{ TableSortableElement }`) or the guarded definition helper automatically provides typed event payloads (`table-sortable:sort`) and reflective properties (`labelSortable`, `labelAscending`, `labelDescending`).\n\n### Option 1: Import the class and define manually\n\nImport the class and define the custom element with your preferred tag name:\n\n```javascript\nimport { TableSortableElement } from '@aarongustafson/table-sortable';\n\ncustomElements.define('my-custom-name', TableSortableElement);\n```\n\n### Option 2: Auto-define the custom element (browser environments only)\n\nUse the guarded definition helper to register the element when `customElements` is available:\n\n```javascript\nimport '@aarongustafson/table-sortable/define.js';\n```\n\nIf you prefer to control when the element is registered, call the helper directly:\n\n```javascript\nimport { defineTableSortable } from '@aarongustafson/table-sortable/define.js';\n\ndefineTableSortable();\n```\n\nYou can also include the guarded script from HTML:\n\n```html\n<script src=\"./node_modules/@aarongustafson/table-sortable/define.js\" type=\"module\"></script>\n```\n\n### Basic Example\n\nWrap your existing table in a `<table-sortable>` element. The component uses **progressive enhancement** - it will automatically inject sortable buttons into table headers:\n\n```html\n<table-sortable>\n  <table>\n    <thead>\n      <tr>\n        <th>Name</th>\n        <th>Age</th>\n        <th>City</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr>\n        <td>Charlie</td>\n        <td>35</td>\n        <td>New York</td>\n      </tr>\n      <tr>\n        <td>Alice</td>\n        <td>28</td>\n        <td>Boston</td>\n      </tr>\n      <tr>\n        <td>Bob</td>\n        <td>42</td>\n        <td>Chicago</td>\n      </tr>\n    </tbody>\n  </table>\n</table-sortable>\n```\n\nThe component uses **pure progressive enhancement** - it automatically creates accessible `<button>` elements inside each `<th>` for sorting. You don't need to add any buttons or links manually.\n\n## Advanced Usage\n\n### Custom Sort Keys\n\nUse the `data-sort-value` attribute to specify a custom value to sort by, different from the displayed content:\n\n```html\n<table-sortable>\n  <table>\n    <thead>\n      <tr>\n        <th>Product</th>\n        <th>Price</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr>\n        <td data-sort-value=\"WIDGET-B\">Widget B (Premium)</td>\n        <td data-sort-value=\"50\">$50.00</td>\n      </tr>\n      <tr>\n        <td data-sort-value=\"WIDGET-A\">Widget A (Basic)</td>\n        <td data-sort-value=\"30\">$30.00</td>\n      </tr>\n    </tbody>\n  </table>\n</table-sortable>\n```\n\nThis is useful for:\n- Sorting formatted numbers (currency, percentages)\n- Sorting dates by ISO format while displaying a friendly format\n- Custom sorting logic (e.g., priority: High > Medium > Low)\n\n### Inline Sort Keys with `data-sort-as`\n\nUse a `[data-sort-as]` element to mark the visible text fragment that should lead sorting:\n\n```html\n<table-sortable>\n  <table>\n    <thead>\n      <tr>\n        <th>Full Name</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr>\n        <td>John <span data-sort-as>Smith</span></td>\n      </tr>\n      <tr>\n        <td>Emily <span data-sort-as>Anderson</span></td>\n      </tr>\n    </tbody>\n  </table>\n</table-sortable>\n```\n\nThis allows sorting by last name while still displaying the full name naturally.\n\nIf you need a sort token that should not be visible, you can still hide a `[data-sort-as]` element with CSS, but visible text is generally preferable to reduce duplicated content.\n\n### Grouped Tables\n\nTo maintain groupings while sorting, use multiple `<tbody>` elements with `data-table-sort-group` attributes:\n\n```html\n<table-sortable>\n  <table>\n    <thead>\n      <tr>\n        <th>Name</th>\n        <th>Score</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr data-table-sort-group=\"engineering\">\n        <td>Charlie (Engineering)</td>\n        <td>85</td>\n      </tr>\n    </tbody>\n    <tbody>\n      <tr data-table-sort-group=\"design\">\n        <td>Alice (Design)</td>\n        <td>92</td>\n      </tr>\n    </tbody>\n    <tbody>\n      <tr data-table-sort-group=\"sales\">\n        <td>Bob (Sales)</td>\n        <td>78</td>\n      </tr>\n    </tbody>\n  </table>\n</table-sortable>\n```\n\nEach group (tbody) will be sorted independently and maintain its structure.\n\n## Events\n\nThe component fires custom events that you can listen to:\n\n| Event | Description | Detail |\n|-------|-------------|--------|\n| `table-sortable:sort` | Fired when a column is sorted | `{ column: number, direction: 'asc'\\|'desc', header: HTMLElement }` |\n\n### Example Event Handling\n\n```javascript\nconst element = document.querySelector('table-sortable');\n\nelement.addEventListener('table-sortable:sort', (event) => {\n  const { column, direction, header } = event.detail;\n  console.log(`Sorted column ${column} (${header.textContent}) in ${direction}ending order`);\n});\n```\n\n## Attributes\n\nThe component supports attributes for customizing screen reader announcements:\n\n| Attribute | Description | Default |\n|-----------|-------------|---------|\n| `label-sortable` | Label for unsorted columns | \"Click to sort\" |\n| `label-ascending` | Label when sorted ascending | \"sorted ascending. Click to sort descending\" |\n| `label-descending` | Label when sorted descending | \"sorted descending. Click to sort ascending\" |\n\n### Example Localization\n\n```html\n<table-sortable\n  label-sortable=\"Cliquez pour trier\"\n  label-ascending=\"trié croissant. Cliquez pour trier décroissant\"\n  label-descending=\"trié décroissant. Cliquez pour trier croissant\">\n  <table>\n    <!-- table content -->\n  </table>\n</table-sortable>\n```\n\n## Styling\n\nThe component uses light DOM, so you can style the table normally with CSS. The component adds these classes to help style sort indicators:\n\n| Class | Applied To | Description |\n|-------|-----------|-------------|\n| `active` | `<th>` | The currently sorted column |\n| `up` | `<th>` | Column sorted in ascending order |\n| `down` | `<th>` | Column sorted in descending order |\n| `sorted` | `<col>` | The currently sorted column (for column styling) |\n\n### CSS Custom Properties\n\nThe component supports CSS custom properties for visual indicators:\n\n| Property | Description | Default |\n|----------|-------------|---------||\n| `--table-sortable-indicator-asc` | Ascending sort indicator | `↑` |\n| `--table-sortable-indicator-desc` | Descending sort indicator | `↓` |\n\n### Example Styling\n\n```css\n/* Customize sort indicators */\ntable-sortable {\n  --table-sortable-indicator-asc: '▲';\n  --table-sortable-indicator-desc: '▼';\n}\n\n/* Style active column header */\nthead th.active {\n  background-color: #e3f2fd;\n}\n\n/* Highlight sorted column */\ncol.sorted {\n  background-color: rgba(0, 102, 204, 0.05);\n}\n```\n\n## Accessibility Features\n\nThe component is built with accessibility as a priority:\n\n1. **Keyboard Navigation**:\n   - All sortable headers are focusable with Tab\n   - Activate sorting with `Enter` or `Space` keys\n\n2. **Screen Reader Support**:\n   - `aria-sort` attribute indicates column sort state (ascending, descending, none)\n   - Live region announces sort changes using customizable labels\n   - Updates are announced politely without interrupting\n\n3. **Progressive Enhancement**:\n   - Automatically creates accessible buttons if none are provided\n   - Works with existing links or buttons in markup\n\n4. **Visual Indicators**:\n   - CSS classes indicate active column and sort direction\n   - Focus indicators for keyboard navigation\n   - Column highlighting via `<col>` elements\n\n## Column Highlighting\n\nThe component automatically injects `<colgroup>` and `<col>` elements if they don't exist, allowing you to style entire columns. The currently sorted column receives a `.sorted` class on its corresponding `<col>` element.\n\n## Sorting Behavior\n\n- **First click**: Sort ascending\n- **Second click**: Sort descending\n- **Text sorting**: Case-insensitive alphabetical\n- **Numeric sorting**: Automatic detection and numeric comparison\n- **Mixed content**: Text values sort before or after numbers depending on direction\n\nThe component automatically detects numeric values and sorts them numerically rather than alphabetically (so 100 comes after 20, not after 1).\n\n## Browser Support\n\nThis component uses modern web standards:\n- Custom Elements v1\n- ES Modules\n- ES6+ JavaScript features\n\n**Supported Browsers:**\n- Chrome/Edge 88+\n- Firefox 87+\n- Safari 14+\n\nFor older browsers, you may need polyfills from [@webcomponents/webcomponentsjs](https://github.com/webcomponents/polyfills/tree/master/packages/webcomponentsjs).\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Run tests with UI\nnpm run test:ui\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Lint code\nnpm run lint\n\n# Format code\nnpm run format\n\n# View demo locally\nopen demo/index.html\n```\n\n## License\n\nMIT © [Aaron Gustafson](https://www.aaron-gustafson.com/)\n\nBased on [jquery.easy-sortable-tables.js](https://github.com/easy-designs/jquery.easy-sortable-tables.js) © Aaron Gustafson\n","readmeFilename":"README.md"}